@owp/core 2.5.21 → 2.5.23
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/dayjs.d.ts +4 -0
- package/dayjs.js +2 -0
- package/dist/_virtual/isBetween.js +8 -0
- package/dist/_virtual/isBetween.js.map +1 -0
- package/dist/_virtual/isBetween2.js +5 -0
- package/dist/_virtual/isBetween2.js.map +1 -0
- package/dist/components/OwpMrtTable/OwpMrtTable.js +21 -21
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
- package/dist/components/OwpPageContent/OwpPageContent.js +20 -19
- package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +31 -32
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +21 -21
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +29 -30
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpWeekDatePicker.js +28 -29
- package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpYearRangePicker.js +1 -1
- package/dist/components/OwpPicker/OwpYearRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/internal/DatePickerInput.js +5 -5
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +118 -111
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpTable/OwpDataTable.js +13 -12
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js +82 -99
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +56 -55
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTable/internal/OwpTableBase.js +84 -58
- package/dist/components/OwpTable/internal/OwpTableBase.js.map +1 -1
- package/dist/components/OwpTable/internal/defaultTableStyle.js +6 -7
- package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
- package/dist/components/OwpTable/utils/tableSx.js +16 -6
- package/dist/components/OwpTable/utils/tableSx.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +104 -103
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +21 -22
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +253 -252
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/table.js +5 -0
- package/dist/constants/table.js.map +1 -0
- package/dist/constants.js +25 -23
- package/dist/constants.js.map +1 -1
- package/dist/dayjs.js +18 -0
- package/dist/dayjs.js.map +1 -0
- package/dist/features/themePreview/components/ThemePreviewCanvas.js +22 -22
- package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
- package/dist/features/themePreview/hooks/useThemePreview.js +16 -16
- package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
- package/dist/hooks/{useInitCommonCodes.js → internal/useInitCommonCodes.js} +6 -6
- package/dist/hooks/internal/useInitCommonCodes.js.map +1 -0
- package/dist/hooks/internal/useMinimumVisibleState.js +31 -0
- package/dist/hooks/internal/useMinimumVisibleState.js.map +1 -0
- package/dist/hooks/useInitApp.js +17 -14
- package/dist/hooks/useInitApp.js.map +1 -1
- package/dist/hooks.js +49 -51
- package/dist/hooks.js.map +1 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isBetween.js +23 -0
- package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isBetween.js.map +1 -0
- 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/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +1 -1
- package/dist/types/components/OwpSection/OwpSection.d.ts +9 -3
- package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +0 -1
- package/dist/types/components/OwpTable/utils/tableSx.d.ts +15 -0
- package/dist/types/constants/index.d.ts +1 -0
- package/dist/types/constants/table.d.ts +1 -0
- package/dist/types/dayjs.d.ts +18 -0
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/internal/useMinimumVisibleState.d.ts +7 -0
- package/dist/types/utils/dayjsBrowser.d.ts +1 -7
- package/dist/types/utils/formatDateToYmd.d.ts +1 -1
- package/dist/utils/formatDateToYmd.js +3 -3
- package/dist/utils/formatDateToYmd.js.map +1 -1
- package/dist/utils/treeGridExportExcelUtil.js +1 -1
- package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
- package/dist/utils/zipUtil.js +3 -3
- package/dist/utils/zipUtil.js.map +1 -1
- package/package.json +3 -1
- package/dist/hooks/useInitCommonCodes.js.map +0 -1
- package/dist/utils/dayjsBrowser.js +0 -16
- package/dist/utils/dayjsBrowser.js.map +0 -1
- /package/dist/types/hooks/{useInitCommonCodes.d.ts → internal/useInitCommonCodes.d.ts} +0 -0
|
@@ -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 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":"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"}
|
|
1
|
+
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\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 = DEFAULT_TABLE_RADIUS,\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","DEFAULT_TABLE_RADIUS","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":"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"}
|
|
@@ -4,7 +4,7 @@ import { jsx as I, jsxs as $t } from "../../../../node_modules/.pnpm/@emotion_re
|
|
|
4
4
|
import { PICKER_INVALID_INPUT_MESSAGE_KEY as Vt, TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH as mt, TIME_PICKER_EDITOR_SECTION_WIDTH as q, TIME_PICKER_SELECTED_ITEM_SX as zt, VALUE_TIME_SECOND_FORMATTER as S, VALUE_TIME_FORMATTER as z, VALUE_DATE_FORMATTER as k, VALUE_MONTH_FORMATTER as b, VALUE_YEAR_FORMATTER as G } from "../../../OwpPicker/constants/index.js";
|
|
5
5
|
import { getPickerInputMask as jt } from "../../../OwpPicker/utils/index.js";
|
|
6
6
|
import { useOwpTranslation as Ut } from "../../../../hooks/useOwpTranslation.js";
|
|
7
|
-
import { ensureDayjsBrowserSetup as Nt } from "../../../../
|
|
7
|
+
import { owpDayjs as C, ensureDayjsBrowserSetup as Nt } from "../../../../dayjs.js";
|
|
8
8
|
import Wt from "../../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
|
|
9
9
|
import qt from "@mui/material/ClickAwayListener";
|
|
10
10
|
import Xt from "@mui/material/IconButton";
|
|
@@ -15,7 +15,6 @@ import { LocalizationProvider as gt, MultiSectionDigitalClock as te } from "@mui
|
|
|
15
15
|
import { AdapterDayjs as ee } from "@mui/x-date-pickers/AdapterDayjs";
|
|
16
16
|
import { enUS as re } from "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js";
|
|
17
17
|
import { ko as ne } from "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ko.js";
|
|
18
|
-
import C from "dayjs";
|
|
19
18
|
import { useState as X, useRef as pt, useMemo as F, useEffect as J, useCallback as y } from "react";
|
|
20
19
|
import { DatePicker as oe, registerLocale as ht, setDefaultLocale as ie } from "../../../../node_modules/.pnpm/react-datepicker@8.7.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-datepicker/dist/index.es.js";
|
|
21
20
|
import { OwpTextMaskField as se } from "../../../OwpTextField/OwpTextMaskField.js";
|
|
@@ -40,7 +39,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
40
39
|
["YYYY-MM-DD HH:mm", $],
|
|
41
40
|
["yyyy-mm-dd HH:mm:ss", O],
|
|
42
41
|
["YYYY-MM-DD HH:mm:ss", O]
|
|
43
|
-
]), ce = /* @__PURE__ */ a((t) => (t == null ? void 0 : t.enabled) !== !1, "isDatePickerEditorEnabled"), ue = /* @__PURE__ */ a((t) => t == null ? void 0 : t.trim().replace(/\s+/g, " "), "normalizeTreeGridDateFormat"),
|
|
42
|
+
]), ce = /* @__PURE__ */ a((t) => (t == null ? void 0 : t.enabled) !== !1, "isDatePickerEditorEnabled"), ue = /* @__PURE__ */ a((t) => t == null ? void 0 : t.trim().replace(/\s+/g, " "), "normalizeTreeGridDateFormat"), _t = /* @__PURE__ */ a((t) => {
|
|
44
43
|
const n = ue(t);
|
|
45
44
|
return n ? Dt.get(n) ?? Dt.get(n.toLowerCase()) ?? null : null;
|
|
46
45
|
}, "convertTreeGridDateFormatToDayjs"), g = /* @__PURE__ */ a((t) => {
|
|
@@ -68,7 +67,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
68
67
|
var e;
|
|
69
68
|
if (!t)
|
|
70
69
|
return g(k);
|
|
71
|
-
const o = t.row, s = (e = t.grid.Cols) == null ? void 0 : e[t.col], c = o[`${t.col}EditFormat`] ?? o[`${t.col}Format`] ?? (s == null ? void 0 : s.EditFormat) ?? (s == null ? void 0 : s.Format), l =
|
|
70
|
+
const o = t.row, s = (e = t.grid.Cols) == null ? void 0 : e[t.col], c = o[`${t.col}EditFormat`] ?? o[`${t.col}Format`] ?? (s == null ? void 0 : s.EditFormat) ?? (s == null ? void 0 : s.Format), l = _t(
|
|
72
71
|
typeof c == "string" ? c : void 0
|
|
73
72
|
) ?? (n != null && n.showTimeInput || n != null && n.showTimeSelect ? $ : k);
|
|
74
73
|
return g(l);
|
|
@@ -128,8 +127,8 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
128
127
|
const o = (t == null ? void 0 : t.split(/\s+/).filter(Boolean)) ?? [];
|
|
129
128
|
return o.includes(n) ? t : [...o, n].join(" ");
|
|
130
129
|
}, "appendTreeGridClass"), he = /* @__PURE__ */ a((t, n, o, s) => {
|
|
131
|
-
var u,
|
|
132
|
-
const c = (u = t.GetStringEdit) == null ? void 0 : u.call(t, n, o), l = (
|
|
130
|
+
var u, _, x, f;
|
|
131
|
+
const c = (u = t.GetStringEdit) == null ? void 0 : u.call(t, n, o), l = (_ = t.GetString) == null ? void 0 : _.call(t, n, o), e = (x = t.GetValue) == null ? void 0 : x.call(t, n, o), p = (f = s.textContent) == null ? void 0 : f.trim();
|
|
133
132
|
return String(c || l || p || e || "");
|
|
134
133
|
}, "resolveDatePickerEditorInitialValue"), Ie = /* @__PURE__ */ a((t, n, o, s) => {
|
|
135
134
|
if (!n)
|
|
@@ -138,18 +137,18 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
138
137
|
return n;
|
|
139
138
|
const c = de(n, o);
|
|
140
139
|
return L(t, c, o, s) ? c : n;
|
|
141
|
-
}, "normalizeDatePickerEditorInitialValue"),
|
|
140
|
+
}, "normalizeDatePickerEditorInitialValue"), _e = /* @__PURE__ */ a((t, n) => {
|
|
142
141
|
const o = n;
|
|
143
142
|
return o.ctrlKey || o.altKey || o.metaKey ? !1 : /^\d$/.test(t) || /^\d$/.test(o.key) || t === "F2" || t === "Backspace" || t === "Delete" || o.key === "F2" || o.key === "Backspace" || o.key === "Delete";
|
|
144
143
|
}, "isDatePickerEditorStartKey"), Tt = /* @__PURE__ */ a((t) => {
|
|
145
144
|
const n = t.target;
|
|
146
145
|
return n instanceof Element && !!n.closest(`.${It}`);
|
|
147
|
-
}, "isDatePickerEditorEventTarget"), V = /* @__PURE__ */ a((t) => t === 1 || t === "1", "isTreeGridCanEditEnabled"),
|
|
146
|
+
}, "isDatePickerEditorEventTarget"), V = /* @__PURE__ */ a((t) => t === 1 || t === "1", "isTreeGridCanEditEnabled"), fe = /* @__PURE__ */ a((t) => t === 0 || t === "0" || t === !1, "isTreeGridCanEditDisabled"), Pe = /* @__PURE__ */ a((t) => !t || t.Fixed === "Foot" ? !1 : t.Kind === "Data" || V(t.Added), "isDisplayTreeGridRow"), B = /* @__PURE__ */ a((t, n, o, s) => {
|
|
148
147
|
var u;
|
|
149
148
|
if (s.size > 0 && !s.has(o))
|
|
150
149
|
return !1;
|
|
151
150
|
const c = (u = t.Cols) == null ? void 0 : u[o], l = n[`${o}CanEdit`], e = l != null, p = V(e ? l : c == null ? void 0 : c.CanEdit);
|
|
152
|
-
return (c == null ? void 0 : c.Type) === "Date" && Pe(n) && !
|
|
151
|
+
return (c == null ? void 0 : c.Type) === "Date" && Pe(n) && !fe(n.CanEdit) && p && n.Deleted !== 1;
|
|
153
152
|
}, "isEditableDatePickerCell"), Re = /* @__PURE__ */ a((t, n) => {
|
|
154
153
|
var s;
|
|
155
154
|
if (!t)
|
|
@@ -163,22 +162,22 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
163
162
|
if (!l || l.Type !== "Date" || !V(l.CanEdit))
|
|
164
163
|
return;
|
|
165
164
|
l.AutoCalendar = 0, l.CalendarButtons = 0;
|
|
166
|
-
const e = l.EditFormat ?? l.Format, p =
|
|
165
|
+
const e = l.EditFormat ?? l.Format, p = _t(
|
|
167
166
|
typeof e == "string" ? e : void 0
|
|
168
167
|
) ?? k;
|
|
169
168
|
g(p).kind === "time" ? (l.Button = "Html", l.ButtonText = le, l.OnClickSide = "Focus", l.Class = Te(l.Class, ae)) : (l.Button = "Date", l.OnClickSideDate = "Focus");
|
|
170
169
|
}), (s = t.Rerender) == null || s.call(t, 1, 1);
|
|
171
|
-
}, "configureTreeGridDatePickerColumns"),
|
|
170
|
+
}, "configureTreeGridDatePickerColumns"), Ue = /* @__PURE__ */ a(({
|
|
172
171
|
config: t,
|
|
173
172
|
treeGridInstanceRef: n,
|
|
174
173
|
isTreeGridReady: o,
|
|
175
174
|
onValueChange: s
|
|
176
175
|
}) => {
|
|
177
176
|
var dt;
|
|
178
|
-
const { t: c, i18n: l } = Ut(), [e, p] = X(null), [u,
|
|
177
|
+
const { t: c, i18n: l } = Ut(), [e, p] = X(null), [u, _] = X(""), [x, f] = X(!1), et = pt(null), M = pt(!1), T = ce(t), j = ((dt = t == null ? void 0 : t.columns) == null ? void 0 : dt.join(Et)) ?? "", K = F(
|
|
179
178
|
() => j ? j.split(Et) : [],
|
|
180
179
|
[j]
|
|
181
|
-
), P = F(() => new Set(K), [K]), rt = l.resolvedLanguage ?? l.language ?? "kr",
|
|
180
|
+
), P = F(() => new Set(K), [K]), rt = l.resolvedLanguage ?? l.language ?? "kr", ft = rt === "kr" ? "ko" : "en", Pt = rt === "kr" ? "ko" : "en", U = (t == null ? void 0 : t.allowInput) !== !1, m = F(
|
|
182
181
|
() => kt(e, t),
|
|
183
182
|
[t, e]
|
|
184
183
|
);
|
|
@@ -208,7 +207,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
208
207
|
t
|
|
209
208
|
)
|
|
210
209
|
};
|
|
211
|
-
return M.current = !1,
|
|
210
|
+
return M.current = !1, f(!1), _(A.value ?? ""), p(A), 1;
|
|
212
211
|
},
|
|
213
212
|
[t]
|
|
214
213
|
), Rt = y(
|
|
@@ -234,7 +233,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
234
233
|
if (Tt(d))
|
|
235
234
|
return 1;
|
|
236
235
|
const E = r.FRow || r.ARow, D = r.FCol || r.ACol;
|
|
237
|
-
if (!(!T || !E || !D || !B(r, E, D, P) || !
|
|
236
|
+
if (!(!T || !E || !D || !B(r, E, D, P) || !_e(i, d)))
|
|
238
237
|
return (w = r.CloseDialog) == null || w.call(r), d.preventDefault(), d.stopPropagation(), R(r, E, D);
|
|
239
238
|
},
|
|
240
239
|
[P, T, R]
|
|
@@ -280,21 +279,21 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
280
279
|
if (!e)
|
|
281
280
|
return;
|
|
282
281
|
const i = r ? C(r).format(m.valueFormat) : "";
|
|
283
|
-
M.current = !0,
|
|
282
|
+
M.current = !0, _(i), e.grid.SetString(e.row, e.col, i, 1), s == null || s(e.grid, e.row, e.col, i), h();
|
|
284
283
|
}, "handleDateSelect"), St = /* @__PURE__ */ a((r, i) => {
|
|
285
284
|
if (!e)
|
|
286
285
|
return;
|
|
287
286
|
const d = r != null && r.isValid() ? r.format(m.valueFormat) : "", E = i === (yt(m) ? "seconds" : "minutes");
|
|
288
|
-
E && (M.current = !0),
|
|
287
|
+
E && (M.current = !0), _(d), e.grid.SetString(e.row, e.col, d, 1), s == null || s(e.grid, e.row, e.col, d), p((D) => D && { ...D, value: d }), E && h();
|
|
289
288
|
}, "handleTimeSelect"), nt = y(
|
|
290
289
|
(r) => {
|
|
291
290
|
e && (e.grid.SetString(e.row, e.col, r, 1), s == null || s(e.grid, e.row, e.col, r));
|
|
292
291
|
},
|
|
293
292
|
[e, s]
|
|
294
|
-
), v = y(() => !e || u !== "" && !L(e.col, u, m, t) ? (e && u &&
|
|
293
|
+
), v = y(() => !e || u !== "" && !L(e.col, u, m, t) ? (e && u && f(!0), !1) : (M.current = !0, f(!1), nt(u), !0), [nt, t, e, m, u]), xt = y(() => {
|
|
295
294
|
v(), h();
|
|
296
295
|
}, [h, v]), Kt = /* @__PURE__ */ a((r) => {
|
|
297
|
-
e && (
|
|
296
|
+
e && (_(r.target.value), f(!1));
|
|
298
297
|
}, "handleInputChange"), Y = y(
|
|
299
298
|
(r, i) => {
|
|
300
299
|
if (!e || r !== "Enter" && r !== "Tab" || !v())
|
|
@@ -313,7 +312,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
313
312
|
), vt = /* @__PURE__ */ a((r) => {
|
|
314
313
|
r.stopPropagation(), r.nativeEvent.stopImmediatePropagation(), ot(r);
|
|
315
314
|
}, "handleInputKeyDown"), Yt = /* @__PURE__ */ a((r) => {
|
|
316
|
-
r.preventDefault(), r.stopPropagation(), e && (M.current = !0, e.grid.SetString(e.row, e.col, "", 1), s == null || s(e.grid, e.row, e.col, ""),
|
|
315
|
+
r.preventDefault(), r.stopPropagation(), e && (M.current = !0, e.grid.SetString(e.row, e.col, "", 1), s == null || s(e.grid, e.row, e.col, ""), _(""), f(!1), p((i) => i && { ...i, value: "" }));
|
|
317
316
|
}, "handleInputClear"), it = /* @__PURE__ */ a((r) => {
|
|
318
317
|
r.stopPropagation();
|
|
319
318
|
}, "handleEditorMouseEvent"), st = /* @__PURE__ */ a((r) => {
|
|
@@ -480,7 +479,7 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
480
479
|
oe,
|
|
481
480
|
{
|
|
482
481
|
inline: !0,
|
|
483
|
-
locale:
|
|
482
|
+
locale: ft,
|
|
484
483
|
selected: Ft,
|
|
485
484
|
onChange: /* @__PURE__ */ a((r) => Ot(r), "onChange"),
|
|
486
485
|
showYearPicker: m.kind === "year",
|
|
@@ -505,6 +504,6 @@ const $ = `${k} ${z}`, O = `${k} ${S}`, Et = "", It = "OwpTreeGridDatePickerEdi
|
|
|
505
504
|
};
|
|
506
505
|
}, "useOwpTreeGridDatePickerEditor");
|
|
507
506
|
export {
|
|
508
|
-
|
|
507
|
+
Ue as useOwpTreeGridDatePickerEditor
|
|
509
508
|
};
|
|
510
509
|
//# sourceMappingURL=useOwpTreeGridDatePickerEditor.js.map
|