@owp/core 2.5.9 → 2.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/_virtual/index10.js +2 -2
  2. package/dist/_virtual/index12.js +2 -2
  3. package/dist/_virtual/index13.js +2 -2
  4. package/dist/_virtual/index14.js +2 -2
  5. package/dist/_virtual/index15.js +2 -2
  6. package/dist/_virtual/index20.js +2 -2
  7. package/dist/_virtual/index21.js +2 -2
  8. package/dist/_virtual/index22.js +2 -2
  9. package/dist/_virtual/index5.js +2 -2
  10. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +195 -147
  11. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  12. package/dist/features/themePreview/components/ThemePreviewColorField.js +10 -11
  13. package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
  14. package/dist/features/themePreview/components/ThemePreviewControls.js +232 -198
  15. package/dist/features/themePreview/components/ThemePreviewControls.js.map +1 -1
  16. package/dist/features/themePreview/hooks/useThemePreview.js +214 -199
  17. package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
  18. package/dist/features/themePreview/utils/themePreviewSettings.js +188 -151
  19. package/dist/features/themePreview/utils/themePreviewSettings.js.map +1 -1
  20. package/dist/features/themePreview.js +18 -17
  21. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js +1 -1
  22. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js +1 -1
  23. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  24. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  25. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  26. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  27. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  28. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  29. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  30. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  31. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  32. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  33. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  34. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  35. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  36. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  37. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  38. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  39. package/dist/owp-app.css +1 -1
  40. package/dist/types/features/themePreview/utils/index.d.ts +1 -1
  41. package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +11 -1
  42. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ThemePreviewControls.js","sources":["../../../../src/features/themePreview/components/ThemePreviewControls.tsx"],"sourcesContent":["import {\n Box,\n ButtonBase,\n Checkbox,\n Divider,\n FormControlLabel,\n IconButton,\n MenuItem,\n Paper,\n TextField,\n Typography,\n} from '@mui/material';\nimport RestartAltOutlinedIcon from '@mui/icons-material/RestartAltOutlined';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport { useMemo, useState } from 'react';\nimport type {\n ThemePreviewFieldDefinition,\n ThemePreviewMode,\n ThemePreviewPresetOption,\n ThemePreviewPresetSectionKey,\n ThemePreviewSectionKey,\n ThemePreviewSectionOption,\n ThemePreviewSettings,\n} from '../types';\nimport {\n deriveThemePreviewPaletteGroupValues,\n getThemePreviewPaletteValue,\n getThemePreviewPresetOptionsByMode,\n isThemePreviewCustomSection,\n THEME_PREVIEW_CUSTOM_PRESET_KEY,\n themePreviewFieldGroupsBySection,\n themePreviewSectionOptions,\n} from '../utils';\nimport { ThemePreviewColorField } from './ThemePreviewColorField';\n\ntype ThemePreviewAutoDerivedFieldPaths = {\n contrastTextPath?: string;\n darkPath?: string;\n lightPath?: string;\n mainPath: string;\n};\n\ntype ThemePreviewFieldCluster = {\n autoDerivedFieldPaths?: ThemePreviewAutoDerivedFieldPaths;\n key: string;\n label?: string;\n fields: ThemePreviewFieldDefinition[];\n};\n\ntype ThemePreviewFieldGroupWithClusters = {\n fieldClusters: ThemePreviewFieldCluster[];\n key: string;\n label: string;\n};\n\ntype ThemePreviewFieldGroupPanel = {\n fieldGroups: ThemePreviewFieldGroupWithClusters[];\n key: string;\n label?: string;\n};\n\nfunction getThemePreviewFieldClusterLabel(prefix: string) {\n return prefix\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/^./, (value) => value.toUpperCase());\n}\n\nfunction getThemePreviewAutoDerivedFieldPaths(\n fields: ThemePreviewFieldDefinition[],\n): ThemePreviewAutoDerivedFieldPaths | null {\n const mainField = fields.find((field) => field.path.endsWith('.main'));\n const lightField = fields.find((field) => field.path.endsWith('.light'));\n const darkField = fields.find((field) => field.path.endsWith('.dark'));\n const contrastTextField = fields.find((field) => field.path.endsWith('.contrastText'));\n\n if (!mainField || (!lightField && !darkField && !contrastTextField)) {\n return null;\n }\n\n return {\n mainPath: mainField.path,\n lightPath: lightField?.path,\n darkPath: darkField?.path,\n contrastTextPath: contrastTextField?.path,\n };\n}\n\nfunction getThemePreviewFieldClusters(fields: ThemePreviewFieldDefinition[]) {\n const fieldGroupsByPrefix = fields.reduce<Record<string, ThemePreviewFieldDefinition[]>>(\n (acc, field) => {\n const prefix = field.path.split('.')[0] ?? '';\n\n if (!prefix) {\n return acc;\n }\n\n if (!acc[prefix]) {\n acc[prefix] = [];\n }\n\n acc[prefix].push(field);\n return acc;\n },\n {},\n );\n const prefixCounts = Object.fromEntries(\n Object.entries(fieldGroupsByPrefix).map(([prefix, groupedFields]) => [\n prefix,\n groupedFields.length,\n ]),\n );\n const repeatedPrefixes = new Set(\n Object.entries(prefixCounts)\n .filter(([, count]) => count > 1)\n .map(([prefix]) => prefix),\n );\n const hasStandaloneField = fields.some(\n (field) => !repeatedPrefixes.has(field.path.split('.')[0] ?? ''),\n );\n const shouldUsePrefixGrouping = repeatedPrefixes.size > 1 || hasStandaloneField;\n\n if (!shouldUsePrefixGrouping) {\n return fields.map<ThemePreviewFieldCluster>((field) => ({\n key: field.path,\n fields: [field],\n }));\n }\n\n const groupedPrefixes = new Set<string>();\n\n return fields.reduce<ThemePreviewFieldCluster[]>((acc, field) => {\n const prefix = field.path.split('.')[0] ?? '';\n\n if (!repeatedPrefixes.has(prefix)) {\n acc.push({\n key: field.path,\n fields: [field],\n });\n return acc;\n }\n\n if (groupedPrefixes.has(prefix)) {\n return acc;\n }\n\n groupedPrefixes.add(prefix);\n const clusterFields = fieldGroupsByPrefix[prefix] ?? [field];\n\n acc.push({\n key: prefix,\n label: getThemePreviewFieldClusterLabel(prefix),\n fields: clusterFields,\n autoDerivedFieldPaths: getThemePreviewAutoDerivedFieldPaths(clusterFields) ?? undefined,\n });\n\n return acc;\n }, []);\n}\n\nconst themePreviewSectionOptionByKey = Object.fromEntries(\n themePreviewSectionOptions.map((sectionOption) => [sectionOption.key, sectionOption]),\n) as Record<ThemePreviewSectionKey, ThemePreviewSectionOption>;\nconst themePreviewSelectorStyles = {\n active: {\n backgroundColor: '#1ea3e6',\n borderColor: '#1591cf',\n descriptionColor: 'rgba(255, 255, 255, 0.92)',\n textColor: '#ffffff',\n },\n inactive: {\n backgroundColor: '#ffffff',\n borderColor: '#d8dee8',\n descriptionColor: '#6b7280',\n textColor: '#111827',\n },\n} as const;\nconst themePreviewControlsPanelBorderColor = '#d8dee8';\nconst themePreviewControlsClusterBorderColor = '#d1d7e0';\nconst themePreviewControlsClusterBackgroundColor = '#f8fafc';\nconst themePreviewControlsPanelBackgroundColor = '#ffffff';\nconst themePreviewControlsTitleColor = '#111827';\nconst themePreviewControlsMutedTextColor = '#6b7280';\nconst themePreviewControlsInputBackgroundColor = '#ffffff';\nconst themePreviewControlsInputBorderColor = '#cbd5e1';\nconst themePreviewControlsInputHoverBorderColor = '#94a3b8';\nconst themePreviewControlsInputFocusBorderColor = '#1ea3e6';\nconst themePreviewControlsButtonBorderColor = '#111827';\nconst themePreviewControlsButtonHoverBackgroundColor = '#f8fafc';\nconst themePreviewControlsSectionPaperBackgroundColor = '#f8fafc';\n\nconst themePreviewControlsTheme = createTheme({\n palette: {\n mode: 'light',\n background: {\n default: themePreviewControlsPanelBackgroundColor,\n paper: themePreviewControlsPanelBackgroundColor,\n },\n divider: themePreviewControlsPanelBorderColor,\n primary: {\n main: themePreviewControlsInputFocusBorderColor,\n },\n secondary: {\n main: themePreviewControlsInputFocusBorderColor,\n },\n text: {\n primary: themePreviewControlsTitleColor,\n secondary: themePreviewControlsMutedTextColor,\n },\n },\n typography: {\n htmlFontSize: 10,\n fontSize: 13,\n body1: {\n fontSize: '1.3rem',\n },\n body2: {\n fontSize: '1.3rem',\n },\n },\n});\n\nconst themePreviewControlsSx = {\n color: themePreviewControlsTitleColor,\n '& .MuiFormHelperText-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputAdornment-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputLabel-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputLabel-root.Mui-focused': {\n color: themePreviewControlsTitleColor,\n },\n '& .MuiInputBase-input': {\n color: themePreviewControlsTitleColor,\n },\n '& .MuiOutlinedInput-root': {\n backgroundColor: themePreviewControlsInputBackgroundColor,\n color: themePreviewControlsTitleColor,\n '& fieldset': {\n borderColor: themePreviewControlsInputBorderColor,\n },\n '&:hover fieldset': {\n borderColor: themePreviewControlsInputHoverBorderColor,\n },\n '&.Mui-focused fieldset': {\n borderColor: themePreviewControlsInputFocusBorderColor,\n borderWidth: 1,\n },\n },\n '& .MuiSelect-icon': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiButton-outlined': {\n backgroundColor: themePreviewControlsInputBackgroundColor,\n borderColor: themePreviewControlsButtonBorderColor,\n color: themePreviewControlsTitleColor,\n '&:hover': {\n backgroundColor: themePreviewControlsButtonHoverBackgroundColor,\n borderColor: themePreviewControlsButtonBorderColor,\n },\n },\n '& .MuiCheckbox-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiCheckbox-root.Mui-checked': {\n color: themePreviewControlsInputFocusBorderColor,\n },\n '& .MuiDivider-root': {\n borderColor: themePreviewControlsPanelBorderColor,\n },\n} as const;\n\ninterface ThemePreviewControlsProps {\n activeSection: ThemePreviewSectionKey;\n presetOptions: ThemePreviewPresetOption[];\n selectedMode: ThemePreviewMode;\n selectedPresetKey: string;\n settings: ThemePreviewSettings;\n resetVersion: number;\n onSectionChange: (sectionKey: ThemePreviewSectionKey) => void;\n onPaletteValueChange: (path: string, value: string) => void;\n onPaletteValuesChange: (updates: Array<{ path: string; value: string }>) => void;\n onPaletteValueReset: (path: string) => void;\n onPaletteValuesReset: (paths: string[]) => void;\n onPresetKeyChange: (presetKey: string) => void;\n onPresetModeChange: (mode: ThemePreviewMode) => void;\n}\n\nexport function ThemePreviewControls({\n activeSection,\n presetOptions,\n selectedMode,\n selectedPresetKey,\n settings,\n resetVersion,\n onSectionChange,\n onPaletteValueChange,\n onPaletteValuesChange,\n onPaletteValueReset,\n onPaletteValuesReset,\n onPresetKeyChange,\n onPresetModeChange,\n}: ThemePreviewControlsProps) {\n const [editableDerivedFields, setEditableDerivedFields] = useState<Record<string, boolean>>({});\n const canSelectPreset = !isThemePreviewCustomSection(activeSection);\n const presetSectionKey = canSelectPreset ? (activeSection as ThemePreviewPresetSectionKey) : null;\n const presetOptionsByMode = useMemo(\n () =>\n canSelectPreset && presetSectionKey\n ? getThemePreviewPresetOptionsByMode(presetOptions, presetSectionKey, selectedMode)\n : [],\n [canSelectPreset, presetOptions, presetSectionKey, selectedMode],\n );\n const fieldGroups = themePreviewFieldGroupsBySection[activeSection];\n const fieldGroupsWithClusters = useMemo(\n () =>\n fieldGroups.map((fieldGroup) => ({\n ...fieldGroup,\n fieldClusters: getThemePreviewFieldClusters(fieldGroup.fields),\n })),\n [fieldGroups],\n );\n const fieldGroupPanels = useMemo<ThemePreviewFieldGroupPanel[]>(() => {\n if (activeSection !== 'table') {\n return [\n {\n key: activeSection,\n fieldGroups: fieldGroupsWithClusters,\n },\n ];\n }\n\n const fieldTableGroupKeys = new Set(['tableFieldHeader', 'tableFieldCell']);\n const tableFieldGroups = fieldGroupsWithClusters.filter((fieldGroup) =>\n fieldTableGroupKeys.has(fieldGroup.key),\n );\n const tableBaseGroups = fieldGroupsWithClusters.filter(\n (fieldGroup) => !fieldTableGroupKeys.has(fieldGroup.key),\n );\n\n return [\n {\n key: 'table-field',\n label: 'Field Table',\n fieldGroups: tableFieldGroups,\n },\n {\n key: 'table-base',\n label: 'Table',\n fieldGroups: tableBaseGroups,\n },\n ].filter((panel) => panel.fieldGroups.length > 0);\n }, [activeSection, fieldGroupsWithClusters]);\n const activeSectionOption = themePreviewSectionOptionByKey[activeSection];\n\n const getAutoDerivedUpdates = (\n sectionKey: ThemePreviewPresetSectionKey,\n autoDerivedFieldPaths: ThemePreviewAutoDerivedFieldPaths,\n mainValue: string,\n ) => {\n const commonWhite =\n getThemePreviewPaletteValue(settings, sectionKey, 'common.white') || '#FFFFFF';\n const commonBlack =\n getThemePreviewPaletteValue(settings, sectionKey, 'common.black') || '#111827';\n const derivedValues = deriveThemePreviewPaletteGroupValues(mainValue, {\n whiteTextColor: commonWhite,\n blackTextColor: commonBlack,\n });\n\n if (!derivedValues) {\n return [];\n }\n\n return [\n autoDerivedFieldPaths.lightPath\n ? { path: autoDerivedFieldPaths.lightPath, value: derivedValues.light }\n : null,\n autoDerivedFieldPaths.darkPath\n ? { path: autoDerivedFieldPaths.darkPath, value: derivedValues.dark }\n : null,\n autoDerivedFieldPaths.contrastTextPath\n ? { path: autoDerivedFieldPaths.contrastTextPath, value: derivedValues.contrastText }\n : null,\n ].filter((item): item is { path: string; value: string } => Boolean(item));\n };\n\n const renderFieldGroup = (fieldGroup: ThemePreviewFieldGroupWithClusters) => {\n const groupResetPaths = fieldGroup.fieldClusters.flatMap((fieldCluster) =>\n fieldCluster.fields.map((fieldDefinition) => fieldDefinition.path),\n );\n\n return (\n <div key={fieldGroup.key} className=\"flex flex-col gap-12\">\n {fieldGroup.label ? (\n <div className=\"flex items-center justify-between gap-8\">\n <Typography variant=\"subtitle1\" fontWeight={700}>\n {fieldGroup.label}\n </Typography>\n <IconButton\n size=\"small\"\n aria-label={`${fieldGroup.label} reset`}\n onClick={() => {\n onPaletteValuesReset(groupResetPaths);\n }}\n sx={{\n border: `1px solid ${themePreviewControlsInputBorderColor}`,\n borderRadius: 1,\n color: themePreviewControlsMutedTextColor,\n p: 0.5,\n }}\n >\n <RestartAltOutlinedIcon sx={{ fontSize: 18 }} />\n </IconButton>\n </div>\n ) : null}\n <div className=\"grid gap-12\">\n {fieldGroup.fieldClusters.map((fieldCluster) => {\n if (!fieldCluster.label) {\n return fieldCluster.fields.map((fieldDefinition) => (\n <ThemePreviewColorField\n key={fieldDefinition.path}\n definition={fieldDefinition}\n resetVersion={resetVersion}\n sectionKey={activeSection}\n settings={settings}\n onChange={onPaletteValueChange}\n onReset={onPaletteValueReset}\n />\n ));\n }\n\n const clusterStateKey = `${activeSection}:${fieldGroup.key}:${fieldCluster.key}`;\n const isEditableDerivedFieldCluster = Boolean(\n editableDerivedFields[clusterStateKey],\n );\n const autoDerivedFieldPaths = fieldCluster.autoDerivedFieldPaths;\n const canAutoDerive = Boolean(autoDerivedFieldPaths && presetSectionKey);\n\n return (\n <Paper\n key={fieldCluster.key}\n variant=\"outlined\"\n sx={{\n backgroundColor: themePreviewControlsClusterBackgroundColor,\n borderColor: themePreviewControlsClusterBorderColor,\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n p: 1.5,\n }}\n >\n <div className=\"flex items-start justify-between gap-12\">\n <Typography variant=\"body2\" fontWeight={700}>\n {fieldCluster.label}\n </Typography>\n {canAutoDerive ? (\n <FormControlLabel\n className=\"m-0\"\n control={\n <Checkbox\n size=\"small\"\n checked={isEditableDerivedFieldCluster}\n onChange={(event) => {\n const nextChecked = event.target.checked;\n\n setEditableDerivedFields((prevState) => ({\n ...prevState,\n [clusterStateKey]: nextChecked,\n }));\n\n if (nextChecked) {\n return;\n }\n\n if (!presetSectionKey || !autoDerivedFieldPaths) {\n return;\n }\n\n onPaletteValuesChange(\n getAutoDerivedUpdates(\n presetSectionKey,\n autoDerivedFieldPaths,\n getThemePreviewPaletteValue(\n settings,\n activeSection,\n autoDerivedFieldPaths.mainPath,\n ),\n ),\n );\n }}\n />\n }\n label={\n <Typography variant=\"caption\" color=\"text.secondary\">\n Edit derived colors\n </Typography>\n }\n />\n ) : null}\n </div>\n <div className=\"grid gap-12\">\n {fieldCluster.fields.map((fieldDefinition) => {\n const isDisabled = autoDerivedFieldPaths && presetSectionKey\n ? !isEditableDerivedFieldCluster &&\n fieldDefinition.path !== autoDerivedFieldPaths.mainPath\n : false;\n\n return (\n <ThemePreviewColorField\n key={fieldDefinition.path}\n disabled={isDisabled}\n definition={fieldDefinition}\n resetVersion={resetVersion}\n sectionKey={activeSection}\n settings={settings}\n onChange={(path, value) => {\n if (\n !autoDerivedFieldPaths ||\n !presetSectionKey ||\n isEditableDerivedFieldCluster ||\n path !== autoDerivedFieldPaths.mainPath\n ) {\n onPaletteValueChange(path, value);\n return;\n }\n\n onPaletteValuesChange(\n [\n { path, value },\n ...getAutoDerivedUpdates(\n presetSectionKey,\n autoDerivedFieldPaths,\n value,\n ),\n ],\n );\n }}\n onReset={onPaletteValueReset}\n />\n );\n })}\n </div>\n </Paper>\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <ThemeProvider theme={themePreviewControlsTheme}>\n <Box sx={themePreviewControlsSx} className=\"flex h-full min-h-0 flex-col gap-16\">\n <div className=\"grid grid-cols-2 gap-12\">\n {themePreviewSectionOptions.map((sectionOption) => {\n const isActive = sectionOption.key === activeSection;\n\n return (\n <ButtonBase\n key={sectionOption.key}\n onClick={() => onSectionChange(sectionOption.key)}\n className=\"w-full rounded-lg text-left\"\n sx={{\n alignItems: 'flex-start',\n backgroundColor: isActive\n ? themePreviewSelectorStyles.active.backgroundColor\n : themePreviewSelectorStyles.inactive.backgroundColor,\n border: `1px solid ${\n isActive\n ? themePreviewSelectorStyles.active.borderColor\n : themePreviewSelectorStyles.inactive.borderColor\n }`,\n color: isActive\n ? themePreviewSelectorStyles.active.textColor\n : themePreviewSelectorStyles.inactive.textColor,\n p: 2,\n }}\n >\n <div className=\"flex w-full flex-col gap-4\">\n <Typography variant=\"subtitle1\" fontWeight={600}>\n {sectionOption.label}\n </Typography>\n {sectionOption.description ? (\n <Typography\n variant=\"body2\"\n sx={{\n color: isActive\n ? themePreviewSelectorStyles.active.descriptionColor\n : themePreviewSelectorStyles.inactive.descriptionColor,\n }}\n >\n {sectionOption.description}\n </Typography>\n ) : null}\n </div>\n </ButtonBase>\n );\n })}\n </div>\n\n <Paper\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg\"\n sx={{\n backgroundColor: themePreviewControlsPanelBackgroundColor,\n border: `1px solid ${themePreviewControlsPanelBorderColor}`,\n boxShadow: 'none',\n }}\n >\n <div className=\"flex items-center justify-between px-20 py-16\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-14\">\n <Typography variant=\"h6\" sx={{ color: themePreviewControlsTitleColor }}>\n {activeSectionOption?.label}\n </Typography>\n {canSelectPreset ? (\n <div className=\"grid gap-12 md:grid-cols-2\">\n <TextField\n select\n label=\"Mode\"\n value={selectedMode}\n onChange={(event) => {\n onPresetModeChange(event.target.value as ThemePreviewMode);\n }}\n >\n <MenuItem value=\"light\">light</MenuItem>\n <MenuItem value=\"dark\">dark</MenuItem>\n </TextField>\n\n <TextField\n select\n label=\"Preset\"\n value={selectedPresetKey}\n onChange={(event) => {\n onPresetKeyChange(event.target.value);\n }}\n >\n {selectedPresetKey === THEME_PREVIEW_CUSTOM_PRESET_KEY ? (\n <MenuItem value={THEME_PREVIEW_CUSTOM_PRESET_KEY}>custom</MenuItem>\n ) : null}\n {presetOptionsByMode.map((presetOption) => (\n <MenuItem key={presetOption.key} value={presetOption.key}>\n {presetOption.label}\n </MenuItem>\n ))}\n </TextField>\n </div>\n ) : null}\n </div>\n </div>\n\n <Divider\n sx={{\n borderColor: themePreviewControlsPanelBorderColor,\n }}\n />\n\n <div className=\"flex min-h-0 flex-1 flex-col gap-20 overflow-y-auto px-20 py-20\">\n {fieldGroupPanels.map((fieldGroupPanel) => {\n const isTablePanel = activeSection === 'table' && fieldGroupPanels.length > 1;\n\n if (!isTablePanel) {\n return fieldGroupPanel.fieldGroups.map(renderFieldGroup);\n }\n\n return (\n <Paper\n key={fieldGroupPanel.key}\n variant=\"outlined\"\n sx={{\n backgroundColor: themePreviewControlsSectionPaperBackgroundColor,\n borderColor: themePreviewControlsPanelBorderColor,\n boxShadow: 'none',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n p: 2,\n }}\n >\n {fieldGroupPanel.label ? (\n <Typography variant=\"subtitle1\" fontWeight={700}>\n {fieldGroupPanel.label}\n </Typography>\n ) : null}\n <div className=\"grid gap-20\">\n {fieldGroupPanel.fieldGroups.map(renderFieldGroup)}\n </div>\n </Paper>\n );\n })}\n </div>\n </Paper>\n </Box>\n </ThemeProvider>\n );\n}\n"],"names":["getThemePreviewFieldClusterLabel","prefix","value","__name","getThemePreviewAutoDerivedFieldPaths","fields","mainField","field","lightField","darkField","contrastTextField","getThemePreviewFieldClusters","fieldGroupsByPrefix","acc","prefixCounts","groupedFields","repeatedPrefixes","count","hasStandaloneField","groupedPrefixes","clusterFields","themePreviewSectionOptionByKey","themePreviewSectionOptions","sectionOption","themePreviewSelectorStyles","themePreviewControlsPanelBorderColor","themePreviewControlsClusterBorderColor","themePreviewControlsClusterBackgroundColor","themePreviewControlsPanelBackgroundColor","themePreviewControlsTitleColor","themePreviewControlsMutedTextColor","themePreviewControlsInputBackgroundColor","themePreviewControlsInputBorderColor","themePreviewControlsInputHoverBorderColor","themePreviewControlsInputFocusBorderColor","themePreviewControlsButtonBorderColor","themePreviewControlsButtonHoverBackgroundColor","themePreviewControlsSectionPaperBackgroundColor","themePreviewControlsTheme","createTheme","themePreviewControlsSx","ThemePreviewControls","activeSection","presetOptions","selectedMode","selectedPresetKey","settings","resetVersion","onSectionChange","onPaletteValueChange","onPaletteValuesChange","onPaletteValueReset","onPaletteValuesReset","onPresetKeyChange","onPresetModeChange","editableDerivedFields","setEditableDerivedFields","useState","canSelectPreset","isThemePreviewCustomSection","presetSectionKey","presetOptionsByMode","useMemo","getThemePreviewPresetOptionsByMode","fieldGroups","themePreviewFieldGroupsBySection","fieldGroupsWithClusters","fieldGroup","fieldGroupPanels","fieldTableGroupKeys","tableFieldGroups","tableBaseGroups","panel","activeSectionOption","getAutoDerivedUpdates","sectionKey","autoDerivedFieldPaths","mainValue","commonWhite","getThemePreviewPaletteValue","commonBlack","derivedValues","deriveThemePreviewPaletteGroupValues","item","renderFieldGroup","groupResetPaths","fieldCluster","fieldDefinition","jsxs","jsx","Typography","IconButton","RestartAltOutlinedIcon","ThemePreviewColorField","clusterStateKey","isEditableDerivedFieldCluster","canAutoDerive","Paper","FormControlLabel","Checkbox","event","nextChecked","prevState","isDisabled","path","ThemeProvider","Box","isActive","ButtonBase","TextField","MenuItem","THEME_PREVIEW_CUSTOM_PRESET_KEY","presetOption","Divider","fieldGroupPanel"],"mappings":"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"}
1
+ {"version":3,"file":"ThemePreviewControls.js","sources":["../../../../src/features/themePreview/components/ThemePreviewControls.tsx"],"sourcesContent":["import {\n Box,\n ButtonBase,\n Checkbox,\n Divider,\n FormControlLabel,\n IconButton,\n MenuItem,\n Paper,\n TextField,\n Typography,\n} from '@mui/material';\nimport RestartAltOutlinedIcon from '@mui/icons-material/RestartAltOutlined';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport { useMemo, useState } from 'react';\nimport {\n designSystemPresetKeys,\n toolbarCuratedPresetKeys,\n} from '@/features/themePreview/configs/presets';\nimport type {\n ThemePreviewFieldDefinition,\n ThemePreviewMode,\n ThemePreviewPresetOption,\n ThemePreviewPresetSectionKey,\n ThemePreviewSectionKey,\n ThemePreviewSectionOption,\n ThemePreviewSettings,\n} from '../types';\nimport {\n deriveThemePreviewPaletteGroupValues,\n getThemePreviewPaletteValue,\n getThemePreviewPresetOptionsByMode,\n isThemePreviewCustomSection,\n THEME_PREVIEW_CUSTOM_PRESET_KEY,\n themePreviewFieldGroupsBySection,\n themePreviewSectionOptions,\n} from '../utils';\nimport { ThemePreviewColorField } from './ThemePreviewColorField';\n\ntype ThemePreviewAutoDerivedFieldPaths = {\n contrastTextPath?: string;\n darkPath?: string;\n lightPath?: string;\n mainPath: string;\n};\n\ntype ThemePreviewFieldCluster = {\n autoDerivedFieldPaths?: ThemePreviewAutoDerivedFieldPaths;\n key: string;\n label?: string;\n fields: ThemePreviewFieldDefinition[];\n};\n\ntype ThemePreviewFieldGroupWithClusters = {\n fieldClusters: ThemePreviewFieldCluster[];\n key: string;\n label: string;\n};\n\ntype ThemePreviewFieldGroupPanel = {\n fieldGroups: ThemePreviewFieldGroupWithClusters[];\n key: string;\n label?: string;\n};\n\nfunction getThemePreviewFieldClusterLabel(prefix: string) {\n return prefix\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/^./, (value) => value.toUpperCase());\n}\n\nfunction getThemePreviewAutoDerivedFieldPaths(\n fields: ThemePreviewFieldDefinition[],\n): ThemePreviewAutoDerivedFieldPaths | null {\n const mainField = fields.find((field) => field.path.endsWith('.main'));\n const lightField = fields.find((field) => field.path.endsWith('.light'));\n const darkField = fields.find((field) => field.path.endsWith('.dark'));\n const contrastTextField = fields.find((field) => field.path.endsWith('.contrastText'));\n\n if (!mainField || (!lightField && !darkField && !contrastTextField)) {\n return null;\n }\n\n return {\n mainPath: mainField.path,\n lightPath: lightField?.path,\n darkPath: darkField?.path,\n contrastTextPath: contrastTextField?.path,\n };\n}\n\nfunction getThemePreviewFieldClusters(fields: ThemePreviewFieldDefinition[]) {\n const fieldGroupsByPrefix = fields.reduce<Record<string, ThemePreviewFieldDefinition[]>>(\n (acc, field) => {\n const prefix = field.path.split('.')[0] ?? '';\n\n if (!prefix) {\n return acc;\n }\n\n if (!acc[prefix]) {\n acc[prefix] = [];\n }\n\n acc[prefix].push(field);\n return acc;\n },\n {},\n );\n const prefixCounts = Object.fromEntries(\n Object.entries(fieldGroupsByPrefix).map(([prefix, groupedFields]) => [\n prefix,\n groupedFields.length,\n ]),\n );\n const repeatedPrefixes = new Set(\n Object.entries(prefixCounts)\n .filter(([, count]) => count > 1)\n .map(([prefix]) => prefix),\n );\n const hasStandaloneField = fields.some(\n (field) => !repeatedPrefixes.has(field.path.split('.')[0] ?? ''),\n );\n const shouldUsePrefixGrouping = repeatedPrefixes.size > 1 || hasStandaloneField;\n\n if (!shouldUsePrefixGrouping) {\n return fields.map<ThemePreviewFieldCluster>((field) => ({\n key: field.path,\n fields: [field],\n }));\n }\n\n const groupedPrefixes = new Set<string>();\n\n return fields.reduce<ThemePreviewFieldCluster[]>((acc, field) => {\n const prefix = field.path.split('.')[0] ?? '';\n\n if (!repeatedPrefixes.has(prefix)) {\n acc.push({\n key: field.path,\n fields: [field],\n });\n return acc;\n }\n\n if (groupedPrefixes.has(prefix)) {\n return acc;\n }\n\n groupedPrefixes.add(prefix);\n const clusterFields = fieldGroupsByPrefix[prefix] ?? [field];\n\n acc.push({\n key: prefix,\n label: getThemePreviewFieldClusterLabel(prefix),\n fields: clusterFields,\n autoDerivedFieldPaths: getThemePreviewAutoDerivedFieldPaths(clusterFields) ?? undefined,\n });\n\n return acc;\n }, []);\n}\n\nconst themePreviewSectionOptionByKey = Object.fromEntries(\n themePreviewSectionOptions.map((sectionOption) => [sectionOption.key, sectionOption]),\n) as Record<ThemePreviewSectionKey, ThemePreviewSectionOption>;\nconst themePreviewSelectorStyles = {\n active: {\n backgroundColor: '#1ea3e6',\n borderColor: '#1591cf',\n descriptionColor: 'rgba(255, 255, 255, 0.92)',\n textColor: '#ffffff',\n },\n inactive: {\n backgroundColor: '#ffffff',\n borderColor: '#d8dee8',\n descriptionColor: '#6b7280',\n textColor: '#111827',\n },\n} as const;\nconst themePreviewControlsPanelBorderColor = '#d8dee8';\nconst themePreviewControlsClusterBorderColor = '#d1d7e0';\nconst themePreviewControlsClusterBackgroundColor = '#f8fafc';\nconst themePreviewControlsPanelBackgroundColor = '#ffffff';\nconst themePreviewControlsTitleColor = '#111827';\nconst themePreviewControlsMutedTextColor = '#6b7280';\nconst themePreviewControlsInputBackgroundColor = '#ffffff';\nconst themePreviewControlsInputBorderColor = '#cbd5e1';\nconst themePreviewControlsInputHoverBorderColor = '#94a3b8';\nconst themePreviewControlsInputFocusBorderColor = '#1ea3e6';\nconst themePreviewControlsButtonBorderColor = '#111827';\nconst themePreviewControlsButtonHoverBackgroundColor = '#f8fafc';\nconst themePreviewControlsSectionPaperBackgroundColor = '#f8fafc';\n\nconst themePreviewControlsTheme = createTheme({\n palette: {\n mode: 'light',\n background: {\n default: themePreviewControlsPanelBackgroundColor,\n paper: themePreviewControlsPanelBackgroundColor,\n },\n divider: themePreviewControlsPanelBorderColor,\n primary: {\n main: themePreviewControlsInputFocusBorderColor,\n },\n secondary: {\n main: themePreviewControlsInputFocusBorderColor,\n },\n text: {\n primary: themePreviewControlsTitleColor,\n secondary: themePreviewControlsMutedTextColor,\n },\n },\n typography: {\n htmlFontSize: 10,\n fontSize: 13,\n body1: {\n fontSize: '1.3rem',\n },\n body2: {\n fontSize: '1.3rem',\n },\n },\n});\n\nconst themePreviewControlsSx = {\n color: themePreviewControlsTitleColor,\n '& .MuiFormHelperText-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputAdornment-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputLabel-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiInputLabel-root.Mui-focused': {\n color: themePreviewControlsTitleColor,\n },\n '& .MuiInputBase-input': {\n color: themePreviewControlsTitleColor,\n },\n '& .MuiOutlinedInput-root': {\n backgroundColor: themePreviewControlsInputBackgroundColor,\n color: themePreviewControlsTitleColor,\n '& fieldset': {\n borderColor: themePreviewControlsInputBorderColor,\n },\n '&:hover fieldset': {\n borderColor: themePreviewControlsInputHoverBorderColor,\n },\n '&.Mui-focused fieldset': {\n borderColor: themePreviewControlsInputFocusBorderColor,\n borderWidth: 1,\n },\n },\n '& .MuiSelect-icon': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiButton-outlined': {\n backgroundColor: themePreviewControlsInputBackgroundColor,\n borderColor: themePreviewControlsButtonBorderColor,\n color: themePreviewControlsTitleColor,\n '&:hover': {\n backgroundColor: themePreviewControlsButtonHoverBackgroundColor,\n borderColor: themePreviewControlsButtonBorderColor,\n },\n },\n '& .MuiCheckbox-root': {\n color: themePreviewControlsMutedTextColor,\n },\n '& .MuiCheckbox-root.Mui-checked': {\n color: themePreviewControlsInputFocusBorderColor,\n },\n '& .MuiDivider-root': {\n borderColor: themePreviewControlsPanelBorderColor,\n },\n} as const;\nconst themePreviewCuratedPresetKeySet = new Set<string>([\n ...toolbarCuratedPresetKeys,\n ...designSystemPresetKeys,\n]);\nconst themePreviewTableFieldGroupKeySet = new Set(['tableFieldHeader', 'tableFieldCell']);\n\ninterface ThemePreviewControlsProps {\n activeSection: ThemePreviewSectionKey;\n presetOptions: ThemePreviewPresetOption[];\n selectedMode: ThemePreviewMode;\n selectedPresetKey: string;\n settings: ThemePreviewSettings;\n resetVersion: number;\n onSectionChange: (sectionKey: ThemePreviewSectionKey) => void;\n onPaletteValueChange: (path: string, value: string) => void;\n onPaletteValuesChange: (updates: Array<{ path: string; value: string }>) => void;\n onPaletteValueReset: (path: string) => void;\n onPaletteValuesReset: (paths: string[]) => void;\n onPresetKeyChange: (presetKey: string) => void;\n onPresetModeChange: (mode: ThemePreviewMode) => void;\n}\n\nexport function ThemePreviewControls({\n activeSection,\n presetOptions,\n selectedMode,\n selectedPresetKey,\n settings,\n resetVersion,\n onSectionChange,\n onPaletteValueChange,\n onPaletteValuesChange,\n onPaletteValueReset,\n onPaletteValuesReset,\n onPresetKeyChange,\n onPresetModeChange,\n}: ThemePreviewControlsProps) {\n const [editableDerivedFields, setEditableDerivedFields] = useState<Record<string, boolean>>({});\n const canSelectPreset = !isThemePreviewCustomSection(activeSection);\n const presetSectionKey = canSelectPreset ? (activeSection as ThemePreviewPresetSectionKey) : null;\n const presetOptionsByMode = useMemo(\n () =>\n canSelectPreset && presetSectionKey\n ? getThemePreviewPresetOptionsByMode(presetOptions, presetSectionKey, selectedMode)\n : [],\n [canSelectPreset, presetOptions, presetSectionKey, selectedMode],\n );\n const firstLegacyPresetKey = useMemo(\n () =>\n presetOptionsByMode.find(\n (presetOption) => !themePreviewCuratedPresetKeySet.has(presetOption.key),\n )?.key,\n [presetOptionsByMode],\n );\n const fieldGroups = themePreviewFieldGroupsBySection[activeSection];\n const fieldGroupsWithClusters = useMemo(\n () =>\n fieldGroups.map((fieldGroup) => ({\n ...fieldGroup,\n fieldClusters: getThemePreviewFieldClusters(fieldGroup.fields),\n })),\n [fieldGroups],\n );\n const fieldGroupPanels = useMemo<ThemePreviewFieldGroupPanel[]>(() => {\n if (activeSection !== 'table') {\n return [\n {\n key: activeSection,\n fieldGroups: fieldGroupsWithClusters,\n },\n ];\n }\n\n const tableFieldGroups = fieldGroupsWithClusters.filter((fieldGroup) =>\n themePreviewTableFieldGroupKeySet.has(fieldGroup.key),\n );\n const tableBaseGroups = fieldGroupsWithClusters.filter(\n (fieldGroup) => !themePreviewTableFieldGroupKeySet.has(fieldGroup.key),\n );\n\n return [\n {\n key: 'table-field',\n label: 'Field Table',\n fieldGroups: tableFieldGroups,\n },\n {\n key: 'table-base',\n label: 'Table',\n fieldGroups: tableBaseGroups,\n },\n ].filter((panel) => panel.fieldGroups.length > 0);\n }, [activeSection, fieldGroupsWithClusters]);\n const activeSectionOption = themePreviewSectionOptionByKey[activeSection];\n const presetMenuItems = useMemo(\n () =>\n presetOptionsByMode.flatMap((presetOption) => {\n const items = [];\n\n if (presetOption.key === firstLegacyPresetKey) {\n items.push(\n <Divider\n key=\"preset-legacy-divider\"\n component=\"li\"\n role=\"presentation\"\n textAlign=\"center\"\n sx={{\n color: themePreviewControlsMutedTextColor,\n fontSize: '1.2rem',\n my: 0.5,\n }}\n >\n legacy\n </Divider>,\n );\n }\n\n items.push(\n <MenuItem key={presetOption.key} value={presetOption.key}>\n {presetOption.label}\n </MenuItem>,\n );\n\n return items;\n }),\n [firstLegacyPresetKey, presetOptionsByMode],\n );\n\n const getAutoDerivedUpdates = (\n sectionKey: ThemePreviewPresetSectionKey,\n autoDerivedFieldPaths: ThemePreviewAutoDerivedFieldPaths,\n mainValue: string,\n ) => {\n const commonWhite =\n getThemePreviewPaletteValue(settings, sectionKey, 'common.white') || '#FFFFFF';\n const commonBlack =\n getThemePreviewPaletteValue(settings, sectionKey, 'common.black') || '#111827';\n const derivedValues = deriveThemePreviewPaletteGroupValues(mainValue, {\n whiteTextColor: commonWhite,\n blackTextColor: commonBlack,\n });\n\n if (!derivedValues) {\n return [];\n }\n\n return [\n autoDerivedFieldPaths.lightPath\n ? { path: autoDerivedFieldPaths.lightPath, value: derivedValues.light }\n : null,\n autoDerivedFieldPaths.darkPath\n ? { path: autoDerivedFieldPaths.darkPath, value: derivedValues.dark }\n : null,\n autoDerivedFieldPaths.contrastTextPath\n ? { path: autoDerivedFieldPaths.contrastTextPath, value: derivedValues.contrastText }\n : null,\n ].filter((item): item is { path: string; value: string } => Boolean(item));\n };\n\n const renderFieldGroup = (fieldGroup: ThemePreviewFieldGroupWithClusters) => {\n const groupResetPaths = fieldGroup.fieldClusters.flatMap((fieldCluster) =>\n fieldCluster.fields.map((fieldDefinition) => fieldDefinition.path),\n );\n\n return (\n <div key={fieldGroup.key} className=\"flex flex-col gap-12\">\n {fieldGroup.label ? (\n <div className=\"flex items-center justify-between gap-8\">\n <Typography variant=\"subtitle1\" fontWeight={700}>\n {fieldGroup.label}\n </Typography>\n <IconButton\n size=\"small\"\n aria-label={`${fieldGroup.label} reset`}\n onClick={() => {\n onPaletteValuesReset(groupResetPaths);\n }}\n sx={{\n border: `1px solid ${themePreviewControlsInputBorderColor}`,\n borderRadius: 1,\n color: themePreviewControlsMutedTextColor,\n p: 0.5,\n }}\n >\n <RestartAltOutlinedIcon sx={{ fontSize: 18 }} />\n </IconButton>\n </div>\n ) : null}\n <div className=\"grid gap-12\">\n {fieldGroup.fieldClusters.map((fieldCluster) => {\n if (!fieldCluster.label) {\n return fieldCluster.fields.map((fieldDefinition) => (\n <ThemePreviewColorField\n key={fieldDefinition.path}\n definition={fieldDefinition}\n resetVersion={resetVersion}\n sectionKey={activeSection}\n settings={settings}\n onChange={onPaletteValueChange}\n onReset={onPaletteValueReset}\n />\n ));\n }\n\n const clusterStateKey = `${activeSection}:${fieldGroup.key}:${fieldCluster.key}`;\n const isEditableDerivedFieldCluster = Boolean(\n editableDerivedFields[clusterStateKey],\n );\n const autoDerivedFieldPaths = fieldCluster.autoDerivedFieldPaths;\n const canAutoDerive = Boolean(autoDerivedFieldPaths && presetSectionKey);\n\n return (\n <Paper\n key={fieldCluster.key}\n variant=\"outlined\"\n sx={{\n backgroundColor: themePreviewControlsClusterBackgroundColor,\n borderColor: themePreviewControlsClusterBorderColor,\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n p: 1.5,\n }}\n >\n <div className=\"flex items-start justify-between gap-12\">\n <Typography variant=\"body2\" fontWeight={700}>\n {fieldCluster.label}\n </Typography>\n {canAutoDerive ? (\n <FormControlLabel\n className=\"m-0\"\n control={\n <Checkbox\n size=\"small\"\n checked={isEditableDerivedFieldCluster}\n onChange={(event) => {\n const nextChecked = event.target.checked;\n\n setEditableDerivedFields((prevState) => ({\n ...prevState,\n [clusterStateKey]: nextChecked,\n }));\n\n if (nextChecked) {\n return;\n }\n\n if (!presetSectionKey || !autoDerivedFieldPaths) {\n return;\n }\n\n onPaletteValuesChange(\n getAutoDerivedUpdates(\n presetSectionKey,\n autoDerivedFieldPaths,\n getThemePreviewPaletteValue(\n settings,\n activeSection,\n autoDerivedFieldPaths.mainPath,\n ),\n ),\n );\n }}\n />\n }\n label={\n <Typography variant=\"caption\" color=\"text.secondary\">\n Edit derived colors\n </Typography>\n }\n />\n ) : null}\n </div>\n <div className=\"grid gap-12\">\n {fieldCluster.fields.map((fieldDefinition) => {\n const isDisabled = autoDerivedFieldPaths && presetSectionKey\n ? !isEditableDerivedFieldCluster &&\n fieldDefinition.path !== autoDerivedFieldPaths.mainPath\n : false;\n\n return (\n <ThemePreviewColorField\n key={fieldDefinition.path}\n disabled={isDisabled}\n definition={fieldDefinition}\n resetVersion={resetVersion}\n sectionKey={activeSection}\n settings={settings}\n onChange={(path, value) => {\n if (\n !autoDerivedFieldPaths ||\n !presetSectionKey ||\n isEditableDerivedFieldCluster ||\n path !== autoDerivedFieldPaths.mainPath\n ) {\n onPaletteValueChange(path, value);\n return;\n }\n\n onPaletteValuesChange([\n { path, value },\n ...getAutoDerivedUpdates(\n presetSectionKey,\n autoDerivedFieldPaths,\n value,\n ),\n ]);\n }}\n onReset={onPaletteValueReset}\n />\n );\n })}\n </div>\n </Paper>\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <ThemeProvider theme={themePreviewControlsTheme}>\n <Box sx={themePreviewControlsSx} className=\"flex h-full min-h-0 flex-col gap-16\">\n <div className=\"grid grid-cols-2 gap-12\">\n {themePreviewSectionOptions.map((sectionOption) => {\n const isActive = sectionOption.key === activeSection;\n\n return (\n <ButtonBase\n key={sectionOption.key}\n onClick={() => onSectionChange(sectionOption.key)}\n className=\"w-full rounded-lg text-left\"\n sx={{\n alignItems: 'flex-start',\n backgroundColor: isActive\n ? themePreviewSelectorStyles.active.backgroundColor\n : themePreviewSelectorStyles.inactive.backgroundColor,\n border: `1px solid ${\n isActive\n ? themePreviewSelectorStyles.active.borderColor\n : themePreviewSelectorStyles.inactive.borderColor\n }`,\n color: isActive\n ? themePreviewSelectorStyles.active.textColor\n : themePreviewSelectorStyles.inactive.textColor,\n p: 2,\n }}\n >\n <div className=\"flex w-full flex-col gap-4\">\n <Typography variant=\"subtitle1\" fontWeight={600}>\n {sectionOption.label}\n </Typography>\n {sectionOption.description ? (\n <Typography\n variant=\"body2\"\n sx={{\n color: isActive\n ? themePreviewSelectorStyles.active.descriptionColor\n : themePreviewSelectorStyles.inactive.descriptionColor,\n }}\n >\n {sectionOption.description}\n </Typography>\n ) : null}\n </div>\n </ButtonBase>\n );\n })}\n </div>\n\n <Paper\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg\"\n sx={{\n backgroundColor: themePreviewControlsPanelBackgroundColor,\n border: `1px solid ${themePreviewControlsPanelBorderColor}`,\n boxShadow: 'none',\n }}\n >\n <div className=\"flex items-center justify-between px-20 py-16\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-14\">\n <Typography variant=\"h6\" sx={{ color: themePreviewControlsTitleColor }}>\n {activeSectionOption?.label}\n </Typography>\n {canSelectPreset ? (\n <div className=\"grid gap-12 md:grid-cols-2\">\n <TextField\n select\n label=\"Mode\"\n value={selectedMode}\n onChange={(event) => {\n onPresetModeChange(event.target.value as ThemePreviewMode);\n }}\n >\n <MenuItem value=\"light\">light</MenuItem>\n <MenuItem value=\"dark\">dark</MenuItem>\n </TextField>\n\n <TextField\n select\n label=\"Preset\"\n value={selectedPresetKey}\n onChange={(event) => {\n onPresetKeyChange(event.target.value);\n }}\n >\n {selectedPresetKey === THEME_PREVIEW_CUSTOM_PRESET_KEY ? (\n <MenuItem value={THEME_PREVIEW_CUSTOM_PRESET_KEY}>custom</MenuItem>\n ) : null}\n {presetMenuItems}\n </TextField>\n </div>\n ) : null}\n </div>\n </div>\n\n <Divider\n sx={{\n borderColor: themePreviewControlsPanelBorderColor,\n }}\n />\n\n <div className=\"flex min-h-0 flex-1 flex-col gap-20 overflow-y-auto px-20 py-20\">\n {fieldGroupPanels.map((fieldGroupPanel) => {\n const isTablePanel = activeSection === 'table' && fieldGroupPanels.length > 1;\n\n if (!isTablePanel) {\n return fieldGroupPanel.fieldGroups.map(renderFieldGroup);\n }\n\n return (\n <Paper\n key={fieldGroupPanel.key}\n variant=\"outlined\"\n sx={{\n backgroundColor: themePreviewControlsSectionPaperBackgroundColor,\n borderColor: themePreviewControlsPanelBorderColor,\n boxShadow: 'none',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n p: 2,\n }}\n >\n {fieldGroupPanel.label ? (\n <Typography variant=\"subtitle1\" fontWeight={700}>\n {fieldGroupPanel.label}\n </Typography>\n ) : null}\n <div className=\"grid gap-20\">\n {fieldGroupPanel.fieldGroups.map(renderFieldGroup)}\n </div>\n </Paper>\n );\n })}\n </div>\n </Paper>\n </Box>\n </ThemeProvider>\n );\n}\n"],"names":["getThemePreviewFieldClusterLabel","prefix","value","__name","getThemePreviewAutoDerivedFieldPaths","fields","mainField","field","lightField","darkField","contrastTextField","getThemePreviewFieldClusters","fieldGroupsByPrefix","acc","prefixCounts","groupedFields","repeatedPrefixes","count","hasStandaloneField","groupedPrefixes","clusterFields","themePreviewSectionOptionByKey","themePreviewSectionOptions","sectionOption","themePreviewSelectorStyles","themePreviewControlsPanelBorderColor","themePreviewControlsClusterBorderColor","themePreviewControlsClusterBackgroundColor","themePreviewControlsPanelBackgroundColor","themePreviewControlsTitleColor","themePreviewControlsMutedTextColor","themePreviewControlsInputBackgroundColor","themePreviewControlsInputBorderColor","themePreviewControlsInputHoverBorderColor","themePreviewControlsInputFocusBorderColor","themePreviewControlsButtonBorderColor","themePreviewControlsButtonHoverBackgroundColor","themePreviewControlsSectionPaperBackgroundColor","themePreviewControlsTheme","createTheme","themePreviewControlsSx","themePreviewCuratedPresetKeySet","toolbarCuratedPresetKeys","designSystemPresetKeys","themePreviewTableFieldGroupKeySet","ThemePreviewControls","activeSection","presetOptions","selectedMode","selectedPresetKey","settings","resetVersion","onSectionChange","onPaletteValueChange","onPaletteValuesChange","onPaletteValueReset","onPaletteValuesReset","onPresetKeyChange","onPresetModeChange","editableDerivedFields","setEditableDerivedFields","useState","canSelectPreset","isThemePreviewCustomSection","presetSectionKey","presetOptionsByMode","useMemo","getThemePreviewPresetOptionsByMode","firstLegacyPresetKey","_a","presetOption","fieldGroups","themePreviewFieldGroupsBySection","fieldGroupsWithClusters","fieldGroup","fieldGroupPanels","tableFieldGroups","tableBaseGroups","panel","activeSectionOption","presetMenuItems","items","jsx","Divider","MenuItem","getAutoDerivedUpdates","sectionKey","autoDerivedFieldPaths","mainValue","commonWhite","getThemePreviewPaletteValue","commonBlack","derivedValues","deriveThemePreviewPaletteGroupValues","item","renderFieldGroup","groupResetPaths","fieldCluster","fieldDefinition","jsxs","Typography","IconButton","RestartAltOutlinedIcon","ThemePreviewColorField","clusterStateKey","isEditableDerivedFieldCluster","canAutoDerive","Paper","FormControlLabel","Checkbox","event","nextChecked","prevState","isDisabled","path","ThemeProvider","Box","isActive","ButtonBase","TextField","THEME_PREVIEW_CUSTOM_PRESET_KEY","fieldGroupPanel"],"mappings":";;;;;;;;;;;;AAiEA,SAASA,GAAiCC,GAAgB;AACxD,SAAOA,EACJ,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,MAAM,CAACC,MAAUA,EAAM,YAAA,CAAa;AACjD;AAJSC,EAAAH,IAAA;AAMT,SAASI,GACPC,GAC0C;AAC1C,QAAMC,IAAYD,EAAO,KAAK,CAACE,MAAUA,EAAM,KAAK,SAAS,OAAO,CAAC,GAC/DC,IAAaH,EAAO,KAAK,CAACE,MAAUA,EAAM,KAAK,SAAS,QAAQ,CAAC,GACjEE,IAAYJ,EAAO,KAAK,CAACE,MAAUA,EAAM,KAAK,SAAS,OAAO,CAAC,GAC/DG,IAAoBL,EAAO,KAAK,CAACE,MAAUA,EAAM,KAAK,SAAS,eAAe,CAAC;AAErF,SAAI,CAACD,KAAc,CAACE,KAAc,CAACC,KAAa,CAACC,IACxC,OAGF;AAAA,IACL,UAAUJ,EAAU;AAAA,IACpB,WAAWE,KAAA,gBAAAA,EAAY;AAAA,IACvB,UAAUC,KAAA,gBAAAA,EAAW;AAAA,IACrB,kBAAkBC,KAAA,gBAAAA,EAAmB;AAAA,EAAA;AAEzC;AAlBSP,EAAAC,IAAA;AAoBT,SAASO,GAA6BN,GAAuC;AAC3E,QAAMO,IAAsBP,EAAO;AAAA,IACjC,CAACQ,GAAKN,MAAU;AACd,YAAMN,IAASM,EAAM,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK;AAE3C,aAAKN,MAIAY,EAAIZ,CAAM,MACbY,EAAIZ,CAAM,IAAI,CAAA,IAGhBY,EAAIZ,CAAM,EAAE,KAAKM,CAAK,IACfM;AAAA,IACT;AAAA,IACA,CAAA;AAAA,EAAC,GAEGC,IAAe,OAAO;AAAA,IAC1B,OAAO,QAAQF,CAAmB,EAAE,IAAI,CAAC,CAACX,GAAQc,CAAa,MAAM;AAAA,MACnEd;AAAA,MACAc,EAAc;AAAA,IAAA,CACf;AAAA,EAAA,GAEGC,IAAmB,IAAI;AAAA,IAC3B,OAAO,QAAQF,CAAY,EACxB,OAAO,CAAC,CAAA,EAAGG,CAAK,MAAMA,IAAQ,CAAC,EAC/B,IAAI,CAAC,CAAChB,CAAM,MAAMA,CAAM;AAAA,EAAA,GAEvBiB,IAAqBb,EAAO;AAAA,IAChC,CAACE,MAAU,CAACS,EAAiB,IAAIT,EAAM,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE;AAAA,EAAA;AAIjE,MAAI,EAF4BS,EAAiB,OAAO,KAAKE;AAG3D,WAAOb,EAAO,IAA8B,CAACE,OAAW;AAAA,MACtD,KAAKA,EAAM;AAAA,MACX,QAAQ,CAACA,CAAK;AAAA,IAAA,EACd;AAGJ,QAAMY,wBAAsB,IAAA;AAE5B,SAAOd,EAAO,OAAmC,CAACQ,GAAKN,MAAU;AAC/D,UAAMN,IAASM,EAAM,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK;AAE3C,QAAI,CAACS,EAAiB,IAAIf,CAAM;AAC9B,aAAAY,EAAI,KAAK;AAAA,QACP,KAAKN,EAAM;AAAA,QACX,QAAQ,CAACA,CAAK;AAAA,MAAA,CACf,GACMM;AAGT,QAAIM,EAAgB,IAAIlB,CAAM;AAC5B,aAAOY;AAGT,IAAAM,EAAgB,IAAIlB,CAAM;AAC1B,UAAMmB,IAAgBR,EAAoBX,CAAM,KAAK,CAACM,CAAK;AAE3D,WAAAM,EAAI,KAAK;AAAA,MACP,KAAKZ;AAAA,MACL,OAAOD,GAAiCC,CAAM;AAAA,MAC9C,QAAQmB;AAAA,MACR,uBAAuBhB,GAAqCgB,CAAa,KAAK;AAAA,IAAA,CAC/E,GAEMP;AAAA,EACT,GAAG,CAAA,CAAE;AACP;AAtESV,EAAAQ,IAAA;AAwET,MAAMU,KAAiC,OAAO;AAAA,EAC5CC,EAA2B,IAAI,CAACC,MAAkB,CAACA,EAAc,KAAKA,CAAa,CAAC;AACtF,GACMC,IAA6B;AAAA,EACjC,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,WAAW;AAAA,EAAA;AAAA,EAEb,UAAU;AAAA,IACR,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,WAAW;AAAA,EAAA;AAEf,GACMC,IAAuC,WACvCC,KAAyC,WACzCC,KAA6C,WAC7CC,IAA2C,WAC3CC,IAAiC,WACjCC,IAAqC,WACrCC,IAA2C,WAC3CC,KAAuC,WACvCC,KAA4C,WAC5CC,IAA4C,WAC5CC,IAAwC,WACxCC,KAAiD,WACjDC,KAAkD,WAElDC,KAA4BC,GAAY;AAAA,EAC5C,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAASX;AAAA,MACT,OAAOA;AAAA,IAAA;AAAA,IAET,SAASH;AAAA,IACT,SAAS;AAAA,MACP,MAAMS;AAAA,IAAA;AAAA,IAER,WAAW;AAAA,MACT,MAAMA;AAAA,IAAA;AAAA,IAER,MAAM;AAAA,MACJ,SAASL;AAAA,MACT,WAAWC;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,YAAY;AAAA,IACV,cAAc;AAAA,IACd,UAAU;AAAA,IACV,OAAO;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,IAEZ,OAAO;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,EACZ;AAEJ,CAAC,GAEKU,KAAyB;AAAA,EAC7B,OAAOX;AAAA,EACP,6BAA6B;AAAA,IAC3B,OAAOC;AAAA,EAAA;AAAA,EAET,6BAA6B;AAAA,IAC3B,OAAOA;AAAA,EAAA;AAAA,EAET,yBAAyB;AAAA,IACvB,OAAOA;AAAA,EAAA;AAAA,EAET,qCAAqC;AAAA,IACnC,OAAOD;AAAA,EAAA;AAAA,EAET,yBAAyB;AAAA,IACvB,OAAOA;AAAA,EAAA;AAAA,EAET,4BAA4B;AAAA,IAC1B,iBAAiBE;AAAA,IACjB,OAAOF;AAAA,IACP,cAAc;AAAA,MACZ,aAAaG;AAAA,IAAA;AAAA,IAEf,oBAAoB;AAAA,MAClB,aAAaC;AAAA,IAAA;AAAA,IAEf,0BAA0B;AAAA,MACxB,aAAaC;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,qBAAqB;AAAA,IACnB,OAAOJ;AAAA,EAAA;AAAA,EAET,yBAAyB;AAAA,IACvB,iBAAiBC;AAAA,IACjB,aAAaI;AAAA,IACb,OAAON;AAAA,IACP,WAAW;AAAA,MACT,iBAAiBO;AAAA,MACjB,aAAaD;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,uBAAuB;AAAA,IACrB,OAAOL;AAAA,EAAA;AAAA,EAET,mCAAmC;AAAA,IACjC,OAAOI;AAAA,EAAA;AAAA,EAET,sBAAsB;AAAA,IACpB,aAAaT;AAAA,EAAA;AAEjB,GACMgB,yBAAsC,IAAY;AAAA,EACtD,GAAGC;AAAA,EACH,GAAGC;AACL,CAAC,GACKC,IAAoC,oBAAI,IAAI,CAAC,oBAAoB,gBAAgB,CAAC;AAkBjF,SAASC,GAAqB;AAAA,EACnC,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,oBAAAC;AACF,GAA8B;AAC5B,QAAM,CAACC,IAAuBC,EAAwB,IAAIC,GAAkC,CAAA,CAAE,GACxFC,IAAkB,CAACC,GAA4BjB,CAAa,GAC5DkB,IAAmBF,IAAmBhB,IAAiD,MACvFmB,IAAsBC;AAAA,IAC1B,MACEJ,KAAmBE,IACfG,GAAmCpB,GAAeiB,GAAkBhB,CAAY,IAChF,CAAA;AAAA,IACN,CAACc,GAAiBf,GAAeiB,GAAkBhB,CAAY;AAAA,EAAA,GAE3DoB,IAAuBF;AAAA,IAC3B,MAAA;;AACE,cAAAG,IAAAJ,EAAoB;AAAA,QAClB,CAACK,MAAiB,CAAC7B,GAAgC,IAAI6B,EAAa,GAAG;AAAA,MAAA,MADzE,gBAAAD,EAEG;AAAA;AAAA,IACL,CAACJ,CAAmB;AAAA,EAAA,GAEhBM,IAAcC,GAAiC1B,CAAa,GAC5D2B,IAA0BP;AAAA,IAC9B,MACEK,EAAY,IAAI,CAACG,OAAgB;AAAA,MAC/B,GAAGA;AAAA,MACH,eAAe/D,GAA6B+D,EAAW,MAAM;AAAA,IAAA,EAC7D;AAAA,IACJ,CAACH,CAAW;AAAA,EAAA,GAERI,IAAmBT,EAAuC,MAAM;AACpE,QAAIpB,MAAkB;AACpB,aAAO;AAAA,QACL;AAAA,UACE,KAAKA;AAAA,UACL,aAAa2B;AAAA,QAAA;AAAA,MACf;AAIJ,UAAMG,IAAmBH,EAAwB;AAAA,MAAO,CAACC,MACvD9B,EAAkC,IAAI8B,EAAW,GAAG;AAAA,IAAA,GAEhDG,IAAkBJ,EAAwB;AAAA,MAC9C,CAACC,MAAe,CAAC9B,EAAkC,IAAI8B,EAAW,GAAG;AAAA,IAAA;AAGvE,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,aAAaE;AAAA,MAAA;AAAA,MAEf;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,aAAaC;AAAA,MAAA;AAAA,IACf,EACA,OAAO,CAACC,MAAUA,EAAM,YAAY,SAAS,CAAC;AAAA,EAClD,GAAG,CAAChC,GAAe2B,CAAuB,CAAC,GACrCM,IAAsB1D,GAA+ByB,CAAa,GAClEkC,KAAkBd;AAAA,IACtB,MACED,EAAoB,QAAQ,CAACK,MAAiB;AAC5C,YAAMW,IAAQ,CAAA;AAEd,aAAIX,EAAa,QAAQF,KACvBa,EAAM;AAAA,QACJ,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,WAAU;AAAA,YACV,IAAI;AAAA,cACF,OAAOrD;AAAA,cACP,UAAU;AAAA,cACV,IAAI;AAAA,YAAA;AAAA,YAEP,UAAA;AAAA,UAAA;AAAA,UATK;AAAA,QAAA;AAAA,MAWN,GAIJmD,EAAM;AAAA,QACJ,gBAAAC,EAACE,KAAgC,OAAOd,EAAa,KAClD,UAAAA,EAAa,SADDA,EAAa,GAE5B;AAAA,MAAA,GAGKW;AAAA,IACT,CAAC;AAAA,IACH,CAACb,GAAsBH,CAAmB;AAAA,EAAA,GAGtCoB,IAAwB,gBAAAlF,EAAA,CAC5BmF,GACAC,GACAC,MACG;AACH,UAAMC,IACJC,EAA4BxC,GAAUoC,GAAY,cAAc,KAAK,WACjEK,IACJD,EAA4BxC,GAAUoC,GAAY,cAAc,KAAK,WACjEM,IAAgBC,GAAqCL,GAAW;AAAA,MACpE,gBAAgBC;AAAA,MAChB,gBAAgBE;AAAA,IAAA,CACjB;AAED,WAAKC,IAIE;AAAA,MACLL,EAAsB,YAClB,EAAE,MAAMA,EAAsB,WAAW,OAAOK,EAAc,MAAA,IAC9D;AAAA,MACJL,EAAsB,WAClB,EAAE,MAAMA,EAAsB,UAAU,OAAOK,EAAc,KAAA,IAC7D;AAAA,MACJL,EAAsB,mBAClB,EAAE,MAAMA,EAAsB,kBAAkB,OAAOK,EAAc,iBACrE;AAAA,IAAA,EACJ,OAAO,CAACE,MAAkD,EAAQA,CAAK,IAbhE,CAAA;AAAA,EAcX,GA7B8B,0BA+BxBC,IAAmB,gBAAA5F,EAAA,CAACuE,MAAmD;AAC3E,UAAMsB,IAAkBtB,EAAW,cAAc;AAAA,MAAQ,CAACuB,MACxDA,EAAa,OAAO,IAAI,CAACC,MAAoBA,EAAgB,IAAI;AAAA,IAAA;AAGnE,WACE,gBAAAC,EAAC,OAAA,EAAyB,WAAU,wBACjC,UAAA;AAAA,MAAAzB,EAAW,QACV,gBAAAyB,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,QAAA,gBAAAjB,EAACkB,KAAW,SAAQ,aAAY,YAAY,KACzC,YAAW,OACd;AAAA,QACA,gBAAAlB;AAAA,UAACmB;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY,GAAG3B,EAAW,KAAK;AAAA,YAC/B,SAAS,gBAAAvE,EAAA,MAAM;AACb,cAAAqD,EAAqBwC,CAAe;AAAA,YACtC,GAFS;AAAA,YAGT,IAAI;AAAA,cACF,QAAQ,aAAahE,EAAoC;AAAA,cACzD,cAAc;AAAA,cACd,OAAOF;AAAA,cACP,GAAG;AAAA,YAAA;AAAA,YAGL,4BAACwE,IAAA,EAAuB,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,UAAA;AAAA,QAAA;AAAA,MAChD,EAAA,CACF,IACE;AAAA,MACJ,gBAAApB,EAAC,SAAI,WAAU,eACZ,YAAW,cAAc,IAAI,CAACe,MAAiB;AAC9C,YAAI,CAACA,EAAa;AAChB,iBAAOA,EAAa,OAAO,IAAI,CAACC,MAC9B,gBAAAhB;AAAA,YAACqB;AAAA,YAAA;AAAA,cAEC,YAAYL;AAAA,cACZ,cAAA/C;AAAA,cACA,YAAYL;AAAA,cACZ,UAAAI;AAAA,cACA,UAAUG;AAAA,cACV,SAASE;AAAA,YAAA;AAAA,YANJ2C,EAAgB;AAAA,UAAA,CAQxB;AAGH,cAAMM,IAAkB,GAAG1D,CAAa,IAAI4B,EAAW,GAAG,IAAIuB,EAAa,GAAG,IACxEQ,IAAgC,EACpC9C,GAAsB6C,CAAe,GAEjCjB,IAAwBU,EAAa,uBACrCS,IAAgB,GAAQnB,KAAyBvB;AAEvD,eACE,gBAAAmC;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,SAAQ;AAAA,YACR,IAAI;AAAA,cACF,iBAAiBhF;AAAA,cACjB,aAAaD;AAAA,cACb,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,cACL,GAAG;AAAA,YAAA;AAAA,YAGL,UAAA;AAAA,cAAA,gBAAAyE,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,gBAAA,gBAAAjB,EAACkB,KAAW,SAAQ,SAAQ,YAAY,KACrC,YAAa,OAChB;AAAA,gBACCM,IACC,gBAAAxB;AAAA,kBAAC0B;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SACE,gBAAA1B;AAAA,sBAAC2B;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,SAASJ;AAAA,wBACT,UAAU,gBAAAtG,EAAA,CAAC2G,MAAU;AACnB,gCAAMC,IAAcD,EAAM,OAAO;AAOjC,0BALAlD,GAAyB,CAACoD,OAAe;AAAA,4BACvC,GAAGA;AAAA,4BACH,CAACR,CAAe,GAAGO;AAAA,0BAAA,EACnB,GAEE,CAAAA,MAIA,CAAC/C,KAAoB,CAACuB,KAI1BjC;AAAA,4BACE+B;AAAA,8BACErB;AAAA,8BACAuB;AAAA,8BACAG;AAAA,gCACExC;AAAA,gCACAJ;AAAA,gCACAyC,EAAsB;AAAA,8BAAA;AAAA,4BACxB;AAAA,0BACF;AAAA,wBAEJ,GA3BU;AAAA,sBA2BV;AAAA,oBAAA;AAAA,oBAGJ,OACE,gBAAAL,EAACkB,GAAA,EAAW,SAAQ,WAAU,OAAM,kBAAiB,UAAA,sBAAA,CAErD;AAAA,kBAAA;AAAA,gBAAA,IAGF;AAAA,cAAA,GACN;AAAA,cACA,gBAAAlB,EAAC,SAAI,WAAU,eACZ,YAAa,OAAO,IAAI,CAACgB,MAAoB;AAC5C,sBAAMe,IAAa1B,KAAyBvB,IACxC,CAACyC,KACDP,EAAgB,SAASX,EAAsB,WAC/C;AAEJ,uBACE,gBAAAL;AAAA,kBAACqB;AAAA,kBAAA;AAAA,oBAEC,UAAUU;AAAA,oBACV,YAAYf;AAAA,oBACZ,cAAA/C;AAAA,oBACA,YAAYL;AAAA,oBACZ,UAAAI;AAAA,oBACA,UAAU,gBAAA/C,EAAA,CAAC+G,GAAMhH,MAAU;AACzB,0BACE,CAACqF,KACD,CAACvB,KACDyC,KACAS,MAAS3B,EAAsB,UAC/B;AACA,wBAAAlC,EAAqB6D,GAAMhH,CAAK;AAChC;AAAA,sBACF;AAEA,sBAAAoD,EAAsB;AAAA,wBACpB,EAAE,MAAA4D,GAAM,OAAAhH,EAAA;AAAA,wBACR,GAAGmF;AAAA,0BACDrB;AAAA,0BACAuB;AAAA,0BACArF;AAAA,wBAAA;AAAA,sBACF,CACD;AAAA,oBACH,GAnBU;AAAA,oBAoBV,SAASqD;AAAA,kBAAA;AAAA,kBA1BJ2C,EAAgB;AAAA,gBAAA;AAAA,cA6B3B,CAAC,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAnGKD,EAAa;AAAA,QAAA;AAAA,MAsGxB,CAAC,EAAA,CACH;AAAA,IAAA,EAAA,GAvJQvB,EAAW,GAwJrB;AAAA,EAEJ,GAhKyB;AAkKzB,SACE,gBAAAQ,EAACiC,MAAc,OAAO7E,IACpB,4BAAC8E,IAAA,EAAI,IAAI5E,IAAwB,WAAU,uCACzC,UAAA;AAAA,IAAA,gBAAA0C,EAAC,SAAI,WAAU,2BACZ,UAAA5D,EAA2B,IAAI,CAACC,MAAkB;AACjD,YAAM8F,IAAW9F,EAAc,QAAQuB;AAEvC,aACE,gBAAAoC;AAAA,QAACoC;AAAA,QAAA;AAAA,UAEC,SAAS,gBAAAnH,EAAA,MAAMiD,EAAgB7B,EAAc,GAAG,GAAvC;AAAA,UACT,WAAU;AAAA,UACV,IAAI;AAAA,YACF,YAAY;AAAA,YACZ,iBAAiB8F,IACb7F,EAA2B,OAAO,kBAClCA,EAA2B,SAAS;AAAA,YACxC,QAAQ,aACN6F,IACI7F,EAA2B,OAAO,cAClCA,EAA2B,SAAS,WAC1C;AAAA,YACA,OAAO6F,IACH7F,EAA2B,OAAO,YAClCA,EAA2B,SAAS;AAAA,YACxC,GAAG;AAAA,UAAA;AAAA,UAGL,UAAA,gBAAA2E,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,YAAA,gBAAAjB,EAACkB,KAAW,SAAQ,aAAY,YAAY,KACzC,YAAc,OACjB;AAAA,YACC7E,EAAc,cACb,gBAAA2D;AAAA,cAACkB;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,IAAI;AAAA,kBACF,OAAOiB,IACH7F,EAA2B,OAAO,mBAClCA,EAA2B,SAAS;AAAA,gBAAA;AAAA,gBAGzC,UAAAD,EAAc;AAAA,cAAA;AAAA,YAAA,IAEf;AAAA,UAAA,EAAA,CACN;AAAA,QAAA;AAAA,QAnCKA,EAAc;AAAA,MAAA;AAAA,IAsCzB,CAAC,EAAA,CACH;AAAA,IAEA,gBAAA4E;AAAA,MAACQ;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAI;AAAA,UACF,iBAAiB/E;AAAA,UACjB,QAAQ,aAAaH,CAAoC;AAAA,UACzD,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA;AAAA,UAAA,gBAAAyD,EAAC,SAAI,WAAU,iDACb,UAAA,gBAAAiB,EAAC,OAAA,EAAI,WAAU,uCACb,UAAA;AAAA,YAAA,gBAAAjB,EAACkB,GAAA,EAAW,SAAQ,MAAK,IAAI,EAAE,OAAOvE,EAAA,GACnC,UAAAkD,KAAA,gBAAAA,EAAqB,MAAA,CACxB;AAAA,YACCjB,IACC,gBAAAqC,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,cAAA,gBAAAA;AAAA,gBAACoB;AAAA,gBAAA;AAAA,kBACC,QAAM;AAAA,kBACN,OAAM;AAAA,kBACN,OAAOvE;AAAA,kBACP,UAAU,gBAAA7C,EAAA,CAAC2G,MAAU;AACnB,oBAAApD,GAAmBoD,EAAM,OAAO,KAAyB;AAAA,kBAC3D,GAFU;AAAA,kBAIV,UAAA;AAAA,oBAAA,gBAAA5B,EAACE,GAAA,EAAS,OAAM,SAAQ,UAAA,SAAK;AAAA,oBAC7B,gBAAAF,EAACE,GAAA,EAAS,OAAM,QAAO,UAAA,OAAA,CAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAG7B,gBAAAe;AAAA,gBAACoB;AAAA,gBAAA;AAAA,kBACC,QAAM;AAAA,kBACN,OAAM;AAAA,kBACN,OAAOtE;AAAA,kBACP,UAAU,gBAAA9C,EAAA,CAAC2G,MAAU;AACnB,oBAAArD,GAAkBqD,EAAM,OAAO,KAAK;AAAA,kBACtC,GAFU;AAAA,kBAIT,UAAA;AAAA,oBAAA7D,MAAsBuE,IACrB,gBAAAtC,EAACE,GAAA,EAAS,OAAOoC,GAAiC,oBAAM,IACtD;AAAA,oBACHxC;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH,EAAA,CACF,IACE;AAAA,UAAA,EAAA,CACN,EAAA,CACF;AAAA,UAEA,gBAAAE;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,aAAa1D;AAAA,cAAA;AAAA,YACf;AAAA,UAAA;AAAA,4BAGD,OAAA,EAAI,WAAU,mEACZ,UAAAkD,EAAiB,IAAI,CAAC8C,MACA3E,MAAkB,WAAW6B,EAAiB,SAAS,IAO1E,gBAAAwB;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,SAAQ;AAAA,cACR,IAAI;AAAA,gBACF,iBAAiBtE;AAAA,gBACjB,aAAaZ;AAAA,gBACb,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,eAAe;AAAA,gBACf,KAAK;AAAA,gBACL,GAAG;AAAA,cAAA;AAAA,cAGJ,UAAA;AAAA,gBAAAgG,EAAgB,0BACdrB,GAAA,EAAW,SAAQ,aAAY,YAAY,KACzC,UAAAqB,EAAgB,MAAA,CACnB,IACE;AAAA,gBACJ,gBAAAvC,EAAC,SAAI,WAAU,eACZ,YAAgB,YAAY,IAAIa,CAAgB,EAAA,CACnD;AAAA,cAAA;AAAA,YAAA;AAAA,YAnBK0B,EAAgB;AAAA,UAAA,IALhBA,EAAgB,YAAY,IAAI1B,CAAgB,CA2B1D,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ;AAtbgB5F,EAAA0C,IAAA;"}