@owp/core 2.1.7 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/components/OwpTable/OwpTable.js +21 -21
  2. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  3. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +193 -136
  4. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  5. package/dist/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.js +28 -0
  6. package/dist/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.js.map +1 -0
  7. package/dist/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.js +45 -0
  8. package/dist/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.js.map +1 -0
  9. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js +84 -0
  10. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +1 -0
  11. package/dist/components/OwpTreeGrid/{utils.js → utils/index.js} +2 -2
  12. package/dist/components/OwpTreeGrid/utils/index.js.map +1 -0
  13. package/dist/contexts/OwpAppProvider.js.map +1 -1
  14. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  15. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  16. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  17. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  18. package/dist/owp-app.css +1 -1
  19. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +2 -7
  20. package/dist/types/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.d.ts +10 -0
  21. package/dist/types/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.d.ts +14 -0
  22. package/dist/types/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.d.ts +22 -0
  23. package/dist/types/components/OwpTreeGrid/{utils.d.ts → utils/index.d.ts} +1 -1
  24. package/dist/types/contexts/OwpAppProvider.d.ts +1 -0
  25. package/dist/utils/rebuildValue.js +41 -39
  26. package/dist/utils/rebuildValue.js.map +1 -1
  27. package/dist/utils/treeGridUtil.js +1 -1
  28. package/package.json +1 -1
  29. package/dist/components/OwpTreeGrid/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { useGetCurrentLanguage } from '@/hooks/useCurrentLanguage';\nimport { debounce, delay, get, isEmpty, isEqual, omit } from 'es-toolkit/compat';\nimport {\n type CSSProperties,\n type Dispatch,\n type MutableRefObject,\n type SetStateAction,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { applyTreeGridLayoutToGrid } from './utils';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n layoutUrl?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n /** @deprecated use layoutUrl */\n LayoutUrl?: string;\n /** @deprecated use dataUrl */\n DataUrl?: string;\n data?: OwpTreeGridBodyData<T>;\n /** @deprecated use layoutOverrides */\n layout?: OwpTreeGridLayoutConfig;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n}\n\ntype TreeGridEventBindingOptions<T> = Pick<\n OwpTreeGridProps<T>,\n | 'id'\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n> & {\n treeGridInstanceRef: MutableRefObject<TGrid | null>;\n latestLayoutOverridesRef: MutableRefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: MutableRefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: MutableRefObject<OwpTreeGridBodyData<T>>;\n hasAppliedInitialLayoutRef: MutableRefObject<boolean>;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\nconst TREE_GRID_TEXT_RESOURCE_URLS = {\n en: '/assets/vendors/Grid/TextEN.xml',\n kr: '/assets/vendors/Grid/TextKR.xml',\n} as const;\n\nconst appendNoCacheQuery = (url: string) => {\n return `${url}?noCache=${Date.now()}`;\n};\n\nconst getTreeGridTextResourceUrl = (languageId: string) => {\n return languageId === 'kr' ? TREE_GRID_TEXT_RESOURCE_URLS.kr : TREE_GRID_TEXT_RESOURCE_URLS.en;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n return dataUrl?.includes('assets')\n ? appendNoCacheQuery(dataUrl)\n : // @ts-expect-error - API base URL env is provided by host app\n `${import.meta.env.VITE_API_BASE_URL}/${dataUrl}?noCache=${Date.now()}`;\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\nconst buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\nconst replaceTreeGridBodyData = <T,>(grid: TGrid, bodyData: OwpTreeGridBodyData<T>) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody();\n};\n\nconst bindTreeGridEvents = <T,>({\n id,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n treeGridInstanceRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n setIsTreeGridReady,\n}: TreeGridEventBindingOptions<T>) => {\n const valueChangedHandler = onAfterValueChanged ?? onRowChange;\n\n \n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n\n if (typeof onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n onRowClick(grid, row as OwpTreeGridRowModel<T>, col, x, y, event);\n }, 300),\n );\n }\n\n if (typeof onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n onClickButton(grid, row as OwpTreeGridRowModel<T>, col, event);\n }, 300),\n );\n }\n\n if (typeof onRowDelete === 'function') {\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n onRowDelete(grid, row as OwpTreeGridRowModel<T>, deleteType);\n });\n }\n if (typeof onRowUndelete === 'function') {\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n onRowUndelete(grid, row as OwpTreeGridRowModel<T>);\n });\n }\n if (typeof valueChangedHandler === 'function') {\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n valueChangedHandler(grid, row as OwpTreeGridRowModel<T>, col, value);\n });\n }\n if (typeof onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n onSelect(selectedRows);\n }, 100),\n );\n }\n if (typeof onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n onSave(grid, row as OwpTreeGridRowModel<T>, autoupdate);\n });\n }\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n setIsTreeGridReady(true);\n onReady?.(grid);\n }\n }, 100),\n );\n};\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n className,\n style,\n height = '100%',\n width = '100%',\n layoutUrl,\n dataUrl,\n layoutOverrides,\n LayoutUrl,\n DataUrl,\n data,\n layout,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n}: OwpTreeGridProps<T>) => {\n const resolvedLayoutUrl = layoutUrl ?? LayoutUrl;\n const resolvedDataUrl = dataUrl ?? DataUrl;\n const resolvedLayoutOverrides = layoutOverrides ?? layout;\n const treeGridInstanceRef = useRef<TGrid>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(\n resolvedLayoutOverrides,\n );\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const currentLanguageIdRef = useRef(currentLanguage.id);\n\n latestLayoutOverridesRef.current = resolvedLayoutOverrides;\n latestBodyDataPropRef.current = data;\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl: resolvedLayoutUrl,\n dataUrl: resolvedDataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n bindTreeGridEvents({\n id,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n treeGridInstanceRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n setIsTreeGridReady,\n });\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData = appliedBodyDataPropRef.current !== nextBodyData;\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n }\n\n if (shouldApplyBodyData) {\n replaceTreeGridBodyData(treeGrid, nextBodyData);\n appliedBodyDataPropRef.current = nextBodyData;\n }\n }, [isTreeGridReady, resolvedLayoutOverrides, data]);\n\n return (\n <div className={containerClassName} style={{ height, width, ...containerStyle }}>\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["TREE_GRID_TEXT_RESOURCE_URLS","appendNoCacheQuery","__name","url","getTreeGridTextResourceUrl","languageId","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","width","height","getTreeGridBodyData","grid","get","replaceTreeGridBodyData","currentDataConfig","_a","bindTreeGridEvents","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","treeGridInstanceRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","setIsTreeGridReady","valueChangedHandler","row","debounce","col","x","y","event","deleteType","value","selectedRows","autoupdate","latestLayoutOverrides","applyTreeGridLayoutToGrid","OwpTreeGrid","containerStyle","containerClassName","className","style","layoutOverrides","LayoutUrl","DataUrl","data","layout","resolvedLayoutUrl","resolvedDataUrl","resolvedLayoutOverrides","useRef","latestBodyDataPropRef","isTreeGridReady","useState","currentLanguage","useGetCurrentLanguage","currentLanguageIdRef","useEffect","delay","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","jsx","omit"],"mappings":"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"}
1
+ {"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/useCurrentLanguage';\nimport { debounce, delay, get, isEmpty, isEqual, omit } from 'es-toolkit/compat';\nimport {\n type CSSProperties,\n type Dispatch,\n type RefObject,\n type SetStateAction,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useOwpTreeGridOverlayFrame } from './hooks/useOwpTreeGridOverlayFrame';\nimport { OwpTreeGridLoadingOverlay } from './OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './OwpTreeGridNoDataOverlay';\nimport { applyTreeGridLayoutToGrid } from './utils';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\n\nconst TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n layoutUrl?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n showLoading?: boolean;\n}\n\ntype TreeGridEventBindingOptions<T> = Pick<\n OwpTreeGridProps<T>,\n | 'id'\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n> & {\n treeGridInstanceRef: RefObject<TGrid>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\nconst TREE_GRID_TEXT_RESOURCE_URLS = {\n en: '/assets/vendors/Grid/TextEN.xml',\n kr: '/assets/vendors/Grid/TextKR.xml',\n} as const;\n\nconst appendNoCacheQuery = (url: string) => {\n return `${url}?noCache=${Date.now()}`;\n};\n\nconst getTreeGridTextResourceUrl = (languageId: string) => {\n return languageId === 'kr' ? TREE_GRID_TEXT_RESOURCE_URLS.kr : TREE_GRID_TEXT_RESOURCE_URLS.en;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n return dataUrl?.includes('assets')\n ? appendNoCacheQuery(dataUrl)\n : // @ts-expect-error - API base URL env is provided by host app\n `${import.meta.env.VITE_API_BASE_URL}/${dataUrl}?noCache=${Date.now()}`;\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\nconst buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\nconst replaceTreeGridBodyData = <T,>(\n grid: TGrid,\n bodyData: OwpTreeGridBodyData<T>,\n onReloadFinish?: (code: number) => void,\n) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody(onReloadFinish);\n};\n\nconst bindTreeGridEvents = <T,>({\n id,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n treeGridInstanceRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n setIsTreeGridReady,\n}: TreeGridEventBindingOptions<T>) => {\n const valueChangedHandler = onAfterValueChanged ?? onRowChange;\n\n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n\n if (typeof onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n onRowClick(grid, row as OwpTreeGridRowModel<T>, col, x, y, event);\n }, 300),\n );\n }\n\n if (typeof onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n onClickButton(grid, row as OwpTreeGridRowModel<T>, col, event);\n }, 300),\n );\n }\n\n if (typeof onRowDelete === 'function') {\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n onRowDelete(grid, row as OwpTreeGridRowModel<T>, deleteType);\n });\n }\n if (typeof onRowUndelete === 'function') {\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n onRowUndelete(grid, row as OwpTreeGridRowModel<T>);\n });\n }\n if (typeof valueChangedHandler === 'function') {\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n valueChangedHandler(grid, row as OwpTreeGridRowModel<T>, col, value);\n });\n }\n if (typeof onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n onSelect(selectedRows);\n }, 100),\n );\n }\n if (typeof onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n onSave(grid, row as OwpTreeGridRowModel<T>, autoupdate);\n });\n }\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n setIsTreeGridReady(true);\n onReady?.(grid);\n }\n }, 100),\n );\n};\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n className,\n style,\n height = '100%',\n width = '100%',\n layoutUrl,\n dataUrl,\n layoutOverrides,\n data,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const bodyReloadSequenceRef = useRef(0);\n const bindingLoadingStartedAtRef = useRef<number | null>(null);\n const bindingLoadingHideTimeoutRef = useRef<number | undefined>(undefined);\n const bodyReloadStartTimeoutRef = useRef<number | undefined>(undefined);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isLoadingOverlayVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isNoDataVisible = !isLoadingOverlayVisible && data !== undefined && isEmpty(data);\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestBodyDataPropRef.current = data;\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n });\n\n const clearBindingLoadingHideTimeout = () => {\n if (bindingLoadingHideTimeoutRef.current !== undefined) {\n window.clearTimeout(bindingLoadingHideTimeoutRef.current);\n bindingLoadingHideTimeoutRef.current = undefined;\n }\n };\n\n const clearBodyReloadStartTimeout = () => {\n if (bodyReloadStartTimeoutRef.current !== undefined) {\n window.clearTimeout(bodyReloadStartTimeoutRef.current);\n bodyReloadStartTimeoutRef.current = undefined;\n }\n };\n\n useEffect(() => {\n if (!showLoading) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }\n }, [showLoading]);\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n bindTreeGridEvents({\n id,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n treeGridInstanceRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n setIsTreeGridReady,\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n dataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData = appliedBodyDataPropRef.current !== nextBodyData;\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n bodyReloadStartTimeoutRef.current = undefined;\n replaceTreeGridBodyData(treeGrid, nextBodyData, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n const startedAt = bindingLoadingStartedAtRef.current;\n\n if (!showLoading || startedAt === null) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n const remainingVisibleTime = Math.max(\n 0,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS - (Date.now() - startedAt),\n );\n\n clearBindingLoadingHideTimeout();\n\n if (remainingVisibleTime === 0) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = undefined;\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }, remainingVisibleTime);\n });\n };\n\n bodyReloadSequenceRef.current = reloadSequence;\n\n if (showLoading && nextBodyData !== undefined) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = Date.now();\n setIsBindingLoadingVisible(true);\n bodyReloadStartTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n runBodyReload();\n }, 0);\n } else {\n runBodyReload();\n }\n\n appliedBodyDataPropRef.current = nextBodyData;\n }\n }, [isTreeGridReady, layoutOverrides, data, showLoading]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: CSSProperties = {\n height,\n width,\n ...containerStyle,\n };\n\n if (showLoading || isNoDataVisible) {\n resolvedContainerStyle.position =\n containerStyle?.position && containerStyle.position !== 'static'\n ? containerStyle.position\n : 'relative';\n resolvedContainerStyle.isolation = 'isolate';\n }\n\n return (\n <div ref={treeGridContainerRef} className={containerClassName} style={resolvedContainerStyle}>\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n <OwpTreeGridNoDataOverlay\n visible={isNoDataVisible}\n message={t('Message.조회된 결과가 없습니다.')}\n overlayFrame={overlayFrame}\n />\n <OwpTreeGridLoadingOverlay visible={isLoadingOverlayVisible} overlayFrame={overlayFrame} />\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_TEXT_RESOURCE_URLS","appendNoCacheQuery","__name","url","getTreeGridTextResourceUrl","languageId","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","width","height","getTreeGridBodyData","grid","get","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","treeGridInstanceRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","setIsTreeGridReady","valueChangedHandler","row","debounce","col","x","y","event","deleteType","value","selectedRows","autoupdate","latestLayoutOverrides","applyTreeGridLayoutToGrid","OwpTreeGrid","containerStyle","containerClassName","className","style","layoutOverrides","data","showLoading","t","useOwpTranslation","useRef","treeGridContainerRef","latestBodyDataPropRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","isTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","currentLanguage","useGetCurrentLanguage","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","reloadSequence","runBodyReload","startedAt","remainingVisibleTime","resolvedContainerStyle","jsx","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ var r = Object.defineProperty;
2
+ var i = (e, t) => r(e, "name", { value: t, configurable: !0 });
3
+ import { jsx as n } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
+ import o from "@mui/material/CircularProgress";
5
+ import { TREE_GRID_LOADING_OVERLAY_Z_INDEX as s } from "./hooks/useOwpTreeGridOverlayFrame.js";
6
+ const c = /* @__PURE__ */ i(({ visible: e, overlayFrame: t }) => e ? /* @__PURE__ */ n(
7
+ "div",
8
+ {
9
+ "aria-hidden": "true",
10
+ style: {
11
+ position: "absolute",
12
+ left: t.left,
13
+ top: t.top,
14
+ width: t.width,
15
+ height: t.height,
16
+ zIndex: s,
17
+ display: "flex",
18
+ alignItems: "center",
19
+ justifyContent: "center",
20
+ pointerEvents: "none"
21
+ },
22
+ children: /* @__PURE__ */ n(o, { color: "secondary", size: 44, thickness: 3.6 })
23
+ }
24
+ ) : null, "OwpTreeGridLoadingOverlay");
25
+ export {
26
+ c as OwpTreeGridLoadingOverlay
27
+ };
28
+ //# sourceMappingURL=OwpTreeGridLoadingOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OwpTreeGridLoadingOverlay.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.tsx"],"sourcesContent":["import CircularProgress from '@mui/material/CircularProgress';\nimport {\n type OwpTreeGridOverlayFrame,\n TREE_GRID_LOADING_OVERLAY_Z_INDEX,\n} from './hooks/useOwpTreeGridOverlayFrame';\n\ntype OwpTreeGridLoadingOverlayProps = {\n visible: boolean;\n overlayFrame: OwpTreeGridOverlayFrame;\n};\n\n/**\n * TreeGrid loading overlay\n */\nconst OwpTreeGridLoadingOverlay = ({ visible, overlayFrame }: OwpTreeGridLoadingOverlayProps) => {\n if (!visible) {\n return null;\n }\n\n return (\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: overlayFrame.left,\n top: overlayFrame.top,\n width: overlayFrame.width,\n height: overlayFrame.height,\n zIndex: TREE_GRID_LOADING_OVERLAY_Z_INDEX,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n }}\n >\n <CircularProgress color=\"secondary\" size={44} thickness={3.6} />\n </div>\n );\n};\n\nexport { OwpTreeGridLoadingOverlay };\n"],"names":["OwpTreeGridLoadingOverlay","__name","visible","overlayFrame","jsx","TREE_GRID_LOADING_OVERLAY_Z_INDEX","CircularProgress"],"mappings":";;;;;AAcA,MAAMA,IAA4B,gBAAAC,EAAA,CAAC,EAAE,SAAAC,GAAS,cAAAC,QACvCD,IAKH,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAY;AAAA,IACZ,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAMD,EAAa;AAAA,MACnB,KAAKA,EAAa;AAAA,MAClB,OAAOA,EAAa;AAAA,MACpB,QAAQA,EAAa;AAAA,MACrB,QAAQE;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,eAAe;AAAA,IAAA;AAAA,IAGjB,4BAACC,GAAA,EAAiB,OAAM,aAAY,MAAM,IAAI,WAAW,IAAA,CAAK;AAAA,EAAA;AAAA,IAnBzD,MAFuB;"}
@@ -0,0 +1,45 @@
1
+ var r = Object.defineProperty;
2
+ var n = (e, i) => r(e, "name", { value: i, configurable: !0 });
3
+ import { jsx as o } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
+ import p from "@mui/material/Typography";
5
+ import { TREE_GRID_NO_DATA_OVERLAY_Z_INDEX as s } from "./hooks/useOwpTreeGridOverlayFrame.js";
6
+ const c = /* @__PURE__ */ n(({
7
+ visible: e,
8
+ message: i,
9
+ overlayFrame: t
10
+ }) => e ? /* @__PURE__ */ o(
11
+ "div",
12
+ {
13
+ "aria-hidden": "true",
14
+ style: {
15
+ position: "absolute",
16
+ left: t.left,
17
+ top: t.top,
18
+ width: t.width,
19
+ height: t.height,
20
+ zIndex: s,
21
+ display: "flex",
22
+ alignItems: "center",
23
+ justifyContent: "center",
24
+ pointerEvents: "none"
25
+ },
26
+ children: /* @__PURE__ */ o(
27
+ p,
28
+ {
29
+ color: "text.secondary",
30
+ sx: {
31
+ fontFamily: "RobotoLight, sans-serif",
32
+ fontSize: "14px",
33
+ fontWeight: 700,
34
+ lineHeight: "16px",
35
+ letterSpacing: "0.04em"
36
+ },
37
+ children: i
38
+ }
39
+ )
40
+ }
41
+ ) : null, "OwpTreeGridNoDataOverlay");
42
+ export {
43
+ c as OwpTreeGridNoDataOverlay
44
+ };
45
+ //# sourceMappingURL=OwpTreeGridNoDataOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OwpTreeGridNoDataOverlay.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.tsx"],"sourcesContent":["import Typography from '@mui/material/Typography';\nimport {\n type OwpTreeGridOverlayFrame,\n TREE_GRID_NO_DATA_OVERLAY_Z_INDEX,\n} from './hooks/useOwpTreeGridOverlayFrame';\n\ntype OwpTreeGridNoDataOverlayProps = {\n visible: boolean;\n message: string;\n overlayFrame: OwpTreeGridOverlayFrame;\n};\n\n/**\n * TreeGrid no-data overlay\n * @param visible overlay visibility\n * @param message no-data message\n * @param overlayFrame overlay frame\n */\nconst OwpTreeGridNoDataOverlay = ({\n visible,\n message,\n overlayFrame,\n}: OwpTreeGridNoDataOverlayProps) => {\n if (!visible) {\n return null;\n }\n\n return (\n <div\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: overlayFrame.left,\n top: overlayFrame.top,\n width: overlayFrame.width,\n height: overlayFrame.height,\n zIndex: TREE_GRID_NO_DATA_OVERLAY_Z_INDEX,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n }}\n >\n <Typography\n color=\"text.secondary\"\n sx={{\n fontFamily: 'RobotoLight, sans-serif',\n fontSize: '14px',\n fontWeight: 700,\n lineHeight: '16px',\n letterSpacing: '0.04em',\n }}\n >\n {message}\n </Typography>\n </div>\n );\n};\n\nexport { OwpTreeGridNoDataOverlay };\n"],"names":["OwpTreeGridNoDataOverlay","__name","visible","message","overlayFrame","jsx","TREE_GRID_NO_DATA_OVERLAY_Z_INDEX","Typography"],"mappings":";;;;;AAkBA,MAAMA,IAA2B,gBAAAC,EAAA,CAAC;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AACF,MACOF,IAKH,gBAAAG;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAY;AAAA,IACZ,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAMD,EAAa;AAAA,MACnB,KAAKA,EAAa;AAAA,MAClB,OAAOA,EAAa;AAAA,MACpB,QAAQA,EAAa;AAAA,MACrB,QAAQE;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,eAAe;AAAA,IAAA;AAAA,IAGjB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,IAAI;AAAA,UACF,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,eAAe;AAAA,QAAA;AAAA,QAGhB,UAAAJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AAAA,IA9BK,MANsB;"}
@@ -0,0 +1,84 @@
1
+ var O = Object.defineProperty;
2
+ var l = (i, o) => O(i, "name", { value: o, configurable: !0 });
3
+ import { useState as R, useLayoutEffect as y } from "react";
4
+ import { isEqual as E } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
5
+ const T = 2147483646, D = 2147483647, g = /* @__PURE__ */ l((i, o) => {
6
+ const c = (o == null ? void 0 : o.MainTag) ?? i, a = Array.from(
7
+ c.querySelectorAll("table.TSMainTable")
8
+ );
9
+ return (a.length > 0 ? a : Array.from(c.querySelectorAll("table"))).reduce((e, t) => {
10
+ const n = t.getBoundingClientRect(), d = e == null ? void 0 : e.getBoundingClientRect();
11
+ return n.width <= 0 || n.height <= 0 ? e : d ? n.width * n.height > d.width * d.height ? t : e : t;
12
+ }, null);
13
+ }, "getTreeGridMainTableElement"), A = /* @__PURE__ */ l((i, o) => {
14
+ const s = i.getBoundingClientRect(), c = i.clientWidth || s.width, a = i.clientHeight || s.height, r = g(i, o);
15
+ if (!r)
16
+ return {
17
+ left: 0,
18
+ top: 0,
19
+ width: c,
20
+ height: a
21
+ };
22
+ const e = r.getBoundingClientRect();
23
+ return e.width <= 0 || e.height <= 0 ? {
24
+ left: 0,
25
+ top: 0,
26
+ width: c,
27
+ height: a
28
+ } : {
29
+ left: e.left - s.left,
30
+ top: e.top - s.top,
31
+ width: e.width,
32
+ height: e.height
33
+ };
34
+ }, "getTreeGridOverlayFrame"), G = /* @__PURE__ */ l(({
35
+ visible: i,
36
+ containerRef: o,
37
+ treeGridInstanceRef: s
38
+ }) => {
39
+ const [c, a] = R({
40
+ left: 0,
41
+ top: 0,
42
+ width: 0,
43
+ height: 0
44
+ });
45
+ return y(() => {
46
+ if (!i)
47
+ return;
48
+ const r = o.current;
49
+ if (!r)
50
+ return;
51
+ let e, t, n = null;
52
+ const d = { capture: !0 }, b = /* @__PURE__ */ l((h) => {
53
+ if (!t || n === h) {
54
+ n = h;
55
+ return;
56
+ }
57
+ n && t.unobserve(n), n = h, n && t.observe(n);
58
+ }, "syncObservedMainTableElement"), f = /* @__PURE__ */ l(() => {
59
+ const h = s.current, p = g(r, h), v = A(r, h);
60
+ b(p), a(
61
+ (w) => E(w, v) ? w : v
62
+ );
63
+ }, "updateOverlayFrame"), u = /* @__PURE__ */ l(() => {
64
+ e !== void 0 && window.cancelAnimationFrame(e), e = window.requestAnimationFrame(() => {
65
+ e = void 0, f();
66
+ });
67
+ }, "scheduleOverlayFrameUpdate");
68
+ typeof ResizeObserver < "u" && (t = new ResizeObserver(u), t.observe(r));
69
+ const m = new MutationObserver(u);
70
+ return m.observe(r, { childList: !0, subtree: !0 }), window.addEventListener("resize", u), r.addEventListener("scroll", u, d), f(), () => {
71
+ e !== void 0 && window.cancelAnimationFrame(e), window.removeEventListener("resize", u), r.removeEventListener(
72
+ "scroll",
73
+ u,
74
+ d
75
+ ), m.disconnect(), t && n && t.unobserve(n), t == null || t.disconnect();
76
+ };
77
+ }, [o, s, i]), c;
78
+ }, "useOwpTreeGridOverlayFrame");
79
+ export {
80
+ D as TREE_GRID_LOADING_OVERLAY_Z_INDEX,
81
+ T as TREE_GRID_NO_DATA_OVERLAY_Z_INDEX,
82
+ G as useOwpTreeGridOverlayFrame
83
+ };
84
+ //# sourceMappingURL=useOwpTreeGridOverlayFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOwpTreeGridOverlayFrame.js","sources":["../../../../src/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.ts"],"sourcesContent":["import { isEqual } from 'es-toolkit/compat';\nimport { type RefObject, useLayoutEffect, useState } from 'react';\n\nexport type OwpTreeGridOverlayFrame = {\n left: number;\n top: number;\n width: number;\n height: number;\n};\n\ntype UseOwpTreeGridOverlayFrameInput = {\n visible: boolean;\n containerRef: RefObject<HTMLDivElement | null>;\n treeGridInstanceRef: RefObject<TGrid>;\n};\n\nexport const TREE_GRID_NO_DATA_OVERLAY_Z_INDEX = 2147483646;\nexport const TREE_GRID_LOADING_OVERLAY_Z_INDEX = 2147483647;\n\nconst getTreeGridMainTableElement = (containerElement: HTMLDivElement, grid: TGrid | null) => {\n const mainTagElement = grid?.MainTag as HTMLElement | null | undefined;\n const scopedRootElement = mainTagElement ?? containerElement;\n const mainTableElements = Array.from(\n scopedRootElement.querySelectorAll<HTMLTableElement>('table.TSMainTable'),\n );\n\n const tableElements =\n mainTableElements.length > 0\n ? mainTableElements\n : Array.from(scopedRootElement.querySelectorAll<HTMLTableElement>('table'));\n\n return tableElements.reduce<HTMLTableElement | null>((largestTableElement, tableElement) => {\n const tableRect = tableElement.getBoundingClientRect();\n const largestTableRect = largestTableElement?.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return largestTableElement;\n }\n\n if (!largestTableRect) {\n return tableElement;\n }\n\n return tableRect.width * tableRect.height > largestTableRect.width * largestTableRect.height\n ? tableElement\n : largestTableElement;\n }, null);\n};\n\nconst getTreeGridOverlayFrame = (\n containerElement: HTMLDivElement,\n grid: TGrid | null,\n): OwpTreeGridOverlayFrame => {\n const containerRect = containerElement.getBoundingClientRect();\n const fallbackWidth = containerElement.clientWidth || containerRect.width;\n const fallbackHeight = containerElement.clientHeight || containerRect.height;\n const mainTableElement = getTreeGridMainTableElement(containerElement, grid);\n\n if (!mainTableElement) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n const tableRect = mainTableElement.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n return {\n left: tableRect.left - containerRect.left,\n top: tableRect.top - containerRect.top,\n width: tableRect.width,\n height: tableRect.height,\n };\n};\n\n/**\n * TreeGrid overlay frame hook\n * @param visible overlay visibility\n * @param containerRef TreeGrid container ref\n * @param treeGridInstanceRef TreeGrid instance ref\n */\nconst useOwpTreeGridOverlayFrame = ({\n visible,\n containerRef,\n treeGridInstanceRef,\n}: UseOwpTreeGridOverlayFrameInput) => {\n const [overlayFrame, setOverlayFrame] = useState<OwpTreeGridOverlayFrame>({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n useLayoutEffect(() => {\n if (!visible) {\n return;\n }\n\n const containerElement = containerRef.current;\n\n if (!containerElement) {\n return;\n }\n\n let animationFrameId: number | undefined;\n let resizeObserver: ResizeObserver | undefined;\n let observedMainTableElement: HTMLTableElement | null = null;\n const scrollListenerOptions = { capture: true } as const;\n\n const syncObservedMainTableElement = (nextMainTableElement: HTMLTableElement | null) => {\n if (!resizeObserver || observedMainTableElement === nextMainTableElement) {\n observedMainTableElement = nextMainTableElement;\n return;\n }\n\n if (observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n observedMainTableElement = nextMainTableElement;\n\n if (observedMainTableElement) {\n resizeObserver.observe(observedMainTableElement);\n }\n };\n\n const updateOverlayFrame = () => {\n const treeGrid = treeGridInstanceRef.current;\n const mainTableElement = getTreeGridMainTableElement(containerElement, treeGrid);\n const nextOverlayFrame = getTreeGridOverlayFrame(containerElement, treeGrid);\n\n syncObservedMainTableElement(mainTableElement);\n\n setOverlayFrame((currentOverlayFrame) =>\n isEqual(currentOverlayFrame, nextOverlayFrame) ? currentOverlayFrame : nextOverlayFrame,\n );\n };\n\n const scheduleOverlayFrameUpdate = () => {\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = window.requestAnimationFrame(() => {\n animationFrameId = undefined;\n updateOverlayFrame();\n });\n };\n\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(scheduleOverlayFrameUpdate);\n resizeObserver.observe(containerElement);\n }\n\n const mutationObserver = new MutationObserver(scheduleOverlayFrameUpdate);\n mutationObserver.observe(containerElement, { childList: true, subtree: true });\n window.addEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.addEventListener('scroll', scheduleOverlayFrameUpdate, scrollListenerOptions);\n updateOverlayFrame();\n\n return () => {\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n window.removeEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.removeEventListener(\n 'scroll',\n scheduleOverlayFrameUpdate,\n scrollListenerOptions,\n );\n mutationObserver.disconnect();\n\n if (resizeObserver && observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n resizeObserver?.disconnect();\n };\n }, [containerRef, treeGridInstanceRef, visible]);\n\n return overlayFrame;\n};\n\nexport { useOwpTreeGridOverlayFrame };\n"],"names":["TREE_GRID_NO_DATA_OVERLAY_Z_INDEX","TREE_GRID_LOADING_OVERLAY_Z_INDEX","getTreeGridMainTableElement","__name","containerElement","grid","scopedRootElement","mainTableElements","largestTableElement","tableElement","tableRect","largestTableRect","getTreeGridOverlayFrame","containerRect","fallbackWidth","fallbackHeight","mainTableElement","useOwpTreeGridOverlayFrame","visible","containerRef","treeGridInstanceRef","overlayFrame","setOverlayFrame","useState","useLayoutEffect","animationFrameId","resizeObserver","observedMainTableElement","scrollListenerOptions","syncObservedMainTableElement","nextMainTableElement","updateOverlayFrame","treeGrid","nextOverlayFrame","currentOverlayFrame","isEqual","scheduleOverlayFrameUpdate","mutationObserver"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  var O = Object.defineProperty;
2
2
  var u = (e, o) => O(e, "name", { value: o, configurable: !0 });
3
- import { isPlainObject as E } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js";
3
+ import { isPlainObject as E } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js";
4
4
  const I = "Header", R = "Toolbar", _ = "Foot", p = "nextSibling", S = [
5
5
  I,
6
6
  R,
@@ -73,4 +73,4 @@ export {
73
73
  m as applyTreeGridSubHeaderLayoutText,
74
74
  h as parseTreeGridXmlToJson
75
75
  };
76
- //# sourceMappingURL=utils.js.map
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/OwpTreeGrid/utils/index.ts"],"sourcesContent":["import { isPlainObject } from 'es-toolkit/compat';\nimport { type OwpTreeGridLayoutConfig } from '../OwpTreeGrid';\n\ntype TreeGridHeaderLayoutConfig = NonNullable<OwpTreeGridLayoutConfig['Header']>;\ntype TreeGridSectionConfig = Record<string, unknown>;\ntype TreeGridLayoutNode = TreeGridSectionConfig & { nextSibling?: TreeGridLayoutNode };\n\nexport const TREE_GRID_HEADER_SECTION = 'Header';\nexport const TREE_GRID_TOOLBAR_SECTION = 'Toolbar';\nexport const TREE_GRID_FOOT_SECTION = 'Foot';\nexport const TREE_GRID_NEXT_SIBLING_KEY = 'nextSibling';\nexport const TREE_GRID_LAYOUT_SECTION_KEYS = [\n TREE_GRID_HEADER_SECTION,\n TREE_GRID_TOOLBAR_SECTION,\n TREE_GRID_FOOT_SECTION,\n] as const;\n\nexport const HEADER = TREE_GRID_HEADER_SECTION;\nexport const TOOLBAR = TREE_GRID_TOOLBAR_SECTION;\nexport const FOOTER = TREE_GRID_FOOT_SECTION;\nexport const NEXT_SIBLING = TREE_GRID_NEXT_SIBLING_KEY;\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nlet treeGridXmlParser: DOMParser | undefined;\n\nconst assignTreeGridSectionFields = (\n targetSection: TRow,\n sectionConfig: TreeGridSectionConfig,\n) => {\n const mutableTargetSection = targetSection as unknown as TreeGridSectionConfig;\n\n for (const fieldName in sectionConfig) {\n if (!hasOwnProperty.call(sectionConfig, fieldName) || fieldName === TREE_GRID_NEXT_SIBLING_KEY) {\n continue;\n }\n\n const fieldValue = sectionConfig[fieldName];\n\n if (fieldValue === undefined) {\n continue;\n }\n\n mutableTargetSection[fieldName] = fieldValue;\n }\n};\n\n/**\n * applyTreeGridSubHeaderLayoutText 적용 함수\n * @param grid TreeGrid 인스턴스\n * @param headerLayout headerLayout 값\n */\nexport const applyTreeGridSubHeaderLayoutText = (\n grid: TTGrid,\n headerLayout?: TreeGridHeaderLayoutConfig,\n) => {\n if (!headerLayout || !grid?.Header) {\n return;\n }\n\n let currentHeaderLayout = headerLayout[TREE_GRID_NEXT_SIBLING_KEY] as TreeGridLayoutNode | undefined;\n let currentGridHeader = grid.Header.nextSibling;\n\n while (currentHeaderLayout && currentGridHeader) {\n assignTreeGridSectionFields(currentGridHeader, currentHeaderLayout);\n currentHeaderLayout = currentHeaderLayout.nextSibling;\n currentGridHeader = currentGridHeader.nextSibling;\n }\n};\n\nexport const applySubHeaderLayoutTextToGrid = applyTreeGridSubHeaderLayoutText;\nexport const changeSubHeaderLayoutTextByGrid = applyTreeGridSubHeaderLayoutText;\n\n/**\n * parseTreeGridXmlToJson 파싱 함수\n * @param xmlString XML 문자열\n */\nexport const parseTreeGridXmlToJson = (xmlString?: string) => {\n try {\n if (!xmlString || typeof DOMParser !== 'function') {\n return undefined;\n }\n\n treeGridXmlParser ??= new DOMParser();\n\n const parsedXml = treeGridXmlParser.parseFromString(xmlString, 'text/xml');\n const childElements = parsedXml.documentElement?.children;\n\n if (!childElements?.length) {\n return undefined;\n }\n\n const parsedItems = new Array<TreeGridSectionConfig>(childElements.length);\n\n for (let nodeIndex = 0; nodeIndex < childElements.length; nodeIndex += 1) {\n const attributes = childElements[nodeIndex].attributes;\n const item: TreeGridSectionConfig = {};\n\n for (let attrIndex = 0; attrIndex < attributes.length; attrIndex += 1) {\n const attribute = attributes[attrIndex];\n item[attribute.name] = attribute.value;\n }\n\n parsedItems[nodeIndex] = item;\n }\n\n return parsedItems;\n } catch (error) {\n console.error(error);\n return undefined;\n }\n};\nexport const convertXmlToJson = parseTreeGridXmlToJson;\n\n/**\n * applyTreeGridLayoutToGrid 적용 함수\n * @param grid TreeGrid 인스턴스\n * @param layoutConfig 레이아웃 설정\n * @param disableBodyReload disableBodyReload 값\n */\nexport const applyTreeGridLayoutToGrid = (\n grid: TTGrid | TGrid,\n layoutConfig?: OwpTreeGridLayoutConfig,\n disableBodyReload?: boolean,\n) => {\n if (!layoutConfig || !grid) {\n return;\n }\n\n // @ts-expect-error - TreeGrid header block metadata is not declared in bundled types\n const hasSubHeaderBlock = (grid?.Header?.Block ?? 0) > 0;\n const headerLayout = layoutConfig.Header;\n const footerRow = grid.Foot?.lastChild;\n\n if (hasSubHeaderBlock && headerLayout && isPlainObject(headerLayout)) {\n applyTreeGridSubHeaderLayoutText(grid, headerLayout);\n }\n\n for (const sectionKey of TREE_GRID_LAYOUT_SECTION_KEYS) {\n const sectionLayout = layoutConfig[sectionKey] as TreeGridSectionConfig | undefined;\n\n if (!sectionLayout || !isPlainObject(sectionLayout)) {\n continue;\n }\n\n if (sectionKey === TREE_GRID_FOOT_SECTION && footerRow) {\n assignTreeGridSectionFields(footerRow, sectionLayout);\n continue;\n }\n\n const sectionTarget = grid[sectionKey];\n\n if (!sectionTarget) {\n continue;\n }\n\n assignTreeGridSectionFields(sectionTarget, sectionLayout);\n }\n\n if (!disableBodyReload) {\n grid.ReloadBody();\n }\n};\n\nexport const updateLayoutByGrid = applyTreeGridLayoutToGrid;\nexport const applyTreeGridLayoutByGrid = applyTreeGridLayoutToGrid;\n"],"names":["TREE_GRID_HEADER_SECTION","TREE_GRID_TOOLBAR_SECTION","TREE_GRID_FOOT_SECTION","TREE_GRID_NEXT_SIBLING_KEY","TREE_GRID_LAYOUT_SECTION_KEYS","hasOwnProperty","treeGridXmlParser","assignTreeGridSectionFields","__name","targetSection","sectionConfig","mutableTargetSection","fieldName","fieldValue","applyTreeGridSubHeaderLayoutText","grid","headerLayout","currentHeaderLayout","currentGridHeader","parseTreeGridXmlToJson","xmlString","childElements","_a","parsedItems","nodeIndex","attributes","item","attrIndex","attribute","error","applyTreeGridLayoutToGrid","layoutConfig","disableBodyReload","hasSubHeaderBlock","footerRow","_b","isPlainObject","sectionKey","sectionLayout","sectionTarget"],"mappings":";;;AAOO,MAAMA,IAA2B,UAC3BC,IAA4B,WAC5BC,IAAyB,QACzBC,IAA6B,eAC7BC,IAAgC;AAAA,EAC3CJ;AAAA,EACAC;AAAA,EACAC;AACF,GAOMG,IAAiB,OAAO,UAAU;AACxC,IAAIC;AAEJ,MAAMC,IAA8B,gBAAAC,EAAA,CAClCC,GACAC,MACG;AACH,QAAMC,IAAuBF;AAE7B,aAAWG,KAAaF,GAAe;AACrC,QAAI,CAACL,EAAe,KAAKK,GAAeE,CAAS,KAAKA,MAAcT;AAClE;AAGF,UAAMU,IAAaH,EAAcE,CAAS;AAE1C,IAAIC,MAAe,WAInBF,EAAqBC,CAAS,IAAIC;AAAA,EACpC;AACF,GAnBoC,gCA0BvBC,IAAmC,gBAAAN,EAAA,CAC9CO,GACAC,MACG;AACH,MAAI,CAACA,KAAgB,EAACD,KAAA,QAAAA,EAAM;AAC1B;AAGF,MAAIE,IAAsBD,EAAab,CAA0B,GAC7De,IAAoBH,EAAK,OAAO;AAEpC,SAAOE,KAAuBC;AAC5B,IAAAX,EAA4BW,GAAmBD,CAAmB,GAClEA,IAAsBA,EAAoB,aAC1CC,IAAoBA,EAAkB;AAE1C,GAhBgD,qCAyBnCC,IAAyB,gBAAAX,EAAA,CAACY,MAAuB;;AAC5D,MAAI;AACF,QAAI,CAACA,KAAa,OAAO,aAAc;AACrC;AAGF,IAAAd,UAAsB,IAAI,UAAA;AAG1B,UAAMe,KAAgBC,IADJhB,EAAkB,gBAAgBc,GAAW,UAAU,EACzC,oBAAV,gBAAAE,EAA2B;AAEjD,QAAI,EAACD,KAAA,QAAAA,EAAe;AAClB;AAGF,UAAME,IAAc,IAAI,MAA6BF,EAAc,MAAM;AAEzE,aAASG,IAAY,GAAGA,IAAYH,EAAc,QAAQG,KAAa,GAAG;AACxE,YAAMC,IAAaJ,EAAcG,CAAS,EAAE,YACtCE,IAA8B,CAAA;AAEpC,eAASC,IAAY,GAAGA,IAAYF,EAAW,QAAQE,KAAa,GAAG;AACrE,cAAMC,IAAYH,EAAWE,CAAS;AACtC,QAAAD,EAAKE,EAAU,IAAI,IAAIA,EAAU;AAAA,MACnC;AAEA,MAAAL,EAAYC,CAAS,IAAIE;AAAA,IAC3B;AAEA,WAAOH;AAAA,EACT,SAASM,GAAO;AACd,YAAQ,MAAMA,CAAK;AACnB;AAAA,EACF;AACF,GAlCsC,2BA2CzBC,IAA4B,gBAAAtB,EAAA,CACvCO,GACAgB,GACAC,MACG;;AACH,MAAI,CAACD,KAAgB,CAAChB;AACpB;AAIF,QAAMkB,OAAqBX,IAAAP,KAAA,gBAAAA,EAAM,WAAN,gBAAAO,EAAc,UAAS,KAAK,GACjDN,IAAee,EAAa,QAC5BG,KAAYC,IAAApB,EAAK,SAAL,gBAAAoB,EAAW;AAE7B,EAAIF,KAAqBjB,KAAgBoB,EAAcpB,CAAY,KACjEF,EAAiCC,GAAMC,CAAY;AAGrD,aAAWqB,KAAcjC,GAA+B;AACtD,UAAMkC,IAAgBP,EAAaM,CAAU;AAE7C,QAAI,CAACC,KAAiB,CAACF,EAAcE,CAAa;AAChD;AAGF,QAAID,MAAenC,KAA0BgC,GAAW;AACtD,MAAA3B,EAA4B2B,GAAWI,CAAa;AACpD;AAAA,IACF;AAEA,UAAMC,IAAgBxB,EAAKsB,CAAU;AAErC,IAAKE,KAILhC,EAA4BgC,GAAeD,CAAa;AAAA,EAC1D;AAEA,EAAKN,KACHjB,EAAK,WAAA;AAET,GA1CyC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OwpAppProvider.js","sources":["../../src/contexts/OwpAppProvider.tsx"],"sourcesContent":["import type { OwpSettingsConfigType, OwpThemesType } from '@/types/OwpSettingsTypes';\nimport type { OwpNavItemType } from '@/types/OwpNavigationTypes';\nimport { useStorage } from '@/hooks/useStorage';\nimport type { OwpLoadingProps } from '@/components/OwpLoading/OwpLoading';\nimport {\n CSSProperties,\n ComponentType,\n createContext,\n ReactNode,\n useContext,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { PartialDeep } from 'type-fest';\n\n/**\n * Logo slot props\n */\nexport interface OwpLogoSlotProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport type OwpPageSkeletonItemType =\n | 'search-header'\n | 'table'\n | 'grid'\n | 'card'\n | 'chart'\n | 'stat';\n\nexport interface OwpPageSkeletonItem {\n type: OwpPageSkeletonItemType;\n colSpan?: number;\n rowSpan?: number;\n colStart?: number;\n rowStart?: number;\n}\n\nexport interface OwpPageSkeletonSpec {\n columns?: number;\n rowHeight?: number;\n fullscreen?: boolean;\n fillContentHeight?: boolean;\n items: OwpPageSkeletonItem[];\n}\n\nexport interface OwpRouteLoadingSlotProps extends OwpLoadingProps {\n pathname: string;\n isFirstRouteLoading: boolean;\n}\n\nexport interface OwpRouteLoadingConfig extends OwpLoadingProps {\n getSkeletonSpec?: (pathname: string) => OwpPageSkeletonSpec | undefined;\n /** Click-to-release test toggle. Default false */\n releaseOnClick?: boolean;\n}\n\nexport interface OwpAppConfigs {\n routesConfig: any;\n settingsConfig?: PartialDeep<OwpSettingsConfigType>;\n themesConfig?: PartialDeep<OwpThemesType>;\n navigationConfig: OwpNavItemType[];\n}\n\n/**\n * App slots\n */\nexport interface OwpAppSlots {\n logo?: ComponentType<OwpLogoSlotProps>;\n routeLoading?: ComponentType<OwpRouteLoadingSlotProps>;\n}\n\nexport interface OwpAppSlotProps {\n logo?: OwpLogoSlotProps;\n routeLoading?: Omit<\n Partial<OwpRouteLoadingSlotProps>,\n 'pathname' | 'isFirstRouteLoading'\n > &\n OwpRouteLoadingConfig;\n}\n\nexport interface OwpAppEnv {\n apiBaseUrl?: string;\n isAccessTokenGuardEnabled?: boolean;\n isAutoLogoutEnabled?: boolean;\n autoLogoutIdleTimeoutMs?: number;\n isBackendNavigationEnabled?: boolean;\n isErrorMessageEnabled?: boolean;\n isI18nEnabled?: boolean;\n isI18nLanguageSwitcherEnabled?: boolean;\n isPasswordChangeEnabled?: boolean;\n [key: string]: unknown;\n}\n\nexport interface OwpAppContextValue extends OwpAppConfigs {\n env?: OwpAppEnv;\n slots?: OwpAppSlots;\n slotProps?: OwpAppSlotProps;\n}\n\nexport const OwpAppContext = createContext<OwpAppContextValue | undefined>(undefined);\n\nexport interface OwpAppProviderProps {\n configs: OwpAppConfigs;\n slots?: OwpAppSlots;\n slotProps?: OwpAppSlotProps;\n children?: ReactNode;\n env?: OwpAppEnv;\n}\n\nexport const OwpAppProvider = ({\n configs,\n slots,\n slotProps,\n children,\n env,\n}: OwpAppProviderProps) => {\n const value = useRef<OwpAppContextValue>({ ...configs, env, slots, slotProps });\n const { setEnv } = useStorage();\n\n useLayoutEffect(() => {\n setEnv(env ?? {});\n }, [env, setEnv]);\n\n return <OwpAppContext.Provider value={value.current}>{children}</OwpAppContext.Provider>;\n};\n\nexport const useOwpAppContext = () => {\n const context = useContext(OwpAppContext);\n\n if (context === undefined) {\n throw new Error('useOwpAppContext must be used within a OwpAppProvider');\n }\n\n return context;\n};\n"],"names":["OwpAppContext","createContext","OwpAppProvider","__name","configs","slots","slotProps","children","env","value","useRef","setEnv","useStorage","useLayoutEffect","useOwpAppContext","context","useContext"],"mappings":";;;;;AAqGO,MAAMA,IAAgBC,EAA8C,MAAS,GAUvEC,IAAiB,gBAAAC,EAAA,CAAC;AAAA,EAC7B,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AACF,MAA2B;AACzB,QAAMC,IAAQC,EAA2B,EAAE,GAAGN,GAAS,KAAAI,GAAK,OAAAH,GAAO,WAAAC,GAAW,GACxE,EAAE,QAAAK,EAAA,IAAWC,EAAA;AAEnB,SAAAC,EAAgB,MAAM;AACpB,IAAAF,EAAOH,KAAO,EAAE;AAAA,EAClB,GAAG,CAACA,GAAKG,CAAM,CAAC,qBAERX,EAAc,UAAd,EAAuB,OAAOS,EAAM,SAAU,UAAAF,GAAS;AACjE,GAf8B,mBAiBjBO,IAAmB,gBAAAX,EAAA,MAAM;AACpC,QAAMY,IAAUC,EAAWhB,CAAa;AAExC,MAAIe,MAAY;AACd,UAAM,IAAI,MAAM,uDAAuD;AAGzE,SAAOA;AACT,GARgC;"}
1
+ {"version":3,"file":"OwpAppProvider.js","sources":["../../src/contexts/OwpAppProvider.tsx"],"sourcesContent":["import type { OwpSettingsConfigType, OwpThemesType } from '@/types/OwpSettingsTypes';\nimport type { OwpNavItemType } from '@/types/OwpNavigationTypes';\nimport { useStorage } from '@/hooks/useStorage';\nimport type { OwpLoadingProps } from '@/components/OwpLoading/OwpLoading';\nimport {\n CSSProperties,\n ComponentType,\n createContext,\n ReactNode,\n useContext,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { PartialDeep } from 'type-fest';\n\n/**\n * Logo slot props\n */\nexport interface OwpLogoSlotProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport type OwpPageSkeletonItemType =\n | 'search-header'\n | 'table'\n | 'grid'\n | 'card'\n | 'chart'\n | 'stat';\n\nexport interface OwpPageSkeletonItem {\n type: OwpPageSkeletonItemType;\n colSpan?: number;\n rowSpan?: number;\n colStart?: number;\n rowStart?: number;\n}\n\nexport interface OwpPageSkeletonSpec {\n columns?: number;\n rowHeight?: number;\n fullscreen?: boolean;\n fillContentHeight?: boolean;\n items: OwpPageSkeletonItem[];\n}\n\nexport interface OwpRouteLoadingSlotProps extends OwpLoadingProps {\n pathname: string;\n isFirstRouteLoading: boolean;\n}\n\nexport interface OwpRouteLoadingConfig extends OwpLoadingProps {\n getSkeletonSpec?: (pathname: string) => OwpPageSkeletonSpec | undefined;\n /** Click-to-release test toggle. Default false */\n releaseOnClick?: boolean;\n}\n\nexport interface OwpAppConfigs {\n routesConfig: any;\n settingsConfig?: PartialDeep<OwpSettingsConfigType>;\n themesConfig?: PartialDeep<OwpThemesType>;\n navigationConfig: OwpNavItemType[];\n}\n\n/**\n * App slots\n */\nexport interface OwpAppSlots {\n logo?: ComponentType<OwpLogoSlotProps>;\n routeLoading?: ComponentType<OwpRouteLoadingSlotProps>;\n}\n\nexport interface OwpAppSlotProps {\n logo?: OwpLogoSlotProps;\n routeLoading?: Omit<\n Partial<OwpRouteLoadingSlotProps>,\n 'pathname' | 'isFirstRouteLoading'\n > &\n OwpRouteLoadingConfig;\n}\n\nexport interface OwpAppEnv {\n apiBaseUrl?: string;\n isAccessTokenGuardEnabled?: boolean;\n isAutoLogoutEnabled?: boolean;\n autoLogoutIdleTimeoutMs?: number;\n isBackendNavigationEnabled?: boolean;\n isErrorMessageEnabled?: boolean;\n isI18nEnabled?: boolean;\n isI18nLanguageSwitcherEnabled?: boolean;\n isPasswordChangeEnabled?: boolean;\n isRequestLogPayloadEnabled?: boolean;\n [key: string]: unknown;\n}\n\nexport interface OwpAppContextValue extends OwpAppConfigs {\n env?: OwpAppEnv;\n slots?: OwpAppSlots;\n slotProps?: OwpAppSlotProps;\n}\n\nexport const OwpAppContext = createContext<OwpAppContextValue | undefined>(undefined);\n\nexport interface OwpAppProviderProps {\n configs: OwpAppConfigs;\n slots?: OwpAppSlots;\n slotProps?: OwpAppSlotProps;\n children?: ReactNode;\n env?: OwpAppEnv;\n}\n\nexport const OwpAppProvider = ({\n configs,\n slots,\n slotProps,\n children,\n env,\n}: OwpAppProviderProps) => {\n const value = useRef<OwpAppContextValue>({ ...configs, env, slots, slotProps });\n const { setEnv } = useStorage();\n\n useLayoutEffect(() => {\n setEnv(env ?? {});\n }, [env, setEnv]);\n\n return <OwpAppContext.Provider value={value.current}>{children}</OwpAppContext.Provider>;\n};\n\nexport const useOwpAppContext = () => {\n const context = useContext(OwpAppContext);\n\n if (context === undefined) {\n throw new Error('useOwpAppContext must be used within a OwpAppProvider');\n }\n\n return context;\n};\n"],"names":["OwpAppContext","createContext","OwpAppProvider","__name","configs","slots","slotProps","children","env","value","useRef","setEnv","useStorage","useLayoutEffect","useOwpAppContext","context","useContext"],"mappings":";;;;;AAsGO,MAAMA,IAAgBC,EAA8C,MAAS,GAUvEC,IAAiB,gBAAAC,EAAA,CAAC;AAAA,EAC7B,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AACF,MAA2B;AACzB,QAAMC,IAAQC,EAA2B,EAAE,GAAGN,GAAS,KAAAI,GAAK,OAAAH,GAAO,WAAAC,GAAW,GACxE,EAAE,QAAAK,EAAA,IAAWC,EAAA;AAEnB,SAAAC,EAAgB,MAAM;AACpB,IAAAF,EAAOH,KAAO,EAAE;AAAA,EAClB,GAAG,CAACA,GAAKG,CAAM,CAAC,qBAERX,EAAc,UAAd,EAAuB,OAAOS,EAAM,SAAU,UAAAF,GAAS;AACjE,GAf8B,mBAiBjBO,IAAmB,gBAAAX,EAAA,MAAM;AACpC,QAAMY,IAAUC,EAAWhB,CAAa;AAExC,MAAIe,MAAY;AACd,UAAM,IAAI,MAAM,uDAAuD;AAGzE,SAAOA;AACT,GARgC;"}
@@ -1,6 +1,6 @@
1
1
  var f = Object.defineProperty;
2
2
  var t = (e, _) => f(e, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/constants3.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/constants2.js";
4
4
  var i;
5
5
  function E() {
6
6
  if (i) return r;
@@ -1,6 +1,6 @@
1
1
  var n = Object.defineProperty;
2
2
  var G = (r, t) => n(r, "name", { value: t, configurable: !0 });
3
- import { __exports as L } from "../../../../../../../../_virtual/constants2.js";
3
+ import { __exports as L } from "../../../../../../../../_virtual/constants3.js";
4
4
  var e;
5
5
  function o() {
6
6
  return e ? L : (e = 1, Object.defineProperty(L, "__esModule", {
@@ -1,6 +1,6 @@
1
1
  var S = Object.defineProperty;
2
2
  var e = (r, i) => S(r, "name", { value: i, configurable: !0 });
3
- import { __exports as n } from "../../../../../../../_virtual/utils.js";
3
+ import { __exports as n } from "../../../../../../../_virtual/utils2.js";
4
4
  var u;
5
5
  function c() {
6
6
  if (u) return n;
@@ -1,6 +1,6 @@
1
1
  var M = Object.defineProperty;
2
2
  var a = (l, h) => M(l, "name", { value: h, configurable: !0 });
3
- import { __exports as s } from "../../../../../../../_virtual/utils2.js";
3
+ import { __exports as s } from "../../../../../../../_virtual/utils.js";
4
4
  var w;
5
5
  function _() {
6
6
  return w ? s : (w = 1, (function(l) {