@owp/core 2.5.28 → 2.5.30
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/index20.js +2 -2
- package/dist/_virtual/index21.js +2 -2
- package/dist/_virtual/index22.js +2 -2
- package/dist/components/OwpTable/OwpDataTable.js +109 -104
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +475 -427
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +335 -288
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/gridTheme.js +8 -7
- package/dist/constants/gridTheme.js.map +1 -1
- package/dist/constants/treeGrid.js +26 -25
- package/dist/constants/treeGrid.js.map +1 -1
- package/dist/constants.js +25 -24
- package/dist/features/themePreview/components/ThemePreviewCanvasSections.js +120 -114
- package/dist/features/themePreview/components/ThemePreviewCanvasSections.js.map +1 -1
- package/dist/features/themePreview/configs/grid.js +1 -0
- package/dist/features/themePreview/configs/grid.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewDefinitions.js +4 -0
- package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
- package/dist/index.js +54 -56
- package/dist/index.js.map +1 -1
- package/dist/layout/components/menus/PasswordChangeMenu.js +5 -5
- package/dist/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/VisibilityOff.js.map +1 -1
- package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js +1 -1
- package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/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/owp-app.css +1 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +2 -1
- package/dist/types/constants/gridTheme.d.ts +2 -0
- package/dist/types/constants/treeGrid.d.ts +1 -0
- package/dist/types/features/themePreview/configs/grid.d.ts +1 -0
- package/dist/types/features/themePreview/configs/settings.d.ts +1 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/types/OwpGridThemeTypes.d.ts +1 -0
- package/dist/types/utils/treeGridUtil.d.ts +42 -0
- package/dist/utils/treeGridUtil.js +256 -163
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +31 -30
- package/package.json +1 -2
- package/dist/components/OwpMrtTable/OwpMrtTable.js +0 -717
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +0 -1
- package/dist/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.js +0 -54
- package/dist/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.js.map +0 -1
- package/dist/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.js +0 -102
- package/dist/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.js.map +0 -1
- package/dist/components/OwpMrtTable/utils/parseFromValuesOrFunc.js +0 -7
- package/dist/components/OwpMrtTable/utils/parseFromValuesOrFunc.js.map +0 -1
- package/dist/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/ArrowDownward.js +0 -9
- package/dist/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/ArrowDownward.js.map +0 -1
- package/dist/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/ArrowDropDownRounded.js +0 -9
- package/dist/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/ArrowDropDownRounded.js.map +0 -1
- package/dist/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/ArrowRight.js +0 -9
- package/dist/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/ArrowRight.js.map +0 -1
- package/dist/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/Cancel.js +0 -9
- package/dist/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/Cancel.js.map +0 -1
- package/dist/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/ClearAll.js +0 -9
- package/dist/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/ClearAll.js.map +0 -1
- package/dist/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/ContentCopy.js +0 -9
- package/dist/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/ContentCopy.js.map +0 -1
- package/dist/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/DensityLarge.js +0 -9
- package/dist/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/DensityLarge.js.map +0 -1
- package/dist/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/DensityMedium.js +0 -9
- package/dist/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/DensityMedium.js.map +0 -1
- package/dist/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/DensitySmall.js +0 -9
- package/dist/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/DensitySmall.js.map +0 -1
- package/dist/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/DragHandle.js +0 -9
- package/dist/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/DragHandle.js.map +0 -1
- package/dist/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/DynamicFeed.js +0 -11
- package/dist/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/DynamicFeed.js.map +0 -1
- package/dist/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/Edit.js +0 -9
- package/dist/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/Edit.js.map +0 -1
- package/dist/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/ExpandMore.js +0 -9
- package/dist/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/ExpandMore.js.map +0 -1
- package/dist/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/FilterAlt.js +0 -9
- package/dist/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/FilterAlt.js.map +0 -1
- package/dist/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/FilterList.js +0 -9
- package/dist/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/FilterList.js.map +0 -1
- package/dist/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/FilterListOff.js +0 -9
- package/dist/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/FilterListOff.js.map +0 -1
- package/dist/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/FirstPage.js +0 -9
- package/dist/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/FirstPage.js.map +0 -1
- package/dist/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/Fullscreen.js +0 -9
- package/dist/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/Fullscreen.js.map +0 -1
- package/dist/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/FullscreenExit.js +0 -9
- package/dist/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/FullscreenExit.js.map +0 -1
- package/dist/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/KeyboardDoubleArrowDown.js +0 -11
- package/dist/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/KeyboardDoubleArrowDown.js.map +0 -1
- package/dist/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/LastPage.js +0 -9
- package/dist/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/LastPage.js.map +0 -1
- package/dist/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/MoreHoriz.js +0 -9
- package/dist/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/MoreHoriz.js.map +0 -1
- package/dist/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/PushPin.js +0 -10
- package/dist/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/PushPin.js.map +0 -1
- package/dist/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/Save.js +0 -9
- package/dist/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/Save.js.map +0 -1
- package/dist/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/SearchOff.js +0 -11
- package/dist/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/SearchOff.js.map +0 -1
- package/dist/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/Sort.js +0 -9
- package/dist/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/Sort.js.map +0 -1
- package/dist/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/SyncAlt.js +0 -9
- package/dist/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/SyncAlt.js.map +0 -1
- package/dist/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/UnfoldMoreRounded.js +0 -9
- package/dist/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/UnfoldMoreRounded.js.map +0 -1
- package/dist/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/ViewColumn.js +0 -9
- package/dist/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/ViewColumn.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_match-sorter-utils@8.19.4/node_modules/@tanstack/match-sorter-utils/build/lib/index.js +0 -554
- package/dist/node_modules/.pnpm/@tanstack_match-sorter-utils@8.19.4/node_modules/@tanstack/match-sorter-utils/build/lib/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-table/build/lib/index.js +0 -95
- package/dist/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-table/build/lib/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_react-virtual@3.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-virtual/dist/esm/index.js +0 -40
- package/dist/node_modules/.pnpm/@tanstack_react-virtual@3.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@tanstack/react-virtual/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js +0 -2055
- package/dist/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/index.js +0 -454
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/utils.js +0 -54
- package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/utils.js.map +0 -1
- package/dist/node_modules/.pnpm/highlight-words@2.0.0/node_modules/highlight-words/dist/highlight-words.js +0 -92
- package/dist/node_modules/.pnpm/highlight-words@2.0.0/node_modules/highlight-words/dist/highlight-words.js.map +0 -1
- package/dist/node_modules/.pnpm/material-react-table@3.2.1_69126b2b17f4a182bc981f3ab8d41a62/node_modules/material-react-table/dist/index.esm.js +0 -2440
- package/dist/node_modules/.pnpm/material-react-table@3.2.1_69126b2b17f4a182bc981f3ab8d41a62/node_modules/material-react-table/dist/index.esm.js.map +0 -1
- package/dist/node_modules/.pnpm/material-react-table@3.2.1_69126b2b17f4a182bc981f3ab8d41a62/node_modules/material-react-table/locales/ko/index.esm.js +0 -98
- package/dist/node_modules/.pnpm/material-react-table@3.2.1_69126b2b17f4a182bc981f3ab8d41a62/node_modules/material-react-table/locales/ko/index.esm.js.map +0 -1
- package/dist/types/components/OwpMrtTable/OwpMrtTable.d.ts +0 -25
- package/dist/types/components/OwpMrtTable/index.d.ts +0 -1
- package/dist/types/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.d.ts +0 -14
- package/dist/types/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.d.ts +0 -6
- package/dist/types/components/OwpMrtTable/utils/parseFromValuesOrFunc.d.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpDataTable.js","sources":["../../../src/components/OwpTable/OwpDataTable.tsx"],"sourcesContent":["import {\n resolveOwpGridTheme,\n type OwpResolvedGridThemeConfigType,\n} from '@/constants/gridTheme';\nimport {\n resolveOwpTableTheme,\n type OwpResolvedTableThemeConfigType,\n} from '@/constants/tableTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport {\n getTreeGridFontFaceStyles,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { TextField, Typography, TypographyProps } from '@mui/material';\nimport Checkbox, { checkboxClasses } from '@mui/material/Checkbox';\nimport { grey } from '@mui/material/colors';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport Paper from '@mui/material/Paper';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell, { TableCellProps } from '@mui/material/TableCell';\nimport TableContainer, { TableContainerProps } from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport { type SxProps, type Theme } from '@mui/material/styles';\nimport { isArray, isBoolean, isEmpty, isEqual, isNumber, uniqueId } from 'es-toolkit/compat';\nimport { ChangeEvent, MouseEvent, ReactNode, useEffect, useMemo, useRef, useState } from 'react';\nimport { OwpNumberField } from '../OwpNumberField';\nimport {\n getTreeGridBodyCellSx,\n getTreeGridBodyRowSx,\n getTreeGridContainerSx,\n getTreeGridHeaderCellSx,\n TREEGRID_TABLE_BODY_BORDER_COLOR,\n TREEGRID_TABLE_HEADER_BORDER_COLOR,\n} from './internal/treeGridTableStyle';\nimport {\n DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n defaultStyledTableTheme,\n defaultTableSortLabelSx,\n getDefaultTableCellSx,\n getDefaultTableHeaderCellSx,\n getDefaultTableHeaderLabelSx,\n} from './internal/defaultTableStyle';\nimport { OwpTableTotalCount } from './internal/OwpTableTotalCount';\nimport { toTableRadiusCssValue } from './utils/tableSx';\n\ntype Row = object;\ntype TableCellAlign = NonNullable<TableCellProps['align']>;\n\ninterface HeadCell {\n enablePadding?: boolean;\n id: string;\n label: string;\n sx?: TypographyProps['sx'];\n inputLabel?: string;\n rangeKey?: string;\n rangeLabel?: { start: string; end: string };\n align?: string;\n valueAlign?: string;\n canTextField?: boolean;\n textFieldType?: string;\n}\n\ninterface DataTableHeadProps {\n sx?: TableCellProps['sx'];\n headCells: HeadCell[];\n numSelected: number;\n onRequestSort: (event: MouseEvent<unknown>, property: string) => void;\n onSelectAllClick: (event: ChangeEvent<HTMLInputElement>) => void;\n order: Order;\n orderBy: string;\n rowCount: number;\n canCheckbox?: boolean;\n canUseOrderBy?: boolean;\n canTableRadiusZero?: boolean;\n canUseTreeGridStyle?: boolean;\n gridTheme: OwpResolvedGridThemeConfigType;\n tableTheme: OwpResolvedTableThemeConfigType;\n}\n\ninterface OwpDataTableProps<T extends Row = Row> {\n className?: string;\n sx?: TableContainerProps['sx'];\n headSx?: TableCellProps['sx'];\n headCells: HeadCell[];\n rows?: T[];\n canCheckbox?: boolean;\n canTotalCountRow?: boolean;\n selected?: T[];\n onSelect?: (rows: T[] | []) => void;\n onBlur?: (evt: OwpDataTableBlurEvent, dataIndex: number) => void;\n canSelectingSingle?: boolean;\n canUseOrderBy?: boolean;\n canTableRadiusZero?: boolean;\n canUseTableRadius?: boolean;\n canUseTreeGridStyle?: boolean;\n tableBorderRadius?: string | number;\n fixedRowCount?: number;\n}\n\nconst defaultHeadCellsSx = (\n tableTheme: OwpResolvedTableThemeConfigType,\n fallbackBackgroundColor: string,\n) =>\n ({\n ...getDefaultTableHeaderCellSx(tableTheme, fallbackBackgroundColor),\n borderBottom: `1px solid ${tableTheme.borderColor}`,\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit',\n }) as const;\n\nconst headerBorderRight = {\n borderRight: `1px solid ${TREEGRID_TABLE_HEADER_BORDER_COLOR}`,\n};\n\n/** 기본 body cell 우측선 sx */\nconst getDefaultRowBorderRightSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n borderRight: `1px solid ${tableTheme.borderColor}`,\n }) as const;\n\nconst treeGridRowBorderRight = {\n borderRight: `1px solid ${TREEGRID_TABLE_BODY_BORDER_COLOR}`,\n};\n\nconst getDefaultTableBodyCellSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n ...getDefaultTableCellSx(tableTheme),\n }) as const;\n\n/** 기본 header cell 구분선 sx */\nconst getDefaultHeaderDividerSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n borderRight: `1px solid ${tableTheme.borderColor}`,\n }) as const;\n\nconst tableRadiusZeroSx = {\n borderRadius: 0,\n} as const;\nconst defaultTableRadiusSx = {\n borderRadius: DEFAULT_TABLE_RADIUS,\n} as const;\n\nconst lastRowRadiusZeroSx = {\n '& > th, & > td': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n} as const;\n\nconst defaultLastRowBottomBorderNoneSx = {\n '& > th, & > td': {\n borderBottom: 'none',\n },\n} as const;\n\nconst treeGridSortLabelSx = {\n '&.MuiTableSortLabel-root': {\n color: 'inherit',\n display: 'flex',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n justifyContent: 'center',\n lineHeight: 'inherit',\n overflow: 'hidden',\n position: 'relative',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n width: '100%',\n },\n '&.MuiTableSortLabel-root:hover': {\n color: 'inherit',\n },\n '&.Mui-active': {\n color: 'inherit',\n },\n '& .MuiTableSortLabel-icon': {\n color: 'currentColor !important',\n margin: 0,\n position: 'absolute',\n right: 0,\n },\n} as const;\n\n/**\n * sx 병합 유틸\n * @param styles 병합 대상 sx 목록\n */\nconst mergeSx = (...styles: Array<SxProps<Theme> | undefined | false>): SxProps<Theme> =>\n styles.reduce<Array<Exclude<SxProps<Theme>, readonly unknown[]>>>((acc, style) => {\n if (!style) {\n return acc;\n }\n\n return [...acc, ...(isArray(style) ? style : [style])];\n }, []) as SxProps<Theme>;\n\n/**\n * 고정 row 수 계산\n * @param fixedRowCount 고정 row 수\n */\nconst getFixedRowCount = (fixedRowCount?: number) => {\n if (!isNumber(fixedRowCount) || fixedRowCount < 1) {\n return undefined;\n }\n\n return fixedRowCount;\n};\n\n/**\n * 빈 row 목록 생성\n * @param count 생성 수\n */\nconst createEmptyRows = (count: number) => Array.from({ length: count }, () => ({}) as Row);\n\n/**\n * TableCell align 정규화\n * @param align align 값\n * @param fallback 기본 align 값\n */\nconst getTableCellAlign = (align: string | undefined, fallback: TableCellAlign): TableCellAlign => {\n switch (align) {\n case 'center':\n case 'right':\n case 'left':\n case 'inherit':\n case 'justify':\n return align;\n default:\n return fallback;\n }\n};\n\n/**\n * row 값 조회\n * @param row row 값\n * @param key 조회 key\n */\nconst getRowValue = (row: Row, key?: string) => {\n if (!key) {\n return undefined;\n }\n\n return (row as Record<string, unknown>)?.[key];\n};\n\nconst getComparableValue = (value: unknown) => {\n if (typeof value === 'string' || isNumber(value)) {\n return value;\n }\n\n return undefined;\n};\n\nfunction descendingComparator(a: Row, b: Row, orderBy: string) {\n const aValue = getComparableValue(getRowValue(a, orderBy));\n const bValue = getComparableValue(getRowValue(b, orderBy));\n\n if (bValue == null && aValue == null) {\n return 0;\n }\n if (bValue == null) {\n return -1;\n }\n if (aValue == null) {\n return 1;\n }\n if (bValue < aValue) {\n return -1;\n }\n if (bValue > aValue) {\n return 1;\n }\n return 0;\n}\n\ntype Order = 'asc' | 'desc';\ntype OwpDataTableBlurEvent = Record<string, unknown> & {\n target: {\n value: string | number | undefined;\n };\n};\n\nfunction getComparator(order: Order, orderBy: string): (a: Row, b: Row) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n\ntype RowRangeValue = {\n start?: string | number;\n end?: string | number;\n};\n\nconst getRowRangeValue = (row: Row, rangeKey?: string) => {\n if (!rangeKey) {\n return undefined;\n }\n\n return getRowValue(row, rangeKey) as RowRangeValue | undefined;\n};\n\nconst getRangeLabel = (row: Row, cell: HeadCell) => {\n if (!(cell.inputLabel ?? cell.rangeKey)) {\n return '';\n }\n\n const rangeValue = getRowRangeValue(row, cell.rangeKey);\n\n return `${cell.rangeLabel?.start ? `${cell.rangeLabel?.start}: ` : ''}${rangeValue?.start} ~ ${cell.rangeLabel?.end ? `${cell.rangeLabel?.end}: ` : ''}${rangeValue?.end}`;\n};\n\nconst getRowTabIndex = (row: Row, fallbackIndex: number) => {\n const rowIndex = getRowValue(row, 'index');\n\n return isNumber(rowIndex) ? rowIndex : fallbackIndex;\n};\n\nconst getEditableCellSx = (\n valueAlign?: HeadCell['valueAlign'],\n fontSize?: number | string,\n) => ({\n '& input': {\n fontSize,\n textAlign: valueAlign ?? 'center',\n },\n '& .MuiInputBase-input': {\n fontSize,\n },\n height: 34,\n});\n\nfunction DataTableHead(props: DataTableHeadProps) {\n const {\n sx,\n headCells,\n onSelectAllClick,\n order,\n orderBy,\n numSelected,\n rowCount,\n onRequestSort,\n canCheckbox,\n canUseOrderBy = true,\n canTableRadiusZero,\n canUseTreeGridStyle,\n gridTheme,\n tableTheme,\n } = props;\n const createSortHandler = (property: string) => (event: MouseEvent<unknown>) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead sx={mergeSx(canTableRadiusZero && tableRadiusZeroSx)}>\n <TableRow\n sx={mergeSx(\n canUseTreeGridStyle && { height: gridTheme.header.height },\n canTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {canCheckbox && (\n <TableCell\n padding=\"checkbox\"\n sx={mergeSx(\n {\n ...defaultHeadCellsSx(tableTheme, DEFAULT_TABLE_HEADER_BACKGROUND_COLOR),\n },\n !canUseTreeGridStyle && getDefaultHeaderDividerSx(tableTheme),\n canUseTreeGridStyle && headerBorderRight,\n canUseTreeGridStyle && getTreeGridHeaderCellSx(gridTheme),\n canTableRadiusZero && tableRadiusZeroSx,\n sx,\n )}\n >\n <Checkbox\n color=\"default\"\n sx={mergeSx(\n {\n [`&, &.${checkboxClasses.checked}`]: canUseTreeGridStyle\n ? { color: grey[50] }\n : { color: 'inherit' },\n },\n canUseTreeGridStyle && { p: 0 },\n )}\n indeterminate={numSelected > 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n </TableCell>\n )}\n {headCells.map((headCell, index) => (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'pl-20'}\n key={headCell.id}\n align={getTableCellAlign(headCell.align, 'center')}\n padding={headCell.enablePadding ? 'normal' : 'none'}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={mergeSx(\n {\n ...defaultHeadCellsSx(tableTheme, DEFAULT_TABLE_HEADER_BACKGROUND_COLOR),\n },\n !canUseTreeGridStyle &&\n headCells.length - 1 !== index &&\n getDefaultHeaderDividerSx(tableTheme),\n canUseTreeGridStyle && headCells.length - 1 !== index && headerBorderRight,\n canUseTreeGridStyle && getTreeGridHeaderCellSx(gridTheme),\n canTableRadiusZero && tableRadiusZeroSx,\n sx,\n canUseTreeGridStyle && headCell?.sx,\n )}\n >\n {canUseOrderBy ? (\n <TableSortLabel\n sx={canUseTreeGridStyle ? treeGridSortLabelSx : defaultTableSortLabelSx}\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {canUseTreeGridStyle ? (\n headCell.label\n ) : (\n <Typography sx={mergeSx(getDefaultTableHeaderLabelSx(tableTheme), headCell?.sx)}>\n {headCell.label}\n </Typography>\n )}\n </TableSortLabel>\n ) : canUseTreeGridStyle ? (\n headCell.label\n ) : (\n <Typography sx={mergeSx(getDefaultTableHeaderLabelSx(tableTheme), headCell?.sx)}>\n {headCell.label}\n </Typography>\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n}\n\n/**\n * OwpDataTable 컴포넌트\n * @param className CSS 클래스명\n * @param sx sx 값\n * @param headSx headSx 값\n * @param headCells headCells 값\n * @param rows 행 데이터 목록\n * @param selected selected 값\n * @param canTableRadiusZero 테이블 radius 0 사용 여부\n * @param canUseTableRadius 테이블 radius 사용 여부\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n * @param tableBorderRadius 테이블 radius 값\n * @param fixedRowCount 고정 row 수\n */\nexport function OwpDataTable<T extends Row = Row>({\n className,\n sx,\n headSx,\n headCells,\n rows,\n selected,\n canCheckbox,\n canTotalCountRow,\n canSelectingSingle,\n canUseOrderBy = true,\n canTableRadiusZero,\n canUseTableRadius = false,\n canUseTreeGridStyle = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n fixedRowCount,\n onSelect,\n onBlur,\n}: OwpDataTableProps<T>) {\n const currentSettings = useGetCurrentSettings();\n const [order, setOrder] = useState<Order>('asc');\n const [orderBy, setOrderBy] = useState<string>('');\n const [selectedRows, setSelectedRows] = useState<T[] | []>([]);\n const tableIdRef = useRef(uniqueId('owp-data-table'));\n const useFixedRowCount = useMemo(() => getFixedRowCount(fixedRowCount), [fixedRowCount]);\n const resolvedRows = useMemo(() => {\n const nextRows = isArray(rows) ? rows : [];\n\n return useFixedRowCount ? nextRows.slice(0, useFixedRowCount) : nextRows;\n }, [rows, useFixedRowCount]);\n const resolvedHeadCells = useMemo(() => headCells ?? [], [headCells]);\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentSettings?.theme?.main?.grid),\n [currentSettings],\n );\n const tableTheme = useMemo(\n () => resolveOwpTableTheme(currentSettings?.theme?.main?.table, defaultStyledTableTheme),\n [currentSettings],\n );\n const tableRowBackgroundColor = currentSettings?.theme?.main?.table?.row?.backgroundColor;\n const tableRowHoverBackgroundColor =\n currentSettings?.theme?.main?.table?.row?.hoverBackgroundColor;\n const tableRowSelectedBackgroundColor =\n currentSettings?.theme?.main?.table?.row?.selectedBackgroundColor;\n const useTableRadiusZero = !!canTableRadiusZero;\n const tableContainerRadiusSx = useTableRadiusZero\n ? tableRadiusZeroSx\n : canUseTreeGridStyle && canUseTableRadius\n ? {\n borderRadius: toTableRadiusCssValue(tableBorderRadius),\n overflow: 'hidden',\n }\n : !canUseTreeGridStyle\n ? defaultTableRadiusSx\n : undefined;\n const useCheckBox = isBoolean(canCheckbox) ? canCheckbox : true;\n const useTotalCountRow = isBoolean(canTotalCountRow) ? canTotalCountRow : true;\n\n useEffect(() => {\n if (!isEmpty(selected)) {\n setSelectedRows(selected);\n }\n }, [selected]);\n\n useEffect(() => {\n onSelect?.(selectedRows);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedRows]);\n\n const handleRequestSort = (_: MouseEvent<unknown>, property: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n setSelectedRows(resolvedRows);\n return;\n }\n setSelectedRows([]);\n };\n\n const handleClick = (_: MouseEvent<unknown>, row: T) => {\n if (canSelectingSingle) {\n setSelectedRows([row]);\n return;\n }\n setSelectedRows((prev: T[]) => {\n const isIncluded = !!prev.find((item) => isEqual(item, row));\n return isIncluded ? prev?.filter((item: T) => !isEqual(item, row)) : [...prev, row];\n });\n };\n\n const visibleRows = useMemo(\n () => [...resolvedRows].sort(getComparator(order, orderBy)),\n [order, orderBy, resolvedRows],\n );\n const displayRows = useMemo(() => {\n if (!useFixedRowCount || visibleRows.length >= useFixedRowCount) {\n return visibleRows;\n }\n\n return [...visibleRows, ...createEmptyRows(useFixedRowCount - visibleRows.length)];\n }, [useFixedRowCount, visibleRows]);\n\n return (\n <Paper\n className={className}\n sx={mergeSx(\n { width: '100%' },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor && { backgroundColor: tableRowBackgroundColor },\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n tableContainerRadiusSx,\n )}\n >\n {canUseTreeGridStyle && <GlobalStyles styles={getTreeGridFontFaceStyles()} />}\n <TableContainer\n sx={mergeSx(\n { height: useFixedRowCount ? 'auto' : 500 },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor && { backgroundColor: tableRowBackgroundColor },\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n useFixedRowCount && { overflowY: 'hidden' },\n tableContainerRadiusSx,\n sx,\n )}\n >\n <Table\n stickyHeader={!canUseTreeGridStyle}\n sx={mergeSx({ minWidth: 200 }, useTableRadiusZero && tableRadiusZeroSx)}\n aria-labelledby=\"owp-data-table\"\n >\n <DataTableHead\n sx={headSx}\n headCells={resolvedHeadCells}\n gridTheme={treeGridTheme}\n tableTheme={tableTheme}\n numSelected={selectedRows.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n canCheckbox={!canSelectingSingle && useCheckBox}\n canUseOrderBy={canUseOrderBy}\n canTableRadiusZero={useTableRadiusZero}\n canUseTreeGridStyle={canUseTreeGridStyle}\n onRequestSort={handleRequestSort}\n rowCount={resolvedRows.length}\n />\n <TableBody sx={mergeSx(useTableRadiusZero && tableRadiusZeroSx)}>\n {displayRows.map((row, index) => {\n const isItemSelected = selectedRows.some((item) => isEqual(item, row));\n const isLastRow = displayRows.length - 1 === index;\n const isPlaceholderRow = useFixedRowCount ? index >= visibleRows.length : false;\n const labelId = `${tableIdRef.current}-${index}`;\n\n return (\n <TableRow\n hover\n role={canUseTreeGridStyle ? undefined : 'checkbox'}\n aria-checked={canUseTreeGridStyle ? undefined : isItemSelected}\n tabIndex={-1}\n key={`${labelId}-row-${index}`}\n selected={isItemSelected}\n sx={mergeSx(\n { cursor: isPlaceholderRow ? 'default' : 'pointer' },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor &&\n !isItemSelected && { backgroundColor: tableRowBackgroundColor },\n !canUseTreeGridStyle &&\n tableRowHoverBackgroundColor &&\n !isPlaceholderRow &&\n !isItemSelected && {\n '&.MuiTableRow-hover:hover': {\n backgroundColor: tableRowHoverBackgroundColor,\n },\n },\n !canUseTreeGridStyle &&\n tableRowSelectedBackgroundColor &&\n isItemSelected && {\n '&.Mui-selected, &.Mui-selected:hover': {\n backgroundColor: tableRowSelectedBackgroundColor,\n },\n },\n canUseTreeGridStyle &&\n getTreeGridBodyRowSx(treeGridTheme, {\n canHover: !isPlaceholderRow,\n selected: isItemSelected,\n }),\n !canUseTreeGridStyle && isLastRow && defaultLastRowBottomBorderNoneSx,\n canUseTreeGridStyle && { height: 30 },\n useTableRadiusZero && tableRadiusZeroSx,\n useTableRadiusZero && isLastRow && lastRowRadiusZeroSx,\n )}\n >\n {useCheckBox && (\n <TableCell\n padding=\"checkbox\"\n onClick={(event) => {\n if (!isPlaceholderRow) {\n handleClick(event, row as T);\n }\n }}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n <Checkbox\n color=\"default\"\n checked={isItemSelected}\n disabled={isPlaceholderRow}\n sx={mergeSx(canUseTreeGridStyle && { p: 0 })}\n />\n </TableCell>\n )}\n {resolvedHeadCells.map((cell, cellIndex) => {\n const _key = `${labelId}-row-${index}-cell-${cellIndex}`;\n const rangeLabel = getRangeLabel(row, cell);\n const rowTabIndex = getRowTabIndex(row, index);\n const cellValue = getRowValue(row, String(cell?.id));\n if (cellIndex === 0) {\n return (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'px-4'}\n key={_key}\n component={canUseTreeGridStyle ? 'td' : 'th'}\n id={labelId}\n scope={canUseTreeGridStyle ? undefined : 'row'}\n padding=\"none\"\n role={canUseTreeGridStyle ? 'cell' : undefined}\n align={getTableCellAlign(cell.valueAlign, 'left')}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n resolvedHeadCells.length > 1 &&\n (canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme)),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {cellValue as ReactNode}\n </TableCell>\n );\n }\n\n return (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'px-4'}\n key={_key}\n role={canUseTreeGridStyle ? 'cell' : undefined}\n align={getTableCellAlign(cell.valueAlign, 'left')}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n resolvedHeadCells.length - 1 !== cellIndex &&\n (canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme)),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {cell?.canTextField ? (\n cell?.textFieldType === 'number' ? (\n <OwpNumberField\n variant=\"standard\"\n decimalScale={2}\n label={rangeLabel}\n fullWidth\n size=\"small\"\n sx={getEditableCellSx(\n cell?.valueAlign,\n canUseTreeGridStyle\n ? treeGridTheme.cell.fontSize\n : tableTheme.cell.fontSize,\n )}\n slotProps={{\n input: {\n tabIndex: rowTabIndex,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n isAllowed={(values) => {\n const { floatValue } = values;\n const end = getRowRangeValue(row, cell?.rangeKey)?.end;\n\n if (isNumber(floatValue) && isNumber(end)) {\n return floatValue <= end;\n }\n\n return true;\n }}\n value={cellValue as string | number | undefined}\n onBlur={(evt) => {\n const start = getRowRangeValue(row, cell?.rangeKey)?.start;\n const nextValue = evt.target.value?.replace(/,/g, '');\n\n onBlur?.(\n {\n ...evt,\n target: {\n ...evt.target,\n value:\n isNumber(start) && nextValue !== ''\n ? Number(start > Number(nextValue) ? start : nextValue)\n : nextValue,\n },\n },\n rowTabIndex,\n );\n }}\n />\n ) : (\n <TextField\n variant=\"standard\"\n label={rangeLabel}\n fullWidth\n size=\"small\"\n sx={getEditableCellSx(\n cell?.valueAlign,\n canUseTreeGridStyle\n ? treeGridTheme.cell.fontSize\n : tableTheme.cell.fontSize,\n )}\n slotProps={{\n input: {\n tabIndex: rowTabIndex,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type={cell?.textFieldType ?? 'text'}\n defaultValue={\n cellValue as string | number | readonly string[] | undefined\n }\n onBlur={(evt) =>\n onBlur?.(\n { ...evt, target: { ...evt.target, value: evt.target.value } },\n rowTabIndex,\n )\n }\n />\n )\n ) : (\n (cellValue as ReactNode)\n )}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n {useTotalCountRow && (\n <OwpTableTotalCount\n dividerSx={mergeSx(useTableRadiusZero && tableRadiusZeroSx)}\n totalCount={resolvedRows.length}\n typographySx={mergeSx(\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n />\n )}\n </Paper>\n );\n}\n"],"names":["defaultHeadCellsSx","__name","tableTheme","fallbackBackgroundColor","getDefaultTableHeaderCellSx","headerBorderRight","TREEGRID_TABLE_HEADER_BORDER_COLOR","getDefaultRowBorderRightSx","treeGridRowBorderRight","TREEGRID_TABLE_BODY_BORDER_COLOR","getDefaultTableBodyCellSx","getDefaultTableCellSx","getDefaultHeaderDividerSx","tableRadiusZeroSx","defaultTableRadiusSx","DEFAULT_TABLE_RADIUS","lastRowRadiusZeroSx","defaultLastRowBottomBorderNoneSx","treeGridSortLabelSx","mergeSx","styles","acc","style","isArray","getFixedRowCount","fixedRowCount","isNumber","createEmptyRows","count","getTableCellAlign","align","fallback","getRowValue","row","key","getComparableValue","value","descendingComparator","a","b","orderBy","aValue","bValue","getComparator","order","getRowRangeValue","rangeKey","getRangeLabel","cell","rangeValue","_a","_b","_c","_d","getRowTabIndex","fallbackIndex","rowIndex","getEditableCellSx","valueAlign","fontSize","DataTableHead","props","sx","headCells","onSelectAllClick","numSelected","rowCount","onRequestSort","canCheckbox","canUseOrderBy","canTableRadiusZero","canUseTreeGridStyle","gridTheme","createSortHandler","property","event","TableHead","jsxs","TableRow","jsx","TableCell","DEFAULT_TABLE_HEADER_BACKGROUND_COLOR","getTreeGridHeaderCellSx","Checkbox","checkboxClasses","grey","headCell","index","TableSortLabel","defaultTableSortLabelSx","Typography","getDefaultTableHeaderLabelSx","OwpDataTable","className","headSx","rows","selected","canTotalCountRow","canSelectingSingle","canUseTableRadius","tableBorderRadius","onSelect","onBlur","currentSettings","useGetCurrentSettings","setOrder","useState","setOrderBy","selectedRows","setSelectedRows","tableIdRef","useRef","uniqueId","useFixedRowCount","useMemo","resolvedRows","nextRows","resolvedHeadCells","treeGridTheme","resolveOwpGridTheme","resolveOwpTableTheme","defaultStyledTableTheme","tableRowBackgroundColor","tableRowHoverBackgroundColor","_h","_g","_f","_e","tableRowSelectedBackgroundColor","_l","_k","_j","_i","useTableRadiusZero","tableContainerRadiusSx","toTableRadiusCssValue","useCheckBox","isBoolean","useTotalCountRow","useEffect","isEmpty","handleRequestSort","_","handleSelectAllClick","handleClick","prev","item","isEqual","visibleRows","displayRows","Paper","getTreeGridContainerSx","GlobalStyles","getTreeGridFontFaceStyles","TableContainer","Table","TableBody","isItemSelected","isLastRow","isPlaceholderRow","labelId","getTreeGridBodyRowSx","getTreeGridBodyCellSx","cellIndex","_key","rangeLabel","rowTabIndex","cellValue","OwpNumberField","values","floatValue","end","evt","start","nextValue","TextField","OwpTableTotalCount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpDataTable.js","sources":["../../../src/components/OwpTable/OwpDataTable.tsx"],"sourcesContent":["import {\n resolveOwpGridTheme,\n type OwpResolvedGridThemeConfigType,\n} from '@/constants/gridTheme';\nimport {\n resolveOwpTableTheme,\n type OwpResolvedTableThemeConfigType,\n} from '@/constants/tableTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport {\n getTreeGridFontFaceStyles,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { TextField, Typography, TypographyProps } from '@mui/material';\nimport Checkbox, { checkboxClasses } from '@mui/material/Checkbox';\nimport { grey } from '@mui/material/colors';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport Paper from '@mui/material/Paper';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell, { TableCellProps } from '@mui/material/TableCell';\nimport TableContainer, { TableContainerProps } from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport { type SxProps, type Theme } from '@mui/material/styles';\nimport { isArray, isBoolean, isEmpty, isEqual, isNumber, uniqueId } from 'es-toolkit/compat';\nimport { ChangeEvent, MouseEvent, ReactNode, useEffect, useMemo, useRef, useState } from 'react';\nimport { OwpNumberField } from '../OwpNumberField';\nimport {\n getTreeGridBodyCellSx,\n getTreeGridBodyRowSx,\n getTreeGridContainerSx,\n getTreeGridHeaderCellSx,\n TREEGRID_TABLE_BODY_BORDER_COLOR,\n TREEGRID_TABLE_HEADER_BORDER_COLOR,\n} from './internal/treeGridTableStyle';\nimport {\n DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n defaultStyledTableTheme,\n defaultTableSortLabelSx,\n getDefaultTableCellSx,\n getDefaultTableHeaderCellSx,\n getDefaultTableHeaderLabelSx,\n} from './internal/defaultTableStyle';\nimport { OwpTableTotalCount } from './internal/OwpTableTotalCount';\nimport { toTableRadiusCssValue } from './utils/tableSx';\n\ntype Row = object;\ntype TableCellAlign = NonNullable<TableCellProps['align']>;\n\ninterface HeadCell {\n enablePadding?: boolean;\n id: string;\n label: string;\n sx?: TypographyProps['sx'];\n inputLabel?: string;\n rangeKey?: string;\n rangeLabel?: { start: string; end: string };\n align?: string;\n valueAlign?: string;\n canTextField?: boolean;\n textFieldType?: string;\n}\n\ninterface DataTableHeadProps {\n sx?: TableCellProps['sx'];\n headCells: HeadCell[];\n numSelected: number;\n onRequestSort: (event: MouseEvent<unknown>, property: string) => void;\n onSelectAllClick: (event: ChangeEvent<HTMLInputElement>) => void;\n order: Order;\n orderBy: string;\n rowCount: number;\n canCheckbox?: boolean;\n canUseOrderBy?: boolean;\n canTableRadiusZero?: boolean;\n canUseTreeGridStyle?: boolean;\n gridTheme: OwpResolvedGridThemeConfigType;\n tableTheme: OwpResolvedTableThemeConfigType;\n}\n\ninterface OwpDataTableProps<T extends Row = Row> {\n className?: string;\n sx?: TableContainerProps['sx'];\n headSx?: TableCellProps['sx'];\n headCells: HeadCell[];\n rows?: T[];\n canCheckbox?: boolean;\n canTotalCountRow?: boolean;\n selected?: T[];\n onSelect?: (rows: T[] | []) => void;\n onBlur?: (evt: OwpDataTableBlurEvent, dataIndex: number) => void;\n canSelectingSingle?: boolean;\n canUseOrderBy?: boolean;\n canTableRadiusZero?: boolean;\n canUseTableRadius?: boolean;\n canUseTreeGridStyle?: boolean;\n tableBorderRadius?: string | number;\n fixedRowCount?: number;\n}\n\nconst defaultHeadCellsSx = (\n tableTheme: OwpResolvedTableThemeConfigType,\n fallbackBackgroundColor: string,\n) =>\n ({\n ...getDefaultTableHeaderCellSx(tableTheme, fallbackBackgroundColor),\n borderBottom: `1px solid ${tableTheme.borderColor}`,\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit',\n }) as const;\n\nconst headerBorderRight = {\n borderRight: `1px solid ${TREEGRID_TABLE_HEADER_BORDER_COLOR}`,\n};\n\n/** 기본 body cell 우측선 sx */\nconst getDefaultRowBorderRightSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n borderRight: `1px solid ${tableTheme.borderColor}`,\n }) as const;\n\nconst treeGridRowBorderRight = {\n borderRight: `1px solid ${TREEGRID_TABLE_BODY_BORDER_COLOR}`,\n};\n\nconst treeGridContainerFrameSx = {\n borderLeft: `1px solid ${TREEGRID_TABLE_BODY_BORDER_COLOR}`,\n boxSizing: 'border-box',\n} as const;\n\nconst getDefaultTableBodyCellSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n ...getDefaultTableCellSx(tableTheme),\n }) as const;\n\n/** 기본 header cell 구분선 sx */\nconst getDefaultHeaderDividerSx = (tableTheme: OwpResolvedTableThemeConfigType) =>\n ({\n borderRight: `1px solid ${tableTheme.borderColor}`,\n }) as const;\n\nconst tableRadiusZeroSx = {\n borderRadius: 0,\n} as const;\nconst defaultTableRadiusSx = {\n borderRadius: DEFAULT_TABLE_RADIUS,\n} as const;\n\nconst lastRowRadiusZeroSx = {\n '& > th, & > td': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n} as const;\n\nconst defaultLastRowBottomBorderNoneSx = {\n '& > th, & > td': {\n borderBottom: 'none',\n },\n} as const;\n\nconst treeGridSortLabelSx = {\n '&.MuiTableSortLabel-root': {\n color: 'inherit',\n display: 'flex',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n justifyContent: 'center',\n lineHeight: 'inherit',\n overflow: 'hidden',\n position: 'relative',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n width: '100%',\n },\n '&.MuiTableSortLabel-root:hover': {\n color: 'inherit',\n },\n '&.Mui-active': {\n color: 'inherit',\n },\n '& .MuiTableSortLabel-icon': {\n color: 'currentColor !important',\n margin: 0,\n position: 'absolute',\n right: 0,\n },\n} as const;\n\n/**\n * sx 병합 유틸\n * @param styles 병합 대상 sx 목록\n */\nconst mergeSx = (...styles: Array<SxProps<Theme> | undefined | false>): SxProps<Theme> =>\n styles.reduce<Array<Exclude<SxProps<Theme>, readonly unknown[]>>>((acc, style) => {\n if (!style) {\n return acc;\n }\n\n return [...acc, ...(isArray(style) ? style : [style])];\n }, []) as SxProps<Theme>;\n\n/**\n * 고정 row 수 계산\n * @param fixedRowCount 고정 row 수\n */\nconst getFixedRowCount = (fixedRowCount?: number) => {\n if (!isNumber(fixedRowCount) || fixedRowCount < 1) {\n return undefined;\n }\n\n return fixedRowCount;\n};\n\n/**\n * 빈 row 목록 생성\n * @param count 생성 수\n */\nconst createEmptyRows = (count: number) => Array.from({ length: count }, () => ({}) as Row);\n\n/**\n * TableCell align 정규화\n * @param align align 값\n * @param fallback 기본 align 값\n */\nconst getTableCellAlign = (align: string | undefined, fallback: TableCellAlign): TableCellAlign => {\n switch (align) {\n case 'center':\n case 'right':\n case 'left':\n case 'inherit':\n case 'justify':\n return align;\n default:\n return fallback;\n }\n};\n\n/**\n * row 값 조회\n * @param row row 값\n * @param key 조회 key\n */\nconst getRowValue = (row: Row, key?: string) => {\n if (!key) {\n return undefined;\n }\n\n return (row as Record<string, unknown>)?.[key];\n};\n\nconst getComparableValue = (value: unknown) => {\n if (typeof value === 'string' || isNumber(value)) {\n return value;\n }\n\n return undefined;\n};\n\nfunction descendingComparator(a: Row, b: Row, orderBy: string) {\n const aValue = getComparableValue(getRowValue(a, orderBy));\n const bValue = getComparableValue(getRowValue(b, orderBy));\n\n if (bValue == null && aValue == null) {\n return 0;\n }\n if (bValue == null) {\n return -1;\n }\n if (aValue == null) {\n return 1;\n }\n if (bValue < aValue) {\n return -1;\n }\n if (bValue > aValue) {\n return 1;\n }\n return 0;\n}\n\ntype Order = 'asc' | 'desc';\ntype OwpDataTableBlurEvent = Record<string, unknown> & {\n target: {\n value: string | number | undefined;\n };\n};\n\nfunction getComparator(order: Order, orderBy: string): (a: Row, b: Row) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n\ntype RowRangeValue = {\n start?: string | number;\n end?: string | number;\n};\n\nconst getRowRangeValue = (row: Row, rangeKey?: string) => {\n if (!rangeKey) {\n return undefined;\n }\n\n return getRowValue(row, rangeKey) as RowRangeValue | undefined;\n};\n\nconst getRangeLabel = (row: Row, cell: HeadCell) => {\n if (!(cell.inputLabel ?? cell.rangeKey)) {\n return '';\n }\n\n const rangeValue = getRowRangeValue(row, cell.rangeKey);\n\n return `${cell.rangeLabel?.start ? `${cell.rangeLabel?.start}: ` : ''}${rangeValue?.start} ~ ${cell.rangeLabel?.end ? `${cell.rangeLabel?.end}: ` : ''}${rangeValue?.end}`;\n};\n\nconst getRowTabIndex = (row: Row, fallbackIndex: number) => {\n const rowIndex = getRowValue(row, 'index');\n\n return isNumber(rowIndex) ? rowIndex : fallbackIndex;\n};\n\nconst getEditableCellSx = (\n valueAlign?: HeadCell['valueAlign'],\n fontSize?: number | string,\n) => ({\n '& input': {\n fontSize,\n textAlign: valueAlign ?? 'center',\n },\n '& .MuiInputBase-input': {\n fontSize,\n },\n height: 34,\n});\n\nfunction DataTableHead(props: DataTableHeadProps) {\n const {\n sx,\n headCells,\n onSelectAllClick,\n order,\n orderBy,\n numSelected,\n rowCount,\n onRequestSort,\n canCheckbox,\n canUseOrderBy = true,\n canTableRadiusZero,\n canUseTreeGridStyle,\n gridTheme,\n tableTheme,\n } = props;\n const createSortHandler = (property: string) => (event: MouseEvent<unknown>) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead sx={mergeSx(canTableRadiusZero && tableRadiusZeroSx)}>\n <TableRow\n sx={mergeSx(\n canUseTreeGridStyle && { height: gridTheme.header.height },\n canTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {canCheckbox && (\n <TableCell\n padding=\"checkbox\"\n sx={mergeSx(\n {\n ...defaultHeadCellsSx(tableTheme, DEFAULT_TABLE_HEADER_BACKGROUND_COLOR),\n },\n !canUseTreeGridStyle && getDefaultHeaderDividerSx(tableTheme),\n canUseTreeGridStyle && headerBorderRight,\n canUseTreeGridStyle && getTreeGridHeaderCellSx(gridTheme),\n canTableRadiusZero && tableRadiusZeroSx,\n sx,\n )}\n >\n <Checkbox\n color=\"default\"\n sx={mergeSx(\n {\n [`&, &.${checkboxClasses.checked}`]: canUseTreeGridStyle\n ? { color: grey[50] }\n : { color: 'inherit' },\n },\n canUseTreeGridStyle && { p: 0 },\n )}\n indeterminate={numSelected > 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n />\n </TableCell>\n )}\n {headCells.map((headCell, index) => (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'pl-20'}\n key={headCell.id}\n align={getTableCellAlign(headCell.align, 'center')}\n padding={headCell.enablePadding ? 'normal' : 'none'}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={mergeSx(\n {\n ...defaultHeadCellsSx(tableTheme, DEFAULT_TABLE_HEADER_BACKGROUND_COLOR),\n },\n !canUseTreeGridStyle &&\n headCells.length - 1 !== index &&\n getDefaultHeaderDividerSx(tableTheme),\n canUseTreeGridStyle && headCells.length - 1 !== index && headerBorderRight,\n canUseTreeGridStyle && getTreeGridHeaderCellSx(gridTheme),\n canTableRadiusZero && tableRadiusZeroSx,\n sx,\n canUseTreeGridStyle && headCell?.sx,\n )}\n >\n {canUseOrderBy ? (\n <TableSortLabel\n sx={canUseTreeGridStyle ? treeGridSortLabelSx : defaultTableSortLabelSx}\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {canUseTreeGridStyle ? (\n headCell.label\n ) : (\n <Typography sx={mergeSx(getDefaultTableHeaderLabelSx(tableTheme), headCell?.sx)}>\n {headCell.label}\n </Typography>\n )}\n </TableSortLabel>\n ) : canUseTreeGridStyle ? (\n headCell.label\n ) : (\n <Typography sx={mergeSx(getDefaultTableHeaderLabelSx(tableTheme), headCell?.sx)}>\n {headCell.label}\n </Typography>\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n}\n\n/**\n * OwpDataTable 컴포넌트\n * @param className CSS 클래스명\n * @param sx sx 값\n * @param headSx headSx 값\n * @param headCells headCells 값\n * @param rows 행 데이터 목록\n * @param selected selected 값\n * @param canTableRadiusZero 테이블 radius 0 사용 여부\n * @param canUseTableRadius 테이블 radius 사용 여부\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n * @param tableBorderRadius 테이블 radius 값\n * @param fixedRowCount 고정 row 수\n */\nexport function OwpDataTable<T extends Row = Row>({\n className,\n sx,\n headSx,\n headCells,\n rows,\n selected,\n canCheckbox,\n canTotalCountRow,\n canSelectingSingle,\n canUseOrderBy = true,\n canTableRadiusZero,\n canUseTableRadius = false,\n canUseTreeGridStyle = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n fixedRowCount,\n onSelect,\n onBlur,\n}: OwpDataTableProps<T>) {\n const currentSettings = useGetCurrentSettings();\n const [order, setOrder] = useState<Order>('asc');\n const [orderBy, setOrderBy] = useState<string>('');\n const [selectedRows, setSelectedRows] = useState<T[] | []>([]);\n const tableIdRef = useRef(uniqueId('owp-data-table'));\n const useFixedRowCount = useMemo(() => getFixedRowCount(fixedRowCount), [fixedRowCount]);\n const resolvedRows = useMemo(() => {\n const nextRows = isArray(rows) ? rows : [];\n\n return useFixedRowCount ? nextRows.slice(0, useFixedRowCount) : nextRows;\n }, [rows, useFixedRowCount]);\n const resolvedHeadCells = useMemo(() => headCells ?? [], [headCells]);\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentSettings?.theme?.main?.grid),\n [currentSettings],\n );\n const tableTheme = useMemo(\n () => resolveOwpTableTheme(currentSettings?.theme?.main?.table, defaultStyledTableTheme),\n [currentSettings],\n );\n const tableRowBackgroundColor = currentSettings?.theme?.main?.table?.row?.backgroundColor;\n const tableRowHoverBackgroundColor =\n currentSettings?.theme?.main?.table?.row?.hoverBackgroundColor;\n const tableRowSelectedBackgroundColor =\n currentSettings?.theme?.main?.table?.row?.selectedBackgroundColor;\n const useTableRadiusZero = !!canTableRadiusZero;\n const tableContainerRadiusSx = useTableRadiusZero\n ? tableRadiusZeroSx\n : canUseTreeGridStyle && canUseTableRadius\n ? {\n borderRadius: toTableRadiusCssValue(tableBorderRadius),\n overflow: 'hidden',\n }\n : !canUseTreeGridStyle\n ? defaultTableRadiusSx\n : undefined;\n const useCheckBox = isBoolean(canCheckbox) ? canCheckbox : true;\n const useTotalCountRow = isBoolean(canTotalCountRow) ? canTotalCountRow : true;\n\n useEffect(() => {\n if (!isEmpty(selected)) {\n setSelectedRows(selected);\n }\n }, [selected]);\n\n useEffect(() => {\n onSelect?.(selectedRows);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedRows]);\n\n const handleRequestSort = (_: MouseEvent<unknown>, property: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n setSelectedRows(resolvedRows);\n return;\n }\n setSelectedRows([]);\n };\n\n const handleClick = (_: MouseEvent<unknown>, row: T) => {\n if (canSelectingSingle) {\n setSelectedRows([row]);\n return;\n }\n setSelectedRows((prev: T[]) => {\n const isIncluded = !!prev.find((item) => isEqual(item, row));\n return isIncluded ? prev?.filter((item: T) => !isEqual(item, row)) : [...prev, row];\n });\n };\n\n const visibleRows = useMemo(\n () => [...resolvedRows].sort(getComparator(order, orderBy)),\n [order, orderBy, resolvedRows],\n );\n const displayRows = useMemo(() => {\n if (!useFixedRowCount || visibleRows.length >= useFixedRowCount) {\n return visibleRows;\n }\n\n return [...visibleRows, ...createEmptyRows(useFixedRowCount - visibleRows.length)];\n }, [useFixedRowCount, visibleRows]);\n\n return (\n <Paper\n className={className}\n elevation={0}\n sx={mergeSx(\n { width: '100%' },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor && { backgroundColor: tableRowBackgroundColor },\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n tableContainerRadiusSx,\n )}\n >\n {canUseTreeGridStyle && <GlobalStyles styles={getTreeGridFontFaceStyles()} />}\n <TableContainer\n sx={mergeSx(\n { height: useFixedRowCount ? 'auto' : 500 },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor && { backgroundColor: tableRowBackgroundColor },\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n canUseTreeGridStyle && treeGridContainerFrameSx,\n useFixedRowCount && { overflowY: 'hidden' },\n tableContainerRadiusSx,\n sx,\n )}\n >\n <Table\n stickyHeader={!canUseTreeGridStyle}\n sx={mergeSx({ minWidth: 200 }, useTableRadiusZero && tableRadiusZeroSx)}\n aria-labelledby=\"owp-data-table\"\n >\n <DataTableHead\n sx={headSx}\n headCells={resolvedHeadCells}\n gridTheme={treeGridTheme}\n tableTheme={tableTheme}\n numSelected={selectedRows.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n canCheckbox={!canSelectingSingle && useCheckBox}\n canUseOrderBy={canUseOrderBy}\n canTableRadiusZero={useTableRadiusZero}\n canUseTreeGridStyle={canUseTreeGridStyle}\n onRequestSort={handleRequestSort}\n rowCount={resolvedRows.length}\n />\n <TableBody sx={mergeSx(useTableRadiusZero && tableRadiusZeroSx)}>\n {displayRows.map((row, index) => {\n const isItemSelected = selectedRows.some((item) => isEqual(item, row));\n const isLastRow = displayRows.length - 1 === index;\n const isPlaceholderRow = useFixedRowCount ? index >= visibleRows.length : false;\n const labelId = `${tableIdRef.current}-${index}`;\n\n return (\n <TableRow\n hover\n role={canUseTreeGridStyle ? undefined : 'checkbox'}\n aria-checked={canUseTreeGridStyle ? undefined : isItemSelected}\n tabIndex={-1}\n key={`${labelId}-row-${index}`}\n selected={isItemSelected}\n sx={mergeSx(\n { cursor: isPlaceholderRow ? 'default' : 'pointer' },\n !canUseTreeGridStyle &&\n tableRowBackgroundColor &&\n !isItemSelected && { backgroundColor: tableRowBackgroundColor },\n !canUseTreeGridStyle &&\n tableRowHoverBackgroundColor &&\n !isPlaceholderRow &&\n !isItemSelected && {\n '&.MuiTableRow-hover:hover': {\n backgroundColor: tableRowHoverBackgroundColor,\n },\n },\n !canUseTreeGridStyle &&\n tableRowSelectedBackgroundColor &&\n isItemSelected && {\n '&.Mui-selected, &.Mui-selected:hover': {\n backgroundColor: tableRowSelectedBackgroundColor,\n },\n },\n canUseTreeGridStyle &&\n getTreeGridBodyRowSx(treeGridTheme, {\n canHover: !isPlaceholderRow,\n selected: isItemSelected,\n }),\n !canUseTreeGridStyle && isLastRow && defaultLastRowBottomBorderNoneSx,\n canUseTreeGridStyle && { height: 30 },\n useTableRadiusZero && tableRadiusZeroSx,\n useTableRadiusZero && isLastRow && lastRowRadiusZeroSx,\n )}\n >\n {useCheckBox && (\n <TableCell\n padding=\"checkbox\"\n onClick={(event) => {\n if (!isPlaceholderRow) {\n handleClick(event, row as T);\n }\n }}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n <Checkbox\n color=\"default\"\n checked={isItemSelected}\n disabled={isPlaceholderRow}\n sx={mergeSx(canUseTreeGridStyle && { p: 0 })}\n />\n </TableCell>\n )}\n {resolvedHeadCells.map((cell, cellIndex) => {\n const _key = `${labelId}-row-${index}-cell-${cellIndex}`;\n const rangeLabel = getRangeLabel(row, cell);\n const rowTabIndex = getRowTabIndex(row, index);\n const cellValue = getRowValue(row, String(cell?.id));\n if (cellIndex === 0) {\n return (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'px-4'}\n key={_key}\n component={canUseTreeGridStyle ? 'td' : 'th'}\n id={labelId}\n scope={canUseTreeGridStyle ? undefined : 'row'}\n padding=\"none\"\n role={canUseTreeGridStyle ? 'cell' : undefined}\n align={getTableCellAlign(cell.valueAlign, 'left')}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n resolvedHeadCells.length > 1 &&\n (canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme)),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {cellValue as ReactNode}\n </TableCell>\n );\n }\n\n return (\n <TableCell\n className={canUseTreeGridStyle ? undefined : 'px-4'}\n key={_key}\n role={canUseTreeGridStyle ? 'cell' : undefined}\n align={getTableCellAlign(cell.valueAlign, 'left')}\n sx={mergeSx(\n !canUseTreeGridStyle && getDefaultTableBodyCellSx(tableTheme),\n canUseTreeGridStyle && getTreeGridBodyCellSx(treeGridTheme),\n resolvedHeadCells.length - 1 !== cellIndex &&\n (canUseTreeGridStyle\n ? treeGridRowBorderRight\n : getDefaultRowBorderRightSx(tableTheme)),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n >\n {cell?.canTextField ? (\n cell?.textFieldType === 'number' ? (\n <OwpNumberField\n variant=\"standard\"\n decimalScale={2}\n label={rangeLabel}\n fullWidth\n size=\"small\"\n sx={getEditableCellSx(\n cell?.valueAlign,\n canUseTreeGridStyle\n ? treeGridTheme.cell.fontSize\n : tableTheme.cell.fontSize,\n )}\n slotProps={{\n input: {\n tabIndex: rowTabIndex,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n isAllowed={(values) => {\n const { floatValue } = values;\n const end = getRowRangeValue(row, cell?.rangeKey)?.end;\n\n if (isNumber(floatValue) && isNumber(end)) {\n return floatValue <= end;\n }\n\n return true;\n }}\n value={cellValue as string | number | undefined}\n onBlur={(evt) => {\n const start = getRowRangeValue(row, cell?.rangeKey)?.start;\n const nextValue = evt.target.value?.replace(/,/g, '');\n\n onBlur?.(\n {\n ...evt,\n target: {\n ...evt.target,\n value:\n isNumber(start) && nextValue !== ''\n ? Number(start > Number(nextValue) ? start : nextValue)\n : nextValue,\n },\n },\n rowTabIndex,\n );\n }}\n />\n ) : (\n <TextField\n variant=\"standard\"\n label={rangeLabel}\n fullWidth\n size=\"small\"\n sx={getEditableCellSx(\n cell?.valueAlign,\n canUseTreeGridStyle\n ? treeGridTheme.cell.fontSize\n : tableTheme.cell.fontSize,\n )}\n slotProps={{\n input: {\n tabIndex: rowTabIndex,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type={cell?.textFieldType ?? 'text'}\n defaultValue={\n cellValue as string | number | readonly string[] | undefined\n }\n onBlur={(evt) =>\n onBlur?.(\n { ...evt, target: { ...evt.target, value: evt.target.value } },\n rowTabIndex,\n )\n }\n />\n )\n ) : (\n (cellValue as ReactNode)\n )}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n {useTotalCountRow && (\n <OwpTableTotalCount\n dividerSx={mergeSx(useTableRadiusZero && tableRadiusZeroSx)}\n totalCount={resolvedRows.length}\n typographySx={mergeSx(\n canUseTreeGridStyle && getTreeGridContainerSx(treeGridTheme),\n useTableRadiusZero && tableRadiusZeroSx,\n )}\n />\n )}\n </Paper>\n );\n}\n"],"names":["defaultHeadCellsSx","__name","tableTheme","fallbackBackgroundColor","getDefaultTableHeaderCellSx","headerBorderRight","TREEGRID_TABLE_HEADER_BORDER_COLOR","getDefaultRowBorderRightSx","treeGridRowBorderRight","TREEGRID_TABLE_BODY_BORDER_COLOR","treeGridContainerFrameSx","getDefaultTableBodyCellSx","getDefaultTableCellSx","getDefaultHeaderDividerSx","tableRadiusZeroSx","defaultTableRadiusSx","DEFAULT_TABLE_RADIUS","lastRowRadiusZeroSx","defaultLastRowBottomBorderNoneSx","treeGridSortLabelSx","mergeSx","styles","acc","style","isArray","getFixedRowCount","fixedRowCount","isNumber","createEmptyRows","count","getTableCellAlign","align","fallback","getRowValue","row","key","getComparableValue","value","descendingComparator","a","b","orderBy","aValue","bValue","getComparator","order","getRowRangeValue","rangeKey","getRangeLabel","cell","rangeValue","_a","_b","_c","_d","getRowTabIndex","fallbackIndex","rowIndex","getEditableCellSx","valueAlign","fontSize","DataTableHead","props","sx","headCells","onSelectAllClick","numSelected","rowCount","onRequestSort","canCheckbox","canUseOrderBy","canTableRadiusZero","canUseTreeGridStyle","gridTheme","createSortHandler","property","event","TableHead","jsxs","TableRow","jsx","TableCell","DEFAULT_TABLE_HEADER_BACKGROUND_COLOR","getTreeGridHeaderCellSx","Checkbox","checkboxClasses","grey","headCell","index","TableSortLabel","defaultTableSortLabelSx","Typography","getDefaultTableHeaderLabelSx","OwpDataTable","className","headSx","rows","selected","canTotalCountRow","canSelectingSingle","canUseTableRadius","tableBorderRadius","onSelect","onBlur","currentSettings","useGetCurrentSettings","setOrder","useState","setOrderBy","selectedRows","setSelectedRows","tableIdRef","useRef","uniqueId","useFixedRowCount","useMemo","resolvedRows","nextRows","resolvedHeadCells","treeGridTheme","resolveOwpGridTheme","resolveOwpTableTheme","defaultStyledTableTheme","tableRowBackgroundColor","tableRowHoverBackgroundColor","_h","_g","_f","_e","tableRowSelectedBackgroundColor","_l","_k","_j","_i","useTableRadiusZero","tableContainerRadiusSx","toTableRadiusCssValue","useCheckBox","isBoolean","useTotalCountRow","useEffect","isEmpty","handleRequestSort","_","handleSelectAllClick","handleClick","prev","item","isEqual","visibleRows","displayRows","Paper","getTreeGridContainerSx","GlobalStyles","getTreeGridFontFaceStyles","TableContainer","Table","TableBody","isItemSelected","isLastRow","isPlaceholderRow","labelId","getTreeGridBodyRowSx","getTreeGridBodyCellSx","cellIndex","_key","rangeLabel","rowTabIndex","cellValue","OwpNumberField","values","floatValue","end","evt","start","nextValue","TextField","OwpTableTotalCount"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpFieldTable.js","sources":["../../../src/components/OwpTable/OwpFieldTable.tsx"],"sourcesContent":["import { resolveOwpTableTheme } from '@/constants/tableTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport type { OwpTableVariantThemeConfigType } from '@/types/OwpTableThemeTypes';\nimport { Box, Checkbox, TableBody, TableCell, type TableCellProps } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport dayjs from '@/dayjs';\nimport { isNaN, toNumber } from 'es-toolkit/compat';\nimport { Fragment, type CSSProperties, type ReactNode, useMemo } from 'react';\nimport { FieldTableNumberValue, FieldTableTextValue } from './internal/FieldTableValue';\nimport { OwpTableBase, OwpTableBaseRow } from './internal/OwpTableBase';\nimport {\n DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n getDefaultTableHeaderCellSx,\n} from './internal/defaultTableStyle';\nimport { TREEGRID_TABLE_FONT_FAMILY_STACK } from './internal/treeGridTableStyle';\nimport { getTableHelperTextRowSx } from './utils/tableSx';\n\ntype OwpFieldTableCell = {\n title: string;\n key: string;\n contentType?: 'input' | 'text' | 'number' | (string & {});\n required?: boolean;\n disableLocaleString?: boolean;\n useDate?: boolean;\n withTime?: boolean;\n withTimeAndSec?: boolean;\n useCheckbox?: boolean;\n colSpan?: number;\n rowSpan?: number;\n style?: CSSProperties;\n render?: () => ReactNode;\n validate?: (v?: number | string | null) => boolean;\n valueClassName?: string;\n valueSx?: SxProps<Theme>;\n valueDecimals?: number;\n};\n\ntype OwpFieldTableValue = string | number | '' | null;\ntype OwpFieldTableDataRecord = Record<string, OwpFieldTableValue | undefined>;\n\ninterface OwpFieldTableProps {\n layout: OwpFieldTableCell[][];\n data?: OwpFieldTableDataRecord;\n titleSx?: TableCellProps['sx'];\n treeGridTitleCellSx?: TableCellProps['sx'];\n cellSx?: TableCellProps['sx'];\n titleWidth?: number | string;\n colGroupSlot?: ReactNode;\n className?: string;\n tableLayout?: 'auto' | 'fixed';\n canTableRadiusZero?: boolean;\n canUseTableRadius?: boolean;\n canUseTreeGridStyle?: boolean;\n tableBorderRadius?: string | number;\n}\n\nconst DEFAULT_CHECKBOX_FONT_SIZE = 28;\nconst defaultTableBorderColorByMode = {\n dark: 'rgba(241,245,249,.12)',\n light: '#e2e8f0',\n} as const;\n\nconst defaultTreeGridTitleCellSx = {\n '&&': {\n fontFamily: TREEGRID_TABLE_FONT_FAMILY_STACK,\n fontSize: '1.7rem',\n fontWeight: 600,\n lineHeight: 'normal',\n minHeight: 'unset',\n padding: '7px 10px',\n },\n} as const;\n\nconst treeGridFirstRowCellSx = {\n borderTop: '1px solid #CDD8E4',\n} as const;\n\nconst FIELD_TABLE_CELL_CONTENT_CLASS_NAME = 'owp-field-table-cell-content';\n\nconst fieldTableRowSx = getTableHelperTextRowSx(FIELD_TABLE_CELL_CONTENT_CLASS_NAME);\n\ntype TableCellSxItem = Exclude<SxProps<Theme>, readonly unknown[] | false | null | undefined>;\n\nconst normalizeTableCellSx = (style?: TableCellProps['sx']): TableCellSxItem[] => {\n if (!style) {\n return [];\n }\n\n return (Array.isArray(style) ? style : [style]).filter(Boolean) as TableCellSxItem[];\n};\n\nconst getTreeGridCellOverrideSx = (\n ...styles: Array<TableCellProps['sx'] | undefined>\n): TableCellSxItem[] =>\n styles.flatMap(normalizeTableCellSx).map((style) =>\n typeof style === 'function'\n ? (theme: Theme) => ({\n '&&&': style(theme),\n })\n : {\n '&&&': style,\n },\n );\n\nconst getTableCellFontSize = (style?: TableCellProps['sx']): number | string | undefined => {\n if (!style) {\n return undefined;\n }\n\n const styleItems = Array.isArray(style) ? style : [style];\n\n for (let index = styleItems.length - 1; index >= 0; index -= 1) {\n const styleItem = styleItems[index];\n\n if (!styleItem || typeof styleItem === 'function' || Array.isArray(styleItem)) {\n continue;\n }\n\n if (typeof styleItem === 'object' && 'fontSize' in styleItem) {\n return styleItem.fontSize as number | string | undefined;\n }\n }\n\n return undefined;\n};\n\nconst defaultFieldTableTheme = {\n borderColor: '#e2e8f0',\n header: {\n backgroundColor: DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n color: '#111827',\n fontSize: '1.7rem',\n fontWeight: 600,\n },\n cell: {\n backgroundColor: '#FFFFFF',\n fontSize: '1.7rem',\n },\n} satisfies OwpTableVariantThemeConfigType;\n\n/** 필수 헤더 타이틀 */\nconst getRequiredTitle = (title: string) => (\n <>\n {title}\n <span className=\"ml-4 text-red-600\">*</span>\n </>\n);\n\nconst getFieldTableValue = (data: OwpFieldTableProps['data'], key: string) => {\n return data?.[key];\n};\n\nconst getCheckboxChecked = (\n value: OwpFieldTableValue | undefined,\n validate?: OwpFieldTableCell['validate'],\n) => {\n if (typeof validate === 'function') {\n return validate(value);\n }\n\n if (isNaN(toNumber(value))) {\n return value === 'Y';\n }\n\n return Boolean(Number(value));\n};\n\nconst getDateFormat = (cell: OwpFieldTableCell) => {\n if (cell.withTime) {\n return 'YYYY-MM-DD HH:mm';\n }\n\n if (cell.withTimeAndSec) {\n return 'YYYY-MM-DD HH:mm:ss';\n }\n\n return 'YYYY-MM-DD';\n};\n\nconst renderFieldTableCellValue = (\n cell: OwpFieldTableCell,\n data: OwpFieldTableProps['data'],\n cellSx?: OwpFieldTableProps['cellSx'],\n): ReactNode => {\n const value = getFieldTableValue(data, cell.key);\n\n if (typeof cell.render === 'function') {\n return cell.render();\n }\n\n if (cell.useCheckbox) {\n return (\n <Checkbox\n checked={getCheckboxChecked(value, cell.validate)}\n sx={{\n '& .MuiSvgIcon-root': {\n fontSize: getTableCellFontSize(cellSx) ?? DEFAULT_CHECKBOX_FONT_SIZE,\n },\n }}\n />\n );\n }\n\n if (cell.useDate) {\n return value ? dayjs(value).format(getDateFormat(cell)) : value;\n }\n\n if (cell.contentType === 'number') {\n return (\n <FieldTableNumberValue\n value={value}\n valueDecimals={cell.valueDecimals}\n className={cell.valueClassName}\n sx={cell.valueSx}\n />\n );\n }\n\n if (cell.contentType === 'text') {\n return <FieldTableTextValue value={value} className={cell.valueClassName} sx={cell.valueSx} />;\n }\n\n if (cell.disableLocaleString) {\n return value;\n }\n\n return value?.toLocaleString();\n};\n\n/**\n * OwpFieldTable 컴포넌트\n * @param layout layout 값\n * @param titleWidth titleWidth 값\n * @param titleSx titleSx 값\n * @param treeGridTitleCellSx TreeGrid title cell sx 값\n * @param cellSx cellSx 값\n * @param data 데이터\n * @param colGroupSlot colGroupSlot 값\n * @param className className 값\n * @param tableLayout tableLayout 값\n * @param canTableRadiusZero 테이블 radius 0 사용 여부\n * @param canUseTableRadius 테이블 radius 사용 여부\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n * @param tableBorderRadius 테이블 radius 값\n */\nexport function OwpFieldTable({\n layout,\n titleWidth,\n titleSx,\n treeGridTitleCellSx,\n cellSx,\n data,\n colGroupSlot,\n className,\n tableLayout = 'fixed',\n canTableRadiusZero = false,\n canUseTableRadius = false,\n canUseTreeGridStyle = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n}: OwpFieldTableProps) {\n const currentSettings = useGetCurrentSettings();\n const defaultTableBorderColor =\n currentSettings?.theme?.main?.palette?.mode === 'dark'\n ? defaultTableBorderColorByMode.dark\n : defaultTableBorderColorByMode.light;\n const tableBackgroundColor =\n currentSettings?.theme?.main?.table?.field?.cell?.backgroundColor ??\n defaultFieldTableTheme.cell.backgroundColor;\n const tableTheme = useMemo(\n () =>\n resolveOwpTableTheme(currentSettings?.theme?.main?.table?.field, {\n borderColor: defaultTableBorderColor,\n header: {\n backgroundColor: defaultFieldTableTheme.header.backgroundColor,\n color: defaultFieldTableTheme.header.color,\n fontSize: defaultFieldTableTheme.header.fontSize,\n fontWeight: defaultFieldTableTheme.header.fontWeight,\n },\n cell: {\n backgroundColor: defaultFieldTableTheme.cell.backgroundColor,\n fontSize: defaultFieldTableTheme.cell.fontSize,\n },\n }),\n [currentSettings, defaultTableBorderColor],\n );\n\n return (\n <OwpTableBase\n canTableRadiusZero={canTableRadiusZero}\n canUseTableRadius={canUseTableRadius}\n canUseTreeGridStyle={canUseTreeGridStyle}\n className={clsx('w-full', className)}\n containerProps={{\n sx:\n !canUseTreeGridStyle && tableBackgroundColor\n ? { backgroundColor: tableBackgroundColor }\n : undefined,\n }}\n tableTheme={tableTheme}\n tableLayout={tableLayout}\n tableBorderRadius={tableBorderRadius}\n >\n {colGroupSlot}\n <TableBody>\n {layout.map((cols, rowIndex) => (\n <OwpTableBaseRow key={`owp-field-col-${rowIndex}`} sx={fieldTableRowSx}>\n {cols.map((col, colIndex) => (\n <Fragment key={`owp-field-cell-${rowIndex}-${colIndex}`}>\n <TableCell\n component=\"th\"\n className=\"whitespace-pre-wrap\"\n width={titleWidth ?? 200}\n sx={\n canUseTreeGridStyle\n ? [\n defaultTreeGridTitleCellSx,\n rowIndex === 0 && !canUseTableRadius && treeGridFirstRowCellSx,\n ...getTreeGridCellOverrideSx(treeGridTitleCellSx, titleSx),\n ]\n : [getDefaultTableHeaderCellSx(tableTheme), ...normalizeTableCellSx(titleSx)]\n }\n rowSpan={col?.rowSpan}\n >\n {col.required ? getRequiredTitle(col.title) : col.title}\n </TableCell>\n <TableCell\n className=\"whitespace-pre-wrap\"\n sx={\n canUseTreeGridStyle\n ? [\n rowIndex === 0 && !canUseTableRadius && treeGridFirstRowCellSx,\n ...getTreeGridCellOverrideSx(cellSx),\n ]\n : cellSx\n }\n style={col?.style ?? {}}\n colSpan={col?.colSpan}\n rowSpan={col?.rowSpan}\n >\n <Box className={FIELD_TABLE_CELL_CONTENT_CLASS_NAME}>\n {renderFieldTableCellValue(col, data, cellSx)}\n </Box>\n </TableCell>\n </Fragment>\n ))}\n </OwpTableBaseRow>\n ))}\n </TableBody>\n </OwpTableBase>\n );\n}\n"],"names":["DEFAULT_CHECKBOX_FONT_SIZE","defaultTableBorderColorByMode","defaultTreeGridTitleCellSx","TREEGRID_TABLE_FONT_FAMILY_STACK","treeGridFirstRowCellSx","FIELD_TABLE_CELL_CONTENT_CLASS_NAME","fieldTableRowSx","getTableHelperTextRowSx","normalizeTableCellSx","__name","style","getTreeGridCellOverrideSx","styles","theme","getTableCellFontSize","styleItems","index","styleItem","defaultFieldTableTheme","DEFAULT_TABLE_HEADER_BACKGROUND_COLOR","getRequiredTitle","title","jsxs","Fragment","jsx","getFieldTableValue","data","key","getCheckboxChecked","value","validate","isNaN","toNumber","getDateFormat","cell","renderFieldTableCellValue","cellSx","Checkbox","dayjs","FieldTableNumberValue","FieldTableTextValue","OwpFieldTable","layout","titleWidth","titleSx","treeGridTitleCellSx","colGroupSlot","className","tableLayout","canTableRadiusZero","canUseTableRadius","canUseTreeGridStyle","tableBorderRadius","DEFAULT_TABLE_RADIUS","currentSettings","useGetCurrentSettings","defaultTableBorderColor","_c","_b","_a","tableBackgroundColor","_h","_g","_f","_e","_d","tableTheme","useMemo","resolveOwpTableTheme","OwpTableBase","clsx","TableBody","cols","rowIndex","OwpTableBaseRow","col","colIndex","TableCell","getDefaultTableHeaderCellSx","Box"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpFieldTable.js","sources":["../../../src/components/OwpTable/OwpFieldTable.tsx"],"sourcesContent":["import { resolveOwpTableTheme } from '@/constants/tableTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport type { OwpTableVariantThemeConfigType } from '@/types/OwpTableThemeTypes';\nimport { Box, Checkbox, TableBody, TableCell, type TableCellProps } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport dayjs from '@/dayjs';\nimport { isNaN, toNumber } from 'es-toolkit/compat';\nimport { Fragment, type CSSProperties, type ReactNode, useMemo } from 'react';\nimport { FieldTableNumberValue, FieldTableTextValue } from './internal/FieldTableValue';\nimport { OwpTableBase, OwpTableBaseRow } from './internal/OwpTableBase';\nimport {\n DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n getDefaultTableHeaderCellSx,\n} from './internal/defaultTableStyle';\nimport { TREEGRID_TABLE_FONT_FAMILY_STACK } from './internal/treeGridTableStyle';\nimport { getTableHelperTextRowSx } from './utils/tableSx';\n\ntype OwpFieldTableCell = {\n title: string;\n key: string;\n contentType?: 'input' | 'text' | 'number' | (string & {});\n required?: boolean;\n disableLocaleString?: boolean;\n useDate?: boolean;\n withTime?: boolean;\n withTimeAndSec?: boolean;\n useCheckbox?: boolean;\n colSpan?: number;\n rowSpan?: number;\n style?: CSSProperties;\n render?: () => ReactNode;\n validate?: (v?: number | string | null) => boolean;\n valueClassName?: string;\n valueSx?: SxProps<Theme>;\n valueDecimals?: number;\n};\n\ntype OwpFieldTableValue = string | number | '' | null;\ntype OwpFieldTableDataRecord = Record<string, OwpFieldTableValue | undefined>;\n\ninterface OwpFieldTableProps {\n layout: OwpFieldTableCell[][];\n data?: OwpFieldTableDataRecord;\n titleSx?: TableCellProps['sx'];\n treeGridTitleCellSx?: TableCellProps['sx'];\n cellSx?: TableCellProps['sx'];\n titleWidth?: number | string;\n colGroupSlot?: ReactNode;\n className?: string;\n tableLayout?: 'auto' | 'fixed';\n canTableRadiusZero?: boolean;\n canUseTableRadius?: boolean;\n canUseTreeGridStyle?: boolean;\n tableBorderRadius?: string | number;\n}\n\nconst DEFAULT_CHECKBOX_FONT_SIZE = 28;\nconst defaultTableBorderColorByMode = {\n dark: 'rgba(241,245,249,.12)',\n light: '#e2e8f0',\n} as const;\n\nconst defaultTreeGridTitleCellSx = {\n '&&&': {\n fontFamily: TREEGRID_TABLE_FONT_FAMILY_STACK,\n fontSize: '1.7rem',\n fontWeight: 600,\n lineHeight: 'normal',\n minHeight: 'unset',\n padding: '7px 10px',\n },\n} as const;\n\nconst treeGridFirstRowCellSx = {\n borderTop: '1px solid #CDD8E4',\n} as const;\n\nconst FIELD_TABLE_CELL_CONTENT_CLASS_NAME = 'owp-field-table-cell-content';\n\nconst fieldTableRowSx = getTableHelperTextRowSx(FIELD_TABLE_CELL_CONTENT_CLASS_NAME);\n\ntype TableCellSxItem = Exclude<SxProps<Theme>, readonly unknown[] | false | null | undefined>;\n\nconst normalizeTableCellSx = (style?: TableCellProps['sx']): TableCellSxItem[] => {\n if (!style) {\n return [];\n }\n\n return (Array.isArray(style) ? style : [style]).filter(Boolean) as TableCellSxItem[];\n};\n\nconst getTreeGridCellOverrideSx = (\n ...styles: Array<TableCellProps['sx'] | undefined>\n): TableCellSxItem[] =>\n styles.flatMap(normalizeTableCellSx).map((style) =>\n typeof style === 'function'\n ? (theme: Theme) => ({\n '&&&': style(theme),\n })\n : {\n '&&&': style,\n },\n );\n\nconst getTableCellFontSize = (style?: TableCellProps['sx']): number | string | undefined => {\n if (!style) {\n return undefined;\n }\n\n const styleItems = Array.isArray(style) ? style : [style];\n\n for (let index = styleItems.length - 1; index >= 0; index -= 1) {\n const styleItem = styleItems[index];\n\n if (!styleItem || typeof styleItem === 'function' || Array.isArray(styleItem)) {\n continue;\n }\n\n if (typeof styleItem === 'object' && 'fontSize' in styleItem) {\n return styleItem.fontSize as number | string | undefined;\n }\n }\n\n return undefined;\n};\n\nconst defaultFieldTableTheme = {\n borderColor: '#e2e8f0',\n header: {\n backgroundColor: DEFAULT_TABLE_HEADER_BACKGROUND_COLOR,\n color: '#111827',\n fontSize: '1.7rem',\n fontWeight: 600,\n },\n cell: {\n backgroundColor: '#FFFFFF',\n fontSize: '1.7rem',\n },\n} satisfies OwpTableVariantThemeConfigType;\n\n/** 필수 헤더 타이틀 */\nconst getRequiredTitle = (title: string) => (\n <>\n {title}\n <span className=\"ml-4 text-red-600\">*</span>\n </>\n);\n\nconst getFieldTableValue = (data: OwpFieldTableProps['data'], key: string) => {\n return data?.[key];\n};\n\nconst getCheckboxChecked = (\n value: OwpFieldTableValue | undefined,\n validate?: OwpFieldTableCell['validate'],\n) => {\n if (typeof validate === 'function') {\n return validate(value);\n }\n\n if (isNaN(toNumber(value))) {\n return value === 'Y';\n }\n\n return Boolean(Number(value));\n};\n\nconst getDateFormat = (cell: OwpFieldTableCell) => {\n if (cell.withTime) {\n return 'YYYY-MM-DD HH:mm';\n }\n\n if (cell.withTimeAndSec) {\n return 'YYYY-MM-DD HH:mm:ss';\n }\n\n return 'YYYY-MM-DD';\n};\n\nconst renderFieldTableCellValue = (\n cell: OwpFieldTableCell,\n data: OwpFieldTableProps['data'],\n cellSx?: OwpFieldTableProps['cellSx'],\n): ReactNode => {\n const value = getFieldTableValue(data, cell.key);\n\n if (typeof cell.render === 'function') {\n return cell.render();\n }\n\n if (cell.useCheckbox) {\n return (\n <Checkbox\n checked={getCheckboxChecked(value, cell.validate)}\n sx={{\n '& .MuiSvgIcon-root': {\n fontSize: getTableCellFontSize(cellSx) ?? DEFAULT_CHECKBOX_FONT_SIZE,\n },\n }}\n />\n );\n }\n\n if (cell.useDate) {\n return value ? dayjs(value).format(getDateFormat(cell)) : value;\n }\n\n if (cell.contentType === 'number') {\n return (\n <FieldTableNumberValue\n value={value}\n valueDecimals={cell.valueDecimals}\n className={cell.valueClassName}\n sx={cell.valueSx}\n />\n );\n }\n\n if (cell.contentType === 'text') {\n return <FieldTableTextValue value={value} className={cell.valueClassName} sx={cell.valueSx} />;\n }\n\n if (cell.disableLocaleString) {\n return value;\n }\n\n return value?.toLocaleString();\n};\n\n/**\n * OwpFieldTable 컴포넌트\n * @param layout layout 값\n * @param titleWidth titleWidth 값\n * @param titleSx titleSx 값\n * @param treeGridTitleCellSx TreeGrid title cell sx 값\n * @param cellSx cellSx 값\n * @param data 데이터\n * @param colGroupSlot colGroupSlot 값\n * @param className className 값\n * @param tableLayout tableLayout 값\n * @param canTableRadiusZero 테이블 radius 0 사용 여부\n * @param canUseTableRadius 테이블 radius 사용 여부\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n * @param tableBorderRadius 테이블 radius 값\n */\nexport function OwpFieldTable({\n layout,\n titleWidth,\n titleSx,\n treeGridTitleCellSx,\n cellSx,\n data,\n colGroupSlot,\n className,\n tableLayout = 'fixed',\n canTableRadiusZero = false,\n canUseTableRadius = false,\n canUseTreeGridStyle = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n}: OwpFieldTableProps) {\n const currentSettings = useGetCurrentSettings();\n const defaultTableBorderColor =\n currentSettings?.theme?.main?.palette?.mode === 'dark'\n ? defaultTableBorderColorByMode.dark\n : defaultTableBorderColorByMode.light;\n const tableBackgroundColor =\n currentSettings?.theme?.main?.table?.field?.cell?.backgroundColor ??\n defaultFieldTableTheme.cell.backgroundColor;\n const tableTheme = useMemo(\n () =>\n resolveOwpTableTheme(currentSettings?.theme?.main?.table?.field, {\n borderColor: defaultTableBorderColor,\n header: {\n backgroundColor: defaultFieldTableTheme.header.backgroundColor,\n color: defaultFieldTableTheme.header.color,\n fontSize: defaultFieldTableTheme.header.fontSize,\n fontWeight: defaultFieldTableTheme.header.fontWeight,\n },\n cell: {\n backgroundColor: defaultFieldTableTheme.cell.backgroundColor,\n fontSize: defaultFieldTableTheme.cell.fontSize,\n },\n }),\n [currentSettings, defaultTableBorderColor],\n );\n\n return (\n <OwpTableBase\n canTableRadiusZero={canTableRadiusZero}\n canUseTableRadius={canUseTableRadius}\n canUseTreeGridStyle={canUseTreeGridStyle}\n className={clsx('w-full', className)}\n containerProps={{\n sx:\n !canUseTreeGridStyle && tableBackgroundColor\n ? { backgroundColor: tableBackgroundColor }\n : undefined,\n }}\n tableTheme={tableTheme}\n tableLayout={tableLayout}\n tableBorderRadius={tableBorderRadius}\n >\n {colGroupSlot}\n <TableBody>\n {layout.map((cols, rowIndex) => (\n <OwpTableBaseRow key={`owp-field-col-${rowIndex}`} sx={fieldTableRowSx}>\n {cols.map((col, colIndex) => (\n <Fragment key={`owp-field-cell-${rowIndex}-${colIndex}`}>\n <TableCell\n component=\"th\"\n className=\"whitespace-pre-wrap\"\n width={titleWidth ?? 200}\n sx={\n canUseTreeGridStyle\n ? [\n defaultTreeGridTitleCellSx,\n rowIndex === 0 && !canUseTableRadius && treeGridFirstRowCellSx,\n ...getTreeGridCellOverrideSx(treeGridTitleCellSx, titleSx),\n ]\n : [getDefaultTableHeaderCellSx(tableTheme), ...normalizeTableCellSx(titleSx)]\n }\n rowSpan={col?.rowSpan}\n >\n {col.required ? getRequiredTitle(col.title) : col.title}\n </TableCell>\n <TableCell\n className=\"whitespace-pre-wrap\"\n sx={\n canUseTreeGridStyle\n ? [\n rowIndex === 0 && !canUseTableRadius && treeGridFirstRowCellSx,\n ...getTreeGridCellOverrideSx(cellSx),\n ]\n : cellSx\n }\n style={col?.style ?? {}}\n colSpan={col?.colSpan}\n rowSpan={col?.rowSpan}\n >\n <Box className={FIELD_TABLE_CELL_CONTENT_CLASS_NAME}>\n {renderFieldTableCellValue(col, data, cellSx)}\n </Box>\n </TableCell>\n </Fragment>\n ))}\n </OwpTableBaseRow>\n ))}\n </TableBody>\n </OwpTableBase>\n );\n}\n"],"names":["DEFAULT_CHECKBOX_FONT_SIZE","defaultTableBorderColorByMode","defaultTreeGridTitleCellSx","TREEGRID_TABLE_FONT_FAMILY_STACK","treeGridFirstRowCellSx","FIELD_TABLE_CELL_CONTENT_CLASS_NAME","fieldTableRowSx","getTableHelperTextRowSx","normalizeTableCellSx","__name","style","getTreeGridCellOverrideSx","styles","theme","getTableCellFontSize","styleItems","index","styleItem","defaultFieldTableTheme","DEFAULT_TABLE_HEADER_BACKGROUND_COLOR","getRequiredTitle","title","jsxs","Fragment","jsx","getFieldTableValue","data","key","getCheckboxChecked","value","validate","isNaN","toNumber","getDateFormat","cell","renderFieldTableCellValue","cellSx","Checkbox","dayjs","FieldTableNumberValue","FieldTableTextValue","OwpFieldTable","layout","titleWidth","titleSx","treeGridTitleCellSx","colGroupSlot","className","tableLayout","canTableRadiusZero","canUseTableRadius","canUseTreeGridStyle","tableBorderRadius","DEFAULT_TABLE_RADIUS","currentSettings","useGetCurrentSettings","defaultTableBorderColor","_c","_b","_a","tableBackgroundColor","_h","_g","_f","_e","_d","tableTheme","useMemo","resolveOwpTableTheme","OwpTableBase","clsx","TableBody","cols","rowIndex","OwpTableBaseRow","col","colIndex","TableCell","getDefaultTableHeaderCellSx","Box"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ import { delay as Yr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_mo
|
|
|
25
25
|
import { isEqual as Qr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
|
|
26
26
|
import { omit as Xr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/omit.js";
|
|
27
27
|
import { isPlainObject as Zr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js";
|
|
28
|
-
const et = "NumberToString(count(
|
|
28
|
+
const et = "NumberToString(count(5),',0')", rt = ["Formula", "FormulaFormula"], tt = Object.prototype.hasOwnProperty, or = /* @__PURE__ */ i((e) => JSON.stringify(e) ?? '""', "toTreeGridFormulaStringLiteral"), ot = /* @__PURE__ */ i((e, r) => `${or(
|
|
29
29
|
`${e} : `
|
|
30
30
|
)}+${et}+${or(
|
|
31
31
|
` ${r}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/internal/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/internal/treeGridBodyRowsEvent';\nimport {\n clearTreeGridCellHighlightById,\n getTreeGridCellComparableValue,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, isPlainObject, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridCellBaselineMap = WeakMap<TRow, Map<string, string>>;\n\nconst TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA = \"NumberToString(count(7),',0')\";\nconst TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES = ['Formula', 'FormulaFormula'] as const;\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * TreeGrid formula 문자열 literal 변환\n * @param value literal 값\n */\nconst toTreeGridFormulaStringLiteral = (value: string) => JSON.stringify(value) ?? '\"\"';\n\n/**\n * Toolbar 전체 건수 formula 생성\n * @param totalLabel 전체 label\n * @param countUnitLabel 건수 단위 label\n */\nconst buildTreeGridTotalCountToolbarFormula = (totalLabel: string, countUnitLabel: string) => {\n return `${toTreeGridFormulaStringLiteral(\n `${totalLabel} : `,\n )}+${TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA}+${toTreeGridFormulaStringLiteral(\n ` ${countUnitLabel}`,\n )}`;\n};\n\n/**\n * Toolbar formula 필드 명시 여부\n * @param layoutSection TreeGrid layout section 값\n */\nconst hasTreeGridToolbarFormulaField = (layoutSection: unknown) => {\n if (!isPlainObject(layoutSection)) {\n return false;\n }\n\n return TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES.some((fieldName) =>\n hasOwnProperty.call(layoutSection, fieldName),\n );\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\nconst isAddedTreeGridRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return !!row && added !== 0 && added !== false && added !== '0' && added !== undefined;\n};\n\nconst isDisplayTreeGridRow = (row: TRow | null | undefined) => {\n if (!row || row.Fixed === 'Foot' || !isVisibleTreeGridRow(row)) {\n return false;\n }\n\n return row.Kind === 'Data' || isAddedTreeGridRow(row);\n};\n\nconst getTreeGridRows = (grid: TGrid) => {\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n const rows: TRow[] = [];\n let row = grid.GetFirst();\n\n while (row) {\n rows.push(row);\n row = grid.GetNext(row);\n }\n\n return rows;\n }\n\n return Object.values(grid.Rows ?? {});\n};\n\nconst captureTreeGridChangeBaselines = (\n grid: TGrid | null | undefined,\n baselineMap: TreeGridCellBaselineMap,\n) => {\n if (!grid) {\n return;\n }\n\n const cols = Object.keys(grid.Cols ?? {}).filter(Boolean);\n\n getTreeGridRows(grid).forEach((row) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n baselineMap.set(\n row,\n new Map(cols.map((col) => [col, getTreeGridCellComparableValue(grid, row, col)])),\n );\n });\n};\n\nconst isTreeGridChangedFlag = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n value !== 0 &&\n value !== false &&\n value !== '0';\n\nconst hasOtherTreeGridChangedCells = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n return Object.keys(grid.Cols ?? {}).some((column) => {\n return column !== col && isTreeGridChangedFlag(rowRecord[`${column}Changed`]);\n });\n};\n\nconst clearTreeGridCellChangedState = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n rowRecord[`${col}Changed`] = 0;\n\n if (\n !isAddedTreeGridRow(row) &&\n !isTreeGridRowAddedById(row) &&\n !hasOtherTreeGridChangedCells(grid, row, col)\n ) {\n rowRecord.Changed = 0;\n }\n};\n\nconst resolveTreeGridCellBaselineValue = (\n baselineMap: TreeGridCellBaselineMap,\n row: TRow,\n col: string,\n) => {\n const baselineValues = baselineMap.get(row);\n\n if (baselineValues?.has(col)) {\n return baselineValues.get(col);\n }\n\n return undefined;\n};\n\nconst syncTreeGridChangedCellHighlightById = ({\n gridId,\n grid,\n row,\n col,\n backgroundColor,\n baselineMap,\n highlightRefresh,\n}: {\n gridId: string;\n grid: TGrid;\n row: TRow;\n col: string;\n backgroundColor: string;\n baselineMap: TreeGridCellBaselineMap;\n highlightRefresh?: boolean;\n}) => {\n if (\n !isDisplayTreeGridRow(row) ||\n isAddedTreeGridRow(row) ||\n isTreeGridRowAddedById(row)\n ) {\n return;\n }\n\n const baselineValue = resolveTreeGridCellBaselineValue(baselineMap, row, col);\n const currentValue = getTreeGridCellComparableValue(grid, row, col);\n\n if (baselineValue !== undefined && currentValue === baselineValue) {\n clearTreeGridCellHighlightById(gridId, { row, col });\n clearTreeGridCellChangedState(grid, row, col);\n return;\n }\n\n highlightTreeGridCellById(gridId, {\n row,\n col,\n backgroundColor,\n refresh: highlightRefresh,\n });\n};\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\nexport type OwpTreeGridSuppressCfg = 0 | 1 | 2 | 3 | 4;\nexport type OwpTreeGridDisabledAnimation = 'addRow' | 'deleteRow' | 'selectRow';\n\nconst DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS = [\n 'addRow',\n 'deleteRow',\n 'selectRow',\n] as const satisfies readonly OwpTreeGridDisabledAnimation[];\n\nexport interface OwpTreeGridDatePickerEditorColumnOption {\n baseYear?: string;\n baseYearMonth?: string;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n allowInput?: boolean;\n columnOptions?: Record<string, OwpTreeGridDatePickerEditorColumnOption>;\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridDatePickerValueChangeOptions = {\n highlightRefresh?: boolean;\n};\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n disabledAnimations?: readonly OwpTreeGridDisabledAnimation[];\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: string | number;\n suppressCfg?: OwpTreeGridSuppressCfg;\n showToolbarTotalCount?: boolean;\n hideChildHeaderSortButtons?: boolean;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n * @param suppressCfg TreeGrid client 설정 저장/로드 억제값\n * @param showToolbarTotalCount Toolbar 전체 건수 기본 formula 표시 여부\n * @param hideChildHeaderSortButtons 그룹 헤더 하위 sort 버튼 숨김 여부\n * @param disabledAnimations 비활성화할 TreeGrid 애니메이션 의미 키 목록\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n suppressCfg = 3,\n showToolbarTotalCount = true,\n hideChildHeaderSortButtons = true,\n layoutUrl,\n layoutData,\n disabledAnimations = DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS,\n dataUrl,\n layoutOverrides,\n data,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const toolbarTotalLabel = t('Common.전체');\n const toolbarTotalCountUnitLabel = t('Common.건');\n const toolbarTotalCountFormula = useMemo(\n () =>\n showToolbarTotalCount && !hasTreeGridToolbarFormulaField(layoutOverrides?.Toolbar)\n ? buildTreeGridTotalCountToolbarFormula(toolbarTotalLabel, toolbarTotalCountUnitLabel)\n : undefined,\n [\n layoutOverrides,\n toolbarTotalCountUnitLabel,\n toolbarTotalLabel,\n showToolbarTotalCount,\n ],\n );\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestToolbarTotalCountFormulaRef = useRef<string | undefined>(toolbarTotalCountFormula);\n const latestSuppressCfgRef = useRef<OwpTreeGridSuppressCfg | undefined>(suppressCfg);\n const latestHideChildHeaderSortButtonsRef = useRef(hideChildHeaderSortButtons);\n const latestDisabledAnimationsRef = useRef<\n readonly OwpTreeGridDisabledAnimation[] | undefined\n >(disabledAnimations);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const bodyReloadSequenceRef = useRef(0);\n const bindingLoadingStartedAtRef = useRef<number | null>(null);\n const bindingLoadingHideTimeoutRef = useRef<number | undefined>(undefined);\n const bodyReloadStartTimeoutRef = useRef<number | undefined>(undefined);\n const highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const changedCellBaselineRef = useRef<TreeGridCellBaselineMap>(new WeakMap());\n const focusedCellBackgroundColorRef = useRef(treeGridTheme.state.focusedCellBackgroundColor);\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n options?: OwpTreeGridDatePickerValueChangeOptions,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n syncTreeGridChangedCellHighlightById({\n gridId: id,\n grid,\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n baselineMap: changedCellBaselineRef.current,\n highlightRefresh: options?.highlightRefresh,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestToolbarTotalCountFormulaRef.current = toolbarTotalCountFormula;\n latestSuppressCfgRef.current = suppressCfg;\n latestHideChildHeaderSortButtonsRef.current = hideChildHeaderSortButtons;\n latestDisabledAnimationsRef.current = disabledAnimations;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n focusedCellBackgroundColorRef.current = treeGridTheme.state.focusedCellBackgroundColor;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const {\n datePickerEditorElement,\n handleDatePickerEditorButtonClick,\n handleDatePickerEditorCellClick,\n handleDatePickerEditorKeyDown,\n handleDatePickerEditorStartEdit,\n } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalButtonClick: handleDatePickerEditorButtonClick,\n onInternalCellClick: handleDatePickerEditorCellClick,\n onInternalKeyDown: handleDatePickerEditorKeyDown,\n onInternalStartEdit: handleDatePickerEditorStartEdit,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\n });\n\n const clearBindingLoadingHideTimeout = () => {\n if (bindingLoadingHideTimeoutRef.current !== undefined) {\n window.clearTimeout(bindingLoadingHideTimeoutRef.current);\n bindingLoadingHideTimeoutRef.current = undefined;\n }\n };\n\n const clearBodyReloadStartTimeout = () => {\n if (bodyReloadStartTimeoutRef.current !== undefined) {\n window.clearTimeout(bodyReloadStartTimeoutRef.current);\n bodyReloadStartTimeoutRef.current = undefined;\n }\n };\n\n useEffect(() => {\n const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\n\n useEffect(() => {\n if (!showLoading) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }\n }, [showLoading]);\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n bindTreeGridEvents({\n id,\n latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n focusedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n changedCellBaselineRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n latestToolbarTotalCountFormulaRef,\n latestSuppressCfgRef,\n latestHideChildHeaderSortButtonsRef,\n latestDisabledAnimationsRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\n toolbarTotalCountFormula,\n suppressCfg,\n disabledAnimations,\n dataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n changedCellBaselineRef.current = new WeakMap();\n captureTreeGridChangeBaselines(treeGrid, changedCellBaselineRef.current);\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\n }\n\n const startedAt = bindingLoadingStartedAtRef.current;\n\n if (!showLoading || startedAt === null) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n const remainingVisibleTime = Math.max(\n 0,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS - (Date.now() - startedAt),\n );\n\n clearBindingLoadingHideTimeout();\n\n if (remainingVisibleTime === 0) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = undefined;\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }, remainingVisibleTime);\n });\n };\n\n bodyReloadSequenceRef.current = reloadSequence;\n stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\n\n if (showLoading && nextBodyData !== undefined) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = Date.now();\n setIsBindingLoadingVisible(true);\n bodyReloadStartTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n runBodyReload();\n }, 0);\n } else {\n runBodyReload();\n }\n }\n\n }, [isTreeGridReady, layoutOverrides, data, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\n }\n\n if (showLoading || isNoDataVisible) {\n resolvedContainerStyle.position =\n containerStyle?.position && containerStyle.position !== 'static'\n ? containerStyle.position\n : 'relative';\n resolvedContainerStyle.isolation = 'isolate';\n }\n\n return (\n <div\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n <OwpTreeGridNoDataOverlay\n visible={isNoDataVisible}\n message={t('Message.조회된 결과가 없습니다.')}\n overlayFrame={overlayFrame}\n />\n <OwpTreeGridLoadingOverlay visible={isLoadingOverlayVisible} overlayFrame={overlayFrame} />\n {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA","TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES","hasOwnProperty","toTreeGridFormulaStringLiteral","__name","value","buildTreeGridTotalCountToolbarFormula","totalLabel","countUnitLabel","hasTreeGridToolbarFormulaField","layoutSection","isPlainObject","fieldName","isVisibleTreeGridRow","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","getTreeGridRows","grid","rows","captureTreeGridChangeBaselines","baselineMap","cols","col","getTreeGridCellComparableValue","isTreeGridChangedFlag","hasOtherTreeGridChangedCells","rowRecord","column","clearTreeGridCellChangedState","isTreeGridRowAddedById","resolveTreeGridCellBaselineValue","baselineValues","syncTreeGridChangedCellHighlightById","gridId","backgroundColor","highlightRefresh","baselineValue","currentValue","clearTreeGridCellHighlightById","highlightTreeGridCellById","DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS","OwpTreeGrid","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","DEFAULT_TABLE_RADIUS","suppressCfg","showToolbarTotalCount","hideChildHeaderSortButtons","layoutUrl","layoutData","disabledAnimations","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","toolbarTotalLabel","toolbarTotalCountUnitLabel","toolbarTotalCountFormula","useMemo","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestToolbarTotalCountFormulaRef","latestSuppressCfgRef","latestHideChildHeaderSortButtonsRef","latestDisabledAnimationsRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","changedCellBaselineRef","focusedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","options","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorButtonClick","handleDatePickerEditorCellClick","handleDatePickerEditorKeyDown","handleDatePickerEditorStartEdit","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/internal/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/internal/treeGridBodyRowsEvent';\nimport {\n clearTreeGridCellHighlightById,\n getTreeGridCellComparableValue,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, isPlainObject, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridCellBaselineMap = WeakMap<TRow, Map<string, string>>;\n\nconst TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA = \"NumberToString(count(5),',0')\";\nconst TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES = ['Formula', 'FormulaFormula'] as const;\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * TreeGrid formula 문자열 literal 변환\n * @param value literal 값\n */\nconst toTreeGridFormulaStringLiteral = (value: string) => JSON.stringify(value) ?? '\"\"';\n\n/**\n * Toolbar 전체 건수 formula 생성\n * @param totalLabel 전체 label\n * @param countUnitLabel 건수 단위 label\n */\nconst buildTreeGridTotalCountToolbarFormula = (totalLabel: string, countUnitLabel: string) => {\n return `${toTreeGridFormulaStringLiteral(\n `${totalLabel} : `,\n )}+${TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA}+${toTreeGridFormulaStringLiteral(\n ` ${countUnitLabel}`,\n )}`;\n};\n\n/**\n * Toolbar formula 필드 명시 여부\n * @param layoutSection TreeGrid layout section 값\n */\nconst hasTreeGridToolbarFormulaField = (layoutSection: unknown) => {\n if (!isPlainObject(layoutSection)) {\n return false;\n }\n\n return TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES.some((fieldName) =>\n hasOwnProperty.call(layoutSection, fieldName),\n );\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\nconst isAddedTreeGridRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return !!row && added !== 0 && added !== false && added !== '0' && added !== undefined;\n};\n\nconst isDisplayTreeGridRow = (row: TRow | null | undefined) => {\n if (!row || row.Fixed === 'Foot' || !isVisibleTreeGridRow(row)) {\n return false;\n }\n\n return row.Kind === 'Data' || isAddedTreeGridRow(row);\n};\n\nconst getTreeGridRows = (grid: TGrid) => {\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n const rows: TRow[] = [];\n let row = grid.GetFirst();\n\n while (row) {\n rows.push(row);\n row = grid.GetNext(row);\n }\n\n return rows;\n }\n\n return Object.values(grid.Rows ?? {});\n};\n\nconst captureTreeGridChangeBaselines = (\n grid: TGrid | null | undefined,\n baselineMap: TreeGridCellBaselineMap,\n) => {\n if (!grid) {\n return;\n }\n\n const cols = Object.keys(grid.Cols ?? {}).filter(Boolean);\n\n getTreeGridRows(grid).forEach((row) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n baselineMap.set(\n row,\n new Map(cols.map((col) => [col, getTreeGridCellComparableValue(grid, row, col)])),\n );\n });\n};\n\nconst isTreeGridChangedFlag = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n value !== 0 &&\n value !== false &&\n value !== '0';\n\nconst hasOtherTreeGridChangedCells = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n return Object.keys(grid.Cols ?? {}).some((column) => {\n return column !== col && isTreeGridChangedFlag(rowRecord[`${column}Changed`]);\n });\n};\n\nconst clearTreeGridCellChangedState = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n rowRecord[`${col}Changed`] = 0;\n\n if (\n !isAddedTreeGridRow(row) &&\n !isTreeGridRowAddedById(row) &&\n !hasOtherTreeGridChangedCells(grid, row, col)\n ) {\n rowRecord.Changed = 0;\n }\n};\n\nconst resolveTreeGridCellBaselineValue = (\n baselineMap: TreeGridCellBaselineMap,\n row: TRow,\n col: string,\n) => {\n const baselineValues = baselineMap.get(row);\n\n if (baselineValues?.has(col)) {\n return baselineValues.get(col);\n }\n\n return undefined;\n};\n\nconst syncTreeGridChangedCellHighlightById = ({\n gridId,\n grid,\n row,\n col,\n backgroundColor,\n baselineMap,\n highlightRefresh,\n}: {\n gridId: string;\n grid: TGrid;\n row: TRow;\n col: string;\n backgroundColor: string;\n baselineMap: TreeGridCellBaselineMap;\n highlightRefresh?: boolean;\n}) => {\n if (\n !isDisplayTreeGridRow(row) ||\n isAddedTreeGridRow(row) ||\n isTreeGridRowAddedById(row)\n ) {\n return;\n }\n\n const baselineValue = resolveTreeGridCellBaselineValue(baselineMap, row, col);\n const currentValue = getTreeGridCellComparableValue(grid, row, col);\n\n if (baselineValue !== undefined && currentValue === baselineValue) {\n clearTreeGridCellHighlightById(gridId, { row, col });\n clearTreeGridCellChangedState(grid, row, col);\n return;\n }\n\n highlightTreeGridCellById(gridId, {\n row,\n col,\n backgroundColor,\n refresh: highlightRefresh,\n });\n};\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\nexport type OwpTreeGridSuppressCfg = 0 | 1 | 2 | 3 | 4;\nexport type OwpTreeGridDisabledAnimation = 'addRow' | 'deleteRow' | 'selectRow';\n\nconst DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS = [\n 'addRow',\n 'deleteRow',\n 'selectRow',\n] as const satisfies readonly OwpTreeGridDisabledAnimation[];\n\nexport interface OwpTreeGridDatePickerEditorColumnOption {\n baseYear?: string;\n baseYearMonth?: string;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n allowInput?: boolean;\n columnOptions?: Record<string, OwpTreeGridDatePickerEditorColumnOption>;\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridDatePickerValueChangeOptions = {\n highlightRefresh?: boolean;\n};\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n disabledAnimations?: readonly OwpTreeGridDisabledAnimation[];\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: string | number;\n suppressCfg?: OwpTreeGridSuppressCfg;\n showToolbarTotalCount?: boolean;\n hideChildHeaderSortButtons?: boolean;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n * @param suppressCfg TreeGrid client 설정 저장/로드 억제값\n * @param showToolbarTotalCount Toolbar 전체 건수 기본 formula 표시 여부\n * @param hideChildHeaderSortButtons 그룹 헤더 하위 sort 버튼 숨김 여부\n * @param disabledAnimations 비활성화할 TreeGrid 애니메이션 의미 키 목록\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n suppressCfg = 3,\n showToolbarTotalCount = true,\n hideChildHeaderSortButtons = true,\n layoutUrl,\n layoutData,\n disabledAnimations = DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS,\n dataUrl,\n layoutOverrides,\n data,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const toolbarTotalLabel = t('Common.전체');\n const toolbarTotalCountUnitLabel = t('Common.건');\n const toolbarTotalCountFormula = useMemo(\n () =>\n showToolbarTotalCount && !hasTreeGridToolbarFormulaField(layoutOverrides?.Toolbar)\n ? buildTreeGridTotalCountToolbarFormula(toolbarTotalLabel, toolbarTotalCountUnitLabel)\n : undefined,\n [\n layoutOverrides,\n toolbarTotalCountUnitLabel,\n toolbarTotalLabel,\n showToolbarTotalCount,\n ],\n );\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestToolbarTotalCountFormulaRef = useRef<string | undefined>(toolbarTotalCountFormula);\n const latestSuppressCfgRef = useRef<OwpTreeGridSuppressCfg | undefined>(suppressCfg);\n const latestHideChildHeaderSortButtonsRef = useRef(hideChildHeaderSortButtons);\n const latestDisabledAnimationsRef = useRef<\n readonly OwpTreeGridDisabledAnimation[] | undefined\n >(disabledAnimations);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const bodyReloadSequenceRef = useRef(0);\n const bindingLoadingStartedAtRef = useRef<number | null>(null);\n const bindingLoadingHideTimeoutRef = useRef<number | undefined>(undefined);\n const bodyReloadStartTimeoutRef = useRef<number | undefined>(undefined);\n const highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const changedCellBaselineRef = useRef<TreeGridCellBaselineMap>(new WeakMap());\n const focusedCellBackgroundColorRef = useRef(treeGridTheme.state.focusedCellBackgroundColor);\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n options?: OwpTreeGridDatePickerValueChangeOptions,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n syncTreeGridChangedCellHighlightById({\n gridId: id,\n grid,\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n baselineMap: changedCellBaselineRef.current,\n highlightRefresh: options?.highlightRefresh,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestToolbarTotalCountFormulaRef.current = toolbarTotalCountFormula;\n latestSuppressCfgRef.current = suppressCfg;\n latestHideChildHeaderSortButtonsRef.current = hideChildHeaderSortButtons;\n latestDisabledAnimationsRef.current = disabledAnimations;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n focusedCellBackgroundColorRef.current = treeGridTheme.state.focusedCellBackgroundColor;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const {\n datePickerEditorElement,\n handleDatePickerEditorButtonClick,\n handleDatePickerEditorCellClick,\n handleDatePickerEditorKeyDown,\n handleDatePickerEditorStartEdit,\n } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalButtonClick: handleDatePickerEditorButtonClick,\n onInternalCellClick: handleDatePickerEditorCellClick,\n onInternalKeyDown: handleDatePickerEditorKeyDown,\n onInternalStartEdit: handleDatePickerEditorStartEdit,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\n });\n\n const clearBindingLoadingHideTimeout = () => {\n if (bindingLoadingHideTimeoutRef.current !== undefined) {\n window.clearTimeout(bindingLoadingHideTimeoutRef.current);\n bindingLoadingHideTimeoutRef.current = undefined;\n }\n };\n\n const clearBodyReloadStartTimeout = () => {\n if (bodyReloadStartTimeoutRef.current !== undefined) {\n window.clearTimeout(bodyReloadStartTimeoutRef.current);\n bodyReloadStartTimeoutRef.current = undefined;\n }\n };\n\n useEffect(() => {\n const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\n\n useEffect(() => {\n if (!showLoading) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }\n }, [showLoading]);\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n bindTreeGridEvents({\n id,\n latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n focusedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n changedCellBaselineRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n latestToolbarTotalCountFormulaRef,\n latestSuppressCfgRef,\n latestHideChildHeaderSortButtonsRef,\n latestDisabledAnimationsRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\n toolbarTotalCountFormula,\n suppressCfg,\n disabledAnimations,\n dataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n changedCellBaselineRef.current = new WeakMap();\n captureTreeGridChangeBaselines(treeGrid, changedCellBaselineRef.current);\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\n }\n\n const startedAt = bindingLoadingStartedAtRef.current;\n\n if (!showLoading || startedAt === null) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n const remainingVisibleTime = Math.max(\n 0,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS - (Date.now() - startedAt),\n );\n\n clearBindingLoadingHideTimeout();\n\n if (remainingVisibleTime === 0) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = undefined;\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }, remainingVisibleTime);\n });\n };\n\n bodyReloadSequenceRef.current = reloadSequence;\n stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\n\n if (showLoading && nextBodyData !== undefined) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = Date.now();\n setIsBindingLoadingVisible(true);\n bodyReloadStartTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n runBodyReload();\n }, 0);\n } else {\n runBodyReload();\n }\n }\n\n }, [isTreeGridReady, layoutOverrides, data, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\n }\n\n if (showLoading || isNoDataVisible) {\n resolvedContainerStyle.position =\n containerStyle?.position && containerStyle.position !== 'static'\n ? containerStyle.position\n : 'relative';\n resolvedContainerStyle.isolation = 'isolate';\n }\n\n return (\n <div\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n <OwpTreeGridNoDataOverlay\n visible={isNoDataVisible}\n message={t('Message.조회된 결과가 없습니다.')}\n overlayFrame={overlayFrame}\n />\n <OwpTreeGridLoadingOverlay visible={isLoadingOverlayVisible} overlayFrame={overlayFrame} />\n {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["TREE_GRID_TOTAL_COUNT_TOOLBAR_VALUE_FORMULA","TREE_GRID_TOOLBAR_FORMULA_FIELD_NAMES","hasOwnProperty","toTreeGridFormulaStringLiteral","__name","value","buildTreeGridTotalCountToolbarFormula","totalLabel","countUnitLabel","hasTreeGridToolbarFormulaField","layoutSection","isPlainObject","fieldName","isVisibleTreeGridRow","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","getTreeGridRows","grid","rows","captureTreeGridChangeBaselines","baselineMap","cols","col","getTreeGridCellComparableValue","isTreeGridChangedFlag","hasOtherTreeGridChangedCells","rowRecord","column","clearTreeGridCellChangedState","isTreeGridRowAddedById","resolveTreeGridCellBaselineValue","baselineValues","syncTreeGridChangedCellHighlightById","gridId","backgroundColor","highlightRefresh","baselineValue","currentValue","clearTreeGridCellHighlightById","highlightTreeGridCellById","DEFAULT_OWP_TREE_GRID_DISABLED_ANIMATIONS","OwpTreeGrid","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","DEFAULT_TABLE_RADIUS","suppressCfg","showToolbarTotalCount","hideChildHeaderSortButtons","layoutUrl","layoutData","disabledAnimations","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","toolbarTotalLabel","toolbarTotalCountUnitLabel","toolbarTotalCountFormula","useMemo","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestToolbarTotalCountFormulaRef","latestSuppressCfgRef","latestHideChildHeaderSortButtonsRef","latestDisabledAnimationsRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","changedCellBaselineRef","focusedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","options","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorButtonClick","handleDatePickerEditorCellClick","handleDatePickerEditorKeyDown","handleDatePickerEditorStartEdit","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
|