@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.
- package/configs/theme.d.ts +3 -0
- package/configs/theme.js +1 -0
- package/dist/_virtual/index10.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index15.js +2 -2
- package/dist/_virtual/index5.js +2 -2
- package/dist/configs/defaultConfig.js +1 -1
- package/dist/configs/theme.js +28 -0
- package/dist/configs/theme.js.map +1 -0
- package/dist/features/themePreview/components/ThemePreviewColorField.js +279 -208
- package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
- package/dist/features/themePreview/configs/presets.js +6 -38
- package/dist/features/themePreview/configs/presets.js.map +1 -1
- package/dist/features/themePreview/configs/previewStorage.js +28 -27
- package/dist/features/themePreview/configs/previewStorage.js.map +1 -1
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +166 -154
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
- package/dist/features/themePreview/hooks/useThemePreview.js +202 -157
- package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewExport.js +276 -67
- package/dist/features/themePreview/utils/themePreviewExport.js.map +1 -1
- package/dist/features/themePreview.js +52 -52
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/configs/theme/index.d.ts +6 -0
- package/dist/types/features/themePreview/configs/index.d.ts +1 -1
- package/dist/types/features/themePreview/configs/presets.d.ts +0 -1
- package/dist/types/features/themePreview/configs/previewStorage.d.ts +1 -0
- package/dist/types/features/themePreview/hooks/useThemePreview.d.ts +2 -1
- package/dist/types/features/themePreview/utils/index.d.ts +1 -1
- package/dist/types/features/themePreview/utils/themePreviewExport.d.ts +38 -1083
- package/dist/types/utils/zipUtil.d.ts +1 -0
- package/dist/utils/zipUtil.js +38 -36
- package/dist/utils/zipUtil.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemePreviewDialog.js","sources":["../../../../src/features/themePreview/dialogs/ThemePreviewDialog.tsx"],"sourcesContent":["import { OwpDialog } from '@/components/OwpDialog';\nimport {\n defaultSnackbarTheme,\n type SnackbarTheme,\n} from '@/features/themePreview/configs/snackbar';\nimport themesConfig from '@/features/themePreview/configs/presets';\nimport { defaultSettingsConfig } from '@/features/themePreview/configs/settings';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport { readZipEntryJson, saveAsZipFile } from '@/utils';\nimport DownloadOutlinedIcon from '@mui/icons-material/DownloadOutlined';\nimport RestoreOutlinedIcon from '@mui/icons-material/RestoreOutlined';\nimport SaveOutlinedIcon from '@mui/icons-material/SaveOutlined';\nimport UploadFileOutlinedIcon from '@mui/icons-material/UploadFileOutlined';\nimport { Button, TextField, Typography } from '@mui/material';\nimport { useDialogs, type DialogComponent, type DialogProps } from '@toolpad/core/useDialogs';\nimport { enqueueSnackbar } from 'notistack';\nimport { ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { ThemePreviewCanvas, ThemePreviewControls } from '../components';\nimport { useThemePreview } from '../hooks';\nimport type {\n ThemePreviewDialogPayload,\n ThemePreviewPresetThemes,\n ThemePreviewSectionKey,\n} from '../types';\nimport { createThemePreviewExportData, resetThemePreviewSessionState } from '../utils';\n\nconst themePreviewPresetThemes = themesConfig as ThemePreviewPresetThemes;\nconst themePreviewArchiveAccept = '.owp,.zip,application/zip';\nconst THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS = 5 * 60 * 1000;\nconst THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS = 2 * 1000;\nconst THEME_PREVIEW_AUTO_SAVE_RETRY_MS = 15 * 1000;\n\ntype ThemePreviewSettingsArchive = {\n defaultSettingsConfig?: {\n theme?: typeof defaultSettingsConfig.theme;\n };\n defaultSnackbarTheme?: SnackbarTheme;\n};\ntype ThemePreviewSaveDialogPayload = {\n initialFileName: string;\n};\n\nfunction createThemePreviewArchiveFiles(\n exportData: ReturnType<typeof createThemePreviewExportData>,\n) {\n return Object.entries(exportData).map(([fileName, fileData]) => ({\n fileName,\n blob: new Blob([JSON.stringify(fileData, null, 2)], {\n type: 'application/json',\n }),\n }));\n}\n\nfunction getThemePreviewConfigFileTitle(value: string) {\n const sanitizedValue = value\n .trim()\n .replace(/[^0-9A-Za-z가-힣 _-]+/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^[-_]+|[-_]+$/g, '');\n\n return sanitizedValue ? `theme-preview-config-${sanitizedValue}` : 'theme-preview-config';\n}\n\nconst themePreviewActionButtonSx = {\n '&.MuiButton-root': {\n fontSize: '1.3rem',\n letterSpacing: '0.04rem',\n },\n '&.MuiButton-sizeSmall': {\n fontSize: '1.3rem',\n letterSpacing: '0.04rem',\n minHeight: 42,\n px: 2.25,\n },\n '& .MuiButton-startIcon': {\n mr: 0.75,\n },\n fontWeight: 800,\n lineHeight: 1.2,\n minHeight: 42,\n px: 2.25,\n whiteSpace: 'nowrap',\n} as const;\nconst themePreviewFixedContainedActionSx = {\n '&.Mui-disabled': {\n backgroundColor: '#e5e7eb',\n borderColor: '#e5e7eb',\n color: '#a1a1aa',\n },\n '&:hover': {\n backgroundColor: '#1696d5',\n borderColor: '#1696d5',\n },\n backgroundColor: '#1ea3e6',\n border: '1px solid #1ea3e6',\n color: '#ffffff',\n} as const;\nconst themePreviewFixedOutlinedActionSx = {\n '&.Mui-disabled': {\n backgroundColor: '#ffffff',\n borderColor: '#d1d5db',\n color: '#9ca3af',\n },\n '&:hover': {\n backgroundColor: '#f8fafc',\n borderColor: '#111827',\n },\n backgroundColor: '#ffffff',\n border: '1px solid #111827',\n color: '#111827',\n} as const;\nconst themePreviewDialogTitleColor = '#111827';\n\nconst ThemePreviewSaveDialog: DialogComponent<\n ThemePreviewSaveDialogPayload,\n string | undefined\n> = ({\n open,\n payload,\n onClose,\n}: DialogProps<ThemePreviewSaveDialogPayload, string | undefined>) => {\n const [fileName, setFileName] = useState(payload?.initialFileName ?? '');\n\n return (\n <OwpDialog\n title=\"설정파일 저장\"\n open={open}\n maxWidth=\"xs\"\n onClose={() => onClose(undefined)}\n onConfirm={() => onClose(fileName)}\n contentProps={{\n sx: {\n minWidth: 360,\n p: 3,\n },\n }}\n >\n <div className=\"flex flex-col gap-12\">\n <TextField\n label=\"저장 이름\"\n value={fileName}\n placeholder=\"저장 이름 입력\"\n onChange={(event) => {\n setFileName(event.target.value);\n }}\n />\n <Typography variant=\"body2\" color=\"text.secondary\">\n 저장 확장자는 `.owp`로 고정됩니다.\n </Typography>\n </div>\n </OwpDialog>\n );\n};\n\nexport const ThemePreviewDialog: DialogComponent<ThemePreviewDialogPayload, undefined> = ({\n open,\n payload,\n onClose,\n}: DialogProps<ThemePreviewDialogPayload, undefined>) => {\n const [configFileName, setConfigFileName] = useState('');\n const [isPreviewCanvasLoading, setIsPreviewCanvasLoading] = useState(false);\n const previewDialogContentRef = useRef<HTMLDivElement | null>(null);\n const zipFileInputRef = useRef<HTMLInputElement | null>(null);\n const autoSaveTimeoutRef = useRef<number | null>(null);\n const isPointerDownRef = useRef(false);\n const lastUserInteractionAtRef = useRef(Date.now());\n const hasTemporaryChangesRef = useRef(false);\n const handleTemporarySaveRef = useRef<(saveType?: 'auto' | 'manual') => void>(() => undefined);\n const previewCanvasTransitionFrameRef = useRef<number | null>(null);\n const dialogs = useDialogs();\n const { confirmSave } = useConfirm();\n const {\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 } = useThemePreview({\n initialSection: payload?.initialSection,\n initialPresetKeys: {\n main: 'light1',\n navbar: 'light2',\n toolbar: 'surfaceDark',\n },\n presetThemes: themePreviewPresetThemes,\n resetTheme: defaultSettingsConfig.theme,\n });\n const isPresetThemeSection =\n activeSection === 'main' || activeSection === 'navbar' || activeSection === 'toolbar';\n const resolvedSelectedMode = isPresetThemeSection ? selectedModes[activeSection] : 'light';\n const resolvedSelectedPresetKey = isPresetThemeSection ? selectedPresetKeys[activeSection] : '';\n\n const handleThemePreviewInteraction = () => {\n lastUserInteractionAtRef.current = Date.now();\n };\n\n const handleSaveConfigFiles = async (fileName: string) => {\n const exportData = createThemePreviewExportData(draftSettings);\n\n await saveAsZipFile(createThemePreviewArchiveFiles(exportData), {\n type: 'application/json',\n fileExtension: 'json',\n fileTitle: getThemePreviewConfigFileTitle(fileName),\n archiveExtension: 'owp',\n });\n };\n\n const handleOpenSaveDialog = async () => {\n const nextFileName = await dialogs.open(ThemePreviewSaveDialog, {\n initialFileName: configFileName,\n });\n\n if (nextFileName === undefined) {\n return;\n }\n\n setConfigFileName(nextFileName);\n await handleSaveConfigFiles(nextFileName);\n };\n\n const handleOpenZipFile = () => {\n zipFileInputRef.current?.click();\n };\n\n const handleManualTemporarySave = () => {\n handleTemporarySave('manual');\n enqueueSnackbar('임시 저장을 완료했습니다.', {\n variant: 'success',\n });\n };\n\n const handleManualTemporaryLoad = () => {\n if (!handleTemporaryLoad()) {\n enqueueSnackbar('불러올 임시 저장 데이터가 없습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n enqueueSnackbar('임시 저장 데이터를 불러왔습니다.', {\n variant: 'success',\n });\n };\n\n const handleDialogClose = async () => {\n if (hasTemporaryChanges) {\n const isConfirmed = await confirmSave({\n title: '변경된 값을 저장하겠습니까?',\n });\n\n if (isConfirmed) {\n handleTemporarySave('manual');\n enqueueSnackbar('임시 저장되었습니다. 다시 실행하면 저장된 데이터를 불러옵니다.', {\n variant: 'info',\n });\n } else {\n resetThemePreviewSessionState();\n }\n }\n\n onClose(undefined);\n };\n\n const handleZipFileChange = async (event: ChangeEvent<HTMLInputElement>) => {\n const selectedFile = event.target.files?.[0];\n\n if (!selectedFile) {\n return;\n }\n\n try {\n const parsedSettings = await readZipEntryJson<ThemePreviewSettingsArchive>(\n selectedFile,\n (fileName) => fileName.endsWith('settings.json'),\n );\n\n if (!parsedSettings) {\n enqueueSnackbar('settings.json 파일이 없습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n const nextTheme = parsedSettings.defaultSettingsConfig?.theme;\n const nextSnackbarTheme = parsedSettings.defaultSnackbarTheme ?? defaultSnackbarTheme;\n\n if (!nextTheme) {\n enqueueSnackbar('theme 설정을 읽지 못했습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n handleLoadSettings(nextTheme, nextSnackbarTheme);\n enqueueSnackbar('설정 파일을 로드하고 메인 화면에 적용했습니다.', {\n variant: 'success',\n });\n } catch {\n enqueueSnackbar('설정 파일을 불러오는 중 오류가 발생했습니다.', {\n variant: 'error',\n });\n } finally {\n event.target.value = '';\n }\n };\n\n const handleSectionChange = (sectionKey: ThemePreviewSectionKey) => {\n if (sectionKey === activeSection) {\n return;\n }\n\n if (previewCanvasTransitionFrameRef.current) {\n cancelAnimationFrame(previewCanvasTransitionFrameRef.current);\n previewCanvasTransitionFrameRef.current = null;\n }\n\n setIsPreviewCanvasLoading(true);\n\n previewCanvasTransitionFrameRef.current = requestAnimationFrame(() => {\n setActiveSection(sectionKey);\n\n previewCanvasTransitionFrameRef.current = requestAnimationFrame(() => {\n setIsPreviewCanvasLoading(false);\n previewCanvasTransitionFrameRef.current = null;\n });\n });\n };\n\n useEffect(() => {\n handleTemporarySaveRef.current = handleTemporarySave;\n }, [handleTemporarySave]);\n\n useEffect(() => {\n hasTemporaryChangesRef.current = hasTemporaryChanges;\n }, [hasTemporaryChanges]);\n\n useEffect(() => {\n const previewContentElement = previewDialogContentRef.current;\n\n if (!previewContentElement) {\n return;\n }\n\n const handlePointerDown = () => {\n isPointerDownRef.current = true;\n handleThemePreviewInteraction();\n };\n const handlePointerUp = () => {\n isPointerDownRef.current = false;\n handleThemePreviewInteraction();\n };\n\n previewContentElement.addEventListener('pointerdown', handlePointerDown);\n previewContentElement.addEventListener('pointerup', handlePointerUp);\n previewContentElement.addEventListener('pointercancel', handlePointerUp);\n previewContentElement.addEventListener('keydown', handleThemePreviewInteraction);\n previewContentElement.addEventListener('input', handleThemePreviewInteraction);\n previewContentElement.addEventListener('change', handleThemePreviewInteraction);\n previewContentElement.addEventListener('focusin', handleThemePreviewInteraction);\n\n return () => {\n previewContentElement.removeEventListener('pointerdown', handlePointerDown);\n previewContentElement.removeEventListener('pointerup', handlePointerUp);\n previewContentElement.removeEventListener('pointercancel', handlePointerUp);\n previewContentElement.removeEventListener('keydown', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('input', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('change', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('focusin', handleThemePreviewInteraction);\n };\n }, []);\n\n useEffect(() => {\n const clearAutoSaveTimeout = () => {\n if (!autoSaveTimeoutRef.current) {\n return;\n }\n\n window.clearTimeout(autoSaveTimeoutRef.current);\n autoSaveTimeoutRef.current = null;\n };\n const scheduleAutoSave = (delay: number) => {\n clearAutoSaveTimeout();\n autoSaveTimeoutRef.current = window.setTimeout(() => {\n const isUserInteracting =\n isPointerDownRef.current ||\n Date.now() - lastUserInteractionAtRef.current < THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS;\n\n if (document.hidden || isUserInteracting) {\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_RETRY_MS);\n return;\n }\n\n handleTemporarySaveRef.current('auto');\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS);\n }, delay);\n };\n\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS);\n\n return () => {\n clearAutoSaveTimeout();\n };\n }, []);\n\n useEffect(() => {\n const handlePageExit = () => {\n if (!hasTemporaryChangesRef.current) {\n return;\n }\n\n handleTemporarySaveRef.current('manual');\n };\n\n window.addEventListener('pagehide', handlePageExit);\n window.addEventListener('beforeunload', handlePageExit);\n\n return () => {\n window.removeEventListener('pagehide', handlePageExit);\n window.removeEventListener('beforeunload', handlePageExit);\n };\n }, []);\n\n useEffect(() => {\n return () => {\n if (!previewCanvasTransitionFrameRef.current) {\n return;\n }\n\n cancelAnimationFrame(previewCanvasTransitionFrameRef.current);\n };\n }, []);\n\n return (\n <OwpDialog\n title={\n <div className=\"flex w-full flex-wrap items-center justify-between gap-12\">\n <Typography variant=\"h6\" fontWeight={700} sx={{ color: themePreviewDialogTitleColor }}>\n OWP Theme Preview\n </Typography>\n <div className=\"flex flex-wrap items-center gap-8\">\n <Button\n size=\"small\"\n variant=\"outlined\"\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleReset}\n >\n 초기 상태로 초기화\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n disabled={!canApplyToMain}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleApplyToMain}\n >\n 메인에 적용해보기\n </Button>\n </div>\n </div>\n }\n open={open}\n maxWidth=\"xl\"\n canConfirm={false}\n onClose={handleDialogClose}\n actions={\n <div className=\"grid min-w-0 flex-1 grid-cols-[1fr_auto_1fr] items-center gap-y-8\">\n <div className=\"flex flex-wrap items-center justify-start gap-8\">\n <Button\n variant=\"contained\"\n startIcon={<SaveOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleManualTemporarySave}\n >\n 임시 저장하기\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<RestoreOutlinedIcon />}\n disabled={!hasTemporarySnapshot}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleManualTemporaryLoad}\n >\n 임시 저장 불러오기\n </Button>\n </div>\n <div className=\"flex flex-wrap items-center justify-center gap-8\">\n <Button\n variant=\"contained\"\n startIcon={<DownloadOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleOpenSaveDialog}\n >\n 설정파일 저장하기\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<UploadFileOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleOpenZipFile}\n >\n 설정파일 불러오기\n </Button>\n </div>\n <div />\n </div>\n }\n slotProps={{\n paper: {\n sx: {\n width: 'min(1680px, calc(100vw - 48px))',\n maxWidth: 'none',\n height: 'calc(100vh - 48px)',\n m: 3,\n },\n },\n }}\n contentProps={{\n sx: {\n height: '100%',\n p: 3,\n },\n }}\n >\n <div ref={previewDialogContentRef} className=\"flex h-full min-h-0 flex-col gap-12\">\n <input\n ref={zipFileInputRef}\n type=\"file\"\n accept={themePreviewArchiveAccept}\n className=\"hidden\"\n onChange={handleZipFileChange}\n />\n <div className=\"grid min-h-0 flex-1 gap-20 xl:grid-cols-[420px_minmax(0,1fr)]\">\n <ThemePreviewControls\n activeSection={activeSection}\n presetOptions={presetOptions}\n selectedMode={resolvedSelectedMode}\n selectedPresetKey={resolvedSelectedPresetKey}\n settings={draftSettings}\n onSectionChange={handleSectionChange}\n onPaletteValueChange={handlePaletteValueChange}\n onPaletteValuesChange={handlePaletteValuesChange}\n onPresetKeyChange={handlePresetKeyChange}\n onPresetModeChange={handlePresetModeChange}\n />\n <ThemePreviewCanvas\n activeSection={activeSection}\n isLoading={isPreviewCanvasLoading}\n settings={draftSettings}\n />\n </div>\n </div>\n </OwpDialog>\n );\n};\n"],"names":["themePreviewPresetThemes","themesConfig","themePreviewArchiveAccept","THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS","THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS","THEME_PREVIEW_AUTO_SAVE_RETRY_MS","createThemePreviewArchiveFiles","exportData","fileName","fileData","__name","getThemePreviewConfigFileTitle","value","sanitizedValue","themePreviewActionButtonSx","themePreviewFixedContainedActionSx","themePreviewFixedOutlinedActionSx","themePreviewDialogTitleColor","ThemePreviewSaveDialog","open","payload","onClose","setFileName","useState","jsx","OwpDialog","jsxs","TextField","event","Typography","ThemePreviewDialog","configFileName","setConfigFileName","isPreviewCanvasLoading","setIsPreviewCanvasLoading","previewDialogContentRef","useRef","zipFileInputRef","autoSaveTimeoutRef","isPointerDownRef","lastUserInteractionAtRef","hasTemporaryChangesRef","handleTemporarySaveRef","previewCanvasTransitionFrameRef","dialogs","useDialogs","confirmSave","useConfirm","activeSection","canApplyToMain","draftSettings","hasTemporaryChanges","hasTemporarySnapshot","presetOptions","selectedModes","selectedPresetKeys","setActiveSection","handlePaletteValueChange","handlePaletteValuesChange","handleApplyToMain","handleLoadSettings","handlePresetKeyChange","handlePresetModeChange","handleReset","handleTemporaryLoad","handleTemporarySave","useThemePreview","defaultSettingsConfig","isPresetThemeSection","resolvedSelectedMode","resolvedSelectedPresetKey","handleThemePreviewInteraction","handleSaveConfigFiles","createThemePreviewExportData","saveAsZipFile","handleOpenSaveDialog","nextFileName","handleOpenZipFile","_a","handleManualTemporarySave","enqueueSnackbar","handleManualTemporaryLoad","handleDialogClose","resetThemePreviewSessionState","handleZipFileChange","selectedFile","parsedSettings","readZipEntryJson","nextTheme","_b","nextSnackbarTheme","defaultSnackbarTheme","handleSectionChange","sectionKey","useEffect","previewContentElement","handlePointerDown","handlePointerUp","clearAutoSaveTimeout","scheduleAutoSave","delay","isUserInteracting","handlePageExit","Button","SaveOutlinedIcon","RestoreOutlinedIcon","DownloadOutlinedIcon","UploadFileOutlinedIcon","ThemePreviewControls","ThemePreviewCanvas"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemePreviewDialog.js","sources":["../../../../src/features/themePreview/dialogs/ThemePreviewDialog.tsx"],"sourcesContent":["import { OwpDialog } from '@/components/OwpDialog';\nimport {\n defaultSnackbarTheme,\n type SnackbarProviderTheme,\n type SnackbarTheme,\n} from '@/features/themePreview/configs/snackbar';\nimport themesConfig from '@/features/themePreview/configs/presets';\nimport { defaultSettingsConfig } from '@/features/themePreview/configs/settings';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport { readZipEntryJson, saveAsZipFile } from '@/utils';\nimport DownloadOutlinedIcon from '@mui/icons-material/DownloadOutlined';\nimport RestoreOutlinedIcon from '@mui/icons-material/RestoreOutlined';\nimport SaveOutlinedIcon from '@mui/icons-material/SaveOutlined';\nimport UploadFileOutlinedIcon from '@mui/icons-material/UploadFileOutlined';\nimport { Button, TextField, Typography } from '@mui/material';\nimport { useDialogs, type DialogComponent, type DialogProps } from '@toolpad/core/useDialogs';\nimport { enqueueSnackbar } from 'notistack';\nimport { ChangeEvent, useEffect, useRef, useState } from 'react';\nimport { ThemePreviewCanvas, ThemePreviewControls } from '../components';\nimport { useThemePreview } from '../hooks';\nimport type {\n ThemePreviewDialogPayload,\n ThemePreviewPresetThemes,\n ThemePreviewSectionKey,\n} from '../types';\nimport {\n createThemePreviewAppConfigFiles,\n createThemePreviewExportData,\n resetThemePreviewSessionState,\n} from '../utils';\n\nconst themePreviewPresetThemes = themesConfig as ThemePreviewPresetThemes;\nconst themePreviewArchiveAccept = '.owp,.zip,application/zip';\nconst THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS = 5 * 60 * 1000;\nconst THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS = 2 * 1000;\nconst THEME_PREVIEW_AUTO_SAVE_RETRY_MS = 15 * 1000;\n\ntype ThemePreviewSettingsArchive = {\n defaultSettingsConfig?: {\n snackbarProviderProps?: SnackbarProviderTheme;\n theme?: typeof defaultSettingsConfig.theme;\n };\n defaultSnackbarProviderProps?: SnackbarProviderTheme;\n defaultSnackbarTheme?: SnackbarTheme;\n};\ntype ThemePreviewSaveDialogPayload = {\n initialFileName: string;\n};\n\nfunction createThemePreviewArchiveFiles(draftSettings: Parameters<typeof createThemePreviewExportData>[0]) {\n const exportData = createThemePreviewExportData(draftSettings);\n const appConfigFiles = createThemePreviewAppConfigFiles(draftSettings);\n\n return [\n ...appConfigFiles.map(({ fileName, content }) => ({\n fileName,\n blob: new Blob([content], {\n type: 'text/plain;charset=utf-8',\n }),\n })),\n ...Object.entries(exportData).map(([fileName, fileData]) => ({\n fileName: `preview/${fileName}.json`,\n blob: new Blob([JSON.stringify(fileData, null, 2)], {\n type: 'application/json',\n }),\n })),\n ];\n}\n\nfunction getThemePreviewArchiveProviderProps(\n archiveSettings: ThemePreviewSettingsArchive | null,\n) {\n return (\n archiveSettings?.defaultSnackbarProviderProps ??\n archiveSettings?.defaultSettingsConfig?.snackbarProviderProps\n );\n}\n\nfunction getThemePreviewConfigFileTitle(value: string) {\n const sanitizedValue = value\n .trim()\n .replace(/[^0-9A-Za-z가-힣 _-]+/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^[-_]+|[-_]+$/g, '');\n\n return sanitizedValue ? `theme-preview-config-${sanitizedValue}` : 'theme-preview-config';\n}\n\nconst themePreviewActionButtonSx = {\n '&.MuiButton-root': {\n fontSize: '1.3rem',\n letterSpacing: '0.04rem',\n },\n '&.MuiButton-sizeSmall': {\n fontSize: '1.3rem',\n letterSpacing: '0.04rem',\n minHeight: 42,\n px: 2.25,\n },\n '& .MuiButton-startIcon': {\n mr: 0.75,\n },\n fontWeight: 800,\n lineHeight: 1.2,\n minHeight: 42,\n px: 2.25,\n whiteSpace: 'nowrap',\n} as const;\nconst themePreviewFixedContainedActionSx = {\n '&.Mui-disabled': {\n backgroundColor: '#e5e7eb',\n borderColor: '#e5e7eb',\n color: '#a1a1aa',\n },\n '&:hover': {\n backgroundColor: '#1696d5',\n borderColor: '#1696d5',\n },\n backgroundColor: '#1ea3e6',\n border: '1px solid #1ea3e6',\n color: '#ffffff',\n} as const;\nconst themePreviewFixedOutlinedActionSx = {\n '&.Mui-disabled': {\n backgroundColor: '#ffffff',\n borderColor: '#d1d5db',\n color: '#9ca3af',\n },\n '&:hover': {\n backgroundColor: '#f8fafc',\n borderColor: '#111827',\n },\n backgroundColor: '#ffffff',\n border: '1px solid #111827',\n color: '#111827',\n} as const;\nconst themePreviewDialogTitleColor = '#111827';\n\nconst ThemePreviewSaveDialog: DialogComponent<\n ThemePreviewSaveDialogPayload,\n string | undefined\n> = ({\n open,\n payload,\n onClose,\n}: DialogProps<ThemePreviewSaveDialogPayload, string | undefined>) => {\n const [fileName, setFileName] = useState(payload?.initialFileName ?? '');\n\n return (\n <OwpDialog\n title=\"설정파일 저장\"\n open={open}\n maxWidth=\"xs\"\n onClose={() => onClose(undefined)}\n onConfirm={() => onClose(fileName)}\n contentProps={{\n sx: {\n minWidth: 360,\n p: 3,\n },\n }}\n >\n <div className=\"flex flex-col gap-12\">\n <TextField\n label=\"저장 이름\"\n value={fileName}\n placeholder=\"저장 이름 입력\"\n onChange={(event) => {\n setFileName(event.target.value);\n }}\n />\n <Typography variant=\"body2\" color=\"text.secondary\">\n 저장 확장자는 `.owp`로 고정됩니다.\n </Typography>\n </div>\n </OwpDialog>\n );\n};\n\nexport const ThemePreviewDialog: DialogComponent<ThemePreviewDialogPayload, undefined> = ({\n open,\n payload,\n onClose,\n}: DialogProps<ThemePreviewDialogPayload, undefined>) => {\n const [configFileName, setConfigFileName] = useState('');\n const [isPreviewCanvasLoading, setIsPreviewCanvasLoading] = useState(false);\n const previewDialogContentRef = useRef<HTMLDivElement | null>(null);\n const zipFileInputRef = useRef<HTMLInputElement | null>(null);\n const autoSaveTimeoutRef = useRef<number | null>(null);\n const isPointerDownRef = useRef(false);\n const lastUserInteractionAtRef = useRef(Date.now());\n const hasTemporaryChangesRef = useRef(false);\n const handleTemporarySaveRef = useRef<(saveType?: 'auto' | 'manual') => void>(() => undefined);\n const previewCanvasTransitionFrameRef = useRef<number | null>(null);\n const dialogs = useDialogs();\n const { confirmSave } = useConfirm();\n const {\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 } = useThemePreview({\n initialSection: payload?.initialSection,\n initialPresetKeys: {\n main: 'light1',\n navbar: 'light2',\n toolbar: 'surfaceDark',\n },\n presetThemes: themePreviewPresetThemes,\n resetTheme: defaultSettingsConfig.theme,\n });\n const isPresetThemeSection =\n activeSection === 'main' || activeSection === 'navbar' || activeSection === 'toolbar';\n const resolvedSelectedMode = isPresetThemeSection ? selectedModes[activeSection] : 'light';\n const resolvedSelectedPresetKey = isPresetThemeSection ? selectedPresetKeys[activeSection] : '';\n\n const handleThemePreviewInteraction = () => {\n lastUserInteractionAtRef.current = Date.now();\n };\n\n const handleSaveConfigFiles = async (fileName: string) => {\n await saveAsZipFile(createThemePreviewArchiveFiles(draftSettings), {\n fileTitle: getThemePreviewConfigFileTitle(fileName),\n archiveExtension: 'owp',\n preserveFileNames: true,\n });\n };\n\n const handleOpenSaveDialog = async () => {\n const nextFileName = await dialogs.open(ThemePreviewSaveDialog, {\n initialFileName: configFileName,\n });\n\n if (nextFileName === undefined) {\n return;\n }\n\n setConfigFileName(nextFileName);\n await handleSaveConfigFiles(nextFileName);\n };\n\n const handleOpenZipFile = () => {\n zipFileInputRef.current?.click();\n };\n\n const handleManualTemporarySave = () => {\n handleTemporarySave('manual');\n enqueueSnackbar('임시 저장을 완료했습니다.', {\n variant: 'success',\n });\n };\n\n const handleManualTemporaryLoad = () => {\n if (!handleTemporaryLoad()) {\n enqueueSnackbar('불러올 임시 저장 데이터가 없습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n enqueueSnackbar('임시 저장 데이터를 불러왔습니다.', {\n variant: 'success',\n });\n };\n\n const handleDialogClose = async () => {\n if (hasTemporaryChanges) {\n const isConfirmed = await confirmSave({\n title: '변경된 값을 저장하겠습니까?',\n });\n\n if (isConfirmed) {\n handleTemporarySave('manual');\n enqueueSnackbar('임시 저장되었습니다. 다시 실행하면 저장된 데이터를 불러옵니다.', {\n variant: 'info',\n });\n } else {\n resetThemePreviewSessionState();\n }\n }\n\n onClose(undefined);\n };\n\n const handleZipFileChange = async (event: ChangeEvent<HTMLInputElement>) => {\n const selectedFile = event.target.files?.[0];\n\n if (!selectedFile) {\n return;\n }\n\n try {\n const parsedSettings = await readZipEntryJson<ThemePreviewSettingsArchive>(\n selectedFile,\n (fileName) => fileName.endsWith('settings.json'),\n );\n\n if (!parsedSettings) {\n enqueueSnackbar('settings.json 파일이 없습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n const nextTheme = parsedSettings.defaultSettingsConfig?.theme;\n const nextSnackbarTheme = parsedSettings.defaultSnackbarTheme ?? defaultSnackbarTheme;\n const nextSnackbarProviderProps = getThemePreviewArchiveProviderProps(parsedSettings);\n\n if (!nextTheme) {\n enqueueSnackbar('theme 설정을 읽지 못했습니다.', {\n variant: 'warning',\n });\n return;\n }\n\n handleLoadSettings(nextTheme, nextSnackbarTheme, nextSnackbarProviderProps);\n enqueueSnackbar('설정 파일을 로드하고 메인 화면에 적용했습니다.', {\n variant: 'success',\n });\n } catch {\n enqueueSnackbar('설정 파일을 불러오는 중 오류가 발생했습니다.', {\n variant: 'error',\n });\n } finally {\n event.target.value = '';\n }\n };\n\n const handleSectionChange = (sectionKey: ThemePreviewSectionKey) => {\n if (sectionKey === activeSection) {\n return;\n }\n\n if (previewCanvasTransitionFrameRef.current) {\n cancelAnimationFrame(previewCanvasTransitionFrameRef.current);\n previewCanvasTransitionFrameRef.current = null;\n }\n\n setIsPreviewCanvasLoading(true);\n\n previewCanvasTransitionFrameRef.current = requestAnimationFrame(() => {\n setActiveSection(sectionKey);\n\n previewCanvasTransitionFrameRef.current = requestAnimationFrame(() => {\n setIsPreviewCanvasLoading(false);\n previewCanvasTransitionFrameRef.current = null;\n });\n });\n };\n\n useEffect(() => {\n handleTemporarySaveRef.current = handleTemporarySave;\n }, [handleTemporarySave]);\n\n useEffect(() => {\n hasTemporaryChangesRef.current = hasTemporaryChanges;\n }, [hasTemporaryChanges]);\n\n useEffect(() => {\n const previewContentElement = previewDialogContentRef.current;\n\n if (!previewContentElement) {\n return;\n }\n\n const handlePointerDown = () => {\n isPointerDownRef.current = true;\n handleThemePreviewInteraction();\n };\n const handlePointerUp = () => {\n isPointerDownRef.current = false;\n handleThemePreviewInteraction();\n };\n\n previewContentElement.addEventListener('pointerdown', handlePointerDown);\n previewContentElement.addEventListener('pointerup', handlePointerUp);\n previewContentElement.addEventListener('pointercancel', handlePointerUp);\n previewContentElement.addEventListener('keydown', handleThemePreviewInteraction);\n previewContentElement.addEventListener('input', handleThemePreviewInteraction);\n previewContentElement.addEventListener('change', handleThemePreviewInteraction);\n previewContentElement.addEventListener('focusin', handleThemePreviewInteraction);\n\n return () => {\n previewContentElement.removeEventListener('pointerdown', handlePointerDown);\n previewContentElement.removeEventListener('pointerup', handlePointerUp);\n previewContentElement.removeEventListener('pointercancel', handlePointerUp);\n previewContentElement.removeEventListener('keydown', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('input', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('change', handleThemePreviewInteraction);\n previewContentElement.removeEventListener('focusin', handleThemePreviewInteraction);\n };\n }, []);\n\n useEffect(() => {\n const clearAutoSaveTimeout = () => {\n if (!autoSaveTimeoutRef.current) {\n return;\n }\n\n window.clearTimeout(autoSaveTimeoutRef.current);\n autoSaveTimeoutRef.current = null;\n };\n const scheduleAutoSave = (delay: number) => {\n clearAutoSaveTimeout();\n autoSaveTimeoutRef.current = window.setTimeout(() => {\n const isUserInteracting =\n isPointerDownRef.current ||\n Date.now() - lastUserInteractionAtRef.current < THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS;\n\n if (document.hidden || isUserInteracting) {\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_RETRY_MS);\n return;\n }\n\n handleTemporarySaveRef.current('auto');\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS);\n }, delay);\n };\n\n scheduleAutoSave(THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS);\n\n return () => {\n clearAutoSaveTimeout();\n };\n }, []);\n\n useEffect(() => {\n const handlePageExit = () => {\n if (!hasTemporaryChangesRef.current) {\n return;\n }\n\n handleTemporarySaveRef.current('manual');\n };\n\n window.addEventListener('pagehide', handlePageExit);\n window.addEventListener('beforeunload', handlePageExit);\n\n return () => {\n window.removeEventListener('pagehide', handlePageExit);\n window.removeEventListener('beforeunload', handlePageExit);\n };\n }, []);\n\n useEffect(() => {\n return () => {\n if (!previewCanvasTransitionFrameRef.current) {\n return;\n }\n\n cancelAnimationFrame(previewCanvasTransitionFrameRef.current);\n };\n }, []);\n\n return (\n <OwpDialog\n title={\n <div className=\"flex w-full flex-wrap items-center justify-between gap-12\">\n <Typography variant=\"h6\" fontWeight={700} sx={{ color: themePreviewDialogTitleColor }}>\n OWP Theme Preview\n </Typography>\n <div className=\"flex flex-wrap items-center gap-8\">\n <Button\n size=\"small\"\n variant=\"outlined\"\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleReset}\n >\n 기본 설정으로 되돌리기\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n disabled={!canApplyToMain}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleApplyToMain}\n >\n 메인에 적용해보기\n </Button>\n </div>\n </div>\n }\n open={open}\n maxWidth=\"xl\"\n canConfirm={false}\n onClose={handleDialogClose}\n actions={\n <div className=\"grid min-w-0 flex-1 grid-cols-[1fr_auto_1fr] items-center gap-y-8\">\n <div className=\"flex flex-wrap items-center justify-start gap-8\">\n <Button\n variant=\"contained\"\n startIcon={<SaveOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleManualTemporarySave}\n >\n 임시 저장하기\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<RestoreOutlinedIcon />}\n disabled={!hasTemporarySnapshot}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleManualTemporaryLoad}\n >\n 임시 저장 불러오기\n </Button>\n </div>\n <div className=\"flex flex-wrap items-center justify-center gap-8\">\n <Button\n variant=\"contained\"\n startIcon={<DownloadOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedContainedActionSx,\n }}\n onClick={handleOpenSaveDialog}\n >\n 설정파일 저장하기\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<UploadFileOutlinedIcon />}\n sx={{\n ...themePreviewActionButtonSx,\n ...themePreviewFixedOutlinedActionSx,\n }}\n onClick={handleOpenZipFile}\n >\n 설정파일 불러오기\n </Button>\n </div>\n <div />\n </div>\n }\n slotProps={{\n paper: {\n sx: {\n width: 'min(1680px, calc(100vw - 48px))',\n maxWidth: 'none',\n height: 'calc(100vh - 48px)',\n m: 3,\n },\n },\n }}\n contentProps={{\n sx: {\n height: '100%',\n p: 3,\n },\n }}\n >\n <div ref={previewDialogContentRef} className=\"flex h-full min-h-0 flex-col gap-12\">\n <input\n ref={zipFileInputRef}\n type=\"file\"\n accept={themePreviewArchiveAccept}\n className=\"hidden\"\n onChange={handleZipFileChange}\n />\n <div className=\"grid min-h-0 flex-1 gap-20 xl:grid-cols-[420px_minmax(0,1fr)]\">\n <ThemePreviewControls\n activeSection={activeSection}\n presetOptions={presetOptions}\n selectedMode={resolvedSelectedMode}\n selectedPresetKey={resolvedSelectedPresetKey}\n settings={draftSettings}\n onSectionChange={handleSectionChange}\n onPaletteValueChange={handlePaletteValueChange}\n onPaletteValuesChange={handlePaletteValuesChange}\n onPresetKeyChange={handlePresetKeyChange}\n onPresetModeChange={handlePresetModeChange}\n />\n <ThemePreviewCanvas\n activeSection={activeSection}\n isLoading={isPreviewCanvasLoading}\n settings={draftSettings}\n />\n </div>\n </div>\n </OwpDialog>\n );\n};\n"],"names":["themePreviewPresetThemes","themesConfig","themePreviewArchiveAccept","THEME_PREVIEW_AUTO_SAVE_INTERVAL_MS","THEME_PREVIEW_AUTO_SAVE_IDLE_WAIT_MS","THEME_PREVIEW_AUTO_SAVE_RETRY_MS","createThemePreviewArchiveFiles","draftSettings","exportData","createThemePreviewExportData","createThemePreviewAppConfigFiles","fileName","content","fileData","__name","getThemePreviewArchiveProviderProps","archiveSettings","_a","getThemePreviewConfigFileTitle","value","sanitizedValue","themePreviewActionButtonSx","themePreviewFixedContainedActionSx","themePreviewFixedOutlinedActionSx","themePreviewDialogTitleColor","ThemePreviewSaveDialog","open","payload","onClose","setFileName","useState","jsx","OwpDialog","jsxs","TextField","event","Typography","ThemePreviewDialog","configFileName","setConfigFileName","isPreviewCanvasLoading","setIsPreviewCanvasLoading","previewDialogContentRef","useRef","zipFileInputRef","autoSaveTimeoutRef","isPointerDownRef","lastUserInteractionAtRef","hasTemporaryChangesRef","handleTemporarySaveRef","previewCanvasTransitionFrameRef","dialogs","useDialogs","confirmSave","useConfirm","activeSection","canApplyToMain","hasTemporaryChanges","hasTemporarySnapshot","presetOptions","selectedModes","selectedPresetKeys","setActiveSection","handlePaletteValueChange","handlePaletteValuesChange","handleApplyToMain","handleLoadSettings","handlePresetKeyChange","handlePresetModeChange","handleReset","handleTemporaryLoad","handleTemporarySave","useThemePreview","defaultSettingsConfig","isPresetThemeSection","resolvedSelectedMode","resolvedSelectedPresetKey","handleThemePreviewInteraction","handleSaveConfigFiles","saveAsZipFile","handleOpenSaveDialog","nextFileName","handleOpenZipFile","handleManualTemporarySave","enqueueSnackbar","handleManualTemporaryLoad","handleDialogClose","resetThemePreviewSessionState","handleZipFileChange","selectedFile","parsedSettings","readZipEntryJson","nextTheme","_b","nextSnackbarTheme","defaultSnackbarTheme","nextSnackbarProviderProps","handleSectionChange","sectionKey","useEffect","previewContentElement","handlePointerDown","handlePointerUp","clearAutoSaveTimeout","scheduleAutoSave","delay","isUserInteracting","handlePageExit","Button","SaveOutlinedIcon","RestoreOutlinedIcon","DownloadOutlinedIcon","UploadFileOutlinedIcon","ThemePreviewControls","ThemePreviewCanvas"],"mappings":"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"}
|
|
@@ -1,235 +1,280 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { getThemePreviewTemporaryState as
|
|
4
|
-
import { defaultSnackbarTheme as T } from "../configs/snackbar.js";
|
|
5
|
-
import { useGetCurrentSettings as
|
|
6
|
-
import { useMemo as
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
var ae = Object.defineProperty;
|
|
2
|
+
var n = (o, d) => ae(o, "name", { value: d, configurable: !0 });
|
|
3
|
+
import { getThemePreviewTemporaryState as j, persistThemePreviewTemporaryState as q, clearThemePreviewAppliedSettings as ne, persistThemePreviewAppliedSettings as G } from "../configs/previewStorage.js";
|
|
4
|
+
import { defaultSnackbarTheme as f, defaultSnackbarProviderProps as T } from "../configs/snackbar.js";
|
|
5
|
+
import { useGetCurrentSettings as se, useSetDefaultSettings as oe } from "../../../hooks/useOwpSettings.js";
|
|
6
|
+
import { useMemo as y, useState as g } from "react";
|
|
7
|
+
import ce from "dayjs";
|
|
8
|
+
import { getThemePreviewPresetOptions as ie, getThemePreviewDraftSettings as le, getThemePreviewSelectionState as de, getThemePreviewResetSettings as me, cloneThemePreviewSettings as A, getThemePreviewPresetOptionsByMode as Se, applyThemePreviewPreset as H, THEME_PREVIEW_CUSTOM_PRESET_KEY as k, setThemePreviewDraftSettings as U, setThemePreviewPaletteValues as Pe, setThemePreviewPaletteValue as pe, isThemePreviewCustomSection as he, setThemePreviewSelectionState as ve } from "../utils/themePreviewSettings.js";
|
|
9
|
+
import { merge as h } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/merge.js";
|
|
10
|
+
import { isEqual as M } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
|
|
11
|
+
const W = {
|
|
12
|
+
main: k,
|
|
13
|
+
navbar: k,
|
|
14
|
+
toolbar: k
|
|
14
15
|
};
|
|
15
|
-
function
|
|
16
|
-
return !
|
|
16
|
+
function C(o) {
|
|
17
|
+
return !he(o);
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
function
|
|
19
|
+
n(C, "isThemePreviewPresetSectionKey");
|
|
20
|
+
function ue(o) {
|
|
20
21
|
return {
|
|
21
22
|
main: o.theme.main.palette.mode === "dark" ? "dark" : "light",
|
|
22
23
|
navbar: o.theme.navbar.palette.mode === "dark" ? "dark" : "light",
|
|
23
24
|
toolbar: o.theme.toolbar.palette.mode === "dark" ? "dark" : "light"
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
function
|
|
27
|
+
n(ue, "getThemePreviewSelectedModes");
|
|
28
|
+
function Y(o, d, v, m, c) {
|
|
28
29
|
return {
|
|
29
|
-
draftSettings:
|
|
30
|
-
savedAt: (
|
|
31
|
-
saveType:
|
|
30
|
+
draftSettings: A(d),
|
|
31
|
+
savedAt: ce().toISOString(),
|
|
32
|
+
saveType: c,
|
|
32
33
|
selectionState: {
|
|
33
34
|
activeSection: o,
|
|
34
|
-
selectedModes:
|
|
35
|
-
selectedPresetKeys:
|
|
35
|
+
selectedModes: m,
|
|
36
|
+
selectedPresetKeys: v
|
|
36
37
|
},
|
|
37
38
|
version: 1
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
function
|
|
41
|
+
n(Y, "createThemePreviewTemporaryState");
|
|
42
|
+
function x(o, d, v, m) {
|
|
42
43
|
return {
|
|
43
|
-
draftSettings:
|
|
44
|
+
draftSettings: d,
|
|
44
45
|
selectionState: {
|
|
45
46
|
activeSection: o,
|
|
46
|
-
selectedModes:
|
|
47
|
-
selectedPresetKeys:
|
|
47
|
+
selectedModes: m,
|
|
48
|
+
selectedPresetKeys: v
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
function
|
|
52
|
+
n(x, "createThemePreviewTemporaryComparableState");
|
|
53
|
+
function Be({
|
|
53
54
|
initialSection: o = "main",
|
|
54
|
-
initialPresetKeys:
|
|
55
|
-
presetThemes:
|
|
56
|
-
resetTheme:
|
|
55
|
+
initialPresetKeys: d,
|
|
56
|
+
presetThemes: v,
|
|
57
|
+
resetTheme: m
|
|
57
58
|
}) {
|
|
58
|
-
const
|
|
59
|
-
() =>
|
|
60
|
-
[
|
|
61
|
-
),
|
|
62
|
-
() =>
|
|
63
|
-
[
|
|
64
|
-
),
|
|
65
|
-
() =>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
me(
|
|
73
|
-
n,
|
|
74
|
-
s,
|
|
75
|
-
c,
|
|
76
|
-
m
|
|
59
|
+
const c = se(), K = oe(), E = y(() => ie(v), [v]), V = le(c), w = y(
|
|
60
|
+
() => de(c, d),
|
|
61
|
+
[c, d]
|
|
62
|
+
), _ = y(
|
|
63
|
+
() => me(c, m, f),
|
|
64
|
+
[c, m]
|
|
65
|
+
), z = y(
|
|
66
|
+
() => h({}, f, c.snackbar),
|
|
67
|
+
[c]
|
|
68
|
+
), F = y(
|
|
69
|
+
() => h(
|
|
70
|
+
{},
|
|
71
|
+
T,
|
|
72
|
+
c.snackbarProviderProps
|
|
77
73
|
),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
74
|
+
[c]
|
|
75
|
+
), [r, O] = g(o), [a, J] = g(() => V), [l, N] = g(
|
|
76
|
+
w.selectedPresetKeys
|
|
77
|
+
), [S, Q] = g(w.selectedModes), [X, D] = g(() => j()), [Z, b] = g(
|
|
78
|
+
() => x(
|
|
79
|
+
o,
|
|
80
|
+
V,
|
|
81
|
+
w.selectedPresetKeys,
|
|
82
|
+
w.selectedModes
|
|
83
|
+
)
|
|
84
|
+
), $ = !!X, ee = !M(
|
|
85
|
+
x(
|
|
86
|
+
r,
|
|
87
|
+
a,
|
|
88
|
+
l,
|
|
89
|
+
S
|
|
90
|
+
),
|
|
91
|
+
Z
|
|
92
|
+
), te = !M(c.theme, a.theme) || !M(z, a.snackbar) || !M(F, a.snackbarProviderProps), R = /* @__PURE__ */ n((e, t) => {
|
|
93
|
+
ve({
|
|
84
94
|
selectedPresetKeys: e,
|
|
85
95
|
selectedModes: t
|
|
86
96
|
});
|
|
87
|
-
}, "persistSelectionState"),
|
|
88
|
-
|
|
97
|
+
}, "persistSelectionState"), re = /* @__PURE__ */ n((e) => (U(e), e), "persistDraftSettings"), u = /* @__PURE__ */ n((e) => (J(e), re(e)), "commitDraftSettings"), P = /* @__PURE__ */ n((e, t) => {
|
|
98
|
+
N(e), Q(t), R(e, t);
|
|
89
99
|
}, "commitSelectionState");
|
|
90
100
|
return {
|
|
91
|
-
activeSection:
|
|
92
|
-
canApplyToMain:
|
|
93
|
-
draftSettings:
|
|
94
|
-
hasTemporaryChanges:
|
|
95
|
-
hasTemporarySnapshot:
|
|
96
|
-
presetOptions:
|
|
97
|
-
selectedModes:
|
|
98
|
-
selectedPresetKeys:
|
|
99
|
-
setActiveSection:
|
|
100
|
-
handlePaletteValueChange: /* @__PURE__ */
|
|
101
|
-
if (
|
|
101
|
+
activeSection: r,
|
|
102
|
+
canApplyToMain: te,
|
|
103
|
+
draftSettings: a,
|
|
104
|
+
hasTemporaryChanges: ee,
|
|
105
|
+
hasTemporarySnapshot: $,
|
|
106
|
+
presetOptions: E,
|
|
107
|
+
selectedModes: S,
|
|
108
|
+
selectedPresetKeys: l,
|
|
109
|
+
setActiveSection: O,
|
|
110
|
+
handlePaletteValueChange: /* @__PURE__ */ n((e, t) => {
|
|
111
|
+
if (u(pe(a, r, e, t)), !C(r))
|
|
102
112
|
return;
|
|
103
|
-
const
|
|
104
|
-
...
|
|
105
|
-
[
|
|
113
|
+
const i = {
|
|
114
|
+
...l,
|
|
115
|
+
[r]: k
|
|
106
116
|
};
|
|
107
|
-
|
|
117
|
+
P(i, S);
|
|
108
118
|
}, "handlePaletteValueChange"),
|
|
109
|
-
handlePaletteValuesChange: /* @__PURE__ */
|
|
110
|
-
if (!e.length || (
|
|
119
|
+
handlePaletteValuesChange: /* @__PURE__ */ n((e) => {
|
|
120
|
+
if (!e.length || (u(Pe(a, r, e)), !C(r)))
|
|
111
121
|
return;
|
|
112
122
|
const t = {
|
|
113
|
-
...
|
|
114
|
-
[
|
|
123
|
+
...l,
|
|
124
|
+
[r]: k
|
|
115
125
|
};
|
|
116
|
-
|
|
126
|
+
P(t, S);
|
|
117
127
|
}, "handlePaletteValuesChange"),
|
|
118
|
-
handleApplyToMain: /* @__PURE__ */
|
|
119
|
-
const e =
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
handleApplyToMain: /* @__PURE__ */ n(() => {
|
|
129
|
+
const e = Y(
|
|
130
|
+
r,
|
|
131
|
+
a,
|
|
132
|
+
l,
|
|
133
|
+
S,
|
|
124
134
|
"manual"
|
|
125
135
|
);
|
|
126
|
-
|
|
127
|
-
theme:
|
|
128
|
-
snackbar:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
136
|
+
U(a), R(l, S), q(e), G({
|
|
137
|
+
theme: a.theme,
|
|
138
|
+
snackbar: a.snackbar,
|
|
139
|
+
snackbarProviderProps: a.snackbarProviderProps
|
|
140
|
+
}), D(e), b({
|
|
141
|
+
draftSettings: a,
|
|
142
|
+
selectionState: e.selectionState
|
|
143
|
+
}), K({
|
|
144
|
+
theme: a.theme,
|
|
145
|
+
snackbar: a.snackbar,
|
|
146
|
+
snackbarProviderProps: a.snackbarProviderProps
|
|
132
147
|
});
|
|
133
148
|
}, "handleApplyToMain"),
|
|
134
|
-
handleLoadSettings: /* @__PURE__ */
|
|
135
|
-
const
|
|
149
|
+
handleLoadSettings: /* @__PURE__ */ n((e, t = f, i = T) => {
|
|
150
|
+
const s = h({}, c, {
|
|
136
151
|
theme: e,
|
|
137
|
-
snackbar:
|
|
138
|
-
|
|
139
|
-
|
|
152
|
+
snackbar: h({}, f, t),
|
|
153
|
+
snackbarProviderProps: h(
|
|
154
|
+
{},
|
|
155
|
+
T,
|
|
156
|
+
i
|
|
157
|
+
)
|
|
158
|
+
}), p = ue(s);
|
|
159
|
+
u(s), P(W, p), b(
|
|
160
|
+
x(
|
|
161
|
+
r,
|
|
162
|
+
s,
|
|
163
|
+
W,
|
|
164
|
+
p
|
|
165
|
+
)
|
|
166
|
+
), G({
|
|
140
167
|
theme: e,
|
|
141
|
-
snackbar:
|
|
142
|
-
|
|
168
|
+
snackbar: s.snackbar,
|
|
169
|
+
snackbarProviderProps: s.snackbarProviderProps
|
|
170
|
+
}), K({
|
|
143
171
|
theme: e,
|
|
144
|
-
snackbar:
|
|
172
|
+
snackbar: s.snackbar,
|
|
173
|
+
snackbarProviderProps: s.snackbarProviderProps
|
|
145
174
|
});
|
|
146
175
|
}, "handleLoadSettings"),
|
|
147
|
-
handlePresetKeyChange: /* @__PURE__ */
|
|
148
|
-
if (!
|
|
176
|
+
handlePresetKeyChange: /* @__PURE__ */ n((e) => {
|
|
177
|
+
if (!C(r) || e === k)
|
|
149
178
|
return;
|
|
150
|
-
const t =
|
|
179
|
+
const t = v[e];
|
|
151
180
|
if (!t)
|
|
152
181
|
return;
|
|
153
|
-
|
|
154
|
-
const
|
|
155
|
-
...
|
|
156
|
-
[
|
|
157
|
-
},
|
|
158
|
-
...
|
|
159
|
-
[
|
|
182
|
+
u(H(a, r, t));
|
|
183
|
+
const i = {
|
|
184
|
+
...S,
|
|
185
|
+
[r]: t.palette.mode === "dark" ? "dark" : "light"
|
|
186
|
+
}, s = {
|
|
187
|
+
...l,
|
|
188
|
+
[r]: e
|
|
160
189
|
};
|
|
161
|
-
|
|
190
|
+
P(s, i);
|
|
162
191
|
}, "handlePresetKeyChange"),
|
|
163
|
-
handlePresetModeChange: /* @__PURE__ */
|
|
164
|
-
if (!
|
|
192
|
+
handlePresetModeChange: /* @__PURE__ */ n((e) => {
|
|
193
|
+
if (!C(r))
|
|
165
194
|
return;
|
|
166
195
|
const t = {
|
|
167
|
-
...
|
|
168
|
-
[
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
|
|
196
|
+
...S,
|
|
197
|
+
[r]: e
|
|
198
|
+
}, i = Se(
|
|
199
|
+
E,
|
|
200
|
+
r,
|
|
172
201
|
e
|
|
173
202
|
)[0];
|
|
174
|
-
if (!
|
|
175
|
-
|
|
203
|
+
if (!i) {
|
|
204
|
+
P(l, t);
|
|
176
205
|
return;
|
|
177
206
|
}
|
|
178
|
-
const
|
|
179
|
-
if (!
|
|
180
|
-
|
|
207
|
+
const s = v[i.key];
|
|
208
|
+
if (!s) {
|
|
209
|
+
P(l, t);
|
|
181
210
|
return;
|
|
182
211
|
}
|
|
183
|
-
|
|
184
|
-
const
|
|
185
|
-
...
|
|
186
|
-
[
|
|
212
|
+
u(H(a, r, s));
|
|
213
|
+
const p = {
|
|
214
|
+
...l,
|
|
215
|
+
[r]: i.key
|
|
187
216
|
};
|
|
188
|
-
|
|
217
|
+
P(p, t);
|
|
189
218
|
}, "handlePresetModeChange"),
|
|
190
|
-
handleReset: /* @__PURE__ */
|
|
191
|
-
var
|
|
192
|
-
const e =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
219
|
+
handleReset: /* @__PURE__ */ n(() => {
|
|
220
|
+
var i, s, p, L, B, I;
|
|
221
|
+
const e = h({}, A(_), {
|
|
222
|
+
snackbarProviderProps: T
|
|
223
|
+
}), t = {
|
|
224
|
+
main: ((s = (i = m.main) == null ? void 0 : i.palette) == null ? void 0 : s.mode) === "dark" ? "dark" : "light",
|
|
225
|
+
navbar: ((L = (p = m.navbar) == null ? void 0 : p.palette) == null ? void 0 : L.mode) === "dark" ? "dark" : "light",
|
|
226
|
+
toolbar: ((I = (B = m.toolbar) == null ? void 0 : B.palette) == null ? void 0 : I.mode) === "dark" ? "dark" : "light"
|
|
196
227
|
};
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
228
|
+
u(e), P(d, t), b(
|
|
229
|
+
x(
|
|
230
|
+
r,
|
|
231
|
+
e,
|
|
232
|
+
d,
|
|
233
|
+
t
|
|
234
|
+
)
|
|
235
|
+
), ne(), K({
|
|
236
|
+
theme: m,
|
|
237
|
+
snackbar: f,
|
|
238
|
+
snackbarProviderProps: T
|
|
200
239
|
});
|
|
201
240
|
}, "handleReset"),
|
|
202
|
-
handleTemporaryLoad: /* @__PURE__ */
|
|
203
|
-
const e =
|
|
241
|
+
handleTemporaryLoad: /* @__PURE__ */ n(() => {
|
|
242
|
+
const e = j();
|
|
204
243
|
if (!e)
|
|
205
244
|
return !1;
|
|
206
|
-
const t =
|
|
207
|
-
|
|
208
|
-
),
|
|
245
|
+
const t = A(
|
|
246
|
+
h({}, c, e.draftSettings)
|
|
247
|
+
), i = h(
|
|
209
248
|
{},
|
|
210
|
-
|
|
249
|
+
l,
|
|
211
250
|
e.selectionState.selectedPresetKeys
|
|
212
|
-
),
|
|
251
|
+
), s = h(
|
|
213
252
|
{},
|
|
214
|
-
|
|
253
|
+
S,
|
|
215
254
|
e.selectionState.selectedModes
|
|
216
|
-
),
|
|
217
|
-
return
|
|
255
|
+
), p = e.selectionState.activeSection;
|
|
256
|
+
return u(t), O(p), P(i, s), D(e), b({
|
|
257
|
+
draftSettings: t,
|
|
258
|
+
selectionState: e.selectionState
|
|
259
|
+
}), !0;
|
|
218
260
|
}, "handleTemporaryLoad"),
|
|
219
|
-
handleTemporarySave: /* @__PURE__ */
|
|
220
|
-
const t =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
261
|
+
handleTemporarySave: /* @__PURE__ */ n((e = "manual") => {
|
|
262
|
+
const t = Y(
|
|
263
|
+
r,
|
|
264
|
+
a,
|
|
265
|
+
l,
|
|
266
|
+
S,
|
|
225
267
|
e
|
|
226
268
|
);
|
|
227
|
-
|
|
269
|
+
q(t), D(t), b({
|
|
270
|
+
draftSettings: a,
|
|
271
|
+
selectionState: t.selectionState
|
|
272
|
+
});
|
|
228
273
|
}, "handleTemporarySave")
|
|
229
274
|
};
|
|
230
275
|
}
|
|
231
|
-
|
|
276
|
+
n(Be, "useThemePreview");
|
|
232
277
|
export {
|
|
233
|
-
|
|
278
|
+
Be as useThemePreview
|
|
234
279
|
};
|
|
235
280
|
//# sourceMappingURL=useThemePreview.js.map
|