@ceed/cds 0.0.185 → 0.0.187-cjs.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +33 -0
  2. package/dist/_virtual/bind-all.js +5 -0
  3. package/dist/_virtual/bind.js +5 -0
  4. package/dist/_virtual/colorManipulator.js +7 -0
  5. package/dist/_virtual/colorManipulator2.js +5 -0
  6. package/dist/_virtual/createStyled.js +9 -0
  7. package/dist/_virtual/createStyled2.js +5 -0
  8. package/dist/_virtual/extends.js +5 -0
  9. package/dist/_virtual/index.js +7 -0
  10. package/dist/_virtual/index10.js +8 -0
  11. package/dist/_virtual/index11.js +12 -0
  12. package/dist/_virtual/index12.js +12 -0
  13. package/dist/_virtual/index2.js +5 -0
  14. package/dist/_virtual/index3.js +9 -0
  15. package/dist/_virtual/index4.js +5 -0
  16. package/dist/_virtual/index5.js +8 -0
  17. package/dist/_virtual/index6.js +8 -0
  18. package/dist/_virtual/index7.js +12 -0
  19. package/dist/_virtual/index8.js +8 -0
  20. package/dist/_virtual/index9.js +8 -0
  21. package/dist/_virtual/interopRequireDefault.js +5 -0
  22. package/dist/_virtual/objectWithoutPropertiesLoose.js +5 -0
  23. package/dist/components/Accordions/Accordions.js +48 -0
  24. package/dist/components/Autocomplete/Autocomplete.js +198 -0
  25. package/dist/components/Autocomplete/index.js +10 -0
  26. package/dist/components/Avatar/Avatar.js +47 -0
  27. package/dist/components/Box/Box.js +10 -0
  28. package/dist/components/Box/index.js +10 -0
  29. package/dist/components/Breadcrumbs/Breadcrumbs.js +49 -0
  30. package/dist/components/Button/Button.js +22 -0
  31. package/dist/components/Button/index.js +10 -0
  32. package/dist/components/Calendar/Calendar.js +335 -0
  33. package/dist/components/Calendar/hooks/use-calendar-props.js +76 -0
  34. package/dist/components/Calendar/hooks/use-calendar.js +249 -0
  35. package/dist/components/Calendar/index.js +10 -0
  36. package/dist/components/Calendar/utils/index.js +84 -0
  37. package/dist/components/Card/Card.js +26 -0
  38. package/dist/components/Checkbox/Checkbox.js +21 -0
  39. package/dist/components/Checkbox/index.js +10 -0
  40. package/dist/components/Chip/Chip.js +10 -0
  41. package/dist/components/Chip/index.js +10 -0
  42. package/dist/components/Container/Container.js +51 -0
  43. package/dist/components/CurrencyInput/CurrencyInput.js +93 -0
  44. package/dist/components/CurrencyInput/hooks/use-currency-setting.js +169 -0
  45. package/dist/components/CurrencyInput/index.js +10 -0
  46. package/dist/components/DataTable/DataTable.js +570 -0
  47. package/dist/components/DatePicker/DatePicker.js +212 -0
  48. package/dist/components/DatePicker/index.js +10 -0
  49. package/dist/components/DateRangePicker/DateRangePicker.js +215 -0
  50. package/dist/components/DialogActions/DialogActions.js +16 -0
  51. package/dist/components/DialogActions/index.js +10 -0
  52. package/dist/components/DialogContent/DialogContent.js +13 -0
  53. package/dist/components/DialogContent/index.js +10 -0
  54. package/dist/components/DialogFrame/DialogFrame.js +33 -0
  55. package/dist/components/DialogTitle/DialogTitle.js +13 -0
  56. package/dist/components/DialogTitle/index.js +10 -0
  57. package/dist/components/Divider/Divider.js +21 -0
  58. package/dist/components/Drawer/Drawer.js +42 -0
  59. package/dist/components/Dropdown/Dropdown.js +10 -0
  60. package/dist/components/Dropdown/index.js +10 -0
  61. package/dist/components/FormControl/FormControl.js +17 -0
  62. package/dist/components/FormControl/index.js +10 -0
  63. package/dist/components/FormHelperText/FormHelperText.js +10 -0
  64. package/dist/components/FormHelperText/index.js +10 -0
  65. package/dist/components/FormLabel/FormLabel.js +10 -0
  66. package/dist/components/FormLabel/index.js +10 -0
  67. package/dist/components/IconButton/IconButton.js +22 -0
  68. package/dist/components/IconButton/index.js +10 -0
  69. package/dist/components/Input/Input.js +62 -0
  70. package/dist/components/Input/index.js +10 -0
  71. package/dist/components/InsetDrawer/InsetDrawer.js +32 -0
  72. package/dist/components/Markdown/Markdown.d.ts +6 -22
  73. package/dist/components/Markdown/Markdown.js +86 -0
  74. package/dist/components/Menu/Menu.js +46 -0
  75. package/dist/components/Menu/index.js +11 -0
  76. package/dist/components/MenuButton/MenuButton.d.ts +7 -5
  77. package/dist/components/MenuButton/MenuButton.js +28 -0
  78. package/dist/components/Modal/Modal.js +49 -0
  79. package/dist/components/MonthPicker/MonthPicker.js +164 -0
  80. package/dist/components/MonthRangePicker/MonthRangePicker.js +174 -0
  81. package/dist/components/NavigationGroup/NavigationGroup.js +44 -0
  82. package/dist/components/NavigationItem/NavigationItem.js +47 -0
  83. package/dist/components/Navigator/Navigator.js +32 -0
  84. package/dist/components/Pagination/Pagination.js +119 -0
  85. package/dist/components/Pagination/index.js +10 -0
  86. package/dist/components/PercentageInput/PercentageInput.js +87 -0
  87. package/dist/components/Radio/Radio.js +14 -0
  88. package/dist/components/RadioList/RadioList.js +20 -0
  89. package/dist/components/Select/Select.js +59 -0
  90. package/dist/components/Select/index.js +11 -0
  91. package/dist/components/Sheet/Sheet.js +10 -0
  92. package/dist/components/Sheet/index.js +10 -0
  93. package/dist/components/Stack/index.js +16 -0
  94. package/dist/components/Stepper/Stepper.js +70 -0
  95. package/dist/components/Switch/Switch.js +48 -0
  96. package/dist/components/Table/Table.js +68 -0
  97. package/dist/components/Tabs/Tabs.js +22 -0
  98. package/dist/components/Textarea/Textarea.d.ts +3 -17
  99. package/dist/components/Textarea/Textarea.js +33 -0
  100. package/dist/components/Textarea/index.js +10 -0
  101. package/dist/components/ThemeProvider/ThemeProvider.js +250 -0
  102. package/dist/components/Tooltip/Tooltip.js +21 -0
  103. package/dist/components/Tooltip/index.js +10 -0
  104. package/dist/components/Typography/Typography.js +21 -0
  105. package/dist/components/Typography/index.js +10 -0
  106. package/dist/components/Uploader/Uploader.d.ts +1 -1
  107. package/dist/components/Uploader/Uploader.js +366 -0
  108. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter-native-data-key.js +10 -0
  109. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/external-adapter.js +251 -0
  110. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/get-element-from-point-without-honey-pot.js +21 -0
  111. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/honey-pot-data-attribute.js +7 -0
  112. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/is-honey-pot-element.js +9 -0
  113. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/dispatch-consumer-event.js +130 -0
  114. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/lifecycle-manager.js +342 -0
  115. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/usage-ledger.js +35 -0
  116. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-adapter.js +62 -0
  117. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-drop-target.js +314 -0
  118. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-monitor.js +98 -0
  119. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/combine.js +15 -0
  120. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/external/file.js +26 -0
  121. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/once.js +20 -0
  122. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/prevent-unhandled.js +104 -0
  123. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/add-attribute.js +12 -0
  124. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/android.js +5 -0
  125. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/count-events-for-safari.js +126 -0
  126. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-entering-window.js +57 -0
  127. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-from-another-window.js +20 -0
  128. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-leaving-window.js +57 -0
  129. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/detect-broken-drag.js +51 -0
  130. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/get-input.js +18 -0
  131. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-firefox.js +17 -0
  132. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-safari.js +20 -0
  133. package/dist/external/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/text-media-type.js +10 -0
  134. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/arrayLikeToArray.js +9 -0
  135. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/arrayWithHoles.js +7 -0
  136. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/arrayWithoutHoles.js +9 -0
  137. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/defineProperty.js +20 -0
  138. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/iterableToArray.js +7 -0
  139. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/iterableToArrayLimit.js +28 -0
  140. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/nonIterableRest.js +7 -0
  141. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/nonIterableSpread.js +7 -0
  142. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/slicedToArray.js +12 -0
  143. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/toConsumableArray.js +12 -0
  144. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/toPrimitive.js +16 -0
  145. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/toPropertyKey.js +11 -0
  146. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/typeof.js +13 -0
  147. package/dist/external/@atlaskit/pragmatic-drag-and-drop/external/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +14 -0
  148. package/dist/external/@babel/runtime/helpers/esm/extends.js +18 -0
  149. package/dist/external/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +16 -0
  150. package/dist/external/@babel/runtime/helpers/extends.js +30 -0
  151. package/dist/external/@babel/runtime/helpers/interopRequireDefault.js +21 -0
  152. package/dist/external/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +28 -0
  153. package/dist/external/@emotion/cache/dist/emotion-cache.esm.js +655 -0
  154. package/dist/external/@emotion/memoize/dist/emotion-memoize.esm.js +11 -0
  155. package/dist/external/@emotion/sheet/dist/emotion-sheet.esm.js +156 -0
  156. package/dist/external/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js +18 -0
  157. package/dist/external/@mui/icons-material/esm/ArrowUpwardRounded.js +10 -0
  158. package/dist/external/@mui/icons-material/esm/CalendarToday.js +10 -0
  159. package/dist/external/@mui/icons-material/esm/Check.js +10 -0
  160. package/dist/external/@mui/icons-material/esm/ChevronLeft.js +10 -0
  161. package/dist/external/@mui/icons-material/esm/ChevronRight.js +10 -0
  162. package/dist/external/@mui/icons-material/esm/ClearRounded.js +10 -0
  163. package/dist/external/@mui/icons-material/esm/Close.js +10 -0
  164. package/dist/external/@mui/icons-material/esm/CloudUploadRounded.js +10 -0
  165. package/dist/external/@mui/icons-material/esm/ExpandMore.js +10 -0
  166. package/dist/external/@mui/icons-material/esm/Info.js +10 -0
  167. package/dist/external/@mui/icons-material/esm/UploadFileRounded.js +10 -0
  168. package/dist/external/@mui/material/SvgIcon/SvgIcon.js +207 -0
  169. package/dist/external/@mui/material/SvgIcon/svgIconClasses.js +11 -0
  170. package/dist/external/@mui/material/colors/blue.js +20 -0
  171. package/dist/external/@mui/material/colors/common.js +8 -0
  172. package/dist/external/@mui/material/colors/green.js +20 -0
  173. package/dist/external/@mui/material/colors/grey.js +20 -0
  174. package/dist/external/@mui/material/colors/lightBlue.js +20 -0
  175. package/dist/external/@mui/material/colors/orange.js +20 -0
  176. package/dist/external/@mui/material/colors/purple.js +20 -0
  177. package/dist/external/@mui/material/colors/red.js +20 -0
  178. package/dist/external/@mui/material/styles/createMixins.js +21 -0
  179. package/dist/external/@mui/material/styles/createPalette.js +314 -0
  180. package/dist/external/@mui/material/styles/createTheme.js +84 -0
  181. package/dist/external/@mui/material/styles/createTransitions.js +97 -0
  182. package/dist/external/@mui/material/styles/createTypography.js +95 -0
  183. package/dist/external/@mui/material/styles/defaultTheme.js +7 -0
  184. package/dist/external/@mui/material/styles/identifier.js +5 -0
  185. package/dist/external/@mui/material/styles/rootShouldForwardProp.js +7 -0
  186. package/dist/external/@mui/material/styles/shadows.js +13 -0
  187. package/dist/external/@mui/material/styles/slotShouldForwardProp.js +8 -0
  188. package/dist/external/@mui/material/styles/styled.js +17 -0
  189. package/dist/external/@mui/material/styles/useThemeProps.js +19 -0
  190. package/dist/external/@mui/material/styles/zIndex.js +16 -0
  191. package/dist/external/@mui/material/utils/capitalize.js +7 -0
  192. package/dist/external/@mui/material/utils/createSvgIcon.js +45 -0
  193. package/dist/external/@mui/styled-engine/GlobalStyles/GlobalStyles.js +26 -0
  194. package/dist/external/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js +39 -0
  195. package/dist/external/@mui/styled-engine/index.js +57 -0
  196. package/dist/external/@mui/system/colorManipulator.js +387 -0
  197. package/dist/external/@mui/system/createStyled.js +272 -0
  198. package/dist/external/@mui/system/esm/borders.js +66 -0
  199. package/dist/external/@mui/system/esm/breakpoints.js +71 -0
  200. package/dist/external/@mui/system/esm/compose.js +28 -0
  201. package/dist/external/@mui/system/esm/createTheme/applyStyles.js +78 -0
  202. package/dist/external/@mui/system/esm/createTheme/createBreakpoints.js +84 -0
  203. package/dist/external/@mui/system/esm/createTheme/createSpacing.js +36 -0
  204. package/dist/external/@mui/system/esm/createTheme/createTheme.js +47 -0
  205. package/dist/external/@mui/system/esm/createTheme/index.js +13 -0
  206. package/dist/external/@mui/system/esm/createTheme/shape.js +7 -0
  207. package/dist/external/@mui/system/esm/cssGrid.js +99 -0
  208. package/dist/external/@mui/system/esm/memoize.js +13 -0
  209. package/dist/external/@mui/system/esm/merge.js +14 -0
  210. package/dist/external/@mui/system/esm/palette.js +33 -0
  211. package/dist/external/@mui/system/esm/responsivePropType.js +7 -0
  212. package/dist/external/@mui/system/esm/sizing.js +76 -0
  213. package/dist/external/@mui/system/esm/spacing.js +153 -0
  214. package/dist/external/@mui/system/esm/style.js +83 -0
  215. package/dist/external/@mui/system/esm/styleFunctionSx/defaultSxConfig.js +295 -0
  216. package/dist/external/@mui/system/esm/styleFunctionSx/extendSxProp.js +53 -0
  217. package/dist/external/@mui/system/esm/styleFunctionSx/index.js +14 -0
  218. package/dist/external/@mui/system/esm/styleFunctionSx/styleFunctionSx.js +134 -0
  219. package/dist/external/@mui/system/esm/useTheme.js +14 -0
  220. package/dist/external/@mui/system/esm/useThemeProps/getThemeProps.js +17 -0
  221. package/dist/external/@mui/system/esm/useThemeProps/useThemeProps.js +24 -0
  222. package/dist/external/@mui/system/esm/useThemeWithoutDefault.js +33 -0
  223. package/dist/external/@mui/utils/ClassNameGenerator/ClassNameGenerator.js +20 -0
  224. package/dist/external/@mui/utils/capitalize/capitalize.js +16 -0
  225. package/dist/external/@mui/utils/capitalize/index.js +7 -0
  226. package/dist/external/@mui/utils/clamp/clamp.js +7 -0
  227. package/dist/external/@mui/utils/clamp/index.js +7 -0
  228. package/dist/external/@mui/utils/composeClasses/composeClasses.js +25 -0
  229. package/dist/external/@mui/utils/deepmerge/deepmerge.js +49 -0
  230. package/dist/external/@mui/utils/deepmerge/index.js +10 -0
  231. package/dist/external/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js +23 -0
  232. package/dist/external/@mui/utils/formatMuiErrorMessage/index.js +7 -0
  233. package/dist/external/@mui/utils/generateUtilityClass/generateUtilityClass.js +27 -0
  234. package/dist/external/@mui/utils/generateUtilityClasses/generateUtilityClasses.js +13 -0
  235. package/dist/external/@mui/utils/getDisplayName/getDisplayName.js +54 -0
  236. package/dist/external/@mui/utils/getDisplayName/index.js +10 -0
  237. package/dist/external/@mui/utils/resolveProps/resolveProps.js +39 -0
  238. package/dist/external/bind-event-listener/dist/bind-all.js +56 -0
  239. package/dist/external/bind-event-listener/dist/bind.js +23 -0
  240. package/dist/external/bind-event-listener/dist/index.js +23 -0
  241. package/dist/external/clsx/dist/clsx.js +8 -0
  242. package/dist/external/object-assign/index.js +101 -0
  243. package/dist/external/prop-types/checkPropTypes.js +117 -0
  244. package/dist/external/prop-types/factoryWithThrowingShims.js +76 -0
  245. package/dist/external/prop-types/factoryWithTypeCheckers.js +627 -0
  246. package/dist/external/prop-types/index.js +35 -0
  247. package/dist/external/prop-types/lib/ReactPropTypesSecret.js +23 -0
  248. package/dist/external/prop-types/lib/has.js +13 -0
  249. package/dist/external/raf-schd/dist/raf-schd.esm.js +36 -0
  250. package/dist/external/stylis/src/Enum.js +22 -0
  251. package/dist/external/stylis/src/Middleware.js +35 -0
  252. package/dist/external/stylis/src/Parser.js +199 -0
  253. package/dist/external/stylis/src/Serializer.js +41 -0
  254. package/dist/external/stylis/src/Tokenizer.js +241 -0
  255. package/dist/external/stylis/src/Utility.js +132 -0
  256. package/dist/hooks/use-controlled-state/index.js +25 -0
  257. package/dist/index.js +521 -2
  258. package/dist/libs/rehype-accent/index.js +41 -0
  259. package/framer/index.js +30 -30
  260. package/package.json +8 -5
