settings-image-name.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { useMemo } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import getMeta from '../../../../utils/meta'
  4. import SettingsMenuSelect from './settings-menu-select'
  5. import type { Option } from './settings-menu-select'
  6. import { useProjectSettingsContext } from '../../context/project-settings-context'
  7. import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
  8. export default function SettingsImageName() {
  9. const { t } = useTranslation()
  10. const { imageName, setImageName } = useProjectSettingsContext()
  11. const { write } = usePermissionsContext()
  12. const allowedImageNames = useMemo(
  13. () => getMeta('ol-allowedImageNames') || [],
  14. []
  15. )
  16. const options: Array<Option> = useMemo(
  17. () =>
  18. allowedImageNames.map(({ imageName, imageDesc }) => ({
  19. value: imageName,
  20. label: imageDesc,
  21. })),
  22. [allowedImageNames]
  23. )
  24. if (allowedImageNames.length === 0) {
  25. return null
  26. }
  27. return (
  28. <SettingsMenuSelect
  29. onChange={setImageName}
  30. value={imageName}
  31. disabled={!write}
  32. options={options}
  33. label={t('tex_live_version')}
  34. name="imageName"
  35. translateOptions="no"
  36. />
  37. )
  38. }