settings-menu.tsx 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  20. import { ElementType } from 'react'
  21. import OLForm from '@/features/ui/components/ol/ol-form'
  22. const moduleSettings: Array<{
  23. import: { default: ElementType }
  24. path: string
  25. }> = importOverleafModules('settingsEntries')
  26. export default function SettingsMenu() {
  27. const { t } = useTranslation()
  28. const anonymous = getMeta('ol-anonymous')
  29. if (anonymous) {
  30. return null
  31. }
  32. return (
  33. <>
  34. <h4>{t('settings')}</h4>
  35. <OLForm id="left-menu-setting" className="settings">
  36. <SettingsCompiler />
  37. <SettingsImageName />
  38. <SettingsDocument />
  39. <SettingsSpellCheckLanguage />
  40. <SettingsDictionary />
  41. {moduleSettings.map(({ import: { default: Component }, path }) => (
  42. <Component key={path} />
  43. ))}
  44. <SettingsAutoComplete />
  45. <SettingsAutoCloseBrackets />
  46. <SettingsSyntaxValidation />
  47. <SettingsMathPreview />
  48. <SettingsEditorTheme />
  49. <SettingsOverallTheme />
  50. <SettingsKeybindings />
  51. <SettingsFontSize />
  52. <SettingsFontFamily />
  53. <SettingsLineHeight />
  54. <SettingsPdfViewer />
  55. </OLForm>
  56. </>
  57. )
  58. }