settings-menu.tsx 2.4 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 importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  20. import { ElementType } from 'react'
  21. import OLForm from '@/shared/components/ol/ol-form'
  22. import SettingsNewEditor from './settings/settings-new-editor'
  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. if (anonymous) {
  31. return null
  32. }
  33. return (
  34. <>
  35. <h4>{t('settings')}</h4>
  36. <OLForm id="left-menu-setting" className="settings">
  37. <SettingsCompiler />
  38. <SettingsImageName />
  39. <SettingsDocument />
  40. <SettingsSpellCheckLanguage />
  41. <SettingsDictionary />
  42. {moduleSettings.map(({ import: { default: Component }, path }) => (
  43. <Component key={path} />
  44. ))}
  45. <SettingsAutoComplete />
  46. <SettingsAutoCloseBrackets />
  47. <SettingsSyntaxValidation />
  48. <SettingsMathPreview />
  49. <SettingsOverallTheme />
  50. <SettingsEditorTheme />
  51. <SettingsKeybindings />
  52. <SettingsFontSize />
  53. <SettingsFontFamily />
  54. <SettingsLineHeight />
  55. <SettingsPdfViewer />
  56. <SettingsNewEditor />
  57. </OLForm>
  58. </>
  59. )
  60. }