@owp/core 2.5.5 → 2.5.6

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 (50) hide show
  1. package/configs/theme.d.ts +3 -0
  2. package/configs/theme.js +1 -0
  3. package/dist/_virtual/index10.js +2 -2
  4. package/dist/_virtual/index12.js +2 -2
  5. package/dist/_virtual/index13.js +2 -2
  6. package/dist/_virtual/index14.js +2 -2
  7. package/dist/_virtual/index15.js +2 -2
  8. package/dist/_virtual/index5.js +2 -2
  9. package/dist/configs/defaultConfig.js +1 -1
  10. package/dist/configs/theme.js +28 -0
  11. package/dist/configs/theme.js.map +1 -0
  12. package/dist/features/themePreview/components/ThemePreviewColorField.js +279 -208
  13. package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
  14. package/dist/features/themePreview/configs/presets.js +6 -38
  15. package/dist/features/themePreview/configs/presets.js.map +1 -1
  16. package/dist/features/themePreview/configs/previewStorage.js +28 -27
  17. package/dist/features/themePreview/configs/previewStorage.js.map +1 -1
  18. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +166 -154
  19. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
  20. package/dist/features/themePreview/hooks/useThemePreview.js +202 -157
  21. package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
  22. package/dist/features/themePreview/utils/themePreviewExport.js +276 -67
  23. package/dist/features/themePreview/utils/themePreviewExport.js.map +1 -1
  24. package/dist/features/themePreview.js +52 -52
  25. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  26. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  27. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  28. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  29. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  30. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  31. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  32. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  33. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  34. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  35. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  36. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  37. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  38. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  39. package/dist/owp-app.css +1 -1
  40. package/dist/types/configs/theme/index.d.ts +6 -0
  41. package/dist/types/features/themePreview/configs/index.d.ts +1 -1
  42. package/dist/types/features/themePreview/configs/presets.d.ts +0 -1
  43. package/dist/types/features/themePreview/configs/previewStorage.d.ts +1 -0
  44. package/dist/types/features/themePreview/hooks/useThemePreview.d.ts +2 -1
  45. package/dist/types/features/themePreview/utils/index.d.ts +1 -1
  46. package/dist/types/features/themePreview/utils/themePreviewExport.d.ts +38 -1083
  47. package/dist/types/utils/zipUtil.d.ts +1 -0
  48. package/dist/utils/zipUtil.js +38 -36
  49. package/dist/utils/zipUtil.js.map +1 -1
  50. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useThemePreview.js","sources":["../../../../src/features/themePreview/hooks/useThemePreview.ts"],"sourcesContent":["import {\n clearThemePreviewAppliedSettings,\n getThemePreviewTemporaryState,\n persistThemePreviewAppliedSettings,\n persistThemePreviewTemporaryState,\n type ThemePreviewTemporaryState,\n} from '@/features/themePreview/configs/previewStorage';\nimport { defaultSnackbarTheme } from '@/features/themePreview/configs/snackbar';\nimport { useGetCurrentSettings, useSetDefaultSettings } from '@/hooks';\nimport type { OwpSettingsConfigType } from '@/types';\nimport { isEqual, merge } from 'es-toolkit/compat';\nimport { useMemo, useState } from 'react';\nimport type { PartialDeep } from 'type-fest';\nimport type {\n ThemePreviewMode,\n ThemePreviewPresetKeyBySection,\n ThemePreviewPresetSectionKey,\n ThemePreviewPresetThemes,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport {\n applyThemePreviewPreset,\n cloneThemePreviewSettings,\n getThemePreviewDraftSettings,\n getThemePreviewPresetOptions,\n getThemePreviewPresetOptionsByMode,\n getThemePreviewResetSettings,\n getThemePreviewSelectionState,\n isThemePreviewCustomSection,\n setThemePreviewDraftSettings,\n setThemePreviewPaletteValue,\n setThemePreviewPaletteValues,\n setThemePreviewSelectionState,\n THEME_PREVIEW_CUSTOM_PRESET_KEY,\n} from '../utils';\n\ninterface UseThemePreviewOptions {\n initialSection?: ThemePreviewSectionKey;\n initialPresetKeys: ThemePreviewPresetKeyBySection;\n presetThemes: ThemePreviewPresetThemes;\n resetTheme: PartialDeep<OwpSettingsConfigType['theme']>;\n}\n\nconst themePreviewCustomPresetKeys = {\n main: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n navbar: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n toolbar: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n} satisfies ThemePreviewPresetKeyBySection;\n\nfunction isThemePreviewPresetSectionKey(\n sectionKey: ThemePreviewSectionKey,\n): sectionKey is ThemePreviewPresetSectionKey {\n return !isThemePreviewCustomSection(sectionKey);\n}\n\nfunction getThemePreviewSelectedModes(settings: OwpSettingsConfigType) {\n return {\n main: settings.theme.main.palette.mode === 'dark' ? 'dark' : 'light',\n navbar: settings.theme.navbar.palette.mode === 'dark' ? 'dark' : 'light',\n toolbar: settings.theme.toolbar.palette.mode === 'dark' ? 'dark' : 'light',\n } satisfies Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n}\n\nfunction createThemePreviewTemporaryState(\n activeSection: ThemePreviewSectionKey,\n draftSettings: ThemePreviewSettings,\n selectedPresetKeys: ThemePreviewPresetKeyBySection,\n selectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n saveType: ThemePreviewTemporaryState['saveType'],\n) {\n return {\n draftSettings: cloneThemePreviewSettings(draftSettings),\n savedAt: new Date().toISOString(),\n saveType,\n selectionState: {\n activeSection,\n selectedModes,\n selectedPresetKeys,\n },\n version: 1,\n } satisfies ThemePreviewTemporaryState;\n}\n\nfunction createThemePreviewTemporaryComparableState(\n activeSection: ThemePreviewSectionKey,\n draftSettings: ThemePreviewSettings,\n selectedPresetKeys: ThemePreviewPresetKeyBySection,\n selectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n) {\n return {\n draftSettings,\n selectionState: {\n activeSection,\n selectedModes,\n selectedPresetKeys,\n },\n };\n}\n\nexport function useThemePreview({\n initialSection = 'main',\n initialPresetKeys: _initialPresetKeys,\n presetThemes,\n resetTheme,\n}: UseThemePreviewOptions) {\n const currentSettings = useGetCurrentSettings() as OwpSettingsConfigType;\n const setDefaultSettings = useSetDefaultSettings();\n const presetOptions = useMemo(() => getThemePreviewPresetOptions(presetThemes), [presetThemes]);\n const resetSettings = useMemo(\n () => getThemePreviewResetSettings(currentSettings, resetTheme, defaultSnackbarTheme),\n [currentSettings, resetTheme],\n );\n const currentSnackbarTheme = useMemo(\n () => merge({}, defaultSnackbarTheme, currentSettings.snackbar),\n [currentSettings],\n );\n\n const [activeSection, setActiveSection] = useState<ThemePreviewSectionKey>(initialSection);\n const [draftSettings, setDraftSettings] = useState<ThemePreviewSettings>(() =>\n getThemePreviewDraftSettings(currentSettings),\n );\n const initialSelectionState = useMemo(\n () => getThemePreviewSelectionState(currentSettings, _initialPresetKeys),\n [currentSettings, _initialPresetKeys],\n );\n const [selectedPresetKeys, setSelectedPresetKeys] = useState<ThemePreviewPresetKeyBySection>(\n initialSelectionState.selectedPresetKeys,\n );\n const [selectedModes, setSelectedModes] = useState<\n Record<ThemePreviewPresetSectionKey, ThemePreviewMode>\n >(initialSelectionState.selectedModes);\n const [temporarySnapshot, setTemporarySnapshot] = useState(() => getThemePreviewTemporaryState());\n const hasTemporarySnapshot = Boolean(temporarySnapshot);\n const hasTemporaryChanges =\n !temporarySnapshot ||\n !isEqual(\n createThemePreviewTemporaryComparableState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n ),\n {\n draftSettings: temporarySnapshot.draftSettings,\n selectionState: temporarySnapshot.selectionState,\n },\n );\n const canApplyToMain =\n !isEqual(currentSettings.theme, draftSettings.theme) ||\n !isEqual(currentSnackbarTheme, draftSettings.snackbar);\n\n const persistSelectionState = (\n nextPresetKeys: ThemePreviewPresetKeyBySection,\n nextSelectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n ) => {\n setThemePreviewSelectionState({\n selectedPresetKeys: nextPresetKeys,\n selectedModes: nextSelectedModes,\n });\n };\n\n const persistDraftSettings = (nextDraftSettings: ThemePreviewSettings) => {\n setThemePreviewDraftSettings(nextDraftSettings);\n return nextDraftSettings;\n };\n const commitDraftSettings = (nextDraftSettings: ThemePreviewSettings) => {\n setDraftSettings(nextDraftSettings);\n return persistDraftSettings(nextDraftSettings);\n };\n\n const commitSelectionState = (\n nextPresetKeys: ThemePreviewPresetKeyBySection,\n nextSelectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n ) => {\n setSelectedPresetKeys(nextPresetKeys);\n setSelectedModes(nextSelectedModes);\n persistSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handlePaletteValueChange = (path: string, value: string) => {\n commitDraftSettings(setThemePreviewPaletteValue(draftSettings, activeSection, path, value));\n\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n };\n\n commitSelectionState(nextPresetKeys, selectedModes);\n };\n\n const handlePaletteValuesChange = (updates: Array<{ path: string; value: string }>) => {\n if (!updates.length) {\n return;\n }\n\n commitDraftSettings(setThemePreviewPaletteValues(draftSettings, activeSection, updates));\n\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n };\n\n commitSelectionState(nextPresetKeys, selectedModes);\n };\n\n const handlePresetModeChange = (mode: ThemePreviewMode) => {\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextSelectedModes = {\n ...selectedModes,\n [activeSection]: mode,\n };\n\n const nextPresetOption = getThemePreviewPresetOptionsByMode(\n presetOptions,\n activeSection,\n mode,\n )[0];\n\n if (!nextPresetOption) {\n commitSelectionState(selectedPresetKeys, nextSelectedModes);\n return;\n }\n\n const presetTheme = presetThemes[nextPresetOption.key];\n\n if (!presetTheme) {\n commitSelectionState(selectedPresetKeys, nextSelectedModes);\n return;\n }\n\n commitDraftSettings(applyThemePreviewPreset(draftSettings, activeSection, presetTheme));\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: nextPresetOption.key,\n };\n\n commitSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handlePresetKeyChange = (presetKey: string) => {\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n if (presetKey === THEME_PREVIEW_CUSTOM_PRESET_KEY) {\n return;\n }\n\n const presetTheme = presetThemes[presetKey];\n\n if (!presetTheme) {\n return;\n }\n\n commitDraftSettings(applyThemePreviewPreset(draftSettings, activeSection, presetTheme));\n const nextSelectedModes = {\n ...selectedModes,\n [activeSection]: presetTheme.palette.mode === 'dark' ? 'dark' : 'light',\n };\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: presetKey,\n };\n\n commitSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handleReset = () => {\n const nextDraftSettings = cloneThemePreviewSettings(resetSettings);\n const nextSelectedModes = {\n main: resetTheme.main?.palette?.mode === 'dark' ? 'dark' : 'light',\n navbar: resetTheme.navbar?.palette?.mode === 'dark' ? 'dark' : 'light',\n toolbar: resetTheme.toolbar?.palette?.mode === 'dark' ? 'dark' : 'light',\n } satisfies Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n\n commitDraftSettings(nextDraftSettings);\n commitSelectionState(_initialPresetKeys, nextSelectedModes);\n clearThemePreviewAppliedSettings();\n setDefaultSettings({\n theme: resetTheme,\n snackbar: defaultSnackbarTheme,\n });\n };\n\n const handleApplyToMain = () => {\n const nextTemporaryState = createThemePreviewTemporaryState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n 'manual',\n );\n\n setThemePreviewDraftSettings(draftSettings);\n persistSelectionState(selectedPresetKeys, selectedModes);\n persistThemePreviewTemporaryState(nextTemporaryState);\n persistThemePreviewAppliedSettings({\n theme: draftSettings.theme,\n snackbar: draftSettings.snackbar,\n });\n setTemporarySnapshot(nextTemporaryState);\n setDefaultSettings({\n theme: draftSettings.theme,\n snackbar: draftSettings.snackbar,\n });\n };\n\n const handleLoadSettings = (\n theme: OwpSettingsConfigType['theme'],\n snackbarTheme = defaultSnackbarTheme,\n ) => {\n const nextDraftSettings = merge({}, currentSettings, {\n theme,\n snackbar: merge({}, defaultSnackbarTheme, snackbarTheme),\n }) as ThemePreviewSettings;\n const nextSelectedModes = getThemePreviewSelectedModes(nextDraftSettings);\n\n commitDraftSettings(nextDraftSettings);\n commitSelectionState(themePreviewCustomPresetKeys, nextSelectedModes);\n persistThemePreviewAppliedSettings({\n theme,\n snackbar: nextDraftSettings.snackbar,\n });\n setDefaultSettings({\n theme,\n snackbar: nextDraftSettings.snackbar,\n });\n };\n\n const handleTemporarySave = (saveType: ThemePreviewTemporaryState['saveType'] = 'manual') => {\n const nextTemporaryState = createThemePreviewTemporaryState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n saveType,\n );\n\n persistThemePreviewTemporaryState(nextTemporaryState);\n setTemporarySnapshot(nextTemporaryState);\n };\n\n const handleTemporaryLoad = () => {\n const temporaryState = getThemePreviewTemporaryState();\n\n if (!temporaryState) {\n return false;\n }\n\n const nextDraftSettings = cloneThemePreviewSettings(\n merge({}, currentSettings, temporaryState.draftSettings) as ThemePreviewSettings,\n );\n const nextSelectedPresetKeys = merge(\n {},\n selectedPresetKeys,\n temporaryState.selectionState.selectedPresetKeys,\n ) as ThemePreviewPresetKeyBySection;\n const nextSelectedModes = merge(\n {},\n selectedModes,\n temporaryState.selectionState.selectedModes,\n ) as Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n const nextActiveSection = temporaryState.selectionState.activeSection;\n\n commitDraftSettings(nextDraftSettings);\n setActiveSection(nextActiveSection);\n commitSelectionState(nextSelectedPresetKeys, nextSelectedModes);\n setTemporarySnapshot(temporaryState);\n\n return true;\n };\n\n return {\n activeSection,\n canApplyToMain,\n draftSettings,\n hasTemporaryChanges,\n hasTemporarySnapshot,\n presetOptions,\n selectedModes,\n selectedPresetKeys,\n setActiveSection,\n handlePaletteValueChange,\n handlePaletteValuesChange,\n handleApplyToMain,\n handleLoadSettings,\n handlePresetKeyChange,\n handlePresetModeChange,\n handleReset,\n handleTemporaryLoad,\n handleTemporarySave,\n };\n}\n"],"names":["themePreviewCustomPresetKeys","THEME_PREVIEW_CUSTOM_PRESET_KEY","isThemePreviewPresetSectionKey","sectionKey","isThemePreviewCustomSection","__name","getThemePreviewSelectedModes","settings","createThemePreviewTemporaryState","activeSection","draftSettings","selectedPresetKeys","selectedModes","saveType","cloneThemePreviewSettings","createThemePreviewTemporaryComparableState","useThemePreview","initialSection","_initialPresetKeys","presetThemes","resetTheme","currentSettings","useGetCurrentSettings","setDefaultSettings","useSetDefaultSettings","presetOptions","useMemo","getThemePreviewPresetOptions","resetSettings","getThemePreviewResetSettings","defaultSnackbarTheme","currentSnackbarTheme","merge","setActiveSection","useState","setDraftSettings","getThemePreviewDraftSettings","initialSelectionState","getThemePreviewSelectionState","setSelectedPresetKeys","setSelectedModes","temporarySnapshot","setTemporarySnapshot","getThemePreviewTemporaryState","hasTemporarySnapshot","hasTemporaryChanges","isEqual","canApplyToMain","persistSelectionState","nextPresetKeys","nextSelectedModes","setThemePreviewSelectionState","persistDraftSettings","nextDraftSettings","setThemePreviewDraftSettings","commitDraftSettings","commitSelectionState","path","value","setThemePreviewPaletteValue","updates","setThemePreviewPaletteValues","nextTemporaryState","persistThemePreviewTemporaryState","persistThemePreviewAppliedSettings","theme","snackbarTheme","presetKey","presetTheme","applyThemePreviewPreset","mode","nextPresetOption","getThemePreviewPresetOptionsByMode","_b","_a","_d","_c","_f","_e","clearThemePreviewAppliedSettings","temporaryState","nextSelectedPresetKeys","nextActiveSection"],"mappings":"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"}
