@owp/core 2.5.34 → 2.5.36
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/dist/_virtual/index3.js +2 -2
- package/dist/_virtual/index4.js +2 -2
- package/dist/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.js +68 -62
- package/dist/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.js.map +1 -1
- package/dist/components/OwpDialog/OwpAlertDialog.js +19 -18
- package/dist/components/OwpDialog/OwpAlertDialog.js.map +1 -1
- package/dist/components/OwpDialog/OwpDialog.js +34 -31
- package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
- package/dist/components/OwpDialog/internal/useDialogOpenFocusCleanup.js +18 -0
- package/dist/components/OwpDialog/internal/useDialogOpenFocusCleanup.js.map +1 -0
- package/dist/components/OwpErrorBoundary/OwpErrorBoundary.js +25 -15
- package/dist/components/OwpErrorBoundary/OwpErrorBoundary.js.map +1 -1
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpNumberField/OwpNumberField.js +45 -24
- package/dist/components/OwpNumberField/OwpNumberField.js.map +1 -1
- package/dist/components/OwpScrollbars/OwpScrollbars.js +79 -52
- package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +157 -157
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +298 -248
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/configs/layoutConfig.js +0 -6
- package/dist/configs/layoutConfig.js.map +1 -1
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +15 -15
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
- package/dist/hooks/internal/useNavbar.js +4 -4
- package/dist/hooks/useConfirm.js +1 -1
- package/dist/hooks/useConfirm.js.map +1 -1
- package/dist/hooks/useOwpDialogs.js +19 -0
- package/dist/hooks/useOwpDialogs.js.map +1 -0
- package/dist/hooks.js +34 -32
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +69 -71
- package/dist/index.js.map +1 -1
- package/dist/layout/Layout.js +23 -27
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
- package/dist/layout/components/menus/PasswordChangeMenu.js +25 -25
- package/dist/layout/components/menus/PasswordChangeMenu.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
- package/dist/layout/components/toggles/ThemePreviewToggle.js +14 -14
- package/dist/layout/components/toggles/ThemePreviewToggle.js.map +1 -1
- package/dist/node_modules/.pnpm/inko@1.1.1/node_modules/inko/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/index.js +1 -1
- package/dist/types/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog.d.ts +5 -3
- package/dist/types/components/OwpDialog/OwpAlertDialog.d.ts +1 -1
- package/dist/types/components/OwpDialog/internal/useDialogOpenFocusCleanup.d.ts +5 -0
- package/dist/types/components/OwpErrorBoundary/OwpErrorBoundary.d.ts +8 -14
- package/dist/types/components/OwpNumberField/OwpNumberField.d.ts +18 -4
- package/dist/types/components/OwpScrollbars/OwpScrollbars.d.ts +28 -14
- package/dist/types/configs/layoutConfig.d.ts +0 -6
- package/dist/types/features/themePreview/dialogs/ThemePreviewDialog.d.ts +1 -1
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useOwpDialogs.d.ts +5 -0
- package/dist/types/hooks/useOwpSettings.d.ts +0 -6
- package/dist/types/index.d.ts +0 -1
- package/dist/types/store/atoms/owpSettingsAtoms.d.ts +0 -6
- package/dist/types/types/OwpDialogTypes.d.ts +1 -0
- package/dist/types/types/OwpRouteTypes.d.ts +25 -0
- package/dist/types/types/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/types/utils/internal/blurActiveElement.d.ts +4 -0
- package/dist/utils/internal/blurActiveElement.js +12 -0
- package/dist/utils/internal/blurActiveElement.js.map +1 -0
- package/dist/utils/{navigationUtils.js → internal/navigationUtils.js} +3 -3
- package/dist/utils/internal/navigationUtils.js.map +1 -0
- package/dist/utils.js +23 -25
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/OwpEventEmitter/OwpEventEmitter.js +0 -51
- package/dist/components/OwpEventEmitter/OwpEventEmitter.js.map +0 -1
- package/dist/layout/components/layouts/LeftSideLayout.js +0 -13
- package/dist/layout/components/layouts/LeftSideLayout.js.map +0 -1
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/some.js +0 -66
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/some.js.map +0 -1
- package/dist/node_modules/.pnpm/perfect-scrollbar@1.5.6/node_modules/perfect-scrollbar/css/perfect-scrollbar.css +0 -1
- package/dist/types/components/OwpEventEmitter/OwpEventEmitter.d.ts +0 -27
- package/dist/types/components/OwpEventEmitter/index.d.ts +0 -1
- package/dist/types/layout/components/layouts/LeftSideLayout.d.ts +0 -6
- package/dist/types/utils/common/OwpUtils.d.ts +0 -119
- package/dist/types/utils/common/index.d.ts +0 -1
- package/dist/utils/common/OwpUtils.js +0 -196
- package/dist/utils/common/OwpUtils.js.map +0 -1
- package/dist/utils/navigationUtils.js.map +0 -1
- /package/dist/types/utils/{navigationUtils.d.ts → internal/navigationUtils.d.ts} +0 -0
|
@@ -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 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 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 dialogs = useDialogs();\n const { confirmSave } = useConfirm();\n const {\n activeSection,\n canApplyToMain,\n draftSettings,\n hasTemporaryChanges,\n hasTemporarySnapshot,\n presetOptions,\n resetVersion,\n selectedModes,\n selectedPresetKeys,\n setActiveSection,\n handlePaletteValueChange,\n handlePaletteValuesChange,\n handlePaletteValueReset,\n handlePaletteValuesReset,\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 setActiveSection(sectionKey);\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 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 fullScreen\n canConfirm={false}\n onClose={handleDialogClose}\n slotProps={{\n paper: {\n sx: {\n borderRadius: 0,\n display: 'flex',\n flexDirection: 'column',\n height: '100dvh',\n m: 0,\n maxHeight: '100dvh',\n },\n },\n }}\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 contentProps={{\n sx: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n height: '100%',\n minHeight: 0,\n overflow: 'hidden',\n p: 3,\n },\n }}\n >\n <div\n ref={previewDialogContentRef}\n className=\"flex h-full min-h-0 flex-col gap-12 overflow-hidden\"\n >\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 overflow-hidden xl:grid-cols-[420px_minmax(0,1fr)]\">\n <div className=\"min-h-0\">\n <ThemePreviewControls\n activeSection={activeSection}\n presetOptions={presetOptions}\n selectedMode={resolvedSelectedMode}\n selectedPresetKey={resolvedSelectedPresetKey}\n settings={draftSettings}\n resetVersion={resetVersion}\n onSectionChange={handleSectionChange}\n onPaletteValueChange={handlePaletteValueChange}\n onPaletteValuesChange={handlePaletteValuesChange}\n onPaletteValueReset={handlePaletteValueReset}\n onPaletteValuesReset={handlePaletteValuesReset}\n onPresetKeyChange={handlePresetKeyChange}\n onPresetModeChange={handlePresetModeChange}\n />\n </div>\n <div className=\"flex min-h-0 min-w-0 overflow-hidden\">\n <ThemePreviewCanvas\n activeSection={activeSection}\n settings={draftSettings}\n />\n </div>\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","previewDialogContentRef","useRef","zipFileInputRef","autoSaveTimeoutRef","isPointerDownRef","lastUserInteractionAtRef","hasTemporaryChangesRef","handleTemporarySaveRef","dialogs","useDialogs","confirmSave","useConfirm","activeSection","canApplyToMain","hasTemporaryChanges","hasTemporarySnapshot","presetOptions","resetVersion","selectedModes","selectedPresetKeys","setActiveSection","handlePaletteValueChange","handlePaletteValuesChange","handlePaletteValueReset","handlePaletteValuesReset","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
|
+
{"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 { useOwpDialogs } from '@/hooks/useOwpDialogs';\nimport { type DialogComponent, type DialogProps } from '@/types/OwpDialogTypes';\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 { 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 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 dialogs = useOwpDialogs();\n const { confirmSave } = useConfirm();\n const {\n activeSection,\n canApplyToMain,\n draftSettings,\n hasTemporaryChanges,\n hasTemporarySnapshot,\n presetOptions,\n resetVersion,\n selectedModes,\n selectedPresetKeys,\n setActiveSection,\n handlePaletteValueChange,\n handlePaletteValuesChange,\n handlePaletteValueReset,\n handlePaletteValuesReset,\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 setActiveSection(sectionKey);\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 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 fullScreen\n canConfirm={false}\n onClose={handleDialogClose}\n slotProps={{\n paper: {\n sx: {\n borderRadius: 0,\n display: 'flex',\n flexDirection: 'column',\n height: '100dvh',\n m: 0,\n maxHeight: '100dvh',\n },\n },\n }}\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 contentProps={{\n sx: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n height: '100%',\n minHeight: 0,\n overflow: 'hidden',\n p: 3,\n },\n }}\n >\n <div\n ref={previewDialogContentRef}\n className=\"flex h-full min-h-0 flex-col gap-12 overflow-hidden\"\n >\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 overflow-hidden xl:grid-cols-[420px_minmax(0,1fr)]\">\n <div className=\"min-h-0\">\n <ThemePreviewControls\n activeSection={activeSection}\n presetOptions={presetOptions}\n selectedMode={resolvedSelectedMode}\n selectedPresetKey={resolvedSelectedPresetKey}\n settings={draftSettings}\n resetVersion={resetVersion}\n onSectionChange={handleSectionChange}\n onPaletteValueChange={handlePaletteValueChange}\n onPaletteValuesChange={handlePaletteValuesChange}\n onPaletteValueReset={handlePaletteValueReset}\n onPaletteValuesReset={handlePaletteValuesReset}\n onPresetKeyChange={handlePresetKeyChange}\n onPresetModeChange={handlePresetModeChange}\n />\n </div>\n <div className=\"flex min-h-0 min-w-0 overflow-hidden\">\n <ThemePreviewCanvas\n activeSection={activeSection}\n settings={draftSettings}\n />\n </div>\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","previewDialogContentRef","useRef","zipFileInputRef","autoSaveTimeoutRef","isPointerDownRef","lastUserInteractionAtRef","hasTemporaryChangesRef","handleTemporarySaveRef","dialogs","useOwpDialogs","confirmSave","useConfirm","activeSection","canApplyToMain","hasTemporaryChanges","hasTemporarySnapshot","presetOptions","resetVersion","selectedModes","selectedPresetKeys","setActiveSection","handlePaletteValueChange","handlePaletteValuesChange","handlePaletteValueReset","handlePaletteValuesReset","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":";;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,KAA2BC,IAC3BC,KAA4B,6BAC5BC,IAAsC,MAAS,KAC/CC,KAAuC,IAAI,KAC3CC,KAAmC,KAAK;AAc9C,SAASC,GAA+BC,GAAmE;AACzG,QAAMC,IAAaC,GAA6BF,CAAa;AAG7D,SAAO;AAAA,IACL,GAHqBG,GAAiCH,CAAa,EAGjD,IAAI,CAAC,EAAE,UAAAI,GAAU,SAAAC,SAAe;AAAA,MAChD,UAAAD;AAAA,MACA,MAAM,IAAI,KAAK,CAACC,CAAO,GAAG;AAAA,QACxB,MAAM;AAAA,MAAA,CACP;AAAA,IAAA,EACD;AAAA,IACF,GAAG,OAAO,QAAQJ,CAAU,EAAE,IAAI,CAAC,CAACG,GAAUE,CAAQ,OAAO;AAAA,MAC3D,UAAU,WAAWF,CAAQ;AAAA,MAC7B,MAAM,IAAI,KAAK,CAAC,KAAK,UAAUE,GAAU,MAAM,CAAC,CAAC,GAAG;AAAA,QAClD,MAAM;AAAA,MAAA,CACP;AAAA,IAAA,EACD;AAAA,EAAA;AAEN;AAlBSC,EAAAR,IAAA;AAoBT,SAASS,GACPC,GACA;;AACA,UACEA,KAAA,gBAAAA,EAAiB,mCACjBC,IAAAD,KAAA,gBAAAA,EAAiB,0BAAjB,gBAAAC,EAAwC;AAE5C;AAPSH,EAAAC,IAAA;AAST,SAASG,GAA+BC,GAAe;AACrD,QAAMC,IAAiBD,EACpB,KAAA,EACA,QAAQ,wBAAwB,EAAE,EAClC,QAAQ,QAAQ,GAAG,EACnB,QAAQ,OAAO,GAAG,EAClB,QAAQ,kBAAkB,EAAE;AAE/B,SAAOC,IAAiB,wBAAwBA,CAAc,KAAK;AACrE;AATSN,EAAAI,IAAA;AAWT,MAAMG,IAA6B;AAAA,EACjC,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,eAAe;AAAA,EAAA;AAAA,EAEjB,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,eAAe;AAAA,IACf,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN,0BAA0B;AAAA,IACxB,IAAI;AAAA,EAAA;AAAA,EAEN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,YAAY;AACd,GACMC,IAAqC;AAAA,EACzC,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET,WAAW;AAAA,IACT,iBAAiB;AAAA,IACjB,aAAa;AAAA,EAAA;AAAA,EAEf,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,OAAO;AACT,GACMC,IAAoC;AAAA,EACxC,kBAAkB;AAAA,IAChB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET,WAAW;AAAA,IACT,iBAAiB;AAAA,IACjB,aAAa;AAAA,EAAA;AAAA,EAEf,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,OAAO;AACT,GACMC,KAA+B,WAE/BC,KAGF,gBAAAX,EAAA,CAAC;AAAA,EACH,MAAAY;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AACF,MAAsE;AACpE,QAAM,CAACjB,GAAUkB,CAAW,IAAIC,GAASH,KAAA,gBAAAA,EAAS,oBAAmB,EAAE;AAEvE,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,MAAAN;AAAA,MACA,UAAS;AAAA,MACT,SAAS,gBAAAZ,EAAA,MAAMc,EAAQ,MAAS,GAAvB;AAAA,MACT,WAAW,gBAAAd,EAAA,MAAMc,EAAQjB,CAAQ,GAAtB;AAAA,MACX,cAAc;AAAA,QACZ,IAAI;AAAA,UACF,UAAU;AAAA,UACV,GAAG;AAAA,QAAA;AAAA,MACL;AAAA,MAGF,UAAA,gBAAAsB,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,QAAA,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAOvB;AAAA,YACP,aAAY;AAAA,YACZ,UAAU,gBAAAG,EAAA,CAACqB,MAAU;AACnB,cAAAN,EAAYM,EAAM,OAAO,KAAK;AAAA,YAChC,GAFU;AAAA,UAEV;AAAA,QAAA;AAAA,0BAEDC,GAAA,EAAW,SAAQ,SAAQ,OAAM,kBAAiB,UAAA,yBAAA,CAEnD;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GApCI,2BAsCSC,KAA4E,gBAAAvB,EAAA,CAAC;AAAA,EACxF,MAAAY;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AACF,MAAyD;AACvD,QAAM,CAACU,GAAgBC,CAAiB,IAAIT,EAAS,EAAE,GACjDU,IAA0BC,EAA8B,IAAI,GAC5DC,IAAkBD,EAAgC,IAAI,GACtDE,IAAqBF,EAAsB,IAAI,GAC/CG,IAAmBH,EAAO,EAAK,GAC/BI,IAA2BJ,EAAO,KAAK,IAAA,CAAK,GAC5CK,IAAyBL,EAAO,EAAK,GACrCM,IAAyBN,EAA+C,MAAA;AAAA,GAAe,GACvFO,IAAUC,GAAA,GACV,EAAE,aAAAC,EAAA,IAAgBC,GAAA,GAClB;AAAA,IACJ,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAA9C;AAAA,IACA,qBAAA+C;AAAA,IACA,sBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,qBAAAC;AAAA,EAAA,IACEC,GAAgB;AAAA,IAClB,gBAAgB7C,KAAA,gBAAAA,EAAS;AAAA,IACzB,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,IAEX,cAAc3B;AAAA,IACd,YAAYyE,GAAsB;AAAA,EAAA,CACnC,GACKC,IACJtB,MAAkB,UAAUA,MAAkB,YAAYA,MAAkB,WACxEuB,KAAuBD,IAAuBhB,EAAcN,CAAa,IAAI,SAC7EwB,KAA4BF,IAAuBf,EAAmBP,CAAa,IAAI,IAEvFyB,IAAgC,gBAAA/D,EAAA,MAAM;AAC1C,IAAA+B,EAAyB,UAAU,KAAK,IAAA;AAAA,EAC1C,GAFsC,kCAIhCiC,KAAwB,gBAAAhE,EAAA,OAAOH,MAAqB;AACxD,UAAMoE,GAAczE,GAA+BC,CAAa,GAAG;AAAA,MACjE,WAAWW,GAA+BP,CAAQ;AAAA,MAClD,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,IAAA,CACpB;AAAA,EACH,GAN8B,0BAQxBqE,KAAuB,gBAAAlE,EAAA,YAAY;AACvC,UAAMmE,IAAe,MAAMjC,EAAQ,KAAKvB,IAAwB;AAAA,MAC9D,iBAAiBa;AAAA,IAAA,CAClB;AAED,IAAI2C,MAAiB,WAIrB1C,EAAkB0C,CAAY,GAC9B,MAAMH,GAAsBG,CAAY;AAAA,EAC1C,GAX6B,yBAavBC,KAAoB,gBAAApE,EAAA,MAAM;;AAC9B,KAAAG,IAAAyB,EAAgB,YAAhB,QAAAzB,EAAyB;AAAA,EAC3B,GAF0B,sBAIpBkE,KAA4B,gBAAArE,EAAA,MAAM;AACtC,IAAAyD,EAAoB,QAAQ,GAC5Ba,EAAgB,kBAAkB;AAAA,MAChC,SAAS;AAAA,IAAA,CACV;AAAA,EACH,GALkC,8BAO5BC,KAA4B,gBAAAvE,EAAA,MAAM;AACtC,QAAI,CAACwD,MAAuB;AAC1B,MAAAc,EAAgB,wBAAwB;AAAA,QACtC,SAAS;AAAA,MAAA,CACV;AACD;AAAA,IACF;AAEA,IAAAA,EAAgB,sBAAsB;AAAA,MACpC,SAAS;AAAA,IAAA,CACV;AAAA,EACH,GAXkC,8BAa5BE,KAAoB,gBAAAxE,EAAA,YAAY;AACpC,IAAIwC,MACkB,MAAMJ,EAAY;AAAA,MACpC,OAAO;AAAA,IAAA,CACR,KAGCqB,EAAoB,QAAQ,GAC5Ba,EAAgB,uCAAuC;AAAA,MACrD,SAAS;AAAA,IAAA,CACV,KAEDG,GAAA,IAIJ3D,EAAQ,MAAS;AAAA,EACnB,GAjB0B,sBAmBpB4D,KAAsB,gBAAA1E,EAAA,OAAOqB,MAAyC;;AAC1E,UAAMsD,KAAexE,IAAAkB,EAAM,OAAO,UAAb,gBAAAlB,EAAqB;AAE1C,QAAKwE;AAIL,UAAI;AACF,cAAMC,IAAiB,MAAMC;AAAA,UAC3BF;AAAA,UACA,CAAC9E,OAAaA,GAAS,SAAS,eAAe;AAAA,QAAA;AAGjD,YAAI,CAAC+E,GAAgB;AACnB,UAAAN,EAAgB,2BAA2B;AAAA,YACzC,SAAS;AAAA,UAAA,CACV;AACD;AAAA,QACF;AAEA,cAAMQ,KAAYC,IAAAH,EAAe,0BAAf,gBAAAG,EAAsC,OAClDC,KAAoBJ,EAAe,wBAAwBK,IAC3DC,KAA4BjF,GAAoC2E,CAAc;AAEpF,YAAI,CAACE,GAAW;AACd,UAAAR,EAAgB,uBAAuB;AAAA,YACrC,SAAS;AAAA,UAAA,CACV;AACD;AAAA,QACF;AAEA,QAAAlB,EAAmB0B,GAAWE,IAAmBE,EAAyB,GAC1EZ,EAAgB,8BAA8B;AAAA,UAC5C,SAAS;AAAA,QAAA,CACV;AAAA,MACH,QAAQ;AACN,QAAAA,EAAgB,6BAA6B;AAAA,UAC3C,SAAS;AAAA,QAAA,CACV;AAAA,MACH,UAAA;AACE,QAAAjD,EAAM,OAAO,QAAQ;AAAA,MACvB;AAAA,EACF,GA1C4B,wBA4CtB8D,KAAsB,gBAAAnF,EAAA,CAACoF,MAAuC;AAClE,IAAIA,MAAe9C,KAInBQ,EAAiBsC,CAAU;AAAA,EAC7B,GAN4B;AAQ5B,SAAAC,EAAU,MAAM;AACd,IAAApD,EAAuB,UAAUwB;AAAA,EACnC,GAAG,CAACA,CAAmB,CAAC,GAExB4B,EAAU,MAAM;AACd,IAAArD,EAAuB,UAAUQ;AAAA,EACnC,GAAG,CAACA,CAAmB,CAAC,GAExB6C,EAAU,MAAM;AACd,UAAMC,IAAwB5D,EAAwB;AAEtD,QAAI,CAAC4D;AACH;AAGF,UAAMC,IAAoB,gBAAAvF,EAAA,MAAM;AAC9B,MAAA8B,EAAiB,UAAU,IAC3BiC,EAAA;AAAA,IACF,GAH0B,sBAIpByB,IAAkB,gBAAAxF,EAAA,MAAM;AAC5B,MAAA8B,EAAiB,UAAU,IAC3BiC,EAAA;AAAA,IACF,GAHwB;AAKxB,WAAAuB,EAAsB,iBAAiB,eAAeC,CAAiB,GACvED,EAAsB,iBAAiB,aAAaE,CAAe,GACnEF,EAAsB,iBAAiB,iBAAiBE,CAAe,GACvEF,EAAsB,iBAAiB,WAAWvB,CAA6B,GAC/EuB,EAAsB,iBAAiB,SAASvB,CAA6B,GAC7EuB,EAAsB,iBAAiB,UAAUvB,CAA6B,GAC9EuB,EAAsB,iBAAiB,WAAWvB,CAA6B,GAExE,MAAM;AACX,MAAAuB,EAAsB,oBAAoB,eAAeC,CAAiB,GAC1ED,EAAsB,oBAAoB,aAAaE,CAAe,GACtEF,EAAsB,oBAAoB,iBAAiBE,CAAe,GAC1EF,EAAsB,oBAAoB,WAAWvB,CAA6B,GAClFuB,EAAsB,oBAAoB,SAASvB,CAA6B,GAChFuB,EAAsB,oBAAoB,UAAUvB,CAA6B,GACjFuB,EAAsB,oBAAoB,WAAWvB,CAA6B;AAAA,IACpF;AAAA,EACF,GAAG,CAAA,CAAE,GAELsB,EAAU,MAAM;AACd,UAAMI,IAAuB,gBAAAzF,EAAA,MAAM;AACjC,MAAK6B,EAAmB,YAIxB,OAAO,aAAaA,EAAmB,OAAO,GAC9CA,EAAmB,UAAU;AAAA,IAC/B,GAP6B,yBAQvB6D,IAAmB,gBAAA1F,EAAA,CAAC2F,MAAkB;AAC1C,MAAAF,EAAA,GACA5D,EAAmB,UAAU,OAAO,WAAW,MAAM;AACnD,cAAM+D,IACJ9D,EAAiB,WACjB,KAAK,QAAQC,EAAyB,UAAUzC;AAElD,YAAI,SAAS,UAAUsG,GAAmB;AACxC,UAAAF,EAAiBnG,EAAgC;AACjD;AAAA,QACF;AAEA,QAAA0C,EAAuB,QAAQ,MAAM,GACrCyD,EAAiBrG,CAAmC;AAAA,MACtD,GAAGsG,CAAK;AAAA,IACV,GAfyB;AAiBzB,WAAAD,EAAiBrG,CAAmC,GAE7C,MAAM;AACX,MAAAoG,EAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAA,CAAE,GAELJ,EAAU,MAAM;AACd,UAAMQ,IAAiB,gBAAA7F,EAAA,MAAM;AAC3B,MAAKgC,EAAuB,WAI5BC,EAAuB,QAAQ,QAAQ;AAAA,IACzC,GANuB;AAQvB,kBAAO,iBAAiB,YAAY4D,CAAc,GAClD,OAAO,iBAAiB,gBAAgBA,CAAc,GAE/C,MAAM;AACX,aAAO,oBAAoB,YAAYA,CAAc,GACrD,OAAO,oBAAoB,gBAAgBA,CAAc;AAAA,IAC3D;AAAA,EACF,GAAG,CAAA,CAAE,GAGH,gBAAA5E;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,6DACb,UAAA;AAAA,QAAA,gBAAAF,EAACK,GAAA,EAAW,SAAQ,MAAK,YAAY,KAAK,IAAI,EAAE,OAAOZ,GAAA,GAAgC,UAAA,oBAAA,CAEvF;AAAA,QACA,gBAAAS,EAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,IAAI;AAAA,gBACF,GAAGvF;AAAA,gBACH,GAAGE;AAAA,cAAA;AAAA,cAEL,SAAS8C;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGD,gBAAAtC;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,UAAU,CAACvD;AAAA,cACX,IAAI;AAAA,gBACF,GAAGhC;AAAA,gBACH,GAAGC;AAAA,cAAA;AAAA,cAEL,SAAS2C;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,MAAAvC;AAAA,MACA,YAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS4D;AAAA,MACT,WAAW;AAAA,QACT,OAAO;AAAA,UACL,IAAI;AAAA,YACF,cAAc;AAAA,YACd,SAAS;AAAA,YACT,eAAe;AAAA,YACf,QAAQ;AAAA,YACR,GAAG;AAAA,YACH,WAAW;AAAA,UAAA;AAAA,QACb;AAAA,MACF;AAAA,MAEF,SACE,gBAAArD,EAAC,OAAA,EAAI,WAAU,qEACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,6BAAYC,IAAA,EAAiB;AAAA,cAC7B,IAAI;AAAA,gBACF,GAAGxF;AAAA,gBACH,GAAGC;AAAA,cAAA;AAAA,cAEL,SAAS6D;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGD,gBAAApD;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,6BAAYE,IAAA,EAAoB;AAAA,cAChC,UAAU,CAACvD;AAAA,cACX,IAAI;AAAA,gBACF,GAAGlC;AAAA,gBACH,GAAGE;AAAA,cAAA;AAAA,cAEL,SAAS8D;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,GACF;AAAA,QACA,gBAAApD,EAAC,OAAA,EAAI,WAAU,oDACb,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,6BAAYG,IAAA,EAAqB;AAAA,cACjC,IAAI;AAAA,gBACF,GAAG1F;AAAA,gBACH,GAAGC;AAAA,cAAA;AAAA,cAEL,SAAS0D;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGD,gBAAAjD;AAAA,YAAC6E;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,6BAAYI,IAAA,EAAuB;AAAA,cACnC,IAAI;AAAA,gBACF,GAAG3F;AAAA,gBACH,GAAGE;AAAA,cAAA;AAAA,cAEL,SAAS2D;AAAA,cACV,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,GACF;AAAA,0BACC,OAAA,CAAA,CAAI;AAAA,MAAA,GACP;AAAA,MAEF,cAAc;AAAA,QACZ,IAAI;AAAA,UACF,SAAS;AAAA,UACT,MAAM;AAAA,UACN,eAAe;AAAA,UACf,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,UAAU;AAAA,UACV,GAAG;AAAA,QAAA;AAAA,MACL;AAAA,MAGF,UAAA,gBAAAjD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKO;AAAA,UACL,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKW;AAAA,gBACL,MAAK;AAAA,gBACL,QAAQxC;AAAA,gBACR,WAAU;AAAA,gBACV,UAAUsF;AAAA,cAAA;AAAA,YAAA;AAAA,YAEZ,gBAAAvD,EAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,cAAA,gBAAAF,EAAC,OAAA,EAAI,WAAU,WACb,UAAA,gBAAAA;AAAA,gBAACkF;AAAA,gBAAA;AAAA,kBACC,eAAA7D;AAAA,kBACA,eAAAI;AAAA,kBACA,cAAcmB;AAAA,kBACd,mBAAmBC;AAAA,kBACnB,UAAUrE;AAAA,kBACV,cAAAkD;AAAA,kBACA,iBAAiBwC;AAAA,kBACjB,sBAAsBpC;AAAA,kBACtB,uBAAuBC;AAAA,kBACvB,qBAAqBC;AAAA,kBACrB,sBAAsBC;AAAA,kBACtB,mBAAmBG;AAAA,kBACnB,oBAAoBC;AAAA,gBAAA;AAAA,cAAA,GAExB;AAAA,cACA,gBAAArC,EAAC,OAAA,EAAI,WAAU,wCACb,UAAA,gBAAAA;AAAA,gBAACmF;AAAA,gBAAA;AAAA,kBACC,eAAA9D;AAAA,kBACA,UAAU7C;AAAA,gBAAA;AAAA,cAAA,EACZ,CACF;AAAA,YAAA,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GArayF;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var v = Object.defineProperty;
|
|
2
2
|
var n = (e, t) => v(e, "name", { value: t, configurable: !0 });
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
const V = /* @__PURE__ */ n(() => d(
|
|
6
|
-
const e = o(
|
|
3
|
+
import { useAtomValue as d, useSetAtom as o } from "jotai";
|
|
4
|
+
import { navbarStateAtom as g, navbarToggleFoldedAtom as i, navbarOpenFoldedAtom as p, navbarCloseFoldedAtom as u, navbarToggleMobileAtom as F, navbarOpenMobileAtom as M, navbarCloseMobileAtom as C, navbarOpenAtom as N, navbarCloseAtom as O, navbarToggleAtom as T, resetNavbarAtom as f } from "../../store/atoms/navbarAtoms.js";
|
|
5
|
+
const V = /* @__PURE__ */ n(() => d(g), "useGetNavbar"), h = /* @__PURE__ */ n(() => {
|
|
6
|
+
const e = o(i), t = o(p), a = o(u), l = o(F), s = o(M), r = o(C), b = o(N), m = o(O), c = o(T), A = o(f);
|
|
7
7
|
return {
|
|
8
8
|
toggleFolded: e,
|
|
9
9
|
openFolded: t,
|
package/dist/hooks/useConfirm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var f = Object.defineProperty;
|
|
2
2
|
var n = (t, e) => f(t, "name", { value: e, configurable: !0 });
|
|
3
|
+
import { useOwpDialogs as p } from "./useOwpDialogs.js";
|
|
3
4
|
import { useOwpTranslation as m } from "./useOwpTranslation.js";
|
|
4
|
-
import { useDialogs as p } from "@toolpad/core/useDialogs";
|
|
5
5
|
import { OwpAlertDialog as T } from "../components/OwpDialog/OwpAlertDialog.js";
|
|
6
6
|
const s = {
|
|
7
7
|
infoTitle: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfirm.js","sources":["../../src/hooks/useConfirm.tsx"],"sourcesContent":["import { OwpAlertDialog } from '@/components/OwpDialog';\nimport {
|
|
1
|
+
{"version":3,"file":"useConfirm.js","sources":["../../src/hooks/useConfirm.tsx"],"sourcesContent":["import { OwpAlertDialog } from '@/components/OwpDialog';\nimport { useOwpDialogs } from '@/hooks/useOwpDialogs';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport type { OwpAlertDialogPayload } from '@/components/OwpDialog';\nimport type { ButtonProps } from '@mui/material';\n\nexport interface ConfirmProps extends Omit<OwpAlertDialogPayload, 'cancelButtonProps'> {\n onClose?: (result: boolean) => Promise<void>;\n}\ninterface ConfirmBaseProps extends ConfirmProps {\n cancelButtonProps?: ButtonProps;\n}\n\ninterface ConfirmTranslationConfig {\n key: string;\n defaultValue?: string;\n}\n\n/**\n * 확인 대화상자 번역 설정\n */\nconst CONFIRM_TRANSLATIONS = {\n infoTitle: {\n key: 'Message.처리하시겠습니까',\n defaultValue: '처리하시겠습니까?',\n },\n infoOk: {\n key: 'Button.확인',\n },\n saveTitle: {\n key: 'Message.저장하시겠습니까?',\n },\n saveOk: {\n key: 'Button.저장',\n },\n updateTitle: {\n key: 'Message.수정하시겠습니까?',\n },\n updateOk: {\n key: 'Button.수정',\n },\n deleteTitle: {\n key: 'Message.삭제하시겠습니까?',\n },\n deleteOk: {\n key: 'Button.삭제',\n },\n cancel: {\n key: 'Button.취소',\n },\n} as const;\n\nconst translateConfirmText = (\n translate: (key: string, options?: { defaultValue?: string }) => string,\n { key, defaultValue }: ConfirmTranslationConfig,\n) => (defaultValue ? translate(key, { defaultValue }) : translate(key));\n\n/**\n * 확인 버튼 속성 병합\n * @param defaultColor 기본 버튼 색상\n * @param okButtonProps 사용자 버튼 속성\n */\nconst mergeOkButtonProps = (\n defaultColor: ButtonProps['color'] | undefined,\n okButtonProps?: ButtonProps,\n) => {\n if (!defaultColor) {\n return okButtonProps;\n }\n\n return {\n color: defaultColor,\n ...okButtonProps,\n } as ButtonProps;\n};\n/**\n * 확인 대화상자 훅\n */\nexport const useConfirm = () => {\n const dialogs = useOwpDialogs();\n const { t } = useOwpTranslation();\n\n const confirmBase = (props: ConfirmBaseProps) => dialogs.open(OwpAlertDialog, props);\n\n return {\n confirm: confirmBase,\n confirmInfo: async ({\n title,\n description,\n okText,\n severity,\n }: ConfirmProps | undefined = {}) => {\n return confirmBase({\n title: title ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.infoTitle),\n description,\n okText: okText ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.infoOk),\n severity: severity ?? 'primary',\n useInfo: true,\n });\n },\n confirmSave: async ({\n title,\n description,\n okText,\n cancelText,\n okButtonProps,\n }: ConfirmProps | undefined = {}) => {\n return confirmBase({\n title: title ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.saveTitle),\n description,\n okText: okText ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.saveOk),\n cancelText,\n okButtonProps: mergeOkButtonProps('secondary', okButtonProps),\n });\n },\n confirmUpdate: async ({\n title,\n description,\n okText,\n cancelText,\n okButtonProps,\n }: ConfirmProps | undefined = {}) => {\n return confirmBase({\n title: title ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.updateTitle),\n description,\n okText: okText ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.updateOk),\n cancelText,\n okButtonProps: mergeOkButtonProps('secondary', okButtonProps),\n });\n },\n confirmDelete: async ({\n title,\n description,\n okText,\n cancelText,\n okButtonProps,\n }: ConfirmProps | undefined = {}) => {\n return confirmBase({\n title: title ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.deleteTitle),\n description,\n okText: okText ?? translateConfirmText(t, CONFIRM_TRANSLATIONS.deleteOk),\n cancelText,\n okButtonProps: mergeOkButtonProps('error', okButtonProps),\n });\n },\n };\n};\n"],"names":["CONFIRM_TRANSLATIONS","translateConfirmText","__name","translate","key","defaultValue","mergeOkButtonProps","defaultColor","okButtonProps","useConfirm","dialogs","useOwpDialogs","t","useOwpTranslation","confirmBase","props","OwpAlertDialog","title","description","okText","severity","cancelText"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var s = Object.defineProperty;
|
|
2
|
+
var e = (r, m) => s(r, "name", { value: m, configurable: !0 });
|
|
3
|
+
import { blurActiveElement as n } from "../utils/internal/blurActiveElement.js";
|
|
4
|
+
import { useDialogs as c } from "@toolpad/core/useDialogs";
|
|
5
|
+
import { useMemo as i } from "react";
|
|
6
|
+
const d = /* @__PURE__ */ e(() => {
|
|
7
|
+
const r = c();
|
|
8
|
+
return i(() => ({
|
|
9
|
+
...r,
|
|
10
|
+
alert: /* @__PURE__ */ e((o, t) => (n(), r.alert(o, t)), "alert"),
|
|
11
|
+
confirm: /* @__PURE__ */ e((o, t) => (n(), r.confirm(o, t)), "confirm"),
|
|
12
|
+
prompt: /* @__PURE__ */ e((o, t) => (n(), r.prompt(o, t)), "prompt"),
|
|
13
|
+
open: /* @__PURE__ */ e(((o, t, p) => (n(), r.open(o, t, p))), "open")
|
|
14
|
+
}), [r]);
|
|
15
|
+
}, "useOwpDialogs");
|
|
16
|
+
export {
|
|
17
|
+
d as useOwpDialogs
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useOwpDialogs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOwpDialogs.js","sources":["../../src/hooks/useOwpDialogs.ts"],"sourcesContent":["import { blurActiveElement } from '@/utils/internal/blurActiveElement';\nimport { useDialogs } from '@toolpad/core/useDialogs';\nimport { useMemo } from 'react';\nimport type { DialogHook } from '@/types/OwpDialogTypes';\n\n/**\n * Dialog open 전 focus 정리 hook\n */\nexport const useOwpDialogs = (): DialogHook => {\n const dialogs = useDialogs();\n\n return useMemo(() => {\n const alert: DialogHook['alert'] = (msg, options) => {\n blurActiveElement();\n return dialogs.alert(msg, options);\n };\n const confirm: DialogHook['confirm'] = (msg, options) => {\n blurActiveElement();\n return dialogs.confirm(msg, options);\n };\n const prompt: DialogHook['prompt'] = (msg, options) => {\n blurActiveElement();\n return dialogs.prompt(msg, options);\n };\n const open = ((\n Component: Parameters<DialogHook['open']>[0],\n payload?: Parameters<DialogHook['open']>[1],\n options?: Parameters<DialogHook['open']>[2],\n ) => {\n blurActiveElement();\n return dialogs.open(Component, payload, options);\n }) as DialogHook['open'];\n\n return {\n ...dialogs,\n alert,\n confirm,\n prompt,\n open,\n };\n }, [dialogs]);\n};\n"],"names":["useOwpDialogs","__name","dialogs","useDialogs","useMemo","msg","options","blurActiveElement","Component","payload"],"mappings":";;;;;AAQO,MAAMA,IAAgB,gBAAAC,EAAA,MAAkB;AAC7C,QAAMC,IAAUC,EAAA;AAEhB,SAAOC,EAAQ,OAsBN;AAAA,IACL,GAAGF;AAAA,IACH,OAvBiC,gBAAAD,EAAA,CAACI,GAAKC,OACvCC,EAAA,GACOL,EAAQ,MAAMG,GAAKC,CAAO,IAFA;AAAA,IAwBjC,SApBqC,gBAAAL,EAAA,CAACI,GAAKC,OAC3CC,EAAA,GACOL,EAAQ,QAAQG,GAAKC,CAAO,IAFE;AAAA,IAqBrC,QAjBmC,gBAAAL,EAAA,CAACI,GAAKC,OACzCC,EAAA,GACOL,EAAQ,OAAOG,GAAKC,CAAO,IAFC;AAAA,IAkBnC,MAdY,gBAAAL,GAAA,CACZO,GACAC,GACAH,OAEAC,EAAA,GACOL,EAAQ,KAAKM,GAAWC,GAASH,CAAO,KANnC;AAAA,EAcZ,IAED,CAACJ,CAAO,CAAC;AACd,GAjC6B;"}
|
package/dist/hooks.js
CHANGED
|
@@ -1,48 +1,50 @@
|
|
|
1
1
|
import { useFilteredCommonCodeList as r, useGetCommonCodeList as o, useSetCommonCodeList as s } from "./hooks/useCommonCodeList.js";
|
|
2
|
-
import { useConfirm as
|
|
2
|
+
import { useConfirm as m } from "./hooks/useConfirm.js";
|
|
3
3
|
import { useGetLogoSrc as i, useSetLogoSrc as a } from "./hooks/useLogoSrc.js";
|
|
4
|
-
import { useMinimumVisibleState as
|
|
4
|
+
import { useMinimumVisibleState as f } from "./hooks/useMinimumVisibleState.js";
|
|
5
5
|
import { useGetCurrentUser as C, useSetCurrentUser as x } from "./hooks/useCurrentUser.js";
|
|
6
|
-
import { useGetCurrentUserId as
|
|
7
|
-
import { useEnsureCurrentUserSeq as
|
|
6
|
+
import { useGetCurrentUserId as G, useSetCurrentUserId as d } from "./hooks/useCurrentUserId.js";
|
|
7
|
+
import { useEnsureCurrentUserSeq as L, useGetCurrentUserSeq as T, useSetCurrentUserSeq as E } from "./hooks/useCurrentUserSeq.js";
|
|
8
8
|
import { useFormDataUploadMutation as c } from "./hooks/useFormDataUploadMutation.js";
|
|
9
9
|
import { useInitApp as b } from "./hooks/useInitApp.js";
|
|
10
|
-
import { useGetNavigationList as
|
|
11
|
-
import { useChangeOwpTheme as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
10
|
+
import { useGetNavigationList as w, useSetNavigationList as D } from "./hooks/useNavigation.js";
|
|
11
|
+
import { useChangeOwpTheme as q, useGetCurrentLayoutConfig as F, useGetCurrentSettings as I, useGetCustomScrollbarsEnabled as M, useGetDefaultSettings as N, useGetFooterTheme as k, useGetMainTheme as P, useGetNavbarTheme as y, useGetOwpSettings as A, useGetToolbarTheme as R, useResetSettings as V, useSetDefaultSettings as j, useSetSettings as z } from "./hooks/useOwpSettings.js";
|
|
12
|
+
import { useOwpDialogs as H } from "./hooks/useOwpDialogs.js";
|
|
13
|
+
import { useOwpTranslation as K } from "./hooks/useOwpTranslation.js";
|
|
14
|
+
import { useGetPageLockLoading as W, usePageLockLoading as X } from "./hooks/usePageLockLoading.js";
|
|
15
|
+
import { getEnv as Z, setEnv as _, useStorage as $ } from "./hooks/useStorage.js";
|
|
16
|
+
import { useTreeGridCommonCodeEnums as te } from "./hooks/useTreeGridCommonCodeEnums.js";
|
|
17
|
+
import { useTreeGridEnums as oe } from "./hooks/useTreeGridEnums.js";
|
|
18
|
+
import { useTreeGridExcelExport as ue } from "./hooks/useTreeGridExcelExport.js";
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
Z as getEnv,
|
|
21
|
+
_ as setEnv,
|
|
22
|
+
q as useChangeOwpTheme,
|
|
23
|
+
m as useConfirm,
|
|
24
|
+
L as useEnsureCurrentUserSeq,
|
|
24
25
|
r as useFilteredCommonCodeList,
|
|
25
26
|
c as useFormDataUploadMutation,
|
|
26
27
|
o as useGetCommonCodeList,
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
F as useGetCurrentLayoutConfig,
|
|
29
|
+
I as useGetCurrentSettings,
|
|
29
30
|
C as useGetCurrentUser,
|
|
30
|
-
|
|
31
|
+
G as useGetCurrentUserId,
|
|
31
32
|
T as useGetCurrentUserSeq,
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
M as useGetCustomScrollbarsEnabled,
|
|
34
|
+
N as useGetDefaultSettings,
|
|
34
35
|
k as useGetFooterTheme,
|
|
35
36
|
i as useGetLogoSrc,
|
|
36
37
|
P as useGetMainTheme,
|
|
37
38
|
y as useGetNavbarTheme,
|
|
38
|
-
|
|
39
|
+
w as useGetNavigationList,
|
|
39
40
|
A as useGetOwpSettings,
|
|
40
|
-
|
|
41
|
+
W as useGetPageLockLoading,
|
|
41
42
|
R as useGetToolbarTheme,
|
|
42
43
|
b as useInitApp,
|
|
43
|
-
|
|
44
|
-
H as
|
|
45
|
-
|
|
44
|
+
f as useMinimumVisibleState,
|
|
45
|
+
H as useOwpDialogs,
|
|
46
|
+
K as useOwpTranslation,
|
|
47
|
+
X as usePageLockLoading,
|
|
46
48
|
V as useResetSettings,
|
|
47
49
|
s as useSetCommonCodeList,
|
|
48
50
|
x as useSetCurrentUser,
|
|
@@ -50,11 +52,11 @@ export {
|
|
|
50
52
|
E as useSetCurrentUserSeq,
|
|
51
53
|
j as useSetDefaultSettings,
|
|
52
54
|
a as useSetLogoSrc,
|
|
53
|
-
|
|
55
|
+
D as useSetNavigationList,
|
|
54
56
|
z as useSetSettings,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
$ as useStorage,
|
|
58
|
+
te as useTreeGridCommonCodeEnums,
|
|
59
|
+
oe as useTreeGridEnums,
|
|
60
|
+
ue as useTreeGridExcelExport
|
|
59
61
|
};
|
|
60
62
|
//# sourceMappingURL=hooks.js.map
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,8 @@ import { OwpExportDataToExcelButton as P } from "./components/OwpExportExcelButt
|
|
|
7
7
|
import { OwpFilePickerButton as D } from "./components/OwpFilePickerButton/OwpFilePickerButton.js";
|
|
8
8
|
import { OwpMoreActionsButton as k } from "./components/OwpMoreActionsButton/OwpMoreActionsButton.js";
|
|
9
9
|
import { OwpDatePicker as B } from "./components/OwpPicker/OwpDatePicker.js";
|
|
10
|
-
import { OwpDateRangePicker as
|
|
11
|
-
import { OwpTimePicker as
|
|
10
|
+
import { OwpDateRangePicker as F } from "./components/OwpPicker/OwpDateRangePicker.js";
|
|
11
|
+
import { OwpTimePicker as E } from "./components/OwpPicker/OwpTimePicker.js";
|
|
12
12
|
import { OwpWeekDatePicker as v } from "./components/OwpPicker/OwpWeekDatePicker.js";
|
|
13
13
|
import { OwpYearRangePicker as Q } from "./components/OwpPicker/OwpYearRangePicker.js";
|
|
14
14
|
import { OwpDataTable as H } from "./components/OwpTable/OwpDataTable.js";
|
|
@@ -19,93 +19,91 @@ import { OwpTreeGridToolbar as z } from "./components/OwpTreeGrid/OwpTreeGridToo
|
|
|
19
19
|
import { OwpZoomImageSlider as K } from "./components/OwpZoomImageSlider/OwpZoomImageSlider.js";
|
|
20
20
|
import { default as V } from "./components/OwpPageBreadcrumb/OwpPageBreadcrumb.js";
|
|
21
21
|
import { OwpErrorBoundary as _ } from "./components/OwpErrorBoundary/OwpErrorBoundary.js";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import { OwpYesNoSelector as io } from "./components/OwpYesNoSelector/OwpYesNoSelector.js";
|
|
22
|
+
import { OwpLanguageSwitcherSelect as ee } from "./components/OwpLanguageSwitcherSelect/OwpLanguageSwitcherSelect.js";
|
|
23
|
+
import { OwpAlertDialog as re } from "./components/OwpDialog/OwpAlertDialog.js";
|
|
24
|
+
import { OwpDialog as pe } from "./components/OwpDialog/OwpDialog.js";
|
|
25
|
+
import { CommonCodeSelector as xe, OwpCommonCodeSelector as ae } from "./components/OwpCommonCode/OwpCommonCodeSelector.js";
|
|
26
|
+
import { CommonCodeQuerySelector as Oe, OwpCommonCodeQuerySelector as we } from "./components/OwpCommonCode/OwpCommonCodeQuerySelector.js";
|
|
27
|
+
import { CommonCodeRadioGroup as le, OwpCommonCodeRadioGroup as ne } from "./components/OwpCommonCode/OwpCommonCodeRadioGroup.js";
|
|
28
|
+
import { OwpErrorStatusPage as ue } from "./components/OwpErrorStatusPage/OwpErrorStatusPage.js";
|
|
29
|
+
import { OwpFieldHelperText as ce } from "./components/OwpFieldHelperText/OwpFieldHelperText.js";
|
|
30
|
+
import { OwpLayout as Se } from "./components/OwpLayout/OwpLayout.js";
|
|
31
|
+
import { OwpLoading as Ce } from "./components/OwpLoading/OwpLoading.js";
|
|
32
|
+
import { OwpNumberField as he } from "./components/OwpNumberField/OwpNumberField.js";
|
|
33
|
+
import { OwpOptionSelector as be } from "./components/OwpOptionSelector/OwpOptionSelector.js";
|
|
34
|
+
import { OwpPageCarded as ye } from "./components/OwpPageCarded/OwpPageCarded.js";
|
|
35
|
+
import { OwpPageContent as Le } from "./components/OwpPageContent/OwpPageContent.js";
|
|
36
|
+
import { OwpPageLockLoading as Ge } from "./components/OwpPageLockLoading/OwpPageLockLoading.js";
|
|
37
|
+
import { OwpPageTitle as Re } from "./components/OwpPageTitle/OwpPageTitle.js";
|
|
38
|
+
import { OwpQuerySelector as Ie } from "./components/OwpQuerySelector/OwpQuerySelector.js";
|
|
39
|
+
import { OwpScrollbars as Ae } from "./components/OwpScrollbars/OwpScrollbars.js";
|
|
40
|
+
import { OwpSearchFilter as Me } from "./components/OwpSearchFilter/OwpSearchFilter.js";
|
|
41
|
+
import { OwpSection as We } from "./components/OwpSection/OwpSection.js";
|
|
42
|
+
import { OwpStyleProvider as qe } from "./components/OwpStyleProvider/OwpStyleProvider.js";
|
|
43
|
+
import { OwpSuspense as je } from "./components/OwpSuspense/OwpSuspense.js";
|
|
44
|
+
import { OwpSvgIcon as Je } from "./components/OwpSvgIcon/OwpSvgIcon.js";
|
|
45
|
+
import { OwpRequiredHelperText as Ue } from "./components/OwpRequiredHelperText/OwpRequiredHelperText.js";
|
|
46
|
+
import { OwpTab as Xe } from "./components/OwpTabs/OwpTab.js";
|
|
47
|
+
import { OwpTabs as $e } from "./components/OwpTabs/OwpTabs.js";
|
|
48
|
+
import { OwpTreeGridExportExcelButton as oo } from "./components/OwpTreeGridExportExcelButton/OwpTreeGridExportExcelButton.js";
|
|
49
|
+
import { OwpTreeGridResetChangesButton as to } from "./components/OwpTreeGridResetChangesButton/OwpTreeGridResetChangesButton.js";
|
|
50
|
+
import { OwpTreeGrid as mo } from "./components/OwpTreeGrid/OwpTreeGrid.js";
|
|
51
|
+
import { TreeGrid as ao } from "./components/OwpTreeGrid/TreeGrid.js";
|
|
52
|
+
import { OwpYesNoSelector as Oo } from "./components/OwpYesNoSelector/OwpYesNoSelector.js";
|
|
54
53
|
export {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
Oe as CommonCodeQuerySelector,
|
|
55
|
+
le as CommonCodeRadioGroup,
|
|
56
|
+
xe as CommonCodeSelector,
|
|
58
57
|
r as DialogsProvider,
|
|
59
|
-
|
|
58
|
+
re as OwpAlertDialog,
|
|
60
59
|
s as OwpAutoLogoutDialog,
|
|
61
60
|
T as OwpBarcodeInputField,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
we as OwpCommonCodeQuerySelector,
|
|
62
|
+
ne as OwpCommonCodeRadioGroup,
|
|
63
|
+
ae as OwpCommonCodeSelector,
|
|
65
64
|
H as OwpDataTable,
|
|
66
65
|
B as OwpDatePicker,
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
F as OwpDateRangePicker,
|
|
67
|
+
pe as OwpDialog,
|
|
69
68
|
_ as OwpErrorBoundary,
|
|
70
|
-
|
|
71
|
-
ee as OwpEventEmitter,
|
|
69
|
+
ue as OwpErrorStatusPage,
|
|
72
70
|
P as OwpExportDataToExcelButton,
|
|
73
|
-
|
|
71
|
+
ce as OwpFieldHelperText,
|
|
74
72
|
Y as OwpFieldTable,
|
|
75
73
|
D as OwpFilePickerButton,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
ee as OwpLanguageSwitcherSelect,
|
|
75
|
+
Se as OwpLayout,
|
|
76
|
+
Ce as OwpLoading,
|
|
79
77
|
k as OwpMoreActionsButton,
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
he as OwpNumberField,
|
|
79
|
+
be as OwpOptionSelector,
|
|
82
80
|
V as OwpPageBreadcrumb,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
81
|
+
ye as OwpPageCarded,
|
|
82
|
+
Le as OwpPageContent,
|
|
83
|
+
Ge as OwpPageLockLoading,
|
|
84
|
+
Re as OwpPageTitle,
|
|
85
|
+
Ie as OwpQuerySelector,
|
|
86
|
+
Ue as OwpRequiredHelperText,
|
|
87
|
+
Ae as OwpScrollbars,
|
|
88
|
+
Me as OwpSearchFilter,
|
|
89
|
+
We as OwpSection,
|
|
90
|
+
qe as OwpStyleProvider,
|
|
91
|
+
je as OwpSuspense,
|
|
92
|
+
Je as OwpSvgIcon,
|
|
93
|
+
Xe as OwpTab,
|
|
96
94
|
N as OwpTable,
|
|
97
|
-
|
|
95
|
+
$e as OwpTabs,
|
|
98
96
|
Z as OwpTextMaskField,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
97
|
+
E as OwpTimePicker,
|
|
98
|
+
mo as OwpTreeGrid,
|
|
99
|
+
oo as OwpTreeGridExportExcelButton,
|
|
100
|
+
to as OwpTreeGridResetChangesButton,
|
|
103
101
|
z as OwpTreeGridToolbar,
|
|
104
102
|
v as OwpWeekDatePicker,
|
|
105
103
|
Q as OwpYearRangePicker,
|
|
106
|
-
|
|
104
|
+
Oo as OwpYesNoSelector,
|
|
107
105
|
K as OwpZoomImageSlider,
|
|
108
|
-
|
|
106
|
+
ao as TreeGrid,
|
|
109
107
|
x as createInitialOwpSettings,
|
|
110
108
|
a as defaultSettings,
|
|
111
109
|
f as defaultSnackbarTheme,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|