import { OptionsIcon } from 'shared/components/icons.mjs' import { Chevron } from 'shared/components/navigation/primary.mjs' import { Li, Ul, Details, Summary, SumDiv, SumButton, Deg, TopSummary, TopSumTitle, } from 'shared/components/workbench/menus/index.mjs' import { useTranslation } from 'next-i18next' import { optionsMenuStructure } from 'shared/utils.mjs' import { optionType } from 'shared/utils.mjs' import { ConstantOptionInput, CountOptionInput, DegOptionInput, ListOptionInput, MmOptionInput, PctOptionInput, } from './inputs.mjs' import { BoolOptionValue, ConstantOptionValue, CountOptionValue, DegOptionValue, ListOptionValue, MmOptionValue, PctOptionValue, } from './values.mjs' // Facilitate lookup of the input component const inputs = { constant: ConstantOptionInput, count: CountOptionInput, deg: DegOptionInput, list: ListOptionInput, mm: MmOptionInput, pct: PctOptionInput, } // Facilitate lookup of the value component const values = { bool: BoolOptionValue, constant: ConstantOptionValue, count: CountOptionValue, deg: DegOptionValue, list: ListOptionValue, mm: MmOptionValue, pct: PctOptionValue, } export const DesignOption = ({ design, name, current, config, settings, update, t }) => { const type = optionType(config) const Input = inputs[type] const Value = values[type] // Hide option? if (config?.hide || (typeof config?.hide === 'function' && config.hide(settings))) return null if (type === 'bool') { const toggleBoolean = () => { const dflt = config.bool const current = settings.options?.[name] const newVal = typeof current === 'undefined' ? !dflt : !current update.settings(['options', name], newVal) } return (