@owp/core 2.5.17 → 2.5.19
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/index10.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index16.js +4 -4
- package/dist/_virtual/index17.js +4 -4
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/components/OwpPageContent/OwpPageContent.js +14 -12
- package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
- package/dist/components/OwpPageTitle/OwpPageTitle.js +37 -35
- package/dist/components/OwpPageTitle/OwpPageTitle.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +339 -102
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +87 -82
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +494 -220
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/constants/index.js +6 -5
- package/dist/components/OwpPicker/constants/index.js.map +1 -1
- package/dist/components/OwpPicker/internal/DatePickerInput.js +71 -47
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +84 -62
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +42 -40
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +273 -224
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +476 -105
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +317 -245
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +315 -151
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/gridTheme.js +9 -7
- package/dist/constants/gridTheme.js.map +1 -1
- package/dist/constants/treeGrid.js +37 -35
- package/dist/constants/treeGrid.js.map +1 -1
- package/dist/constants.js +25 -23
- package/dist/features/themePreview/configs/grid.js +3 -1
- package/dist/features/themePreview/configs/grid.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewDefinitions.js +10 -0
- package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpPageContent/OwpPageContent.d.ts +3 -1
- package/dist/types/components/OwpPageTitle/OwpPageTitle.d.ts +3 -1
- package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +3 -1
- package/dist/types/components/OwpPicker/constants/index.d.ts +1 -0
- package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +7 -0
- package/dist/types/components/OwpSection/OwpSection.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +6 -6
- package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.d.ts +3 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +33 -7
- package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
- package/dist/types/constants/gridTheme.d.ts +4 -0
- package/dist/types/constants/treeGrid.d.ts +3 -1
- package/dist/types/features/themePreview/configs/grid.d.ts +2 -0
- package/dist/types/features/themePreview/configs/settings.d.ts +2 -0
- package/dist/types/types/OwpGridThemeTypes.d.ts +2 -0
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/types/utils/treeGridUtil.d.ts +42 -3
- package/dist/utils/treeGridUtil.js +220 -119
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +90 -86
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +0 -84
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +0 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +0 -60
- package/dist/types/utils/normalizeTimeToHourMinute.d.ts +0 -11
- package/dist/utils/normalizeTimeToHourMinute.js +0 -34
- package/dist/utils/normalizeTimeToHourMinute.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/treeGridBodyRowsEvent';\nimport {\n appendTreeGridAddedRowHighlightColumn,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridColumnEditRulesState,\n resolveTreeGridColumnEditRuleLookup,\n syncTreeGridColumnEditRules,\n} from './internal/treeGridColumnEditRules';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\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>[];\nexport type OwpTreeGridColumnEditPreset = 'hourMinute';\n\nexport interface OwpTreeGridColumnEditRule {\n columns: readonly string[];\n preset: OwpTreeGridColumnEditPreset;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\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 toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: 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 columnEditRules?: readonly OwpTreeGridColumnEditRule[];\n datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = '.8rem',\n layoutUrl,\n layoutData,\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 columnEditRules,\n datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const latestColumnEditRulesRef = useRef<readonly OwpTreeGridColumnEditRule[] | undefined>(\n columnEditRules,\n );\n const latestColumnEditRuleLookupRef = useRef(\n resolveTreeGridColumnEditRuleLookup(columnEditRules, {\n hourMinuteInvalidText: t('Message.시간은 HH:mm 형식으로 입력해주세요.'),\n }),\n );\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const appliedColumnEditRulesRef = useRef<readonly OwpTreeGridColumnEditRule[] | undefined>(\n undefined,\n );\n const columnEditRulesStateRef = useRef(createTreeGridColumnEditRulesState());\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 highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n highlightTreeGridCellById(id, {\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n });\n\n if (isTreeGridRowAddedById(row)) {\n appendTreeGridAddedRowHighlightColumn(row, col);\n }\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n latestColumnEditRulesRef.current = columnEditRules;\n latestColumnEditRuleLookupRef.current = resolveTreeGridColumnEditRuleLookup(columnEditRules, {\n hourMinuteInvalidText: t('Message.시간은 HH:mm 형식으로 입력해주세요.'),\n });\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const { datePickerEditorElement, handleDatePickerEditorCellClick } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalCellClick: handleDatePickerEditorCellClick,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\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 const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\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 latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n latestColumnEditRulesRef,\n latestColumnEditRuleLookupRef,\n appliedColumnEditRulesRef,\n columnEditRulesStateRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\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 const nextColumnEditRules = latestColumnEditRulesRef.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 =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n const shouldApplyColumnEditRules =\n appliedColumnEditRulesRef.current !== nextColumnEditRules &&\n !isEqual(appliedColumnEditRulesRef.current, nextColumnEditRules);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData && !shouldApplyColumnEditRules) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\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 stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\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\n if (shouldApplyColumnEditRules) {\n syncTreeGridColumnEditRules(\n treeGrid,\n latestColumnEditRuleLookupRef.current,\n columnEditRulesStateRef.current,\n );\n appliedColumnEditRulesRef.current = nextColumnEditRules;\n }\n }, [isTreeGridReady, layoutOverrides, data, columnEditRules, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\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\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\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 {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["OwpTreeGrid","__name","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","layoutUrl","layoutData","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","columnEditRules","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","resolveTreeGridColumnEditRuleLookup","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","appliedColumnEditRulesRef","columnEditRulesStateRef","createTreeGridColumnEditRulesState","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","useMemo","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","grid","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","row","col","value","highlightTreeGridCellById","isTreeGridRowAddedById","appendTreeGridAddedRowHighlightColumn","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorCellClick","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","nextColumnEditRules","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","shouldApplyColumnEditRules","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","syncTreeGridColumnEditRules","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/treeGridBodyRowsEvent';\nimport {\n appendTreeGridAddedRowHighlightColumn,\n clearTreeGridCellHighlightById,\n getTreeGridAddedRowBaselineValue,\n getTreeGridCellComparableValue,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n removeTreeGridAddedRowHighlightColumn,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridCellBaselineMap = WeakMap<TRow, Map<string, string>>;\n\nconst isVisibleTreeGridRow = (row: TRow | null | undefined) => {\n const visible = (row as { Visible?: unknown } | null)?.Visible;\n\n return !!row && visible !== 0 && visible !== false && visible !== '0';\n};\n\nconst isAddedTreeGridRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return !!row && added !== 0 && added !== false && added !== '0' && added !== undefined;\n};\n\nconst isDisplayTreeGridRow = (row: TRow | null | undefined) => {\n if (!row || row.Fixed === 'Foot' || !isVisibleTreeGridRow(row)) {\n return false;\n }\n\n return row.Kind === 'Data' || isAddedTreeGridRow(row);\n};\n\nconst getTreeGridRows = (grid: TGrid) => {\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n const rows: TRow[] = [];\n let row = grid.GetFirst();\n\n while (row) {\n rows.push(row);\n row = grid.GetNext(row);\n }\n\n return rows;\n }\n\n return Object.values(grid.Rows ?? {});\n};\n\nconst captureTreeGridChangeBaselines = (\n grid: TGrid | null | undefined,\n baselineMap: TreeGridCellBaselineMap,\n) => {\n if (!grid) {\n return;\n }\n\n const cols = Object.keys(grid.Cols ?? {}).filter(Boolean);\n\n getTreeGridRows(grid).forEach((row) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n baselineMap.set(\n row,\n new Map(cols.map((col) => [col, getTreeGridCellComparableValue(grid, row, col)])),\n );\n });\n};\n\nconst isTreeGridChangedFlag = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n value !== 0 &&\n value !== false &&\n value !== '0';\n\nconst hasOtherTreeGridChangedCells = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n return Object.keys(grid.Cols ?? {}).some((column) => {\n return column !== col && isTreeGridChangedFlag(rowRecord[`${column}Changed`]);\n });\n};\n\nconst clearTreeGridCellChangedState = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n rowRecord[`${col}Changed`] = 0;\n\n if (!isTreeGridRowAddedById(row) && !hasOtherTreeGridChangedCells(grid, row, col)) {\n rowRecord.Changed = 0;\n }\n};\n\nconst resolveTreeGridCellBaselineValue = (\n baselineMap: TreeGridCellBaselineMap,\n row: TRow,\n col: string,\n) => {\n const baselineValues = baselineMap.get(row);\n\n if (baselineValues?.has(col)) {\n return baselineValues.get(col);\n }\n\n if (isTreeGridRowAddedById(row)) {\n return getTreeGridAddedRowBaselineValue(row, col) ?? '';\n }\n\n return undefined;\n};\n\nconst syncTreeGridChangedCellHighlightById = ({\n gridId,\n grid,\n row,\n col,\n backgroundColor,\n baselineMap,\n}: {\n gridId: string;\n grid: TGrid;\n row: TRow;\n col: string;\n backgroundColor: string;\n baselineMap: TreeGridCellBaselineMap;\n}) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n const baselineValue = resolveTreeGridCellBaselineValue(baselineMap, row, col);\n const currentValue = getTreeGridCellComparableValue(grid, row, col);\n\n if (baselineValue !== undefined && currentValue === baselineValue) {\n clearTreeGridCellHighlightById(gridId, { row, col });\n clearTreeGridCellChangedState(grid, row, col);\n\n if (isTreeGridRowAddedById(row)) {\n removeTreeGridAddedRowHighlightColumn(row, col);\n }\n\n return;\n }\n\n highlightTreeGridCellById(gridId, {\n row,\n col,\n backgroundColor,\n });\n\n if (isTreeGridRowAddedById(row)) {\n appendTreeGridAddedRowHighlightColumn(row, col);\n }\n};\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\nexport interface OwpTreeGridDatePickerEditorColumnOption {\n baseYear?: string;\n baseYearMonth?: string;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n allowInput?: boolean;\n columnOptions?: Record<string, OwpTreeGridDatePickerEditorColumnOption>;\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\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 toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: 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 datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = '.8rem',\n layoutUrl,\n layoutData,\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 datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\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 highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const changedCellBaselineRef = useRef<TreeGridCellBaselineMap>(new WeakMap());\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n syncTreeGridChangedCellHighlightById({\n gridId: id,\n grid,\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n baselineMap: changedCellBaselineRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const {\n datePickerEditorElement,\n handleDatePickerEditorButtonClick,\n handleDatePickerEditorCellClick,\n handleDatePickerEditorKeyDown,\n handleDatePickerEditorStartEdit,\n } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalButtonClick: handleDatePickerEditorButtonClick,\n onInternalCellClick: handleDatePickerEditorCellClick,\n onInternalKeyDown: handleDatePickerEditorKeyDown,\n onInternalStartEdit: handleDatePickerEditorStartEdit,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\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 const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\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 latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n changedCellBaselineRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\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 =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n changedCellBaselineRef.current = new WeakMap();\n captureTreeGridChangeBaselines(treeGrid, changedCellBaselineRef.current);\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\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 stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\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\n }, [isTreeGridReady, layoutOverrides, data, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\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\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\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 {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["isVisibleTreeGridRow","__name","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","getTreeGridRows","grid","rows","captureTreeGridChangeBaselines","baselineMap","cols","col","getTreeGridCellComparableValue","isTreeGridChangedFlag","value","hasOtherTreeGridChangedCells","rowRecord","column","clearTreeGridCellChangedState","isTreeGridRowAddedById","resolveTreeGridCellBaselineValue","baselineValues","getTreeGridAddedRowBaselineValue","syncTreeGridChangedCellHighlightById","gridId","backgroundColor","baselineValue","currentValue","clearTreeGridCellHighlightById","removeTreeGridAddedRowHighlightColumn","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","OwpTreeGrid","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","layoutUrl","layoutData","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","useMemo","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","changedCellBaselineRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorButtonClick","handleDatePickerEditorCellClick","handleDatePickerEditorKeyDown","handleDatePickerEditorStartEdit","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAMA,KAAuB,gBAAAC,EAAA,CAACC,MAAiC;AAC7D,QAAMC,IAAWD,KAAA,gBAAAA,EAAsC;AAEvD,SAAO,CAAC,CAACA,KAAOC,MAAY,KAAKA,MAAY,MAASA,MAAY;AACpE,GAJ6B,yBAMvBC,KAAqB,gBAAAH,EAAA,CAACC,MAAiC;AAC3D,QAAMG,IAASH,KAAA,gBAAAA,EAAoC;AAEnD,SAAO,CAAC,CAACA,KAAOG,MAAU,KAAKA,MAAU,MAASA,MAAU,OAAOA,MAAU;AAC/E,GAJ2B,uBAMrBC,KAAuB,gBAAAL,EAAA,CAACC,MACxB,CAACA,KAAOA,EAAI,UAAU,UAAU,CAACF,GAAqBE,CAAG,IACpD,KAGFA,EAAI,SAAS,UAAUE,GAAmBF,CAAG,GALzB,yBAQvBK,KAAkB,gBAAAN,EAAA,CAACO,MAAgB;AACvC,MAAI,OAAOA,EAAK,YAAa,cAAc,OAAOA,EAAK,WAAY,YAAY;AAC7E,UAAMC,IAAe,CAAA;AACrB,QAAIP,IAAMM,EAAK,SAAA;AAEf,WAAON;AACL,MAAAO,EAAK,KAAKP,CAAG,GACbA,IAAMM,EAAK,QAAQN,CAAG;AAGxB,WAAOO;AAAA,EACT;AAEA,SAAO,OAAO,OAAOD,EAAK,QAAQ,CAAA,CAAE;AACtC,GAdwB,oBAgBlBE,KAAiC,gBAAAT,EAAA,CACrCO,GACAG,MACG;AACH,MAAI,CAACH;AACH;AAGF,QAAMI,IAAO,OAAO,KAAKJ,EAAK,QAAQ,CAAA,CAAE,EAAE,OAAO,OAAO;AAExD,EAAAD,GAAgBC,CAAI,EAAE,QAAQ,CAACN,MAAQ;AACrC,IAAKI,GAAqBJ,CAAG,KAI7BS,EAAY;AAAA,MACVT;AAAA,MACA,IAAI,IAAIU,EAAK,IAAI,CAACC,MAAQ,CAACA,GAAKC,GAA+BN,GAAMN,GAAKW,CAAG,CAAC,CAAC,CAAC;AAAA,IAAA;AAAA,EAEpF,CAAC;AACH,GApBuC,mCAsBjCE,KAAwB,gBAAAd,EAAA,CAACe,MAE7BA,KAAU,QACVA,MAAU,MACVA,MAAU,KACVA,MAAU,MACVA,MAAU,KANkB,0BAQxBC,KAA+B,gBAAAhB,EAAA,CAACO,GAAaN,GAAWW,MAAgB;AAC5E,QAAMK,IAAYhB;AAElB,SAAO,OAAO,KAAKM,EAAK,QAAQ,CAAA,CAAE,EAAE,KAAK,CAACW,MACjCA,MAAWN,KAAOE,GAAsBG,EAAU,GAAGC,CAAM,SAAS,CAAC,CAC7E;AACH,GANqC,iCAQ/BC,KAAgC,gBAAAnB,EAAA,CAACO,GAAaN,GAAWW,MAAgB;AAC7E,QAAMK,IAAYhB;AAElB,EAAAgB,EAAU,GAAGL,CAAG,SAAS,IAAI,GAEzB,CAACQ,EAAuBnB,CAAG,KAAK,CAACe,GAA6BT,GAAMN,GAAKW,CAAG,MAC9EK,EAAU,UAAU;AAExB,GARsC,kCAUhCI,KAAmC,gBAAArB,EAAA,CACvCU,GACAT,GACAW,MACG;AACH,QAAMU,IAAiBZ,EAAY,IAAIT,CAAG;AAE1C,MAAIqB,KAAA,QAAAA,EAAgB,IAAIV;AACtB,WAAOU,EAAe,IAAIV,CAAG;AAG/B,MAAIQ,EAAuBnB,CAAG;AAC5B,WAAOsB,GAAiCtB,GAAKW,CAAG,KAAK;AAIzD,GAhByC,qCAkBnCY,KAAuC,gBAAAxB,EAAA,CAAC;AAAA,EAC5C,QAAAyB;AAAA,EACA,MAAAlB;AAAA,EACA,KAAAN;AAAA,EACA,KAAAW;AAAA,EACA,iBAAAc;AAAA,EACA,aAAAhB;AACF,MAOM;AACJ,MAAI,CAACL,GAAqBJ,CAAG;AAC3B;AAGF,QAAM0B,IAAgBN,GAAiCX,GAAaT,GAAKW,CAAG,GACtEgB,IAAef,GAA+BN,GAAMN,GAAKW,CAAG;AAElE,MAAIe,MAAkB,UAAaC,MAAiBD,GAAe;AACjE,IAAAE,GAA+BJ,GAAQ,EAAE,KAAAxB,GAAK,KAAAW,EAAA,CAAK,GACnDO,GAA8BZ,GAAMN,GAAKW,CAAG,GAExCQ,EAAuBnB,CAAG,KAC5B6B,GAAsC7B,GAAKW,CAAG;AAGhD;AAAA,EACF;AAEA,EAAAmB,GAA0BN,GAAQ;AAAA,IAChC,KAAAxB;AAAA,IACA,KAAAW;AAAA,IACA,iBAAAc;AAAA,EAAA,CACD,GAEGN,EAAuBnB,CAAG,KAC5B+B,GAAsC/B,GAAKW,CAAG;AAElD,GA1C6C,yCA4JvCqB,KAAc,gBAAAjC,EAAA,CAAK;AAAA,EACvB,IAAAkC,IAAK;AAAA,EACL,gBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,mBAAAC,KAAoB;AAAA,EACpB,mBAAAC,KAAoB;AAAA,EACpB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,wBAAAC,KAAyB;AAAA,EACzB,uBAAAC,KAAwB;AAAA,EACxB,uBAAAC,KAAwB;AAAA,EACxB,0BAAAC,KAA2B;AAAA,EAC3B,SAAAC;AAAA,EACA,aAAAC,IAAc;AAChB,MAA2B;;AACzB,QAAM,EAAE,GAAAC,EAAA,IAAMC,GAAA,GACR,EAAE,eAAAC,GAAA,IAAkBC,GAAA,GACpBC,IAAkBC,GAAA,GAClBC,KAAyBC,MAAAC,KAAAJ,KAAA,gBAAAA,EAAiB,UAAjB,gBAAAI,GAAwB,SAAxB,gBAAAD,GAA8B,MACvDE,IAAsBC,EAAc,IAAI,GACxCC,KAAuBD,EAA8B,IAAI,GACzDE,KAA2BF,EAAsB,IAAI,GACrDG,IAAyBH,EAAsB,IAAI,GACnDI,IAA2BJ,EAA4C9B,CAAe,GACtFmC,KAAwBL,EAA+B7B,CAAI,GAC3DmC,KAAgCN,EAAOO,GAA6BvC,CAAU,CAAC,GAC/EwC,KAA0BrB,KAC5B,YACoB,MAAMK,GAAc;AAAA,IACpC,OAAOF,EAAE,+BAA+B;AAAA,IACxC,aAAaA,EAAE,4BAA4B;AAAA,IAC3C,QAAQA,EAAE,cAAc;AAAA,EAAA,CACzB,IAEkB,WAAW,aAEhC,QACEmB,IAAyBT,EAAiC;AAAA,IAC9D,UAAA3B;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,qBAAqBgC;AAAA,IACrB,eAAA/B;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,EAAA,CACD,GACK4B,IAAwBV,EAA+B,MAAS,GAChEW,IAA2BX,EAAO,EAAK,GACvCY,IAA4BZ,EAA4C,MAAS,GACjFa,IAAyBb,EAA+B,MAAS,GACjEc,KAA6Bd,EAAO,EAAK,GACzCe,IAAwBf,EAAO,CAAC,GAChCgB,IAA6BhB,EAAsB,IAAI,GACvDiB,IAA+BjB,EAA2B,MAAS,GACnEkB,IAA4BlB,EAA2B,MAAS,GAChEmB,KAA4BnB,EAAOhB,EAAsB,GACzDoC,IAA2BpB,EAAOf,EAAqB,GACvDoC,KAA2BrB,EAAOd,EAAqB,GACvD,CAACoC,GAAiBC,EAAkB,IAAIC,GAAS,EAAK,GACtD,CAACC,IAAyBC,CAA0B,IAAIF,GAAS,EAAK,GACtE,CAACG,IAAoBC,EAAqB,IAAIJ,GAAS,EAAK,GAC5DK,IAAkBC,GAAA,GAClBC,IAAgBC;AAAA,IACpB,MAAMC,GAAoBrC,CAAsB;AAAA,IAChD,CAACA,CAAsB;AAAA,EAAA,GAEnBsC,KAAsClC;AAAA,IAC1CmC,EAA2BJ,EAAc,SAAS,eAAe,KAC/DI,EAA2BC,EAAyB;AAAA,EAAA,GAElDC,IAAgCrC;AAAA,IACpC+B,EAAc,QAAQ,mBAAmBO;AAAA,EAAA,GAErCC,IAAyBvC,EAAgC,oBAAI,SAAS,GACtEwC,KAAiCxC,EAAO+B,EAAc,MAAM,2BAA2B,GACvFU,KAA8BzC,EAAO+B,EAAc,MAAM,wBAAwB,GACjFW,KAAuB1C,EAAO6B,EAAgB,EAAE,GAChDc,KACJtD,KACAlB,MAAS,UACTmD,KACAT,EAAuB,YAAY1C,GAE/ByE,IAA2BvD,KAAeD,OAAY,MAD3BC,MAAgBoC,MAA2BkB,KAEtEE,IACJ,CAACD,KAA2BzE,MAAS,UAAa2E,EAAQ3E,CAAI,KAAK,CAACwD,IAEhEoB,KAAyB,gBAAA5H,EAAA,CAACO,MAAuB;AACrD,IAAAkG,GAAsBoB,GAA2BtH,CAAI,CAAC;AAAA,EACxD,GAF+B,2BAGzBuH,KAAoC,gBAAA9H,EAAA,CACxCO,GACAN,GACAW,GACAG,MACG;;AACH,IAAIkF,EAAyB,WAAWhG,EAAI,UAAU,UACpDuB,GAAqC;AAAA,MACnC,QAAQU;AAAA,MACR,MAAA3B;AAAA,MACA,KAAAN;AAAA,MACA,KAAAW;AAAA,MACA,iBAAiBsG,EAA8B;AAAA,MAC/C,aAAaE,EAAuB;AAAA,IAAA,CACrC;AAGH,UAAMW,MACJpD,IAAAW,EAAuB,YAAvB,gBAAAX,EAAgC,0BAChCD,IAAAY,EAAuB,YAAvB,gBAAAZ,EAAgC;AAElC,IAAAqD,KAAA,QAAAA,EAAsBxH,GAAMN,GAAKW,GAAKG;AAAA,EACxC,GAtB0C;AAwB1C,EAAAkE,EAAyB,UAAUlC,GACnCmC,GAAsB,UAAUlC,GAChCmC,GAA8B,UAAUC,GAA6BvC,CAAU,GAC/EmD,GAA0B,UAAUnC,IACpCoC,EAAyB,UAAUnC,IACnCoC,GAAyB,UAAUnC,IACnCgD,GAAoC,UAClCC,EAA2BJ,EAAc,SAAS,eAAe,KACjEI,EAA2BC,EAAyB,GACtDC,EAA8B,UAC5BN,EAAc,QAAQ,mBAAmBO,IAC3CE,GAA+B,UAAUT,EAAc,MAAM,6BAC7DU,GAA4B,UAAUV,EAAc,MAAM;AAC1D,QAAM;AAAA,IACJ,yBAAAoB;AAAA,IACA,mCAAAC;AAAA,IACA,iCAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,iCAAAC;AAAA,EAAA,IAEAC,GAA+B;AAAA,IAC7B,QAAQzE;AAAA,IACR,qBAAAgB;AAAA,IACA,iBAAAuB;AAAA,IACA,eAAe2B;AAAA,EAAA,CAChB;AACH,EAAAxC,EAAuB,UAAU;AAAA,IAC/B,UAAApC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,qBAAqBgC;AAAA,IACrB,eAAA/B;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,uBAAuBsE;AAAA,IACvB,qBAAqBC;AAAA,IACrB,mBAAmBC;AAAA,IACnB,qBAAqBC;AAAA,EAAA;AAGvB,QAAME,KAAeC,GAA2B;AAAA,IAC9C,SAASd,KAA2BC;AAAA,IACpC,cAAc5C;AAAA,IACd,qBAAAF;AAAA,IACA,SAAS1C;AAAA,EAAA,CACV,GAEKsG,IAAiC,gBAAAxI,EAAA,MAAM;AAC3C,IAAI8F,EAA6B,YAAY,WAC3C,OAAO,aAAaA,EAA6B,OAAO,GACxDA,EAA6B,UAAU;AAAA,EAE3C,GALuC,mCAOjC2C,IAA8B,gBAAAzI,EAAA,MAAM;AACxC,IAAI+F,EAA0B,YAAY,WACxC,OAAO,aAAaA,EAA0B,OAAO,GACrDA,EAA0B,UAAU;AAAA,EAExC,GALoC;AAOpC,EAAA2C,EAAU,MAAM;AACd,UAAMC,IAAwB,gBAAA3I,EAAA,CAAC4I,MAAiB;;AAG9C,QAAIjE,IAFgBiE,EAEJ,WAAZ,gBAAAjE,EAAoB,YAAWzC,KAInCuE,GAAsBoB,GAA2BjD,EAAoB,OAAO,CAAC;AAAA,IAC/E,GAR8B;AAU9B,kBAAO,iBAAiBiE,IAAmCF,CAAqB,GAEzE,MAAM;AACX,aAAO,oBAAoBE,IAAmCF,CAAqB;AAAA,IACrF;AAAA,EACF,GAAG,CAACzG,CAAE,CAAC,GAEPwG,EAAU,MAAM;AACd,IAAKxE,MACHuE,EAAA,GACAD,EAAA,GACA3C,EAA2B,UAAU,MACrCU,EAA2B,EAAK;AAAA,EAEpC,GAAG,CAACrC,CAAW,CAAC,GAEhBwE,EAAU,MAAM;;AAUd,QAREhC,EAAgB,OAAOa,GAAqB,WAC5C,CAACI,EAAQ/C,EAAoB,OAAO,OAEpCD,IAAAC,EAAoB,YAApB,QAAAD,EAA6B,WAC7BC,EAAoB,UAAU,MAC9B2C,GAAqB,UAAUb,EAAgB,KAG7C,EAACiB,EAAQ/C,EAAoB,OAAO;AAIxC,aAAAkE,GAAmB;AAAA,QACjB,IAAA5G;AAAA,QACA,wBAAAoD;AAAA,QACA,+BAAAH;AAAA,QACA,2BAAAa;AAAA,QACA,0BAAAC;AAAA,QACA,0BAAAC;AAAA,QACA,qCAAAa;AAAA,QACA,+BAAAG;AAAA,QACA,gCAAAG;AAAA,QACA,6BAAAC;AAAA,QACA,wBAAAF;AAAA,QACA,qBAAAxC;AAAA,QACA,0BAAAG;AAAA,QACA,0BAAAE;AAAA,QACA,2BAAAQ;AAAA,QACA,wBAAAC;AAAA,QACA,4BAAAC;AAAA,QACA,wBAAAiC;AAAA,QACA,oBAAAxB;AAAA,MAAA,CACD,GAEDrB,GAAyB,UAAUgE,GAAA,GACnCC,GAAkB9G,GAAI,MAAM,GAC5B+G,GAAgB/G,GAAI,uBAAuB;AAAA,QACzC,YAAY,EAAQe;AAAA,QACpB,cAAciG,GAAyBlG,CAAI;AAAA,MAAA,CAC5C,GAED,OAAO;AAAA,QACLmG,GAAmC;AAAA,UACjC,IAAAjH;AAAA,UACA,WAAAU;AAAA,UACA,YAAAC;AAAA,UACA,SAAAC;AAAA,UACA,UAAUE;AAAA,UACV,YAAAC;AAAA,UACA,OAAAR;AAAA,UACA,QAAAD;AAAA,UACA,YAAYkE,EAAgB;AAAA,QAAA,CAC7B;AAAA,QACDxE;AAAA,QACAA;AAAA,MAAA,GAGK,MAAM;AACX,QAAAkH,GAAM,MAAM;;AACV,WAAAzE,IAAAC,EAAoB,YAApB,QAAAD,EAA6B;AAAA,QAC/B,GAAG,GAAG;AAAA,MACR;AAAA,EAEF,GAAG,CAAA,CAAE,GAEL0E,GAAgB,MAAM;AACpB,UAAMC,IAAW1E,EAAoB,SAC/B2E,IAAsBtE,EAAyB,SAC/CuE,IAAetE,GAAsB;AAE3C,QAAIyC,EAAQ2B,CAAQ,KAAK,CAACnD;AACxB;AAGF,UAAMsD,IACJhE,EAA0B,YAAY8D,KACtC,CAACG,GAAQjE,EAA0B,SAAS8D,CAAmB,GAC3DI,IACJjE,EAAuB,YAAY8D,MAClC,CAAChE,EAAyB,WAAWD,EAAsB,YAAYiE;AAE1E,QAAI,GAACC,KAA8B,CAACE,IAIpC;AAAA,UAAIF,GAA4B;AAC9B,cAAMG,IAAuBb,GAAA;AAE7B,QAAAc,GAA0BP,GAAUC,GAAqBI,CAAmB,GAC5ElE,EAA0B,UAAU8D,GACpCO,GAAoB5H,GAAI,gBAAgB0H,GAAsB;AAAA,UAC5D,mBAAmB,EAAQD;AAAA,QAAmB,CAC/C;AAAA,MACH;AAEA,UAAIA,GAAqB;AACvB,cAAMI,IAAiBnE,EAAsB,UAAU,GACjDoE,IAAgB,gBAAAhK,EAAA,MAAM;AAC1B,gBAAMiK,IAAkB1E,EAAsB;AAE9C,UAAAQ,EAA0B,UAAU,QACpCf,EAAuB,UAAU+D,GAAA,GACjCC,GAAkB9G,GAAI,QAAQ,GAC9B+G,GAAgB/G,GAAI,oBAAoB;AAAA,YACtC,cAAcgH,GAAyBe,CAAe;AAAA,UAAA,CACvD,GAEDC,GAAwBZ,GAAUW,GAAiB,MAAM;AACvD,gBAAIrE,EAAsB,YAAYmE;AACpC;AAGF,YAAArE,EAAuB,UAAUuE,GACjC7C,EAAuB,8BAAc,QAAA,GACrC3G,GAA+B6I,GAAUlC,EAAuB,OAAO,GACvEQ,GAAuB0B,CAAQ,GAC/BQ,GAAoB5H,GAAI,kBAAkB8C,EAAuB,SAAS;AAAA,cACxE,cAAckE,GAAyBe,CAAe;AAAA,YAAA,CACvD,GACDjF,EAAuB,UAAU,MAE7BO,EAAsB,YAAY0E,MACpC1E,EAAsB,UAAU,QAChCC,EAAyB,UAAU;AAGrC,kBAAM2E,KAAYtE,EAA2B;AAE7C,gBAAI,CAAC3B,KAAeiG,OAAc,MAAM;AACtC,cAAAtE,EAA2B,UAAU,MACrCU,EAA2B,EAAK;AAChC;AAAA,YACF;AAEA,kBAAM6D,KAAuB,KAAK;AAAA,cAChC;AAAA,cACAC,MAA4C,KAAK,IAAA,IAAQF;AAAA,YAAA;AAK3D,gBAFA3B,EAAA,GAEI4B,OAAyB,GAAG;AAC9B,cAAAvE,EAA2B,UAAU,MACrCU,EAA2B,EAAK;AAChC;AAAA,YACF;AAEA,YAAAT,EAA6B,UAAU,OAAO,WAAW,MAAM;AAC7D,cAAIF,EAAsB,YAAYmE,MAItCjE,EAA6B,UAAU,QACvCD,EAA2B,UAAU,MACrCU,EAA2B,EAAK;AAAA,YAClC,GAAG6D,EAAoB;AAAA,UACzB,CAAC;AAAA,QACH,GA5DsB;AA8DtB,QAAAxE,EAAsB,UAAUmE,GAChCxE,EAAsB,UAAUiE,GAChChE,EAAyB,UAAU,IAE/BtB,KAAesF,MAAiB,UAClCf,EAAA,GACAD,EAAA,GACA3C,EAA2B,UAAU,KAAK,IAAA,GAC1CU,EAA2B,EAAI,GAC/BR,EAA0B,UAAU,OAAO,WAAW,MAAM;AAC1D,UAAIH,EAAsB,YAAYmE,KAItCC,EAAA;AAAA,QACF,GAAG,CAAC,KAEJA,EAAA;AAAA,MAEJ;AAAA;AAAA,EAEF,GAAG,CAAC7D,GAAiBpD,GAAiBC,GAAMkB,GAAahC,CAAE,CAAC,GAE5DwG,EAAU,MACD,MAAM;AACX,IAAAD,EAAA,GACAD,EAAA;AAAA,EACF,GACC,CAAA,CAAE;AAEL,QAAM8B,IAAsDC,GAAkC;AAAA,IAC5F,OAAA9H;AAAA,IACA,QAAAD;AAAA,IACA,eAAAoE;AAAA,IACA,iBAAiBnC;AAAA,IACjB,gBAAAtC;AAAA,IACA,mBAAmBO,KAAoBC,KAAoB;AAAA,EAAA,CAC5D;AAED,SAAIN,MAA8B,WAChCiI,EAAuB,8CAA8C,IACnE,OAAOjI,CAAyB,KAGhC6B,KAAewD,OACjB4C,EAAuB,WACrBnI,KAAA,QAAAA,EAAgB,YAAYA,EAAe,aAAa,WACpDA,EAAe,WACf,YACNmI,EAAuB,YAAY,YAInC,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK1F;AAAA,MACL,WAAW;AAAA,QACT2F;AAAA,QACA/H,MAAqBgI;AAAA,QACrBtI;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACX,OAAOkI;AAAA,MAEP,UAAA;AAAA,QAAA,gBAAAK,EAACC,IAAA,EAAa,QAAQC,GAAA,CAAqB;AAAA,QAC3C,gBAAAF,EAAC,OAAA,EAAI,IAAAzI,GAAQ,WAAAI,GAAsB,OAAOwI,GAAKvI,GAAO,CAAC,UAAU,OAAO,CAAC,EAAA,CAAG;AAAA,QAC5E,gBAAAoI;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,SAASrD;AAAA,YACT,SAASvD,EAAE,uBAAuB;AAAA,YAClC,cAAAmE;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAqC,EAACK,IAAA,EAA0B,SAASvD,GAAyB,cAAAa,GAAA,CAA4B;AAAA,QACxFN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GAldoB;"}
|