@owp/core 2.5.16 → 2.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/_virtual/index10.js +2 -2
  2. package/dist/_virtual/index12.js +2 -2
  3. package/dist/_virtual/index13.js +2 -2
  4. package/dist/_virtual/index14.js +2 -2
  5. package/dist/_virtual/index15.js +2 -2
  6. package/dist/_virtual/index5.js +2 -2
  7. package/dist/components/OwpPicker/OwpTimePicker.js +147 -185
  8. package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
  9. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +237 -215
  10. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  11. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +153 -0
  12. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -0
  13. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +280 -240
  14. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  15. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  16. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  17. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  18. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  19. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  20. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  21. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  22. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  23. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  24. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  25. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  26. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  27. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  28. package/dist/owp-app.css +1 -1
  29. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +9 -1
  30. package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.d.ts +14 -0
  31. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +9 -1
  32. package/dist/utils/treeGridUtil.js +81 -76
  33. package/dist/utils/treeGridUtil.js.map +1 -1
  34. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import {\n getTreeGridTextResourceUrl,\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\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';\nconst TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO = 0.75;\nconst TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO = 0.5;\nconst TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB = [255, 255, 255] as const;\nconst TREE_GRID_DEFAULT_BODY_TEXT_RGB = [17, 17, 18] as const;\nconst TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS = TREEGRID_CELL_HIGHLIGHT_CLASS.split(/\\s+/).filter(\n Boolean,\n);\n\ntype TreeGridRgbColor = readonly [number, number, number];\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\n/**\n * TreeGrid 색상 RGB 변환\n * @param color TreeGrid 색상 값\n */\nconst resolveTreeGridColorRgb = (color: unknown): TreeGridRgbColor | undefined => {\n const colorNumber =\n typeof color === 'number'\n ? color\n : typeof color === 'string'\n ? resolveTreeGridColorNumber(color)\n : undefined;\n\n if (colorNumber === undefined || !Number.isFinite(colorNumber)) {\n return undefined;\n }\n\n return [(colorNumber >> 16) & 255, (colorNumber >> 8) & 255, colorNumber & 255];\n};\n\n/**\n * TreeGrid RGB 색상 문자열 변환\n * @param color RGB 색상\n */\nconst stringifyTreeGridRgbColor = (color: TreeGridRgbColor) => {\n return `#${color\n .map((channel) => Math.max(0, Math.min(255, channel)).toString(16).padStart(2, '0'))\n .join('')}`;\n};\n\n/**\n * TreeGrid RGB 색상 혼합\n * @param baseColor 기준 색상\n * @param overlayColor 혼합 색상\n * @param blendRatio 혼합 비율\n */\nconst blendTreeGridRgbColor = (\n baseColor: TreeGridRgbColor,\n overlayColor: TreeGridRgbColor,\n blendRatio: number,\n) => {\n const blendChannel = (baseChannel: number, overlayChannel: number) =>\n Math.round(\n baseChannel * (1 - blendRatio) + overlayChannel * blendRatio,\n );\n\n return [\n blendChannel(baseColor[0], overlayColor[0]),\n blendChannel(baseColor[1], overlayColor[1]),\n blendChannel(baseColor[2], overlayColor[2]),\n ] as const;\n};\n\n/**\n * TreeGrid class 토큰 목록 조회\n * @param className 셀 클래스 문자열\n */\nconst getTreeGridClassTokens = (className: string | null | undefined) => {\n return className?.split(/\\s+/).filter(Boolean) ?? [];\n};\n\n/**\n * TreeGrid 하이라이트 class 여부\n * @param className 셀 클래스 문자열\n */\nconst hasTreeGridCellHighlightClass = (className: unknown) => {\n const classTokens = typeof className === 'string' ? getTreeGridClassTokens(className) : [];\n\n return (\n TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS.length > 0 &&\n TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS.every((token) => classTokens.includes(token))\n );\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\n/**\n * TreeGrid 선택 하이라이트 셀 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param selectedCellBackgroundColor 선택 셀 배경색\n */\nconst resolveTreeGridSelectedHighlightBackgroundColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n selectedCellBackgroundColor: string,\n) => {\n if (\n !row ||\n !isTreeGridSelectedCellState(grid, row, col) ||\n !hasTreeGridCellHighlightClass(grid.GetAttribute(row, col, 'Class'))\n ) {\n return undefined;\n }\n\n const selectedColor = resolveTreeGridColorRgb(selectedCellBackgroundColor);\n const highlightColor = resolveTreeGridColorRgb(\n grid.GetAttribute(row, col, 'Color') ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n\n if (!selectedColor || !highlightColor) {\n return undefined;\n }\n\n return stringifyTreeGridRgbColor(\n blendTreeGridRgbColor(\n selectedColor,\n highlightColor,\n TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO,\n ),\n );\n};\n\n/**\n * TreeGrid 선택 하이라이트 셀 텍스트 색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param textColorValue 기존 텍스트 색상 값\n */\nconst resolveTreeGridSelectedHighlightTextColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n textColorValue: unknown,\n) => {\n if (\n textColorValue ||\n !row ||\n !isTreeGridSelectedCellState(grid, row, col) ||\n !hasTreeGridCellHighlightClass(grid.GetAttribute(row, col, 'Class'))\n ) {\n return undefined;\n }\n\n return stringifyTreeGridRgbColor(\n blendTreeGridRgbColor(\n TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB,\n TREE_GRID_DEFAULT_BODY_TEXT_RGB,\n TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO,\n ),\n );\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 const selectedHighlightBackgroundColor = resolveTreeGridSelectedHighlightBackgroundColor(\n grid,\n row,\n col,\n selectedCellBackgroundColor,\n );\n\n if (selectedHighlightBackgroundColor) {\n return selectedHighlightBackgroundColor;\n }\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('OnGetCellStyle', id, (grid, row, col, attr, value) => {\n if (attr !== 'TextColor') {\n return undefined;\n }\n\n return resolveTreeGridSelectedHighlightTextColor(grid, row, col, value);\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","TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO","TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO","TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB","TREE_GRID_DEFAULT_BODY_TEXT_RGB","TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS","TREEGRID_CELL_HIGHLIGHT_CLASS","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","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","resolveTreeGridColorRgb","colorNumber","resolveTreeGridColorNumber","stringifyTreeGridRgbColor","channel","blendTreeGridRgbColor","baseColor","overlayColor","blendRatio","blendChannel","baseChannel","overlayChannel","getTreeGridClassTokens","className","hasTreeGridCellHighlightClass","classTokens","token","isTreeGridSelectedCellState","selected","resolveTreeGridSelectedHighlightBackgroundColor","selectedCellBackgroundColor","selectedColor","highlightColor","TREEGRID_CELL_HIGHLIGHT_COLOR","resolveTreeGridSelectedHighlightTextColor","textColorValue","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","hoverCellBackgroundColor","selectedHighlightBackgroundColor","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","attr","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","valueChangedHandler","selectedRows","autoupdate","logTreeGridPerf","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules"],"mappings":"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"}
1
+ {"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import {\n getTreeGridTextResourceUrl,\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\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;\nconst TREE_GRID_DEFAULT_ENTER_MODE = 3;\nconst TREE_GRID_DEFAULT_ENTER_ACTIONS = {\n 1: {\n onEnter: 'TabDownEdit',\n onEnterEdit: 'AcceptEdit AND TabDownEdit,1',\n },\n 2: {\n onEnter: 'GoDownEditAdd',\n onEnterEdit: 'AcceptEdit AND GoDownEditAdd,1',\n },\n 3: {\n onEnter: 'TabRightEdit',\n onEnterEdit: 'AcceptEdit AND TabRightEdit,1',\n },\n 4: {\n onEnter: 'TabRightEditAdd',\n onEnterEdit: 'AcceptEdit AND TabRightEditAdd,1',\n },\n} as const;\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';\nconst TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO = 0.75;\nconst TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO = 0.5;\nconst TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB = [255, 255, 255] as const;\nconst TREE_GRID_DEFAULT_BODY_TEXT_RGB = [17, 17, 18] as const;\nconst TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS = TREEGRID_CELL_HIGHLIGHT_CLASS.split(/\\s+/).filter(\n Boolean,\n);\n\ntype TreeGridRgbColor = readonly [number, number, number];\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>;\ntype TreeGridInternalCellClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => boolean | number | 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 onInternalCellClick?: TreeGridInternalCellClickHandler<T>;\n};\n\nexport type TreeGridEventBindingOptions<T> = Pick<OwpTreeGridProps<T>, 'id'> & {\n latestEventHandlersRef: RefObject<TreeGridEventHandlers<T>>;\n layoutHasExplicitEnterModeRef: RefObject<boolean>;\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\n/**\n * TreeGrid 레이아웃 Enter 동작 명시 여부\n * @param layoutData 레이아웃 문자열\n */\nexport const hasTreeGridExplicitEnterMode = (layoutData?: string) => {\n return Boolean(layoutData && /\\b(?:EnterMode|OnEnterEdit|OnEnter)\\s*[:=]/.test(layoutData));\n};\n\ntype TreeGridMutableActions = Record<string, string | undefined>;\n\n/**\n * TreeGrid 기본 Enter 동작 적용\n * @param grid TreeGrid 인스턴스\n * @param enterMode EnterMode 값\n */\nconst applyTreeGridDefaultEnterMode = (grid: TGrid, enterMode: number) => {\n grid.EnterMode = enterMode;\n\n const actionConfig =\n TREE_GRID_DEFAULT_ENTER_ACTIONS[\n enterMode as keyof typeof TREE_GRID_DEFAULT_ENTER_ACTIONS\n ];\n\n if (!actionConfig) {\n return;\n }\n\n const mutableGrid = grid as TGrid & { Actions?: TreeGridMutableActions };\n\n mutableGrid.Actions ??= {};\n mutableGrid.Actions.OnEnter = actionConfig.onEnter;\n mutableGrid.Actions.OnEnterEdit = actionConfig.onEnterEdit;\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\n/**\n * TreeGrid 색상 RGB 변환\n * @param color TreeGrid 색상 값\n */\nconst resolveTreeGridColorRgb = (color: unknown): TreeGridRgbColor | undefined => {\n const colorNumber =\n typeof color === 'number'\n ? color\n : typeof color === 'string'\n ? resolveTreeGridColorNumber(color)\n : undefined;\n\n if (colorNumber === undefined || !Number.isFinite(colorNumber)) {\n return undefined;\n }\n\n return [(colorNumber >> 16) & 255, (colorNumber >> 8) & 255, colorNumber & 255];\n};\n\n/**\n * TreeGrid RGB 색상 문자열 변환\n * @param color RGB 색상\n */\nconst stringifyTreeGridRgbColor = (color: TreeGridRgbColor) => {\n return `#${color\n .map((channel) => Math.max(0, Math.min(255, channel)).toString(16).padStart(2, '0'))\n .join('')}`;\n};\n\n/**\n * TreeGrid RGB 색상 혼합\n * @param baseColor 기준 색상\n * @param overlayColor 혼합 색상\n * @param blendRatio 혼합 비율\n */\nconst blendTreeGridRgbColor = (\n baseColor: TreeGridRgbColor,\n overlayColor: TreeGridRgbColor,\n blendRatio: number,\n) => {\n const blendChannel = (baseChannel: number, overlayChannel: number) =>\n Math.round(\n baseChannel * (1 - blendRatio) + overlayChannel * blendRatio,\n );\n\n return [\n blendChannel(baseColor[0], overlayColor[0]),\n blendChannel(baseColor[1], overlayColor[1]),\n blendChannel(baseColor[2], overlayColor[2]),\n ] as const;\n};\n\n/**\n * TreeGrid class 토큰 목록 조회\n * @param className 셀 클래스 문자열\n */\nconst getTreeGridClassTokens = (className: string | null | undefined) => {\n return className?.split(/\\s+/).filter(Boolean) ?? [];\n};\n\n/**\n * TreeGrid 하이라이트 class 여부\n * @param className 셀 클래스 문자열\n */\nconst hasTreeGridCellHighlightClass = (className: unknown) => {\n const classTokens = typeof className === 'string' ? getTreeGridClassTokens(className) : [];\n\n return (\n TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS.length > 0 &&\n TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS.every((token) => classTokens.includes(token))\n );\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\n/**\n * TreeGrid 선택 하이라이트 셀 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param selectedCellBackgroundColor 선택 셀 배경색\n */\nconst resolveTreeGridSelectedHighlightBackgroundColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n selectedCellBackgroundColor: string,\n) => {\n if (\n !row ||\n !isTreeGridSelectedCellState(grid, row, col) ||\n !hasTreeGridCellHighlightClass(grid.GetAttribute(row, col, 'Class'))\n ) {\n return undefined;\n }\n\n const selectedColor = resolveTreeGridColorRgb(selectedCellBackgroundColor);\n const highlightColor = resolveTreeGridColorRgb(\n grid.GetAttribute(row, col, 'Color') ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n\n if (!selectedColor || !highlightColor) {\n return undefined;\n }\n\n return stringifyTreeGridRgbColor(\n blendTreeGridRgbColor(\n selectedColor,\n highlightColor,\n TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO,\n ),\n );\n};\n\n/**\n * TreeGrid 선택 하이라이트 셀 텍스트 색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param textColorValue 기존 텍스트 색상 값\n */\nconst resolveTreeGridSelectedHighlightTextColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n textColorValue: unknown,\n) => {\n if (\n textColorValue ||\n !row ||\n !isTreeGridSelectedCellState(grid, row, col) ||\n !hasTreeGridCellHighlightClass(grid.GetAttribute(row, col, 'Class'))\n ) {\n return undefined;\n }\n\n return stringifyTreeGridRgbColor(\n blendTreeGridRgbColor(\n TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB,\n TREE_GRID_DEFAULT_BODY_TEXT_RGB,\n TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO,\n ),\n );\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 const selectedHighlightBackgroundColor = resolveTreeGridSelectedHighlightBackgroundColor(\n grid,\n row,\n col,\n selectedCellBackgroundColor,\n );\n\n if (selectedHighlightBackgroundColor) {\n return selectedHighlightBackgroundColor;\n }\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 layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n latestColumnEditRulesRef,\n latestColumnEditRuleLookupRef,\n appliedColumnEditRulesRef,\n columnEditRulesStateRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n}: 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 (\n typeof initialEventHandlers?.onRowClick === 'function' ||\n typeof initialEventHandlers?.onInternalCellClick === 'function'\n ) {\n const debouncedRowClickHandler = 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 window.TGSetEvent('OnClick', id, (grid, row, col, x, y, event) => {\n const internalResult = latestEventHandlersRef.current?.onInternalCellClick?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n x,\n y,\n event,\n );\n\n if (internalResult !== undefined) {\n return internalResult;\n }\n\n if (typeof latestEventHandlersRef.current?.onRowClick === 'function') {\n debouncedRowClickHandler(grid, row, col, x, y, event);\n }\n\n return undefined;\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('OnGetCellStyle', id, (grid, row, col, attr, value) => {\n if (attr !== 'TextColor') {\n return undefined;\n }\n\n return resolveTreeGridSelectedHighlightTextColor(grid, row, col, value);\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 window.TGSetEvent('OnDataGet', id, (_grid, source, data) => {\n if (source?.Name === 'Layout' && typeof data === 'string') {\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(data);\n }\n\n return null;\n });\n window.TGSetEvent('OnDataParse', id, (_grid, source, data) => {\n if (source?.Name === 'Layout' && typeof data === 'string') {\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(data);\n }\n\n return null;\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 if (\n !layoutHasExplicitEnterModeRef.current &&\n (grid.EnterMode === undefined || grid.EnterMode === null || grid.EnterMode === 0)\n ) {\n applyTreeGridDefaultEnterMode(grid, TREE_GRID_DEFAULT_ENTER_MODE);\n }\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_DEFAULT_ENTER_MODE","TREE_GRID_DEFAULT_ENTER_ACTIONS","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","TREE_GRID_SELECTED_HIGHLIGHT_BLEND_RATIO","TREE_GRID_SELECTED_HIGHLIGHT_TEXT_BLEND_RATIO","TREE_GRID_CELL_HIGHLIGHT_TEXT_RGB","TREE_GRID_DEFAULT_BODY_TEXT_RGB","TREE_GRID_CELL_HIGHLIGHT_CLASS_TOKENS","TREEGRID_CELL_HIGHLIGHT_CLASS","hasTreeGridExplicitEnterMode","__name","layoutData","applyTreeGridDefaultEnterMode","grid","enterMode","actionConfig","mutableGrid","isTreeGridInlineUrl","url","treeGridInlineBlobUrlCache","resolveTreeGridInlineUrl","cachedUrl","meta","encodedData","match","mimeType","decodedData","bytes","index","blobUrl","appendNoCacheQuery","hashIndex","baseUrl","hashFragment","querySeparator","syncTreeGridDeletedRowState","row","options","canEdit","highlightColumns","highlightBackgroundColor","col","resolveTreeGridDataUrl","dataUrl","isTreeGridPromiseLike","value","applyTreeGridBeforeRowUndeleteAction","action","syncHasDisplayDataRows","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","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","resolveTreeGridColorRgb","colorNumber","resolveTreeGridColorNumber","stringifyTreeGridRgbColor","channel","blendTreeGridRgbColor","baseColor","overlayColor","blendRatio","blendChannel","baseChannel","overlayChannel","getTreeGridClassTokens","className","hasTreeGridCellHighlightClass","classTokens","token","isTreeGridSelectedCellState","selected","resolveTreeGridSelectedHighlightBackgroundColor","selectedCellBackgroundColor","selectedColor","highlightColor","TREEGRID_CELL_HIGHLIGHT_COLOR","resolveTreeGridSelectedHighlightTextColor","textColorValue","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","hoverCellBackgroundColor","selectedHighlightBackgroundColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","layoutHasExplicitEnterModeRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","editableCellBackgroundColorValueRef","changedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","setIsTreeGridReady","initialEventHandlers","_b","type","beforeRowUndeleteHandler","scheduleAction","result","debouncedRowClickHandler","debounce","x","y","event","internalResult","_c","deleteType","addedRowHighlightColumns","isTreeGridRowAddedById","getTreeGridAddedRowHighlightColumns","attr","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","valueChangedHandler","selectedRows","autoupdate","logTreeGridPerf","_grid","source","data","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  var f = Object.defineProperty;
2
2
  var t = (e, _) => f(e, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/constants2.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/constants3.js";
4
4
  var i;
5
5
  function E() {
6
6
  if (i) return r;
@@ -1,6 +1,6 @@
1
1
  var q = Object.defineProperty;
2
2
  var O = (C, _) => q(C, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index7.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index6.js";
4
4
  import { __require as d } from "./CODE128_AUTO.js";
5
5
  import { __require as n } from "./CODE128A.js";
6
6
  import { __require as m } from "./CODE128B.js";
@@ -1,6 +1,6 @@
1
1
  var w = Object.defineProperty;
2
2
  var n = (f, a) => w(f, "name", { value: a, configurable: !0 });
3
- import { __exports as i } from "../../../../../../../../_virtual/index6.js";
3
+ import { __exports as i } from "../../../../../../../../_virtual/index5.js";
4
4
  import { __require as k } from "../Barcode.js";
5
5
  var _;
6
6
  function P() {
@@ -1,6 +1,6 @@
1
1
  var D = Object.defineProperty;
2
2
  var C = (u, t) => D(u, "name", { value: t, configurable: !0 });
3
- import { __exports as e } from "../../../../../../../../_virtual/index13.js";
3
+ import { __exports as e } from "../../../../../../../../_virtual/index12.js";
4
4
  import { __require as O } from "./CODE93.js";
5
5
  import { __require as E } from "./CODE93FullASCII.js";
6
6
  var l;
@@ -1,6 +1,6 @@
1
1
  var C = Object.defineProperty;
2
2
  var i = (u, a) => C(u, "name", { value: a, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index8.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index7.js";
4
4
  import { __require as U } from "./EAN13.js";
5
5
  import { __require as s } from "./EAN8.js";
6
6
  import { __require as l } from "./EAN5.js";
@@ -1,6 +1,6 @@
1
1
  var b = Object.defineProperty;
2
2
  var r = (a, f) => b(a, "name", { value: f, configurable: !0 });
3
- import { __exports as u } from "../../../../../../../../_virtual/index14.js";
3
+ import { __exports as u } from "../../../../../../../../_virtual/index13.js";
4
4
  import { __require as p } from "../Barcode.js";
5
5
  var c;
6
6
  function w() {
@@ -1,6 +1,6 @@
1
1
  var o = Object.defineProperty;
2
2
  var r = (n, s) => o(n, "name", { value: s, configurable: !0 });
3
- import { __exports as e } from "../../../../../../../../_virtual/constants3.js";
3
+ import { __exports as e } from "../../../../../../../../_virtual/constants2.js";
4
4
  var t;
5
5
  function _() {
6
6
  return t ? e : (t = 1, Object.defineProperty(e, "__esModule", {
@@ -1,6 +1,6 @@
1
1
  var T = Object.defineProperty;
2
2
  var i = (u, t) => T(u, "name", { value: t, configurable: !0 });
3
- import { __exports as e } from "../../../../../../../../_virtual/index9.js";
3
+ import { __exports as e } from "../../../../../../../../_virtual/index8.js";
4
4
  import { __require as f } from "./ITF.js";
5
5
  import { __require as n } from "./ITF14.js";
6
6
  var a;
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var I = (M, _) => v(M, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index10.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index9.js";
4
4
  import { __require as n } from "./MSI.js";
5
5
  import { __require as s } from "./MSI10.js";
6
6
  import { __require as l } from "./MSI11.js";
@@ -1,6 +1,6 @@
1
1
  var p = Object.defineProperty;
2
2
  var a = (f, c) => p(f, "name", { value: c, configurable: !0 });
3
- import { __exports as i } from "../../../../../../../../_virtual/index12.js";
3
+ import { __exports as i } from "../../../../../../../../_virtual/index11.js";
4
4
  import { __require as g } from "../Barcode.js";
5
5
  var h;
6
6
  function w() {
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var i = (u, f) => v(u, "name", { value: f, configurable: !0 });
3
- import { __exports as a } from "../../../../../../../../_virtual/index11.js";
3
+ import { __exports as a } from "../../../../../../../../_virtual/index10.js";
4
4
  import { __require as y } from "../Barcode.js";
5
5
  var c;
6
6
  function q() {
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var _ = (a, t) => v(a, "name", { value: t, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../_virtual/index15.js";
3
+ import { __exports as r } from "../../../../../../../_virtual/index14.js";
4
4
  import { __require as f } from "./canvas.js";
5
5
  import { __require as q } from "./svg.js";
6
6
  import { __require as c } from "./object.js";
@@ -1,6 +1,6 @@
1
1
  var i = Object.defineProperty;
2
2
  var r = (t, s) => i(t, "name", { value: s, configurable: !0 });
3
- import { __module as e } from "../../../../../_virtual/index5.js";
3
+ import { __module as e } from "../../../../../_virtual/index15.js";
4
4
  import { __require as u } from "./cjs/react-is.production.min.js";
5
5
  import { __require as p } from "./cjs/react-is.development.js";
6
6
  var o;