@thewrong/ui 0.1.0 → 0.2.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 (256) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
  2. package/dist/components/_shared/form-size-tokens.cjs.js +1 -0
  3. package/dist/components/_shared/form-size-tokens.esm.js +29 -0
  4. package/dist/components/action-toast/ActionToast.cjs.js +1 -0
  5. package/dist/components/action-toast/ActionToast.esm.js +228 -0
  6. package/dist/components/animated-height/AnimatedHeight.cjs.js +1 -0
  7. package/dist/components/animated-height/AnimatedHeight.esm.js +36 -0
  8. package/dist/components/badge/Badge.cjs.js +1 -0
  9. package/dist/components/badge/Badge.esm.js +30 -0
  10. package/dist/components/badge/utils.cjs.js +1 -0
  11. package/dist/components/badge/utils.esm.js +38 -0
  12. package/dist/components/button/Button.cjs.js +1 -0
  13. package/dist/components/button/Button.esm.js +84 -0
  14. package/dist/components/button/utils.cjs.js +1 -0
  15. package/dist/components/button/utils.esm.js +38 -0
  16. package/dist/components/checkbox/Checkbox.cjs.js +1 -0
  17. package/dist/components/checkbox/Checkbox.esm.js +68 -0
  18. package/dist/components/checkbox/utils.cjs.js +1 -0
  19. package/dist/components/checkbox/utils.esm.js +44 -0
  20. package/dist/components/collapsible/Collapsible.cjs.js +1 -0
  21. package/dist/components/collapsible/Collapsible.esm.js +19 -0
  22. package/dist/components/date-input/DateInput.cjs.js +1 -0
  23. package/dist/components/date-input/DateInput.esm.js +39 -0
  24. package/dist/components/date-picker/date-picker.cjs.js +1 -0
  25. package/dist/components/date-picker/date-picker.esm.js +231 -0
  26. package/dist/components/date-picker/date-range-picker.cjs.js +1 -0
  27. package/dist/components/date-picker/date-range-picker.esm.js +287 -0
  28. package/dist/components/date-picker/month-picker.cjs.js +1 -0
  29. package/dist/components/date-picker/month-picker.esm.js +147 -0
  30. package/dist/components/drawer/Drawer.cjs.js +1 -0
  31. package/dist/components/drawer/Drawer.esm.js +113 -0
  32. package/dist/components/info-tooltip/InfoTooltip.cjs.js +1 -0
  33. package/dist/components/info-tooltip/InfoTooltip.esm.js +24 -0
  34. package/dist/components/input/Input.cjs.js +1 -0
  35. package/dist/components/input/Input.esm.js +95 -0
  36. package/dist/components/input/PasswordInput.cjs.js +1 -0
  37. package/dist/components/input/PasswordInput.esm.js +29 -0
  38. package/dist/components/input/format.cjs.js +1 -0
  39. package/dist/components/input/format.esm.js +33 -0
  40. package/dist/components/input/utils.cjs.js +1 -0
  41. package/dist/components/input/utils.esm.js +23 -0
  42. package/dist/components/loading-spinner/LoadingSpinner.cjs.js +1 -0
  43. package/dist/components/loading-spinner/LoadingSpinner.esm.js +47 -0
  44. package/dist/components/modal/Modal.cjs.js +1 -0
  45. package/dist/components/modal/Modal.esm.js +137 -0
  46. package/dist/components/modal/ModalSubView.cjs.js +1 -0
  47. package/dist/components/modal/ModalSubView.esm.js +91 -0
  48. package/dist/components/modal/StandardModal.cjs.js +1 -0
  49. package/dist/components/modal/StandardModal.esm.js +54 -0
  50. package/dist/components/page-title/PageTitle.cjs.js +1 -0
  51. package/dist/components/page-title/PageTitle.esm.js +16 -0
  52. package/dist/components/popover/Popover.cjs.js +1 -0
  53. package/dist/components/popover/Popover.esm.js +57 -0
  54. package/dist/components/search-box/ExactMatchToggle.cjs.js +1 -0
  55. package/dist/components/search-box/ExactMatchToggle.esm.js +27 -0
  56. package/dist/components/search-box/SearchBox.cjs.js +1 -0
  57. package/dist/components/search-box/SearchBox.esm.js +154 -0
  58. package/dist/components/search-box/SearchBoxChips.cjs.js +1 -0
  59. package/dist/components/search-box/SearchBoxChips.esm.js +36 -0
  60. package/dist/components/search-box/SearchBoxDateRange.cjs.js +1 -0
  61. package/dist/components/search-box/SearchBoxDateRange.esm.js +57 -0
  62. package/dist/components/search-box/SearchBoxDateSingle.cjs.js +1 -0
  63. package/dist/components/search-box/SearchBoxDateSingle.esm.js +37 -0
  64. package/dist/components/search-box/SearchBoxField.cjs.js +1 -0
  65. package/dist/components/search-box/SearchBoxField.esm.js +48 -0
  66. package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +1 -0
  67. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +38 -0
  68. package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +1 -0
  69. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +74 -0
  70. package/dist/components/search-box/SearchBoxMonth.cjs.js +1 -0
  71. package/dist/components/search-box/SearchBoxMonth.esm.js +35 -0
  72. package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +1 -0
  73. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +78 -0
  74. package/dist/components/search-box/SearchBoxSheetContext.cjs.js +1 -0
  75. package/dist/components/search-box/SearchBoxSheetContext.esm.js +5 -0
  76. package/dist/components/search-box/dateRangePresets.cjs.js +1 -0
  77. package/dist/components/search-box/dateRangePresets.esm.js +59 -0
  78. package/dist/components/search-box/parseDateRange.cjs.js +1 -0
  79. package/dist/components/search-box/parseDateRange.esm.js +21 -0
  80. package/dist/components/search-box/parseSearchValues.cjs.js +1 -0
  81. package/dist/components/search-box/parseSearchValues.esm.js +15 -0
  82. package/dist/components/search-box/useSearchBoxState.cjs.js +1 -0
  83. package/dist/components/search-box/useSearchBoxState.esm.js +87 -0
  84. package/dist/components/select/MultiSelect.cjs.js +1 -0
  85. package/dist/components/select/MultiSelect.esm.js +277 -0
  86. package/dist/components/select/Select.cjs.js +1 -0
  87. package/dist/components/select/Select.esm.js +308 -0
  88. package/dist/components/select/loading-dots.cjs.js +1 -0
  89. package/dist/components/select/loading-dots.esm.js +23 -0
  90. package/dist/components/switch/Switch.cjs.js +1 -0
  91. package/dist/components/switch/Switch.esm.js +36 -0
  92. package/dist/components/switch/utils.cjs.js +1 -0
  93. package/dist/components/switch/utils.esm.js +39 -0
  94. package/dist/components/table/accordion-table.cjs.js +1 -0
  95. package/dist/components/table/accordion-table.esm.js +418 -0
  96. package/dist/components/table/column-group-utils.cjs.js +1 -0
  97. package/dist/components/table/column-group-utils.esm.js +53 -0
  98. package/dist/components/table/components/ColumnPresetSelector.cjs.js +1 -0
  99. package/dist/components/table/components/ColumnPresetSelector.esm.js +165 -0
  100. package/dist/components/table/components/ColumnSettingsTable.cjs.js +4 -0
  101. package/dist/components/table/components/ColumnSettingsTable.esm.js +196 -0
  102. package/dist/components/table/components/KeyboardNavButton.cjs.js +1 -0
  103. package/dist/components/table/components/KeyboardNavButton.esm.js +24 -0
  104. package/dist/components/table/components/PageJumpInput.cjs.js +1 -0
  105. package/dist/components/table/components/PageJumpInput.esm.js +53 -0
  106. package/dist/components/table/components/Pagination.cjs.js +1 -0
  107. package/dist/components/table/components/Pagination.esm.js +162 -0
  108. package/dist/components/table/components/PaginationFooter.cjs.js +1 -0
  109. package/dist/components/table/components/PaginationFooter.esm.js +80 -0
  110. package/dist/components/table/components/SortableHeaderCell.cjs.js +1 -0
  111. package/dist/components/table/components/SortableHeaderCell.esm.js +30 -0
  112. package/dist/components/table/hooks/useColumnPresets.cjs.js +1 -0
  113. package/dist/components/table/hooks/useColumnPresets.esm.js +165 -0
  114. package/dist/components/table/hooks/useColumnResize.cjs.js +1 -0
  115. package/dist/components/table/hooks/useColumnResize.esm.js +106 -0
  116. package/dist/components/table/hooks/useFillEmptyRows.cjs.js +1 -0
  117. package/dist/components/table/hooks/useFillEmptyRows.esm.js +49 -0
  118. package/dist/components/table/hooks/useInfiniteScroll.cjs.js +1 -0
  119. package/dist/components/table/hooks/useInfiniteScroll.esm.js +32 -0
  120. package/dist/components/table/hooks/useTableColumnState.cjs.js +1 -0
  121. package/dist/components/table/hooks/useTableColumnState.esm.js +46 -0
  122. package/dist/components/table/hooks/useTableDragSelection.cjs.js +1 -0
  123. package/dist/components/table/hooks/useTableDragSelection.esm.js +76 -0
  124. package/dist/components/table/hooks/useTableSort.cjs.js +1 -0
  125. package/dist/components/table/hooks/useTableSort.esm.js +30 -0
  126. package/dist/components/table/hooks/useVirtualTable.cjs.js +1 -0
  127. package/dist/components/table/hooks/useVirtualTable.esm.js +18 -0
  128. package/dist/components/table/mini-table.cjs.js +1 -0
  129. package/dist/components/table/mini-table.esm.js +126 -0
  130. package/dist/components/table/paginated-mini-table.cjs.js +1 -0
  131. package/dist/components/table/paginated-mini-table.esm.js +31 -0
  132. package/dist/components/table/paginated-table.cjs.js +1 -0
  133. package/dist/components/table/paginated-table.esm.js +31 -0
  134. package/dist/components/table/table.cjs.js +1 -0
  135. package/dist/components/table/table.esm.js +342 -0
  136. package/dist/components/table/utils.cjs.js +37 -0
  137. package/dist/components/table/utils.esm.js +16 -0
  138. package/dist/components/table-checkbox/TableCheckbox.cjs.js +1 -0
  139. package/dist/components/table-checkbox/TableCheckbox.esm.js +39 -0
  140. package/dist/components/table-page-layout/TablePageLayout.cjs.js +1 -0
  141. package/dist/components/table-page-layout/TablePageLayout.esm.js +37 -0
  142. package/dist/components/textarea/Textarea.cjs.js +1 -0
  143. package/dist/components/textarea/Textarea.esm.js +62 -0
  144. package/dist/components/toast/ToastProvider.cjs.js +1 -0
  145. package/dist/components/toast/ToastProvider.esm.js +82 -0
  146. package/dist/components/toast/index.esm.js +3 -0
  147. package/dist/components/toolbar/Toolbar.cjs.js +1 -0
  148. package/dist/components/toolbar/Toolbar.esm.js +148 -0
  149. package/dist/components/tooltip/Tooltip.cjs.js +1 -0
  150. package/dist/components/tooltip/Tooltip.esm.js +39 -0
  151. package/dist/hooks/useBottomSheetDrag.cjs.js +1 -0
  152. package/dist/hooks/useBottomSheetDrag.esm.js +17 -0
  153. package/dist/hooks/useClickOutside.cjs.js +1 -0
  154. package/dist/hooks/useClickOutside.esm.js +20 -0
  155. package/dist/hooks/useMediaQuery.cjs.js +1 -0
  156. package/dist/hooks/useMediaQuery.esm.js +15 -0
  157. package/dist/hooks/useScrollLock.cjs.js +1 -0
  158. package/dist/hooks/useScrollLock.esm.js +16 -0
  159. package/dist/hooks.cjs.js +1 -0
  160. package/dist/hooks.esm.js +5 -0
  161. package/dist/index.cjs.js +1 -40
  162. package/dist/index.esm.js +58 -0
  163. package/dist/lib/Portal.cjs.js +1 -0
  164. package/dist/lib/Portal.esm.js +11 -0
  165. package/dist/lib/column-preset-storage.cjs.js +1 -0
  166. package/dist/lib/column-preset-storage.esm.js +123 -0
  167. package/dist/lib/overlay-stack.cjs.js +1 -0
  168. package/dist/lib/overlay-stack.esm.js +28 -0
  169. package/dist/lib/utils.cjs.js +1 -0
  170. package/dist/lib/utils.esm.js +11 -0
  171. package/dist/node_modules/clsx/dist/clsx.cjs.js +1 -0
  172. package/dist/node_modules/clsx/dist/clsx.esm.js +16 -0
  173. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +1 -0
  174. package/dist/node_modules/lucide-react/dist/esm/Icon.esm.js +23 -0
  175. package/dist/node_modules/lucide-react/dist/esm/context.cjs.js +1 -0
  176. package/dist/node_modules/lucide-react/dist/esm/context.esm.js +6 -0
  177. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +1 -0
  178. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.esm.js +17 -0
  179. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs.js +1 -0
  180. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.esm.js +14 -0
  181. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +1 -0
  182. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.esm.js +10 -0
  183. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +1 -0
  184. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.esm.js +25 -0
  185. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +1 -0
  186. package/dist/node_modules/lucide-react/dist/esm/icons/check.esm.js +7 -0
  187. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +1 -0
  188. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js +7 -0
  189. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +1 -0
  190. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js +7 -0
  191. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +1 -0
  192. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js +7 -0
  193. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +1 -0
  194. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.esm.js +10 -0
  195. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +1 -0
  196. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.esm.js +10 -0
  197. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +1 -0
  198. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.esm.js +12 -0
  199. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +1 -0
  200. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.esm.js +19 -0
  201. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +1 -0
  202. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.esm.js +21 -0
  203. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +1 -0
  204. package/dist/node_modules/lucide-react/dist/esm/icons/eye.esm.js +12 -0
  205. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +1 -0
  206. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js +41 -0
  207. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +1 -0
  208. package/dist/node_modules/lucide-react/dist/esm/icons/info.esm.js +19 -0
  209. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +1 -0
  210. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.esm.js +45 -0
  211. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +1 -0
  212. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.esm.js +17 -0
  213. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +1 -0
  214. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.esm.js +7 -0
  215. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +1 -0
  216. package/dist/node_modules/lucide-react/dist/esm/icons/minus.esm.js +7 -0
  217. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +1 -0
  218. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.esm.js +10 -0
  219. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +1 -0
  220. package/dist/node_modules/lucide-react/dist/esm/icons/save.esm.js +17 -0
  221. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +1 -0
  222. package/dist/node_modules/lucide-react/dist/esm/icons/search.esm.js +12 -0
  223. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +1 -0
  224. package/dist/node_modules/lucide-react/dist/esm/icons/settings.esm.js +12 -0
  225. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +1 -0
  226. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.esm.js +17 -0
  227. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +1 -0
  228. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.esm.js +7 -0
  229. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +1 -0
  230. package/dist/node_modules/lucide-react/dist/esm/icons/x.esm.js +10 -0
  231. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.cjs.js +1 -0
  232. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.esm.js +7 -0
  233. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.cjs.js +1 -0
  234. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.esm.js +4 -0
  235. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.cjs.js +1 -0
  236. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.esm.js +4 -0
  237. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.cjs.js +1 -0
  238. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.esm.js +4 -0
  239. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +1 -0
  240. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.esm.js +8 -0
  241. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +1 -0
  242. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +1714 -0
  243. package/dist/node_modules/use-debounce/dist/index.module.cjs.js +1 -0
  244. package/dist/node_modules/use-debounce/dist/index.module.esm.js +70 -0
  245. package/dist/src/components/action-toast/ActionToast.d.ts +6 -1
  246. package/dist/src/components/button/Button.d.ts +16 -0
  247. package/dist/src/components/drawer/Drawer.d.ts +6 -1
  248. package/dist/src/components/info-tooltip/InfoTooltip.d.ts +7 -0
  249. package/dist/src/components/loading-spinner/LoadingSpinner.d.ts +7 -0
  250. package/dist/src/components/modal/Modal.d.ts +7 -1
  251. package/dist/src/components/popover/Popover.d.ts +19 -1
  252. package/dist/src/components/tooltip/Tooltip.d.ts +10 -0
  253. package/dist/ui.css +1 -1
  254. package/llms.txt +91 -0
  255. package/package.json +10 -4
  256. package/dist/index.es.js +0 -8066
