@owp/core 2.5.9 → 2.5.11

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 (91) 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/index16.js +4 -4
  7. package/dist/_virtual/index17.js +4 -4
  8. package/dist/_virtual/index18.js +4 -4
  9. package/dist/_virtual/index19.js +4 -4
  10. package/dist/_virtual/index20.js +2 -2
  11. package/dist/_virtual/index21.js +2 -2
  12. package/dist/_virtual/index22.js +2 -2
  13. package/dist/_virtual/index5.js +2 -2
  14. package/dist/components/OwpTable/OwpFieldTable.js +108 -92
  15. package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
  16. package/dist/components/OwpTable/OwpTable.js +161 -141
  17. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  18. package/dist/components/OwpTable/internal/FieldTableValue.js +43 -0
  19. package/dist/components/OwpTable/internal/FieldTableValue.js.map +1 -0
  20. package/dist/components/OwpTable/internal/defaultTableStyle.js +13 -10
  21. package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
  22. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +170 -169
  23. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  24. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +195 -147
  25. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  26. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +79 -76
  27. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  28. package/dist/configs/defaultConfig.js +110 -70
  29. package/dist/configs/defaultConfig.js.map +1 -1
  30. package/dist/constants/tableTheme.js +7 -6
  31. package/dist/constants/tableTheme.js.map +1 -1
  32. package/dist/features/themePreview/components/ThemePreviewCanvas.js +275 -273
  33. package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
  34. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js +552 -316
  35. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js.map +1 -1
  36. package/dist/features/themePreview/components/ThemePreviewColorField.js +227 -202
  37. package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
  38. package/dist/features/themePreview/components/ThemePreviewControls.js +270 -220
  39. package/dist/features/themePreview/components/ThemePreviewControls.js.map +1 -1
  40. package/dist/features/themePreview/components/themePreviewCanvas.shared.js +38 -38
  41. package/dist/features/themePreview/components/themePreviewCanvas.shared.js.map +1 -1
  42. package/dist/features/themePreview/configs/settings.js +33 -20
  43. package/dist/features/themePreview/configs/settings.js.map +1 -1
  44. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +227 -220
  45. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
  46. package/dist/features/themePreview/hooks/useThemePreview.js +250 -226
  47. package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
  48. package/dist/features/themePreview/utils/themePreviewDefinitions.js +63 -30
  49. package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
  50. package/dist/features/themePreview/utils/themePreviewSettings.js +188 -151
  51. package/dist/features/themePreview/utils/themePreviewSettings.js.map +1 -1
  52. package/dist/features/themePreview.js +18 -17
  53. package/dist/layout/components/navbar/NavbarToggleButton.js +46 -42
  54. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  55. package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
  56. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js +1 -1
  57. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js +1 -1
  58. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  59. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  60. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  61. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  62. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  63. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  64. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  65. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  66. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  67. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  68. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  69. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  70. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  71. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  72. package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
  73. package/dist/owp-app.css +1 -1
  74. package/dist/types/components/OwpTable/OwpFieldTable.d.ts +7 -3
  75. package/dist/types/components/OwpTable/OwpTable.d.ts +3 -1
  76. package/dist/types/components/OwpTable/internal/FieldTableValue.d.ts +17 -0
  77. package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +3 -0
  78. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
  79. package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
  80. package/dist/types/configs/defaultConfig.d.ts +42 -3
  81. package/dist/types/constants/tableTheme.d.ts +1 -0
  82. package/dist/types/features/themePreview/components/ThemePreviewCanvasSections.d.ts +8 -0
  83. package/dist/types/features/themePreview/components/themePreviewCanvas.shared.d.ts +3 -3
  84. package/dist/types/features/themePreview/configs/settings.d.ts +12 -0
  85. package/dist/types/features/themePreview/utils/index.d.ts +1 -1
  86. package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +11 -1
  87. package/dist/types/index.d.ts +1 -0
  88. package/dist/types/types/OwpMuiThemeTypes.d.ts +9 -0
  89. package/dist/types/types/OwpTableThemeTypes.d.ts +1 -0
  90. package/dist/types/types/index.d.ts +1 -0
  91. 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 { useEffect, useMemo, useRef, 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';\nconst themePreviewLinkedColorEditMessage =\n '특별한 경우가 아니면 연동 색상 편집은 권장하지 않습니다.\\n\\nPrimary Main 값을 선택하면 Light, Dark, Contrast 값이 자동으로 채워집니다.\\n특수한 디자인 조정이 필요한 경우에만 직접 편집하세요.';\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 editScrollContainerRef = useRef<HTMLDivElement | null>(null);\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 useEffect(() => {\n if (!editScrollContainerRef.current) {\n return;\n }\n\n editScrollContainerRef.current.scrollTop = 0;\n }, [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 if (nextChecked) {\n const canEnableLinkedColorEdit = window.confirm(\n themePreviewLinkedColorEditMessage,\n );\n\n if (!canEnableLinkedColorEdit) {\n return;\n }\n }\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 연동 색상 편집\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\n ref={editScrollContainerRef}\n className=\"flex min-h-0 flex-1 flex-col gap-20 overflow-y-auto px-20 py-20\"\n >\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","themePreviewLinkedColorEditMessage","themePreviewControlsTheme","createTheme","themePreviewControlsSx","themePreviewCuratedPresetKeySet","toolbarCuratedPresetKeys","designSystemPresetKeys","themePreviewTableFieldGroupKeySet","ThemePreviewControls","activeSection","presetOptions","selectedMode","selectedPresetKey","settings","resetVersion","onSectionChange","onPaletteValueChange","onPaletteValuesChange","onPaletteValueReset","onPaletteValuesReset","onPresetKeyChange","onPresetModeChange","editableDerivedFields","setEditableDerivedFields","useState","editScrollContainerRef","useRef","canSelectPreset","isThemePreviewCustomSection","presetSectionKey","presetOptionsByMode","useMemo","getThemePreviewPresetOptionsByMode","firstLegacyPresetKey","_a","presetOption","fieldGroups","themePreviewFieldGroupsBySection","fieldGroupsWithClusters","fieldGroup","fieldGroupPanels","tableFieldGroups","tableBaseGroups","panel","activeSectionOption","presetMenuItems","items","jsx","Divider","MenuItem","useEffect","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,GAA2B,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,WAClDC,KACJ;AAAA;AAAA;AAAA,iCAEIC,KAA4BC,GAAY;AAAA,EAC5C,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,MACV,SAASZ;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,GAEKW,KAAyB;AAAA,EAC7B,OAAOZ;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,GACMiB,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,IAAyBC,GAA8B,IAAI,GAC3DC,IAAkB,CAACC,GAA4BnB,CAAa,GAC5DoB,IAAmBF,IAAmBlB,IAAiD,MACvFqB,IAAsBC;AAAA,IAC1B,MACEJ,KAAmBE,IACfG,GAAmCtB,GAAemB,GAAkBlB,CAAY,IAChF,CAAA;AAAA,IACN,CAACgB,GAAiBjB,GAAemB,GAAkBlB,CAAY;AAAA,EAAA,GAE3DsB,IAAuBF;AAAA,IAC3B,MAAA;;AACE,cAAAG,IAAAJ,EAAoB;AAAA,QAClB,CAACK,MAAiB,CAAC/B,GAAgC,IAAI+B,EAAa,GAAG;AAAA,MAAA,MADzE,gBAAAD,EAEG;AAAA;AAAA,IACL,CAACJ,CAAmB;AAAA,EAAA,GAEhBM,IAAcC,GAAiC5B,CAAa,GAC5D6B,IAA0BP;AAAA,IAC9B,MACEK,EAAY,IAAI,CAACG,OAAgB;AAAA,MAC/B,GAAGA;AAAA,MACH,eAAelE,GAA6BkE,EAAW,MAAM;AAAA,IAAA,EAC7D;AAAA,IACJ,CAACH,CAAW;AAAA,EAAA,GAERI,IAAmBT,EAAuC,MAAM;AACpE,QAAItB,MAAkB;AACpB,aAAO;AAAA,QACL;AAAA,UACE,KAAKA;AAAA,UACL,aAAa6B;AAAA,QAAA;AAAA,MACf;AAIJ,UAAMG,IAAmBH,EAAwB;AAAA,MAAO,CAACC,MACvDhC,EAAkC,IAAIgC,EAAW,GAAG;AAAA,IAAA,GAEhDG,IAAkBJ,EAAwB;AAAA,MAC9C,CAACC,MAAe,CAAChC,EAAkC,IAAIgC,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,CAAClC,GAAe6B,CAAuB,CAAC,GACrCM,IAAsB7D,GAA+B0B,CAAa,GAClEoC,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,OAAOxD;AAAA,cACP,UAAU;AAAA,cACV,IAAI;AAAA,YAAA;AAAA,YAEP,UAAA;AAAA,UAAA;AAAA,UATK;AAAA,QAAA;AAAA,MAWN,GAIJsD,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;AAG5C,EAAAoB,GAAU,MAAM;AACd,IAAKzB,EAAuB,YAI5BA,EAAuB,QAAQ,YAAY;AAAA,EAC7C,GAAG,CAAChB,CAAa,CAAC;AAElB,QAAM0C,IAAwB,gBAAAtF,EAAA,CAC5BuF,GACAC,GACAC,MACG;AACH,UAAMC,IACJC,EAA4B3C,GAAUuC,GAAY,cAAc,KAAK,WACjEK,IACJD,EAA4B3C,GAAUuC,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,gBAAAhG,EAAA,CAAC0E,MAAmD;AAC3E,UAAMuB,IAAkBvB,EAAW,cAAc;AAAA,MAAQ,CAACwB,MACxDA,EAAa,OAAO,IAAI,CAACC,MAAoBA,EAAgB,IAAI;AAAA,IAAA;AAGnE,WACE,gBAAAC,EAAC,OAAA,EAAyB,WAAU,wBACjC,UAAA;AAAA,MAAA1B,EAAW,QACV,gBAAA0B,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,QAAA,gBAAAlB,EAACmB,KAAW,SAAQ,aAAY,YAAY,KACzC,YAAW,OACd;AAAA,QACA,gBAAAnB;AAAA,UAACoB;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY,GAAG5B,EAAW,KAAK;AAAA,YAC/B,SAAS,gBAAA1E,EAAA,MAAM;AACb,cAAAsD,EAAqB2C,CAAe;AAAA,YACtC,GAFS;AAAA,YAGT,IAAI;AAAA,cACF,QAAQ,aAAapE,EAAoC;AAAA,cACzD,cAAc;AAAA,cACd,OAAOF;AAAA,cACP,GAAG;AAAA,YAAA;AAAA,YAGL,4BAAC4E,IAAA,EAAuB,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,UAAA;AAAA,QAAA;AAAA,MAChD,EAAA,CACF,IACE;AAAA,MACJ,gBAAArB,EAAC,SAAI,WAAU,eACZ,YAAW,cAAc,IAAI,CAACgB,MAAiB;AAC9C,YAAI,CAACA,EAAa;AAChB,iBAAOA,EAAa,OAAO,IAAI,CAACC,MAC9B,gBAAAjB;AAAA,YAACsB;AAAA,YAAA;AAAA,cAEC,YAAYL;AAAA,cACZ,cAAAlD;AAAA,cACA,YAAYL;AAAA,cACZ,UAAAI;AAAA,cACA,UAAUG;AAAA,cACV,SAASE;AAAA,YAAA;AAAA,YANJ8C,EAAgB;AAAA,UAAA,CAQxB;AAGH,cAAMM,IAAkB,GAAG7D,CAAa,IAAI8B,EAAW,GAAG,IAAIwB,EAAa,GAAG,IACxEQ,IAAgC,EACpCjD,GAAsBgD,CAAe,GAEjCjB,IAAwBU,EAAa,uBACrCS,IAAgB,GAAQnB,KAAyBxB;AAEvD,eACE,gBAAAoC;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,SAAQ;AAAA,YACR,IAAI;AAAA,cACF,iBAAiBpF;AAAA,cACjB,aAAaD;AAAA,cACb,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,cACL,GAAG;AAAA,YAAA;AAAA,YAGL,UAAA;AAAA,cAAA,gBAAA6E,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,gBAAA,gBAAAlB,EAACmB,KAAW,SAAQ,SAAQ,YAAY,KACrC,YAAa,OAChB;AAAA,gBACCM,IACC,gBAAAzB;AAAA,kBAAC2B;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SACE,gBAAA3B;AAAA,sBAAC4B;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,SAASJ;AAAA,wBACT,UAAU,gBAAA1G,EAAA,CAAC+G,MAAU;AACnB,gCAAMC,IAAcD,EAAM,OAAO;AAEjC,0BAAIC,KAKE,CAJ6B,OAAO;AAAA,4BACtC7E;AAAA,0BAAA,MAQJuB,GAAyB,CAACuD,OAAe;AAAA,4BACvC,GAAGA;AAAA,4BACH,CAACR,CAAe,GAAGO;AAAA,0BAAA,EACnB,GAEE,CAAAA,MAIA,CAAChD,KAAoB,CAACwB,KAI1BpC;AAAA,4BACEkC;AAAA,8BACEtB;AAAA,8BACAwB;AAAA,8BACAG;AAAA,gCACE3C;AAAA,gCACAJ;AAAA,gCACA4C,EAAsB;AAAA,8BAAA;AAAA,4BACxB;AAAA,0BACF;AAAA,wBAEJ,GArCU;AAAA,sBAqCV;AAAA,oBAAA;AAAA,oBAGJ,OACE,gBAAAN,EAACmB,GAAA,EAAW,SAAQ,WAAU,OAAM,kBAAiB,UAAA,WAAA,CAErD;AAAA,kBAAA;AAAA,gBAAA,IAGF;AAAA,cAAA,GACN;AAAA,cACA,gBAAAnB,EAAC,SAAI,WAAU,eACZ,YAAa,OAAO,IAAI,CAACiB,MAAoB;AAC5C,sBAAMe,IAAa1B,KAAyBxB,IACxC,CAAC0C,KACDP,EAAgB,SAASX,EAAsB,WAC/C;AAEJ,uBACE,gBAAAN;AAAA,kBAACsB;AAAA,kBAAA;AAAA,oBAEC,UAAUU;AAAA,oBACV,YAAYf;AAAA,oBACZ,cAAAlD;AAAA,oBACA,YAAYL;AAAA,oBACZ,UAAAI;AAAA,oBACA,UAAU,gBAAAhD,EAAA,CAACmH,GAAMpH,MAAU;AACzB,0BACE,CAACyF,KACD,CAACxB,KACD0C,KACAS,MAAS3B,EAAsB,UAC/B;AACA,wBAAArC,EAAqBgE,GAAMpH,CAAK;AAChC;AAAA,sBACF;AAEA,sBAAAqD,EAAsB;AAAA,wBACpB,EAAE,MAAA+D,GAAM,OAAApH,EAAA;AAAA,wBACR,GAAGuF;AAAA,0BACDtB;AAAA,0BACAwB;AAAA,0BACAzF;AAAA,wBAAA;AAAA,sBACF,CACD;AAAA,oBACH,GAnBU;AAAA,oBAoBV,SAASsD;AAAA,kBAAA;AAAA,kBA1BJ8C,EAAgB;AAAA,gBAAA;AAAA,cA6B3B,CAAC,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,UA7GKD,EAAa;AAAA,QAAA;AAAA,MAgHxB,CAAC,EAAA,CACH;AAAA,IAAA,EAAA,GAjKQxB,EAAW,GAkKrB;AAAA,EAEJ,GA1KyB;AA4KzB,SACE,gBAAAQ,EAACkC,MAAc,OAAOhF,IACpB,4BAACiF,IAAA,EAAI,IAAI/E,IAAwB,WAAU,uCACzC,UAAA;AAAA,IAAA,gBAAA4C,EAAC,SAAI,WAAU,2BACZ,UAAA/D,GAA2B,IAAI,CAACC,MAAkB;AACjD,YAAMkG,IAAWlG,EAAc,QAAQwB;AAEvC,aACE,gBAAAsC;AAAA,QAACqC;AAAA,QAAA;AAAA,UAEC,SAAS,gBAAAvH,EAAA,MAAMkD,EAAgB9B,EAAc,GAAG,GAAvC;AAAA,UACT,WAAU;AAAA,UACV,IAAI;AAAA,YACF,YAAY;AAAA,YACZ,iBAAiBkG,IACbjG,EAA2B,OAAO,kBAClCA,EAA2B,SAAS;AAAA,YACxC,QAAQ,aACNiG,IACIjG,EAA2B,OAAO,cAClCA,EAA2B,SAAS,WAC1C;AAAA,YACA,OAAOiG,IACHjG,EAA2B,OAAO,YAClCA,EAA2B,SAAS;AAAA,YACxC,GAAG;AAAA,UAAA;AAAA,UAGL,UAAA,gBAAA+E,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,YAAA,gBAAAlB,EAACmB,KAAW,SAAQ,aAAY,YAAY,KACzC,YAAc,OACjB;AAAA,YACCjF,EAAc,cACb,gBAAA8D;AAAA,cAACmB;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,IAAI;AAAA,kBACF,OAAOiB,IACHjG,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,gBAAAgF;AAAA,MAACQ;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAI;AAAA,UACF,iBAAiBnF;AAAA,UACjB,QAAQ,aAAaH,CAAoC;AAAA,UACzD,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA;AAAA,UAAA,gBAAA4D,EAAC,SAAI,WAAU,iDACb,UAAA,gBAAAkB,EAAC,OAAA,EAAI,WAAU,uCACb,UAAA;AAAA,YAAA,gBAAAlB,EAACmB,GAAA,EAAW,SAAQ,MAAK,IAAI,EAAE,OAAO3E,EAAA,GACnC,UAAAqD,KAAA,gBAAAA,EAAqB,MAAA,CACxB;AAAA,YACCjB,IACC,gBAAAsC,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,cAAA,gBAAAA;AAAA,gBAACoB;AAAA,gBAAA;AAAA,kBACC,QAAM;AAAA,kBACN,OAAM;AAAA,kBACN,OAAO1E;AAAA,kBACP,UAAU,gBAAA9C,EAAA,CAAC+G,MAAU;AACnB,oBAAAvD,GAAmBuD,EAAM,OAAO,KAAyB;AAAA,kBAC3D,GAFU;AAAA,kBAIV,UAAA;AAAA,oBAAA,gBAAA7B,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,gBAAAgB;AAAA,gBAACoB;AAAA,gBAAA;AAAA,kBACC,QAAM;AAAA,kBACN,OAAM;AAAA,kBACN,OAAOzE;AAAA,kBACP,UAAU,gBAAA/C,EAAA,CAAC+G,MAAU;AACnB,oBAAAxD,GAAkBwD,EAAM,OAAO,KAAK;AAAA,kBACtC,GAFU;AAAA,kBAIT,UAAA;AAAA,oBAAAhE,MAAsB0E,IACrB,gBAAAvC,EAACE,GAAA,EAAS,OAAOqC,GAAiC,oBAAM,IACtD;AAAA,oBACHzC;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,aAAa7D;AAAA,cAAA;AAAA,YACf;AAAA,UAAA;AAAA,UAGF,gBAAA4D;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKtB;AAAA,cACL,WAAU;AAAA,cAET,UAAAe,EAAiB,IAAI,CAAC+C,MACA9E,MAAkB,WAAW+B,EAAiB,SAAS,IAO1E,gBAAAyB;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBAEC,SAAQ;AAAA,kBACR,IAAI;AAAA,oBACF,iBAAiB1E;AAAA,oBACjB,aAAaZ;AAAA,oBACb,WAAW;AAAA,oBACX,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,KAAK;AAAA,oBACL,GAAG;AAAA,kBAAA;AAAA,kBAGJ,UAAA;AAAA,oBAAAoG,EAAgB,0BACdrB,GAAA,EAAW,SAAQ,aAAY,YAAY,KACzC,UAAAqB,EAAgB,MAAA,CACnB,IACE;AAAA,oBACJ,gBAAAxC,EAAC,SAAI,WAAU,eACZ,YAAgB,YAAY,IAAIc,CAAgB,EAAA,CACnD;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAnBK0B,EAAgB;AAAA,cAAA,IALhBA,EAAgB,YAAY,IAAI1B,CAAgB,CA2B1D;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ;AA5cgBhG,EAAA2C,IAAA;"}
@@ -1,10 +1,10 @@
1
- var M = Object.defineProperty;
2
- var l = (e, r) => M(e, "name", { value: r, configurable: !0 });
1
+ var b = Object.defineProperty;
2
+ var l = (e, r) => b(e, "name", { value: r, configurable: !0 });
3
3
  import { getContrastRatio as C } from "@mui/material/styles";
4
- import { getThemePreviewPaletteValue as S } from "../utils/themePreviewSettings.js";
4
+ import { getThemePreviewPaletteValue as m } from "../utils/themePreviewSettings.js";
5
5
  const y = "#e2e8f0", B = "rounded-lg p-14", H = {
6
6
  boxShadow: "none"
7
- }, O = "ThemePreviewGrid", V = "ThemePreviewReadonlyGrid", N = "#ffffff", x = "rgb(17, 24, 39)", b = ["buttons", "searchHeader"], z = ["부서명", "사용자ID", "성명", "사용여부"], A = ["Dashboard", "Theme Preview", "사용자 관리", "권한 그룹"], P = {
7
+ }, O = "ThemePreviewGrid", V = "ThemePreviewReadonlyGrid", N = "#ffffff", x = "rgb(17, 24, 39)", M = ["common", "searchHeader"], z = ["부서명", "사용자ID", "성명", "사용여부"], A = ["Dashboard", "Theme Preview", "사용자 관리", "권한 그룹"], f = {
8
8
  admin: "관리자",
9
9
  impix: "담당자1",
10
10
  owp: "담당자2"
@@ -16,7 +16,7 @@ const y = "#e2e8f0", B = "rounded-lg p-14", H = {
16
16
  error: "오류가 발생했습니다."
17
17
  }, F = { previewValue: "적용 대기" }, Y = {
18
18
  departmentName: "생산1팀",
19
- managerName: P.impix,
19
+ managerName: f.impix,
20
20
  useYn: "사용",
21
21
  locationName: "제1공장"
22
22
  }, G = [
@@ -32,30 +32,30 @@ const y = "#e2e8f0", B = "rounded-lg p-14", H = {
32
32
  departmentName: "부서명",
33
33
  managerName: "담당자",
34
34
  useYn: "사용여부"
35
- }, m = [
35
+ }, S = [
36
36
  {
37
37
  departmentName: "생산1팀",
38
- managerName: P.impix,
38
+ managerName: f.impix,
39
39
  useYn: "사용"
40
40
  },
41
41
  {
42
42
  departmentName: "품질팀",
43
- managerName: P.owp,
43
+ managerName: f.owp,
44
44
  useYn: "사용"
45
45
  }
46
- ], U = m.slice(0, 1), L = [
46
+ ], U = S.slice(0, 1), L = [
47
47
  { id: "userId", label: "사용자ID", align: "center", valueAlign: "center" },
48
48
  { id: "userName", label: "성명", align: "center", valueAlign: "center" },
49
49
  { id: "useYn", label: "사용여부", align: "center", valueAlign: "center" }
50
50
  ], W = [
51
51
  {
52
52
  userId: "impix",
53
- userName: P.impix,
53
+ userName: f.impix,
54
54
  useYn: "사용"
55
55
  },
56
56
  {
57
57
  userId: "owp",
58
- userName: P.owp,
58
+ userName: f.owp,
59
59
  useYn: "미사용"
60
60
  }
61
61
  ], J = W.slice(0, 1), j = [
@@ -91,9 +91,8 @@ const y = "#e2e8f0", B = "rounded-lg p-14", H = {
91
91
  }, "previewNoop");
92
92
  function _() {
93
93
  return [
94
- ["관리부", "admin", P.admin, "사용"],
95
- ["생산1팀", "impix", P.impix, "사용"],
96
- ["품질팀", "owp", P.owp, "미사용"]
94
+ ["관리부", "admin", f.admin, "사용"],
95
+ ["생산1팀", "impix", f.impix, "사용"]
97
96
  ];
98
97
  }
99
98
  l(_, "createGridPreviewRows");
@@ -107,7 +106,7 @@ function X(e) {
107
106
  }
108
107
  l(X, "createThemePreviewVersionKey");
109
108
  function Z(e, r, o) {
110
- return S(e, r, o);
109
+ return m(e, r, o);
111
110
  }
112
111
  l(Z, "getPaletteValue");
113
112
  function n(e) {
@@ -139,8 +138,8 @@ function T(e, r = !1) {
139
138
  }
140
139
  l(T, "getThemePreviewTableFrameSx");
141
140
  function $(e, r = !1) {
142
- var i, a, d, c;
143
- const o = n((a = (i = e.field) == null ? void 0 : i.cell) == null ? void 0 : a.backgroundColor), t = n((c = (d = e.field) == null ? void 0 : d.cell) == null ? void 0 : c.fontSize);
141
+ var i, a, c, d;
142
+ const o = n((a = (i = e.field) == null ? void 0 : i.cell) == null ? void 0 : a.backgroundColor), t = n((d = (c = e.field) == null ? void 0 : c.cell) == null ? void 0 : d.fontSize);
144
143
  return {
145
144
  ...T(e, r),
146
145
  ...(o || t) && {
@@ -153,8 +152,8 @@ function $(e, r = !1) {
153
152
  }
154
153
  l($, "getThemePreviewFieldTableSx");
155
154
  function ee(e) {
156
- var a, d, c, s, u, E, g, w;
157
- const r = n((d = (a = e.field) == null ? void 0 : a.header) == null ? void 0 : d.backgroundColor), o = n((s = (c = e.field) == null ? void 0 : c.header) == null ? void 0 : s.color), t = n((E = (u = e.field) == null ? void 0 : u.header) == null ? void 0 : E.fontSize), i = n((w = (g = e.field) == null ? void 0 : g.header) == null ? void 0 : w.fontWeight);
155
+ var a, c, d, s, u, E, g, P;
156
+ const r = n((c = (a = e.field) == null ? void 0 : a.header) == null ? void 0 : c.backgroundColor), o = n((s = (d = e.field) == null ? void 0 : d.header) == null ? void 0 : s.color), t = n((E = (u = e.field) == null ? void 0 : u.header) == null ? void 0 : E.fontSize), i = n((P = (g = e.field) == null ? void 0 : g.header) == null ? void 0 : P.fontWeight);
158
157
  if (!(!r && !o && !t && !i))
159
158
  return {
160
159
  ...r && {
@@ -173,8 +172,8 @@ function ee(e) {
173
172
  }
174
173
  l(ee, "getThemePreviewFieldTableTitleSx");
175
174
  function oe(e) {
176
- var t, i, a, d;
177
- const r = n((i = (t = e.field) == null ? void 0 : t.cell) == null ? void 0 : i.backgroundColor), o = n((d = (a = e.field) == null ? void 0 : a.cell) == null ? void 0 : d.fontSize);
175
+ var t, i, a, c;
176
+ const r = n((i = (t = e.field) == null ? void 0 : t.cell) == null ? void 0 : i.backgroundColor), o = n((c = (a = e.field) == null ? void 0 : a.cell) == null ? void 0 : c.fontSize);
178
177
  if (!(!r && !o))
179
178
  return {
180
179
  ...r && {
@@ -187,8 +186,8 @@ function oe(e) {
187
186
  }
188
187
  l(oe, "getThemePreviewFieldTableCellSx");
189
188
  function re(e, r = !1) {
190
- var s, u, E, g, w, f;
191
- const o = n((s = e.header) == null ? void 0 : s.backgroundColor), t = n((u = e.header) == null ? void 0 : u.color), i = n((E = e.header) == null ? void 0 : E.fontSize), a = n((g = e.row) == null ? void 0 : g.backgroundColor), d = n((w = e.row) == null ? void 0 : w.hoverBackgroundColor), c = n((f = e.cell) == null ? void 0 : f.fontSize);
189
+ var s, u, E, g, P, w;
190
+ const o = n((s = e.header) == null ? void 0 : s.backgroundColor), t = n((u = e.header) == null ? void 0 : u.color), i = n((E = e.header) == null ? void 0 : E.fontSize), a = n((g = e.row) == null ? void 0 : g.backgroundColor), c = n((P = e.row) == null ? void 0 : P.hoverBackgroundColor), d = n((w = e.cell) == null ? void 0 : w.fontSize);
192
191
  return {
193
192
  ...T(e, r),
194
193
  ...(o || t || i) && {
@@ -203,22 +202,22 @@ function re(e, r = !1) {
203
202
  backgroundColor: a
204
203
  }
205
204
  },
206
- ...d && {
205
+ ...c && {
207
206
  "& tbody > .MuiTableRow-root:hover": {
208
- backgroundColor: d
207
+ backgroundColor: c
209
208
  }
210
209
  },
211
- ...c && {
210
+ ...d && {
212
211
  "& tbody > .MuiTableRow-root > .MuiTableCell-root": {
213
- fontSize: c
212
+ fontSize: d
214
213
  }
215
214
  }
216
215
  };
217
216
  }
218
217
  l(re, "getThemePreviewBasicTableSx");
219
218
  function te(e, r = !1) {
220
- var u, E, g, w, f, v, R;
221
- const o = n((u = e.header) == null ? void 0 : u.backgroundColor), t = n((E = e.header) == null ? void 0 : E.color), i = n((g = e.header) == null ? void 0 : g.fontSize), a = n((w = e.row) == null ? void 0 : w.backgroundColor), d = n((f = e.row) == null ? void 0 : f.hoverBackgroundColor), c = n(
219
+ var u, E, g, P, w, v, R;
220
+ const o = n((u = e.header) == null ? void 0 : u.backgroundColor), t = n((E = e.header) == null ? void 0 : E.color), i = n((g = e.header) == null ? void 0 : g.fontSize), a = n((P = e.row) == null ? void 0 : P.backgroundColor), c = n((w = e.row) == null ? void 0 : w.hoverBackgroundColor), d = n(
222
221
  (v = e.row) == null ? void 0 : v.selectedBackgroundColor
223
222
  ), s = n((R = e.cell) == null ? void 0 : R.fontSize);
224
223
  return {
@@ -235,14 +234,14 @@ function te(e, r = !1) {
235
234
  backgroundColor: a
236
235
  }
237
236
  },
238
- ...d && {
237
+ ...c && {
239
238
  "& .MuiTableBody-root > .MuiTableRow-root.MuiTableRow-hover:hover:not(.Mui-selected)": {
240
- backgroundColor: d
239
+ backgroundColor: c
241
240
  }
242
241
  },
243
- ...c && {
242
+ ...d && {
244
243
  "& .MuiTableBody-root > .MuiTableRow-root.Mui-selected, & .MuiTableBody-root > .MuiTableRow-root.Mui-selected:hover": {
245
- backgroundColor: c
244
+ backgroundColor: d
246
245
  }
247
246
  },
248
247
  ...s && {
@@ -261,9 +260,10 @@ l(ne, "getPreviewContrastColor");
261
260
  function ie(e) {
262
261
  switch (e) {
263
262
  case "main":
263
+ return [...M];
264
264
  case "navbar":
265
265
  case "toolbar":
266
- return [...b];
266
+ return ["searchHeader"];
267
267
  case "grid":
268
268
  return ["grid"];
269
269
  case "snackbar":
@@ -271,7 +271,7 @@ function ie(e) {
271
271
  case "table":
272
272
  return ["tables"];
273
273
  default:
274
- return [...b];
274
+ return [...M];
275
275
  }
276
276
  }
277
277
  l(ie, "getPreviewSectionOrder");
@@ -279,7 +279,7 @@ export {
279
279
  X as createThemePreviewVersionKey,
280
280
  L as dataTablePreviewHeadCells,
281
281
  W as dataTablePreviewRows,
282
- b as defaultPreviewSectionOrder,
282
+ M as defaultPreviewSectionOrder,
283
283
  Z as getPaletteValue,
284
284
  ne as getPreviewContrastColor,
285
285
  ie as getPreviewSectionOrder,
@@ -303,13 +303,13 @@ export {
303
303
  H as previewInnerCardSx,
304
304
  q as previewNoop,
305
305
  B as previewSectionCardClassName,
306
- P as previewUserNameById,
306
+ f as previewUserNameById,
307
307
  F as searchHeaderPreviewData,
308
308
  D as snackbarPreviewMessageByVariant,
309
309
  Y as tableFieldPreviewData,
310
310
  G as tableFieldPreviewLayout,
311
311
  K as tablePreviewHeaders,
312
- m as tablePreviewRows,
312
+ S as tablePreviewRows,
313
313
  O as themePreviewEditableTreeGridId,
314
314
  V as themePreviewReadonlyTreeGridId
315
315
  };
@@ -1 +1 @@
1
- {"version":3,"file":"themePreviewCanvas.shared.js","sources":["../../../../src/features/themePreview/components/themePreviewCanvas.shared.ts"],"sourcesContent":["import type { OwpFieldTable } from '@/components/OwpTable/OwpFieldTable';\nimport type { SnackbarVariantKey } from '@/features/themePreview/configs/snackbar';\nimport type { ThemePreviewTableConfigType } from '@/features/themePreview/configs/table';\nimport { getContrastRatio, type SxProps, type Theme } from '@mui/material/styles';\nimport type { ComponentProps } from 'react';\nimport type {\n ThemePreviewPaletteSectionKey,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport { getThemePreviewPaletteValue } from '../utils';\n\nexport const previewChromeBorder = '#e2e8f0';\nexport const previewSectionCardClassName = 'rounded-lg p-14';\nexport const previewInnerCardSx = {\n boxShadow: 'none',\n} as const;\nexport const themePreviewEditableTreeGridId = 'ThemePreviewGrid';\nexport const themePreviewReadonlyTreeGridId = 'ThemePreviewReadonlyGrid';\nexport const gridPreviewBodyBackground = '#ffffff';\nexport const gridPreviewBodyText = 'rgb(17, 24, 39)';\nexport const defaultPreviewSectionOrder = ['buttons', 'searchHeader'] as const;\nexport const gridPreviewColumnLabels = ['부서명', '사용자ID', '성명', '사용여부'] as const;\nexport const navbarPreviewItems = ['Dashboard', 'Theme Preview', '사용자 관리', '권한 그룹'] as const;\nexport const previewUserNameById = {\n admin: '관리자',\n impix: '담당자1',\n owp: '담당자2',\n} as const;\nexport const snackbarPreviewMessageByVariant: Record<SnackbarVariantKey, string> = {\n default: '기본 snackbar 메시지',\n success: '정상적으로 처리되었습니다.',\n info: '확인이 필요한 안내 메시지입니다.',\n warning: '입력값을 다시 확인해주세요.',\n error: '오류가 발생했습니다.',\n};\nexport const searchHeaderPreviewData = { previewValue: '적용 대기' };\nexport const tableFieldPreviewData = {\n departmentName: '생산1팀',\n managerName: previewUserNameById.impix,\n useYn: '사용',\n locationName: '제1공장',\n};\nexport const tableFieldPreviewLayout = [\n [\n { title: '부서명', key: 'departmentName' },\n { title: '담당자', key: 'managerName' },\n ],\n [\n { title: '사용여부', key: 'useYn' },\n { title: '위치', key: 'locationName' },\n ],\n];\nexport const tablePreviewHeaders = {\n departmentName: '부서명',\n managerName: '담당자',\n useYn: '사용여부',\n};\nexport const tablePreviewRows = [\n {\n departmentName: '생산1팀',\n managerName: previewUserNameById.impix,\n useYn: '사용',\n },\n {\n departmentName: '품질팀',\n managerName: previewUserNameById.owp,\n useYn: '사용',\n },\n];\nexport const gridStyledTablePreviewRows = tablePreviewRows.slice(0, 1);\nexport const dataTablePreviewHeadCells = [\n { id: 'userId', label: '사용자ID', align: 'center', valueAlign: 'center' },\n { id: 'userName', label: '성명', align: 'center', valueAlign: 'center' },\n { id: 'useYn', label: '사용여부', align: 'center', valueAlign: 'center' },\n];\nexport const dataTablePreviewRows = [\n {\n userId: 'impix',\n userName: previewUserNameById.impix,\n useYn: '사용',\n },\n {\n userId: 'owp',\n userName: previewUserNameById.owp,\n useYn: '미사용',\n },\n];\nexport const gridStyledDataTablePreviewRows = dataTablePreviewRows.slice(0, 1);\nexport const gridCanvasPreviewRows = [\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '원자재',\n 'OWP_THEME_PREVIEW.REMARK': '초기 점검',\n 'OWP_THEME_PREVIEW.STATUS': 'READY',\n 'OWP_THEME_PREVIEW.USER_ID': 'admin',\n 'OWP_THEME_PREVIEW.WEIGHT': 12.5,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-18',\n CanSelect: 1,\n Selected: 1,\n },\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '가공품',\n 'OWP_THEME_PREVIEW.REMARK': '조건 확인',\n 'OWP_THEME_PREVIEW.STATUS': 'DONE',\n 'OWP_THEME_PREVIEW.USER_ID': 'impix',\n 'OWP_THEME_PREVIEW.WEIGHT': 8.2,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-17',\n CanSelect: 1,\n },\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '완제품',\n 'OWP_THEME_PREVIEW.REMARK': '샘플 데이터',\n 'OWP_THEME_PREVIEW.STATUS': 'READY',\n 'OWP_THEME_PREVIEW.USER_ID': 'owp',\n 'OWP_THEME_PREVIEW.WEIGHT': 15.75,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-16',\n CanSelect: 1,\n },\n];\nexport const previewNoop = () => {};\n\ntype ThemePreviewFieldTableCellSx = NonNullable<ComponentProps<typeof OwpFieldTable>['cellSx']>;\ntype ThemePreviewFieldTableTitleSx = NonNullable<ComponentProps<typeof OwpFieldTable>['titleSx']>;\n\nexport type ThemePreviewLayoutSectionKey =\n | 'buttons'\n | 'snackbars'\n | 'searchHeader'\n | 'grid'\n | 'tables';\n\nfunction createGridPreviewRows() {\n return [\n ['관리부', 'admin', previewUserNameById.admin, '사용'],\n ['생산1팀', 'impix', previewUserNameById.impix, '사용'],\n ['품질팀', 'owp', previewUserNameById.owp, '미사용'],\n ] as const;\n}\n\nexport const gridPreviewRows = createGridPreviewRows();\n\nexport function createThemePreviewVersionKey(sourceValue: unknown) {\n const source = JSON.stringify(sourceValue ?? {});\n let hash = 0;\n\n for (let index = 0; index < source.length; index += 1) {\n hash = Math.imul(31, hash) + source.charCodeAt(index);\n hash |= 0;\n }\n\n return Math.abs(hash).toString(36);\n}\n\nexport function getPaletteValue(\n settings: ThemePreviewSettings,\n sectionKey: ThemePreviewPaletteSectionKey,\n path: string,\n) {\n return getThemePreviewPaletteValue(settings, sectionKey, path);\n}\n\nexport function getThemePreviewStyleValue<T extends number | string | undefined>(value: T) {\n if (typeof value !== 'string') {\n return value;\n }\n\n const trimmedValue = value.trim();\n\n return trimmedValue ? (trimmedValue as T) : undefined;\n}\n\nexport function getThemePreviewResolvedBorderRadius(\n borderRadius: ThemePreviewTableConfigType['borderRadius'],\n canTableRadiusZero = false,\n) {\n return canTableRadiusZero ? 0 : getThemePreviewStyleValue(borderRadius);\n}\n\nexport function getThemePreviewTableFrameSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const borderRadius = getThemePreviewResolvedBorderRadius(\n tableTheme.borderRadius,\n canTableRadiusZero,\n );\n\n if (typeof borderRadius === 'undefined') {\n return {};\n }\n\n return {\n '& > .MuiPaper-root, & > .MuiTableContainer-root.MuiPaper-root': {\n borderRadius,\n overflow: 'hidden',\n },\n '& > .MuiPaper-root > .MuiTableContainer-root': {\n borderRadius,\n overflow: 'hidden',\n },\n };\n}\n\nexport function getThemePreviewFieldTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const cellBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.cell?.backgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.field?.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((cellBackgroundColor || cellFontSize) && {\n '& tbody td': {\n ...(cellBackgroundColor && { backgroundColor: cellBackgroundColor }),\n ...(cellFontSize && { fontSize: cellFontSize }),\n },\n }),\n };\n}\n\nexport function getThemePreviewFieldTableTitleSx(\n tableTheme: ThemePreviewTableConfigType,\n): ThemePreviewFieldTableTitleSx | undefined {\n const titleBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.header?.backgroundColor);\n const titleColor = getThemePreviewStyleValue(tableTheme.field?.header?.color);\n const titleFontSize = getThemePreviewStyleValue(tableTheme.field?.header?.fontSize);\n const titleFontWeight = getThemePreviewStyleValue(tableTheme.field?.header?.fontWeight);\n\n if (!titleBackgroundColor && !titleColor && !titleFontSize && !titleFontWeight) {\n return undefined;\n }\n\n return {\n ...(titleBackgroundColor && {\n backgroundColor: titleBackgroundColor,\n }),\n ...(titleColor && {\n color: titleColor,\n }),\n ...(titleFontSize && {\n fontSize: titleFontSize,\n }),\n ...(titleFontWeight && {\n fontWeight: titleFontWeight,\n }),\n };\n}\n\nexport function getThemePreviewFieldTableCellSx(\n tableTheme: ThemePreviewTableConfigType,\n): ThemePreviewFieldTableCellSx | undefined {\n const cellBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.cell?.backgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.field?.cell?.fontSize);\n\n if (!cellBackgroundColor && !cellFontSize) {\n return undefined;\n }\n\n return {\n ...(cellBackgroundColor && {\n backgroundColor: cellBackgroundColor,\n }),\n ...(cellFontSize && {\n fontSize: cellFontSize,\n }),\n };\n}\n\nexport function getThemePreviewBasicTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const headerBackgroundColor = getThemePreviewStyleValue(tableTheme.header?.backgroundColor);\n const headerColor = getThemePreviewStyleValue(tableTheme.header?.color);\n const headerFontSize = getThemePreviewStyleValue(tableTheme.header?.fontSize);\n const rowBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.backgroundColor);\n const hoverBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.hoverBackgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((headerBackgroundColor || headerColor || headerFontSize) && {\n '& thead th': {\n ...(headerBackgroundColor && { backgroundColor: headerBackgroundColor }),\n ...(headerColor && { color: headerColor }),\n ...(headerFontSize && { fontSize: headerFontSize }),\n },\n }),\n ...(rowBackgroundColor && {\n '& tbody > .MuiTableRow-root': {\n backgroundColor: rowBackgroundColor,\n },\n }),\n ...(hoverBackgroundColor && {\n '& tbody > .MuiTableRow-root:hover': {\n backgroundColor: hoverBackgroundColor,\n },\n }),\n ...(cellFontSize && {\n '& tbody > .MuiTableRow-root > .MuiTableCell-root': {\n fontSize: cellFontSize,\n },\n }),\n };\n}\n\nexport function getThemePreviewDataTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const headerBackgroundColor = getThemePreviewStyleValue(tableTheme.header?.backgroundColor);\n const headerColor = getThemePreviewStyleValue(tableTheme.header?.color);\n const headerFontSize = getThemePreviewStyleValue(tableTheme.header?.fontSize);\n const rowBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.backgroundColor);\n const hoverBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.hoverBackgroundColor);\n const selectedBackgroundColor = getThemePreviewStyleValue(\n tableTheme.row?.selectedBackgroundColor,\n );\n const cellFontSize = getThemePreviewStyleValue(tableTheme.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((headerBackgroundColor || headerColor || headerFontSize) && {\n '& thead th': {\n ...(headerBackgroundColor && { backgroundColor: headerBackgroundColor }),\n ...(headerColor && { color: headerColor }),\n ...(headerFontSize && { fontSize: headerFontSize }),\n },\n }),\n ...(rowBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root:not(.Mui-selected)': {\n backgroundColor: rowBackgroundColor,\n },\n }),\n ...(hoverBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root.MuiTableRow-hover:hover:not(.Mui-selected)': {\n backgroundColor: hoverBackgroundColor,\n },\n }),\n ...(selectedBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root.Mui-selected, & .MuiTableBody-root > .MuiTableRow-root.Mui-selected:hover':\n {\n backgroundColor: selectedBackgroundColor,\n },\n }),\n ...(cellFontSize && {\n '& .MuiTableBody-root > .MuiTableRow-root > .MuiTableCell-root': {\n fontSize: cellFontSize,\n },\n }),\n };\n}\n\nexport function getPreviewContrastColor(color: string, fallbackColor: string) {\n const lightTextColor = '#ffffff';\n const darkTextColor = '#0f172a';\n const lightContrastRatio = getContrastRatio(color, lightTextColor);\n const darkContrastRatio = getContrastRatio(color, darkTextColor);\n\n if (lightContrastRatio === darkContrastRatio) {\n return fallbackColor;\n }\n\n return lightContrastRatio > darkContrastRatio ? lightTextColor : darkTextColor;\n}\n\nexport function getPreviewSectionOrder(\n activeSection: ThemePreviewSectionKey,\n): ThemePreviewLayoutSectionKey[] {\n switch (activeSection) {\n case 'main':\n case 'navbar':\n case 'toolbar':\n return [...defaultPreviewSectionOrder];\n case 'grid':\n return ['grid'];\n case 'snackbar':\n return ['snackbars'];\n case 'table':\n return ['tables'];\n default:\n return [...defaultPreviewSectionOrder];\n }\n}\n"],"names":["previewChromeBorder","previewSectionCardClassName","previewInnerCardSx","themePreviewEditableTreeGridId","themePreviewReadonlyTreeGridId","gridPreviewBodyBackground","gridPreviewBodyText","defaultPreviewSectionOrder","gridPreviewColumnLabels","navbarPreviewItems","previewUserNameById","snackbarPreviewMessageByVariant","searchHeaderPreviewData","tableFieldPreviewData","tableFieldPreviewLayout","tablePreviewHeaders","tablePreviewRows","gridStyledTablePreviewRows","dataTablePreviewHeadCells","dataTablePreviewRows","gridStyledDataTablePreviewRows","gridCanvasPreviewRows","previewNoop","__name","createGridPreviewRows","gridPreviewRows","createThemePreviewVersionKey","sourceValue","source","hash","index","getPaletteValue","settings","sectionKey","path","getThemePreviewPaletteValue","getThemePreviewStyleValue","value","trimmedValue","getThemePreviewResolvedBorderRadius","borderRadius","canTableRadiusZero","getThemePreviewTableFrameSx","tableTheme","getThemePreviewFieldTableSx","cellBackgroundColor","_b","_a","cellFontSize","_d","_c","getThemePreviewFieldTableTitleSx","titleBackgroundColor","titleColor","titleFontSize","_f","_e","titleFontWeight","_h","_g","getThemePreviewFieldTableCellSx","getThemePreviewBasicTableSx","headerBackgroundColor","headerColor","headerFontSize","rowBackgroundColor","hoverBackgroundColor","getThemePreviewDataTableSx","selectedBackgroundColor","getPreviewContrastColor","color","fallbackColor","lightTextColor","darkTextColor","lightContrastRatio","getContrastRatio","darkContrastRatio","getPreviewSectionOrder","activeSection"],"mappings":"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"}
1
+ {"version":3,"file":"themePreviewCanvas.shared.js","sources":["../../../../src/features/themePreview/components/themePreviewCanvas.shared.ts"],"sourcesContent":["import type { OwpFieldTable } from '@/components/OwpTable/OwpFieldTable';\nimport type { SnackbarVariantKey } from '@/features/themePreview/configs/snackbar';\nimport type { ThemePreviewTableConfigType } from '@/features/themePreview/configs/table';\nimport { getContrastRatio, type SxProps, type Theme } from '@mui/material/styles';\nimport type { ComponentProps } from 'react';\nimport type {\n ThemePreviewPaletteSectionKey,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport { getThemePreviewPaletteValue } from '../utils';\n\nexport const previewChromeBorder = '#e2e8f0';\nexport const previewSectionCardClassName = 'rounded-lg p-14';\nexport const previewInnerCardSx = {\n boxShadow: 'none',\n} as const;\nexport const themePreviewEditableTreeGridId = 'ThemePreviewGrid';\nexport const themePreviewReadonlyTreeGridId = 'ThemePreviewReadonlyGrid';\nexport const gridPreviewBodyBackground = '#ffffff';\nexport const gridPreviewBodyText = 'rgb(17, 24, 39)';\nexport const defaultPreviewSectionOrder = ['common', 'searchHeader'] as const;\nexport const gridPreviewColumnLabels = ['부서명', '사용자ID', '성명', '사용여부'] as const;\nexport const navbarPreviewItems = ['Dashboard', 'Theme Preview', '사용자 관리', '권한 그룹'] as const;\nexport const previewUserNameById = {\n admin: '관리자',\n impix: '담당자1',\n owp: '담당자2',\n} as const;\nexport const snackbarPreviewMessageByVariant: Record<SnackbarVariantKey, string> = {\n default: '기본 snackbar 메시지',\n success: '정상적으로 처리되었습니다.',\n info: '확인이 필요한 안내 메시지입니다.',\n warning: '입력값을 다시 확인해주세요.',\n error: '오류가 발생했습니다.',\n};\nexport const searchHeaderPreviewData = { previewValue: '적용 대기' };\nexport const tableFieldPreviewData = {\n departmentName: '생산1팀',\n managerName: previewUserNameById.impix,\n useYn: '사용',\n locationName: '제1공장',\n};\nexport const tableFieldPreviewLayout = [\n [\n { title: '부서명', key: 'departmentName' },\n { title: '담당자', key: 'managerName' },\n ],\n [\n { title: '사용여부', key: 'useYn' },\n { title: '위치', key: 'locationName' },\n ],\n];\nexport const tablePreviewHeaders = {\n departmentName: '부서명',\n managerName: '담당자',\n useYn: '사용여부',\n};\nexport const tablePreviewRows = [\n {\n departmentName: '생산1팀',\n managerName: previewUserNameById.impix,\n useYn: '사용',\n },\n {\n departmentName: '품질팀',\n managerName: previewUserNameById.owp,\n useYn: '사용',\n },\n];\nexport const gridStyledTablePreviewRows = tablePreviewRows.slice(0, 1);\nexport const dataTablePreviewHeadCells = [\n { id: 'userId', label: '사용자ID', align: 'center', valueAlign: 'center' },\n { id: 'userName', label: '성명', align: 'center', valueAlign: 'center' },\n { id: 'useYn', label: '사용여부', align: 'center', valueAlign: 'center' },\n];\nexport const dataTablePreviewRows = [\n {\n userId: 'impix',\n userName: previewUserNameById.impix,\n useYn: '사용',\n },\n {\n userId: 'owp',\n userName: previewUserNameById.owp,\n useYn: '미사용',\n },\n];\nexport const gridStyledDataTablePreviewRows = dataTablePreviewRows.slice(0, 1);\nexport const gridCanvasPreviewRows = [\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '원자재',\n 'OWP_THEME_PREVIEW.REMARK': '초기 점검',\n 'OWP_THEME_PREVIEW.STATUS': 'READY',\n 'OWP_THEME_PREVIEW.USER_ID': 'admin',\n 'OWP_THEME_PREVIEW.WEIGHT': 12.5,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-18',\n CanSelect: 1,\n Selected: 1,\n },\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '가공품',\n 'OWP_THEME_PREVIEW.REMARK': '조건 확인',\n 'OWP_THEME_PREVIEW.STATUS': 'DONE',\n 'OWP_THEME_PREVIEW.USER_ID': 'impix',\n 'OWP_THEME_PREVIEW.WEIGHT': 8.2,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-17',\n CanSelect: 1,\n },\n {\n 'OWP_THEME_PREVIEW.ITEM_NAME': '완제품',\n 'OWP_THEME_PREVIEW.REMARK': '샘플 데이터',\n 'OWP_THEME_PREVIEW.STATUS': 'READY',\n 'OWP_THEME_PREVIEW.USER_ID': 'owp',\n 'OWP_THEME_PREVIEW.WEIGHT': 15.75,\n 'OWP_THEME_PREVIEW.WORK_DATE': '2026-04-16',\n CanSelect: 1,\n },\n];\nexport const previewNoop = () => {};\n\ntype ThemePreviewFieldTableCellSx = NonNullable<ComponentProps<typeof OwpFieldTable>['cellSx']>;\ntype ThemePreviewFieldTableTitleSx = NonNullable<ComponentProps<typeof OwpFieldTable>['titleSx']>;\n\nexport type ThemePreviewLayoutSectionKey =\n | 'common'\n | 'buttons'\n | 'snackbars'\n | 'searchHeader'\n | 'grid'\n | 'tables';\n\nfunction createGridPreviewRows() {\n return [\n ['관리부', 'admin', previewUserNameById.admin, '사용'],\n ['생산1팀', 'impix', previewUserNameById.impix, '사용'],\n ] as const;\n}\n\nexport const gridPreviewRows = createGridPreviewRows();\n\nexport function createThemePreviewVersionKey(sourceValue: unknown) {\n const source = JSON.stringify(sourceValue ?? {});\n let hash = 0;\n\n for (let index = 0; index < source.length; index += 1) {\n hash = Math.imul(31, hash) + source.charCodeAt(index);\n hash |= 0;\n }\n\n return Math.abs(hash).toString(36);\n}\n\nexport function getPaletteValue(\n settings: ThemePreviewSettings,\n sectionKey: ThemePreviewPaletteSectionKey,\n path: string,\n) {\n return getThemePreviewPaletteValue(settings, sectionKey, path);\n}\n\nexport function getThemePreviewStyleValue<T extends number | string | undefined>(value: T) {\n if (typeof value !== 'string') {\n return value;\n }\n\n const trimmedValue = value.trim();\n\n return trimmedValue ? (trimmedValue as T) : undefined;\n}\n\nexport function getThemePreviewResolvedBorderRadius(\n borderRadius: ThemePreviewTableConfigType['borderRadius'],\n canTableRadiusZero = false,\n) {\n return canTableRadiusZero ? 0 : getThemePreviewStyleValue(borderRadius);\n}\n\nexport function getThemePreviewTableFrameSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const borderRadius = getThemePreviewResolvedBorderRadius(\n tableTheme.borderRadius,\n canTableRadiusZero,\n );\n\n if (typeof borderRadius === 'undefined') {\n return {};\n }\n\n return {\n '& > .MuiPaper-root, & > .MuiTableContainer-root.MuiPaper-root': {\n borderRadius,\n overflow: 'hidden',\n },\n '& > .MuiPaper-root > .MuiTableContainer-root': {\n borderRadius,\n overflow: 'hidden',\n },\n };\n}\n\nexport function getThemePreviewFieldTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const cellBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.cell?.backgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.field?.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((cellBackgroundColor || cellFontSize) && {\n '& tbody td': {\n ...(cellBackgroundColor && { backgroundColor: cellBackgroundColor }),\n ...(cellFontSize && { fontSize: cellFontSize }),\n },\n }),\n };\n}\n\nexport function getThemePreviewFieldTableTitleSx(\n tableTheme: ThemePreviewTableConfigType,\n): ThemePreviewFieldTableTitleSx | undefined {\n const titleBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.header?.backgroundColor);\n const titleColor = getThemePreviewStyleValue(tableTheme.field?.header?.color);\n const titleFontSize = getThemePreviewStyleValue(tableTheme.field?.header?.fontSize);\n const titleFontWeight = getThemePreviewStyleValue(tableTheme.field?.header?.fontWeight);\n\n if (!titleBackgroundColor && !titleColor && !titleFontSize && !titleFontWeight) {\n return undefined;\n }\n\n return {\n ...(titleBackgroundColor && {\n backgroundColor: titleBackgroundColor,\n }),\n ...(titleColor && {\n color: titleColor,\n }),\n ...(titleFontSize && {\n fontSize: titleFontSize,\n }),\n ...(titleFontWeight && {\n fontWeight: titleFontWeight,\n }),\n };\n}\n\nexport function getThemePreviewFieldTableCellSx(\n tableTheme: ThemePreviewTableConfigType,\n): ThemePreviewFieldTableCellSx | undefined {\n const cellBackgroundColor = getThemePreviewStyleValue(tableTheme.field?.cell?.backgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.field?.cell?.fontSize);\n\n if (!cellBackgroundColor && !cellFontSize) {\n return undefined;\n }\n\n return {\n ...(cellBackgroundColor && {\n backgroundColor: cellBackgroundColor,\n }),\n ...(cellFontSize && {\n fontSize: cellFontSize,\n }),\n };\n}\n\nexport function getThemePreviewBasicTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const headerBackgroundColor = getThemePreviewStyleValue(tableTheme.header?.backgroundColor);\n const headerColor = getThemePreviewStyleValue(tableTheme.header?.color);\n const headerFontSize = getThemePreviewStyleValue(tableTheme.header?.fontSize);\n const rowBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.backgroundColor);\n const hoverBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.hoverBackgroundColor);\n const cellFontSize = getThemePreviewStyleValue(tableTheme.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((headerBackgroundColor || headerColor || headerFontSize) && {\n '& thead th': {\n ...(headerBackgroundColor && { backgroundColor: headerBackgroundColor }),\n ...(headerColor && { color: headerColor }),\n ...(headerFontSize && { fontSize: headerFontSize }),\n },\n }),\n ...(rowBackgroundColor && {\n '& tbody > .MuiTableRow-root': {\n backgroundColor: rowBackgroundColor,\n },\n }),\n ...(hoverBackgroundColor && {\n '& tbody > .MuiTableRow-root:hover': {\n backgroundColor: hoverBackgroundColor,\n },\n }),\n ...(cellFontSize && {\n '& tbody > .MuiTableRow-root > .MuiTableCell-root': {\n fontSize: cellFontSize,\n },\n }),\n };\n}\n\nexport function getThemePreviewDataTableSx(\n tableTheme: ThemePreviewTableConfigType,\n canTableRadiusZero = false,\n): SxProps<Theme> {\n const headerBackgroundColor = getThemePreviewStyleValue(tableTheme.header?.backgroundColor);\n const headerColor = getThemePreviewStyleValue(tableTheme.header?.color);\n const headerFontSize = getThemePreviewStyleValue(tableTheme.header?.fontSize);\n const rowBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.backgroundColor);\n const hoverBackgroundColor = getThemePreviewStyleValue(tableTheme.row?.hoverBackgroundColor);\n const selectedBackgroundColor = getThemePreviewStyleValue(\n tableTheme.row?.selectedBackgroundColor,\n );\n const cellFontSize = getThemePreviewStyleValue(tableTheme.cell?.fontSize);\n\n return {\n ...getThemePreviewTableFrameSx(tableTheme, canTableRadiusZero),\n ...((headerBackgroundColor || headerColor || headerFontSize) && {\n '& thead th': {\n ...(headerBackgroundColor && { backgroundColor: headerBackgroundColor }),\n ...(headerColor && { color: headerColor }),\n ...(headerFontSize && { fontSize: headerFontSize }),\n },\n }),\n ...(rowBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root:not(.Mui-selected)': {\n backgroundColor: rowBackgroundColor,\n },\n }),\n ...(hoverBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root.MuiTableRow-hover:hover:not(.Mui-selected)': {\n backgroundColor: hoverBackgroundColor,\n },\n }),\n ...(selectedBackgroundColor && {\n '& .MuiTableBody-root > .MuiTableRow-root.Mui-selected, & .MuiTableBody-root > .MuiTableRow-root.Mui-selected:hover':\n {\n backgroundColor: selectedBackgroundColor,\n },\n }),\n ...(cellFontSize && {\n '& .MuiTableBody-root > .MuiTableRow-root > .MuiTableCell-root': {\n fontSize: cellFontSize,\n },\n }),\n };\n}\n\nexport function getPreviewContrastColor(color: string, fallbackColor: string) {\n const lightTextColor = '#ffffff';\n const darkTextColor = '#0f172a';\n const lightContrastRatio = getContrastRatio(color, lightTextColor);\n const darkContrastRatio = getContrastRatio(color, darkTextColor);\n\n if (lightContrastRatio === darkContrastRatio) {\n return fallbackColor;\n }\n\n return lightContrastRatio > darkContrastRatio ? lightTextColor : darkTextColor;\n}\n\nexport function getPreviewSectionOrder(\n activeSection: ThemePreviewSectionKey,\n): ThemePreviewLayoutSectionKey[] {\n switch (activeSection) {\n case 'main':\n return [...defaultPreviewSectionOrder];\n case 'navbar':\n case 'toolbar':\n return ['searchHeader'];\n case 'grid':\n return ['grid'];\n case 'snackbar':\n return ['snackbars'];\n case 'table':\n return ['tables'];\n default:\n return [...defaultPreviewSectionOrder];\n }\n}\n"],"names":["previewChromeBorder","previewSectionCardClassName","previewInnerCardSx","themePreviewEditableTreeGridId","themePreviewReadonlyTreeGridId","gridPreviewBodyBackground","gridPreviewBodyText","defaultPreviewSectionOrder","gridPreviewColumnLabels","navbarPreviewItems","previewUserNameById","snackbarPreviewMessageByVariant","searchHeaderPreviewData","tableFieldPreviewData","tableFieldPreviewLayout","tablePreviewHeaders","tablePreviewRows","gridStyledTablePreviewRows","dataTablePreviewHeadCells","dataTablePreviewRows","gridStyledDataTablePreviewRows","gridCanvasPreviewRows","previewNoop","__name","createGridPreviewRows","gridPreviewRows","createThemePreviewVersionKey","sourceValue","source","hash","index","getPaletteValue","settings","sectionKey","path","getThemePreviewPaletteValue","getThemePreviewStyleValue","value","trimmedValue","getThemePreviewResolvedBorderRadius","borderRadius","canTableRadiusZero","getThemePreviewTableFrameSx","tableTheme","getThemePreviewFieldTableSx","cellBackgroundColor","_b","_a","cellFontSize","_d","_c","getThemePreviewFieldTableTitleSx","titleBackgroundColor","titleColor","titleFontSize","_f","_e","titleFontWeight","_h","_g","getThemePreviewFieldTableCellSx","getThemePreviewBasicTableSx","headerBackgroundColor","headerColor","headerFontSize","rowBackgroundColor","hoverBackgroundColor","getThemePreviewDataTableSx","selectedBackgroundColor","getPreviewContrastColor","color","fallbackColor","lightTextColor","darkTextColor","lightContrastRatio","getContrastRatio","darkContrastRatio","getPreviewSectionOrder","activeSection"],"mappings":"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"}