@@ -0,0 +1,570 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactVirtual = require('@tanstack/react-virtual');
5
+ var joy = require('@mui/joy');
6
+ var ArrowUpwardRounded = require('../../external/@mui/icons-material/esm/ArrowUpwardRounded.js');
7
+ var Info = require('../../external/@mui/icons-material/esm/Info.js');
8
+ var Sheet = require('../Sheet/Sheet.js');
9
+ var Table = require('../Table/Table.js');
10
+ var Checkbox = require('../Checkbox/Checkbox.js');
11
+ var Box = require('../Box/Box.js');
12
+ var Typography = require('../Typography/Typography.js');
13
+ var Button = require('../Button/Button.js');
14
+ var CurrencyInput = require('../CurrencyInput/CurrencyInput.js');
15
+ var DatePicker = require('../DatePicker/DatePicker.js');
16
+ var Input = require('../Input/Input.js');
17
+ var Textarea = require('../Textarea/Textarea.js');
18
+ var Autocomplete = require('../Autocomplete/Autocomplete.js');
19
+ var Select = require('../Select/Select.js');
20
+ var Tooltip = require('../Tooltip/Tooltip.js');
21
+ var framerMotion = require('framer-motion');
22
+ var index = require('../../hooks/use-controlled-state/index.js');
23
+ var Pagination = require('../Pagination/Pagination.js');
24
+
25
+ function getTextAlign(props) {
26
+ return !props.editMode &&
27
+ ["number", "date", "currency"].includes(props.type || "")
28
+ ? "end"
29
+ : "start";
30
+ }
31
+ const OverlayWrapper = joy.styled("tr", {
32
+ name: "DataTable",
33
+ slot: "overlayWrapper",
34
+ })({
35
+ position: "sticky",
36
+ top: `calc(var(--unstable_TableCell-height, 32px))`,
37
+ left: 0,
38
+ right: 0,
39
+ zIndex: 1,
40
+ "& > td": {
41
+ height: 0,
42
+ padding: 0,
43
+ border: "none !important",
44
+ },
45
+ });
46
+ const numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
47
+ const Resizer = (ref) => (React.createElement(Box.Box, { sx: {
48
+ position: "absolute",
49
+ top: 0,
50
+ right: 0,
51
+ bottom: 0,
52
+ width: "4px",
53
+ cursor: "col-resize",
54
+ },
55
+ // NOTE: Resize가 정렬을 변경하면 안된다.
56
+ onClick: (e) => e.stopPropagation(), onMouseDown: (e) => {
57
+ const initialX = e.clientX;
58
+ const initialWidth = ref.current?.getBoundingClientRect().width;
59
+ const onMouseMove = (e) => {
60
+ if (initialWidth && initialX) {
61
+ ref.current.style.width = `${initialWidth + (e.clientX - initialX)}px`;
62
+ }
63
+ };
64
+ const onMouseUp = () => {
65
+ document.removeEventListener("mousemove", onMouseMove);
66
+ document.removeEventListener("mouseup", onMouseUp);
67
+ };
68
+ document.addEventListener("mousemove", onMouseMove);
69
+ document.addEventListener("mouseup", onMouseUp);
70
+ } }));
71
+ const VirtualizedTableBody = joy.styled("tbody", {
72
+ name: "DataTable",
73
+ slot: "tableBody",
74
+ })({
75
+ // HACK: for virtualization: tbody의 height를 렌더링 된 tr의 총 높이 보다 높은 값으로 지정하고도 tr의 size를 유지하기 위한 꼼수
76
+ "&::after": {
77
+ content: "''",
78
+ display: "block",
79
+ height: "0.01em",
80
+ },
81
+ });
82
+ const VirtualizedTableRow = joy.styled("tr", {
83
+ name: "DataTable",
84
+ slot: "tableRow",
85
+ shouldForwardProp: (prop) => prop !== "striped",
86
+ })(({ striped }) => ({
87
+ ...(striped && {
88
+ background: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
89
+ color: "var(--ceed-palette-text-primary)",
90
+ }),
91
+ "&:hover": {
92
+ background: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
93
+ },
94
+ }));
95
+ const Asterisk = joy.styled("span", {
96
+ name: "DataTable",
97
+ slot: "headCellAsterisk",
98
+ })(({ theme }) => ({
99
+ color: "var(--ceed-palette-danger-500)",
100
+ marginLeft: theme.spacing(0.5),
101
+ }));
102
+ const MotionSortIcon = framerMotion.motion(ArrowUpwardRounded);
103
+ const HeadCell = (props) => {
104
+ // prop destruction
105
+ const { width, maxWidth, minWidth, stickyHeader, resizable, field, tableId, headerName, required, editMode, sort, onSortChange, sortable = true, sortOrder, description, } = props;
106
+ // lib hooks
107
+ // state, ref, querystring hooks
108
+ const ref = React.useRef(null);
109
+ // form hooks
110
+ // query hooks
111
+ // calculated values
112
+ const headId = React.useMemo(() => `${tableId}_header_${headerName ?? field}`.trim(), [tableId, headerName, field]);
113
+ const resizer = resizable ?? true ? Resizer(ref) : null;
114
+ const style = {
115
+ width: width,
116
+ minWidth: minWidth ?? "50px",
117
+ maxWidth: maxWidth,
118
+ position: stickyHeader ? undefined : "relative",
119
+ cursor: sortable ? "pointer" : "default",
120
+ // TODO: multi-sort때문에 일단 추가한 property, joy-ui에서는 multi-sort시 th에 user-select: none을 적용하고 툴팁을 띄워준다.
121
+ userSelect: "none",
122
+ };
123
+ const textAlign = getTextAlign(props);
124
+ const initialSort = sortOrder[0];
125
+ const sortIcon = sortable && (React.createElement(MotionSortIcon, { style: {
126
+ width: "16px",
127
+ height: "16px",
128
+ },
129
+ // @ts-ignore: material-icon을 js로 import해서 role property에 대한 타입을 못찾는다.
130
+ role: "img", "aria-labelledby": headId, "aria-description": (sort ?? initialSort) === "desc" ? "descending" : "ascending", "data-testid": undefined,
131
+ // #region framer-motion
132
+ variants: {
133
+ hover: { opacity: 1 },
134
+ initial: { opacity: 0 },
135
+ }, animate: {
136
+ color: !!sort
137
+ ? "var(--ceed-palette-text-secondary)"
138
+ : "var(--ceed-palette-primary-solidDisabledColor)",
139
+ rotate: (sort ?? initialSort) === "desc" ? 180 : 0,
140
+ opacity: !!sort ? 1 : 0,
141
+ }, transition: {
142
+ duration: 0,
143
+ rotate: { duration: 0.2, ease: "easeOut" },
144
+ color: { duration: 0.2, ease: "easeInOut" },
145
+ opacity: { duration: 0.2, ease: "easeInOut" },
146
+ } }));
147
+ const descriptionTooltip = description ? (React.createElement(Tooltip.Tooltip, { onClick: (e) => e.stopPropagation(), title: React.createElement(React.Fragment, null, description?.split("\n").map((line, i) => (React.createElement("div", { key: i }, line)))), placement: "top" },
148
+ React.createElement(Info, { fontSize: "small" }))) : null;
149
+ // effects
150
+ // handlers
151
+ return (React.createElement(framerMotion.motion.th, { id: headId, "aria-label": headerName ?? field, "aria-sort": sort
152
+ ? { asc: "ascending", desc: "descending" }[sort]
153
+ : "none", ref: ref, key: field, style: style, onClick: (e) => sortable &&
154
+ onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }), whileHover: "hover", initial: "initial" },
155
+ React.createElement(joy.Stack, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" },
156
+ textAlign === "end" && sortIcon,
157
+ textAlign === "end" && descriptionTooltip,
158
+ React.createElement("div", null,
159
+ headerName ?? field,
160
+ editMode && required && React.createElement(Asterisk, null, "*")),
161
+ textAlign === "start" && descriptionTooltip,
162
+ textAlign === "start" && sortIcon),
163
+ resizer));
164
+ };
165
+ const BodyCell = (props) => {
166
+ // prop destruction
167
+ const { tableId, field, type, renderCell, renderEditCell, isCellEditable, noWrap, row, rowId, } = props;
168
+ // lib hooks
169
+ // state, ref, querystring hooks
170
+ const [value, setValue] = React.useState(row[field]);
171
+ const cellRef = React.useRef(null);
172
+ // form hooks
173
+ // query hooks
174
+ // calculated values
175
+ const params = React.useMemo(() => ({
176
+ row,
177
+ value,
178
+ id: rowId,
179
+ }), [row, rowId, value]);
180
+ const editMode = React.useMemo(() => !!(props.editMode &&
181
+ (typeof isCellEditable === "function"
182
+ ? isCellEditable(params)
183
+ : isCellEditable ?? true)), [props.editMode, isCellEditable, params]);
184
+ const componentProps = React.useMemo(() => ({
185
+ ...(typeof props.componentProps === "function"
186
+ ? props.componentProps(params)
187
+ : props.componentProps || {}),
188
+ size: "sm",
189
+ }), [props, params]);
190
+ const editModeComponentProps = React.useMemo(() => ({
191
+ ...componentProps,
192
+ onChange: (e) => {
193
+ componentProps.onChange?.(e);
194
+ setValue(e.target.value);
195
+ if (type === "select") {
196
+ props.onCellEditStop?.({
197
+ ...params,
198
+ originalRow: row,
199
+ row: {
200
+ ...params.row,
201
+ [field]: e.target.value,
202
+ },
203
+ value: e.target.value,
204
+ });
205
+ }
206
+ },
207
+ onFocus: (e) => {
208
+ componentProps.onFocus?.(e);
209
+ props.onCellEditStart?.({
210
+ ...params,
211
+ originalRow: row,
212
+ row: {
213
+ ...params.row,
214
+ value,
215
+ },
216
+ value,
217
+ });
218
+ },
219
+ onBlur: (e) => {
220
+ componentProps.onBlur?.(e);
221
+ if (type &&
222
+ ["number", "text", "longText", "currency", "date"].includes(type)) {
223
+ props.onCellEditStop?.({
224
+ ...params,
225
+ originalRow: row,
226
+ row: {
227
+ ...params.row,
228
+ [field]: value,
229
+ },
230
+ value,
231
+ });
232
+ }
233
+ },
234
+ ...(type === "autocomplete" && {
235
+ onChangeComplete: (e) => {
236
+ componentProps.onChangeComplete?.(e);
237
+ setValue(e.target.value);
238
+ props.onCellEditStop?.({
239
+ ...params,
240
+ originalRow: row,
241
+ row: {
242
+ ...params.row,
243
+ [field]: e.target.value,
244
+ },
245
+ value: e.target.value,
246
+ });
247
+ },
248
+ }),
249
+ }), [params, row, field, value, componentProps, type, props]);
250
+ const EditModeComponent = React.useMemo(() => {
251
+ if (renderEditCell) {
252
+ return renderEditCell(params);
253
+ }
254
+ return {
255
+ date: (React.createElement(DatePicker.DatePicker, { value: value, ...editModeComponentProps })),
256
+ currency: (React.createElement(CurrencyInput.CurrencyInput, { value: value, ...editModeComponentProps })),
257
+ number: (React.createElement(Input.Input, { value: value, type: "number", ...editModeComponentProps })),
258
+ text: (React.createElement(Input.Input, { value: value, type: "text", ...editModeComponentProps })),
259
+ longText: (React.createElement(Textarea.Textarea, { value: value, ...editModeComponentProps })),
260
+ autocomplete: (React.createElement(Autocomplete.Autocomplete, { value: value, options: editModeComponentProps.options || [value], ...editModeComponentProps })),
261
+ select: (React.createElement(Select.Select, { value: value,
262
+ // @ts-expect-error NOTE: editComponentProps로 option이 넘어오면 Override되어야 한다
263
+ options: editModeComponentProps.options || [value], ...editModeComponentProps })),
264
+ }[type || "text"];
265
+ }, [value, editModeComponentProps, type]);
266
+ const ReadModeComponent = React.useMemo(() => {
267
+ if (renderCell) {
268
+ return renderCell(params);
269
+ }
270
+ const innerText = value;
271
+ const typedComponent = {
272
+ link: React.createElement(props.component || joy.Link, {
273
+ children: innerText,
274
+ ...componentProps,
275
+ }),
276
+ }[type || "text"];
277
+ return typedComponent || innerText;
278
+ }, [value, renderCell, params, type, componentProps, props]);
279
+ const CellComponent = React.useMemo(() => editMode && EditModeComponent ? EditModeComponent : ReadModeComponent, [editMode, EditModeComponent, ReadModeComponent]);
280
+ const showTooltip = React.useMemo(() => noWrap && props.type === "longText", [noWrap, props.type]);
281
+ // effects
282
+ React.useEffect(() => {
283
+ setValue(row[field]);
284
+ }, [row, field]);
285
+ // handlers
286
+ return (React.createElement("td", { ref: cellRef, key: field, headers: `${tableId}_header_${props.headerName ?? field}`, style: {
287
+ textAlign: getTextAlign({ type }),
288
+ verticalAlign: editMode ? "top" : "middle",
289
+ } }, showTooltip ? (React.createElement(Tooltip.Tooltip, { title: value, placement: "bottom", style: { maxWidth: "100%" }, enterDelay: 1500, enterNextDelay: 1500 },
290
+ React.createElement("div", { style: {
291
+ overflow: "hidden",
292
+ textOverflow: "ellipsis",
293
+ } }, CellComponent))) : (CellComponent)));
294
+ };
295
+ const BodyRow = (props) => {
296
+ // prop destruction
297
+ const { tableId, columns, rowId, editMode, noWrap, row } = props;
298
+ // lib hooks
299
+ // state, ref, querystring hooks
300
+ // form hooks
301
+ // query hooks
302
+ // calculated values
303
+ // effects
304
+ // handlers
305
+ return (React.createElement(React.Fragment, null, columns.map((column, i) => (React.createElement(BodyCell, { ...column, tableId: tableId, key: `${rowId}_${column.field.toString()}_${i}`, row: row, rowId: rowId, editMode: editMode, noWrap: noWrap })))));
306
+ };
307
+ function useDataTableRenderer({ rows: _rows, columns: columnsProp, rowCount: totalRowsProp, initialState, pagination, paginationMode, paginationModel, onPaginationModelChange, sortModel: controlledSortModel, sortOrder: _sortOrder = ["asc", "desc", null], selectionModel = [], onSortModelChange, onSelectionModelChange, editMode, getId: _getId, isTotalSelected: _isTotalSelected, }) {
308
+ const [sortModel, setSortModel] = index.useControlledState(controlledSortModel, initialState?.sorting?.sortModel ?? [], React.useCallback((sortModel) => onSortModelChange?.(sortModel), [onSortModelChange]));
309
+ const columnsByField = React.useMemo(() => columnsProp.reduce((acc, curr) => ({ ...acc, [curr.field]: curr }), {}), [columnsProp]);
310
+ const sortComparator = React.useCallback((rowA, rowB) => {
311
+ for (const sort of sortModel) {
312
+ const { field, sort: direction } = sort;
313
+ const a = rowA[field];
314
+ const b = rowB[field];
315
+ const column = columnsByField[field];
316
+ let comparison = 0;
317
+ if (column.sortComparator) {
318
+ comparison = column.sortComparator({
319
+ rowA,
320
+ rowB,
321
+ });
322
+ }
323
+ else if (typeof a === "string" && typeof b === "string") {
324
+ comparison = a.localeCompare(b);
325
+ }
326
+ else if (typeof a === "number" && typeof b === "number") {
327
+ comparison = a - b;
328
+ }
329
+ else if (a instanceof Date && b instanceof Date) {
330
+ comparison = a.getTime() - b.getTime();
331
+ }
332
+ if (comparison !== 0) {
333
+ return direction === "asc" ? comparison : -comparison;
334
+ }
335
+ }
336
+ return 0;
337
+ }, [sortModel, columnsByField]);
338
+ const rows = React.useMemo(() => (sortModel.length ? [..._rows].sort(sortComparator) : _rows), [_rows, sortModel, sortComparator]);
339
+ const sortOrder = React.useMemo(() => Array.from(new Set(_sortOrder)), [_sortOrder]);
340
+ const [page, setPage] = React.useState(paginationModel?.page || 1);
341
+ const pageSize = paginationModel?.pageSize || 20;
342
+ const getId = React.useCallback((row, index) => _getId?.(row) ??
343
+ row.id ??
344
+ `${(index || 0) + (page - 1) * pageSize}`, [_getId, page, pageSize]);
345
+ const selectedModelSet = React.useMemo(() => new Set(selectionModel), [selectionModel]);
346
+ const dataInPage = React.useMemo(() => !pagination || paginationMode === "server"
347
+ ? rows
348
+ : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize), [rows, page, pageSize, paginationMode, pagination]);
349
+ const isAllSelected = React.useMemo(() => dataInPage.length > 0 &&
350
+ dataInPage.every((row, i) => selectedModelSet.has(getId(row, i))), [dataInPage, selectedModelSet, getId]);
351
+ const rowCount = totalRowsProp || rows.length;
352
+ const isTotalSelected = React.useMemo(() => _isTotalSelected ?? (rowCount > 0 && selectionModel.length === rowCount), [_isTotalSelected, selectionModel, rowCount]);
353
+ const columns = React.useMemo(() => {
354
+ const baseColumns = columnsProp ||
355
+ // fallback
356
+ Object.keys(rows[0] || {}).map((key) => ({
357
+ field: key,
358
+ }));
359
+ return baseColumns.map((column) => ({
360
+ ...column,
361
+ isCellEditable: editMode &&
362
+ (typeof column.isCellEditable === "function"
363
+ ? column.isCellEditable
364
+ : column.isCellEditable ?? true),
365
+ sort: sortModel.find((sort) => sort.field === column.field)?.sort,
366
+ sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
367
+ }));
368
+ }, [rows, columnsProp, editMode, sortModel, columnsByField, sortOrder]);
369
+ const handlePageChange = React.useCallback((newPage) => {
370
+ setPage(newPage);
371
+ onPaginationModelChange?.({ page: newPage, pageSize });
372
+ }, [onPaginationModelChange, pageSize]);
373
+ const handleSortChange = React.useCallback((props) => {
374
+ const { field, currentSort, multiple } = props;
375
+ const column = columnsByField[field];
376
+ const columnSortOrder = column.sortOrder || sortOrder;
377
+ if (currentSort !== undefined) {
378
+ const currentOrderIndex = columnSortOrder.indexOf(currentSort);
379
+ const nextSortOrderIndex = (currentOrderIndex + 1) % columnSortOrder.length;
380
+ const nextSortOrder = columnSortOrder[nextSortOrderIndex];
381
+ if (!nextSortOrder) {
382
+ const newSortModel = multiple
383
+ ? sortModel.filter((model) => model.field !== field)
384
+ : [];
385
+ setSortModel(newSortModel);
386
+ return;
387
+ }
388
+ const newSortModel = multiple
389
+ ? sortModel.map((model) => model.field === field ? { field, sort: nextSortOrder } : model)
390
+ : [{ field, sort: nextSortOrder }];
391
+ setSortModel(newSortModel);
392
+ }
393
+ else {
394
+ const newSortModel = multiple
395
+ ? [...sortModel, { field, sort: columnSortOrder[0] }]
396
+ : [{ field, sort: columnSortOrder[0] }];
397
+ setSortModel(newSortModel);
398
+ }
399
+ }, [sortOrder, columnsByField, sortModel, setSortModel]);
400
+ React.useEffect(() => {
401
+ // if uncontrolled, reset page to 1
402
+ if (!paginationModel) {
403
+ handlePageChange(1);
404
+ }
405
+ }, [rowCount, handlePageChange, paginationModel]);
406
+ React.useEffect(() => {
407
+ const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
408
+ if (page > lastPage) {
409
+ handlePageChange(lastPage);
410
+ }
411
+ }, [page, rowCount, pageSize, handlePageChange]);
412
+ React.useEffect(() => {
413
+ onSelectionModelChange?.([]);
414
+ }, [page]);
415
+ return {
416
+ rowCount,
417
+ page,
418
+ pageSize,
419
+ onPaginationModelChange: handlePageChange,
420
+ getId,
421
+ HeadCell,
422
+ BodyRow,
423
+ dataInPage,
424
+ handleSortChange,
425
+ isAllSelected, // all rows are selected on this page
426
+ isTotalSelected,
427
+ isSelectedRow: React.useCallback((model) => selectedModelSet.has(model), [selectedModelSet]),
428
+ onAllCheckboxChange: React.useCallback(() => {
429
+ onSelectionModelChange?.(isAllSelected ? [] : dataInPage.map(getId));
430
+ }, [isAllSelected, dataInPage, onSelectionModelChange, getId]),
431
+ onCheckboxChange: React.useCallback((event, selectedModel) => {
432
+ if (selectedModelSet.has(selectedModel)) {
433
+ const newSelectionModel = selectionModel.filter((model) => model !== selectedModel);
434
+ onSelectionModelChange?.(newSelectionModel);
435
+ }
436
+ else {
437
+ const newSelectionModel = [...selectionModel, selectedModel];
438
+ onSelectionModelChange?.(newSelectionModel);
439
+ }
440
+ }, [selectionModel, onSelectionModelChange, selectedModelSet]),
441
+ columns,
442
+ onTotalSelect: React.useCallback(() => {
443
+ onSelectionModelChange?.(isTotalSelected ? [] : rows.map(getId), !isTotalSelected);
444
+ }, [isTotalSelected, rows, onSelectionModelChange, getId]),
445
+ };
446
+ }
447
+ function DataTable(props) {
448
+ // prop destruction
449
+ const { rows, checkboxSelection, editMode, selectionModel, onSelectionModelChange, disableSelectionOnClick, onRowClick, rowCount: _, // rowCount is used in useDataTableRenderer
450
+ columns: __, // columns is used in useDataTableRenderer
451
+ onPaginationModelChange: ___, // onPaginationModelChange is used in useDataTableRenderer
452
+ pagination, paginationMode: ____, // paginationMode is used in useDataTableRenderer
453
+ paginationModel: _____, // paginationModel is used in useDataTableRenderer
454
+ sortModel: ______, // sortModel is used in useDataTableRenderer
455
+ sortOrder: _______, // sortOrder is used in useDataTableRenderer
456
+ onSortModelChange: ________, // onSortModelChange is used in useDataTableRenderer
457
+ initialState: _________, // initialState is used in useDataTableRenderer
458
+ loading, slots: { checkbox: RenderCheckbox = Checkbox.Checkbox, toolbar: Toolbar, footer: Footer, loadingOverlay: LoadingOverlay = () => (React.createElement(joy.LinearProgress, { value: 8, variant: "plain" })), } = {}, slotProps: { checkbox: checkboxProps = {}, toolbar: toolbarProps, background: backgroundProps = {}, } = {}, stripe, ...innerProps } = props;
459
+ // state, ref, querystring hooks
460
+ const tableId = React.useId();
461
+ const parentRef = React.useRef(null);
462
+ // lib hooks
463
+ const { columns, isAllSelected, isSelectedRow, onAllCheckboxChange, onCheckboxChange, getId, rowCount, page, pageSize, onPaginationModelChange, handleSortChange, dataInPage, isTotalSelected, onTotalSelect, HeadCell, BodyRow, } = useDataTableRenderer(props);
464
+ const virtualizer = reactVirtual.useVirtualizer({
465
+ count: dataInPage.length,
466
+ getScrollElement: () => parentRef.current,
467
+ estimateSize: () => 32,
468
+ measureElement: (element) => element.clientHeight,
469
+ overscan: 20,
470
+ });
471
+ // form hooks
472
+ // query hooks
473
+ // calculated values
474
+ const paginationModel = React.useMemo(() => ({ page, pageSize }), [page, pageSize]);
475
+ const totalSize = virtualizer.getTotalSize();
476
+ const virtualizedItems = virtualizer.getVirtualItems();
477
+ // effects
478
+ // handlers
479
+ return (React.createElement(Box.Box, { sx: {
480
+ maxHeight: "100%",
481
+ overflow: "auto",
482
+ display: "flex",
483
+ flexDirection: "column",
484
+ } },
485
+ (!!checkboxSelection || !!Toolbar) && (React.createElement(joy.Stack, { direction: "row", sx: {
486
+ pt: 1,
487
+ pb: 1,
488
+ }, justifyContent: "space-between", alignItems: "center" },
489
+ !!checkboxSelection && (React.createElement(joy.Stack, { direction: "row", spacing: 1 },
490
+ !isAllSelected && (React.createElement(Typography.Typography, { level: "body-xs" },
491
+ numberFormatter(selectionModel?.length || 0),
492
+ " items selected")),
493
+ isAllSelected && !isTotalSelected && (React.createElement(joy.Stack, { direction: "row", spacing: 1, alignItems: "center" },
494
+ React.createElement(Typography.Typography, { level: "body-xs" },
495
+ "All ",
496
+ numberFormatter(selectionModel?.length || 0),
497
+ " items on this page are selected."),
498
+ React.createElement(Button.Button, { size: "sm", variant: "plain", onClick: onTotalSelect },
499
+ "Select all ",
500
+ numberFormatter(rowCount ?? rows.length),
501
+ " items"))),
502
+ isTotalSelected && (React.createElement(joy.Stack, { direction: "row", spacing: 1, alignItems: "center" },
503
+ React.createElement(Typography.Typography, { level: "body-xs" },
504
+ "All ",
505
+ numberFormatter(rowCount ?? rows.length),
506
+ " items are selected."),
507
+ React.createElement(Button.Button, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))))),
508
+ Toolbar && React.createElement(Toolbar, { ...(toolbarProps || {}) }))),
509
+ React.createElement(Sheet.Sheet, { variant: "outlined", sx: {
510
+ height: "100%",
511
+ overflow: "auto",
512
+ width: "100%",
513
+ boxShadow: "sm",
514
+ borderRadius: "sm",
515
+ }, ref: parentRef, ...backgroundProps },
516
+ React.createElement(Table.Table, { ...innerProps },
517
+ React.createElement("thead", null,
518
+ React.createElement("tr", null,
519
+ checkboxSelection && (React.createElement("th", { style: {
520
+ width: "40px",
521
+ textAlign: "center",
522
+ } },
523
+ React.createElement(RenderCheckbox, { onChange: onAllCheckboxChange, checked: isAllSelected, indeterminate: (selectionModel || []).length > 0 && !isAllSelected, ...checkboxProps }))),
524
+ columns.map((c, i) => (React.createElement(HeadCell, { tableId: tableId, key: `${c.field.toString()}_${i}`, stickyHeader: props.stickyHeader, editMode: !!c.isCellEditable, onSortChange: handleSortChange, ...c }))))),
525
+ React.createElement(VirtualizedTableBody, { style: {
526
+ height: `${totalSize}px`,
527
+ } },
528
+ !!loading && (React.createElement(OverlayWrapper, null,
529
+ React.createElement("td", null,
530
+ React.createElement(Box.Box, { sx: {
531
+ position: "absolute",
532
+ top: 0,
533
+ left: 0,
534
+ right: 0,
535
+ } },
536
+ React.createElement(LoadingOverlay, null))))),
537
+ virtualizedItems.map((virtualizedRow, index) => {
538
+ const rowIndex = virtualizedRow.index;
539
+ const row = dataInPage[rowIndex];
540
+ const rowId = getId(row, rowIndex);
541
+ const striped = stripe &&
542
+ ((stripe === "even" && (rowIndex + 1) % 2 === 0) ||
543
+ (stripe === "odd" && (rowIndex + 1) % 2 === 1));
544
+ return (React.createElement(VirtualizedTableRow, { key: rowId, role: checkboxSelection && !disableSelectionOnClick
545
+ ? "checkbox"
546
+ : undefined, tabIndex: checkboxSelection && !disableSelectionOnClick
547
+ ? -1
548
+ : undefined, onClick: (e) => {
549
+ onRowClick?.({ row, rowId }, e);
550
+ checkboxSelection &&
551
+ !disableSelectionOnClick &&
552
+ onCheckboxChange(e, rowId);
553
+ }, "aria-checked": checkboxSelection && !disableSelectionOnClick
554
+ ? isSelectedRow(rowId)
555
+ : undefined, striped: striped, style: {
556
+ height: `${virtualizedRow.size}px`,
557
+ transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`,
558
+ } },
559
+ checkboxSelection && (React.createElement("th", { scope: "row", style: {
560
+ textAlign: "center",
561
+ } },
562
+ React.createElement(RenderCheckbox, { onClick: (e) => e.stopPropagation(), onChange: (e) => onCheckboxChange(e, rowId), checked: isSelectedRow(rowId), ...checkboxProps }))),
563
+ React.createElement(BodyRow, { tableId: tableId, columns: columns, row: row, rowId: rowId, editMode: editMode, noWrap: props.noWrap })));
564
+ })),
565
+ Footer && React.createElement(Footer, null))),
566
+ pagination && (React.createElement(Pagination.Pagination, { py: 2, size: "sm", alignItems: "flex-end", paginationModel: paginationModel, rowCount: rowCount, onPageChange: onPaginationModelChange }))));
567
+ }
568
+ DataTable.displayName = "DataTable";
569
+
570
+ exports.DataTable = DataTable;