@economic/taco 2.45.0-alpha.2 → 2.45.0-alpha.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. package/dist/charts/components/Area/AreaChart.d.ts +19 -0
  2. package/dist/charts/components/Bar/BarChart.d.ts +20 -0
  3. package/dist/charts/components/Donut/ActiveShape.d.ts +8 -0
  4. package/dist/charts/components/Donut/CenteredLabel.d.ts +11 -0
  5. package/dist/charts/components/Donut/DonutChart.d.ts +21 -0
  6. package/dist/charts/components/Donut/Legend.d.ts +13 -0
  7. package/dist/charts/components/Donut/util.d.ts +2 -0
  8. package/dist/charts/components/Legend.d.ts +16 -0
  9. package/dist/charts/components/Line/LineChart.d.ts +18 -0
  10. package/dist/charts/components/ResponsiveContainer.d.ts +5 -0
  11. package/dist/charts/components/Tooltip.d.ts +10 -0
  12. package/dist/charts/components/types.d.ts +5 -0
  13. package/dist/charts/utils/color.d.ts +3 -0
  14. package/dist/charts/utils/common.d.ts +37 -0
  15. package/dist/components/Alert/Alert.d.ts +1 -1
  16. package/dist/components/Banner/util.d.ts +0 -1
  17. package/dist/components/Combobox/Combobox.d.ts +1 -1
  18. package/dist/components/Hanger/Hanger.d.ts +1 -0
  19. package/dist/components/Icon/components/Autopay.d.ts +3 -0
  20. package/dist/components/Icon/components/AutopayPaused.d.ts +3 -0
  21. package/dist/components/Icon/components/Experiment.d.ts +3 -0
  22. package/dist/components/Icon/components/Person.d.ts +3 -0
  23. package/dist/components/Icon/components/PersonSolid.d.ts +3 -0
  24. package/dist/components/Icon/components/Wallet.d.ts +3 -0
  25. package/dist/components/Icon/components/index.d.ts +1 -1
  26. package/dist/components/Input/Input.d.ts +1 -1
  27. package/dist/components/Listbox/util.d.ts +1 -1
  28. package/dist/components/Menu/components/Item.d.ts +1 -1
  29. package/dist/components/Menu/components/Link.d.ts +1 -1
  30. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  31. package/dist/components/Pagination/PageNumbers.d.ts +0 -1
  32. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -3
  33. package/dist/components/Report/Report.d.ts +4 -2
  34. package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
  35. package/dist/components/Select/Select.d.ts +5 -19
  36. package/dist/components/Select2/components/Option.d.ts +4 -4
  37. package/dist/components/Select2/components/Search.d.ts +1 -1
  38. package/dist/components/Table3/Table3.d.ts +4 -5
  39. package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.d.ts +0 -1
  40. package/dist/components/Table3/components/Columns/Internal/EditingActionsMenu.d.ts +2 -2
  41. package/dist/components/Table3/components/Row/Editing/CreateNewRow.d.ts +1 -3
  42. package/dist/components/Table3/components/Row/Editing/TemporaryRow.d.ts +1 -0
  43. package/dist/components/Table3/features/useEditingState.d.ts +23 -18
  44. package/dist/components/Table3/features/useTableEditing.d.ts +24 -19
  45. package/dist/components/Table3/types.d.ts +2 -0
  46. package/dist/components/Table3/util/editing.d.ts +3 -0
  47. package/dist/components/Tag/Tag.d.ts +1 -1
  48. package/dist/esm/index.css +74 -12
  49. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js +67 -0
  50. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js.map +1 -0
  51. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js +120 -0
  52. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js.map +1 -0
  53. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js +47 -0
  54. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js.map +1 -0
  55. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js +27 -0
  56. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js.map +1 -0
  57. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js +170 -0
  58. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js.map +1 -0
  59. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +165 -0
  60. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -0
  61. package/dist/esm/packages/taco/src/charts/components/Donut/util.js +5 -0
  62. package/dist/esm/packages/taco/src/charts/components/Donut/util.js.map +1 -0
  63. package/dist/esm/packages/taco/src/charts/components/Legend.js +146 -0
  64. package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -0
  65. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js +65 -0
  66. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js.map +1 -0
  67. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js +10 -0
  68. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js.map +1 -0
  69. package/dist/esm/packages/taco/src/charts/components/Tooltip.js +44 -0
  70. package/dist/esm/packages/taco/src/charts/components/Tooltip.js.map +1 -0
  71. package/dist/esm/packages/taco/src/charts/utils/color.js +24 -0
  72. package/dist/esm/packages/taco/src/charts/utils/color.js.map +1 -0
  73. package/dist/esm/packages/taco/src/charts/utils/common.js +34 -0
  74. package/dist/esm/packages/taco/src/charts/utils/common.js.map +1 -0
  75. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js +6 -14
  76. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  77. package/dist/esm/packages/taco/src/components/Alert/Alert.js +2 -0
  78. package/dist/esm/packages/taco/src/components/Alert/Alert.js.map +1 -1
  79. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js +1 -1
  80. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js.map +1 -1
  81. package/dist/esm/packages/taco/src/components/Badge/Badge.js +9 -6
  82. package/dist/esm/packages/taco/src/components/Badge/Badge.js.map +1 -1
  83. package/dist/esm/packages/taco/src/components/Banner/util.js +5 -0
  84. package/dist/esm/packages/taco/src/components/Banner/util.js.map +1 -1
  85. package/dist/esm/packages/taco/src/components/Button/Button.js +2 -1
  86. package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
  87. package/dist/esm/packages/taco/src/components/Button/util.js +1 -1
  88. package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
  89. package/dist/esm/packages/taco/src/components/Card/Card.js +2 -2
  90. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  91. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +3 -2
  92. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  93. package/dist/esm/packages/taco/src/components/Combobox/Combobox.js.map +1 -1
  94. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +18 -17
  95. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  96. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +13 -0
  97. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  98. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +10 -1
  99. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  100. package/dist/esm/packages/taco/src/components/Dialog/Dialog.js.map +1 -1
  101. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +4 -2
  102. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  103. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +2 -2
  104. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  105. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js +4 -2
  106. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js.map +1 -1
  107. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +2 -4
  108. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
  109. package/dist/esm/packages/taco/src/components/Icon/components/Autopay.js +19 -0
  110. package/dist/esm/packages/taco/src/components/Icon/components/Autopay.js.map +1 -0
  111. package/dist/esm/packages/taco/src/components/Icon/components/AutopayPaused.js +19 -0
  112. package/dist/esm/packages/taco/src/components/Icon/components/AutopayPaused.js.map +1 -0
  113. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js +20 -0
  114. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js.map +1 -0
  115. package/dist/esm/packages/taco/src/components/Icon/components/Person.js +19 -0
  116. package/dist/esm/packages/taco/src/components/Icon/components/Person.js.map +1 -0
  117. package/dist/esm/packages/taco/src/components/Icon/components/PersonSolid.js +19 -0
  118. package/dist/esm/packages/taco/src/components/Icon/components/PersonSolid.js.map +1 -0
  119. package/dist/esm/packages/taco/src/components/Icon/components/Wallet.js +19 -0
  120. package/dist/esm/packages/taco/src/components/Icon/components/Wallet.js.map +1 -0
  121. package/dist/esm/packages/taco/src/components/Icon/components/index.js +12 -0
  122. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  123. package/dist/esm/packages/taco/src/components/Input/util.js +1 -1
  124. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  125. package/dist/esm/packages/taco/src/components/Listbox/util.js +1 -7
  126. package/dist/esm/packages/taco/src/components/Listbox/util.js.map +1 -1
  127. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +5 -0
  128. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  129. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  130. package/dist/esm/packages/taco/src/components/Report/Report.js +2 -3
  131. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  132. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
  133. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  134. package/dist/esm/packages/taco/src/components/Select/Select.js +0 -9
  135. package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
  136. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  137. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +10 -11
  138. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  139. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +7 -5
  140. package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
  141. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +56 -19
  142. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  143. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
  144. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  145. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  146. package/dist/esm/packages/taco/src/components/Table3/Table3.js +15 -11
  147. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  148. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +25 -9
  149. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  150. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +4 -3
  151. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  152. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +18 -10
  153. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  154. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js +0 -1
  155. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js.map +1 -1
  156. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +6 -37
  157. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  158. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +7 -6
  159. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  160. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +81 -81
  161. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  162. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +70 -14
  163. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  164. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +24 -22
  165. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  166. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +15 -4
  167. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  168. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +9 -1
  169. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  170. package/dist/esm/packages/taco/src/components/Tag/Tag.js +6 -4
  171. package/dist/esm/packages/taco/src/components/Tag/Tag.js.map +1 -1
  172. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +2 -2
  173. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  174. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +1 -1
  175. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -1
  176. package/dist/esm/packages/taco/src/index.js +6 -1
  177. package/dist/esm/packages/taco/src/index.js.map +1 -1
  178. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js +1 -1
  179. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js.map +1 -1
  180. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js +5 -3
  181. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js.map +1 -1
  182. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  183. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +7 -5
  184. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  185. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +15 -2
  186. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  187. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +23 -16
  188. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  189. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +4 -3
  190. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  191. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js +7 -0
  192. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
  193. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js +11 -0
  194. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  195. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +10 -7
  196. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  197. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js +7 -2
  198. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
  199. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -6
  200. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  201. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +3 -1
  202. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  203. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +5 -2
  204. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  205. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
  206. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  207. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +44 -5
  208. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  209. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js +3 -2
  210. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js.map +1 -1
  211. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js +6 -0
  212. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js.map +1 -0
  213. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +5 -3
  214. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  215. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js +0 -2
  216. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  217. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +2 -1
  218. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  219. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +3 -1
  220. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  221. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
  222. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  223. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -4
  224. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  225. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
  226. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  227. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +43 -12
  228. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  229. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +1 -1
  230. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  231. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
  232. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  233. package/dist/esm/packages/taco/src/primitives/Table/types.js +1 -7
  234. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  235. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +13 -12
  236. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  237. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +224 -0
  238. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -0
  239. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
  240. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  241. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js +2 -1
  242. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js.map +1 -1
  243. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
  244. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  245. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +18 -8
  246. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  247. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js +3 -4
  248. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  249. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
  250. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  251. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +2 -1
  252. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  253. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
  254. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  255. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
  256. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  257. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
  258. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  259. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +5 -5
  260. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  261. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
  262. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  263. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +6 -2
  264. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  265. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +7 -1
  266. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  267. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +7 -1
  268. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  269. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +16 -4
  270. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  271. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -1
  272. package/dist/esm/packages/taco/src/types.js.map +1 -1
  273. package/dist/esm/packages/taco/src/utils/dom.js +12 -1
  274. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  275. package/dist/esm/packages/taco/src/utils/tailwind.js +2 -0
  276. package/dist/esm/packages/taco/src/utils/tailwind.js.map +1 -1
  277. package/dist/esm/packages/taco/tailwind.colors.js +122 -0
  278. package/dist/esm/packages/taco/tailwind.colors.js.map +1 -0
  279. package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
  280. package/dist/index.css +74 -12
  281. package/dist/index.d.ts +6 -0
  282. package/dist/primitives/Table/Core/Table.d.ts +1 -0
  283. package/dist/primitives/Table/Core/components/Body/EmptyStateBody.d.ts +1 -0
  284. package/dist/primitives/Table/Core/components/Body/util.d.ts +4 -4
  285. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  286. package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
  287. package/dist/primitives/Table/Core/components/Row/RowContext.d.ts +2 -1
  288. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.d.ts +3 -0
  289. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.d.ts +0 -1
  290. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.d.ts +0 -3
  291. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  292. package/dist/primitives/Table/Core/types.d.ts +1 -0
  293. package/dist/primitives/Table/types.d.ts +12 -12
  294. package/dist/primitives/Table/useTableDataLoader.d.ts +2 -2
  295. package/dist/primitives/Table/useTableDataLoader2.d.ts +23 -0
  296. package/dist/primitives/Table/useTableManager/features/useTableRowExpansion.d.ts +2 -1
  297. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
  298. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +6 -3
  299. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.d.ts +1 -1
  300. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
  301. package/dist/primitives/Table/useTableManager/types.d.ts +0 -1
  302. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
  303. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
  304. package/dist/taco.cjs.development.js +1963 -508
  305. package/dist/taco.cjs.development.js.map +1 -1
  306. package/dist/taco.cjs.production.min.js +1 -1
  307. package/dist/taco.cjs.production.min.js.map +1 -1
  308. package/dist/types.d.ts +1 -1
  309. package/dist/utils/dom.d.ts +2 -2
  310. package/package.json +9 -8
  311. package/tailwind.colors.js +121 -0
  312. package/tailwind.config.js +3 -2
  313. package/dist/components/Table3/components/Row/Editing/CreateRowButton.d.ts +0 -11