@@ -0,0 +1,80 @@
1
+ import { Select as e } from "../../select/Select.esm.js";
2
+ import { KeyboardNavButton as t } from "./KeyboardNavButton.esm.js";
3
+ import { PageJumpInput as n } from "./PageJumpInput.esm.js";
4
+ import { Pagination as r } from "./Pagination.esm.js";
5
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ //#region src/components/table/components/PaginationFooter.tsx
7
+ var s = [
8
+ 30,
9
+ 50,
10
+ 100
11
+ ];
12
+ function c({ currentPage: c, totalPages: l, onPageChange: u, pageSize: d, pageSizeOptions: f = s, onPageSizeChange: p, hasPreviousPage: m, hasNextPage: h, totalElements: g, showTotalCount: _ = !0, enablePageJump: v = !0, enableKeyboardPagination: y = !0, "data-testid": b }) {
13
+ let x = m ?? c > 1, S = h ?? c < l, C = (e) => {
14
+ y && (e.altKey || e.metaKey || e.ctrlKey || e.shiftKey || (e.key === "ArrowLeft" && x ? (e.preventDefault(), u(c - 1)) : e.key === "ArrowRight" && S && (e.preventDefault(), u(c + 1))));
15
+ };
16
+ return /* @__PURE__ */ o("nav", {
17
+ "aria-label": "페이지 네비게이션",
18
+ className: "@container/pagebar group/footer flex flex-wrap items-center justify-between gap-x-3 gap-y-2 shrink-0",
19
+ children: [/* @__PURE__ */ o("div", {
20
+ className: "flex flex-wrap items-center gap-x-3 gap-y-2 text-sm text-neutral-600 dark:text-neutral-300",
21
+ children: [
22
+ _ && g !== void 0 && /* @__PURE__ */ o("span", { children: [
23
+ "총 ",
24
+ g.toLocaleString(),
25
+ "건"
26
+ ] }),
27
+ p && d !== void 0 && /* @__PURE__ */ o("div", {
28
+ className: "flex items-center gap-1",
29
+ children: [/* @__PURE__ */ a("span", {
30
+ className: "text-neutral-500",
31
+ children: "페이지당"
32
+ }), /* @__PURE__ */ a("div", {
33
+ className: "w-20",
34
+ children: /* @__PURE__ */ a(e, {
35
+ variant: "box",
36
+ selectSize: "mini",
37
+ value: String(d),
38
+ onChange: (e) => p(Number(e)),
39
+ options: f.map((e) => ({
40
+ value: String(e),
41
+ label: String(e)
42
+ })),
43
+ placeholder: "선택",
44
+ "data-testid": b ? `${b}-page-size` : void 0
45
+ })
46
+ })]
47
+ }),
48
+ /* @__PURE__ */ a("div", {
49
+ className: "contents @min-[640px]/pagebar:hidden",
50
+ children: v && l > 1 && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a(n, {
51
+ currentPage: c,
52
+ totalPages: l,
53
+ onPageChange: u,
54
+ "data-testid": b ? `${b}-page-jump` : void 0
55
+ }), y && /* @__PURE__ */ a(t, { onKeyDown: C })] })
56
+ })
57
+ ]
58
+ }), /* @__PURE__ */ o("div", {
59
+ className: "flex items-center gap-3 @min-[640px]/pagebar:flex-1 @min-[640px]/pagebar:justify-end @max-[639px]/pagebar:w-full @max-[639px]/pagebar:justify-center",
60
+ children: [/* @__PURE__ */ a("div", {
61
+ className: "hidden @min-[640px]/pagebar:contents",
62
+ children: v && l > 1 && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a(n, {
63
+ currentPage: c,
64
+ totalPages: l,
65
+ onPageChange: u,
66
+ "data-testid": b ? `${b}-page-jump` : void 0
67
+ }), y && /* @__PURE__ */ a(t, { onKeyDown: C })] })
68
+ }), /* @__PURE__ */ a(r, {
69
+ currentPage: c,
70
+ totalPages: l,
71
+ onPageChange: u,
72
+ hasPreviousPage: x,
73
+ hasNextPage: S,
74
+ "data-testid": b ? `${b}-pagination` : void 0
75
+ })]
76
+ })]
77
+ });
78
+ }
79
+ //#endregion
80
+ export { c as PaginationFooter };
@@ -0,0 +1 @@
1
+ let e=require("react/jsx-runtime"),t=require("@dnd-kit/sortable"),n=require("@dnd-kit/utilities");function r({id:r,disabled:i=!1,as:a=`div`,colSpan:o,rowSpan:s,className:c,style:l,children:u}){let{setNodeRef:d,attributes:f,listeners:p,transform:m,transition:h,isDragging:g}=(0,t.useSortable)({id:r,disabled:i});return(0,e.jsx)(a,{ref:d,className:c,style:{...l,transform:n.CSS.Translate.toString(m),transition:h,opacity:g?.5:1,cursor:i?void 0:`grab`},...a===`th`?{...o===void 0?{}:{colSpan:o},...s===void 0?{}:{rowSpan:s}}:{},...i?{}:f,...i?{}:p,children:u})}exports.SortableHeaderCell=r;
@@ -0,0 +1,30 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { useSortable as t } from "@dnd-kit/sortable";
3
+ import { CSS as n } from "@dnd-kit/utilities";
4
+ //#region src/components/table/components/SortableHeaderCell.tsx
5
+ function r({ id: r, disabled: i = !1, as: a = "div", colSpan: o, rowSpan: s, className: c, style: l, children: u }) {
6
+ let { setNodeRef: d, attributes: f, listeners: p, transform: m, transition: h, isDragging: g } = t({
7
+ id: r,
8
+ disabled: i
9
+ });
10
+ return /* @__PURE__ */ e(a, {
11
+ ref: d,
12
+ className: c,
13
+ style: {
14
+ ...l,
15
+ transform: n.Translate.toString(m),
16
+ transition: h,
17
+ opacity: g ? .5 : 1,
18
+ cursor: i ? void 0 : "grab"
19
+ },
20
+ ...a === "th" ? {
21
+ ...o === void 0 ? {} : { colSpan: o },
22
+ ...s === void 0 ? {} : { rowSpan: s }
23
+ } : {},
24
+ ...i ? {} : f,
25
+ ...i ? {} : p,
26
+ children: u
27
+ });
28
+ }
29
+ //#endregion
30
+ export { r as SortableHeaderCell };
@@ -0,0 +1 @@
1
+ const e=require("../column-group-utils.cjs.js"),t=require("../../../lib/column-preset-storage.cjs.js");let n=require("react");function r(e,t){let n=new Set(t),r=new Set(e),i=e.filter(e=>n.has(e)),a=t.filter(e=>!r.has(e)),o=[...i,...a];if(o.length===e.length){let t=!0;for(let n=0;n<o.length;n++)if(o[n]!==e[n]){t=!1;break}if(t)return e}return o}function i(e,t){return!e||e.columnOrder.length===0?{columnOrder:t,hiddenColumns:[],columnWidths:e?.columnWidths??{}}:{columnOrder:r(e.columnOrder,t),hiddenColumns:e.hiddenColumns??[],columnWidths:e.columnWidths??{}}}function a(e,t){if(e.columnOrder.length!==t.columnOrder.length)return!1;for(let n=0;n<e.columnOrder.length;n++)if(e.columnOrder[n]!==t.columnOrder[n])return!1;if(e.hiddenColumns.length!==t.hiddenColumns.length)return!1;let n=new Set(t.hiddenColumns);for(let t of e.hiddenColumns)if(!n.has(t))return!1;let r=Object.keys(e.columnWidths),i=Object.keys(t.columnWidths);if(r.length!==i.length)return!1;for(let n of r)if(e.columnWidths[n]!==t.columnWidths[n])return!1;return!0}function o({pageKey:o,columns:s,columnGroups:c,legacyStorageKey:l}){let u=(0,n.useMemo)(()=>e.getDefaultSlotOrder(e.buildColumnSlots(s,c)),[s,c]),[d,f]=(0,n.useState)(1),[p,m]=(0,n.useState)(u),[h,g]=(0,n.useState)([]),[_,v]=(0,n.useState)({}),[y,b]=(0,n.useState)({columnOrder:u,hiddenColumns:[],columnWidths:{}}),x=(0,n.useCallback)(e=>{b(e),m(e.columnOrder),g(e.hiddenColumns),v(e.columnWidths)},[]),S=(0,n.useRef)(void 0),C=(0,n.useRef)(l);return C.current=l,(0,n.useEffect)(()=>{if(!o){S.current=o,f(1),x({columnOrder:u,hiddenColumns:[],columnWidths:{}});return}let e=S.current!==o;if(S.current=o,e){let e=C.current;e&&t.ColumnPresetStorage.migrateFromLegacyStorage(o,e);let n=t.ColumnPresetStorage.getActivePreset(o),r=i(t.ColumnPresetStorage.getPresetColumns(o,n),u);f(n),x(r);return}m(e=>r(e,u)),b(e=>{let t=r(e.columnOrder,u);return t===e.columnOrder?e:{...e,columnOrder:t}})},[x,u,o]),{activePreset:d,columnOrder:p,hiddenColumns:h,columnWidths:_,isDirty:(0,n.useMemo)(()=>!a({columnOrder:p,hiddenColumns:h,columnWidths:_},y),[p,h,_,y]),hasPreset:(0,n.useCallback)(e=>o?t.ColumnPresetStorage.hasPreset(o,e):!1,[o]),applyPreset:(0,n.useCallback)(e=>{if(f(e),!o){x({columnOrder:u,hiddenColumns:[],columnWidths:{}});return}t.ColumnPresetStorage.setActivePreset(o,e),x(i(t.ColumnPresetStorage.getPresetColumns(o,e),u))},[x,u,o]),saveActivePreset:(0,n.useCallback)(()=>!o||p.length===0?!1:(t.ColumnPresetStorage.savePreset(o,d,{columnOrder:p,hiddenColumns:h,columnWidths:_}),b({columnOrder:p,hiddenColumns:h,columnWidths:_}),!0),[d,p,_,h,o]),saveAsPreset:(0,n.useCallback)(e=>o?p.length===0?!1:(t.ColumnPresetStorage.savePreset(o,e,{columnOrder:p,hiddenColumns:h,columnWidths:_}),t.ColumnPresetStorage.setActivePreset(o,e),f(e),b({columnOrder:p,hiddenColumns:h,columnWidths:_}),!0):(f(e),!1),[p,_,h,o]),resetActivePreset:(0,n.useCallback)(()=>{o&&t.ColumnPresetStorage.clearPreset(o,d),x({columnOrder:u,hiddenColumns:[],columnWidths:{}})},[d,x,u,o]),setColumnOrder:(0,n.useCallback)(e=>{m(e)},[]),setHiddenColumns:(0,n.useCallback)(e=>{g(e)},[]),setColumnWidths:(0,n.useCallback)(e=>{v(e)},[]),setColumnWidth:(0,n.useCallback)((e,t)=>{v(n=>{let r={...n};return t>0?r[e]=t:delete r[e],r})},[])}}exports.useColumnPresets=o;
@@ -0,0 +1,165 @@
1
+ import { buildColumnSlots as e, getDefaultSlotOrder as t } from "../column-group-utils.esm.js";
2
+ import { ColumnPresetStorage as n } from "../../../lib/column-preset-storage.esm.js";
3
+ import { useCallback as r, useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
4
+ //#region src/components/table/hooks/useColumnPresets.ts
5
+ function c(e, t) {
6
+ let n = new Set(t), r = new Set(e), i = e.filter((e) => n.has(e)), a = t.filter((e) => !r.has(e)), o = [...i, ...a];
7
+ if (o.length === e.length) {
8
+ let t = !0;
9
+ for (let n = 0; n < o.length; n++) if (o[n] !== e[n]) {
10
+ t = !1;
11
+ break;
12
+ }
13
+ if (t) return e;
14
+ }
15
+ return o;
16
+ }
17
+ function l(e, t) {
18
+ return !e || e.columnOrder.length === 0 ? {
19
+ columnOrder: t,
20
+ hiddenColumns: [],
21
+ columnWidths: e?.columnWidths ?? {}
22
+ } : {
23
+ columnOrder: c(e.columnOrder, t),
24
+ hiddenColumns: e.hiddenColumns ?? [],
25
+ columnWidths: e.columnWidths ?? {}
26
+ };
27
+ }
28
+ function u(e, t) {
29
+ if (e.columnOrder.length !== t.columnOrder.length) return !1;
30
+ for (let n = 0; n < e.columnOrder.length; n++) if (e.columnOrder[n] !== t.columnOrder[n]) return !1;
31
+ if (e.hiddenColumns.length !== t.hiddenColumns.length) return !1;
32
+ let n = new Set(t.hiddenColumns);
33
+ for (let t of e.hiddenColumns) if (!n.has(t)) return !1;
34
+ let r = Object.keys(e.columnWidths), i = Object.keys(t.columnWidths);
35
+ if (r.length !== i.length) return !1;
36
+ for (let n of r) if (e.columnWidths[n] !== t.columnWidths[n]) return !1;
37
+ return !0;
38
+ }
39
+ function d({ pageKey: d, columns: f, columnGroups: p, legacyStorageKey: m }) {
40
+ let h = a(() => t(e(f, p)), [f, p]), [g, _] = s(1), [v, y] = s(h), [b, x] = s([]), [S, C] = s({}), [w, T] = s({
41
+ columnOrder: h,
42
+ hiddenColumns: [],
43
+ columnWidths: {}
44
+ }), E = r((e) => {
45
+ T(e), y(e.columnOrder), x(e.hiddenColumns), C(e.columnWidths);
46
+ }, []), D = o(void 0), O = o(m);
47
+ return O.current = m, i(() => {
48
+ if (!d) {
49
+ D.current = d, _(1), E({
50
+ columnOrder: h,
51
+ hiddenColumns: [],
52
+ columnWidths: {}
53
+ });
54
+ return;
55
+ }
56
+ let e = D.current !== d;
57
+ if (D.current = d, e) {
58
+ let e = O.current;
59
+ e && n.migrateFromLegacyStorage(d, e);
60
+ let t = n.getActivePreset(d), r = l(n.getPresetColumns(d, t), h);
61
+ _(t), E(r);
62
+ return;
63
+ }
64
+ y((e) => c(e, h)), T((e) => {
65
+ let t = c(e.columnOrder, h);
66
+ return t === e.columnOrder ? e : {
67
+ ...e,
68
+ columnOrder: t
69
+ };
70
+ });
71
+ }, [
72
+ E,
73
+ h,
74
+ d
75
+ ]), {
76
+ activePreset: g,
77
+ columnOrder: v,
78
+ hiddenColumns: b,
79
+ columnWidths: S,
80
+ isDirty: a(() => !u({
81
+ columnOrder: v,
82
+ hiddenColumns: b,
83
+ columnWidths: S
84
+ }, w), [
85
+ v,
86
+ b,
87
+ S,
88
+ w
89
+ ]),
90
+ hasPreset: r((e) => d ? n.hasPreset(d, e) : !1, [d]),
91
+ applyPreset: r((e) => {
92
+ if (_(e), !d) {
93
+ E({
94
+ columnOrder: h,
95
+ hiddenColumns: [],
96
+ columnWidths: {}
97
+ });
98
+ return;
99
+ }
100
+ n.setActivePreset(d, e), E(l(n.getPresetColumns(d, e), h));
101
+ }, [
102
+ E,
103
+ h,
104
+ d
105
+ ]),
106
+ saveActivePreset: r(() => !d || v.length === 0 ? !1 : (n.savePreset(d, g, {
107
+ columnOrder: v,
108
+ hiddenColumns: b,
109
+ columnWidths: S
110
+ }), T({
111
+ columnOrder: v,
112
+ hiddenColumns: b,
113
+ columnWidths: S
114
+ }), !0), [
115
+ g,
116
+ v,
117
+ S,
118
+ b,
119
+ d
120
+ ]),
121
+ saveAsPreset: r((e) => d ? v.length === 0 ? !1 : (n.savePreset(d, e, {
122
+ columnOrder: v,
123
+ hiddenColumns: b,
124
+ columnWidths: S
125
+ }), n.setActivePreset(d, e), _(e), T({
126
+ columnOrder: v,
127
+ hiddenColumns: b,
128
+ columnWidths: S
129
+ }), !0) : (_(e), !1), [
130
+ v,
131
+ S,
132
+ b,
133
+ d
134
+ ]),
135
+ resetActivePreset: r(() => {
136
+ d && n.clearPreset(d, g), E({
137
+ columnOrder: h,
138
+ hiddenColumns: [],
139
+ columnWidths: {}
140
+ });
141
+ }, [
142
+ g,
143
+ E,
144
+ h,
145
+ d
146
+ ]),
147
+ setColumnOrder: r((e) => {
148
+ y(e);
149
+ }, []),
150
+ setHiddenColumns: r((e) => {
151
+ x(e);
152
+ }, []),
153
+ setColumnWidths: r((e) => {
154
+ C(e);
155
+ }, []),
156
+ setColumnWidth: r((e, t) => {
157
+ C((n) => {
158
+ let r = { ...n };
159
+ return t > 0 ? r[e] = t : delete r[e], r;
160
+ });
161
+ }, [])
162
+ };
163
+ }
164
+ //#endregion
165
+ export { d as useColumnPresets };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({columns:t,defaultWidth:n=150,minWidth:r=50,maxWidth:i,tableRef:a,storageKey:o,controlledWidths:s,onColumnWidthsChange:c}){let l=s!==void 0,u=(0,e.useCallback)(()=>{if(l||!o)return{};try{let e=localStorage.getItem(o);if(e){let t=JSON.parse(e),n={};return Object.entries(t).forEach(([e,t])=>{typeof t==`number`&&t>=r&&(n[e]=t)}),n}}catch(e){console.warn(`[ColumnResize] Failed to load saved widths:`,e)}return{}},[l,o,r]),[d,f]=(0,e.useState)(()=>u()),p=l?s:d,m=(0,e.useCallback)(e=>{if(l){let t=typeof e==`function`?e(p):e;c?.(t);return}f(e)},[p,l,c]);(0,e.useEffect)(()=>{if(!l&&!(!o||Object.keys(d).length===0))try{localStorage.setItem(o,JSON.stringify(d))}catch(e){console.warn(`[ColumnResize] Failed to save widths:`,e)}},[d,l,o]);let h=(0,e.useRef)(null),g=(0,e.useRef)(null),_=(0,e.useCallback)(e=>{if(typeof e==`string`)return e;if(typeof e==`number`)return String(e);if(e==null)return``;if(Array.isArray(e))return e.map(e=>_(e)).join(``);if(typeof e==`object`&&`props`in e){let t=e.props;if(t?.children)return _(t.children)}return``},[]),v=(0,e.useCallback)(e=>{if(!g.current)return n;let i=t.find(t=>t.key===e)?.header,a=typeof i==`string`?i:_(i);g.current.textContent=a||e,g.current.style.fontSize=`14px`,g.current.style.fontWeight=`600`,g.current.style.padding=`0 24px`;let o=g.current.offsetWidth;return Math.max(r,o+20)},[t,_,n,r]);return{columnWidths:p,handleMouseDown:(0,e.useCallback)((e,t)=>{t.preventDefault(),t.stopPropagation();let o=p[e]||n;h.current={key:e,startX:t.clientX,startWidth:o};let s=a?.current?.querySelector(`colgroup col[data-col-key="${CSS.escape(e)}"]`)??null,c=a?.current??null,l=(c?parseFloat(c.style.width)||c.offsetWidth:0)-o,u=c?.parentElement?.clientWidth||1/0,d=Math.min(i??1/0,u),f=o,g=null,_=e=>{if(!h.current)return;let t=e.clientX-h.current.startX,n=Math.max(r,h.current.startWidth+t);f=Math.max(r,Math.min(n,d)),g===null&&(g=requestAnimationFrame(()=>{g=null,s&&(s.style.width=`${f}px`),c&&(c.style.width=`${l+f}px`)}))},v=()=>{g!==null&&cancelAnimationFrame(g);let e=h.current?.key;h.current=null,document.removeEventListener(`mousemove`,_),document.removeEventListener(`mouseup`,v),e&&m(t=>({...t,[e]:f}))};document.addEventListener(`mousemove`,_),document.addEventListener(`mouseup`,v)},[p,n,r,i,a,m]),handleDoubleClick:(0,e.useCallback)(()=>{},[]),getColumnWidth:(0,e.useCallback)((e,t)=>p[e]?`${p[e]}px`:t?typeof t==`number`?`${t}px`:t:`${v(e)}px`,[p,v]),measureRef:g}}exports.useColumnResize=t;
@@ -0,0 +1,106 @@
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/components/table/hooks/useColumnResize.ts
3
+ function i({ columns: i, defaultWidth: a = 150, minWidth: o = 50, maxWidth: s, tableRef: c, storageKey: l, controlledWidths: u, onColumnWidthsChange: d }) {
4
+ let f = u !== void 0, p = e(() => {
5
+ if (f || !l) return {};
6
+ try {
7
+ let e = localStorage.getItem(l);
8
+ if (e) {
9
+ let t = JSON.parse(e), n = {};
10
+ return Object.entries(t).forEach(([e, t]) => {
11
+ typeof t == "number" && t >= o && (n[e] = t);
12
+ }), n;
13
+ }
14
+ } catch (e) {
15
+ console.warn("[ColumnResize] Failed to load saved widths:", e);
16
+ }
17
+ return {};
18
+ }, [
19
+ f,
20
+ l,
21
+ o
22
+ ]), [m, h] = r(() => p()), g = f ? u : m, _ = e((e) => {
23
+ if (f) {
24
+ let t = typeof e == "function" ? e(g) : e;
25
+ d?.(t);
26
+ return;
27
+ }
28
+ h(e);
29
+ }, [
30
+ g,
31
+ f,
32
+ d
33
+ ]);
34
+ t(() => {
35
+ if (!f && !(!l || Object.keys(m).length === 0)) try {
36
+ localStorage.setItem(l, JSON.stringify(m));
37
+ } catch (e) {
38
+ console.warn("[ColumnResize] Failed to save widths:", e);
39
+ }
40
+ }, [
41
+ m,
42
+ f,
43
+ l
44
+ ]);
45
+ let v = n(null), y = n(null), b = e((e) => {
46
+ if (typeof e == "string") return e;
47
+ if (typeof e == "number") return String(e);
48
+ if (e == null) return "";
49
+ if (Array.isArray(e)) return e.map((e) => b(e)).join("");
50
+ if (typeof e == "object" && "props" in e) {
51
+ let t = e.props;
52
+ if (t?.children) return b(t.children);
53
+ }
54
+ return "";
55
+ }, []), x = e((e) => {
56
+ if (!y.current) return a;
57
+ let t = i.find((t) => t.key === e)?.header, n = typeof t == "string" ? t : b(t);
58
+ y.current.textContent = n || e, y.current.style.fontSize = "14px", y.current.style.fontWeight = "600", y.current.style.padding = "0 24px";
59
+ let r = y.current.offsetWidth;
60
+ return Math.max(o, r + 20);
61
+ }, [
62
+ i,
63
+ b,
64
+ a,
65
+ o
66
+ ]);
67
+ return {
68
+ columnWidths: g,
69
+ handleMouseDown: e((e, t) => {
70
+ t.preventDefault(), t.stopPropagation();
71
+ let n = g[e] || a;
72
+ v.current = {
73
+ key: e,
74
+ startX: t.clientX,
75
+ startWidth: n
76
+ };
77
+ let r = c?.current?.querySelector(`colgroup col[data-col-key="${CSS.escape(e)}"]`) ?? null, i = c?.current ?? null, l = (i ? parseFloat(i.style.width) || i.offsetWidth : 0) - n, u = i?.parentElement?.clientWidth || Infinity, d = Math.min(s ?? Infinity, u), f = n, p = null, m = (e) => {
78
+ if (!v.current) return;
79
+ let t = e.clientX - v.current.startX, n = Math.max(o, v.current.startWidth + t);
80
+ f = Math.max(o, Math.min(n, d)), p === null && (p = requestAnimationFrame(() => {
81
+ p = null, r && (r.style.width = `${f}px`), i && (i.style.width = `${l + f}px`);
82
+ }));
83
+ }, h = () => {
84
+ p !== null && cancelAnimationFrame(p);
85
+ let e = v.current?.key;
86
+ v.current = null, document.removeEventListener("mousemove", m), document.removeEventListener("mouseup", h), e && _((t) => ({
87
+ ...t,
88
+ [e]: f
89
+ }));
90
+ };
91
+ document.addEventListener("mousemove", m), document.addEventListener("mouseup", h);
92
+ }, [
93
+ g,
94
+ a,
95
+ o,
96
+ s,
97
+ c,
98
+ _
99
+ ]),
100
+ handleDoubleClick: e(() => {}, []),
101
+ getColumnWidth: e((e, t) => g[e] ? `${g[e]}px` : t ? typeof t == "number" ? `${t}px` : t : `${x(e)}px`, [g, x]),
102
+ measureRef: y
103
+ };
104
+ }
105
+ //#endregion
106
+ export { i as useColumnResize };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({enabled:t,containerRef:n,theadRef:r,tbodyRef:i,excludeRowsSelector:a,remainingMode:o,observeTbody:s=!1,deps:c=[]}){let[l,u]=(0,e.useState)(0),[d,f]=(0,e.useState)(null);return(0,e.useLayoutEffect)(()=>{if(!t){u(e=>e===0?e:0);return}let e=n.current,c=r.current,l=i.current;if(!e||!c||!l)return;let d=()=>{let t=e.clientHeight,n=c.offsetHeight,r=l.querySelectorAll(a);if(r.length===0){u(0),f(null);return}let i=0;r.forEach(e=>{i+=e.offsetHeight});let s=i/r.length;if(s<=0)return;f(e=>e===s?e:s);let d=o===`tbody-height`?l.offsetHeight:i,p=t-n-d,m=p>0?Math.floor(p/s):0;u(e=>e===m?e:m)};d();let p=null,m=new ResizeObserver(()=>{p===null&&(p=requestAnimationFrame(()=>{p=null,d()}))});return m.observe(e),s&&m.observe(l),()=>{m.disconnect(),p!==null&&cancelAnimationFrame(p)}},[t,a,o,s,...c]),{emptyRowCount:l,measuredRowHeight:d}}exports.useFillEmptyRows=t;
@@ -0,0 +1,49 @@
1
+ import { useLayoutEffect as e, useState as t } from "react";
2
+ //#region src/components/table/hooks/useFillEmptyRows.ts
3
+ function n({ enabled: n, containerRef: r, theadRef: i, tbodyRef: a, excludeRowsSelector: o, remainingMode: s, observeTbody: c = !1, deps: l = [] }) {
4
+ let [u, d] = t(0), [f, p] = t(null);
5
+ return e(() => {
6
+ if (!n) {
7
+ d((e) => e === 0 ? e : 0);
8
+ return;
9
+ }
10
+ let e = r.current, t = i.current, l = a.current;
11
+ if (!e || !t || !l) return;
12
+ let u = () => {
13
+ let n = e.clientHeight, r = t.offsetHeight, i = l.querySelectorAll(o);
14
+ if (i.length === 0) {
15
+ d(0), p(null);
16
+ return;
17
+ }
18
+ let a = 0;
19
+ i.forEach((e) => {
20
+ a += e.offsetHeight;
21
+ });
22
+ let c = a / i.length;
23
+ if (c <= 0) return;
24
+ p((e) => e === c ? e : c);
25
+ let u = s === "tbody-height" ? l.offsetHeight : a, f = n - r - u, m = f > 0 ? Math.floor(f / c) : 0;
26
+ d((e) => e === m ? e : m);
27
+ };
28
+ u();
29
+ let f = null, m = new ResizeObserver(() => {
30
+ f === null && (f = requestAnimationFrame(() => {
31
+ f = null, u();
32
+ }));
33
+ });
34
+ return m.observe(e), c && m.observe(l), () => {
35
+ m.disconnect(), f !== null && cancelAnimationFrame(f);
36
+ };
37
+ }, [
38
+ n,
39
+ o,
40
+ s,
41
+ c,
42
+ ...l
43
+ ]), {
44
+ emptyRowCount: u,
45
+ measuredRowHeight: f
46
+ };
47
+ }
48
+ //#endregion
49
+ export { n as useFillEmptyRows };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({fetchNextPage:t,hasNextPage:n,isFetchingNextPage:r,scrollElement:i,threshold:a=80,enabled:o=!0}){let s=(0,e.useRef)(null),c=(0,e.useRef)(null),l=(0,e.useCallback)(e=>{let[i]=e;i.isIntersecting&&n&&!r&&o&&t()},[n,r,t,o]);return(0,e.useEffect)(()=>{if(!o)return;s.current=new IntersectionObserver(l,{root:i||null,rootMargin:`100px`,threshold:0});let e=c.current;return e&&s.current&&s.current.observe(e),()=>{s.current&&e&&s.current.unobserve(e)}},[l,i,a,o]),{sentinelRef:c}}exports.useInfiniteScroll=t;
@@ -0,0 +1,32 @@
1
+ import { useCallback as e, useEffect as t, useRef as n } from "react";
2
+ //#region src/components/table/hooks/useInfiniteScroll.ts
3
+ function r({ fetchNextPage: r, hasNextPage: i, isFetchingNextPage: a, scrollElement: o, threshold: s = 80, enabled: c = !0 }) {
4
+ let l = n(null), u = n(null), d = e((e) => {
5
+ let [t] = e;
6
+ t.isIntersecting && i && !a && c && r();
7
+ }, [
8
+ i,
9
+ a,
10
+ r,
11
+ c
12
+ ]);
13
+ return t(() => {
14
+ if (!c) return;
15
+ l.current = new IntersectionObserver(d, {
16
+ root: o || null,
17
+ rootMargin: "100px",
18
+ threshold: 0
19
+ });
20
+ let e = u.current;
21
+ return e && l.current && l.current.observe(e), () => {
22
+ l.current && e && l.current.unobserve(e);
23
+ };
24
+ }, [
25
+ d,
26
+ o,
27
+ s,
28
+ c
29
+ ]), { sentinelRef: u };
30
+ }
31
+ //#endregion
32
+ export { r as useInfiniteScroll };
@@ -0,0 +1 @@
1
+ const e=require("../components/ColumnPresetSelector.cjs.js"),t=require("./useColumnPresets.cjs.js");let n=require("react"),r=require("react/jsx-runtime");function i({pageKey:i,columns:a,columnGroups:o,showSelector:s=!0,selectorClassName:c}){let l=t.useColumnPresets({pageKey:i,columns:a,columnGroups:o});return{columnState:(0,n.useMemo)(()=>({columnOrder:l.columnOrder,hiddenColumns:l.hiddenColumns,columnWidths:l.columnWidths,onColumnOrderChange:l.setColumnOrder,onColumnWidthsChange:l.setColumnWidths}),[l.columnOrder,l.hiddenColumns,l.columnWidths,l.setColumnOrder,l.setColumnWidths]),selector:s&&i?(0,r.jsx)(e.ColumnPresetSelector,{columns:a,columnGroups:o,activePreset:l.activePreset,columnOrder:l.columnOrder,hiddenColumns:l.hiddenColumns,columnWidths:l.columnWidths,isDirty:l.isDirty,hasPreset:l.hasPreset,onApplyPreset:l.applyPreset,onSaveActivePreset:l.saveActivePreset,onResetActivePreset:l.resetActivePreset,onColumnOrderChange:l.setColumnOrder,onHiddenColumnsChange:l.setHiddenColumns,onSetColumnWidth:l.setColumnWidth,className:c}):null}}exports.useTableColumnState=i;
@@ -0,0 +1,46 @@
1
+ import { ColumnPresetSelector as e } from "../components/ColumnPresetSelector.esm.js";
2
+ import { useColumnPresets as t } from "./useColumnPresets.esm.js";
3
+ import { useMemo as n } from "react";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ //#region src/components/table/hooks/useTableColumnState.tsx
6
+ function i({ pageKey: i, columns: a, columnGroups: o, showSelector: s = !0, selectorClassName: c }) {
7
+ let l = t({
8
+ pageKey: i,
9
+ columns: a,
10
+ columnGroups: o
11
+ });
12
+ return {
13
+ columnState: n(() => ({
14
+ columnOrder: l.columnOrder,
15
+ hiddenColumns: l.hiddenColumns,
16
+ columnWidths: l.columnWidths,
17
+ onColumnOrderChange: l.setColumnOrder,
18
+ onColumnWidthsChange: l.setColumnWidths
19
+ }), [
20
+ l.columnOrder,
21
+ l.hiddenColumns,
22
+ l.columnWidths,
23
+ l.setColumnOrder,
24
+ l.setColumnWidths
25
+ ]),
26
+ selector: s && i ? /* @__PURE__ */ r(e, {
27
+ columns: a,
28
+ columnGroups: o,
29
+ activePreset: l.activePreset,
30
+ columnOrder: l.columnOrder,
31
+ hiddenColumns: l.hiddenColumns,
32
+ columnWidths: l.columnWidths,
33
+ isDirty: l.isDirty,
34
+ hasPreset: l.hasPreset,
35
+ onApplyPreset: l.applyPreset,
36
+ onSaveActivePreset: l.saveActivePreset,
37
+ onResetActivePreset: l.resetActivePreset,
38
+ onColumnOrderChange: l.setColumnOrder,
39
+ onHiddenColumnsChange: l.setHiddenColumns,
40
+ onSetColumnWidth: l.setColumnWidth,
41
+ className: c
42
+ }) : null
43
+ };
44
+ }
45
+ //#endregion
46
+ export { i as useTableColumnState };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({rows:t,getRowId:n,isSelected:r,setSelected:i,enabled:a=!0,scrollContainerRef:o,edgeSize:s=60,maxSpeed:c=14}){let l=(0,e.useRef)(!1),u=(0,e.useRef)(!0),d=(0,e.useRef)(null),f=(0,e.useRef)(null),p=(0,e.useRef)(null),m=(0,e.useRef)(t);m.current=t;let h=(0,e.useRef)(n);h.current=n;let g=(0,e.useRef)(r);g.current=r;let _=(0,e.useRef)(i);_.current=i;let v=(0,e.useMemo)(()=>{let e=new Map;for(let r=0;r<t.length;r++)e.set(n(t[r]),r);return e},[t]),y=(0,e.useRef)(v);y.current=v;let b=(0,e.useCallback)(()=>{p.current!=null&&(cancelAnimationFrame(p.current),p.current=null),f.current=null},[]),x=(0,e.useCallback)(()=>{if(p.current=null,!l.current)return;let e=o?.current,t=f.current;if(!e||t==null)return;let n=e.getBoundingClientRect(),r=0;if(t<n.top+s){let e=(n.top+s-t)/s;r=-Math.ceil(c*Math.min(1,Math.max(0,e)))}else if(t>n.bottom-s){let e=(t-(n.bottom-s))/s;r=Math.ceil(c*Math.min(1,Math.max(0,e)))}r!==0&&(e.scrollTop+=r),p.current=requestAnimationFrame(x)},[s,c,o]);(0,e.useEffect)(()=>{if(!a)return;let e=()=>{l.current=!1,d.current=null,b()},t=e=>{l.current&&(f.current=e.clientY,p.current??=requestAnimationFrame(x))};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousemove`,t),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousemove`,t),b()}},[a,b,x]);let S=e=>e==null?-1:y.current.get(e)??-1;return{onRowMouseDown:(0,e.useCallback)(e=>{if(!a)return;let t=m.current[e];t&&(l.current=!0,d.current=h.current(t),u.current=!g.current(t),_.current(t,u.current))},[a]),onRowMouseEnter:(0,e.useCallback)(e=>{if(!a||!l.current)return;let t=m.current,n=t[e];if(!n)return;let r=h.current(n);if(r===d.current)return;let i=S(d.current),o=i===-1?e:i,s=Math.min(o,e),c=Math.max(o,e);for(let e=s;e<=c;e++){let n=t[e];n&&g.current(n)!==u.current&&_.current(n,u.current)}d.current=r},[a])}}exports.useTableDragSelection=t;
@@ -0,0 +1,76 @@
1
+ import { useCallback as e, useEffect as t, useMemo as n, useRef as r } from "react";
2
+ //#region src/components/table/hooks/useTableDragSelection.ts
3
+ function i({ rows: i, getRowId: a, isSelected: o, setSelected: s, enabled: c = !0, scrollContainerRef: l, edgeSize: u = 60, maxSpeed: d = 14 }) {
4
+ let f = r(!1), p = r(!0), m = r(null), h = r(null), g = r(null), _ = r(i);
5
+ _.current = i;
6
+ let v = r(a);
7
+ v.current = a;
8
+ let y = r(o);
9
+ y.current = o;
10
+ let b = r(s);
11
+ b.current = s;
12
+ let x = n(() => {
13
+ let e = /* @__PURE__ */ new Map();
14
+ for (let t = 0; t < i.length; t++) e.set(a(i[t]), t);
15
+ return e;
16
+ }, [i]), S = r(x);
17
+ S.current = x;
18
+ let C = e(() => {
19
+ g.current != null && (cancelAnimationFrame(g.current), g.current = null), h.current = null;
20
+ }, []), w = e(() => {
21
+ if (g.current = null, !f.current) return;
22
+ let e = l?.current, t = h.current;
23
+ if (!e || t == null) return;
24
+ let n = e.getBoundingClientRect(), r = 0;
25
+ if (t < n.top + u) {
26
+ let e = (n.top + u - t) / u;
27
+ r = -Math.ceil(d * Math.min(1, Math.max(0, e)));
28
+ } else if (t > n.bottom - u) {
29
+ let e = (t - (n.bottom - u)) / u;
30
+ r = Math.ceil(d * Math.min(1, Math.max(0, e)));
31
+ }
32
+ r !== 0 && (e.scrollTop += r), g.current = requestAnimationFrame(w);
33
+ }, [
34
+ u,
35
+ d,
36
+ l
37
+ ]);
38
+ t(() => {
39
+ if (!c) return;
40
+ let e = () => {
41
+ f.current = !1, m.current = null, C();
42
+ }, t = (e) => {
43
+ f.current && (h.current = e.clientY, g.current ??= requestAnimationFrame(w));
44
+ };
45
+ return window.addEventListener("mouseup", e), window.addEventListener("mousemove", t), () => {
46
+ window.removeEventListener("mouseup", e), window.removeEventListener("mousemove", t), C();
47
+ };
48
+ }, [
49
+ c,
50
+ C,
51
+ w
52
+ ]);
53
+ let T = (e) => e == null ? -1 : S.current.get(e) ?? -1;
54
+ return {
55
+ onRowMouseDown: e((e) => {
56
+ if (!c) return;
57
+ let t = _.current[e];
58
+ t && (f.current = !0, m.current = v.current(t), p.current = !y.current(t), b.current(t, p.current));
59
+ }, [c]),
60
+ onRowMouseEnter: e((e) => {
61
+ if (!c || !f.current) return;
62
+ let t = _.current, n = t[e];
63
+ if (!n) return;
64
+ let r = v.current(n);
65
+ if (r === m.current) return;
66
+ let i = T(m.current), a = i === -1 ? e : i, o = Math.min(a, e), s = Math.max(a, e);
67
+ for (let e = o; e <= s; e++) {
68
+ let n = t[e];
69
+ n && y.current(n) !== p.current && b.current(n, p.current);
70
+ }
71
+ m.current = r;
72
+ }, [c])
73
+ };
74
+ }
75
+ //#endregion
76
+ export { i as useTableDragSelection };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({initialSort:t,serverSide:n=!1,onSort:r}={}){let[i,a]=(0,e.useState)(t||null);return{sort:i,handleSort:(0,e.useCallback)(e=>{let t={key:e,direction:i?.key===e?i.direction===`asc`?`desc`:i.direction===`desc`?null:`asc`:`asc`},o=t.direction===null?null:t;a(o),n&&r&&o&&r(o)},[i,n,r]),sortedData:(0,e.useCallback)((e,t)=>!i||!i.direction||n?e:[...e].sort((e,n)=>{let r=t(e,i.key),a=t(n,i.key);if(r==null&&a==null)return 0;if(r==null)return 1;if(a==null)return-1;if(typeof r==`number`&&typeof a==`number`)return i.direction===`asc`?r-a:a-r;let o=String(r),s=String(a),c=o.localeCompare(s,`ko`,{numeric:!0});return i.direction===`asc`?c:-c}),[i,n])}}exports.useTableSort=t;
@@ -0,0 +1,30 @@
1
+ import { useCallback as e, useState as t } from "react";
2
+ //#region src/components/table/hooks/useTableSort.ts
3
+ function n({ initialSort: n, serverSide: r = !1, onSort: i } = {}) {
4
+ let [a, o] = t(n || null);
5
+ return {
6
+ sort: a,
7
+ handleSort: e((e) => {
8
+ let t = {
9
+ key: e,
10
+ direction: a?.key === e ? a.direction === "asc" ? "desc" : a.direction === "desc" ? null : "asc" : "asc"
11
+ }, n = t.direction === null ? null : t;
12
+ o(n), r && i && n && i(n);
13
+ }, [
14
+ a,
15
+ r,
16
+ i
17
+ ]),
18
+ sortedData: e((e, t) => !a || !a.direction || r ? e : [...e].sort((e, n) => {
19
+ let r = t(e, a.key), i = t(n, a.key);
20
+ if (r == null && i == null) return 0;
21
+ if (r == null) return 1;
22
+ if (i == null) return -1;
23
+ if (typeof r == "number" && typeof i == "number") return a.direction === "asc" ? r - i : i - r;
24
+ let o = String(r), s = String(i), c = o.localeCompare(s, "ko", { numeric: !0 });
25
+ return a.direction === "asc" ? c : -c;
26
+ }), [a, r])
27
+ };
28
+ }
29
+ //#endregion
30
+ export { n as useTableSort };
@@ -0,0 +1 @@
1
+ let e=require("react"),t=require("@tanstack/react-virtual");function n({count:n,estimateSize:r=50,overscan:i=5,scrollElement:a}){let o=(0,e.useRef)(null),s=(0,t.useVirtualizer)({count:n,getScrollElement:()=>a||o.current,estimateSize:()=>r,overscan:i,enabled:n>0});return(0,e.useMemo)(()=>({virtualizer:s,parentRef:o}),[s])}exports.useVirtualTable=n;