settings-menu.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { useTranslation } from 'react-i18next'
  2. import getMeta from '../../../utils/meta'
  3. import SettingsAutoCloseBrackets from './settings/settings-auto-close-brackets'
  4. import SettingsAutoComplete from './settings/settings-auto-complete'
  5. import SettingsCompiler from './settings/settings-compiler'
  6. import SettingsDictionary from './settings/settings-dictionary'
  7. import SettingsDocument from './settings/settings-document'
  8. import SettingsEditorTheme from './settings/settings-editor-theme'
  9. import SettingsFontFamily from './settings/settings-font-family'
  10. import SettingsFontSize from './settings/settings-font-size'
  11. import SettingsImageName from './settings/settings-image-name'
  12. import SettingsKeybindings from './settings/settings-keybindings'
  13. import SettingsLineHeight from './settings/settings-line-height'
  14. import SettingsOverallTheme from './settings/settings-overall-theme'
  15. import SettingsPdfViewer from './settings/settings-pdf-viewer'
  16. import SettingsSpellCheckLanguage from './settings/settings-spell-check-language'
  17. import SettingsSyntaxValidation from './settings/settings-syntax-validation'
  18. import SettingsMathPreview from './settings/settings-math-preview'
  19. import { useFeatureFlag } from '@/shared/context/split-test-context'
  20. import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  21. import { ElementType } from 'react'
  22. import OLForm from '@/features/ui/components/ol/ol-form'
  23. const moduleSettings: Array<{
  24. import: { default: ElementType }
  25. path: string
  26. }> = importOverleafModules('settingsEntries')
  27. export default function SettingsMenu() {
  28. const { t } = useTranslation()
  29. const anonymous = getMeta('ol-anonymous')
  30. const enableMathPreview = useFeatureFlag('math-preview')
  31. if (anonymous) {
  32. return null
  33. }
  34. return (
  35. <>
  36. <h4>{t('settings')}</h4>
  37. <OLForm id="left-menu-setting" className="settings">
  38. <SettingsCompiler />
  39. <SettingsImageName />
  40. <SettingsDocument />
  41. <SettingsSpellCheckLanguage />
  42. <SettingsDictionary />
  43. {moduleSettings.map(({ import: { default: Component }, path }) => (
  44. <Component key={path} />
  45. ))}
  46. <SettingsAutoComplete />
  47. <SettingsAutoCloseBrackets />
  48. <SettingsSyntaxValidation />
  49. {enableMathPreview && <SettingsMathPreview />}
  50. <SettingsEditorTheme />
  51. <SettingsOverallTheme />
  52. <SettingsKeybindings />
  53. <SettingsFontSize />
  54. <SettingsFontFamily />
  55. <SettingsLineHeight />
  56. <SettingsPdfViewer />
  57. </OLForm>
  58. </>
  59. )
  60. }