@owp/core 2.5.13 → 2.5.15
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/index15.js +2 -2
- package/dist/_virtual/index3.js +2 -2
- package/dist/_virtual/index4.js +2 -2
- package/dist/_virtual/index5.js +2 -2
- package/dist/components/OwpDialog/OwpAlertDialog.js +46 -0
- package/dist/components/OwpDialog/OwpAlertDialog.js.map +1 -0
- package/dist/components/OwpDialog/OwpDialog.js +41 -38
- package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +163 -153
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +234 -173
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGridResetChangesButton/OwpTreeGridResetChangesButton.js +7 -6
- package/dist/components/OwpTreeGridResetChangesButton/OwpTreeGridResetChangesButton.js.map +1 -1
- package/dist/features/themePreview/components/ThemePreviewColorField.js +79 -75
- package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
- package/dist/hooks/useConfirm.js +55 -65
- package/dist/hooks/useConfirm.js.map +1 -1
- package/dist/index.js +69 -67
- package/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/inko@1.1.1/node_modules/inko/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/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/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-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/types/components/OwpDialog/OwpAlertDialog.d.ts +25 -0
- package/dist/types/components/OwpDialog/OwpDialog.d.ts +2 -0
- package/dist/types/components/OwpDialog/index.d.ts +1 -0
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +8 -3
- package/dist/types/hooks/useConfirm.d.ts +7 -14
- package/dist/types/utils/treeGridUtil.d.ts +23 -0
- package/dist/utils/treeGridExportExcelUtil.js +118 -118
- package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
- package/dist/utils/treeGridUtil.js +123 -103
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +81 -75
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import { getTreeGridTextResourceUrl } from '@/constants/treeGrid';\nimport { highlightTreeGridCellById } from '@/utils/treeGridUtil';\nimport { debounce, get, isEmpty } from 'es-toolkit/compat';\nimport { enqueueSnackbar } from 'notistack';\nimport {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {\n OwpTreeGridBodyData,\n OwpTreeGridColumnEditRule,\n OwpTreeGridLayoutConfig,\n OwpTreeGridProps,\n OwpTreeGridRowModel,\n OwpTreeGridSelectedRows,\n} from '../OwpTreeGrid';\nimport { applyTreeGridLayoutToGrid } from './treeGridLayout';\nimport {\n resetTreeGridColumnEditRulesState,\n resolveTreeGridColumnEditValue,\n syncTreeGridColumnEditRules,\n type TreeGridColumnEditRuleLookup,\n type TreeGridColumnEditRulesState,\n} from './treeGridColumnEditRules';\nimport {\n countTreeGridPerf,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './utils/perf';\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\nconst TREE_GRID_SELECTED_CELL_RGB = [255, 255, 166] as const;\nconst TREE_GRID_READONLY_HOVER_CELL_RGB = [240, 240, 240] as const;\nconst TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB = [248, 248, 248] as const;\nconst TREE_GRID_PREVIEW_CELL_RGB = [255, 255, 255] as const;\nconst TREE_GRID_PREVIEW_CELL_SOFT_RGB = [255, 255, 254] as const;\nconst TREE_GRID_PREVIEW_CELL_DIM_RGB = [242, 242, 242] as const;\nconst TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE = 'Button';\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\nexport type TreeGridEventHandlers<T> = Pick<\n OwpTreeGridProps<T>,\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n>;\n\nexport type TreeGridEventBindingOptions<T> = Pick<OwpTreeGridProps<T>, 'id'> & {\n latestEventHandlersRef: RefObject<TreeGridEventHandlers<T>>;\n highlightEditableCellsRef: RefObject<boolean>;\n highlightChangedCellsRef: RefObject<boolean>;\n editableCellBackgroundColorValueRef: RefObject<number | undefined>;\n changedCellBackgroundColorRef: RefObject<string>;\n selectedCellBackgroundColorRef: RefObject<string>;\n hoverCellBackgroundColorRef: RefObject<string>;\n treeGridInstanceRef: RefObject<TGrid>;\n treeGridInitStartedAtRef: RefObject<number | null>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n latestColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n latestColumnEditRuleLookupRef: RefObject<TreeGridColumnEditRuleLookup | undefined>;\n appliedColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n columnEditRulesStateRef: RefObject<TreeGridColumnEditRulesState>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n syncHasDisplayDataRows: (grid: TGrid | null) => void;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\nconst isTreeGridInlineUrl = (url?: string) => {\n return url?.startsWith('data:') || url?.startsWith('blob:');\n};\n\nconst treeGridInlineBlobUrlCache = new Map<string, string>();\n\nconst resolveTreeGridInlineUrl = (url?: string) => {\n if (!url || !url.startsWith('data:')) {\n return url;\n }\n\n const cachedUrl = treeGridInlineBlobUrlCache.get(url);\n\n if (cachedUrl) {\n return cachedUrl;\n }\n\n try {\n const [meta, encodedData = ''] = url.split(',', 2);\n const match = /^data:([^;]*)(;base64)?$/i.exec(meta);\n const mimeType = match?.[1] || 'application/octet-stream';\n const decodedData = match?.[2] ? atob(encodedData) : decodeURIComponent(encodedData);\n const bytes = new Uint8Array(decodedData.length);\n\n for (let index = 0; index < decodedData.length; index += 1) {\n bytes[index] = decodedData.charCodeAt(index);\n }\n\n const blobUrl = URL.createObjectURL(new Blob([bytes], { type: mimeType }));\n\n treeGridInlineBlobUrlCache.set(url, blobUrl);\n\n return blobUrl;\n } catch {\n return url;\n }\n};\n\nconst appendNoCacheQuery = (url: string) => {\n if (!url || isTreeGridInlineUrl(url)) {\n return resolveTreeGridInlineUrl(url);\n }\n\n const hashIndex = url.indexOf('#');\n const [baseUrl, hashFragment] =\n hashIndex >= 0 ? [url.slice(0, hashIndex), url.slice(hashIndex)] : [url, ''];\n const querySeparator = baseUrl.includes('?') ? '&' : '?';\n\n return `${baseUrl}${querySeparator}noCache=${Date.now()}${hashFragment}`;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n if (!dataUrl) {\n return '';\n }\n\n if (isTreeGridInlineUrl(dataUrl) || dataUrl.includes('assets')) {\n return appendNoCacheQuery(dataUrl);\n }\n\n // @ts-expect-error - API base URL env is provided by host app\n return appendNoCacheQuery(`${import.meta.env.VITE_API_BASE_URL}/${dataUrl}`);\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\n/**\n * TreeGrid 초기화 옵션 생성\n * @param input 초기화 입력값\n */\nexport const buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: layoutData ? { Data: layoutData } : { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\ntype TreeGridCellSpanAttribute = 'Span' | 'RowSpan';\n\n/**\n * TreeGrid span 속성 숫자 변환\n * @param value span 속성 원본값\n */\nconst parseTreeGridPositiveNumber = (value: unknown) => {\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? value : undefined;\n }\n\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const trimmedValue = value.trim();\n\n if (!trimmedValue) {\n return undefined;\n }\n\n const numericValue = Number(trimmedValue);\n\n return Number.isFinite(numericValue) && numericValue > 0 ? numericValue : undefined;\n};\n\n/**\n * TreeGrid 헤더 셀 span 속성 조회\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param attributeName span 속성 이름\n */\nconst getTreeGridHeaderCellSpanAttribute = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n attributeName: TreeGridCellSpanAttribute,\n) => {\n if (!row || !col) {\n return undefined;\n }\n\n const attributeValue = grid.GetAttribute(row, col, attributeName);\n const resolvedAttributeValue = parseTreeGridPositiveNumber(attributeValue);\n\n if (resolvedAttributeValue !== undefined) {\n return resolvedAttributeValue;\n }\n\n return parseTreeGridPositiveNumber(\n (row as unknown as Record<string, unknown>)[`${col}${attributeName}`],\n );\n};\n\n/**\n * TreeGrid 그룹 전용 헤더 셀 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isTreeGridGroupHeaderCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || row.Fixed !== 'Head') {\n return false;\n }\n\n const colSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'Span') ?? 1;\n\n if (colSpan <= 1) {\n return false;\n }\n\n const rowSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'RowSpan') ?? 1;\n\n return rowSpan === 1;\n};\n\n/**\n * TreeGrid 그룹 헤더 sort 버튼 비활성 셀 속성 적용\n * @param grid TreeGrid 인스턴스\n * @param gridId TreeGrid 인스턴스 ID\n * @param refreshRows 반영 후 헤더 행 refresh 여부\n */\nconst applyTreeGridGroupHeaderSortButtonAttributes = (\n grid: TGrid,\n gridId: string,\n refreshRows = false,\n) => {\n const applyStartedAt =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n const headerRows =\n typeof grid.GetFixedRows === 'function'\n ? grid.GetFixedRows().filter((row) => row.Fixed === 'Head')\n : [];\n const cols = typeof grid.GetCols === 'function' ? grid.GetCols() : [];\n\n if (!headerRows.length || !cols.length) {\n return;\n }\n\n const updatedRows = new Set<TRow>();\n let updatedCellCount = 0;\n\n if (typeof grid.StartUpdate === 'function') {\n grid.StartUpdate();\n }\n\n try {\n headerRows.forEach((row) => {\n cols.forEach((col) => {\n if (!isTreeGridGroupHeaderCell(grid, row, col)) {\n return;\n }\n\n if (grid.GetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE) === '') {\n return;\n }\n\n grid.SetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE, '', 0, 0);\n updatedRows.add(row);\n updatedCellCount += 1;\n });\n });\n } finally {\n if (typeof grid.EndUpdate === 'function') {\n grid.EndUpdate();\n }\n }\n\n if (!updatedRows.size) {\n return;\n }\n\n if (refreshRows) {\n updatedRows.forEach((row) => {\n if (typeof grid.RefreshRow === 'function') {\n grid.RefreshRow(row);\n }\n });\n }\n\n countTreeGridPerf(gridId, 'group header button attribute apply');\n measureTreeGridPerf(gridId, 'group header button attribute apply', applyStartedAt, {\n updatedCellCount,\n updatedRowCount: updatedRows.size,\n });\n};\n\n/**\n * TreeGrid Body 데이터 건수\n * @param bodyData TreeGrid Body 데이터\n */\nexport const getTreeGridBodyDataCount = <T,>(bodyData: OwpTreeGridBodyData<T>) => {\n return Array.isArray(bodyData) ? bodyData.length : 0;\n};\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\n/**\n * TreeGrid 추가 행 여부\n * @param row TreeGrid 행\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\n/**\n * TreeGrid 본문 표시 행 여부\n * @param row TreeGrid 행\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\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isEditableTreeGridCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 1;\n};\n\n/**\n * TreeGrid 셀 명시 색상 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst hasExplicitTreeGridCellColor = (grid: TGrid, row: TRow, col: string) => {\n const color = grid.GetAttribute(row, col, 'Color');\n\n return color !== undefined && color !== null && color !== '';\n};\n\n/**\n * TreeGrid 입력 셀 기본 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst getEditableTreeGridCellDefaultColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n editableCellBackgroundColorValue: number | undefined,\n) => {\n if (\n !row ||\n editableCellBackgroundColorValue === undefined ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return editableCellBackgroundColorValue;\n};\n\nconst matchesTreeGridRgbColor = (\n r: number,\n g: number,\n b: number,\n expected: readonly [number, number, number],\n) => {\n return r === expected[0] && g === expected[1] && b === expected[2];\n};\n\nconst isTreeGridSelectedCellState = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n const selected = grid.IsSelected(row, col);\n\n return selected !== 0 && selected !== false && selected !== undefined && selected !== null;\n};\n\nconst isTreeGridReadonlyHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 0;\n};\n\nconst isTreeGridPreviewHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 2;\n};\n\nconst resolveTreeGridStateBackgroundColor = ({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor,\n hoverCellBackgroundColor,\n}: {\n grid: TGrid;\n row: TRow | null | undefined;\n col: string;\n r: number;\n g: number;\n b: number;\n selectedCellBackgroundColor: string;\n hoverCellBackgroundColor: string;\n}) => {\n if (\n isTreeGridSelectedCellState(grid, row, col) &&\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_SELECTED_CELL_RGB)\n ) {\n return selectedCellBackgroundColor;\n }\n\n if (\n isTreeGridReadonlyHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_HOVER_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n if (\n isTreeGridPreviewHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_SOFT_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_DIM_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n return undefined;\n};\n\n/**\n * TreeGrid 표시 데이터 행 존재 여부\n * @param grid TreeGrid 인스턴스\n */\nexport const hasTreeGridDisplayDataRows = (grid: TGrid | null) => {\n if (!grid) {\n return false;\n }\n\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n let row = grid.GetFirst();\n\n while (row) {\n if (isDisplayTreeGridRow(row)) {\n return true;\n }\n\n row = grid.GetNext(row);\n }\n\n return false;\n }\n\n return Object.values(grid.Rows ?? {}).some((row) => {\n return isDisplayTreeGridRow(row);\n });\n};\n\n/**\n * TreeGrid Body 데이터 교체 후 재로드\n * @param grid TreeGrid 인스턴스\n * @param bodyData 새 Body 데이터\n * @param onReloadFinish 재로드 완료 콜백\n */\nexport const replaceTreeGridBodyData = <T,>(\n grid: TGrid,\n bodyData: OwpTreeGridBodyData<T>,\n onReloadFinish?: (code: number) => void,\n) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody(onReloadFinish);\n};\n\n/**\n * TreeGrid 이벤트 바인딩\n * @param options 이벤트 바인딩 옵션\n */\nexport const bindTreeGridEvents = <T,>({\n id,\n latestEventHandlersRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\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}: TreeGridEventBindingOptions<T>) => {\n const initialEventHandlers = latestEventHandlersRef.current;\n\n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n latestEventHandlersRef.current?.onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n window.TGSetEvent('OnRowAdded', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n\n if (typeof initialEventHandlers?.onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n latestEventHandlersRef.current?.onRowClick?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n x,\n y,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n latestEventHandlersRef.current?.onClickButton?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onRowDelete === 'function') {\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowDelete?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n deleteType,\n );\n });\n } else {\n window.TGSetEvent('OnRowDelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n if (typeof initialEventHandlers?.onRowUndelete === 'function') {\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowUndelete?.(grid, row as OwpTreeGridRowModel<T>);\n });\n } else {\n window.TGSetEvent('OnRowUndelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n window.TGSetEvent('OnGetDefaultColor', id, (grid, row, col) => {\n if (!highlightEditableCellsRef.current || !isDisplayTreeGridRow(row)) {\n return undefined;\n }\n\n return getEditableTreeGridCellDefaultColor(\n grid,\n row,\n col,\n editableCellBackgroundColorValueRef.current,\n );\n });\n window.TGSetEvent('OnGetColor', id, (grid, row, col, r, g, b, type) => {\n if (type) {\n return undefined;\n }\n\n return resolveTreeGridStateBackgroundColor({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor: selectedCellBackgroundColorRef.current,\n hoverCellBackgroundColor: hoverCellBackgroundColorRef.current,\n });\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n const columnEditRuleLookup = latestColumnEditRuleLookupRef.current;\n const resolvedEditValue = columnEditRuleLookup\n ? resolveTreeGridColumnEditValue(columnEditRuleLookup, col, value)\n : undefined;\n const nextValue = resolvedEditValue?.value;\n const resolvedValue = nextValue ?? value;\n\n if (resolvedEditValue?.invalidText) {\n enqueueSnackbar(resolvedEditValue.invalidText, { variant: 'warning' });\n }\n\n if (nextValue !== undefined) {\n grid.SetValue(row, col, nextValue, 1);\n }\n\n if (highlightChangedCellsRef.current && isDisplayTreeGridRow(row)) {\n highlightTreeGridCellById(id, {\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row as OwpTreeGridRowModel<T>, col, resolvedValue);\n });\n if (typeof initialEventHandlers?.onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n latestEventHandlersRef.current?.onSelect?.(selectedRows);\n }, 100),\n );\n }\n if (typeof initialEventHandlers?.onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n latestEventHandlersRef.current?.onSave?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n autoupdate,\n );\n });\n }\n window.TGSetEvent('OnSort', id, (grid, col) => {\n if (!col || !isTreeGridGroupHeaderCell(grid, grid.ARow, col)) {\n return undefined;\n }\n\n countTreeGridPerf(id, 'group header sort blocked');\n logTreeGridPerf(id, 'group header sort blocked', {\n rowId: grid.ARow?.id,\n col,\n });\n\n return -1;\n });\n window.TGSetEvent('OnRenderStart', id, (grid) => {\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, false);\n });\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n resetTreeGridColumnEditRulesState(columnEditRulesStateRef.current);\n syncTreeGridColumnEditRules(\n grid,\n latestColumnEditRuleLookupRef.current,\n columnEditRulesStateRef.current,\n );\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n appliedColumnEditRulesRef.current = latestColumnEditRulesRef.current;\n syncHasDisplayDataRows(grid);\n setIsTreeGridReady(true);\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, true);\n measureTreeGridPerf(id, 'TreeGrid init ready', treeGridInitStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(\n getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>,\n ),\n });\n treeGridInitStartedAtRef.current = null;\n latestEventHandlersRef.current?.onReady?.(grid);\n }\n }, 100),\n );\n};\n"],"names":["TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_SELECTED_CELL_RGB","TREE_GRID_READONLY_HOVER_CELL_RGB","TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB","TREE_GRID_PREVIEW_CELL_RGB","TREE_GRID_PREVIEW_CELL_SOFT_RGB","TREE_GRID_PREVIEW_CELL_DIM_RGB","TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE","isTreeGridInlineUrl","__name","url","treeGridInlineBlobUrlCache","resolveTreeGridInlineUrl","cachedUrl","meta","encodedData","match","mimeType","decodedData","bytes","index","blobUrl","appendNoCacheQuery","hashIndex","baseUrl","hashFragment","querySeparator","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","layoutData","width","height","languageId","getTreeGridTextResourceUrl","getTreeGridBodyData","grid","get","parseTreeGridPositiveNumber","value","trimmedValue","numericValue","getTreeGridHeaderCellSpanAttribute","row","col","attributeName","attributeValue","resolvedAttributeValue","isTreeGridGroupHeaderCell","applyTreeGridGroupHeaderSortButtonAttributes","gridId","refreshRows","applyStartedAt","headerRows","cols","updatedRows","updatedCellCount","countTreeGridPerf","measureTreeGridPerf","getTreeGridBodyDataCount","isVisibleTreeGridRow","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","editableCellBackgroundColorValue","matchesTreeGridRgbColor","r","g","b","expected","isTreeGridSelectedCellState","selected","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","selectedCellBackgroundColor","hoverCellBackgroundColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","editableCellBackgroundColorValueRef","changedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","syncHasDisplayDataRows","setIsTreeGridReady","initialEventHandlers","_b","debounce","x","y","event","deleteType","type","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","valueChangedHandler","selectedRows","autoupdate","logTreeGridPerf","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules"],"mappings":";;;;;;;;;;;AA+BO,MAAMA,KAA2C,KAElDC,KAA8B,CAAC,KAAK,KAAK,GAAG,GAC5CC,KAAoC,CAAC,KAAK,KAAK,GAAG,GAClDC,KAA6C,CAAC,KAAK,KAAK,GAAG,GAC3DC,KAA6B,CAAC,KAAK,KAAK,GAAG,GAC3CC,KAAkC,CAAC,KAAK,KAAK,GAAG,GAChDC,KAAiC,CAAC,KAAK,KAAK,GAAG,GAC/CC,IAA0C,UAkD1CC,IAAsB,gBAAAC,EAAA,CAACC,OACpBA,KAAA,gBAAAA,EAAK,WAAW,cAAYA,KAAA,gBAAAA,EAAK,WAAW,WADzB,wBAItBC,wBAAiC,IAAA,GAEjCC,KAA2B,gBAAAH,EAAA,CAACC,MAAiB;AACjD,MAAI,CAACA,KAAO,CAACA,EAAI,WAAW,OAAO;AACjC,WAAOA;AAGT,QAAMG,IAAYF,EAA2B,IAAID,CAAG;AAEpD,MAAIG;AACF,WAAOA;AAGT,MAAI;AACF,UAAM,CAACC,GAAMC,IAAc,EAAE,IAAIL,EAAI,MAAM,KAAK,CAAC,GAC3CM,IAAQ,4BAA4B,KAAKF,CAAI,GAC7CG,KAAWD,KAAA,gBAAAA,EAAQ,OAAM,4BACzBE,IAAcF,KAAA,QAAAA,EAAQ,KAAK,KAAKD,CAAW,IAAI,mBAAmBA,CAAW,GAC7EI,IAAQ,IAAI,WAAWD,EAAY,MAAM;AAE/C,aAASE,IAAQ,GAAGA,IAAQF,EAAY,QAAQE,KAAS;AACvD,MAAAD,EAAMC,CAAK,IAAIF,EAAY,WAAWE,CAAK;AAG7C,UAAMC,IAAU,IAAI,gBAAgB,IAAI,KAAK,CAACF,CAAK,GAAG,EAAE,MAAMF,EAAA,CAAU,CAAC;AAEzE,WAAAN,EAA2B,IAAID,GAAKW,CAAO,GAEpCA;AAAA,EACT,QAAQ;AACN,WAAOX;AAAA,EACT;AACF,GA9BiC,6BAgC3BY,IAAqB,gBAAAb,EAAA,CAACC,MAAgB;AAC1C,MAAI,CAACA,KAAOF,EAAoBE,CAAG;AACjC,WAAOE,GAAyBF,CAAG;AAGrC,QAAMa,IAAYb,EAAI,QAAQ,GAAG,GAC3B,CAACc,GAASC,CAAY,IAC1BF,KAAa,IAAI,CAACb,EAAI,MAAM,GAAGa,CAAS,GAAGb,EAAI,MAAMa,CAAS,CAAC,IAAI,CAACb,GAAK,EAAE,GACvEgB,IAAiBF,EAAQ,SAAS,GAAG,IAAI,MAAM;AAErD,SAAO,GAAGA,CAAO,GAAGE,CAAc,WAAW,KAAK,IAAA,CAAK,GAAGD,CAAY;AACxE,GAX2B,uBAarBE,KAAyB,gBAAAlB,EAAA,CAACmB,MACzBA,IAIDpB,EAAoBoB,CAAO,KAAKA,EAAQ,SAAS,QAAQ,IACpDN,EAAmBM,CAAO,IAI5BN,EAAmB,aAAwCM,CAAO,EAAE,IARlE,IAFoB,2BAazBC,KAA0B,gBAAApB,EAAA,CAC9BqB,GACAF,GACAG,MAEID,IACK,EAAE,KAAKH,GAAuBC,CAAO,EAAA,IAGvC,EAAE,MAAM,EAAE,MAAM,CAACI,GAAQD,CAAQ,IAAI,CAAA,IAAKA,CAAQ,IAAE,GAT7B,4BAgBnBE,KAAqC,gBAAAxB,EAAA,CAAK;AAAA,EACrD,IAAAyB;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAR;AAAA,EACA,UAAAG;AAAA,EACA,YAAAD;AAAA,EACA,OAAAO;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACF,OACS;AAAA,EACL,IAAAL;AAAA,EACA,QAAQE,IAAa,EAAE,MAAMA,EAAA,IAAe,EAAE,KAAKd,EAAmBa,KAAa,EAAE,EAAA;AAAA,EACrF,MAAMN,GAAwBC,GAAYF,GAASG,CAAQ;AAAA,EAC3D,MAAM;AAAA,IACJ,KAAKS,EAA2BD,CAAU;AAAA,EAAA;AAAA,EAE5C,OAAAF;AAAA,EACA,QAAAC;AAAA,EACA,OAAO;AAAA,IApBuC,uCAwB5CG,IAAsB,gBAAAhC,EAAA,CAACiC,MACpBC,GAAID,GAAM,uBAAuB,GADd,wBAUtBE,IAA8B,gBAAAnC,EAAA,CAACoC,MAAmB;AACtD,MAAI,OAAOA,KAAU;AACnB,WAAO,OAAO,SAASA,CAAK,KAAKA,IAAQ,IAAIA,IAAQ;AAGvD,MAAI,OAAOA,KAAU;AACnB;AAGF,QAAMC,IAAeD,EAAM,KAAA;AAE3B,MAAI,CAACC;AACH;AAGF,QAAMC,IAAe,OAAOD,CAAY;AAExC,SAAO,OAAO,SAASC,CAAY,KAAKA,IAAe,IAAIA,IAAe;AAC5E,GAlBoC,gCA2B9BC,IAAqC,gBAAAvC,EAAA,CACzCiC,GACAO,GACAC,GACAC,MACG;AACH,MAAI,CAACF,KAAO,CAACC;AACX;AAGF,QAAME,IAAiBV,EAAK,aAAaO,GAAKC,GAAKC,CAAa,GAC1DE,IAAyBT,EAA4BQ,CAAc;AAEzE,SAAIC,MAA2B,SACtBA,IAGFT;AAAA,IACJK,EAA2C,GAAGC,CAAG,GAAGC,CAAa,EAAE;AAAA,EAAA;AAExE,GApB2C,uCA4BrCG,IAA4B,gBAAA7C,EAAA,CAACiC,GAAaO,GAA8BC,MACxE,CAACD,KAAO,CAACC,KAAOD,EAAI,UAAU,WAIlBD,EAAmCN,GAAMO,GAAKC,GAAK,MAAM,KAAK,MAE/D,IACN,MAGOF,EAAmCN,GAAMO,GAAKC,GAAK,SAAS,KAAK,OAE9D,GAba,8BAsB5BK,IAA+C,gBAAA9C,EAAA,CACnDiC,GACAc,GACAC,IAAc,OACX;AACH,QAAMC,IACJ,OAAO,cAAgB,MAAc,YAAY,IAAA,IAAQ,KAAK,IAAA,GAC1DC,IACJ,OAAOjB,EAAK,gBAAiB,aACzBA,EAAK,aAAA,EAAe,OAAO,CAACO,MAAQA,EAAI,UAAU,MAAM,IACxD,CAAA,GACAW,IAAO,OAAOlB,EAAK,WAAY,aAAaA,EAAK,QAAA,IAAY,CAAA;AAEnE,MAAI,CAACiB,EAAW,UAAU,CAACC,EAAK;AAC9B;AAGF,QAAMC,wBAAkB,IAAA;AACxB,MAAIC,IAAmB;AAEvB,EAAI,OAAOpB,EAAK,eAAgB,cAC9BA,EAAK,YAAA;AAGP,MAAI;AACF,IAAAiB,EAAW,QAAQ,CAACV,MAAQ;AAC1B,MAAAW,EAAK,QAAQ,CAACV,MAAQ;AACpB,QAAKI,EAA0BZ,GAAMO,GAAKC,CAAG,KAIzCR,EAAK,aAAaO,GAAKC,GAAK3C,CAAuC,MAAM,OAI7EmC,EAAK,aAAaO,GAAKC,GAAK3C,GAAyC,IAAI,GAAG,CAAC,GAC7EsD,EAAY,IAAIZ,CAAG,GACnBa,KAAoB;AAAA,MACtB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,UAAA;AACE,IAAI,OAAOpB,EAAK,aAAc,cAC5BA,EAAK,UAAA;AAAA,EAET;AAEA,EAAKmB,EAAY,SAIbJ,KACFI,EAAY,QAAQ,CAACZ,MAAQ;AAC3B,IAAI,OAAOP,EAAK,cAAe,cAC7BA,EAAK,WAAWO,CAAG;AAAA,EAEvB,CAAC,GAGHc,EAAkBP,GAAQ,qCAAqC,GAC/DQ,EAAoBR,GAAQ,uCAAuCE,GAAgB;AAAA,IACjF,kBAAAI;AAAA,IACA,iBAAiBD,EAAY;AAAA,EAAA,CAC9B;AACH,GA/DqD,iDAqExCI,KAA2B,gBAAAxD,EAAA,CAAKsB,MACpC,MAAM,QAAQA,CAAQ,IAAIA,EAAS,SAAS,GADb,6BAIlCmC,KAAuB,gBAAAzD,EAAA,CAACwC,MAAiC;AAC7D,QAAMkB,IAAWlB,KAAA,gBAAAA,EAAsC;AAEvD,SAAO,CAAC,CAACA,KAAOkB,MAAY,KAAKA,MAAY,MAASA,MAAY;AACpE,GAJ6B,yBAUvBC,KAAqB,gBAAA3D,EAAA,CAACwC,MAAiC;AAC3D,QAAMoB,IAASpB,KAAA,gBAAAA,EAAoC;AAEnD,SAAO,CAAC,CAACA,KAAOoB,MAAU,KAAKA,MAAU,MAASA,MAAU,OAAOA,MAAU;AAC/E,GAJ2B,uBAUrBC,IAAuB,gBAAA7D,EAAA,CAACwC,MACxB,CAACA,KAAOA,EAAI,UAAU,UAAU,CAACiB,GAAqBjB,CAAG,IACpD,KAGFA,EAAI,SAAS,UAAUmB,GAAmBnB,CAAG,GALzB,yBAcvBsB,KAAyB,gBAAA9D,EAAA,CAACiC,GAAaO,GAA8BC,MACrE,CAACD,KAAO,CAACC,KAAO,CAACoB,EAAqBrB,CAAG,IACpC,KAGFP,EAAK,QAAQO,GAAKC,CAAG,MAAM,GALL,2BAczBsB,KAA+B,gBAAA/D,EAAA,CAACiC,GAAaO,GAAWC,MAAgB;AAC5E,QAAMuB,IAAQ/B,EAAK,aAAaO,GAAKC,GAAK,OAAO;AAEjD,SAA8BuB,KAAU,QAAQA,MAAU;AAC5D,GAJqC,iCAY/BC,KAAsC,gBAAAjE,EAAA,CAC1CiC,GACAO,GACAC,GACAyB,MACG;AACH,MACE,GAAC1B,KACD0B,MAAqC,UACrC,CAACJ,GAAuB7B,GAAMO,GAAKC,CAAG,KACtCsB,GAA6B9B,GAAMO,GAAKC,CAAG;AAK7C,WAAOyB;AACT,GAhB4C,wCAkBtCC,IAA0B,gBAAAnE,EAAA,CAC9BoE,GACAC,GACAC,GACAC,MAEOH,MAAMG,EAAS,CAAC,KAAKF,MAAME,EAAS,CAAC,KAAKD,MAAMC,EAAS,CAAC,GANnC,4BAS1BC,KAA8B,gBAAAxE,EAAA,CAACiC,GAAaO,GAA8BC,MAAgB;AAC9F,MAAI,CAACD,KAAO,CAACC,KAAO,CAACoB,EAAqBrB,CAAG;AAC3C,WAAO;AAGT,QAAMiC,IAAWxC,EAAK,WAAWO,GAAKC,CAAG;AAEzC,SAAOgC,MAAa,KAAKA,MAAa,MAASA,MAAa,UAAaA,MAAa;AACxF,GARoC,gCAU9BC,KAAqC,gBAAA1E,EAAA,CACzCiC,GACAO,GACAC,MAEI,CAACD,KAAO,CAACC,KAAO,CAACoB,EAAqBrB,CAAG,KAAKP,EAAK,SAASO,KAAOP,EAAK,SAASQ,IAC5E,KAGFR,EAAK,QAAQO,GAAKC,CAAG,MAAM,GATO,uCAYrCkC,KAAoC,gBAAA3E,EAAA,CACxCiC,GACAO,GACAC,MAEI,CAACD,KAAO,CAACC,KAAO,CAACoB,EAAqBrB,CAAG,KAAKP,EAAK,SAASO,KAAOP,EAAK,SAASQ,IAC5E,KAGFR,EAAK,QAAQO,GAAKC,CAAG,MAAM,GATM,sCAYpCmC,KAAsC,gBAAA5E,EAAA,CAAC;AAAA,EAC3C,MAAAiC;AAAA,EACA,KAAAO;AAAA,EACA,KAAAC;AAAA,EACA,GAAA2B;AAAA,EACA,GAAAC;AAAA,EACA,GAAAC;AAAA,EACA,6BAAAO;AAAA,EACA,0BAAAC;AACF,MASM;AACJ,MACEN,GAA4BvC,GAAMO,GAAKC,CAAG,KAC1C0B,EAAwBC,GAAGC,GAAGC,GAAG9E,EAA2B;AAE5D,WAAOqF;AAWT,MAPEH,GAAmCzC,GAAMO,GAAKC,CAAG,MAChD0B,EAAwBC,GAAGC,GAAGC,GAAG7E,EAAiC,KACjE0E,EAAwBC,GAAGC,GAAGC,GAAG5E,EAA0C,MAM7EiF,GAAkC1C,GAAMO,GAAKC,CAAG,MAC/C0B,EAAwBC,GAAGC,GAAGC,GAAG3E,EAA0B,KAC1DwE,EAAwBC,GAAGC,GAAGC,GAAG1E,EAA+B,KAChEuE,EAAwBC,GAAGC,GAAGC,GAAGzE,EAA8B;AAEjE,WAAOiF;AAIX,GA5C4C,wCAkD/BC,KAA6B,gBAAA/E,EAAA,CAACiC,MAAuB;AAChE,MAAI,CAACA;AACH,WAAO;AAGT,MAAI,OAAOA,EAAK,YAAa,cAAc,OAAOA,EAAK,WAAY,YAAY;AAC7E,QAAIO,IAAMP,EAAK,SAAA;AAEf,WAAOO,KAAK;AACV,UAAIqB,EAAqBrB,CAAG;AAC1B,eAAO;AAGT,MAAAA,IAAMP,EAAK,QAAQO,CAAG;AAAA,IACxB;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,OAAOP,EAAK,QAAQ,CAAA,CAAE,EAAE,KAAK,CAACO,MACnCqB,EAAqBrB,CAAG,CAChC;AACH,GAtB0C,+BA8B7BwC,KAA0B,gBAAAhF,EAAA,CACrCiC,GACAX,GACA2D,MACG;;AAEH,QAAMC,KAAoBC,IAAAlD,EAAK,SAAL,gBAAAkD,EAAW;AAGrC,EAAAlD,EAAK,KAAK,OAAO;AAAA,IACf,GAAGiD;AAAA,IACH,MAAM,EAAE,MAAM,CAAC5D,KAAY,CAAA,CAAE,EAAA;AAAA,IAC7B,KAAK;AAAA,EAAA,GAGPW,EAAK,WAAWgD,CAAc;AAChC,GAhBuC,4BAsB1BG,KAAqB,gBAAApF,EAAA,CAAK;AAAA,EACrC,IAAAyB;AAAA,EACA,wBAAA4D;AAAA,EACA,2BAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,qCAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,4BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,oBAAAC;AACF,MAAsC;AACpC,QAAMC,IAAuBnB,EAAuB;AAEpD,SAAO,WAAW,YAAY5D,GAAI,CAACQ,GAAMO,MAAQ;;AAC/C,IAAAA,EAAI,UAAU,GACdA,EAAI,YAAY,IAEhBiE,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,aAAhC,QAAAsB,EAAA,KAAAtB,GAA2ClD,GAAMO;AAAA,EACnD,CAAC,GACD,OAAO,WAAW,cAAcf,GAAI,CAACQ,MAAS;AAC5C,IAAAqE,EAAuBrE,CAAI;AAAA,EAC7B,CAAC,GAEG,QAAOuE,KAAA,gBAAAA,EAAsB,eAAe,cAC9C,OAAO;AAAA,IACL;AAAA,IACA/E;AAAA,IACAiF,EAAS,CAACzE,GAAMO,GAAKC,GAAKkE,GAAGC,GAAGC,MAAU;;AACxC,OAAAJ,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,eAAhC,QAAAsB,EAAA;AAAA,QAAAtB;AAAA,QACElD;AAAA,QACAO;AAAA,QACAC;AAAA,QACAkE;AAAA,QACAC;AAAA,QACAC;AAAA;AAAA,IAEJ,GAAG,GAAG;AAAA,EAAA,GAIN,QAAOL,KAAA,gBAAAA,EAAsB,kBAAkB,cACjD,OAAO;AAAA,IACL;AAAA,IACA/E;AAAA,IACAiF,EAAS,CAACzE,GAAMO,GAAKC,GAAKoE,MAAU;;AAClC,OAAAJ,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,kBAAhC,QAAAsB,EAAA;AAAA,QAAAtB;AAAA,QACElD;AAAA,QACAO;AAAA,QACAC;AAAA,QACAoE;AAAA;AAAA,IAEJ,GAAG,GAAG;AAAA,EAAA,GAIN,QAAOL,KAAA,gBAAAA,EAAsB,gBAAgB,aAC/C,OAAO,WAAW,eAAe/E,GAAI,CAACQ,GAAMO,GAAKsE,MAAe;;AAC9D,IAAAR,EAAuBrE,CAAI,IAC3BwE,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,gBAAhC,QAAAsB,EAAA;AAAA,MAAAtB;AAAA,MACElD;AAAA,MACAO;AAAA,MACAsE;AAAA;AAAA,EAEJ,CAAC,IAED,OAAO,WAAW,eAAerF,GAAI,CAACQ,MAAS;AAC7C,IAAAqE,EAAuBrE,CAAI;AAAA,EAC7B,CAAC,GAEC,QAAOuE,KAAA,gBAAAA,EAAsB,kBAAkB,aACjD,OAAO,WAAW,iBAAiB/E,GAAI,CAACQ,GAAMO,MAAQ;;AACpD,IAAA8D,EAAuBrE,CAAI,IAC3BwE,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,kBAAhC,QAAAsB,EAAA,KAAAtB,GAAgDlD,GAAMO;AAAA,EACxD,CAAC,IAED,OAAO,WAAW,iBAAiBf,GAAI,CAACQ,MAAS;AAC/C,IAAAqE,EAAuBrE,CAAI;AAAA,EAC7B,CAAC,GAEH,OAAO,WAAW,qBAAqBR,GAAI,CAACQ,GAAMO,GAAKC,MAAQ;AAC7D,QAAI,GAAC6C,EAA0B,WAAW,CAACzB,EAAqBrB,CAAG;AAInE,aAAOyB;AAAA,QACLhC;AAAA,QACAO;AAAA,QACAC;AAAA,QACA+C,EAAoC;AAAA,MAAA;AAAA,EAExC,CAAC,GACD,OAAO,WAAW,cAAc/D,GAAI,CAACQ,GAAMO,GAAKC,GAAK2B,GAAGC,GAAGC,GAAGyC,MAAS;AACrE,QAAI,CAAAA;AAIJ,aAAOnC,GAAoC;AAAA,QACzC,MAAA3C;AAAA,QACA,KAAAO;AAAA,QACA,KAAAC;AAAA,QACA,GAAA2B;AAAA,QACA,GAAAC;AAAA,QACA,GAAAC;AAAA,QACA,6BAA6BoB,EAA+B;AAAA,QAC5D,0BAA0BC,EAA4B;AAAA,MAAA,CACvD;AAAA,EACH,CAAC,GACD,OAAO,WAAW,uBAAuBlE,GAAI,CAACQ,GAAMO,GAAKC,GAAKL,MAAU;;AACtE,UAAM4E,IAAuBd,EAA8B,SACrDe,IAAoBD,IACtBE,EAA+BF,GAAsBvE,GAAKL,CAAK,IAC/D,QACE+E,IAAYF,KAAA,gBAAAA,EAAmB,OAC/BG,IAAgBD,KAAa/E;AAEnC,IAAI6E,KAAA,QAAAA,EAAmB,eACrBI,EAAgBJ,EAAkB,aAAa,EAAE,SAAS,WAAW,GAGnEE,MAAc,UAChBlF,EAAK,SAASO,GAAKC,GAAK0E,GAAW,CAAC,GAGlC5B,EAAyB,WAAW1B,EAAqBrB,CAAG,KAC9D8E,EAA0B7F,GAAI;AAAA,MAC5B,KAAAe;AAAA,MACA,KAAAC;AAAA,MACA,iBAAiBgD,EAA8B;AAAA,IAAA,CAChD;AAGH,UAAM8B,MACJpC,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,0BAChCsB,IAAApB,EAAuB,YAAvB,gBAAAoB,EAAgC;AAElC,IAAAc,KAAA,QAAAA,EAAsBtF,GAAMO,GAA+BC,GAAK2E;AAAA,EAClE,CAAC,GACG,QAAOZ,KAAA,gBAAAA,EAAsB,aAAa,cAC5C,OAAO;AAAA,IACL;AAAA,IACA/E;AAAA,IACAiF,EAAS,CAACzE,MAAS;;AACjB,YAAMuF,IAAgBvF,EAAK,WAAA,KAAgB,CAAA;AAC3C,OAAAwE,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,aAAhC,QAAAsB,EAAA,KAAAtB,GAA2CqC;AAAA,IAC7C,GAAG,GAAG;AAAA,EAAA,GAGN,QAAOhB,KAAA,gBAAAA,EAAsB,WAAW,cAC1C,OAAO,WAAW,UAAU/E,GAAI,CAACQ,GAAMO,GAAKiF,MAAe;;AACzD,KAAAhB,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,WAAhC,QAAAsB,EAAA;AAAA,MAAAtB;AAAA,MACElD;AAAA,MACAO;AAAA,MACAiF;AAAA;AAAA,EAEJ,CAAC,GAEH,OAAO,WAAW,UAAUhG,GAAI,CAACQ,GAAMQ,MAAQ;;AAC7C,QAAI,GAACA,KAAO,CAACI,EAA0BZ,GAAMA,EAAK,MAAMQ,CAAG;AAI3D,aAAAa,EAAkB7B,GAAI,2BAA2B,GACjDiG,GAAgBjG,GAAI,6BAA6B;AAAA,QAC/C,QAAO0D,IAAAlD,EAAK,SAAL,gBAAAkD,EAAW;AAAA,QAClB,KAAA1C;AAAA,MAAA,CACD,GAEM;AAAA,EACT,CAAC,GACD,OAAO,WAAW,iBAAiBhB,GAAI,CAACQ,MAAS;AAC/C,IAAAa,EAA6Cb,GAAMR,GAAI,EAAK;AAAA,EAC9D,CAAC,GAED,OAAO;AAAA,IACL;AAAA,IACAA;AAAA,IACAiF,EAAS,CAACzE,MAAS;;AACjB,UAAI,CAACoE,EAA2B,SAAS;AACvC,cAAMsB,IAAwB7B,EAAyB;AAEvD,QAAAO,EAA2B,UAAU,IACrCuB,EAA0B3F,GAAM0F,CAAqB,GACrDE,EAAkCzB,EAAwB,OAAO,GACjE0B;AAAA,UACE7F;AAAA,UACAiE,EAA8B;AAAA,UAC9BE,EAAwB;AAAA,QAAA,GAE1BR,EAAoB,UAAU3D,GAC9B8D,EAA0B,UAAU4B,GACpC3B,EAAuB,UAAUhE,EAAoBC,CAAI,GACzDkE,EAA0B,UAAUF,EAAyB,SAC7DK,EAAuBrE,CAAI,GAC3BsE,EAAmB,EAAI,GACvBzD,EAA6Cb,GAAMR,GAAI,EAAI,GAC3D8B,EAAoB9B,GAAI,uBAAuBoE,EAAyB,SAAS;AAAA,UAC/E,cAAcrC;AAAA,YACZxB,EAAoBC,CAAI;AAAA,UAAA;AAAA,QAC1B,CACD,GACD4D,EAAyB,UAAU,OACnCY,KAAAtB,IAAAE,EAAuB,YAAvB,gBAAAF,EAAgC,YAAhC,QAAAsB,EAAA,KAAAtB,GAA0ClD;AAAA,MAC5C;AAAA,IACF,GAAG,GAAG;AAAA,EAAA;AAEV,GAxNkC;"}
|
|
1
|
+
{"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import {\n getTreeGridTextResourceUrl,\n TREEGRID_CELL_HIGHLIGHT_CLASS,\n} from '@/constants/treeGrid';\nimport {\n appendTreeGridAddedRowHighlightColumn,\n getTreeGridAddedRowHighlightColumns,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n} from '@/utils/treeGridUtil';\nimport { debounce, get, isEmpty } from 'es-toolkit/compat';\nimport { enqueueSnackbar } from 'notistack';\nimport {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {\n OwpTreeGridBodyData,\n OwpTreeGridColumnEditRule,\n OwpTreeGridLayoutConfig,\n OwpTreeGridProps,\n OwpTreeGridRowModel,\n OwpTreeGridSelectedRows,\n} from '../OwpTreeGrid';\nimport { applyTreeGridLayoutToGrid } from './treeGridLayout';\nimport {\n resetTreeGridColumnEditRulesState,\n resolveTreeGridColumnEditValue,\n syncTreeGridColumnEditRules,\n type TreeGridColumnEditRuleLookup,\n type TreeGridColumnEditRulesState,\n} from './treeGridColumnEditRules';\nimport {\n countTreeGridPerf,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './utils/perf';\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\nconst TREE_GRID_SELECTED_CELL_RGB = [255, 255, 166] as const;\nconst TREE_GRID_READONLY_HOVER_CELL_RGB = [240, 240, 240] as const;\nconst TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB = [248, 248, 248] as const;\nconst TREE_GRID_PREVIEW_CELL_RGB = [255, 255, 255] as const;\nconst TREE_GRID_PREVIEW_CELL_SOFT_RGB = [255, 255, 254] as const;\nconst TREE_GRID_PREVIEW_CELL_DIM_RGB = [242, 242, 242] as const;\nconst TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE = 'Button';\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\ntype TreeGridBeforeRowUndeleteAction = 'cancel' | 'remove' | 'undelete';\ntype TreeGridBeforeRowUndeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n) =>\n | TreeGridBeforeRowUndeleteAction\n | undefined\n | Promise<TreeGridBeforeRowUndeleteAction | undefined>;\n\nexport type TreeGridEventHandlers<T> = Pick<\n OwpTreeGridProps<T>,\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n> & {\n onBeforeRowUndelete?: TreeGridBeforeRowUndeleteHandler<T>;\n};\n\nexport type TreeGridEventBindingOptions<T> = Pick<OwpTreeGridProps<T>, 'id'> & {\n latestEventHandlersRef: RefObject<TreeGridEventHandlers<T>>;\n highlightEditableCellsRef: RefObject<boolean>;\n highlightChangedCellsRef: RefObject<boolean>;\n syncDeletedRowCanEditRef: RefObject<boolean>;\n editableCellBackgroundColorValueRef: RefObject<number | undefined>;\n changedCellBackgroundColorRef: RefObject<string>;\n selectedCellBackgroundColorRef: RefObject<string>;\n hoverCellBackgroundColorRef: RefObject<string>;\n treeGridInstanceRef: RefObject<TGrid>;\n treeGridInitStartedAtRef: RefObject<number | null>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n latestColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n latestColumnEditRuleLookupRef: RefObject<TreeGridColumnEditRuleLookup | undefined>;\n appliedColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n columnEditRulesStateRef: RefObject<TreeGridColumnEditRulesState>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n syncHasDisplayDataRows: (grid: TGrid | null) => void;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\nconst isTreeGridInlineUrl = (url?: string) => {\n return url?.startsWith('data:') || url?.startsWith('blob:');\n};\n\nconst treeGridInlineBlobUrlCache = new Map<string, string>();\n\nconst resolveTreeGridInlineUrl = (url?: string) => {\n if (!url || !url.startsWith('data:')) {\n return url;\n }\n\n const cachedUrl = treeGridInlineBlobUrlCache.get(url);\n\n if (cachedUrl) {\n return cachedUrl;\n }\n\n try {\n const [meta, encodedData = ''] = url.split(',', 2);\n const match = /^data:([^;]*)(;base64)?$/i.exec(meta);\n const mimeType = match?.[1] || 'application/octet-stream';\n const decodedData = match?.[2] ? atob(encodedData) : decodeURIComponent(encodedData);\n const bytes = new Uint8Array(decodedData.length);\n\n for (let index = 0; index < decodedData.length; index += 1) {\n bytes[index] = decodedData.charCodeAt(index);\n }\n\n const blobUrl = URL.createObjectURL(new Blob([bytes], { type: mimeType }));\n\n treeGridInlineBlobUrlCache.set(url, blobUrl);\n\n return blobUrl;\n } catch {\n return url;\n }\n};\n\nconst appendNoCacheQuery = (url: string) => {\n if (!url || isTreeGridInlineUrl(url)) {\n return resolveTreeGridInlineUrl(url);\n }\n\n const hashIndex = url.indexOf('#');\n const [baseUrl, hashFragment] =\n hashIndex >= 0 ? [url.slice(0, hashIndex), url.slice(hashIndex)] : [url, ''];\n const querySeparator = baseUrl.includes('?') ? '&' : '?';\n\n return `${baseUrl}${querySeparator}noCache=${Date.now()}${hashFragment}`;\n};\n\ntype TreeGridDeletedRowStateSyncOptions = {\n canEdit?: 1 | 2;\n highlightColumns?: readonly string[];\n highlightBackgroundColor?: string;\n};\n\n/**\n * 삭제 상태 변경 행 시각 상태 동기화\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param options 동기화 옵션\n */\nconst syncTreeGridDeletedRowState = (\n grid: TGrid | null | undefined,\n row: TRow,\n options: TreeGridDeletedRowStateSyncOptions,\n) => {\n if (!grid) {\n return;\n }\n\n const canEdit = options.canEdit;\n const highlightColumns = options.highlightColumns ?? [];\n const highlightBackgroundColor = options.highlightBackgroundColor;\n\n if (canEdit === undefined && !highlightColumns.length) {\n return;\n }\n\n if (typeof grid.StartUpdate === 'function') {\n grid.StartUpdate();\n }\n\n try {\n if (canEdit !== undefined) {\n row.CanEdit = canEdit;\n }\n\n highlightColumns.forEach((col) => {\n if (!col) {\n return;\n }\n\n grid.SetValue(\n row,\n `${col}Class`,\n highlightBackgroundColor ? TREEGRID_CELL_HIGHLIGHT_CLASS : '',\n 0,\n );\n grid.SetValue(row, `${col}Color`, highlightBackgroundColor ?? '', 0);\n });\n } finally {\n if (typeof grid.EndUpdate === 'function') {\n grid.EndUpdate();\n }\n }\n\n if (typeof grid.RefreshRow === 'function') {\n grid.RefreshRow(row);\n }\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n if (!dataUrl) {\n return '';\n }\n\n if (isTreeGridInlineUrl(dataUrl) || dataUrl.includes('assets')) {\n return appendNoCacheQuery(dataUrl);\n }\n\n // @ts-expect-error - API base URL env is provided by host app\n return appendNoCacheQuery(`${import.meta.env.VITE_API_BASE_URL}/${dataUrl}`);\n};\n\nconst isTreeGridPromiseLike = <T,>(value: unknown): value is PromiseLike<T> => {\n return (\n (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n typeof (value as PromiseLike<T>).then === 'function'\n );\n};\n\n/**\n * 삭제 상태 행 재클릭 후속 처리\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param action 후속 액션\n * @param syncHasDisplayDataRows 표시 행 동기화 콜백\n */\nconst applyTreeGridBeforeRowUndeleteAction = (\n grid: TGrid | null | undefined,\n row: TRow,\n action: TreeGridBeforeRowUndeleteAction | undefined,\n syncHasDisplayDataRows: (grid: TGrid | null) => void,\n) => {\n if (!grid || action === 'cancel') {\n return;\n }\n\n if (action === 'remove') {\n grid.RemoveRow(row);\n syncHasDisplayDataRows(grid);\n return;\n }\n\n grid.DeleteRowT(row, 3);\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\n/**\n * TreeGrid 초기화 옵션 생성\n * @param input 초기화 입력값\n */\nexport const buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: layoutData ? { Data: layoutData } : { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\ntype TreeGridCellSpanAttribute = 'Span' | 'RowSpan';\n\n/**\n * TreeGrid span 속성 숫자 변환\n * @param value span 속성 원본값\n */\nconst parseTreeGridPositiveNumber = (value: unknown) => {\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? value : undefined;\n }\n\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const trimmedValue = value.trim();\n\n if (!trimmedValue) {\n return undefined;\n }\n\n const numericValue = Number(trimmedValue);\n\n return Number.isFinite(numericValue) && numericValue > 0 ? numericValue : undefined;\n};\n\n/**\n * TreeGrid 헤더 셀 span 속성 조회\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param attributeName span 속성 이름\n */\nconst getTreeGridHeaderCellSpanAttribute = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n attributeName: TreeGridCellSpanAttribute,\n) => {\n if (!row || !col) {\n return undefined;\n }\n\n const attributeValue = grid.GetAttribute(row, col, attributeName);\n const resolvedAttributeValue = parseTreeGridPositiveNumber(attributeValue);\n\n if (resolvedAttributeValue !== undefined) {\n return resolvedAttributeValue;\n }\n\n return parseTreeGridPositiveNumber(\n (row as unknown as Record<string, unknown>)[`${col}${attributeName}`],\n );\n};\n\n/**\n * TreeGrid 그룹 전용 헤더 셀 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isTreeGridGroupHeaderCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || row.Fixed !== 'Head') {\n return false;\n }\n\n const colSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'Span') ?? 1;\n\n if (colSpan <= 1) {\n return false;\n }\n\n const rowSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'RowSpan') ?? 1;\n\n return rowSpan === 1;\n};\n\n/**\n * TreeGrid 그룹 헤더 sort 버튼 비활성 셀 속성 적용\n * @param grid TreeGrid 인스턴스\n * @param gridId TreeGrid 인스턴스 ID\n * @param refreshRows 반영 후 헤더 행 refresh 여부\n */\nconst applyTreeGridGroupHeaderSortButtonAttributes = (\n grid: TGrid,\n gridId: string,\n refreshRows = false,\n) => {\n const applyStartedAt =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n const headerRows =\n typeof grid.GetFixedRows === 'function'\n ? grid.GetFixedRows().filter((row) => row.Fixed === 'Head')\n : [];\n const cols = typeof grid.GetCols === 'function' ? grid.GetCols() : [];\n\n if (!headerRows.length || !cols.length) {\n return;\n }\n\n const updatedRows = new Set<TRow>();\n let updatedCellCount = 0;\n\n if (typeof grid.StartUpdate === 'function') {\n grid.StartUpdate();\n }\n\n try {\n headerRows.forEach((row) => {\n cols.forEach((col) => {\n if (!isTreeGridGroupHeaderCell(grid, row, col)) {\n return;\n }\n\n if (grid.GetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE) === '') {\n return;\n }\n\n grid.SetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE, '', 0, 0);\n updatedRows.add(row);\n updatedCellCount += 1;\n });\n });\n } finally {\n if (typeof grid.EndUpdate === 'function') {\n grid.EndUpdate();\n }\n }\n\n if (!updatedRows.size) {\n return;\n }\n\n if (refreshRows) {\n updatedRows.forEach((row) => {\n if (typeof grid.RefreshRow === 'function') {\n grid.RefreshRow(row);\n }\n });\n }\n\n countTreeGridPerf(gridId, 'group header button attribute apply');\n measureTreeGridPerf(gridId, 'group header button attribute apply', applyStartedAt, {\n updatedCellCount,\n updatedRowCount: updatedRows.size,\n });\n};\n\n/**\n * TreeGrid Body 데이터 건수\n * @param bodyData TreeGrid Body 데이터\n */\nexport const getTreeGridBodyDataCount = <T,>(bodyData: OwpTreeGridBodyData<T>) => {\n return Array.isArray(bodyData) ? bodyData.length : 0;\n};\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\n/**\n * TreeGrid 추가 행 여부\n * @param row TreeGrid 행\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\n/**\n * TreeGrid 본문 표시 행 여부\n * @param row TreeGrid 행\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\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isEditableTreeGridCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 1;\n};\n\n/**\n * TreeGrid 셀 명시 색상 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst hasExplicitTreeGridCellColor = (grid: TGrid, row: TRow, col: string) => {\n const color = grid.GetAttribute(row, col, 'Color');\n\n return color !== undefined && color !== null && color !== '';\n};\n\n/**\n * TreeGrid 입력 셀 기본 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst getEditableTreeGridCellDefaultColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n editableCellBackgroundColorValue: number | undefined,\n) => {\n if (\n !row ||\n editableCellBackgroundColorValue === undefined ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return editableCellBackgroundColorValue;\n};\n\nconst matchesTreeGridRgbColor = (\n r: number,\n g: number,\n b: number,\n expected: readonly [number, number, number],\n) => {\n return r === expected[0] && g === expected[1] && b === expected[2];\n};\n\nconst isTreeGridSelectedCellState = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n const selected = grid.IsSelected(row, col);\n\n return selected !== 0 && selected !== false && selected !== undefined && selected !== null;\n};\n\nconst isTreeGridReadonlyHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 0;\n};\n\nconst isTreeGridPreviewHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 2;\n};\n\nconst resolveTreeGridStateBackgroundColor = ({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor,\n hoverCellBackgroundColor,\n}: {\n grid: TGrid;\n row: TRow | null | undefined;\n col: string;\n r: number;\n g: number;\n b: number;\n selectedCellBackgroundColor: string;\n hoverCellBackgroundColor: string;\n}) => {\n if (\n isTreeGridSelectedCellState(grid, row, col) &&\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_SELECTED_CELL_RGB)\n ) {\n return selectedCellBackgroundColor;\n }\n\n if (\n isTreeGridReadonlyHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_HOVER_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n if (\n isTreeGridPreviewHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_SOFT_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_DIM_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n return undefined;\n};\n\n/**\n * TreeGrid 표시 데이터 행 존재 여부\n * @param grid TreeGrid 인스턴스\n */\nexport const hasTreeGridDisplayDataRows = (grid: TGrid | null) => {\n if (!grid) {\n return false;\n }\n\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n let row = grid.GetFirst();\n\n while (row) {\n if (isDisplayTreeGridRow(row)) {\n return true;\n }\n\n row = grid.GetNext(row);\n }\n\n return false;\n }\n\n return Object.values(grid.Rows ?? {}).some((row) => {\n return isDisplayTreeGridRow(row);\n });\n};\n\n/**\n * TreeGrid Body 데이터 교체 후 재로드\n * @param grid TreeGrid 인스턴스\n * @param bodyData 새 Body 데이터\n * @param onReloadFinish 재로드 완료 콜백\n */\nexport const replaceTreeGridBodyData = <T,>(\n grid: TGrid,\n bodyData: OwpTreeGridBodyData<T>,\n onReloadFinish?: (code: number) => void,\n) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody(onReloadFinish);\n};\n\n/**\n * TreeGrid 이벤트 바인딩\n * @param options 이벤트 바인딩 옵션\n */\nexport const bindTreeGridEvents = <T,>({\n id,\n latestEventHandlersRef,\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}: TreeGridEventBindingOptions<T>) => {\n const initialEventHandlers = latestEventHandlersRef.current;\n\n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n latestEventHandlersRef.current?.onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n window.TGSetEvent('OnRowAdded', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n window.TGSetEvent('OnRowRemove', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n window.TGSetEvent('OnCanRowDelete', id, (grid, row, type) => {\n if (type !== 3) {\n return type;\n }\n\n const beforeRowUndeleteHandler = latestEventHandlersRef.current?.onBeforeRowUndelete;\n\n if (typeof beforeRowUndeleteHandler !== 'function') {\n return type;\n }\n\n const scheduleAction = (action: TreeGridBeforeRowUndeleteAction | undefined) => {\n window.setTimeout(() => {\n applyTreeGridBeforeRowUndeleteAction(\n treeGridInstanceRef.current ?? grid,\n row,\n action,\n syncHasDisplayDataRows,\n );\n }, 0);\n };\n\n try {\n const result = beforeRowUndeleteHandler(grid, row as OwpTreeGridRowModel<T>);\n\n if (isTreeGridPromiseLike<TreeGridBeforeRowUndeleteAction | undefined>(result)) {\n void result.then(scheduleAction).catch(() => {\n scheduleAction('undelete');\n });\n return 0;\n }\n\n scheduleAction(result);\n\n return 0;\n } catch {\n scheduleAction('undelete');\n return 0;\n }\n });\n\n if (typeof initialEventHandlers?.onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n latestEventHandlersRef.current?.onRowClick?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n x,\n y,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n latestEventHandlersRef.current?.onClickButton?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n event,\n );\n }, 300),\n );\n }\n\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n const addedRowHighlightColumns = isTreeGridRowAddedById(row)\n ? getTreeGridAddedRowHighlightColumns(row)\n : [];\n\n syncTreeGridDeletedRowState(grid, row, {\n canEdit: syncDeletedRowCanEditRef.current !== false ? 2 : undefined,\n highlightColumns: addedRowHighlightColumns,\n });\n\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowDelete?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n deleteType,\n );\n });\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n const addedRowHighlightColumns = isTreeGridRowAddedById(row)\n ? getTreeGridAddedRowHighlightColumns(row)\n : [];\n\n syncTreeGridDeletedRowState(grid, row, {\n canEdit: syncDeletedRowCanEditRef.current !== false ? 1 : undefined,\n highlightColumns: addedRowHighlightColumns,\n highlightBackgroundColor: addedRowHighlightColumns.length\n ? changedCellBackgroundColorRef.current\n : undefined,\n });\n\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowUndelete?.(grid, row as OwpTreeGridRowModel<T>);\n });\n window.TGSetEvent('OnGetDefaultColor', id, (grid, row, col) => {\n if (!highlightEditableCellsRef.current || !isDisplayTreeGridRow(row)) {\n return undefined;\n }\n\n return getEditableTreeGridCellDefaultColor(\n grid,\n row,\n col,\n editableCellBackgroundColorValueRef.current,\n );\n });\n window.TGSetEvent('OnGetColor', id, (grid, row, col, r, g, b, type) => {\n if (type) {\n return undefined;\n }\n\n return resolveTreeGridStateBackgroundColor({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor: selectedCellBackgroundColorRef.current,\n hoverCellBackgroundColor: hoverCellBackgroundColorRef.current,\n });\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n const columnEditRuleLookup = latestColumnEditRuleLookupRef.current;\n const resolvedEditValue = columnEditRuleLookup\n ? resolveTreeGridColumnEditValue(columnEditRuleLookup, col, value)\n : undefined;\n const nextValue = resolvedEditValue?.value;\n const resolvedValue = nextValue ?? value;\n\n if (resolvedEditValue?.invalidText) {\n enqueueSnackbar(resolvedEditValue.invalidText, { variant: 'warning' });\n }\n\n if (nextValue !== undefined) {\n grid.SetValue(row, col, nextValue, 1);\n }\n\n if (highlightChangedCellsRef.current && isDisplayTreeGridRow(row)) {\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 as OwpTreeGridRowModel<T>, col, resolvedValue);\n });\n if (typeof initialEventHandlers?.onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n latestEventHandlersRef.current?.onSelect?.(selectedRows);\n }, 100),\n );\n }\n if (typeof initialEventHandlers?.onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n latestEventHandlersRef.current?.onSave?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n autoupdate,\n );\n });\n }\n window.TGSetEvent('OnSort', id, (grid, col) => {\n if (!col || !isTreeGridGroupHeaderCell(grid, grid.ARow, col)) {\n return undefined;\n }\n\n countTreeGridPerf(id, 'group header sort blocked');\n logTreeGridPerf(id, 'group header sort blocked', {\n rowId: grid.ARow?.id,\n col,\n });\n\n return -1;\n });\n window.TGSetEvent('OnRenderStart', id, (grid) => {\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, false);\n });\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n resetTreeGridColumnEditRulesState(columnEditRulesStateRef.current);\n syncTreeGridColumnEditRules(\n grid,\n latestColumnEditRuleLookupRef.current,\n columnEditRulesStateRef.current,\n );\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n appliedColumnEditRulesRef.current = latestColumnEditRulesRef.current;\n syncHasDisplayDataRows(grid);\n setIsTreeGridReady(true);\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, true);\n measureTreeGridPerf(id, 'TreeGrid init ready', treeGridInitStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(\n getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>,\n ),\n });\n treeGridInitStartedAtRef.current = null;\n latestEventHandlersRef.current?.onReady?.(grid);\n }\n }, 100),\n );\n};\n"],"names":["TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_SELECTED_CELL_RGB","TREE_GRID_READONLY_HOVER_CELL_RGB","TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB","TREE_GRID_PREVIEW_CELL_RGB","TREE_GRID_PREVIEW_CELL_SOFT_RGB","TREE_GRID_PREVIEW_CELL_DIM_RGB","TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE","isTreeGridInlineUrl","__name","url","treeGridInlineBlobUrlCache","resolveTreeGridInlineUrl","cachedUrl","meta","encodedData","match","mimeType","decodedData","bytes","index","blobUrl","appendNoCacheQuery","hashIndex","baseUrl","hashFragment","querySeparator","syncTreeGridDeletedRowState","grid","row","options","canEdit","highlightColumns","highlightBackgroundColor","col","TREEGRID_CELL_HIGHLIGHT_CLASS","resolveTreeGridDataUrl","dataUrl","isTreeGridPromiseLike","value","applyTreeGridBeforeRowUndeleteAction","action","syncHasDisplayDataRows","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","layoutData","width","height","languageId","getTreeGridTextResourceUrl","getTreeGridBodyData","get","parseTreeGridPositiveNumber","trimmedValue","numericValue","getTreeGridHeaderCellSpanAttribute","attributeName","attributeValue","resolvedAttributeValue","isTreeGridGroupHeaderCell","applyTreeGridGroupHeaderSortButtonAttributes","gridId","refreshRows","applyStartedAt","headerRows","cols","updatedRows","updatedCellCount","countTreeGridPerf","measureTreeGridPerf","getTreeGridBodyDataCount","isVisibleTreeGridRow","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","editableCellBackgroundColorValue","matchesTreeGridRgbColor","r","g","b","expected","isTreeGridSelectedCellState","selected","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","selectedCellBackgroundColor","hoverCellBackgroundColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","editableCellBackgroundColorValueRef","changedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","setIsTreeGridReady","initialEventHandlers","_b","type","beforeRowUndeleteHandler","scheduleAction","result","debounce","x","y","event","deleteType","addedRowHighlightColumns","isTreeGridRowAddedById","getTreeGridAddedRowHighlightColumns","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","valueChangedHandler","selectedRows","autoupdate","logTreeGridPerf","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules"],"mappings":"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"}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
var f = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var n = (r, t) => f(r, "name", { value: t, configurable: !0 });
|
|
3
3
|
import { jsx as d } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
4
|
import { useConfirm as u } from "../../hooks/useConfirm.js";
|
|
5
5
|
import { useOwpTranslation as p } from "../../hooks/useOwpTranslation.js";
|
|
6
6
|
import { resetTreeGridChangesById as c } from "../../utils/treeGridUtil.js";
|
|
7
7
|
import { Button as l } from "@mui/material";
|
|
8
|
-
const G = /* @__PURE__ */
|
|
8
|
+
const G = /* @__PURE__ */ n(({
|
|
9
9
|
gridId: r,
|
|
10
10
|
confirmTitle: t,
|
|
11
11
|
children: s,
|
|
12
12
|
onClick: e,
|
|
13
13
|
...m
|
|
14
14
|
}) => {
|
|
15
|
-
const { t:
|
|
15
|
+
const { t: o } = p(), { confirmInfo: a } = u();
|
|
16
16
|
return /* @__PURE__ */ d(
|
|
17
17
|
l,
|
|
18
18
|
{
|
|
19
19
|
variant: "outlined",
|
|
20
20
|
color: "primary",
|
|
21
21
|
...m,
|
|
22
|
-
onClick: /* @__PURE__ */
|
|
22
|
+
onClick: /* @__PURE__ */ n(async (i) => {
|
|
23
23
|
e == null || e(i), !(i.defaultPrevented || !await a({
|
|
24
|
-
title: t ??
|
|
24
|
+
title: t ?? o("Message.그리드 변경 사항을 초기화하시겠습니까?"),
|
|
25
|
+
okText: o("Button.초기화")
|
|
25
26
|
})) && c(r);
|
|
26
27
|
}, "handleClick"),
|
|
27
|
-
children: s ??
|
|
28
|
+
children: s ?? o("Button.변경 초기화")
|
|
28
29
|
}
|
|
29
30
|
);
|
|
30
31
|
}, "OwpTreeGridResetChangesButton");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpTreeGridResetChangesButton.js","sources":["../../../src/components/OwpTreeGridResetChangesButton/OwpTreeGridResetChangesButton.tsx"],"sourcesContent":["import { useConfirm } from '@/hooks/useConfirm';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { resetTreeGridChangesById } from '@/utils/treeGridUtil';\nimport { Button, type ButtonProps } from '@mui/material';\nimport { type MouseEventHandler, type ReactNode } from 'react';\n\nexport interface OwpTreeGridResetChangesButtonProps extends ButtonProps {\n gridId: string;\n confirmTitle?: ReactNode | string;\n}\n\n/**\n * TreeGrid 변경 사항 초기화 버튼\n * @param gridId TreeGrid 인스턴스 ID\n * @param confirmTitle 확인 대화상자 제목\n */\nconst OwpTreeGridResetChangesButton = ({\n gridId,\n confirmTitle,\n children,\n onClick,\n ...buttonProps\n}: OwpTreeGridResetChangesButtonProps) => {\n const { t } = useOwpTranslation();\n const { confirmInfo } = useConfirm();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = async (event) => {\n onClick?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n const isConfirmed = await confirmInfo({\n title:\n confirmTitle ??\n t('Message.그리드 변경 사항을 초기화하시겠습니까?'),\n });\n\n if (!isConfirmed) {\n return;\n }\n\n resetTreeGridChangesById(gridId);\n };\n\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n {...buttonProps}\n onClick={handleClick}\n >\n {children ?? t('Button.변경 초기화')}\n </Button>\n );\n};\n\nexport { OwpTreeGridResetChangesButton };\n"],"names":["OwpTreeGridResetChangesButton","__name","gridId","confirmTitle","children","onClick","buttonProps","t","useOwpTranslation","confirmInfo","useConfirm","jsx","Button","event","resetTreeGridChangesById"],"mappings":";;;;;;;AAgBA,MAAMA,IAAgC,gBAAAC,EAAA,CAAC;AAAA,EACrC,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,MAA0C;AACxC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACR,EAAE,aAAAC,EAAA,IAAgBC,EAAA;
|
|
1
|
+
{"version":3,"file":"OwpTreeGridResetChangesButton.js","sources":["../../../src/components/OwpTreeGridResetChangesButton/OwpTreeGridResetChangesButton.tsx"],"sourcesContent":["import { useConfirm } from '@/hooks/useConfirm';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { resetTreeGridChangesById } from '@/utils/treeGridUtil';\nimport { Button, type ButtonProps } from '@mui/material';\nimport { type MouseEventHandler, type ReactNode } from 'react';\n\nexport interface OwpTreeGridResetChangesButtonProps extends ButtonProps {\n gridId: string;\n confirmTitle?: ReactNode | string;\n}\n\n/**\n * TreeGrid 변경 사항 초기화 버튼\n * @param gridId TreeGrid 인스턴스 ID\n * @param confirmTitle 확인 대화상자 제목\n */\nconst OwpTreeGridResetChangesButton = ({\n gridId,\n confirmTitle,\n children,\n onClick,\n ...buttonProps\n}: OwpTreeGridResetChangesButtonProps) => {\n const { t } = useOwpTranslation();\n const { confirmInfo } = useConfirm();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = async (event) => {\n onClick?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n const isConfirmed = await confirmInfo({\n title:\n confirmTitle ??\n t('Message.그리드 변경 사항을 초기화하시겠습니까?'),\n okText: t('Button.초기화'),\n });\n\n if (!isConfirmed) {\n return;\n }\n\n resetTreeGridChangesById(gridId);\n };\n\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n {...buttonProps}\n onClick={handleClick}\n >\n {children ?? t('Button.변경 초기화')}\n </Button>\n );\n};\n\nexport { OwpTreeGridResetChangesButton };\n"],"names":["OwpTreeGridResetChangesButton","__name","gridId","confirmTitle","children","onClick","buttonProps","t","useOwpTranslation","confirmInfo","useConfirm","jsx","Button","event","resetTreeGridChangesById"],"mappings":";;;;;;;AAgBA,MAAMA,IAAgC,gBAAAC,EAAA,CAAC;AAAA,EACrC,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,MAA0C;AACxC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACR,EAAE,aAAAC,EAAA,IAAgBC,EAAA;AAuBxB,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAM;AAAA,MACL,GAAGN;AAAA,MACJ,SA1BsD,gBAAAL,EAAA,OAAOY,MAAU;AAczE,QAbAR,KAAA,QAAAA,EAAUQ,IAEN,EAAAA,EAAM,oBAWN,CAPgB,MAAMJ,EAAY;AAAA,UACpC,OACEN,KACAI,EAAE,+BAA+B;AAAA,UACnC,QAAQA,EAAE,YAAY;AAAA,QAAA,CACvB,MAMDO,EAAyBZ,CAAM;AAAA,MACjC,GAnB0D;AAAA,MA4BrD,UAAAE,KAAYG,EAAE,eAAe;AAAA,IAAA;AAAA,EAAA;AAGpC,GAzCsC;"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
var
|
|
2
|
-
var l = (t, e) =>
|
|
3
|
-
import { jsx as
|
|
1
|
+
var ne = Object.defineProperty;
|
|
2
|
+
var l = (t, e) => ne(t, "name", { value: e, configurable: !0 });
|
|
3
|
+
import { jsx as o, jsxs as d, Fragment as ae } from "../../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
4
|
import { IconButton as ie, Typography as k, InputAdornment as ue, MenuItem as ce, TextField as Q, Box as g, Divider as se, Popover as pe, Button as de } from "@mui/material";
|
|
5
5
|
import me 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/RestartAltOutlined.js";
|
|
6
|
-
import { blue as he, lightBlue as fe, cyan as xe, teal as ge, green as we, amber as be, orange as
|
|
6
|
+
import { blue as he, lightBlue as fe, cyan as xe, teal as ge, green as we, amber as be, orange as Pe, deepOrange as ve, red as ye, pink as Ce, purple as ke, deepPurple as Te, indigo as Ve, grey as Ie, blueGrey as Ee } from "@mui/material/colors";
|
|
7
7
|
import { useState as w, useRef as T, useEffect as b } from "react";
|
|
8
8
|
import { getThemePreviewPaletteValue as Ae } from "../utils/themePreviewSettings.js";
|
|
9
|
-
import { getColorAlphaValue as
|
|
10
|
-
|
|
9
|
+
import { getColorAlphaValue as Be, toColorPickerValue as V, applyColorPickerValue as X } from "../utils/color.js";
|
|
10
|
+
import { owpDark as Me } from "../../../colors/palettes/dark.js";
|
|
11
|
+
import { skyBlue as De } from "../../../colors/palettes/skyBlue.js";
|
|
12
|
+
const Re = {
|
|
11
13
|
"px-number": "px",
|
|
12
14
|
"rem-number": "rem"
|
|
13
|
-
},
|
|
15
|
+
}, ze = [
|
|
14
16
|
"50",
|
|
15
17
|
"100",
|
|
16
18
|
"200",
|
|
@@ -25,15 +27,17 @@ const Be = {
|
|
|
25
27
|
"A200",
|
|
26
28
|
"A400",
|
|
27
29
|
"A700"
|
|
28
|
-
],
|
|
30
|
+
], Se = [
|
|
31
|
+
["OWP Dark", Me],
|
|
32
|
+
["OWP Sky Blue", De],
|
|
29
33
|
["Blue", he],
|
|
30
34
|
["Light Blue", fe],
|
|
31
35
|
["Cyan", xe],
|
|
32
36
|
["Teal", ge],
|
|
33
37
|
["Green", we],
|
|
34
38
|
["Amber", be],
|
|
35
|
-
["Orange",
|
|
36
|
-
["Deep Orange",
|
|
39
|
+
["Orange", Pe],
|
|
40
|
+
["Deep Orange", ve],
|
|
37
41
|
["Red", ye],
|
|
38
42
|
["Pink", Ce],
|
|
39
43
|
["Purple", ke],
|
|
@@ -41,74 +45,74 @@ const Be = {
|
|
|
41
45
|
["Indigo", Ve],
|
|
42
46
|
["Grey", Ie],
|
|
43
47
|
["Blue Grey", Ee]
|
|
44
|
-
], re =
|
|
48
|
+
], re = Se.map(([t, e]) => ({
|
|
45
49
|
label: t,
|
|
46
|
-
colors:
|
|
50
|
+
colors: ze.reduce((n, m) => {
|
|
47
51
|
const f = e[m];
|
|
48
|
-
return f &&
|
|
52
|
+
return f && n.push({
|
|
49
53
|
key: `${t}-${m}`,
|
|
50
54
|
shade: m,
|
|
51
55
|
value: f
|
|
52
|
-
}),
|
|
56
|
+
}), n;
|
|
53
57
|
}, [])
|
|
54
|
-
})),
|
|
58
|
+
})), We = new Set(
|
|
55
59
|
re.flatMap(
|
|
56
60
|
(t) => t.colors.map((e) => e.value.toLowerCase())
|
|
57
61
|
)
|
|
58
|
-
),
|
|
62
|
+
), Oe = 500, Z = 32, ee = 20;
|
|
59
63
|
function _e(t, e) {
|
|
60
64
|
return t.replace(new RegExp(`${e}$`, "i"), "");
|
|
61
65
|
}
|
|
62
66
|
l(_e, "getUnitInputDisplayValue");
|
|
63
67
|
function te(t) {
|
|
64
|
-
const e = t.replace(/[^0-9.,]/g, "").replace(/,/g, "."),
|
|
65
|
-
if (
|
|
68
|
+
const e = t.replace(/[^0-9.,]/g, "").replace(/,/g, "."), n = e.indexOf(".");
|
|
69
|
+
if (n < 0)
|
|
66
70
|
return e;
|
|
67
|
-
const m = e.slice(0,
|
|
71
|
+
const m = e.slice(0, n), f = e.slice(n + 1).replace(/\./g, "");
|
|
68
72
|
return `${m}.${f}`;
|
|
69
73
|
}
|
|
70
74
|
l(te, "normalizeUnitInputDisplayValue");
|
|
71
|
-
function
|
|
75
|
+
function $e(t) {
|
|
72
76
|
const e = te(t);
|
|
73
77
|
return !e || e === "." ? "" : e.startsWith(".") ? `0${e}` : e.endsWith(".") ? e.slice(0, -1) : e;
|
|
74
78
|
}
|
|
75
|
-
l(
|
|
76
|
-
function
|
|
77
|
-
const
|
|
78
|
-
return
|
|
79
|
+
l($e, "normalizeCommittedUnitInputDisplayValue");
|
|
80
|
+
function Fe(t, e) {
|
|
81
|
+
const n = $e(t);
|
|
82
|
+
return n ? `${n}${e}` : "";
|
|
79
83
|
}
|
|
80
|
-
l(
|
|
81
|
-
function
|
|
82
|
-
return (t ?
|
|
84
|
+
l(Fe, "normalizeUnitInputValue");
|
|
85
|
+
function He(t) {
|
|
86
|
+
return (t ? Re[t] : null) ?? null;
|
|
83
87
|
}
|
|
84
|
-
l(
|
|
85
|
-
function
|
|
88
|
+
l(He, "getUnitValueFormat");
|
|
89
|
+
function Xe({
|
|
86
90
|
disabled: t = !1,
|
|
87
91
|
definition: e,
|
|
88
|
-
resetVersion:
|
|
92
|
+
resetVersion: n,
|
|
89
93
|
sectionKey: m,
|
|
90
94
|
settings: f,
|
|
91
|
-
onChange:
|
|
95
|
+
onChange: P,
|
|
92
96
|
onReset: I
|
|
93
97
|
}) {
|
|
94
98
|
var Y, J;
|
|
95
|
-
const [
|
|
99
|
+
const [v, E] = w(null), O = T(null), a = Ae(f, m, e.path), c = He(e.valueFormat), _ = e.showColorPicker !== !1, $ = e.allowAlpha ? Be(a) : null, F = [e.description];
|
|
96
100
|
e.allowAlpha && F.push(
|
|
97
101
|
$ ? `알파값은 ${$}로 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.` : "알파값은 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다."
|
|
98
102
|
);
|
|
99
|
-
const le = F.filter(Boolean).join(" "), A = !!((Y = e.options) != null && Y.length),
|
|
103
|
+
const le = F.filter(Boolean).join(" "), A = !!((Y = e.options) != null && Y.length), B = !!(e.allowAlpha && _ && !A && !c), x = c ? _e(a, c) : a, H = _, M = H ? V(a).toLowerCase() : null, y = M && We.has(M) ? M : null, h = !A && !B, [D, R] = w(x), [L, C] = w(!1), [U, z] = w(V(a)), [S, W] = w(!1), i = T(null), N = T(x), G = T(a);
|
|
100
104
|
N.current = x, G.current = a, b(() => {
|
|
101
|
-
!h || L ||
|
|
105
|
+
!h || L || R(x);
|
|
102
106
|
}, [h, x, L]), b(() => {
|
|
103
|
-
S ||
|
|
107
|
+
S || z(V(a));
|
|
104
108
|
}, [S, a]), b(() => () => {
|
|
105
109
|
i.current && window.clearTimeout(i.current);
|
|
106
110
|
}, []), b(() => {
|
|
107
|
-
if (!
|
|
111
|
+
if (!v || !y)
|
|
108
112
|
return;
|
|
109
113
|
const r = window.requestAnimationFrame(() => {
|
|
110
114
|
var s;
|
|
111
|
-
const u = (s =
|
|
115
|
+
const u = (s = O.current) == null ? void 0 : s.querySelector(
|
|
112
116
|
`[data-mui-palette-value="${y}"]`
|
|
113
117
|
);
|
|
114
118
|
u == null || u.scrollIntoView({
|
|
@@ -119,18 +123,18 @@ function qe({
|
|
|
119
123
|
return () => {
|
|
120
124
|
window.cancelAnimationFrame(r);
|
|
121
125
|
};
|
|
122
|
-
}, [y,
|
|
123
|
-
typeof
|
|
124
|
-
}, [
|
|
126
|
+
}, [y, v]), b(() => {
|
|
127
|
+
typeof n > "u" || (i.current && (window.clearTimeout(i.current), i.current = null), R(N.current), C(!1), z(V(G.current)), W(!1));
|
|
128
|
+
}, [n]);
|
|
125
129
|
const j = /* @__PURE__ */ l((r) => {
|
|
126
|
-
|
|
130
|
+
P(
|
|
127
131
|
e.path,
|
|
128
|
-
c ?
|
|
132
|
+
c ? Fe(r, c) : r
|
|
129
133
|
);
|
|
130
134
|
}, "commitBufferedTextValue"), K = /* @__PURE__ */ l((r) => {
|
|
131
|
-
i.current && (window.clearTimeout(i.current), i.current = null),
|
|
132
|
-
}, "commitBufferedPickerValue"), q = I || c ? /* @__PURE__ */
|
|
133
|
-
I ? /* @__PURE__ */
|
|
135
|
+
i.current && (window.clearTimeout(i.current), i.current = null), W(!1), P(e.path, X(a, r));
|
|
136
|
+
}, "commitBufferedPickerValue"), q = I || c ? /* @__PURE__ */ o(ue, { position: "end", children: /* @__PURE__ */ d("div", { className: "flex items-center gap-6 pr-2", children: [
|
|
137
|
+
I ? /* @__PURE__ */ o(
|
|
134
138
|
ie,
|
|
135
139
|
{
|
|
136
140
|
size: "small",
|
|
@@ -148,38 +152,38 @@ function qe({
|
|
|
148
152
|
color: "#6b7280",
|
|
149
153
|
p: 0.25
|
|
150
154
|
},
|
|
151
|
-
children: /* @__PURE__ */
|
|
155
|
+
children: /* @__PURE__ */ o(me, { sx: { fontSize: 16 } })
|
|
152
156
|
}
|
|
153
157
|
) : null,
|
|
154
|
-
c ? /* @__PURE__ */
|
|
158
|
+
c ? /* @__PURE__ */ o(k, { variant: "body2", sx: { whiteSpace: "nowrap" }, children: c }) : null
|
|
155
159
|
] }) }) : void 0;
|
|
156
160
|
return /* @__PURE__ */ d("div", { className: "grid grid-cols-[minmax(0,1fr)_144px] items-start gap-12", children: [
|
|
157
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ o(
|
|
158
162
|
Q,
|
|
159
163
|
{
|
|
160
164
|
select: A,
|
|
161
165
|
label: e.label,
|
|
162
166
|
size: "small",
|
|
163
|
-
value: h ?
|
|
167
|
+
value: h ? D : x,
|
|
164
168
|
disabled: t,
|
|
165
169
|
onChange: /* @__PURE__ */ l((r) => {
|
|
166
|
-
if (
|
|
170
|
+
if (B)
|
|
167
171
|
return;
|
|
168
172
|
const u = c ? te(r.target.value) : r.target.value;
|
|
169
173
|
if (h) {
|
|
170
|
-
|
|
174
|
+
R(u);
|
|
171
175
|
return;
|
|
172
176
|
}
|
|
173
|
-
|
|
177
|
+
P(e.path, u);
|
|
174
178
|
}, "onChange"),
|
|
175
179
|
onFocus: /* @__PURE__ */ l(() => {
|
|
176
180
|
h && C(!0);
|
|
177
181
|
}, "onFocus"),
|
|
178
182
|
onBlur: /* @__PURE__ */ l(() => {
|
|
179
|
-
h && (C(!1), j(
|
|
183
|
+
h && (C(!1), j(D));
|
|
180
184
|
}, "onBlur"),
|
|
181
185
|
onKeyDown: /* @__PURE__ */ l((r) => {
|
|
182
|
-
!h || r.key !== "Enter" || (r.preventDefault(), C(!1), j(
|
|
186
|
+
!h || r.key !== "Enter" || (r.preventDefault(), C(!1), j(D), r.currentTarget.blur());
|
|
183
187
|
}, "onKeyDown"),
|
|
184
188
|
helperText: le,
|
|
185
189
|
slotProps: {
|
|
@@ -187,7 +191,7 @@ function qe({
|
|
|
187
191
|
...c ? {
|
|
188
192
|
inputMode: "decimal"
|
|
189
193
|
} : {},
|
|
190
|
-
...
|
|
194
|
+
...B ? {
|
|
191
195
|
readOnly: !0
|
|
192
196
|
} : {}
|
|
193
197
|
},
|
|
@@ -197,12 +201,12 @@ function qe({
|
|
|
197
201
|
} : {}
|
|
198
202
|
}
|
|
199
203
|
},
|
|
200
|
-
children: (J = e.options) == null ? void 0 : J.map((r) => /* @__PURE__ */
|
|
204
|
+
children: (J = e.options) == null ? void 0 : J.map((r) => /* @__PURE__ */ o(ce, { value: r.value, children: r.label }, r.value))
|
|
201
205
|
}
|
|
202
206
|
),
|
|
203
207
|
H ? /* @__PURE__ */ d("div", { className: "grid grid-cols-2 gap-6", children: [
|
|
204
208
|
/* @__PURE__ */ d(ae, { children: [
|
|
205
|
-
/* @__PURE__ */
|
|
209
|
+
/* @__PURE__ */ o(
|
|
206
210
|
de,
|
|
207
211
|
{
|
|
208
212
|
size: "small",
|
|
@@ -220,7 +224,7 @@ function qe({
|
|
|
220
224
|
children: "MUI"
|
|
221
225
|
}
|
|
222
226
|
),
|
|
223
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ o(
|
|
224
228
|
Q,
|
|
225
229
|
{
|
|
226
230
|
hiddenLabel: !0,
|
|
@@ -230,9 +234,9 @@ function qe({
|
|
|
230
234
|
disabled: t,
|
|
231
235
|
onChange: /* @__PURE__ */ l((r) => {
|
|
232
236
|
const u = r.target.value;
|
|
233
|
-
|
|
237
|
+
z(u), W(!0), i.current && window.clearTimeout(i.current), i.current = window.setTimeout(() => {
|
|
234
238
|
K(u);
|
|
235
|
-
},
|
|
239
|
+
}, Oe);
|
|
236
240
|
}, "onChange"),
|
|
237
241
|
onBlur: /* @__PURE__ */ l(() => {
|
|
238
242
|
S && K(U);
|
|
@@ -276,11 +280,11 @@ function qe({
|
|
|
276
280
|
}
|
|
277
281
|
}
|
|
278
282
|
),
|
|
279
|
-
|
|
283
|
+
v ? /* @__PURE__ */ o(
|
|
280
284
|
pe,
|
|
281
285
|
{
|
|
282
286
|
open: !0,
|
|
283
|
-
anchorEl:
|
|
287
|
+
anchorEl: v,
|
|
284
288
|
transitionDuration: 0,
|
|
285
289
|
onClose: /* @__PURE__ */ l(() => {
|
|
286
290
|
E(null);
|
|
@@ -305,8 +309,8 @@ function qe({
|
|
|
305
309
|
}
|
|
306
310
|
}
|
|
307
311
|
},
|
|
308
|
-
children: /* @__PURE__ */
|
|
309
|
-
u > 0 ? /* @__PURE__ */
|
|
312
|
+
children: /* @__PURE__ */ o("div", { ref: O, className: "flex min-w-0 flex-col gap-10", children: re.map((r, u) => /* @__PURE__ */ d(g, { className: "flex flex-col gap-10", children: [
|
|
313
|
+
u > 0 ? /* @__PURE__ */ o(se, { flexItem: !0 }) : null,
|
|
310
314
|
/* @__PURE__ */ d(
|
|
311
315
|
g,
|
|
312
316
|
{
|
|
@@ -319,8 +323,8 @@ function qe({
|
|
|
319
323
|
}
|
|
320
324
|
},
|
|
321
325
|
children: [
|
|
322
|
-
/* @__PURE__ */
|
|
323
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ o(k, { variant: "caption", color: "text.secondary", children: r.label }),
|
|
327
|
+
/* @__PURE__ */ o(
|
|
324
328
|
g,
|
|
325
329
|
{
|
|
326
330
|
sx: {
|
|
@@ -339,7 +343,7 @@ function qe({
|
|
|
339
343
|
"data-mui-palette-value": s.value.toLowerCase(),
|
|
340
344
|
"aria-current": p ? "true" : void 0,
|
|
341
345
|
onClick: /* @__PURE__ */ l(() => {
|
|
342
|
-
|
|
346
|
+
P(
|
|
343
347
|
e.path,
|
|
344
348
|
X(a, s.value)
|
|
345
349
|
), E(null);
|
|
@@ -350,7 +354,7 @@ function qe({
|
|
|
350
354
|
border: "1px solid",
|
|
351
355
|
borderColor: p ? "primary.main" : "divider",
|
|
352
356
|
borderRadius: 1,
|
|
353
|
-
boxShadow: p ? (
|
|
357
|
+
boxShadow: p ? (oe) => `0 0 0 1px ${oe.palette.primary.main}` : "none",
|
|
354
358
|
color: p ? "text.primary" : "text.secondary",
|
|
355
359
|
cursor: "pointer",
|
|
356
360
|
display: "flex",
|
|
@@ -367,7 +371,7 @@ function qe({
|
|
|
367
371
|
}
|
|
368
372
|
},
|
|
369
373
|
children: [
|
|
370
|
-
/* @__PURE__ */
|
|
374
|
+
/* @__PURE__ */ o(
|
|
371
375
|
g,
|
|
372
376
|
{
|
|
373
377
|
sx: {
|
|
@@ -380,7 +384,7 @@ function qe({
|
|
|
380
384
|
}
|
|
381
385
|
}
|
|
382
386
|
),
|
|
383
|
-
/* @__PURE__ */
|
|
387
|
+
/* @__PURE__ */ o(
|
|
384
388
|
g,
|
|
385
389
|
{
|
|
386
390
|
component: "span",
|
|
@@ -407,8 +411,8 @@ function qe({
|
|
|
407
411
|
) : null
|
|
408
412
|
] }),
|
|
409
413
|
e.allowAlpha ? /* @__PURE__ */ d("div", { className: "col-span-2 flex flex-col gap-2", children: [
|
|
410
|
-
/* @__PURE__ */
|
|
411
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ o(k, { variant: "caption", color: "text.secondary", children: "Current" }),
|
|
415
|
+
/* @__PURE__ */ o(
|
|
412
416
|
k,
|
|
413
417
|
{
|
|
414
418
|
variant: "caption",
|
|
@@ -418,11 +422,11 @@ function qe({
|
|
|
418
422
|
}
|
|
419
423
|
)
|
|
420
424
|
] }) : null
|
|
421
|
-
] }) : /* @__PURE__ */
|
|
425
|
+
] }) : /* @__PURE__ */ o("div", {})
|
|
422
426
|
] });
|
|
423
427
|
}
|
|
424
|
-
l(
|
|
428
|
+
l(Xe, "ThemePreviewColorField");
|
|
425
429
|
export {
|
|
426
|
-
|
|
430
|
+
Xe as ThemePreviewColorField
|
|
427
431
|
};
|
|
428
432
|
//# sourceMappingURL=ThemePreviewColorField.js.map
|