1
+ {"version":3,"file":"useThemePreview.js","sources":["../../../../src/features/themePreview/hooks/useThemePreview.ts"],"sourcesContent":["import {\n clearThemePreviewAppliedSettings,\n getThemePreviewTemporaryState,\n persistThemePreviewAppliedSettings,\n persistThemePreviewTemporaryState,\n type ThemePreviewTemporaryState,\n} from '@/features/themePreview/configs/previewStorage';\nimport {\n defaultSnackbarProviderProps,\n defaultSnackbarTheme,\n type SnackbarProviderTheme,\n} from '@/features/themePreview/configs/snackbar';\nimport { useGetCurrentSettings, useSetDefaultSettings } from '@/hooks';\nimport type { OwpSettingsConfigType } from '@/types';\nimport { isEqual, merge } from 'es-toolkit/compat';\nimport { useMemo, useState } from 'react';\nimport type { PartialDeep } from 'type-fest';\nimport type {\n ThemePreviewMode,\n ThemePreviewPresetKeyBySection,\n ThemePreviewPresetSectionKey,\n ThemePreviewPresetThemes,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport {\n applyThemePreviewPreset,\n cloneThemePreviewSettings,\n getThemePreviewDraftSettings,\n getThemePreviewPresetOptions,\n getThemePreviewPresetOptionsByMode,\n getThemePreviewResetSettings,\n getThemePreviewSelectionState,\n isThemePreviewCustomSection,\n setThemePreviewDraftSettings,\n setThemePreviewPaletteValue,\n setThemePreviewPaletteValues,\n setThemePreviewSelectionState,\n THEME_PREVIEW_CUSTOM_PRESET_KEY,\n} from '../utils';\nimport dayjs from 'dayjs';\n\ninterface UseThemePreviewOptions {\n initialSection?: ThemePreviewSectionKey;\n initialPresetKeys: ThemePreviewPresetKeyBySection;\n presetThemes: ThemePreviewPresetThemes;\n resetTheme: PartialDeep<OwpSettingsConfigType['theme']>;\n}\n\ntype ThemePreviewSettingsWithSnackbarProviderProps = OwpSettingsConfigType & {\n snackbarProviderProps?: SnackbarProviderTheme;\n};\n\nconst themePreviewCustomPresetKeys = {\n main: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n navbar: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n toolbar: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n} satisfies ThemePreviewPresetKeyBySection;\n\nfunction isThemePreviewPresetSectionKey(\n sectionKey: ThemePreviewSectionKey,\n): sectionKey is ThemePreviewPresetSectionKey {\n return !isThemePreviewCustomSection(sectionKey);\n}\n\nfunction getThemePreviewSelectedModes(settings: OwpSettingsConfigType) {\n return {\n main: settings.theme.main.palette.mode === 'dark' ? 'dark' : 'light',\n navbar: settings.theme.navbar.palette.mode === 'dark' ? 'dark' : 'light',\n toolbar: settings.theme.toolbar.palette.mode === 'dark' ? 'dark' : 'light',\n } satisfies Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n}\n\nfunction createThemePreviewTemporaryState(\n activeSection: ThemePreviewSectionKey,\n draftSettings: ThemePreviewSettings,\n selectedPresetKeys: ThemePreviewPresetKeyBySection,\n selectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n saveType: ThemePreviewTemporaryState['saveType'],\n) {\n return {\n draftSettings: cloneThemePreviewSettings(draftSettings),\n savedAt: dayjs().toISOString(),\n saveType,\n selectionState: {\n activeSection,\n selectedModes,\n selectedPresetKeys,\n },\n version: 1,\n } satisfies ThemePreviewTemporaryState;\n}\n\nfunction createThemePreviewTemporaryComparableState(\n activeSection: ThemePreviewSectionKey,\n draftSettings: ThemePreviewSettings,\n selectedPresetKeys: ThemePreviewPresetKeyBySection,\n selectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n) {\n return {\n draftSettings,\n selectionState: {\n activeSection,\n selectedModes,\n selectedPresetKeys,\n },\n };\n}\n\nexport function useThemePreview({\n initialSection = 'main',\n initialPresetKeys: _initialPresetKeys,\n presetThemes,\n resetTheme,\n}: UseThemePreviewOptions) {\n const currentSettings = useGetCurrentSettings() as OwpSettingsConfigType;\n const setDefaultSettings = useSetDefaultSettings();\n const presetOptions = useMemo(() => getThemePreviewPresetOptions(presetThemes), [presetThemes]);\n const initialDraftSettings = getThemePreviewDraftSettings(currentSettings);\n const initialSelectionState = useMemo(\n () => getThemePreviewSelectionState(currentSettings, _initialPresetKeys),\n [currentSettings, _initialPresetKeys],\n );\n const resetSettings = useMemo(\n () => getThemePreviewResetSettings(currentSettings, resetTheme, defaultSnackbarTheme),\n [currentSettings, resetTheme],\n );\n const currentSnackbarTheme = useMemo(\n () => merge({}, defaultSnackbarTheme, currentSettings.snackbar),\n [currentSettings],\n );\n const currentSnackbarProviderProps = useMemo(\n () =>\n merge(\n {},\n defaultSnackbarProviderProps,\n (currentSettings as ThemePreviewSettingsWithSnackbarProviderProps)\n .snackbarProviderProps,\n ) as SnackbarProviderTheme,\n [currentSettings],\n );\n\n const [activeSection, setActiveSection] = useState<ThemePreviewSectionKey>(initialSection);\n const [draftSettings, setDraftSettings] = useState<ThemePreviewSettings>(() => initialDraftSettings);\n const [selectedPresetKeys, setSelectedPresetKeys] = useState<ThemePreviewPresetKeyBySection>(\n initialSelectionState.selectedPresetKeys,\n );\n const [selectedModes, setSelectedModes] = useState<\n Record<ThemePreviewPresetSectionKey, ThemePreviewMode>\n >(initialSelectionState.selectedModes);\n const [temporarySnapshot, setTemporarySnapshot] = useState(() => getThemePreviewTemporaryState());\n const [temporaryComparableSnapshot, setTemporaryComparableSnapshot] = useState(() =>\n createThemePreviewTemporaryComparableState(\n initialSection,\n initialDraftSettings,\n initialSelectionState.selectedPresetKeys,\n initialSelectionState.selectedModes,\n ),\n );\n const hasTemporarySnapshot = Boolean(temporarySnapshot);\n const hasTemporaryChanges =\n !isEqual(\n createThemePreviewTemporaryComparableState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n ),\n temporaryComparableSnapshot,\n );\n const canApplyToMain =\n !isEqual(currentSettings.theme, draftSettings.theme) ||\n !isEqual(currentSnackbarTheme, draftSettings.snackbar) ||\n !isEqual(currentSnackbarProviderProps, draftSettings.snackbarProviderProps);\n\n const persistSelectionState = (\n nextPresetKeys: ThemePreviewPresetKeyBySection,\n nextSelectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n ) => {\n setThemePreviewSelectionState({\n selectedPresetKeys: nextPresetKeys,\n selectedModes: nextSelectedModes,\n });\n };\n\n const persistDraftSettings = (nextDraftSettings: ThemePreviewSettings) => {\n setThemePreviewDraftSettings(nextDraftSettings);\n return nextDraftSettings;\n };\n const commitDraftSettings = (nextDraftSettings: ThemePreviewSettings) => {\n setDraftSettings(nextDraftSettings);\n return persistDraftSettings(nextDraftSettings);\n };\n\n const commitSelectionState = (\n nextPresetKeys: ThemePreviewPresetKeyBySection,\n nextSelectedModes: Record<ThemePreviewPresetSectionKey, ThemePreviewMode>,\n ) => {\n setSelectedPresetKeys(nextPresetKeys);\n setSelectedModes(nextSelectedModes);\n persistSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handlePaletteValueChange = (path: string, value: string) => {\n commitDraftSettings(setThemePreviewPaletteValue(draftSettings, activeSection, path, value));\n\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n };\n\n commitSelectionState(nextPresetKeys, selectedModes);\n };\n\n const handlePaletteValuesChange = (updates: Array<{ path: string; value: string }>) => {\n if (!updates.length) {\n return;\n }\n\n commitDraftSettings(setThemePreviewPaletteValues(draftSettings, activeSection, updates));\n\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: THEME_PREVIEW_CUSTOM_PRESET_KEY,\n };\n\n commitSelectionState(nextPresetKeys, selectedModes);\n };\n\n const handlePresetModeChange = (mode: ThemePreviewMode) => {\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n const nextSelectedModes = {\n ...selectedModes,\n [activeSection]: mode,\n };\n\n const nextPresetOption = getThemePreviewPresetOptionsByMode(\n presetOptions,\n activeSection,\n mode,\n )[0];\n\n if (!nextPresetOption) {\n commitSelectionState(selectedPresetKeys, nextSelectedModes);\n return;\n }\n\n const presetTheme = presetThemes[nextPresetOption.key];\n\n if (!presetTheme) {\n commitSelectionState(selectedPresetKeys, nextSelectedModes);\n return;\n }\n\n commitDraftSettings(applyThemePreviewPreset(draftSettings, activeSection, presetTheme));\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: nextPresetOption.key,\n };\n\n commitSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handlePresetKeyChange = (presetKey: string) => {\n if (!isThemePreviewPresetSectionKey(activeSection)) {\n return;\n }\n\n if (presetKey === THEME_PREVIEW_CUSTOM_PRESET_KEY) {\n return;\n }\n\n const presetTheme = presetThemes[presetKey];\n\n if (!presetTheme) {\n return;\n }\n\n commitDraftSettings(applyThemePreviewPreset(draftSettings, activeSection, presetTheme));\n const nextSelectedModes = {\n ...selectedModes,\n [activeSection]: presetTheme.palette.mode === 'dark' ? 'dark' : 'light',\n };\n const nextPresetKeys = {\n ...selectedPresetKeys,\n [activeSection]: presetKey,\n };\n\n commitSelectionState(nextPresetKeys, nextSelectedModes);\n };\n\n const handleReset = () => {\n const nextDraftSettings = merge({}, cloneThemePreviewSettings(resetSettings), {\n snackbarProviderProps: defaultSnackbarProviderProps,\n }) as ThemePreviewSettings;\n const nextSelectedModes = {\n main: resetTheme.main?.palette?.mode === 'dark' ? 'dark' : 'light',\n navbar: resetTheme.navbar?.palette?.mode === 'dark' ? 'dark' : 'light',\n toolbar: resetTheme.toolbar?.palette?.mode === 'dark' ? 'dark' : 'light',\n } satisfies Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n\n commitDraftSettings(nextDraftSettings);\n commitSelectionState(_initialPresetKeys, nextSelectedModes);\n setTemporaryComparableSnapshot(\n createThemePreviewTemporaryComparableState(\n activeSection,\n nextDraftSettings,\n _initialPresetKeys,\n nextSelectedModes,\n ),\n );\n clearThemePreviewAppliedSettings();\n setDefaultSettings({\n theme: resetTheme,\n snackbar: defaultSnackbarTheme,\n snackbarProviderProps: defaultSnackbarProviderProps,\n } as PartialDeep<OwpSettingsConfigType>);\n };\n\n const handleApplyToMain = () => {\n const nextTemporaryState = createThemePreviewTemporaryState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n 'manual',\n );\n\n setThemePreviewDraftSettings(draftSettings);\n persistSelectionState(selectedPresetKeys, selectedModes);\n persistThemePreviewTemporaryState(nextTemporaryState);\n persistThemePreviewAppliedSettings({\n theme: draftSettings.theme,\n snackbar: draftSettings.snackbar,\n snackbarProviderProps: draftSettings.snackbarProviderProps,\n });\n setTemporarySnapshot(nextTemporaryState);\n setTemporaryComparableSnapshot({\n draftSettings,\n selectionState: nextTemporaryState.selectionState,\n });\n setDefaultSettings({\n theme: draftSettings.theme,\n snackbar: draftSettings.snackbar,\n snackbarProviderProps: draftSettings.snackbarProviderProps,\n } as PartialDeep<OwpSettingsConfigType>);\n };\n\n const handleLoadSettings = (\n theme: OwpSettingsConfigType['theme'],\n snackbarTheme = defaultSnackbarTheme,\n snackbarProviderProps: SnackbarProviderTheme = defaultSnackbarProviderProps,\n ) => {\n const nextDraftSettings = merge({}, currentSettings, {\n theme,\n snackbar: merge({}, defaultSnackbarTheme, snackbarTheme),\n snackbarProviderProps: merge(\n {},\n defaultSnackbarProviderProps,\n snackbarProviderProps,\n ),\n }) as ThemePreviewSettings;\n const nextSelectedModes = getThemePreviewSelectedModes(nextDraftSettings);\n\n commitDraftSettings(nextDraftSettings);\n commitSelectionState(themePreviewCustomPresetKeys, nextSelectedModes);\n setTemporaryComparableSnapshot(\n createThemePreviewTemporaryComparableState(\n activeSection,\n nextDraftSettings,\n themePreviewCustomPresetKeys,\n nextSelectedModes,\n ),\n );\n persistThemePreviewAppliedSettings({\n theme,\n snackbar: nextDraftSettings.snackbar,\n snackbarProviderProps: nextDraftSettings.snackbarProviderProps,\n });\n setDefaultSettings({\n theme,\n snackbar: nextDraftSettings.snackbar,\n snackbarProviderProps: nextDraftSettings.snackbarProviderProps,\n } as PartialDeep<OwpSettingsConfigType>);\n };\n\n const handleTemporarySave = (saveType: ThemePreviewTemporaryState['saveType'] = 'manual') => {\n const nextTemporaryState = createThemePreviewTemporaryState(\n activeSection,\n draftSettings,\n selectedPresetKeys,\n selectedModes,\n saveType,\n );\n\n persistThemePreviewTemporaryState(nextTemporaryState);\n setTemporarySnapshot(nextTemporaryState);\n setTemporaryComparableSnapshot({\n draftSettings,\n selectionState: nextTemporaryState.selectionState,\n });\n };\n\n const handleTemporaryLoad = () => {\n const temporaryState = getThemePreviewTemporaryState();\n\n if (!temporaryState) {\n return false;\n }\n\n const nextDraftSettings = cloneThemePreviewSettings(\n merge({}, currentSettings, temporaryState.draftSettings) as ThemePreviewSettings,\n );\n const nextSelectedPresetKeys = merge(\n {},\n selectedPresetKeys,\n temporaryState.selectionState.selectedPresetKeys,\n ) as ThemePreviewPresetKeyBySection;\n const nextSelectedModes = merge(\n {},\n selectedModes,\n temporaryState.selectionState.selectedModes,\n ) as Record<ThemePreviewPresetSectionKey, ThemePreviewMode>;\n const nextActiveSection = temporaryState.selectionState.activeSection;\n\n commitDraftSettings(nextDraftSettings);\n setActiveSection(nextActiveSection);\n commitSelectionState(nextSelectedPresetKeys, nextSelectedModes);\n setTemporarySnapshot(temporaryState);\n setTemporaryComparableSnapshot({\n draftSettings: nextDraftSettings,\n selectionState: temporaryState.selectionState,\n });\n\n return true;\n };\n\n return {\n activeSection,\n canApplyToMain,\n draftSettings,\n hasTemporaryChanges,\n hasTemporarySnapshot,\n presetOptions,\n selectedModes,\n selectedPresetKeys,\n setActiveSection,\n handlePaletteValueChange,\n handlePaletteValuesChange,\n handleApplyToMain,\n handleLoadSettings,\n handlePresetKeyChange,\n handlePresetModeChange,\n handleReset,\n handleTemporaryLoad,\n handleTemporarySave,\n };\n}\n"],"names":["themePreviewCustomPresetKeys","THEME_PREVIEW_CUSTOM_PRESET_KEY","isThemePreviewPresetSectionKey","sectionKey","isThemePreviewCustomSection","__name","getThemePreviewSelectedModes","settings","createThemePreviewTemporaryState","activeSection","draftSettings","selectedPresetKeys","selectedModes","saveType","cloneThemePreviewSettings","dayjs","createThemePreviewTemporaryComparableState","useThemePreview","initialSection","_initialPresetKeys","presetThemes","resetTheme","currentSettings","useGetCurrentSettings","setDefaultSettings","useSetDefaultSettings","presetOptions","useMemo","getThemePreviewPresetOptions","initialDraftSettings","getThemePreviewDraftSettings","initialSelectionState","getThemePreviewSelectionState","resetSettings","getThemePreviewResetSettings","defaultSnackbarTheme","currentSnackbarTheme","merge","currentSnackbarProviderProps","defaultSnackbarProviderProps","setActiveSection","useState","setDraftSettings","setSelectedPresetKeys","setSelectedModes","temporarySnapshot","setTemporarySnapshot","getThemePreviewTemporaryState","temporaryComparableSnapshot","setTemporaryComparableSnapshot","hasTemporarySnapshot","hasTemporaryChanges","isEqual","canApplyToMain","persistSelectionState","nextPresetKeys","nextSelectedModes","setThemePreviewSelectionState","persistDraftSettings","nextDraftSettings","setThemePreviewDraftSettings","commitDraftSettings","commitSelectionState","path","value","setThemePreviewPaletteValue","updates","setThemePreviewPaletteValues","nextTemporaryState","persistThemePreviewTemporaryState","persistThemePreviewAppliedSettings","theme","snackbarTheme","snackbarProviderProps","presetKey","presetTheme","applyThemePreviewPreset","mode","nextPresetOption","getThemePreviewPresetOptionsByMode","_b","_a","_d","_c","_f","_e","clearThemePreviewAppliedSettings","temporaryState","nextSelectedPresetKeys","nextActiveSection"],"mappings":"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"}
@@ -1,95 +1,271 @@
1
- var s = Object.defineProperty;
2
- var r = (e, t) => s(e, "name", { value: t, configurable: !0 });
3
- import { defaultSnackbarTheme as y } from "../configs/snackbar.js";
4
- import { themesConfig as p, defaultToolbarDivider as v, defaultNavbarDivider as P, defaultToolbarSecondaryPalette as o, defaultNavbarSecondaryPalette as c, defaultSecondaryPalette as n, defaultPrimaryPalette as i, darkPaletteText as b, lightPaletteText as f } from "../configs/presets.js";
5
- import { defaultSettingsConfig as x } from "../configs/settings.js";
6
- import { defaultLayoutSurface as l } from "../configs/surface.js";
7
- const k = ["main", "navbar", "toolbar"], g = ["toolbar", "navbar", "main"];
8
- function h(e, t, u, m) {
9
- const d = u.find(
10
- (T) => e.theme[T].palette.mode === t
11
- ), a = d ? e.theme[d].palette.text : void 0;
1
+ var g = Object.defineProperty;
2
+ var t = (e, r) => g(e, "name", { value: r, configurable: !0 });
3
+ import { defaultGridTheme as k } from "../configs/grid.js";
4
+ import { defaultSnackbarProviderProps as h, defaultSnackbarTheme as P } from "../configs/snackbar.js";
5
+ import { defaultTableTheme as v } from "../configs/table.js";
6
+ import { themesConfig as x, defaultToolbarDivider as S, defaultNavbarDivider as w, defaultToolbarSecondaryPalette as s, defaultNavbarSecondaryPalette as f, defaultSecondaryPalette as m, defaultPrimaryPalette as d, darkPaletteText as C, lightPaletteText as _ } from "../configs/presets.js";
7
+ import { defaultSettingsConfig as u } from "../configs/settings.js";
8
+ import { defaultLayoutSurface as T } from "../configs/surface.js";
9
+ const E = ["main", "navbar", "toolbar"], $ = ["toolbar", "navbar", "main"], c = {
10
+ defaultGridTheme: "__OWP_THEME_PREVIEW_DEFAULT_GRID_THEME__",
11
+ defaultSnackbarProviderProps: "__OWP_THEME_PREVIEW_DEFAULT_SNACKBAR_PROVIDER_PROPS__",
12
+ defaultSnackbarTheme: "__OWP_THEME_PREVIEW_DEFAULT_SNACKBAR_THEME__",
13
+ defaultTableTheme: "__OWP_THEME_PREVIEW_DEFAULT_TABLE_THEME__"
14
+ };
15
+ function b(e, r, n, l) {
16
+ const i = n.find(
17
+ (p) => e.theme[p].palette.mode === r
18
+ ), o = i ? e.theme[i].palette.text : void 0;
12
19
  return {
13
- primary: (a == null ? void 0 : a.primary) ?? m.primary ?? "",
14
- secondary: (a == null ? void 0 : a.secondary) ?? m.secondary ?? "",
15
- disabled: (a == null ? void 0 : a.disabled) ?? m.disabled ?? ""
20
+ primary: (o == null ? void 0 : o.primary) ?? l.primary ?? "",
21
+ secondary: (o == null ? void 0 : o.secondary) ?? l.secondary ?? "",
22
+ disabled: (o == null ? void 0 : o.disabled) ?? l.disabled ?? ""
16
23
  };
17
24
  }
18
- r(h, "getThemePreviewTextPalette");
19
- function w(e) {
20
- const t = e.theme.navbar.palette.primary ?? l;
25
+ t(b, "getThemePreviewTextPalette");
26
+ function N(e) {
27
+ const r = e.theme.navbar.palette.primary ?? T;
21
28
  return {
22
- light: t.light ?? l.light,
23
- main: t.main ?? l.main,
24
- dark: t.dark ?? l.dark,
25
- contrastText: t.contrastText ?? l.contrastText
29
+ light: r.light ?? T.light,
30
+ main: r.main ?? T.main,
31
+ dark: r.dark ?? T.dark,
32
+ contrastText: r.contrastText ?? T.contrastText
26
33
  };
27
34
  }
28
- r(w, "getThemePreviewSurfaceExport");
29
- function D(e) {
30
- const t = e.theme.main.palette.primary ?? i;
35
+ t(N, "getThemePreviewSurfaceExport");
36
+ function O(e) {
37
+ const r = e.theme.main.palette.primary ?? d;
31
38
  return {
32
- light: t.light ?? i.light,
33
- main: t.main ?? i.main,
34
- dark: t.dark ?? i.dark,
35
- contrastText: t.contrastText ?? i.contrastText
39
+ light: r.light ?? d.light,
40
+ main: r.main ?? d.main,
41
+ dark: r.dark ?? d.dark,
42
+ contrastText: r.contrastText ?? d.contrastText
36
43
  };
37
44
  }
38
- r(D, "getThemePreviewPrimaryPaletteExport");
39
- function E(e) {
40
- const t = e.theme.main.palette.secondary ?? n;
45
+ t(O, "getThemePreviewPrimaryPaletteExport");
46
+ function R(e) {
47
+ const r = e.theme.main.palette.secondary ?? m;
41
48
  return {
42
- light: t.light ?? n.light,
43
- main: t.main ?? n.main,
44
- dark: t.dark ?? n.dark,
45
- contrastText: t.contrastText ?? n.contrastText
49
+ light: r.light ?? m.light,
50
+ main: r.main ?? m.main,
51
+ dark: r.dark ?? m.dark,
52
+ contrastText: r.contrastText ?? m.contrastText
46
53
  };
47
54
  }
48
- r(E, "getThemePreviewSecondaryPaletteExport");
49
- function N(e) {
50
- const t = e.theme.navbar.palette.secondary ?? c;
55
+ t(R, "getThemePreviewSecondaryPaletteExport");
56
+ function A(e) {
57
+ const r = e.theme.navbar.palette.secondary ?? f;
51
58
  return {
52
- main: t.main ?? c.main,
53
- contrastText: t.contrastText ?? c.contrastText
59
+ main: r.main ?? f.main,
60
+ contrastText: r.contrastText ?? f.contrastText
54
61
  };
55
62
  }
56
- r(N, "getThemePreviewNavbarSecondaryPaletteExport");
57
- function S(e) {
58
- const t = e.theme.toolbar.palette.secondary ?? o;
63
+ t(A, "getThemePreviewNavbarSecondaryPaletteExport");
64
+ function V(e) {
65
+ const r = e.theme.toolbar.palette.secondary ?? s;
59
66
  return {
60
- light: t.light ?? o.light,
61
- main: t.main ?? o.main,
62
- dark: t.dark ?? o.dark,
63
- contrastText: t.contrastText ?? o.contrastText
67
+ light: r.light ?? s.light,
68
+ main: r.main ?? s.main,
69
+ dark: r.dark ?? s.dark,
70
+ contrastText: r.contrastText ?? s.contrastText
64
71
  };
65
72
  }
66
- r(S, "getThemePreviewToolbarSecondaryPaletteExport");
67
- function A(e) {
73
+ t(V, "getThemePreviewToolbarSecondaryPaletteExport");
74
+ function y(e) {
75
+ return e.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/\r/g, "\\r").replace(/\n/g, "\\n");
76
+ }
77
+ t(y, "escapeTsString");
78
+ function D(e) {
79
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e) ? e : `'${y(e)}'`;
80
+ }
81
+ t(D, "formatTsPropertyKey");
82
+ function a(e, r = 0) {
83
+ const n = " ".repeat(r), l = " ".repeat(r + 1);
84
+ if (Array.isArray(e))
85
+ return e.length ? `[
86
+ ${e.map((i) => `${l}${a(i, r + 1)}`).join(`,
87
+ `)}
88
+ ${n}]` : "[]";
89
+ if (e && typeof e == "object") {
90
+ const i = Object.entries(e).filter(
91
+ ([, o]) => o !== void 0
92
+ );
93
+ return i.length ? `{
94
+ ${i.map(([o, p]) => `${l}${D(o)}: ${a(p, r + 1)}`).join(`,
95
+ `)}
96
+ ${n}}` : "{}";
97
+ }
98
+ return typeof e == "string" ? `'${y(e)}'` : typeof e == "number" || typeof e == "boolean" ? String(e) : e === null ? "null" : "undefined";
99
+ }
100
+ t(a, "toTsLiteral");
101
+ function j(e, r) {
102
+ return Object.entries(r).reduce((n, [l, i]) => n.split(`'${l}'`).join(i), e);
103
+ }
104
+ t(j, "replaceTsReferenceTokens");
105
+ function F(e) {
106
+ const r = e.theme.main.grid ?? k;
107
+ return [
108
+ "import type { OwpGridThemeConfigType } from '@owp/core/types';",
109
+ "",
110
+ `export const defaultGridTheme = ${a(r)} satisfies OwpGridThemeConfigType;`,
111
+ ""
112
+ ].join(`
113
+ `);
114
+ }
115
+ t(F, "createThemePreviewGridConfigFile");
116
+ function G(e) {
117
+ return [
118
+ `export const defaultLayoutSurface = ${a(e.surface.defaultLayoutSurface)} as const;`,
119
+ ""
120
+ ].join(`
121
+ `);
122
+ }
123
+ t(G, "createThemePreviewSurfaceConfigFile");
124
+ function L(e) {
125
+ return [
126
+ `export const lightPaletteText = ${a(e.presets.lightPaletteText)};`,
127
+ "",
128
+ `export const darkPaletteText = ${a(e.presets.darkPaletteText)};`,
129
+ "",
130
+ `export const defaultPrimaryPalette = ${a(e.presets.defaultPrimaryPalette)};`,
131
+ "",
132
+ `export const defaultSecondaryPalette = ${a(e.presets.defaultSecondaryPalette)};`,
133
+ "",
134
+ `export const defaultNavbarSecondaryPalette = ${a(e.presets.defaultNavbarSecondaryPalette)};`,
135
+ "",
136
+ `export const defaultNavbarDivider = ${a(e.presets.defaultNavbarDivider)};`,
137
+ "",
138
+ `export const defaultToolbarDivider = ${a(e.presets.defaultToolbarDivider)};`,
139
+ "",
140
+ `export const defaultToolbarSecondaryPalette = ${a(e.presets.defaultToolbarSecondaryPalette)};`,
141
+ ""
142
+ ].join(`
143
+ `);
144
+ }
145
+ t(L, "createThemePreviewPresetsConfigFile");
146
+ function H(e) {
147
+ const r = e.snackbar ?? P, n = e.snackbarProviderProps ?? h;
148
+ return [
149
+ "import type { SnackbarProviderProps } from 'notistack';",
150
+ "",
151
+ "export const snackbarVariantKeys = ['default', 'success', 'info', 'warning', 'error'] as const;",
152
+ "",
153
+ "export type SnackbarVariantKey = (typeof snackbarVariantKeys)[number];",
154
+ "",
155
+ "export type SnackbarVariantTheme = {",
156
+ " backgroundColor: string;",
157
+ " color: string;",
158
+ "};",
159
+ "",
160
+ "export type SnackbarTheme = Record<SnackbarVariantKey, SnackbarVariantTheme>;",
161
+ "",
162
+ "export type SnackbarProviderTheme = Omit<SnackbarProviderProps, 'children'>;",
163
+ "",
164
+ `export const defaultSnackbarTheme = ${a(r)} satisfies SnackbarTheme;`,
165
+ "",
166
+ `export const defaultSnackbarProviderProps = ${a(n)} satisfies SnackbarProviderTheme;`,
167
+ ""
168
+ ].join(`
169
+ `);
170
+ }
171
+ t(H, "createThemePreviewSnackbarConfigFile");
172
+ function W(e) {
173
+ const r = e.theme.main.table ?? v;
174
+ return [
175
+ "import type { OwpTableThemeConfigType } from '@owp/core/types';",
176
+ "",
177
+ "type OwpTableHeaderConfigType = NonNullable<OwpTableThemeConfigType['header']>;",
178
+ "type OwpTableCellConfigType = NonNullable<OwpTableThemeConfigType['cell']>;",
179
+ "",
180
+ "export type ThemePreviewTableCellConfigType = OwpTableCellConfigType & {",
181
+ " backgroundColor?: string;",
182
+ "};",
183
+ "",
184
+ "export type ThemePreviewTableVariantConfigType = {",
185
+ " header?: OwpTableHeaderConfigType;",
186
+ " cell?: ThemePreviewTableCellConfigType;",
187
+ "};",
188
+ "",
189
+ "export type ThemePreviewTableRowConfigType = {",
190
+ " backgroundColor?: string;",
191
+ " hoverBackgroundColor?: string;",
192
+ " selectedBackgroundColor?: string;",
193
+ "};",
194
+ "",
195
+ "export type ThemePreviewTableConfigType = ThemePreviewTableVariantConfigType & {",
196
+ " borderRadius?: number | string;",
197
+ " field?: ThemePreviewTableVariantConfigType;",
198
+ " row?: ThemePreviewTableRowConfigType;",
199
+ "};",
200
+ "",
201
+ `export const defaultTableTheme = ${a(r)} satisfies ThemePreviewTableConfigType;`,
202
+ ""
203
+ ].join(`
204
+ `);
205
+ }
206
+ t(W, "createThemePreviewTableConfigFile");
207
+ function I(e) {
208
+ const r = {
209
+ customScrollbars: u.customScrollbars,
210
+ direction: u.direction,
211
+ snackbar: c.defaultSnackbarTheme,
212
+ snackbarProviderProps: c.defaultSnackbarProviderProps,
213
+ theme: {
214
+ ...e.theme,
215
+ main: {
216
+ ...e.theme.main,
217
+ grid: c.defaultGridTheme,
218
+ table: c.defaultTableTheme
219
+ }
220
+ }
221
+ };
222
+ return [
223
+ "import type { OwpSettingsConfigType } from '@owp/core/types';",
224
+ "import type { PartialDeep } from 'type-fest';",
225
+ "import { defaultGridTheme } from './grid';",
226
+ "import { defaultSnackbarProviderProps, defaultSnackbarTheme } from './snackbar';",
227
+ "import { defaultTableTheme } from './table';",
228
+ "",
229
+ `export const defaultSettingsConfig = ${j(a(r), {
230
+ [c.defaultGridTheme]: "defaultGridTheme",
231
+ [c.defaultSnackbarProviderProps]: "defaultSnackbarProviderProps",
232
+ [c.defaultSnackbarTheme]: "defaultSnackbarTheme",
233
+ [c.defaultTableTheme]: "defaultTableTheme"
234
+ })} as PartialDeep<OwpSettingsConfigType> & {`,
235
+ " snackbarProviderProps: typeof defaultSnackbarProviderProps;",
236
+ "};",
237
+ ""
238
+ ].join(`
239
+ `);
240
+ }
241
+ t(I, "createThemePreviewSettingsConfigFile");
242
+ function K(e) {
243
+ const r = e.snackbarProviderProps ?? h;
68
244
  return {
69
245
  surface: {
70
- defaultLayoutSurface: w(e)
246
+ defaultLayoutSurface: N(e)
71
247
  },
72
248
  presets: {
73
- lightPaletteText: h(
249
+ lightPaletteText: b(
74
250
  e,
75
251
  "light",
76
- k,
77
- f
252
+ E,
253
+ _
78
254
  ),
79
- darkPaletteText: h(
255
+ darkPaletteText: b(
80
256
  e,
81
257
  "dark",
82
- g,
83
- b
258
+ $,
259
+ C
84
260
  ),
85
- defaultPrimaryPalette: D(e),
86
- defaultSecondaryPalette: E(e),
87
- defaultNavbarDivider: e.theme.navbar.palette.divider ?? P,
88
- defaultNavbarSecondaryPalette: N(e),
89
- defaultToolbarDivider: e.theme.toolbar.palette.divider ?? v,
90
- defaultToolbarSecondaryPalette: S(e),
261
+ defaultPrimaryPalette: O(e),
262
+ defaultSecondaryPalette: R(e),
263
+ defaultNavbarDivider: e.theme.navbar.palette.divider ?? w,
264
+ defaultNavbarSecondaryPalette: A(e),
265
+ defaultToolbarDivider: e.theme.toolbar.palette.divider ?? S,
266
+ defaultToolbarSecondaryPalette: V(e),
91
267
  themesConfig: {
92
- ...p,
268
+ ...x,
93
269
  light1: e.theme.main,
94
270
  light2: e.theme.navbar,
95
271
  surfaceDark: e.theme.toolbar
@@ -97,15 +273,48 @@ function A(e) {
97
273
  },
98
274
  settings: {
99
275
  defaultSettingsConfig: {
100
- ...x,
276
+ ...u,
277
+ snackbarProviderProps: r,
101
278
  theme: e.theme
102
279
  },
103
- defaultSnackbarTheme: e.snackbar ?? y
280
+ defaultSnackbarTheme: e.snackbar ?? P,
281
+ defaultSnackbarProviderProps: r
104
282
  }
105
283
  };
106
284
  }
107
- r(A, "createThemePreviewExportData");
285
+ t(K, "createThemePreviewExportData");
286
+ function Q(e) {
287
+ const r = K(e);
288
+ return [
289
+ {
290
+ fileName: "grid.ts",
291
+ content: F(e)
292
+ },
293
+ {
294
+ fileName: "presets.ts",
295
+ content: L(r)
296
+ },
297
+ {
298
+ fileName: "settings.ts",
299
+ content: I(e)
300
+ },
301
+ {
302
+ fileName: "snackbar.ts",
303
+ content: H(e)
304
+ },
305
+ {
306
+ fileName: "surface.ts",
307
+ content: G(r)
308
+ },
309
+ {
310
+ fileName: "table.ts",
311
+ content: W(e)
312
+ }
313
+ ];
314
+ }
315
+ t(Q, "createThemePreviewAppConfigFiles");
108
316
  export {
109
- A as createThemePreviewExportData
317
+ Q as createThemePreviewAppConfigFiles,
318
+ K as createThemePreviewExportData
110
319
  };
111
320
  //# sourceMappingURL=themePreviewExport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"themePreviewExport.js","sources":["../../../../src/features/themePreview/utils/themePreviewExport.ts"],"sourcesContent":["import { defaultSnackbarTheme } from '@/features/themePreview/configs/snackbar';\nimport {\n darkPaletteText,\n defaultNavbarDivider,\n defaultNavbarSecondaryPalette,\n defaultPrimaryPalette,\n defaultSecondaryPalette,\n defaultToolbarDivider,\n defaultToolbarSecondaryPalette,\n lightPaletteText,\n themesConfig,\n} from '@/features/themePreview/configs/presets';\nimport { defaultSettingsConfig } from '@/features/themePreview/configs/settings';\nimport { defaultLayoutSurface } from '@/features/themePreview/configs/surface';\nimport type { OwpSettingsConfigType } from '@/types';\nimport type { ThemePreviewPaletteSectionKey, ThemePreviewSettings } from '../types';\n\ntype ThemePreviewTextPalette = {\n disabled?: string;\n primary?: string;\n secondary?: string;\n};\n\nconst themePreviewLightTextSections: ThemePreviewPaletteSectionKey[] = ['main', 'navbar', 'toolbar'];\nconst themePreviewDarkTextSections: ThemePreviewPaletteSectionKey[] = ['toolbar', 'navbar', 'main'];\n\nfunction getThemePreviewTextPalette(\n settings: OwpSettingsConfigType,\n mode: 'light' | 'dark',\n sectionKeys: ThemePreviewPaletteSectionKey[],\n fallbackPalette: ThemePreviewTextPalette,\n) {\n const matchedTheme = sectionKeys.find(\n (sectionKey) => settings.theme[sectionKey].palette.mode === mode,\n );\n const textPalette = matchedTheme ? settings.theme[matchedTheme].palette.text : undefined;\n\n return {\n primary: textPalette?.primary ?? fallbackPalette.primary ?? '',\n secondary: textPalette?.secondary ?? fallbackPalette.secondary ?? '',\n disabled: textPalette?.disabled ?? fallbackPalette.disabled ?? '',\n };\n}\n\nfunction getThemePreviewSurfaceExport(settings: OwpSettingsConfigType) {\n const surfacePalette = settings.theme.navbar.palette.primary ?? defaultLayoutSurface;\n\n return {\n light: surfacePalette.light ?? defaultLayoutSurface.light,\n main: surfacePalette.main ?? defaultLayoutSurface.main,\n dark: surfacePalette.dark ?? defaultLayoutSurface.dark,\n contrastText: surfacePalette.contrastText ?? defaultLayoutSurface.contrastText,\n };\n}\n\nfunction getThemePreviewPrimaryPaletteExport(settings: OwpSettingsConfigType) {\n const primaryPalette = settings.theme.main.palette.primary ?? defaultPrimaryPalette;\n\n return {\n light: primaryPalette.light ?? defaultPrimaryPalette.light,\n main: primaryPalette.main ?? defaultPrimaryPalette.main,\n dark: primaryPalette.dark ?? defaultPrimaryPalette.dark,\n contrastText: primaryPalette.contrastText ?? defaultPrimaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette = settings.theme.main.palette.secondary ?? defaultSecondaryPalette;\n\n return {\n light: secondaryPalette.light ?? defaultSecondaryPalette.light,\n main: secondaryPalette.main ?? defaultSecondaryPalette.main,\n dark: secondaryPalette.dark ?? defaultSecondaryPalette.dark,\n contrastText: secondaryPalette.contrastText ?? defaultSecondaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewNavbarSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette =\n settings.theme.navbar.palette.secondary ?? defaultNavbarSecondaryPalette;\n\n return {\n main: secondaryPalette.main ?? defaultNavbarSecondaryPalette.main,\n contrastText: secondaryPalette.contrastText ?? defaultNavbarSecondaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewToolbarSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette =\n settings.theme.toolbar.palette.secondary ?? defaultToolbarSecondaryPalette;\n\n return {\n light: secondaryPalette.light ?? defaultToolbarSecondaryPalette.light,\n main: secondaryPalette.main ?? defaultToolbarSecondaryPalette.main,\n dark: secondaryPalette.dark ?? defaultToolbarSecondaryPalette.dark,\n contrastText:\n secondaryPalette.contrastText ?? defaultToolbarSecondaryPalette.contrastText,\n };\n}\n\nexport function createThemePreviewExportData(draftSettings: ThemePreviewSettings) {\n return {\n surface: {\n defaultLayoutSurface: getThemePreviewSurfaceExport(draftSettings),\n },\n presets: {\n lightPaletteText: getThemePreviewTextPalette(\n draftSettings,\n 'light',\n themePreviewLightTextSections,\n lightPaletteText,\n ),\n darkPaletteText: getThemePreviewTextPalette(\n draftSettings,\n 'dark',\n themePreviewDarkTextSections,\n darkPaletteText,\n ),\n defaultPrimaryPalette: getThemePreviewPrimaryPaletteExport(draftSettings),\n defaultSecondaryPalette: getThemePreviewSecondaryPaletteExport(draftSettings),\n defaultNavbarDivider:\n draftSettings.theme.navbar.palette.divider ?? defaultNavbarDivider,\n defaultNavbarSecondaryPalette: getThemePreviewNavbarSecondaryPaletteExport(draftSettings),\n defaultToolbarDivider:\n draftSettings.theme.toolbar.palette.divider ?? defaultToolbarDivider,\n defaultToolbarSecondaryPalette: getThemePreviewToolbarSecondaryPaletteExport(draftSettings),\n themesConfig: {\n ...themesConfig,\n light1: draftSettings.theme.main,\n light2: draftSettings.theme.navbar,\n surfaceDark: draftSettings.theme.toolbar,\n },\n },\n settings: {\n defaultSettingsConfig: {\n ...defaultSettingsConfig,\n theme: draftSettings.theme,\n },\n defaultSnackbarTheme: draftSettings.snackbar ?? defaultSnackbarTheme,\n },\n };\n}\n"],"names":["themePreviewLightTextSections","themePreviewDarkTextSections","getThemePreviewTextPalette","settings","mode","sectionKeys","fallbackPalette","matchedTheme","sectionKey","textPalette","__name","getThemePreviewSurfaceExport","surfacePalette","defaultLayoutSurface","getThemePreviewPrimaryPaletteExport","primaryPalette","defaultPrimaryPalette","getThemePreviewSecondaryPaletteExport","secondaryPalette","defaultSecondaryPalette","getThemePreviewNavbarSecondaryPaletteExport","defaultNavbarSecondaryPalette","getThemePreviewToolbarSecondaryPaletteExport","defaultToolbarSecondaryPalette","createThemePreviewExportData","draftSettings","lightPaletteText","darkPaletteText","defaultNavbarDivider","defaultToolbarDivider","themesConfig","defaultSettingsConfig","defaultSnackbarTheme"],"mappings":"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"}
1
+ {"version":3,"file":"themePreviewExport.js","sources":["../../../../src/features/themePreview/utils/themePreviewExport.ts"],"sourcesContent":["import { defaultGridTheme } from '@/features/themePreview/configs/grid';\nimport {\n defaultSnackbarProviderProps,\n defaultSnackbarTheme,\n type SnackbarProviderTheme,\n type SnackbarTheme,\n} from '@/features/themePreview/configs/snackbar';\nimport { defaultTableTheme } from '@/features/themePreview/configs/table';\nimport {\n darkPaletteText,\n defaultNavbarDivider,\n defaultNavbarSecondaryPalette,\n defaultPrimaryPalette,\n defaultSecondaryPalette,\n defaultToolbarDivider,\n defaultToolbarSecondaryPalette,\n lightPaletteText,\n themesConfig,\n} from '@/features/themePreview/configs/presets';\nimport { defaultSettingsConfig } from '@/features/themePreview/configs/settings';\nimport { defaultLayoutSurface } from '@/features/themePreview/configs/surface';\nimport type { OwpSettingsConfigType } from '@/types';\nimport type { ThemePreviewPaletteSectionKey, ThemePreviewSettings } from '../types';\n\ntype ThemePreviewTextPalette = {\n disabled?: string;\n primary?: string;\n secondary?: string;\n};\n\nexport interface ThemePreviewExportData {\n presets: {\n darkPaletteText: ThemePreviewTextPalette;\n defaultNavbarDivider: string;\n defaultNavbarSecondaryPalette: Record<string, string | undefined>;\n defaultPrimaryPalette: Record<string, string | undefined>;\n defaultSecondaryPalette: Record<string, string | undefined>;\n defaultToolbarDivider: string;\n defaultToolbarSecondaryPalette: Record<string, string | undefined>;\n lightPaletteText: ThemePreviewTextPalette;\n themesConfig: Record<string, unknown>;\n };\n settings: {\n defaultSettingsConfig: Omit<typeof defaultSettingsConfig, 'snackbar' | 'theme'> & {\n snackbar: SnackbarTheme;\n snackbarProviderProps: SnackbarProviderTheme;\n theme: OwpSettingsConfigType['theme'];\n };\n defaultSnackbarProviderProps: SnackbarProviderTheme;\n defaultSnackbarTheme: SnackbarTheme;\n };\n surface: {\n defaultLayoutSurface: {\n contrastText?: string;\n dark?: string;\n light?: string;\n main?: string;\n };\n };\n}\n\nexport interface ThemePreviewAppConfigFile {\n content: string;\n fileName: string;\n}\n\nconst themePreviewLightTextSections: ThemePreviewPaletteSectionKey[] = ['main', 'navbar', 'toolbar'];\nconst themePreviewDarkTextSections: ThemePreviewPaletteSectionKey[] = ['toolbar', 'navbar', 'main'];\nconst themePreviewRefTokens = {\n defaultGridTheme: '__OWP_THEME_PREVIEW_DEFAULT_GRID_THEME__',\n defaultSnackbarProviderProps: '__OWP_THEME_PREVIEW_DEFAULT_SNACKBAR_PROVIDER_PROPS__',\n defaultSnackbarTheme: '__OWP_THEME_PREVIEW_DEFAULT_SNACKBAR_THEME__',\n defaultTableTheme: '__OWP_THEME_PREVIEW_DEFAULT_TABLE_THEME__',\n} as const;\n\nfunction getThemePreviewTextPalette(\n settings: OwpSettingsConfigType,\n mode: 'light' | 'dark',\n sectionKeys: ThemePreviewPaletteSectionKey[],\n fallbackPalette: ThemePreviewTextPalette,\n) {\n const matchedTheme = sectionKeys.find(\n (sectionKey) => settings.theme[sectionKey].palette.mode === mode,\n );\n const textPalette = matchedTheme ? settings.theme[matchedTheme].palette.text : undefined;\n\n return {\n primary: textPalette?.primary ?? fallbackPalette.primary ?? '',\n secondary: textPalette?.secondary ?? fallbackPalette.secondary ?? '',\n disabled: textPalette?.disabled ?? fallbackPalette.disabled ?? '',\n };\n}\n\nfunction getThemePreviewSurfaceExport(settings: OwpSettingsConfigType) {\n const surfacePalette = settings.theme.navbar.palette.primary ?? defaultLayoutSurface;\n\n return {\n light: surfacePalette.light ?? defaultLayoutSurface.light,\n main: surfacePalette.main ?? defaultLayoutSurface.main,\n dark: surfacePalette.dark ?? defaultLayoutSurface.dark,\n contrastText: surfacePalette.contrastText ?? defaultLayoutSurface.contrastText,\n };\n}\n\nfunction getThemePreviewPrimaryPaletteExport(settings: OwpSettingsConfigType) {\n const primaryPalette = settings.theme.main.palette.primary ?? defaultPrimaryPalette;\n\n return {\n light: primaryPalette.light ?? defaultPrimaryPalette.light,\n main: primaryPalette.main ?? defaultPrimaryPalette.main,\n dark: primaryPalette.dark ?? defaultPrimaryPalette.dark,\n contrastText: primaryPalette.contrastText ?? defaultPrimaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette = settings.theme.main.palette.secondary ?? defaultSecondaryPalette;\n\n return {\n light: secondaryPalette.light ?? defaultSecondaryPalette.light,\n main: secondaryPalette.main ?? defaultSecondaryPalette.main,\n dark: secondaryPalette.dark ?? defaultSecondaryPalette.dark,\n contrastText: secondaryPalette.contrastText ?? defaultSecondaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewNavbarSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette =\n settings.theme.navbar.palette.secondary ?? defaultNavbarSecondaryPalette;\n\n return {\n main: secondaryPalette.main ?? defaultNavbarSecondaryPalette.main,\n contrastText: secondaryPalette.contrastText ?? defaultNavbarSecondaryPalette.contrastText,\n };\n}\n\nfunction getThemePreviewToolbarSecondaryPaletteExport(settings: OwpSettingsConfigType) {\n const secondaryPalette =\n settings.theme.toolbar.palette.secondary ?? defaultToolbarSecondaryPalette;\n\n return {\n light: secondaryPalette.light ?? defaultToolbarSecondaryPalette.light,\n main: secondaryPalette.main ?? defaultToolbarSecondaryPalette.main,\n dark: secondaryPalette.dark ?? defaultToolbarSecondaryPalette.dark,\n contrastText:\n secondaryPalette.contrastText ?? defaultToolbarSecondaryPalette.contrastText,\n };\n}\n\nfunction escapeTsString(value: string) {\n return value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\r/g, '\\\\r')\n .replace(/\\n/g, '\\\\n');\n}\n\nfunction formatTsPropertyKey(key: string) {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? key : `'${escapeTsString(key)}'`;\n}\n\nfunction toTsLiteral(value: unknown, indentLevel = 0): string {\n const indent = ' '.repeat(indentLevel);\n const nextIndent = ' '.repeat(indentLevel + 1);\n\n if (Array.isArray(value)) {\n if (!value.length) {\n return '[]';\n }\n\n return `[\\n${value.map((item) => `${nextIndent}${toTsLiteral(item, indentLevel + 1)}`).join(',\\n')}\\n${indent}]`;\n }\n\n if (value && typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>).filter(\n ([, entryValue]) => entryValue !== undefined,\n );\n\n if (!entries.length) {\n return '{}';\n }\n\n return `{\\n${entries.map(([key, entryValue]) => `${nextIndent}${formatTsPropertyKey(key)}: ${toTsLiteral(entryValue, indentLevel + 1)}`).join(',\\n')}\\n${indent}}`;\n }\n\n if (typeof value === 'string') {\n return `'${escapeTsString(value)}'`;\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (value === null) {\n return 'null';\n }\n\n return 'undefined';\n}\n\nfunction replaceTsReferenceTokens(\n literal: string,\n replacements: Record<string, string>,\n) {\n return Object.entries(replacements).reduce((acc, [token, replacement]) => {\n return acc.split(`'${token}'`).join(replacement);\n }, literal);\n}\n\nfunction createThemePreviewGridConfigFile(draftSettings: ThemePreviewSettings) {\n const gridTheme = draftSettings.theme.main.grid ?? defaultGridTheme;\n\n return [\n \"import type { OwpGridThemeConfigType } from '@owp/core/types';\",\n '',\n `export const defaultGridTheme = ${toTsLiteral(gridTheme)} satisfies OwpGridThemeConfigType;`,\n '',\n ].join('\\n');\n}\n\nfunction createThemePreviewSurfaceConfigFile(exportData: ThemePreviewExportData) {\n return [\n `export const defaultLayoutSurface = ${toTsLiteral(exportData.surface.defaultLayoutSurface)} as const;`,\n '',\n ].join('\\n');\n}\n\nfunction createThemePreviewPresetsConfigFile(exportData: ThemePreviewExportData) {\n return [\n `export const lightPaletteText = ${toTsLiteral(exportData.presets.lightPaletteText)};`,\n '',\n `export const darkPaletteText = ${toTsLiteral(exportData.presets.darkPaletteText)};`,\n '',\n `export const defaultPrimaryPalette = ${toTsLiteral(exportData.presets.defaultPrimaryPalette)};`,\n '',\n `export const defaultSecondaryPalette = ${toTsLiteral(exportData.presets.defaultSecondaryPalette)};`,\n '',\n `export const defaultNavbarSecondaryPalette = ${toTsLiteral(exportData.presets.defaultNavbarSecondaryPalette)};`,\n '',\n `export const defaultNavbarDivider = ${toTsLiteral(exportData.presets.defaultNavbarDivider)};`,\n '',\n `export const defaultToolbarDivider = ${toTsLiteral(exportData.presets.defaultToolbarDivider)};`,\n '',\n `export const defaultToolbarSecondaryPalette = ${toTsLiteral(exportData.presets.defaultToolbarSecondaryPalette)};`,\n '',\n ].join('\\n');\n}\n\nfunction createThemePreviewSnackbarConfigFile(draftSettings: ThemePreviewSettings) {\n const snackbarTheme = draftSettings.snackbar ?? defaultSnackbarTheme;\n const snackbarProviderProps =\n draftSettings.snackbarProviderProps ?? defaultSnackbarProviderProps;\n\n return [\n \"import type { SnackbarProviderProps } from 'notistack';\",\n '',\n \"export const snackbarVariantKeys = ['default', 'success', 'info', 'warning', 'error'] as const;\",\n '',\n 'export type SnackbarVariantKey = (typeof snackbarVariantKeys)[number];',\n '',\n 'export type SnackbarVariantTheme = {',\n ' backgroundColor: string;',\n ' color: string;',\n '};',\n '',\n 'export type SnackbarTheme = Record<SnackbarVariantKey, SnackbarVariantTheme>;',\n '',\n \"export type SnackbarProviderTheme = Omit<SnackbarProviderProps, 'children'>;\",\n '',\n `export const defaultSnackbarTheme = ${toTsLiteral(snackbarTheme)} satisfies SnackbarTheme;`,\n '',\n `export const defaultSnackbarProviderProps = ${toTsLiteral(snackbarProviderProps)} satisfies SnackbarProviderTheme;`,\n '',\n ].join('\\n');\n}\n\nfunction createThemePreviewTableConfigFile(draftSettings: ThemePreviewSettings) {\n const tableTheme = draftSettings.theme.main.table ?? defaultTableTheme;\n\n return [\n \"import type { OwpTableThemeConfigType } from '@owp/core/types';\",\n '',\n \"type OwpTableHeaderConfigType = NonNullable<OwpTableThemeConfigType['header']>;\",\n \"type OwpTableCellConfigType = NonNullable<OwpTableThemeConfigType['cell']>;\",\n '',\n 'export type ThemePreviewTableCellConfigType = OwpTableCellConfigType & {',\n ' backgroundColor?: string;',\n '};',\n '',\n 'export type ThemePreviewTableVariantConfigType = {',\n ' header?: OwpTableHeaderConfigType;',\n ' cell?: ThemePreviewTableCellConfigType;',\n '};',\n '',\n 'export type ThemePreviewTableRowConfigType = {',\n ' backgroundColor?: string;',\n ' hoverBackgroundColor?: string;',\n ' selectedBackgroundColor?: string;',\n '};',\n '',\n 'export type ThemePreviewTableConfigType = ThemePreviewTableVariantConfigType & {',\n ' borderRadius?: number | string;',\n ' field?: ThemePreviewTableVariantConfigType;',\n ' row?: ThemePreviewTableRowConfigType;',\n '};',\n '',\n `export const defaultTableTheme = ${toTsLiteral(tableTheme)} satisfies ThemePreviewTableConfigType;`,\n '',\n ].join('\\n');\n}\n\nfunction createThemePreviewSettingsConfigFile(draftSettings: ThemePreviewSettings) {\n const nextSettingsConfig = {\n customScrollbars: defaultSettingsConfig.customScrollbars,\n direction: defaultSettingsConfig.direction,\n snackbar: themePreviewRefTokens.defaultSnackbarTheme,\n snackbarProviderProps: themePreviewRefTokens.defaultSnackbarProviderProps,\n theme: {\n ...draftSettings.theme,\n main: {\n ...draftSettings.theme.main,\n grid: themePreviewRefTokens.defaultGridTheme,\n table: themePreviewRefTokens.defaultTableTheme,\n },\n },\n };\n\n const settingsLiteral = replaceTsReferenceTokens(toTsLiteral(nextSettingsConfig), {\n [themePreviewRefTokens.defaultGridTheme]: 'defaultGridTheme',\n [themePreviewRefTokens.defaultSnackbarProviderProps]: 'defaultSnackbarProviderProps',\n [themePreviewRefTokens.defaultSnackbarTheme]: 'defaultSnackbarTheme',\n [themePreviewRefTokens.defaultTableTheme]: 'defaultTableTheme',\n });\n\n return [\n \"import type { OwpSettingsConfigType } from '@owp/core/types';\",\n \"import type { PartialDeep } from 'type-fest';\",\n \"import { defaultGridTheme } from './grid';\",\n \"import { defaultSnackbarProviderProps, defaultSnackbarTheme } from './snackbar';\",\n \"import { defaultTableTheme } from './table';\",\n '',\n `export const defaultSettingsConfig = ${settingsLiteral} as PartialDeep<OwpSettingsConfigType> & {`,\n ' snackbarProviderProps: typeof defaultSnackbarProviderProps;',\n '};',\n '',\n ].join('\\n');\n}\n\nexport function createThemePreviewExportData(\n draftSettings: ThemePreviewSettings,\n): ThemePreviewExportData {\n const resolvedSnackbarProviderProps =\n draftSettings.snackbarProviderProps ?? defaultSnackbarProviderProps;\n\n return {\n surface: {\n defaultLayoutSurface: getThemePreviewSurfaceExport(draftSettings),\n },\n presets: {\n lightPaletteText: getThemePreviewTextPalette(\n draftSettings,\n 'light',\n themePreviewLightTextSections,\n lightPaletteText,\n ),\n darkPaletteText: getThemePreviewTextPalette(\n draftSettings,\n 'dark',\n themePreviewDarkTextSections,\n darkPaletteText,\n ),\n defaultPrimaryPalette: getThemePreviewPrimaryPaletteExport(draftSettings),\n defaultSecondaryPalette: getThemePreviewSecondaryPaletteExport(draftSettings),\n defaultNavbarDivider:\n draftSettings.theme.navbar.palette.divider ?? defaultNavbarDivider,\n defaultNavbarSecondaryPalette: getThemePreviewNavbarSecondaryPaletteExport(draftSettings),\n defaultToolbarDivider:\n draftSettings.theme.toolbar.palette.divider ?? defaultToolbarDivider,\n defaultToolbarSecondaryPalette: getThemePreviewToolbarSecondaryPaletteExport(draftSettings),\n themesConfig: {\n ...themesConfig,\n light1: draftSettings.theme.main,\n light2: draftSettings.theme.navbar,\n surfaceDark: draftSettings.theme.toolbar,\n },\n },\n settings: {\n defaultSettingsConfig: {\n ...defaultSettingsConfig,\n snackbarProviderProps: resolvedSnackbarProviderProps,\n theme: draftSettings.theme,\n },\n defaultSnackbarTheme: draftSettings.snackbar ?? defaultSnackbarTheme,\n defaultSnackbarProviderProps: resolvedSnackbarProviderProps,\n },\n };\n}\n\nexport function createThemePreviewAppConfigFiles(\n draftSettings: ThemePreviewSettings,\n): ThemePreviewAppConfigFile[] {\n const exportData = createThemePreviewExportData(draftSettings);\n\n return [\n {\n fileName: 'grid.ts',\n content: createThemePreviewGridConfigFile(draftSettings),\n },\n {\n fileName: 'presets.ts',\n content: createThemePreviewPresetsConfigFile(exportData),\n },\n {\n fileName: 'settings.ts',\n content: createThemePreviewSettingsConfigFile(draftSettings),\n },\n {\n fileName: 'snackbar.ts',\n content: createThemePreviewSnackbarConfigFile(draftSettings),\n },\n {\n fileName: 'surface.ts',\n content: createThemePreviewSurfaceConfigFile(exportData),\n },\n {\n fileName: 'table.ts',\n content: createThemePreviewTableConfigFile(draftSettings),\n },\n ];\n}\n"],"names":["themePreviewLightTextSections","themePreviewDarkTextSections","themePreviewRefTokens","getThemePreviewTextPalette","settings","mode","sectionKeys","fallbackPalette","matchedTheme","sectionKey","textPalette","__name","getThemePreviewSurfaceExport","surfacePalette","defaultLayoutSurface","getThemePreviewPrimaryPaletteExport","primaryPalette","defaultPrimaryPalette","getThemePreviewSecondaryPaletteExport","secondaryPalette","defaultSecondaryPalette","getThemePreviewNavbarSecondaryPaletteExport","defaultNavbarSecondaryPalette","getThemePreviewToolbarSecondaryPaletteExport","defaultToolbarSecondaryPalette","escapeTsString","value","formatTsPropertyKey","key","toTsLiteral","indentLevel","indent","nextIndent","item","entries","entryValue","replaceTsReferenceTokens","literal","replacements","acc","token","replacement","createThemePreviewGridConfigFile","draftSettings","gridTheme","defaultGridTheme","createThemePreviewSurfaceConfigFile","exportData","createThemePreviewPresetsConfigFile","createThemePreviewSnackbarConfigFile","snackbarTheme","defaultSnackbarTheme","snackbarProviderProps","defaultSnackbarProviderProps","createThemePreviewTableConfigFile","tableTheme","defaultTableTheme","createThemePreviewSettingsConfigFile","nextSettingsConfig","defaultSettingsConfig","createThemePreviewExportData","resolvedSnackbarProviderProps","lightPaletteText","darkPaletteText","defaultNavbarDivider","defaultToolbarDivider","themesConfig","createThemePreviewAppConfigFiles"],"mappings":"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"}