Files
Verso/services/web/frontend/js/features/settings/components/compiler-settings/compiler-setting.tsx
T
Miguel SerranoandCopybot f9c53fe147 [web] Added DEFAULT_LATEX_COMPILER env (#32455)
This is mainly intended to be used in CE/Server Pro

GitOrigin-RevId: 277f9afca389a1e7b00db2d987129432fb1707b5
2026-05-21 08:06:12 +00:00

48 lines
1.7 KiB
TypeScript

import { useState } from 'react'
import { useProjectSettingsContext } from '@/features/editor-left-menu/context/project-settings-context'
import DropdownSetting from '../dropdown-setting'
import type { Option } from '../dropdown-setting'
import { useTranslation } from 'react-i18next'
import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
import { ProjectCompiler } from '@ol-types/project-settings'
import { useSetCompilationSettingWithEvent } from '@/features/editor-left-menu/hooks/use-set-compilation-setting'
import getMeta from '@/utils/meta'
import _ from 'lodash'
function getCompilerOptions(): Option<ProjectCompiler>[] {
const compilerOptions = ['pdfLaTeX', 'LaTeX', 'XeLaTeX', 'LuaLaTeX']
const defaultCompiler = getMeta('ol-defaultLatexCompiler') as ProjectCompiler
const sortedOptions = _.sortBy(
compilerOptions,
option => option.toLowerCase() !== defaultCompiler.toLowerCase()
)
return sortedOptions.map(option => ({
value: option.toLowerCase() as ProjectCompiler,
label: option,
}))
}
export default function CompilerSetting() {
const { compiler, setCompiler } = useProjectSettingsContext()
const [compilerOptions] = useState(() => getCompilerOptions())
const { t } = useTranslation()
const { write } = usePermissionsContext()
const changeCompiler = useSetCompilationSettingWithEvent(
'compiler',
setCompiler
)
return (
<DropdownSetting
id="compiler"
label={t('compiler')}
description={t('the_latex_engine_used_for_compiling')}
disabled={!write}
options={compilerOptions}
onChange={changeCompiler}
value={compiler}
translateOptions="no"
/>
)
}