@@ -17,9 +17,10 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
17
17
  const _lastUsedSorting = React__default.useRef([]);
18
18
  const _lastUsedFilters = React__default.useRef([]);
19
19
  const _lastUsedSearch = React__default.useRef();
20
+ const _lastUsedHiddenColumns = React__default.useRef([]);
20
21
  const _lastUsedPageIndex = React__default.useRef();
21
22
  const _forceReset = React__default.useRef(false);
22
- const loadPage = function (pageIndex, sorting, filters) {
23
+ const loadPage = function (pageIndex, sorting, filters, hiddenColumns) {
23
24
  try {
24
25
  let reset = false;
25
26
  // sorting or filters changed, reset everything
@@ -41,9 +42,10 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
41
42
  _lastUsedSorting.current = sorting;
42
43
  // set the filters so we can track if it changed between loads
43
44
  _lastUsedFilters.current = filters;
45
+ _lastUsedHiddenColumns.current = hiddenColumns;
44
46
  const _temp = _finallyRethrows(function () {
45
47
  return _catch(function () {
46
- return Promise.resolve(fetchPage(pageIndex, pageSize, sorting, filters)).then(function (response) {
48
+ return Promise.resolve(fetchPage(pageIndex, pageSize, sorting, filters, hiddenColumns)).then(function (response) {
47
49
  // update state, here we do some "magic" to support "load in place"
48
50
  setData(currentData => {
49
51
  let nextData;
@@ -72,14 +74,15 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
72
74
  return Promise.reject(e);
73
75
  }
74
76
  };
75
- const loadAll = function (sorting, filters) {
77
+ const loadAll = function (sorting, filters, hiddenColumns) {
76
78
  try {
77
79
  // set the sorting so we can track if it changed between loads
78
80
  _lastUsedSorting.current = sorting;
79
81
  // set the filters so we can track if it changed between loads
80
82
  _lastUsedFilters.current = filters;
83
+ _lastUsedHiddenColumns.current = hiddenColumns;
81
84
  const _temp2 = _catch(function () {
82
- return Promise.resolve(fetchAll(sorting, filters)).then(function (response) {
85
+ return Promise.resolve(fetchAll(sorting, filters, hiddenColumns)).then(function (response) {
83
86
  length.current = response.length;
84
87
  setData(() => {
85
88
  let nextData;
@@ -104,11 +107,11 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
104
107
  _forceReset.current = true;
105
108
  if (_lastUsedSearch.current) {
106
109
  // we're searching, which means we need to refetch all with the correct sorting applied
107
- return loadAll(_lastUsedSorting.current, _lastUsedFilters.current);
110
+ return loadAll(_lastUsedSorting.current, _lastUsedFilters.current, _lastUsedHiddenColumns.current);
108
111
  } else {
109
112
  var _lastUsedPageIndex$cu;
110
113
  // load the last page that we scrolled to
111
- return loadPage((_lastUsedPageIndex$cu = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu !== void 0 ? _lastUsedPageIndex$cu : 0, _lastUsedSorting.current, _lastUsedFilters.current);
114
+ return loadPage((_lastUsedPageIndex$cu = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu !== void 0 ? _lastUsedPageIndex$cu : 0, _lastUsedSorting.current, _lastUsedFilters.current, _lastUsedHiddenColumns.current);
112
115
  }
113
116
  } catch (e) {
114
117
  return Promise.reject(e);
@@ -120,13 +123,12 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
120
123
  try {
121
124
  if (_lastUsedSearch.current) {
122
125
  // we're searching, which means we need to refetch all with the correct sorting applied
123
- loadAll(sorting, _lastUsedFilters.current);
126
+ return loadAll(sorting, _lastUsedFilters.current, _lastUsedHiddenColumns.current);
124
127
  } else {
125
128
  var _lastUsedPageIndex$cu2;
126
129
  // load the last page that we scrolled to
127
- loadPage((_lastUsedPageIndex$cu2 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu2 !== void 0 ? _lastUsedPageIndex$cu2 : 0, sorting, _lastUsedFilters.current);
130
+ return loadPage((_lastUsedPageIndex$cu2 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu2 !== void 0 ? _lastUsedPageIndex$cu2 : 0, sorting, _lastUsedFilters.current, _lastUsedHiddenColumns.current);
128
131
  }
129
- return Promise.resolve();
130
132
  } catch (e) {
131
133
  return Promise.reject(e);
132
134
  }
@@ -135,13 +137,12 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
135
137
  try {
136
138
  if (_lastUsedSearch.current) {
137
139
  // we're searching, which means we need to refetch all with the correct sorting applied
138
- loadAll(_lastUsedSorting.current, filters);
140
+ return loadAll(_lastUsedSorting.current, filters, _lastUsedHiddenColumns.current);
139
141
  } else {
140
142
  var _lastUsedPageIndex$cu3;
141
143
  // load the last page that we scrolled to
142
- loadPage((_lastUsedPageIndex$cu3 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu3 !== void 0 ? _lastUsedPageIndex$cu3 : 0, _lastUsedSorting.current, filters);
144
+ return loadPage((_lastUsedPageIndex$cu3 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu3 !== void 0 ? _lastUsedPageIndex$cu3 : 0, _lastUsedSorting.current, filters, _lastUsedHiddenColumns.current);
143
145
  }
144
- return Promise.resolve();
145
146
  } catch (e) {
146
147
  return Promise.reject(e);
147
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTableDataLoader.js","sources":["../../../../../../../src/primitives/Table/useTableDataLoader.ts"],"sourcesContent":["import React from 'react';\nimport {\n TableColumnFilter,\n TableColumnSort,\n TableFilterHandler,\n TableServerLoadPageHandler,\n TableServerLoadAllHandler,\n TableSortHandler,\n TableSearchHandler,\n} from './types';\n\nexport const DEFAULT_PAGE_SIZE = 100;\n\nexport type useTableDataPageFetcher<TType = unknown> = (\n pageIndex: number,\n pageSize: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataAllFetcher<TType = unknown> = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataLoaderOptions = { pageSize: number };\n\nexport type useTableDataLoaderValues<TType = unknown> = {\n data: TType[];\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n onChangeFilter: TableFilterHandler;\n onChangeSearch: TableSearchHandler;\n onChangeSort: TableSortHandler;\n pageSize: number;\n};\n\nexport function useTableDataLoader<TType = unknown>(\n fetchPage: useTableDataPageFetcher<TType>,\n fetchAll: useTableDataAllFetcher<TType>,\n options: useTableDataLoaderOptions = { pageSize: DEFAULT_PAGE_SIZE }\n): [useTableDataLoaderValues<TType>, () => void] {\n const { pageSize } = options;\n\n // track the data length, we don't know it until the first request\n const length = React.useRef<number | undefined>(undefined);\n // data will be filled after the first request, then we'll update values in place\n const [data, setData] = React.useState<any[]>([]);\n // track which pages have been loaded to dedupe requests\n const _pendingPageRequests = React.useRef<Record<number, boolean>>({});\n const _lastUsedSorting = React.useRef<TableColumnSort[]>([]);\n const _lastUsedFilters = React.useRef<TableColumnFilter[]>([]);\n const _lastUsedSearch = React.useRef<string>();\n const _lastUsedPageIndex = React.useRef<number>();\n const _forceReset = React.useRef(false);\n\n const loadPage = async (pageIndex: number, sorting: TableColumnSort[], filters: TableColumnFilter[]) => {\n let reset = false;\n\n // sorting or filters changed, reset everything\n if (\n _forceReset.current ||\n JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) ||\n JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current)\n ) {\n _pendingPageRequests.current = {};\n // nuke the dataset so that we \"start again\" after sorting\n reset = true;\n }\n\n if (_pendingPageRequests.current[pageIndex]) {\n // if page is already loaded/loading, abort, otherwise mark it as loading\n return;\n } else {\n _pendingPageRequests.current[pageIndex] = true;\n }\n\n _forceReset.current = false;\n // set the last page loaded (or tried to load), so that we can load it back again after resets\n _lastUsedPageIndex.current = pageIndex;\n // set the sorting so we can track if it changed between loads\n _lastUsedSorting.current = sorting;\n // set the filters so we can track if it changed between loads\n _lastUsedFilters.current = filters;\n\n try {\n const response = await fetchPage(pageIndex, pageSize, sorting, filters);\n\n // update state, here we do some \"magic\" to support \"load in place\"\n setData(currentData => {\n let nextData;\n\n // reset table state if:\n // - the length isn't set at all (first load)\n // - the client length and server length are different (the data changed)\n if (reset || length.current !== response.length) {\n length.current = response.length;\n nextData = Array(length.current).fill(undefined);\n } else {\n nextData = [...currentData];\n }\n\n const startIndex = pageIndex * pageSize;\n nextData.splice(startIndex, pageSize, ...response.data);\n return nextData;\n });\n } catch {\n //\n } finally {\n _pendingPageRequests.current[pageIndex] = false;\n }\n };\n\n const loadAll = async (sorting: TableColumnSort[], filters: TableColumnFilter[]) => {\n // set the sorting so we can track if it changed between loads\n _lastUsedSorting.current = sorting;\n // set the filters so we can track if it changed between loads\n _lastUsedFilters.current = filters;\n\n try {\n const response = await fetchAll(sorting, filters);\n length.current = response.length;\n\n setData(() => {\n let nextData;\n\n if (response.data.length !== response.length) {\n nextData = Array(response.length).fill(undefined);\n nextData.splice(0, response.data.length, ...response.data);\n } else {\n nextData = [...response.data];\n }\n\n return nextData;\n });\n } catch {\n //\n }\n };\n\n const invalidate = async () => {\n // empties the entire data array\n _forceReset.current = true;\n\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n return loadAll(_lastUsedSorting.current, _lastUsedFilters.current);\n } else {\n // load the last page that we scrolled to\n return loadPage(_lastUsedPageIndex.current ?? 0, _lastUsedSorting.current, _lastUsedFilters.current);\n }\n };\n\n // search works client side - it fetches all then works client side - so these handlers are a little \"weird\"\n // if a search is currently \"active\", we need to re load all because\n const handleSort = async (sorting: TableColumnSort[]) => {\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n loadAll(sorting, _lastUsedFilters.current);\n } else {\n // load the last page that we scrolled to\n loadPage(_lastUsedPageIndex.current ?? 0, sorting, _lastUsedFilters.current);\n }\n };\n const handleFilter = async (filters: TableColumnFilter[]) => {\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n loadAll(_lastUsedSorting.current, filters);\n } else {\n // load the last page that we scrolled to\n loadPage(_lastUsedPageIndex.current ?? 0, _lastUsedSorting.current, filters);\n }\n };\n const handleSearch = async (search: string | undefined) => {\n // set the search so we can track if it changed between loads\n _lastUsedSearch.current = search || undefined;\n // search works client side, and focusing the search field triggers a load of all so we don't actually\n // want to load anything when search gets changed, we just store the value for other handlers\n };\n\n return [\n {\n data,\n length: length.current,\n loadAll,\n loadPage,\n onChangeFilter: handleFilter,\n onChangeSearch: handleSearch,\n onChangeSort: handleSort,\n pageSize,\n },\n invalidate,\n ];\n}\n"],"names":["DEFAULT_PAGE_SIZE","useTableDataLoader","fetchPage","fetchAll","options","pageSize","length","React","useRef","undefined","data","setData","useState","_pendingPageRequests","_lastUsedSorting","_lastUsedFilters","_lastUsedSearch","_lastUsedPageIndex","_forceReset","loadPage","pageIndex","sorting","filters","reset","current","JSON","stringify","Promise","resolve","_temp","_finallyRethrows","_catch","then","response","currentData","nextData","Array","fill","startIndex","splice","_wasThrown","_result","e","reject","loadAll","_temp2","invalidate","_lastUsedPageIndex$cu","handleSort","_lastUsedPageIndex$cu2","handleFilter","_lastUsedPageIndex$cu3","handleSearch","search","onChangeFilter","onChangeSearch","onChangeSort"],"mappings":"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"}
1
+ {"version":3,"file":"useTableDataLoader.js","sources":["../../../../../../../src/primitives/Table/useTableDataLoader.ts"],"sourcesContent":["import React from 'react';\nimport {\n TableColumnFilter,\n TableColumnSort,\n TableFilterHandler,\n TableServerLoadPageHandler,\n TableServerLoadAllHandler,\n TableSortHandler,\n TableSearchHandler,\n} from './types';\n\nexport const DEFAULT_PAGE_SIZE = 100;\n\nexport type useTableDataPageFetcher<TType = unknown> = (\n pageIndex: number,\n pageSize: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[]\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataAllFetcher<TType = unknown> = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[]\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataLoaderOptions = { pageSize: number };\n\nexport type useTableDataLoaderValues<TType = unknown> = {\n data: TType[];\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n onChangeFilter: TableFilterHandler;\n onChangeSearch: TableSearchHandler;\n onChangeSort: TableSortHandler;\n pageSize: number;\n};\n\nexport function useTableDataLoader<TType = unknown>(\n fetchPage: useTableDataPageFetcher<TType>,\n fetchAll: useTableDataAllFetcher<TType>,\n options: useTableDataLoaderOptions = { pageSize: DEFAULT_PAGE_SIZE }\n): [useTableDataLoaderValues<TType>, () => void] {\n const { pageSize } = options;\n\n // track the data length, we don't know it until the first request\n const length = React.useRef<number | undefined>(undefined);\n // data will be filled after the first request, then we'll update values in place\n const [data, setData] = React.useState<any[]>([]);\n // track which pages have been loaded to dedupe requests\n const _pendingPageRequests = React.useRef<Record<number, boolean>>({});\n const _lastUsedSorting = React.useRef<TableColumnSort[]>([]);\n const _lastUsedFilters = React.useRef<TableColumnFilter[]>([]);\n const _lastUsedSearch = React.useRef<string>();\n const _lastUsedHiddenColumns = React.useRef<string[]>([]);\n const _lastUsedPageIndex = React.useRef<number>();\n const _forceReset = React.useRef(false);\n\n const loadPage = async (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[]\n ) => {\n let reset = false;\n\n // sorting or filters changed, reset everything\n if (\n _forceReset.current ||\n JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) ||\n JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current)\n ) {\n _pendingPageRequests.current = {};\n // nuke the dataset so that we \"start again\" after sorting\n reset = true;\n }\n\n if (_pendingPageRequests.current[pageIndex]) {\n // if page is already loaded/loading, abort, otherwise mark it as loading\n return;\n } else {\n _pendingPageRequests.current[pageIndex] = true;\n }\n\n _forceReset.current = false;\n // set the last page loaded (or tried to load), so that we can load it back again after resets\n _lastUsedPageIndex.current = pageIndex;\n // set the sorting so we can track if it changed between loads\n _lastUsedSorting.current = sorting;\n // set the filters so we can track if it changed between loads\n _lastUsedFilters.current = filters;\n _lastUsedHiddenColumns.current = hiddenColumns;\n\n try {\n const response = await fetchPage(pageIndex, pageSize, sorting, filters, hiddenColumns);\n\n // update state, here we do some \"magic\" to support \"load in place\"\n setData(currentData => {\n let nextData;\n\n // reset table state if:\n // - the length isn't set at all (first load)\n // - the client length and server length are different (the data changed)\n if (reset || length.current !== response.length) {\n length.current = response.length;\n nextData = Array(length.current).fill(undefined);\n } else {\n nextData = [...currentData];\n }\n\n const startIndex = pageIndex * pageSize;\n nextData.splice(startIndex, pageSize, ...response.data);\n return nextData;\n });\n } catch {\n //\n } finally {\n _pendingPageRequests.current[pageIndex] = false;\n }\n };\n\n const loadAll = async (sorting: TableColumnSort[], filters: TableColumnFilter[], hiddenColumns: string[]) => {\n // set the sorting so we can track if it changed between loads\n _lastUsedSorting.current = sorting;\n // set the filters so we can track if it changed between loads\n _lastUsedFilters.current = filters;\n _lastUsedHiddenColumns.current = hiddenColumns;\n\n try {\n const response = await fetchAll(sorting, filters, hiddenColumns);\n length.current = response.length;\n\n setData(() => {\n let nextData;\n\n if (response.data.length !== response.length) {\n nextData = Array(response.length).fill(undefined);\n nextData.splice(0, response.data.length, ...response.data);\n } else {\n nextData = [...response.data];\n }\n\n return nextData;\n });\n } catch {\n //\n }\n };\n\n const invalidate = async () => {\n // empties the entire data array\n _forceReset.current = true;\n\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n return loadAll(_lastUsedSorting.current, _lastUsedFilters.current, _lastUsedHiddenColumns.current);\n } else {\n // load the last page that we scrolled to\n return loadPage(\n _lastUsedPageIndex.current ?? 0,\n _lastUsedSorting.current,\n _lastUsedFilters.current,\n _lastUsedHiddenColumns.current\n );\n }\n };\n\n // search works client side - it fetches all then works client side - so these handlers are a little \"weird\"\n // if a search is currently \"active\", we need to re load all because\n const handleSort = async (sorting: TableColumnSort[]) => {\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n return loadAll(sorting, _lastUsedFilters.current, _lastUsedHiddenColumns.current);\n } else {\n // load the last page that we scrolled to\n return loadPage(_lastUsedPageIndex.current ?? 0, sorting, _lastUsedFilters.current, _lastUsedHiddenColumns.current);\n }\n };\n const handleFilter = async (filters: TableColumnFilter[]) => {\n if (_lastUsedSearch.current) {\n // we're searching, which means we need to refetch all with the correct sorting applied\n return loadAll(_lastUsedSorting.current, filters, _lastUsedHiddenColumns.current);\n } else {\n // load the last page that we scrolled to\n return loadPage(_lastUsedPageIndex.current ?? 0, _lastUsedSorting.current, filters, _lastUsedHiddenColumns.current);\n }\n };\n const handleSearch = async (search: string | undefined) => {\n // set the search so we can track if it changed between loads\n _lastUsedSearch.current = search || undefined;\n // search works client side, and focusing the search field triggers a load of all so we don't actually\n // want to load anything when search gets changed, we just store the value for other handlers\n };\n\n return [\n {\n data,\n length: length.current,\n loadAll,\n loadPage,\n onChangeFilter: handleFilter,\n onChangeSearch: handleSearch,\n onChangeSort: handleSort,\n pageSize,\n },\n invalidate,\n ];\n}\n"],"names":["DEFAULT_PAGE_SIZE","useTableDataLoader","fetchPage","fetchAll","options","pageSize","length","React","useRef","undefined","data","setData","useState","_pendingPageRequests","_lastUsedSorting","_lastUsedFilters","_lastUsedSearch","_lastUsedHiddenColumns","_lastUsedPageIndex","_forceReset","loadPage","pageIndex","sorting","filters","hiddenColumns","reset","current","JSON","stringify","Promise","resolve","_temp","_finallyRethrows","_catch","then","response","currentData","nextData","Array","fill","startIndex","splice","_wasThrown","_result","e","reject","loadAll","_temp2","invalidate","_lastUsedPageIndex$cu","handleSort","_lastUsedPageIndex$cu2","handleFilter","_lastUsedPageIndex$cu3","handleSearch","search","onChangeFilter","onChangeSearch","onChangeSort"],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ import React__default from 'react';
2
+ import { v4 } from 'uuid';
3
+ import { _catch, _finallyRethrows } from '../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
4
+ import { DEFAULT_PAGE_SIZE } from './useTableDataLoader.js';
5
+
6
+ const DATASET_SIZE_MULTIPLIER = 15;
7
+ function useTableDataLoader2(fetchPage, fetchAll, options = {
8
+ pageSize: DEFAULT_PAGE_SIZE
9
+ }) {
10
+ const loadPage = function (pageIndex, sorting, filters, hiddenColumns, search, reset = false) {
11
+ try {
12
+ // if a request is already pending for this page (and it's not a reset), skip it
13
+ if (_pendingPageRequests.current[pageIndex] && !reset) {
14
+ return Promise.resolve();
15
+ }
16
+ const hasChangedData = JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current) || search !== _lastUsedSearch.current;
17
+ // if the page is already loaded and has actual rows, abort
18
+ if (data.cache[pageIndex] && data.cache[pageIndex][0] && !hasChangedData && !reset) {
19
+ return Promise.resolve();
20
+ }
21
+ // create an id to track the update
22
+ const requestId = v4();
23
+ // set the page as loading, so that subsequent requests don't retrigger it
24
+ _pendingPageRequests.current[pageIndex] = true;
25
+ const _temp2 = _catch(function () {
26
+ _lastRequestId.current = requestId;
27
+ return Promise.resolve(fetchPage(pageIndex, pageSize, sorting, filters, hiddenColumns, search)).then(function (response) {
28
+ length.current = response.length;
29
+ // update state, here we do some "magic" to support "load in place"
30
+ setData(currentData => {
31
+ // if this request wasn't the last one, just return the current state to prevent weird updates
32
+ if (_lastRequestId.current !== requestId) {
33
+ return currentData;
34
+ }
35
+ const direction = getDirection(pageIndex, currentData.pages);
36
+ const nextPages = getPages(pageIndex, currentData.lastFetchedPage, reset ? [] : currentData.pages, direction);
37
+ // set values so we can track if they changed between loads
38
+ _lastUsedSorting.current = sorting;
39
+ _lastUsedFilters.current = filters;
40
+ _lastUsedSearch.current = search;
41
+ _lastUsedHiddenColumns.current = hiddenColumns;
42
+ // cache data as an object to prevent any duplicates for pages
43
+ let nextCache;
44
+ if (reset || hasChangedData || !direction) {
45
+ nextCache = nextPages.reduce((acc, p) => ({
46
+ ...acc,
47
+ [p]: Array(pageSize).fill(undefined)
48
+ }), {});
49
+ } else {
50
+ nextCache = {
51
+ ...currentData.cache
52
+ };
53
+ }
54
+ nextCache[pageIndex] = response.data;
55
+ // cleanup "unloaded" pages
56
+ if (direction === 'forward' && currentData.rows.length >= DATASET_SIZE) {
57
+ delete nextCache[currentData.pages[0]];
58
+ } else if (direction === 'backward' && currentData.rows.length >= DATASET_SIZE) {
59
+ delete nextCache[currentData.pages[currentData.pages.length - 1]];
60
+ }
61
+ // remap rows from the cached data - do it here and not in render to save some performance
62
+ const rows = Object.values(nextCache).reduce((acc, p) => acc.concat(p), []);
63
+ return {
64
+ cache: nextCache,
65
+ pages: nextPages,
66
+ rows: rows,
67
+ lastFetchedPage: pageIndex
68
+ };
69
+ });
70
+ // reset pending requests
71
+ delete _pendingPageRequests.current[pageIndex];
72
+ });
73
+ }, function () {});
74
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
75
+ } catch (e) {
76
+ return Promise.reject(e);
77
+ }
78
+ };
79
+ const {
80
+ pageSize
81
+ } = options;
82
+ const DATASET_SIZE = DATASET_SIZE_MULTIPLIER * pageSize;
83
+ // track the data length, we don't know it until the first request
84
+ const length = React__default.useRef(0);
85
+ // data will be filled after the first request
86
+ const [data, setData] = React__default.useState({
87
+ rows: [],
88
+ pages: [],
89
+ cache: {},
90
+ lastFetchedPage: undefined
91
+ });
92
+ // track which pages have been loaded to dedupe requests
93
+ const _pendingPageRequests = React__default.useRef({});
94
+ // it's possible to spam updates, e.g. sort, so we don't set state if the last request wasn't the current oen
95
+ const _lastRequestId = React__default.useRef();
96
+ // store last used properties
97
+ const _lastUsedSorting = React__default.useRef([]);
98
+ const _lastUsedFilters = React__default.useRef([]);
99
+ const _lastUsedSearch = React__default.useRef();
100
+ const _lastUsedHiddenColumns = React__default.useRef([]);
101
+ const loadAll = function (sorting, filters, hiddenColumns, search) {
102
+ try {
103
+ // set values so we can track if they changed between loads
104
+ _lastUsedSorting.current = sorting;
105
+ _lastUsedFilters.current = filters;
106
+ _lastUsedSearch.current = search;
107
+ _lastUsedHiddenColumns.current = hiddenColumns;
108
+ const _temp = _finallyRethrows(function () {
109
+ return _catch(function () {
110
+ return Promise.resolve(fetchAll(sorting, filters, hiddenColumns, search)).then(function (response) {
111
+ length.current = response.length;
112
+ const pages = [];
113
+ const cache = {};
114
+ const pageCount = Math.ceil(response.length / pageSize);
115
+ Array.from(Array(pageCount).keys()).forEach(index => {
116
+ pages.push(index);
117
+ const startIndex = index * pageSize;
118
+ cache[index] = response.data.slice(startIndex, startIndex + pageSize);
119
+ });
120
+ setData({
121
+ cache,
122
+ pages,
123
+ rows: response.data,
124
+ lastFetchedPage: undefined
125
+ });
126
+ });
127
+ }, function () {});
128
+ }, function (_wasThrown, _result) {
129
+ // reset pending requests
130
+ _pendingPageRequests.current = {};
131
+ if (_wasThrown) throw _result;
132
+ return _result;
133
+ });
134
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
135
+ } catch (e) {
136
+ return Promise.reject(e);
137
+ }
138
+ };
139
+ const invalidate = function () {
140
+ try {
141
+ // reset stuff
142
+ _pendingPageRequests.current = {};
143
+ // load the current page again
144
+ return loadPage(getCurrentPage(data.pages), _lastUsedSorting.current, _lastUsedFilters.current, _lastUsedHiddenColumns.current, _lastUsedSearch.current, true);
145
+ } catch (e) {
146
+ return Promise.reject(e);
147
+ }
148
+ };
149
+ const handleSort = function (sorting) {
150
+ try {
151
+ // reset before loading the current page
152
+ _pendingPageRequests.current = {};
153
+ return loadPage(getCurrentPage(data.pages), sorting, _lastUsedFilters.current, _lastUsedHiddenColumns.current, _lastUsedSearch.current, true);
154
+ } catch (e) {
155
+ return Promise.reject(e);
156
+ }
157
+ };
158
+ const handleFilter = function (filters, hiddenColumns) {
159
+ try {
160
+ // reset before loading the current page
161
+ _pendingPageRequests.current = {};
162
+ return loadPage(0, _lastUsedSorting.current, filters, hiddenColumns, _lastUsedSearch.current, true);
163
+ } catch (e) {
164
+ return Promise.reject(e);
165
+ }
166
+ };
167
+ const handleSearch = function (search, hiddenColumns) {
168
+ try {
169
+ // reset before loading the current page
170
+ _pendingPageRequests.current = {};
171
+ return loadPage(0, _lastUsedSorting.current, _lastUsedFilters.current, hiddenColumns, search, true);
172
+ } catch (e) {
173
+ return Promise.reject(e);
174
+ }
175
+ };
176
+ return [{
177
+ data: data.rows,
178
+ pages: data.pages,
179
+ length: length.current,
180
+ loadAll,
181
+ loadPage,
182
+ onChangeFilter: handleFilter,
183
+ onChangeSearch: handleSearch,
184
+ onChangeSort: handleSort,
185
+ pageSize,
186
+ _experimentalDataLoader2: true
187
+ }, invalidate];
188
+ }
189
+ function getCurrentPage(currentPages) {
190
+ if (currentPages.length <= 2) {
191
+ return currentPages[0];
192
+ }
193
+ // for even page lengths we can't know which is the current visible page - it could even be both
194
+ // so we load one of them and rely on the "load next/previous page" functionality in row
195
+ const middle = Math.floor(currentPages.length / 2);
196
+ return currentPages[middle];
197
+ }
198
+ function getDirection(pageIndex, currentPages) {
199
+ if (currentPages.length) {
200
+ if (pageIndex === currentPages[currentPages.length - 1] + 1) {
201
+ return 'forward';
202
+ } else if (pageIndex === currentPages[0] - 1 || currentPages.length === 2 && currentPages[0] !== 0 && pageIndex === currentPages[0]) {
203
+ return 'backward';
204
+ }
205
+ }
206
+ return undefined;
207
+ }
208
+ function getPages(pageIndex, lastUsedPageIndex, currentPages, direction) {
209
+ if (currentPages.length && (pageIndex === lastUsedPageIndex || currentPages.includes(pageIndex))) {
210
+ return currentPages;
211
+ }
212
+ if (direction === 'forward') {
213
+ const nextPages = currentPages.length === DATASET_SIZE_MULTIPLIER ? currentPages.slice(1) : currentPages;
214
+ return nextPages.concat(pageIndex);
215
+ }
216
+ if (direction === 'backward') {
217
+ const nextPages = currentPages.length === DATASET_SIZE_MULTIPLIER ? currentPages.slice(0, -1) : currentPages;
218
+ return [pageIndex].concat(nextPages);
219
+ }
220
+ return [pageIndex];
221
+ }
222
+
223
+ export { useTableDataLoader2 };
224
+ //# sourceMappingURL=useTableDataLoader2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableDataLoader2.js","sources":["../../../../../../../src/primitives/Table/useTableDataLoader2.ts"],"sourcesContent":["import React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport {\n TableColumnFilter,\n TableColumnSort,\n TableFilterHandler,\n TableServerLoadPageHandler,\n TableServerLoadAllHandler,\n TableSortHandler,\n TableSearchHandler,\n} from './types';\nimport { DEFAULT_PAGE_SIZE, useTableDataLoaderOptions } from './useTableDataLoader';\n\nconst DATASET_SIZE_MULTIPLIER = 15;\n\nexport type useTableDataPageFetcher2<TType = unknown> = (\n pageIndex: number,\n pageSize: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataAllFetcher2<TType = unknown> = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTableDataLoaderValues2<TType = unknown> = {\n data: TType[];\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n onChangeFilter: TableFilterHandler;\n onChangeSearch: TableSearchHandler;\n onChangeSort: TableSortHandler;\n pageSize: number;\n pages: number[];\n _experimentalDataLoader2: boolean;\n};\n\ntype Data<TType = unknown> = {\n rows: TType[];\n pages: number[];\n cache: Record<number, TType[]>;\n lastFetchedPage: number | undefined;\n};\ntype Direction = 'forward' | 'backward' | undefined;\n\nexport function useTableDataLoader2<TType = unknown>(\n fetchPage: useTableDataPageFetcher2<TType>,\n fetchAll: useTableDataAllFetcher2<TType>,\n options: useTableDataLoaderOptions = { pageSize: DEFAULT_PAGE_SIZE }\n): [useTableDataLoaderValues2<TType>, () => void] {\n const { pageSize } = options;\n const DATASET_SIZE = DATASET_SIZE_MULTIPLIER * pageSize;\n\n // track the data length, we don't know it until the first request\n const length = React.useRef<number>(0);\n // data will be filled after the first request\n const [data, setData] = React.useState<Data<TType>>({ rows: [], pages: [], cache: {}, lastFetchedPage: undefined });\n // track which pages have been loaded to dedupe requests\n const _pendingPageRequests = React.useRef<Record<number, boolean>>({});\n // it's possible to spam updates, e.g. sort, so we don't set state if the last request wasn't the current oen\n const _lastRequestId = React.useRef<string | undefined>();\n // store last used properties\n const _lastUsedSorting = React.useRef<TableColumnSort[]>([]);\n const _lastUsedFilters = React.useRef<TableColumnFilter[]>([]);\n const _lastUsedSearch = React.useRef<string | undefined>();\n const _lastUsedHiddenColumns = React.useRef<string[]>([]);\n\n async function loadPage(\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined,\n reset = false\n ) {\n // if a request is already pending for this page (and it's not a reset), skip it\n if (_pendingPageRequests.current[pageIndex] && !reset) {\n return;\n }\n\n const hasChangedData =\n JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) ||\n JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current) ||\n search !== _lastUsedSearch.current;\n\n // if the page is already loaded and has actual rows, abort\n if (data.cache[pageIndex] && data.cache[pageIndex][0] && !hasChangedData && !reset) {\n return;\n }\n\n // create an id to track the update\n const requestId = uuid();\n\n // set the page as loading, so that subsequent requests don't retrigger it\n _pendingPageRequests.current[pageIndex] = true;\n\n try {\n _lastRequestId.current = requestId;\n const response = await fetchPage(pageIndex, pageSize, sorting, filters, hiddenColumns, search);\n length.current = response.length;\n\n // update state, here we do some \"magic\" to support \"load in place\"\n setData(currentData => {\n // if this request wasn't the last one, just return the current state to prevent weird updates\n if (_lastRequestId.current !== requestId) {\n return currentData;\n }\n\n const direction = getDirection(pageIndex, currentData.pages);\n const nextPages = getPages(pageIndex, currentData.lastFetchedPage, reset ? [] : currentData.pages, direction);\n\n // set values so we can track if they changed between loads\n _lastUsedSorting.current = sorting;\n _lastUsedFilters.current = filters;\n _lastUsedSearch.current = search;\n _lastUsedHiddenColumns.current = hiddenColumns;\n\n // cache data as an object to prevent any duplicates for pages\n let nextCache: Record<number, TType[]>;\n\n if (reset || hasChangedData || !direction) {\n nextCache = nextPages.reduce((acc, p) => ({ ...acc, [p]: Array(pageSize).fill(undefined) }), {});\n } else {\n nextCache = { ...currentData.cache };\n }\n\n nextCache[pageIndex] = response.data;\n\n // cleanup \"unloaded\" pages\n if (direction === 'forward' && currentData.rows.length >= DATASET_SIZE) {\n delete nextCache[currentData.pages[0]];\n } else if (direction === 'backward' && currentData.rows.length >= DATASET_SIZE) {\n delete nextCache[currentData.pages[currentData.pages.length - 1]];\n }\n\n // remap rows from the cached data - do it here and not in render to save some performance\n const rows = Object.values(nextCache).reduce((acc, p) => acc.concat(p), []);\n\n return {\n cache: nextCache,\n pages: nextPages,\n rows: rows,\n lastFetchedPage: pageIndex,\n };\n });\n\n // reset pending requests\n delete _pendingPageRequests.current[pageIndex];\n } catch {\n //\n }\n }\n\n const loadAll = async (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n ) => {\n // set values so we can track if they changed between loads\n _lastUsedSorting.current = sorting;\n _lastUsedFilters.current = filters;\n _lastUsedSearch.current = search;\n _lastUsedHiddenColumns.current = hiddenColumns;\n\n try {\n const response = await fetchAll(sorting, filters, hiddenColumns, search);\n length.current = response.length;\n\n const pages: number[] = [];\n const cache: Record<number, Array<TType>> = {};\n const pageCount = Math.ceil(response.length / pageSize);\n\n Array.from(Array(pageCount).keys()).forEach(index => {\n pages.push(index);\n const startIndex = index * pageSize;\n cache[index] = response.data.slice(startIndex, startIndex + pageSize);\n });\n\n setData({\n cache,\n pages,\n rows: response.data,\n lastFetchedPage: undefined,\n });\n } catch {\n //\n } finally {\n // reset pending requests\n _pendingPageRequests.current = {};\n }\n };\n\n const invalidate = async () => {\n // reset stuff\n _pendingPageRequests.current = {};\n\n // load the current page again\n return loadPage(\n getCurrentPage(data.pages),\n _lastUsedSorting.current,\n _lastUsedFilters.current,\n _lastUsedHiddenColumns.current,\n _lastUsedSearch.current,\n true\n );\n };\n\n const handleSort = async (sorting: TableColumnSort[]) => {\n // reset before loading the current page\n _pendingPageRequests.current = {};\n\n return loadPage(\n getCurrentPage(data.pages),\n sorting,\n _lastUsedFilters.current,\n _lastUsedHiddenColumns.current,\n _lastUsedSearch.current,\n true\n );\n };\n const handleFilter = async (filters: TableColumnFilter[], hiddenColumns: string[]) => {\n // reset before loading the current page\n _pendingPageRequests.current = {};\n return loadPage(0, _lastUsedSorting.current, filters, hiddenColumns, _lastUsedSearch.current, true);\n };\n const handleSearch = async (search: string | undefined, hiddenColumns: string[]) => {\n // reset before loading the current page\n _pendingPageRequests.current = {};\n return loadPage(0, _lastUsedSorting.current, _lastUsedFilters.current, hiddenColumns, search, true);\n };\n\n return [\n {\n data: data.rows,\n pages: data.pages,\n length: length.current,\n loadAll,\n loadPage,\n onChangeFilter: handleFilter,\n onChangeSearch: handleSearch,\n onChangeSort: handleSort,\n pageSize,\n _experimentalDataLoader2: true,\n },\n invalidate,\n ];\n}\n\nfunction getCurrentPage(currentPages: number[]): number {\n if (currentPages.length <= 2) {\n return currentPages[0];\n }\n\n // for even page lengths we can't know which is the current visible page - it could even be both\n // so we load one of them and rely on the \"load next/previous page\" functionality in row\n const middle = Math.floor(currentPages.length / 2);\n return currentPages[middle];\n}\n\nfunction getDirection(pageIndex: number, currentPages: number[]): Direction {\n if (currentPages.length) {\n if (pageIndex === currentPages[currentPages.length - 1] + 1) {\n return 'forward';\n } else if (\n pageIndex === currentPages[0] - 1 ||\n (currentPages.length === 2 && currentPages[0] !== 0 && pageIndex === currentPages[0])\n ) {\n return 'backward';\n }\n }\n\n return undefined;\n}\n\nfunction getPages(pageIndex: number, lastUsedPageIndex: number | undefined, currentPages: number[], direction: Direction) {\n if (currentPages.length && (pageIndex === lastUsedPageIndex || currentPages.includes(pageIndex))) {\n return currentPages;\n }\n\n if (direction === 'forward') {\n const nextPages = currentPages.length === DATASET_SIZE_MULTIPLIER ? currentPages.slice(1) : currentPages;\n return nextPages.concat(pageIndex);\n }\n\n if (direction === 'backward') {\n const nextPages = currentPages.length === DATASET_SIZE_MULTIPLIER ? currentPages.slice(0, -1) : currentPages;\n return [pageIndex].concat(nextPages);\n }\n\n return [pageIndex];\n}\n"],"names":["DATASET_SIZE_MULTIPLIER","useTableDataLoader2","fetchPage","fetchAll","options","pageSize","DEFAULT_PAGE_SIZE","loadPage","pageIndex","sorting","filters","hiddenColumns","search","reset","_pendingPageRequests","current","Promise","resolve","hasChangedData","JSON","stringify","_lastUsedSorting","_lastUsedFilters","_lastUsedSearch","data","cache","requestId","uuid","_temp2","_catch","_lastRequestId","then","response","length","setData","currentData","direction","getDirection","pages","nextPages","getPages","lastFetchedPage","_lastUsedHiddenColumns","nextCache","reduce","acc","p","Array","fill","undefined","rows","DATASET_SIZE","Object","values","concat","e","reject","React","useRef","useState","loadAll","_temp","_finallyRethrows","pageCount","Math","ceil","from","keys","forEach","index","push","startIndex","slice","_wasThrown","_result","invalidate","getCurrentPage","handleSort","handleFilter","handleSearch","onChangeFilter","onChangeSearch","onChangeSort","_experimentalDataLoader2","currentPages","middle","floor","lastUsedPageIndex","includes"],"mappings":"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"}
@@ -56,7 +56,7 @@ function useTableRowActive(isEnabled = false, initialRowActiveIndex) {
56
56
  return index;
57
57
  });
58
58
  }
59
- }, [rowActiveIndex, length, isEnabled]);
59
+ }, [rowActiveIndex, isEnabled]);
60
60
  return {
61
61
  isEnabled,
62
62
  rowActiveIndex,
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowActive.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowActive.ts"],"sourcesContent":["import React from 'react';\nimport { TableScrollToIndexHandler } from '../../types';\nimport { useIsHoverStatePaused } from '../../../../hooks/useIsHoverStatePaused';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../../utils/dom';\n\nexport function useTableRowActive(isEnabled = false, initialRowActiveIndex?: number) {\n const [rowActiveIndex, setRowActiveIndex] = React.useState<number | undefined>(initialRowActiveIndex);\n const [rowHoverIndex, setRowHoverIndex] = React.useState<number | undefined>(undefined);\n const [isHoverStatePaused, setHoverStatePaused] = useIsHoverStatePaused();\n\n const move = (direction: -1 | 1, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n const nextIndex = rowActiveIndex !== undefined ? getNextIndex(direction, rowActiveIndex, length) : 0;\n scrollToIndex(nextIndex);\n setTimeout(() => setRowActiveIndex(nextIndex), 50);\n };\n\n const onKeyDown = React.useCallback(\n (event: KeyboardEvent, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n if (!isEnabled || event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n setHoverStatePaused(true);\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const newIndex = 0;\n scrollToIndex(newIndex);\n setRowActiveIndex(newIndex);\n } else {\n move(-1, length, scrollToIndex);\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const newIndex = length - 1;\n scrollToIndex(newIndex);\n setRowActiveIndex(newIndex);\n } else {\n move(+1, length, scrollToIndex);\n }\n return;\n }\n },\n [isEnabled, rowActiveIndex]\n );\n\n const onFocus = React.useCallback(\n (event: React.FocusEvent, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n if (!isEnabled || event.isDefaultPrevented()) {\n return;\n }\n\n if (event.target.closest('tbody') || isElementInsideOrTriggeredFromContainer(event.target, event.currentTarget)) {\n return;\n }\n\n if (rowActiveIndex === undefined && length > 0) {\n setRowActiveIndex(index => {\n if (index === undefined) {\n scrollToIndex(0);\n return 0;\n }\n return index;\n });\n }\n },\n [rowActiveIndex, length, isEnabled]\n );\n\n return {\n isEnabled,\n rowActiveIndex,\n setRowActiveIndex: isEnabled ? setRowActiveIndex : () => undefined,\n rowHoverIndex,\n setRowHoverIndex,\n isHoverStatePaused,\n setHoverStatePaused: isEnabled ? setHoverStatePaused : () => undefined,\n handleFocus: isEnabled ? onFocus : () => undefined,\n handleKeyDown: isEnabled ? onKeyDown : () => undefined,\n };\n}\n\nfunction getNextIndex(direction: -1 | 1, currentIndex: number, length: number) {\n if (direction === -1) {\n return currentIndex - 1 > 0 ? currentIndex - 1 : 0;\n }\n\n return currentIndex + 1 < length ? currentIndex + 1 : currentIndex;\n}\n"],"names":["useTableRowActive","isEnabled","initialRowActiveIndex","rowActiveIndex","setRowActiveIndex","React","useState","rowHoverIndex","setRowHoverIndex","undefined","isHoverStatePaused","setHoverStatePaused","useIsHoverStatePaused","move","direction","length","scrollToIndex","nextIndex","getNextIndex","setTimeout","onKeyDown","useCallback","event","defaultPrevented","key","preventDefault","ctrlKey","metaKey","newIndex","onFocus","isDefaultPrevented","target","closest","isElementInsideOrTriggeredFromContainer","currentTarget","index","handleFocus","handleKeyDown","currentIndex"],"mappings":"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"}
1
+ {"version":3,"file":"useTableRowActive.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowActive.ts"],"sourcesContent":["import React from 'react';\nimport { TableScrollToIndexHandler } from '../../types';\nimport { useIsHoverStatePaused } from '../../../../hooks/useIsHoverStatePaused';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../../utils/dom';\n\nexport function useTableRowActive(isEnabled = false, initialRowActiveIndex?: number) {\n const [rowActiveIndex, setRowActiveIndex] = React.useState<number | undefined>(initialRowActiveIndex);\n const [rowHoverIndex, setRowHoverIndex] = React.useState<number | undefined>(undefined);\n const [isHoverStatePaused, setHoverStatePaused] = useIsHoverStatePaused();\n\n const move = (direction: -1 | 1, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n const nextIndex = rowActiveIndex !== undefined ? getNextIndex(direction, rowActiveIndex, length) : 0;\n scrollToIndex(nextIndex);\n setTimeout(() => setRowActiveIndex(nextIndex), 50);\n };\n\n const onKeyDown = React.useCallback(\n (event: KeyboardEvent, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n if (!isEnabled || event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n setHoverStatePaused(true);\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const newIndex = 0;\n scrollToIndex(newIndex);\n setRowActiveIndex(newIndex);\n } else {\n move(-1, length, scrollToIndex);\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n const newIndex = length - 1;\n scrollToIndex(newIndex);\n setRowActiveIndex(newIndex);\n } else {\n move(+1, length, scrollToIndex);\n }\n return;\n }\n },\n [isEnabled, rowActiveIndex]\n );\n\n const onFocus = React.useCallback(\n (event: React.FocusEvent, length: number, scrollToIndex: TableScrollToIndexHandler) => {\n if (!isEnabled || event.isDefaultPrevented()) {\n return;\n }\n\n if (event.target.closest('tbody') || isElementInsideOrTriggeredFromContainer(event.target, event.currentTarget)) {\n return;\n }\n\n if (rowActiveIndex === undefined && length > 0) {\n setRowActiveIndex(index => {\n if (index === undefined) {\n scrollToIndex(0);\n return 0;\n }\n return index;\n });\n }\n },\n [rowActiveIndex, isEnabled]\n );\n\n return {\n isEnabled,\n rowActiveIndex,\n setRowActiveIndex: isEnabled ? setRowActiveIndex : () => undefined,\n rowHoverIndex,\n setRowHoverIndex,\n isHoverStatePaused,\n setHoverStatePaused: isEnabled ? setHoverStatePaused : () => undefined,\n handleFocus: isEnabled ? onFocus : () => undefined,\n handleKeyDown: isEnabled ? onKeyDown : () => undefined,\n };\n}\n\nfunction getNextIndex(direction: -1 | 1, currentIndex: number, length: number) {\n if (direction === -1) {\n return currentIndex - 1 > 0 ? currentIndex - 1 : 0;\n }\n\n return currentIndex + 1 < length ? currentIndex + 1 : currentIndex;\n}\n"],"names":["useTableRowActive","isEnabled","initialRowActiveIndex","rowActiveIndex","setRowActiveIndex","React","useState","rowHoverIndex","setRowHoverIndex","undefined","isHoverStatePaused","setHoverStatePaused","useIsHoverStatePaused","move","direction","length","scrollToIndex","nextIndex","getNextIndex","setTimeout","onKeyDown","useCallback","event","defaultPrevented","key","preventDefault","ctrlKey","metaKey","newIndex","onFocus","isDefaultPrevented","target","closest","isElementInsideOrTriggeredFromContainer","currentTarget","index","handleFocus","handleKeyDown","currentIndex"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- function useTableRowExpansion(isEnabled = false, rowExpansionRenderer) {
1
+ function useTableRowExpansion(isEnabled = false, canExpandAll = true, rowExpansionRenderer) {
2
2
  return {
3
3
  isEnabled,
4
+ canExpandAll,
4
5
  rowExpansionRenderer: isEnabled ? rowExpansionRenderer : undefined
5
6
  };
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowExpansion.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowExpansion.ts"],"sourcesContent":["import { TableRowExpansionRenderer } from '../../types';\n\nexport function useTableRowExpansion<TType = unknown>(\n isEnabled = false,\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>\n) {\n return {\n isEnabled,\n rowExpansionRenderer: isEnabled ? rowExpansionRenderer : undefined,\n };\n}\n"],"names":["useTableRowExpansion","isEnabled","rowExpansionRenderer","undefined"],"mappings":"SAEgBA,oBAAoBA,CAChCC,SAAS,GAAG,KAAK,EACjBC,oBAAuD;EAEvD,OAAO;IACHD,SAAS;IACTC,oBAAoB,EAAED,SAAS,GAAGC,oBAAoB,GAAGC;GAC5D;AACL;;;;"}
1
+ {"version":3,"file":"useTableRowExpansion.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowExpansion.ts"],"sourcesContent":["import { TableRowExpansionRenderer } from '../../types';\n\nexport function useTableRowExpansion<TType = unknown>(\n isEnabled = false,\n canExpandAll = true,\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>\n) {\n return {\n isEnabled,\n canExpandAll,\n rowExpansionRenderer: isEnabled ? rowExpansionRenderer : undefined,\n };\n}\n"],"names":["useTableRowExpansion","isEnabled","canExpandAll","rowExpansionRenderer","undefined"],"mappings":"SAEgBA,oBAAoBA,CAChCC,SAAS,GAAG,KAAK,EACjBC,YAAY,GAAG,IAAI,EACnBC,oBAAuD;EAEvD,OAAO;IACHF,SAAS;IACTC,YAAY;IACZC,oBAAoB,EAAEF,SAAS,GAAGE,oBAAoB,GAAGC;GAC5D;AACL;;;;"}
@@ -5,7 +5,7 @@ import React__default from 'react';
5
5
  - Highlighting search results, this is custom and only uses the state part of globalFilter (to store the search query)
6
6
  - Filtering of results, this is essentially the built in filtering, and relies on enableGlobalFilter being on or off
7
7
  */
8
- function useTableSearch(isEnabled = false, defaultEnableGlobalFilter = false) {
8
+ function useTableSearch(isEnabled = false, onChangeSearch, defaultEnableGlobalFilter = false) {
9
9
  const [enableGlobalFilter, _setEnableGlobalFilter] = React__default.useState(defaultEnableGlobalFilter);
10
10
  function setEnableGlobalFilter(enabled, instance) {
11
11
  _setEnableGlobalFilter(enabled);
@@ -30,7 +30,8 @@ function useTableSearch(isEnabled = false, defaultEnableGlobalFilter = false) {
30
30
  highlightedColumnIndexes,
31
31
  setHighlightedColumnIndexes,
32
32
  currentHighlightColumnIndex,
33
- setCurrentHighlightColumnIndex
33
+ setCurrentHighlightColumnIndex,
34
+ handleSearch: isEnabled && typeof onChangeSearch === 'function' ? onChangeSearch : undefined
34
35
  };
35
36
  }
36
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSearch.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableSearch.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable } from '@tanstack/react-table';\n\n/*\n Search has two behaviours:\n - Highlighting search results, this is custom and only uses the state part of globalFilter (to store the search query)\n - Filtering of results, this is essentially the built in filtering, and relies on enableGlobalFilter being on or off\n*/\nexport function useTableSearch(isEnabled = false, defaultEnableGlobalFilter = false) {\n const [enableGlobalFilter, _setEnableGlobalFilter] = React.useState<boolean>(defaultEnableGlobalFilter);\n\n function setEnableGlobalFilter<TType = unknown>(enabled: boolean, instance: ReactTable<TType>) {\n _setEnableGlobalFilter(enabled);\n\n // react-table doesn't re-render when options.enableGlobalFilter changes, so for now we force it\n const currentFilter = instance.getState().globalFilter;\n\n if (currentFilter) {\n instance.resetGlobalFilter(true);\n\n window.requestAnimationFrame(() => {\n instance.setGlobalFilter(currentFilter);\n });\n }\n }\n\n // highlighting\n const [highlightedColumnIndexes, setHighlightedColumnIndexes] = React.useState<number[][]>([]);\n const [currentHighlightColumnIndex, setCurrentHighlightColumnIndex] = React.useState<number | undefined>(undefined);\n\n return {\n isEnabled,\n // filtering - built-in\n enableGlobalFilter,\n setEnableGlobalFilter,\n // highlighting - custom\n highlightedColumnIndexes,\n setHighlightedColumnIndexes,\n currentHighlightColumnIndex,\n setCurrentHighlightColumnIndex,\n };\n}\n"],"names":["useTableSearch","isEnabled","defaultEnableGlobalFilter","enableGlobalFilter","_setEnableGlobalFilter","React","useState","setEnableGlobalFilter","enabled","instance","currentFilter","getState","globalFilter","resetGlobalFilter","window","requestAnimationFrame","setGlobalFilter","highlightedColumnIndexes","setHighlightedColumnIndexes","currentHighlightColumnIndex","setCurrentHighlightColumnIndex","undefined"],"mappings":";;AAGA;;;;;SAKgBA,cAAcA,CAACC,SAAS,GAAG,KAAK,EAAEC,yBAAyB,GAAG,KAAK;EAC/E,MAAM,CAACC,kBAAkB,EAAEC,sBAAsB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAUJ,yBAAyB,CAAC;EAEvG,SAASK,qBAAqBA,CAAkBC,OAAgB,EAAEC,QAA2B;IACzFL,sBAAsB,CAACI,OAAO,CAAC;;IAG/B,MAAME,aAAa,GAAGD,QAAQ,CAACE,QAAQ,EAAE,CAACC,YAAY;IAEtD,IAAIF,aAAa,EAAE;MACfD,QAAQ,CAACI,iBAAiB,CAAC,IAAI,CAAC;MAEhCC,MAAM,CAACC,qBAAqB,CAAC;QACzBN,QAAQ,CAACO,eAAe,CAACN,aAAa,CAAC;OAC1C,CAAC;;;;EAKV,MAAM,CAACO,wBAAwB,EAAEC,2BAA2B,CAAC,GAAGb,cAAK,CAACC,QAAQ,CAAa,EAAE,CAAC;EAC9F,MAAM,CAACa,2BAA2B,EAAEC,8BAA8B,CAAC,GAAGf,cAAK,CAACC,QAAQ,CAAqBe,SAAS,CAAC;EAEnH,OAAO;IACHpB,SAAS;;IAETE,kBAAkB;IAClBI,qBAAqB;;IAErBU,wBAAwB;IACxBC,2BAA2B;IAC3BC,2BAA2B;IAC3BC;GACH;AACL;;;;"}
1
+ {"version":3,"file":"useTableSearch.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableSearch.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable } from '@tanstack/react-table';\nimport { TableSearchHandler } from '../../types';\n\n/*\n Search has two behaviours:\n - Highlighting search results, this is custom and only uses the state part of globalFilter (to store the search query)\n - Filtering of results, this is essentially the built in filtering, and relies on enableGlobalFilter being on or off\n*/\nexport function useTableSearch<TType = unknown>(\n isEnabled = false,\n onChangeSearch: TableSearchHandler | undefined,\n defaultEnableGlobalFilter = false\n) {\n const [enableGlobalFilter, _setEnableGlobalFilter] = React.useState<boolean>(defaultEnableGlobalFilter);\n\n function setEnableGlobalFilter<T extends TType>(enabled: boolean, instance: ReactTable<T>) {\n _setEnableGlobalFilter(enabled);\n\n // react-table doesn't re-render when options.enableGlobalFilter changes, so for now we force it\n const currentFilter = instance.getState().globalFilter;\n\n if (currentFilter) {\n instance.resetGlobalFilter(true);\n\n window.requestAnimationFrame(() => {\n instance.setGlobalFilter(currentFilter);\n });\n }\n }\n\n // highlighting\n const [highlightedColumnIndexes, setHighlightedColumnIndexes] = React.useState<number[][]>([]);\n const [currentHighlightColumnIndex, setCurrentHighlightColumnIndex] = React.useState<number | undefined>(undefined);\n\n return {\n isEnabled,\n // filtering - built-in\n enableGlobalFilter,\n setEnableGlobalFilter,\n // highlighting - custom\n highlightedColumnIndexes,\n setHighlightedColumnIndexes,\n currentHighlightColumnIndex,\n setCurrentHighlightColumnIndex,\n handleSearch: isEnabled && typeof onChangeSearch === 'function' ? onChangeSearch : undefined,\n };\n}\n"],"names":["useTableSearch","isEnabled","onChangeSearch","defaultEnableGlobalFilter","enableGlobalFilter","_setEnableGlobalFilter","React","useState","setEnableGlobalFilter","enabled","instance","currentFilter","getState","globalFilter","resetGlobalFilter","window","requestAnimationFrame","setGlobalFilter","highlightedColumnIndexes","setHighlightedColumnIndexes","currentHighlightColumnIndex","setCurrentHighlightColumnIndex","undefined","handleSearch"],"mappings":";;AAIA;;;;;SAKgBA,cAAcA,CAC1BC,SAAS,GAAG,KAAK,EACjBC,cAA8C,EAC9CC,yBAAyB,GAAG,KAAK;EAEjC,MAAM,CAACC,kBAAkB,EAAEC,sBAAsB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAUJ,yBAAyB,CAAC;EAEvG,SAASK,qBAAqBA,CAAkBC,OAAgB,EAAEC,QAAuB;IACrFL,sBAAsB,CAACI,OAAO,CAAC;;IAG/B,MAAME,aAAa,GAAGD,QAAQ,CAACE,QAAQ,EAAE,CAACC,YAAY;IAEtD,IAAIF,aAAa,EAAE;MACfD,QAAQ,CAACI,iBAAiB,CAAC,IAAI,CAAC;MAEhCC,MAAM,CAACC,qBAAqB,CAAC;QACzBN,QAAQ,CAACO,eAAe,CAACN,aAAa,CAAC;OAC1C,CAAC;;;;EAKV,MAAM,CAACO,wBAAwB,EAAEC,2BAA2B,CAAC,GAAGb,cAAK,CAACC,QAAQ,CAAa,EAAE,CAAC;EAC9F,MAAM,CAACa,2BAA2B,EAAEC,8BAA8B,CAAC,GAAGf,cAAK,CAACC,QAAQ,CAAqBe,SAAS,CAAC;EAEnH,OAAO;IACHrB,SAAS;;IAETG,kBAAkB;IAClBI,qBAAqB;;IAErBU,wBAAwB;IACxBC,2BAA2B;IAC3BC,2BAA2B;IAC3BC,8BAA8B;IAC9BE,YAAY,EAAEtB,SAAS,IAAI,OAAOC,cAAc,KAAK,UAAU,GAAGA,cAAc,GAAGoB;GACtF;AACL;;;;"}
@@ -1,11 +1,17 @@
1
1
  import React__default from 'react';
2
- import { TableServerLoadAllState } from '../../types.js';
3
2
  import { DEFAULT_PAGE_SIZE } from '../../useTableDataLoader.js';
4
3
 
5
- function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE) {
4
+ function useTableServerLoading(length, data, loadPage, loadAll, pages, pageSize = DEFAULT_PAGE_SIZE, _experimentalDataLoader2 = false) {
6
5
  const isEnabled = !!loadPage && !!loadAll;
7
6
  const [isReady, setReady] = React__default.useState(false);
8
- const [loadAllStatus, setLoadedStatus] = React__default.useState(TableServerLoadAllState.Incomplete);
7
+ const [loading, setLoading] = React__default.useState(false);
8
+ const hasLoadedAll = React__default.useMemo(() => {
9
+ var _data$some;
10
+ if (data.length !== length || !!((_data$some = data.some) !== null && _data$some !== void 0 && _data$some.call(data, x => x === undefined))) {
11
+ return false;
12
+ }
13
+ return true;
14
+ }, [data, length]);
9
15
  let _loadPage;
10
16
  let _loadAll;
11
17
  let _loadAllIfNeeded;
@@ -30,9 +36,9 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
30
36
  try {
31
37
  const _temp2 = function () {
32
38
  if (typeof loadAll === 'function') {
33
- setLoadedStatus(TableServerLoadAllState.Loading);
39
+ setLoading(true);
34
40
  return Promise.resolve(loadAll(...args)).then(function () {
35
- setLoadedStatus(TableServerLoadAllState.Completed);
41
+ setLoading(false);
36
42
  setReady(true);
37
43
  });
38
44
  }
@@ -45,7 +51,7 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
45
51
  _loadAllIfNeeded = function (...args) {
46
52
  try {
47
53
  const _temp3 = function () {
48
- if (loadAllStatus === TableServerLoadAllState.Incomplete) {
54
+ if (!hasLoadedAll) {
49
55
  var _loadAll2;
50
56
  return Promise.resolve((_loadAll2 = _loadAll) === null || _loadAll2 === void 0 ? void 0 : _loadAll2(...args)).then(function () {});
51
57
  }
@@ -56,14 +62,18 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
56
62
  }
57
63
  };
58
64
  }
65
+ const pageCount = Math.ceil(length / pageSize);
59
66
  return {
67
+ pages,
60
68
  isEnabled,
61
69
  isReady,
62
70
  loadPage: _loadPage,
63
71
  loadAll: _loadAll,
64
72
  loadAllIfNeeded: _loadAllIfNeeded,
65
- loadAllStatus,
66
- pageSize
73
+ loading,
74
+ pageSize,
75
+ pageCount,
76
+ _experimentalDataLoader2
67
77
  };
68
78
  }
69
79
 
@@ -1 +1 @@
1
- {"version":3,"file":"useTableServerLoading.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableServerLoading.ts"],"sourcesContent":["import React from 'react';\nimport { TableServerLoadAllHandler, TableServerLoadAllState, TableServerLoadPageHandler } from '../../types';\nimport { DEFAULT_PAGE_SIZE } from '../../useTableDataLoader';\n\nexport function useTableServerLoading(\n loadPage?: TableServerLoadPageHandler,\n loadAll?: TableServerLoadAllHandler,\n pageSize = DEFAULT_PAGE_SIZE\n) {\n const isEnabled = !!loadPage && !!loadAll;\n const [isReady, setReady] = React.useState(false);\n const [loadAllStatus, setLoadedStatus] = React.useState<TableServerLoadAllState>(TableServerLoadAllState.Incomplete);\n\n let _loadPage: TableServerLoadPageHandler | undefined;\n let _loadAll: TableServerLoadAllHandler | undefined;\n let _loadAllIfNeeded: TableServerLoadAllHandler | undefined;\n\n if (typeof loadPage === 'function') {\n _loadPage = async (...args) => {\n if (typeof loadPage === 'function') {\n await loadPage(...args);\n setReady(true);\n }\n };\n }\n\n if (typeof loadAll === 'function') {\n _loadAll = async (...args) => {\n if (typeof loadAll === 'function') {\n setLoadedStatus(TableServerLoadAllState.Loading);\n await loadAll(...args);\n setLoadedStatus(TableServerLoadAllState.Completed);\n setReady(true);\n }\n };\n\n _loadAllIfNeeded = async (...args) => {\n if (loadAllStatus === TableServerLoadAllState.Incomplete) {\n await _loadAll?.(...args);\n }\n };\n }\n\n return {\n isEnabled,\n isReady,\n loadPage: _loadPage,\n loadAll: _loadAll,\n loadAllIfNeeded: _loadAllIfNeeded,\n loadAllStatus,\n pageSize,\n };\n}\n"],"names":["useTableServerLoading","loadPage","loadAll","pageSize","DEFAULT_PAGE_SIZE","isEnabled","isReady","setReady","React","useState","loadAllStatus","setLoadedStatus","TableServerLoadAllState","Incomplete","_loadPage","_loadAll","_loadAllIfNeeded","args","Promise","resolve","then","_temp","e","reject","Loading","Completed","_temp2","_loadAll2","_temp3","loadAllIfNeeded"],"mappings":";;;;SAIgBA,qBAAqBA,CACjCC,QAAqC,EACrCC,OAAmC,EACnCC,QAAQ,GAAGC,iBAAiB;EAE5B,MAAMC,SAAS,GAAG,CAAC,CAACJ,QAAQ,IAAI,CAAC,CAACC,OAAO;EACzC,MAAM,CAACI,OAAO,EAAEC,QAAQ,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACC,aAAa,EAAEC,eAAe,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAA0BG,uBAAuB,CAACC,UAAU,CAAC;EAEpH,IAAIC,SAAiD;EACrD,IAAIC,QAA+C;EACnD,IAAIC,gBAAuD;EAE3D,IAAI,OAAOf,QAAQ,KAAK,UAAU,EAAE;IAChCa,SAAS,aAAU,GAAGG,IAAI;MAAA;;cAClB,OAAOhB,QAAQ,KAAK,UAAU;YAAA,OAAAiB,OAAA,CAAAC,OAAA,CACxBlB,QAAQ,CAAC,GAAGgB,IAAI,CAAC,EAAAG,IAAA;cACvBb,QAAQ,CAAC,IAAI,CAAC;;;;QAAC,OAAAW,OAAA,CAAAC,OAAA,CAAAE,KAAA,IAAAA,KAAA,CAAAD,IAAA,GAAAC,KAAA,CAAAD,IAAA;OAEtB,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;;EAGL,IAAI,OAAOpB,OAAO,KAAK,UAAU,EAAE;IAC/Ba,QAAQ,aAAU,GAAGE,IAAI;MAAA;;cACjB,OAAOf,OAAO,KAAK,UAAU;YAC7BS,eAAe,CAACC,uBAAuB,CAACY,OAAO,CAAC;YAAC,OAAAN,OAAA,CAAAC,OAAA,CAC3CjB,OAAO,CAAC,GAAGe,IAAI,CAAC,EAAAG,IAAA;cACtBT,eAAe,CAACC,uBAAuB,CAACa,SAAS,CAAC;cAClDlB,QAAQ,CAAC,IAAI,CAAC;;;;QAAC,OAAAW,OAAA,CAAAC,OAAA,CAAAO,MAAA,IAAAA,MAAA,CAAAN,IAAA,GAAAM,MAAA,CAAAN,IAAA;OAEtB,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;IAEDN,gBAAgB,aAAU,GAAGC,IAAI;MAAA;;cACzBP,aAAa,KAAKE,uBAAuB,CAACC,UAAU;YAAA,IAAAc,SAAA;YAAA,OAAAT,OAAA,CAAAC,OAAA,EAAAQ,SAAA,GAC9CZ,QAAQ,cAAAY,SAAA,uBAARA,SAAA,CAAW,GAAGV,IAAI,CAAC,EAAAG,IAAA;;;QAAA,OAAAF,OAAA,CAAAC,OAAA,CAAAS,MAAA,IAAAA,MAAA,CAAAR,IAAA,GAAAQ,MAAA,CAAAR,IAAA;OAEhC,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;;EAGL,OAAO;IACHjB,SAAS;IACTC,OAAO;IACPL,QAAQ,EAAEa,SAAS;IACnBZ,OAAO,EAAEa,QAAQ;IACjBc,eAAe,EAAEb,gBAAgB;IACjCN,aAAa;IACbP;GACH;AACL;;;;"}
1
+ {"version":3,"file":"useTableServerLoading.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableServerLoading.ts"],"sourcesContent":["import React from 'react';\nimport { TableServerLoadAllHandler, TableServerLoadPageHandler } from '../../types';\nimport { DEFAULT_PAGE_SIZE } from '../../useTableDataLoader';\n\nexport function useTableServerLoading<TType = unknown>(\n length: number,\n data: TType[],\n loadPage?: TableServerLoadPageHandler,\n loadAll?: TableServerLoadAllHandler,\n pages?: number[],\n pageSize = DEFAULT_PAGE_SIZE,\n _experimentalDataLoader2 = false\n) {\n const isEnabled = !!loadPage && !!loadAll;\n const [isReady, setReady] = React.useState(false);\n const [loading, setLoading] = React.useState<boolean>(false);\n\n const hasLoadedAll = React.useMemo(() => {\n if (data.length !== length || !!data.some?.(x => x === undefined)) {\n return false;\n }\n\n return true;\n }, [data, length]);\n\n let _loadPage: TableServerLoadPageHandler | undefined;\n let _loadAll: TableServerLoadAllHandler | undefined;\n let _loadAllIfNeeded: TableServerLoadAllHandler | undefined;\n\n if (typeof loadPage === 'function') {\n _loadPage = async (...args) => {\n if (typeof loadPage === 'function') {\n await loadPage(...args);\n setReady(true);\n }\n };\n }\n\n if (typeof loadAll === 'function') {\n _loadAll = async (...args) => {\n if (typeof loadAll === 'function') {\n setLoading(true);\n await loadAll(...args);\n setLoading(false);\n setReady(true);\n }\n };\n\n _loadAllIfNeeded = async (...args) => {\n if (!hasLoadedAll) {\n await _loadAll?.(...args);\n }\n };\n }\n\n const pageCount = Math.ceil(length / pageSize);\n\n return {\n pages,\n isEnabled,\n isReady,\n loadPage: _loadPage,\n loadAll: _loadAll,\n loadAllIfNeeded: _loadAllIfNeeded,\n loading,\n pageSize,\n pageCount,\n _experimentalDataLoader2,\n };\n}\n"],"names":["useTableServerLoading","length","data","loadPage","loadAll","pages","pageSize","DEFAULT_PAGE_SIZE","_experimentalDataLoader2","isEnabled","isReady","setReady","React","useState","loading","setLoading","hasLoadedAll","useMemo","_data$some","some","call","x","undefined","_loadPage","_loadAll","_loadAllIfNeeded","args","Promise","resolve","then","_temp","e","reject","_temp2","_loadAll2","_temp3","pageCount","Math","ceil","loadAllIfNeeded"],"mappings":";;;SAIgBA,qBAAqBA,CACjCC,MAAc,EACdC,IAAa,EACbC,QAAqC,EACrCC,OAAmC,EACnCC,KAAgB,EAChBC,QAAQ,GAAGC,iBAAiB,EAC5BC,wBAAwB,GAAG,KAAK;EAEhC,MAAMC,SAAS,GAAG,CAAC,CAACN,QAAQ,IAAI,CAAC,CAACC,OAAO;EACzC,MAAM,CAACM,OAAO,EAAEC,QAAQ,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAU,KAAK,CAAC;EAE5D,MAAMG,YAAY,GAAGJ,cAAK,CAACK,OAAO,CAAC;;IAC/B,IAAIf,IAAI,CAACD,MAAM,KAAKA,MAAM,IAAI,CAAC,GAAAiB,UAAA,GAAChB,IAAI,CAACiB,IAAI,cAAAD,UAAA,eAATA,UAAA,CAAAE,IAAA,CAAAlB,IAAI,EAAQmB,CAAC,IAAIA,CAAC,KAAKC,SAAS,CAAC,GAAE;MAC/D,OAAO,KAAK;;IAGhB,OAAO,IAAI;GACd,EAAE,CAACpB,IAAI,EAAED,MAAM,CAAC,CAAC;EAElB,IAAIsB,SAAiD;EACrD,IAAIC,QAA+C;EACnD,IAAIC,gBAAuD;EAE3D,IAAI,OAAOtB,QAAQ,KAAK,UAAU,EAAE;IAChCoB,SAAS,aAAU,GAAGG,IAAI;MAAA;;cAClB,OAAOvB,QAAQ,KAAK,UAAU;YAAA,OAAAwB,OAAA,CAAAC,OAAA,CACxBzB,QAAQ,CAAC,GAAGuB,IAAI,CAAC,EAAAG,IAAA;cACvBlB,QAAQ,CAAC,IAAI,CAAC;;;;QAAC,OAAAgB,OAAA,CAAAC,OAAA,CAAAE,KAAA,IAAAA,KAAA,CAAAD,IAAA,GAAAC,KAAA,CAAAD,IAAA;OAEtB,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;;EAGL,IAAI,OAAO3B,OAAO,KAAK,UAAU,EAAE;IAC/BoB,QAAQ,aAAU,GAAGE,IAAI;MAAA;;cACjB,OAAOtB,OAAO,KAAK,UAAU;YAC7BW,UAAU,CAAC,IAAI,CAAC;YAAC,OAAAY,OAAA,CAAAC,OAAA,CACXxB,OAAO,CAAC,GAAGsB,IAAI,CAAC,EAAAG,IAAA;cACtBd,UAAU,CAAC,KAAK,CAAC;cACjBJ,QAAQ,CAAC,IAAI,CAAC;;;;QAAC,OAAAgB,OAAA,CAAAC,OAAA,CAAAK,MAAA,IAAAA,MAAA,CAAAJ,IAAA,GAAAI,MAAA,CAAAJ,IAAA;OAEtB,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;IAEDN,gBAAgB,aAAU,GAAGC,IAAI;MAAA;;cACzB,CAACV,YAAY;YAAA,IAAAkB,SAAA;YAAA,OAAAP,OAAA,CAAAC,OAAA,EAAAM,SAAA,GACPV,QAAQ,cAAAU,SAAA,uBAARA,SAAA,CAAW,GAAGR,IAAI,CAAC,EAAAG,IAAA;;;QAAA,OAAAF,OAAA,CAAAC,OAAA,CAAAO,MAAA,IAAAA,MAAA,CAAAN,IAAA,GAAAM,MAAA,CAAAN,IAAA;OAEhC,QAAAE,CAAA;QAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;;EAGL,MAAMK,SAAS,GAAGC,IAAI,CAACC,IAAI,CAACrC,MAAM,GAAGK,QAAQ,CAAC;EAE9C,OAAO;IACHD,KAAK;IACLI,SAAS;IACTC,OAAO;IACPP,QAAQ,EAAEoB,SAAS;IACnBnB,OAAO,EAAEoB,QAAQ;IACjBe,eAAe,EAAEd,gBAAgB;IACjCX,OAAO;IACPR,QAAQ;IACR8B,SAAS;IACT5B;GACH;AACL;;;;"}