@1771technologies/lytenyte-pro 2.0.0-dev.0 → 2.0.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/dist/__play__/alpha.play.d.ts +3 -0
  2. package/dist/__play__/alpha.play.js +56 -0
  3. package/dist/__play__/basic-server-data/data.d.ts +10 -0
  4. package/dist/__play__/basic-server-data/data.js +17746 -0
  5. package/dist/__play__/basic-server-data/server.d.ts +36 -0
  6. package/dist/__play__/basic-server-data/server.js +105 -0
  7. package/dist/__play__/buttons.play.d.ts +4 -0
  8. package/dist/__play__/buttons.play.js +7 -0
  9. package/dist/__play__/inputs.play.d.ts +3 -0
  10. package/dist/__play__/inputs.play.js +13 -0
  11. package/dist/__play__/server.play.d.ts +3 -0
  12. package/dist/__play__/server.play.js +66 -0
  13. package/dist/__play__/tree.play.d.ts +3 -0
  14. package/dist/__play__/tree.play.js +47 -0
  15. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.d.ts +2 -0
  16. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +43 -0
  17. package/dist/cell-selection/are-rects-equal.d.ts +2 -0
  18. package/dist/cell-selection/are-rects-equal.js +6 -0
  19. package/dist/cell-selection/bound-selection-rect.d.ts +3 -0
  20. package/dist/cell-selection/bound-selection-rect.js +16 -0
  21. package/dist/cell-selection/cell-selection-containers.d.ts +3 -0
  22. package/dist/cell-selection/cell-selection-containers.js +86 -0
  23. package/dist/cell-selection/cell-selection-driver/cell-selection-driver.d.ts +1 -0
  24. package/dist/cell-selection/cell-selection-driver/cell-selection-driver.js +279 -0
  25. package/dist/cell-selection/cell-selection-driver/use-cell-focus-change.d.ts +6 -0
  26. package/dist/cell-selection/cell-selection-driver/use-cell-focus-change.js +34 -0
  27. package/dist/cell-selection/cell-style-row.d.ts +8 -0
  28. package/dist/cell-selection/cell-style-row.js +79 -0
  29. package/dist/cell-selection/data-rect-from-cell-position.d.ts +3 -0
  30. package/dist/cell-selection/data-rect-from-cell-position.js +17 -0
  31. package/dist/cell-selection/deselect-rect-range.d.ts +2 -0
  32. package/dist/cell-selection/deselect-rect-range.js +43 -0
  33. package/dist/cell-selection/expand-selection-down.d.ts +3 -0
  34. package/dist/cell-selection/expand-selection-down.js +78 -0
  35. package/dist/cell-selection/expand-selection-end.d.ts +3 -0
  36. package/dist/cell-selection/expand-selection-end.js +76 -0
  37. package/dist/cell-selection/expand-selection-start.d.ts +3 -0
  38. package/dist/cell-selection/expand-selection-start.js +73 -0
  39. package/dist/cell-selection/expand-selection-up.d.ts +3 -0
  40. package/dist/cell-selection/expand-selection-up.js +74 -0
  41. package/dist/cell-selection/full-width-start-end-index.d.ts +2 -0
  42. package/dist/cell-selection/full-width-start-end-index.js +4 -0
  43. package/dist/cell-selection/get-root-cell.d.ts +3 -0
  44. package/dist/cell-selection/get-root-cell.js +6 -0
  45. package/dist/cell-selection/index.d.ts +13 -0
  46. package/dist/cell-selection/index.js +13 -0
  47. package/dist/cell-selection/is-bottom-rect.d.ts +2 -0
  48. package/dist/cell-selection/is-bottom-rect.js +4 -0
  49. package/dist/cell-selection/is-center-col-rect.d.ts +5 -0
  50. package/dist/cell-selection/is-center-col-rect.js +3 -0
  51. package/dist/cell-selection/is-center-rect.d.ts +2 -0
  52. package/dist/cell-selection/is-center-rect.js +4 -0
  53. package/dist/cell-selection/is-end-rect.d.ts +5 -0
  54. package/dist/cell-selection/is-end-rect.js +3 -0
  55. package/dist/cell-selection/is-fully-within-rect.d.ts +2 -0
  56. package/dist/cell-selection/is-fully-within-rect.js +6 -0
  57. package/dist/cell-selection/is-overlapping-rect.d.ts +2 -0
  58. package/dist/cell-selection/is-overlapping-rect.js +5 -0
  59. package/dist/cell-selection/is-start-rect.d.ts +5 -0
  60. package/dist/cell-selection/is-start-rect.js +3 -0
  61. package/dist/cell-selection/is-top-rect.d.ts +2 -0
  62. package/dist/cell-selection/is-top-rect.js +3 -0
  63. package/dist/cell-selection/is-within-selection-rect.d.ts +2 -0
  64. package/dist/cell-selection/is-within-selection-rect.js +3 -0
  65. package/dist/cell-selection/split-cell-selection-rect.d.ts +47 -0
  66. package/dist/cell-selection/split-cell-selection-rect.js +88 -0
  67. package/dist/cell-selection/split-on-pivot.d.ts +3 -0
  68. package/dist/cell-selection/split-on-pivot.js +50 -0
  69. package/dist/cell-selection/update-additive-cell-selection.d.ts +4 -0
  70. package/dist/cell-selection/update-additive-cell-selection.js +21 -0
  71. package/dist/cell-selection/use-edge-scroll.d.ts +6 -0
  72. package/dist/cell-selection/use-edge-scroll.js +71 -0
  73. package/dist/components/checkbox/checkbox.d.ts +15 -0
  74. package/dist/components/checkbox/checkbox.js +42 -0
  75. package/dist/components/checkbox/checkbox.play.d.ts +2 -0
  76. package/dist/components/checkbox/checkbox.play.js +6 -0
  77. package/dist/components/column-manager/column-manager.d.ts +13 -0
  78. package/dist/components/column-manager/column-manager.js +47 -0
  79. package/dist/components/external/clsx.d.ts +2 -0
  80. package/dist/components/external/clsx.js +44 -0
  81. package/dist/components/external/floating-ui.d.ts +268 -0
  82. package/dist/components/external/floating-ui.js +1802 -0
  83. package/dist/components/headless/dialog/arrow.d.ts +6 -0
  84. package/dist/components/headless/dialog/arrow.js +16 -0
  85. package/dist/components/headless/dialog/close.d.ts +10 -0
  86. package/dist/components/headless/dialog/close.js +22 -0
  87. package/dist/components/headless/dialog/container.d.ts +5 -0
  88. package/dist/components/headless/dialog/container.js +221 -0
  89. package/dist/components/headless/dialog/context.d.ts +32 -0
  90. package/dist/components/headless/dialog/context.js +3 -0
  91. package/dist/components/headless/dialog/description.d.ts +9 -0
  92. package/dist/components/headless/dialog/description.js +20 -0
  93. package/dist/components/headless/dialog/index.parts.d.ts +30 -0
  94. package/dist/components/headless/dialog/index.parts.js +17 -0
  95. package/dist/components/headless/dialog/root.d.ts +32 -0
  96. package/dist/components/headless/dialog/root.js +75 -0
  97. package/dist/components/headless/dialog/title.d.ts +9 -0
  98. package/dist/components/headless/dialog/title.js +20 -0
  99. package/dist/components/headless/dialog/transform-origin.d.ts +5 -0
  100. package/dist/components/headless/dialog/transform-origin.js +38 -0
  101. package/dist/components/headless/dialog/trigger.d.ts +10 -0
  102. package/dist/components/headless/dialog/trigger.js +24 -0
  103. package/dist/components/headless/dialog/use-dialog.d.ts +4 -0
  104. package/dist/components/headless/dialog/use-dialog.js +12 -0
  105. package/dist/components/headless/menu/checkbox-item.d.ts +11 -0
  106. package/dist/components/headless/menu/checkbox-item.js +42 -0
  107. package/dist/components/headless/menu/combo/combo-checkbox.d.ts +11 -0
  108. package/dist/components/headless/menu/combo/combo-checkbox.js +38 -0
  109. package/dist/components/headless/menu/combo/combo-context.d.ts +9 -0
  110. package/dist/components/headless/menu/combo/combo-context.js +3 -0
  111. package/dist/components/headless/menu/combo/combo-input.d.ts +7 -0
  112. package/dist/components/headless/menu/combo/combo-input.js +58 -0
  113. package/dist/components/headless/menu/combo/combo-menu.d.ts +5 -0
  114. package/dist/components/headless/menu/combo/combo-menu.js +24 -0
  115. package/dist/components/headless/menu/combo/combo-option.d.ts +9 -0
  116. package/dist/components/headless/menu/combo/combo-option.js +37 -0
  117. package/dist/components/headless/menu/container.d.ts +5 -0
  118. package/dist/components/headless/menu/container.js +19 -0
  119. package/dist/components/headless/menu/dom.d.ts +4 -0
  120. package/dist/components/headless/menu/dom.js +20 -0
  121. package/dist/components/headless/menu/index.d.ts +54 -0
  122. package/dist/components/headless/menu/index.js +39 -0
  123. package/dist/components/headless/menu/item/handle-vertical-navigation.d.ts +2 -0
  124. package/dist/components/headless/menu/item/handle-vertical-navigation.js +28 -0
  125. package/dist/components/headless/menu/item/item.d.ts +9 -0
  126. package/dist/components/headless/menu/item/item.js +45 -0
  127. package/dist/components/headless/menu/item/use-menu-item-events.d.ts +1 -0
  128. package/dist/components/headless/menu/item/use-menu-item-events.js +25 -0
  129. package/dist/components/headless/menu/menu-divider.d.ts +5 -0
  130. package/dist/components/headless/menu/menu-divider.js +6 -0
  131. package/dist/components/headless/menu/menu-group.d.ts +5 -0
  132. package/dist/components/headless/menu/menu-group.js +6 -0
  133. package/dist/components/headless/menu/menu-header.d.ts +5 -0
  134. package/dist/components/headless/menu/menu-header.js +6 -0
  135. package/dist/components/headless/menu/popover.d.ts +5 -0
  136. package/dist/components/headless/menu/popover.js +7 -0
  137. package/dist/components/headless/menu/radio-group/context.d.ts +11 -0
  138. package/dist/components/headless/menu/radio-group/context.js +7 -0
  139. package/dist/components/headless/menu/radio-group/radio-item.d.ts +10 -0
  140. package/dist/components/headless/menu/radio-group/radio-item.js +44 -0
  141. package/dist/components/headless/menu/submenu/submenu-context.d.ts +9 -0
  142. package/dist/components/headless/menu/submenu/submenu-context.js +3 -0
  143. package/dist/components/headless/menu/submenu/submenu-trigger.d.ts +7 -0
  144. package/dist/components/headless/menu/submenu/submenu-trigger.js +70 -0
  145. package/dist/components/headless/menu/submenu/submenu.d.ts +21 -0
  146. package/dist/components/headless/menu/submenu/submenu.js +55 -0
  147. package/dist/components/headless/menu/submenu/use-submenu-position.d.ts +5 -0
  148. package/dist/components/headless/menu/submenu/use-submenu-position.js +31 -0
  149. package/dist/components/headless/menu/use-menu.d.ts +1 -0
  150. package/dist/components/headless/menu/use-menu.js +52 -0
  151. package/dist/components/headless/popover/container.d.ts +5 -0
  152. package/dist/components/headless/popover/container.js +7 -0
  153. package/dist/components/headless/popover/context.d.ts +6 -0
  154. package/dist/components/headless/popover/context.js +3 -0
  155. package/dist/components/headless/popover/index.d.ts +30 -0
  156. package/dist/components/headless/popover/index.js +17 -0
  157. package/dist/components/headless/popover/root.d.ts +6 -0
  158. package/dist/components/headless/popover/root.js +8 -0
  159. package/dist/components/headless/popover/trigger.d.ts +7 -0
  160. package/dist/components/headless/popover/trigger.js +11 -0
  161. package/dist/components/pill-manager/container.d.ts +5 -0
  162. package/dist/components/pill-manager/container.js +127 -0
  163. package/dist/components/pill-manager/expander.d.ts +9 -0
  164. package/dist/components/pill-manager/expander.js +21 -0
  165. package/dist/components/pill-manager/icons.d.ts +12 -0
  166. package/dist/components/pill-manager/icons.js +35 -0
  167. package/dist/components/pill-manager/index.d.ts +33 -0
  168. package/dist/components/pill-manager/index.js +13 -0
  169. package/dist/components/pill-manager/item.d.ts +10 -0
  170. package/dist/components/pill-manager/item.js +178 -0
  171. package/dist/components/pill-manager/label.d.ts +10 -0
  172. package/dist/components/pill-manager/label.js +31 -0
  173. package/dist/components/pill-manager/pill-manager.play.d.ts +3 -0
  174. package/dist/components/pill-manager/pill-manager.play.js +73 -0
  175. package/dist/components/pill-manager/pill-row.context.d.ts +8 -0
  176. package/dist/components/pill-manager/pill-row.context.js +4 -0
  177. package/dist/components/pill-manager/pill-row.d.ts +12 -0
  178. package/dist/components/pill-manager/pill-row.js +22 -0
  179. package/dist/components/pill-manager/root.context.d.ts +40 -0
  180. package/dist/components/pill-manager/root.context.js +4 -0
  181. package/dist/components/pill-manager/root.d.ts +25 -0
  182. package/dist/components/pill-manager/root.js +33 -0
  183. package/dist/components/pill-manager/row-default.d.ts +3 -0
  184. package/dist/components/pill-manager/row-default.js +14 -0
  185. package/dist/components/pill-manager/types.d.ts +21 -0
  186. package/dist/components/pill-manager/types.js +1 -0
  187. package/dist/components/row-group-cell.d.ts +13 -0
  188. package/dist/components/row-group-cell.js +40 -0
  189. package/dist/components/select-all.d.ts +12 -0
  190. package/dist/components/select-all.js +34 -0
  191. package/dist/components/smart-select/chip-context.d.ts +8 -0
  192. package/dist/components/smart-select/chip-context.js +4 -0
  193. package/dist/components/smart-select/chip-remove.d.ts +1 -0
  194. package/dist/components/smart-select/chip-remove.js +13 -0
  195. package/dist/components/smart-select/chip.d.ts +13 -0
  196. package/dist/components/smart-select/chip.js +79 -0
  197. package/dist/components/smart-select/container.d.ts +1 -0
  198. package/dist/components/smart-select/container.js +13 -0
  199. package/dist/components/smart-select/context.d.ts +31 -0
  200. package/dist/components/smart-select/context.js +4 -0
  201. package/dist/components/smart-select/index.d.ts +30 -0
  202. package/dist/components/smart-select/index.js +19 -0
  203. package/dist/components/smart-select/option.d.ts +8 -0
  204. package/dist/components/smart-select/option.js +36 -0
  205. package/dist/components/smart-select/root.d.ts +17 -0
  206. package/dist/components/smart-select/root.js +165 -0
  207. package/dist/components/smart-select/smart-select.play.d.ts +2 -0
  208. package/dist/components/smart-select/smart-select.play.js +36 -0
  209. package/dist/components/smart-select/triggers/basic-trigger.d.ts +1 -0
  210. package/dist/components/smart-select/triggers/basic-trigger.js +18 -0
  211. package/dist/components/smart-select/triggers/combo-trigger.d.ts +1 -0
  212. package/dist/components/smart-select/triggers/combo-trigger.js +17 -0
  213. package/dist/components/smart-select/triggers/is-selectable-option.d.ts +1 -0
  214. package/dist/components/smart-select/triggers/is-selectable-option.js +3 -0
  215. package/dist/components/smart-select/triggers/multi-combo-trigger.d.ts +11 -0
  216. package/dist/components/smart-select/triggers/multi-combo-trigger.js +38 -0
  217. package/dist/components/smart-select/triggers/multi-trigger.d.ts +6 -0
  218. package/dist/components/smart-select/triggers/multi-trigger.js +8 -0
  219. package/dist/components/smart-select/triggers/use-combo-controls.d.ts +9 -0
  220. package/dist/components/smart-select/triggers/use-combo-controls.js +145 -0
  221. package/dist/components/smart-select/triggers/use-trigger-controls.d.ts +5 -0
  222. package/dist/components/smart-select/triggers/use-trigger-controls.js +126 -0
  223. package/dist/components/smart-select/type.d.ts +44 -0
  224. package/dist/components/smart-select/type.js +1 -0
  225. package/dist/components/smart-select/use-async-options.d.ts +8 -0
  226. package/dist/components/smart-select/use-async-options.js +42 -0
  227. package/dist/components/tree-view/index.d.ts +4 -0
  228. package/dist/components/tree-view/index.js +2 -0
  229. package/dist/components/tree-view/root.d.ts +37 -0
  230. package/dist/components/tree-view/root.js +139 -0
  231. package/dist/components/tree-view/select-all.d.ts +7 -0
  232. package/dist/components/tree-view/select-all.js +22 -0
  233. package/dist/components/tree-view/tree-children.d.ts +2 -0
  234. package/dist/components/tree-view/tree-children.js +15 -0
  235. package/dist/components/tree-view/types.d.ts +31 -0
  236. package/dist/components/tree-view/types.js +1 -0
  237. package/dist/components/types.d.ts +4 -0
  238. package/dist/components/types.js +1 -0
  239. package/dist/components/virtual-from-coordinates.d.ts +2 -0
  240. package/dist/components/virtual-from-coordinates.js +15 -0
  241. package/dist/components.d.ts +16 -0
  242. package/dist/components.js +11 -0
  243. package/dist/data-source-client/hooks/get-valid-leafs.d.ts +3 -0
  244. package/dist/data-source-client/hooks/get-valid-leafs.js +11 -0
  245. package/dist/data-source-client/hooks/use-controlled-ds-state.d.ts +13 -0
  246. package/dist/data-source-client/hooks/use-controlled-ds-state.js +39 -0
  247. package/dist/data-source-client/hooks/use-flattened-data.d.ts +18 -0
  248. package/dist/data-source-client/hooks/use-flattened-data.js +40 -0
  249. package/dist/data-source-client/hooks/use-flattened-groups.d.ts +5 -0
  250. package/dist/data-source-client/hooks/use-flattened-groups.js +63 -0
  251. package/dist/data-source-client/hooks/use-flattened-piece.d.ts +14 -0
  252. package/dist/data-source-client/hooks/use-flattened-piece.js +55 -0
  253. package/dist/data-source-client/hooks/use-group-tree/collapse-child.d.ts +2 -0
  254. package/dist/data-source-client/hooks/use-group-tree/collapse-child.js +11 -0
  255. package/dist/data-source-client/hooks/use-group-tree/collapse-last.d.ts +2 -0
  256. package/dist/data-source-client/hooks/use-group-tree/collapse-last.js +14 -0
  257. package/dist/data-source-client/hooks/use-group-tree/collapse.d.ts +2 -0
  258. package/dist/data-source-client/hooks/use-group-tree/collapse.js +17 -0
  259. package/dist/data-source-client/hooks/use-group-tree/use-group-tree.d.ts +31 -0
  260. package/dist/data-source-client/hooks/use-group-tree/use-group-tree.js +152 -0
  261. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/apply-reference-column.d.ts +2 -0
  262. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/apply-reference-column.js +22 -0
  263. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/evaluate-label-filter.d.ts +2 -0
  264. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/evaluate-label-filter.js +9 -0
  265. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/pivot-paths-with-totals.d.ts +18 -0
  266. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/pivot-paths-with-totals.js +140 -0
  267. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/pivot-paths.d.ts +4 -0
  268. package/dist/data-source-client/hooks/use-pivot/auxiliary-functions/pivot-paths.js +31 -0
  269. package/dist/data-source-client/hooks/use-pivot/use-agg-model.d.ts +4 -0
  270. package/dist/data-source-client/hooks/use-pivot/use-agg-model.js +45 -0
  271. package/dist/data-source-client/hooks/use-pivot/use-filtered-data.d.ts +2 -0
  272. package/dist/data-source-client/hooks/use-pivot/use-filtered-data.js +18 -0
  273. package/dist/data-source-client/hooks/use-pivot/use-pivot-columns.d.ts +14 -0
  274. package/dist/data-source-client/hooks/use-pivot/use-pivot-columns.js +151 -0
  275. package/dist/data-source-client/hooks/use-pivot/use-pivot-data.d.ts +32 -0
  276. package/dist/data-source-client/hooks/use-pivot/use-pivot-data.js +83 -0
  277. package/dist/data-source-client/hooks/use-pivot/use-pivot-group-fn.d.ts +4 -0
  278. package/dist/data-source-client/hooks/use-pivot/use-pivot-group-fn.js +23 -0
  279. package/dist/data-source-client/hooks/use-pivot/use-pivot-state.d.ts +16 -0
  280. package/dist/data-source-client/hooks/use-pivot/use-pivot-state.js +40 -0
  281. package/dist/data-source-client/use-client-data-source.d.ts +91 -0
  282. package/dist/data-source-client/use-client-data-source.js +169 -0
  283. package/dist/data-source-server/async-tree/+constants.async-tree.d.ts +1 -0
  284. package/dist/data-source-server/async-tree/+constants.async-tree.js +1 -0
  285. package/dist/data-source-server/async-tree/apply-delete-action-to-tree.d.ts +2 -0
  286. package/dist/data-source-server/async-tree/apply-delete-action-to-tree.js +27 -0
  287. package/dist/data-source-server/async-tree/apply-set-action-to-tree.d.ts +2 -0
  288. package/dist/data-source-server/async-tree/apply-set-action-to-tree.js +26 -0
  289. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-are-unique.d.ts +2 -0
  290. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-are-unique.js +20 -0
  291. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-are-valid.d.ts +2 -0
  292. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-are-valid.js +12 -0
  293. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-fit.d.ts +2 -0
  294. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-keys-fit.js +18 -0
  295. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-kinds.d.ts +2 -0
  296. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action-item-kinds.js +12 -0
  297. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action.d.ts +2 -0
  298. package/dist/data-source-server/async-tree/data-integrity-checks/check-set-action.js +24 -0
  299. package/dist/data-source-server/async-tree/get-parent-node-by-path.d.ts +2 -0
  300. package/dist/data-source-server/async-tree/get-parent-node-by-path.js +18 -0
  301. package/dist/data-source-server/async-tree/is-set-action-a-no-op-on-node.d.ts +2 -0
  302. package/dist/data-source-server/async-tree/is-set-action-a-no-op-on-node.js +3 -0
  303. package/dist/data-source-server/async-tree/make-async-tree.d.ts +2 -0
  304. package/dist/data-source-server/async-tree/make-async-tree.js +64 -0
  305. package/dist/data-source-server/async-tree/maybe-apply-parent-remove-self.d.ts +2 -0
  306. package/dist/data-source-server/async-tree/maybe-apply-parent-remove-self.js +8 -0
  307. package/dist/data-source-server/async-tree/maybe-apply-resize.d.ts +2 -0
  308. package/dist/data-source-server/async-tree/maybe-apply-resize.js +17 -0
  309. package/dist/data-source-server/async-tree/maybe-apply-set-action-items.d.ts +2 -0
  310. package/dist/data-source-server/async-tree/maybe-apply-set-action-items.js +54 -0
  311. package/dist/data-source-server/async-tree/types.d.ts +70 -0
  312. package/dist/data-source-server/async-tree/types.js +1 -0
  313. package/dist/data-source-server/range-tree/range-tree.d.ts +66 -0
  314. package/dist/data-source-server/range-tree/range-tree.js +102 -0
  315. package/dist/data-source-server/server-data.d.ts +73 -0
  316. package/dist/data-source-server/server-data.js +553 -0
  317. package/dist/data-source-server/source/use-on-rows-updated.d.ts +4 -0
  318. package/dist/data-source-server/source/use-on-rows-updated.js +29 -0
  319. package/dist/data-source-server/source/use-on-view-change.d.ts +3 -0
  320. package/dist/data-source-server/source/use-on-view-change.js +13 -0
  321. package/dist/data-source-server/source/use-row-add.d.ts +3 -0
  322. package/dist/data-source-server/source/use-row-add.js +36 -0
  323. package/dist/data-source-server/source/use-row-by-id.d.ts +2 -0
  324. package/dist/data-source-server/source/use-row-by-id.js +8 -0
  325. package/dist/data-source-server/source/use-row-by-index.d.ts +9 -0
  326. package/dist/data-source-server/source/use-row-by-index.js +89 -0
  327. package/dist/data-source-server/source/use-row-children.d.ts +2 -0
  328. package/dist/data-source-server/source/use-row-children.js +16 -0
  329. package/dist/data-source-server/source/use-row-delete.d.ts +3 -0
  330. package/dist/data-source-server/source/use-row-delete.js +39 -0
  331. package/dist/data-source-server/source/use-row-id-to-row-index.d.ts +2 -0
  332. package/dist/data-source-server/source/use-row-id-to-row-index.js +7 -0
  333. package/dist/data-source-server/source/use-row-index-to-row-id.d.ts +2 -0
  334. package/dist/data-source-server/source/use-row-index-to-row-id.js +7 -0
  335. package/dist/data-source-server/source/use-row-leafs.d.ts +2 -0
  336. package/dist/data-source-server/source/use-row-leafs.js +20 -0
  337. package/dist/data-source-server/source/use-row-parents.d.ts +2 -0
  338. package/dist/data-source-server/source/use-row-parents.js +16 -0
  339. package/dist/data-source-server/source/use-row-siblings.d.ts +2 -0
  340. package/dist/data-source-server/source/use-row-siblings.js +15 -0
  341. package/dist/data-source-server/source/use-rows-between.d.ts +2 -0
  342. package/dist/data-source-server/source/use-rows-between.js +20 -0
  343. package/dist/data-source-server/source/use-source-state.d.ts +28 -0
  344. package/dist/data-source-server/source/use-source-state.js +47 -0
  345. package/dist/data-source-server/source/use-source.d.ts +5 -0
  346. package/dist/data-source-server/source/use-source.js +66 -0
  347. package/dist/data-source-server/types.d.ts +42 -0
  348. package/dist/data-source-server/types.js +1 -0
  349. package/dist/data-source-server/use-server-data-source.d.ts +51 -0
  350. package/dist/data-source-server/use-server-data-source.js +192 -0
  351. package/dist/data-source-server/utils/get-node-depth.d.ts +2 -0
  352. package/dist/data-source-server/utils/get-node-depth.js +9 -0
  353. package/dist/data-source-server/utils/get-node-path.d.ts +2 -0
  354. package/dist/data-source-server/utils/get-node-path.js +9 -0
  355. package/dist/data-source-server/utils/get-request-id.d.ts +1 -0
  356. package/dist/data-source-server/utils/get-request-id.js +6 -0
  357. package/dist/data-source-tree/source/use-controlled-state.d.ts +8 -0
  358. package/dist/data-source-tree/source/use-controlled-state.js +21 -0
  359. package/dist/data-source-tree/source/use-flattened.d.ts +17 -0
  360. package/dist/data-source-tree/source/use-flattened.js +65 -0
  361. package/dist/data-source-tree/source/use-on-rows-updated.d.ts +3 -0
  362. package/dist/data-source-tree/source/use-on-rows-updated.js +49 -0
  363. package/dist/data-source-tree/source/use-row-by-id.d.ts +2 -0
  364. package/dist/data-source-tree/source/use-row-by-id.js +7 -0
  365. package/dist/data-source-tree/source/use-row-children.d.ts +2 -0
  366. package/dist/data-source-tree/source/use-row-children.js +11 -0
  367. package/dist/data-source-tree/source/use-row-leafs.d.ts +2 -0
  368. package/dist/data-source-tree/source/use-row-leafs.js +20 -0
  369. package/dist/data-source-tree/source/use-row-parents.d.ts +2 -0
  370. package/dist/data-source-tree/source/use-row-parents.js +16 -0
  371. package/dist/data-source-tree/source/use-row-siblings.d.ts +2 -0
  372. package/dist/data-source-tree/source/use-row-siblings.js +12 -0
  373. package/dist/data-source-tree/source/use-tree.d.ts +3 -0
  374. package/dist/data-source-tree/source/use-tree.js +59 -0
  375. package/dist/data-source-tree/types.d.ts +16 -0
  376. package/dist/data-source-tree/types.js +1 -0
  377. package/dist/data-source-tree/use-tree-data-source.d.ts +41 -0
  378. package/dist/data-source-tree/use-tree-data-source.js +101 -0
  379. package/dist/data-source-tree/utils/is-object.d.ts +1 -0
  380. package/dist/data-source-tree/utils/is-object.js +3 -0
  381. package/dist/hooks/use-slot/get-element-ref.d.ts +2 -0
  382. package/dist/hooks/use-slot/get-element-ref.js +20 -0
  383. package/dist/hooks/use-slot/index.d.ts +3 -0
  384. package/dist/hooks/use-slot/index.js +1 -0
  385. package/dist/hooks/use-slot/merge-props.d.ts +4 -0
  386. package/dist/hooks/use-slot/merge-props.js +27 -0
  387. package/dist/hooks/use-slot/react-version.d.ts +3 -0
  388. package/dist/hooks/use-slot/react-version.js +5 -0
  389. package/dist/hooks/use-slot/types.d.ts +4 -0
  390. package/dist/hooks/use-slot/types.js +1 -0
  391. package/dist/hooks/use-slot/use-slot.d.ts +12 -0
  392. package/dist/hooks/use-slot/use-slot.js +28 -0
  393. package/dist/hooks/use-transitioned-open.d.ts +2 -0
  394. package/dist/hooks/use-transitioned-open.js +50 -0
  395. package/dist/index.d.ts +121 -0
  396. package/dist/index.js +23 -0
  397. package/dist/license/index.d.ts +1 -0
  398. package/dist/license/index.js +1 -0
  399. package/dist/license/license.d.ts +3 -0
  400. package/dist/license/license.js +215 -0
  401. package/dist/license/md5-hash.d.ts +9 -0
  402. package/dist/license/md5-hash.js +167 -0
  403. package/dist/license.d.ts +3 -0
  404. package/dist/license.js +214 -0
  405. package/dist/root/context.d.ts +16 -0
  406. package/dist/root/context.js +4 -0
  407. package/dist/root/hooks/use-pro-api.d.ts +2 -0
  408. package/dist/root/hooks/use-pro-api.js +8 -0
  409. package/dist/root/root.d.ts +15 -0
  410. package/dist/root/root.js +112 -0
  411. package/dist/types/api.d.ts +100 -0
  412. package/dist/types/api.js +1 -0
  413. package/dist/types/column.d.ts +73 -0
  414. package/dist/types/column.js +1 -0
  415. package/dist/types/events.d.ts +56 -0
  416. package/dist/types/events.js +1 -0
  417. package/dist/types/grid.d.ts +47 -0
  418. package/dist/types/grid.js +1 -0
  419. package/dist/types/index.d.ts +7 -0
  420. package/dist/types/index.js +1 -0
  421. package/dist/types/props.d.ts +187 -0
  422. package/dist/types/props.js +1 -0
  423. package/package.json +5 -5
@@ -0,0 +1,32 @@
1
+ import type { GridSpec } from "../../../types";
2
+ import type { UseClientDataSourceParams } from "../../use-client-data-source";
3
+ import type { SourceState } from "../use-controlled-ds-state";
4
+ import { type RowLeaf } from "@1771technologies/lytenyte-shared";
5
+ import { type LeafNodeTuple } from "@1771technologies/lytenyte-core/internal";
6
+ import { type ControlledPivotState } from "./use-pivot-state.js";
7
+ export declare function usePivotData<Spec extends GridSpec>(props: UseClientDataSourceParams<Spec>, [, leafs, , pinMap]: LeafNodeTuple<Spec["data"]>, c: SourceState, controlled: ControlledPivotState): {
8
+ tree: import("../use-group-tree/use-group-tree.js").RootNode<Spec["data"]> | null;
9
+ maxDepth: number;
10
+ flatten: import("@1771technologies/lytenyte-shared").RowNode<any>[];
11
+ rowByIdRef: import("react").RefObject<Map<string, import("@1771technologies/lytenyte-shared").RowNode<any>>>;
12
+ rowByIndexRef: import("react").RefObject<Map<number, import("@1771technologies/lytenyte-shared").RowNode<any>>>;
13
+ rowIdToRowIndexRef: import("react").RefObject<Map<string, number>>;
14
+ leafIdsRef: import("react").RefObject<Map<string, RowLeaf<Spec["data"]>>>;
15
+ leafsTop: RowLeaf<any>[] | {
16
+ id: string;
17
+ data: Record<string, unknown>;
18
+ kind: "aggregated";
19
+ depth: number;
20
+ }[];
21
+ leafs: RowLeaf<Spec["data"]>[];
22
+ leafsBot: RowLeaf<any>[] | {
23
+ id: string;
24
+ data: Record<string, unknown>;
25
+ kind: "aggregated";
26
+ depth: number;
27
+ }[];
28
+ sorted: number[];
29
+ pivotPiece: import("@1771technologies/lytenyte-core").Piece<import("../../../types").Column<Spec>[] | null>;
30
+ pivotGroupPiece: import("@1771technologies/lytenyte-core").Piece<Record<string, boolean>>;
31
+ groupFn: import("@1771technologies/lytenyte-shared").GroupFn<Spec["data"]> | null;
32
+ };
@@ -0,0 +1,83 @@
1
+ import { useMemo, useRef } from "react";
2
+ import { useFilteredData } from "./use-filtered-data.js";
3
+ import { usePivotGroupFn } from "./use-pivot-group-fn.js";
4
+ import { useGroupTree } from "../use-group-tree/use-group-tree.js";
5
+ import {} from "@1771technologies/lytenyte-shared";
6
+ import { useFlattenedGroups } from "../use-flattened-groups.js";
7
+ import { useFlattenedPiece } from "../use-flattened-piece.js";
8
+ import { usePivotColumns } from "./use-pivot-columns.js";
9
+ import { usePivotAggFunction } from "./use-agg-model.js";
10
+ import { useFilterFn, usePiece, useSortFn, } from "@1771technologies/lytenyte-core/internal";
11
+ import {} from "./use-pivot-state.js";
12
+ const empty = [];
13
+ const groupIdFallback = (p) => p.map((x) => (x == null ? "_null_" : x)).join("->");
14
+ export function usePivotData(props, [, leafs, , pinMap], c, controlled) {
15
+ const model = props.pivotModel;
16
+ const pivotMode = props.pivotMode ?? false;
17
+ const sortFn = useSortFn(model?.sort);
18
+ const filterFn = useFilterFn(props.filter);
19
+ const filter = props.pivotApplyExistingFilter ? filterFn : null;
20
+ const filtered = useFilteredData(pivotMode, filter, leafs);
21
+ const groupFn = usePivotGroupFn(pivotMode, model);
22
+ const leafIds = useMemo(() => {
23
+ const centerMap = new Map(pinMap);
24
+ for (let i = 0; i < filtered.length; i++) {
25
+ const row = leafs[filtered[i]];
26
+ centerMap.set(row.id, row);
27
+ }
28
+ return centerMap;
29
+ }, [filtered, leafs, pinMap]);
30
+ const leafIdsRef = useRef(leafIds);
31
+ leafIdsRef.current = leafIds;
32
+ const measures = model?.measures;
33
+ const rows = model?.rows;
34
+ const pivotColumns = usePivotColumns(pivotMode, controlled, model, leafs, filtered, props.pivotColumnProcessor);
35
+ const aggFn = usePivotAggFunction(pivotColumns, model, props.aggregateFns);
36
+ const tree = useGroupTree(leafs, filtered, groupFn, props.groupIdFn ?? groupIdFallback, "no-collapse", model?.rowLabelFilter, model?.filter, aggFn);
37
+ const [groupFlat, maxDepth] = useFlattenedGroups(tree, aggFn, leafs, filtered, sortFn, c.pivotExpandedFn, true, true);
38
+ const grandTotalRow = props.pivotGrandTotals;
39
+ const grandTotal = useMemo(() => {
40
+ if (!grandTotalRow || !aggFn)
41
+ return empty;
42
+ const rows = filtered.map((x) => leafs[x]);
43
+ const agg = aggFn(rows);
44
+ return [{ id: "ln-pivot-grand-total", data: agg, kind: "aggregated", depth: 0 }];
45
+ }, [aggFn, filtered, grandTotalRow, leafs]);
46
+ const top = grandTotalRow === "top" ? grandTotal : empty;
47
+ const bot = grandTotalRow === "bottom" ? grandTotal : empty;
48
+ const { flatten, rowByIdRef, rowByIndexRef, rowIdToRowIndexRef } = useFlattenedPiece({
49
+ leafsTop: top,
50
+ leafsCenter: leafs,
51
+ leafsBot: bot,
52
+ groupFlat,
53
+ centerIndices: filtered,
54
+ });
55
+ const pivotPiece = usePiece(pivotColumns);
56
+ const pivotGroupPiece = usePiece(controlled.pivotGroupState);
57
+ const trueMaxDepth = useMemo(() => {
58
+ if (!model?.rows?.length)
59
+ return 0;
60
+ return maxDepth;
61
+ }, [maxDepth, model?.rows?.length]);
62
+ const finalFlat = useMemo(() => {
63
+ if (!measures?.length && !rows?.length)
64
+ return [];
65
+ return flatten;
66
+ }, [flatten, measures?.length, rows?.length]);
67
+ return {
68
+ tree,
69
+ maxDepth: trueMaxDepth,
70
+ flatten: finalFlat,
71
+ rowByIdRef,
72
+ rowByIndexRef,
73
+ rowIdToRowIndexRef,
74
+ leafIdsRef,
75
+ leafsTop: top,
76
+ leafs,
77
+ leafsBot: bot,
78
+ sorted: filtered,
79
+ pivotPiece,
80
+ pivotGroupPiece,
81
+ groupFn,
82
+ };
83
+ }
@@ -0,0 +1,4 @@
1
+ import type { GridSpec } from "../../../types/index.js";
2
+ import type { GroupFn } from "@1771technologies/lytenyte-shared";
3
+ import type { PivotModel } from "../../use-client-data-source.js";
4
+ export declare function usePivotGroupFn<Spec extends GridSpec>(pivotMode: boolean, model: PivotModel<Spec> | undefined): GroupFn<Spec["data"]> | null;
@@ -0,0 +1,23 @@
1
+ import { useMemo } from "react";
2
+ import { computeField } from "@1771technologies/lytenyte-core/internal";
3
+ export function usePivotGroupFn(pivotMode, model) {
4
+ const groupFn = useMemo(() => {
5
+ const pivotRows = model?.rows;
6
+ if (!pivotMode || !pivotRows?.length)
7
+ return () => [null];
8
+ const fn = (row) => {
9
+ const paths = [];
10
+ for (const c of pivotRows) {
11
+ const field = c.field ?? c.id;
12
+ const value = field ? computeField(field, row) : null;
13
+ if (value == null)
14
+ paths.push(null);
15
+ else
16
+ paths.push(String(value));
17
+ }
18
+ return paths;
19
+ };
20
+ return fn;
21
+ }, [model?.rows, pivotMode]);
22
+ return groupFn;
23
+ }
@@ -0,0 +1,16 @@
1
+ import type { PivotState } from "./use-pivot-columns";
2
+ export type ControlledPivotState = ReturnType<typeof usePivotState>;
3
+ export declare function usePivotState(state: PivotState | undefined, onPivotStateChange: undefined | ((p: PivotState) => void)): {
4
+ state: PivotState;
5
+ setState: (newValue: PivotState | ((prevValue: PivotState) => PivotState)) => void;
6
+ pivotColumnState: {
7
+ readonly ordering: string[];
8
+ readonly resizing: Record<string, number>;
9
+ readonly pinning: Record<string, import("@1771technologies/lytenyte-shared").ColumnPin>;
10
+ };
11
+ onPivotColumnStateChange: (change: PivotState["columnState"]) => void;
12
+ pivotGroupState: Record<string, boolean>;
13
+ onPivotGroupStateChange: (change: PivotState["columnGroupState"]) => void;
14
+ pivotRowGroupExpansions: Record<string, boolean | undefined>;
15
+ onPivotRowGroupChange: (change: PivotState["rowGroupExpansions"]) => void;
16
+ };
@@ -0,0 +1,40 @@
1
+ import { useControlled, useEvent } from "@1771technologies/lytenyte-core/internal";
2
+ import { useMemo } from "react";
3
+ export function usePivotState(state, onPivotStateChange) {
4
+ const [pivotState, setPivotState] = useControlled({
5
+ controlled: state,
6
+ default: {
7
+ columnState: { ordering: [], pinning: {}, resizing: {} },
8
+ columnGroupState: {},
9
+ rowGroupExpansions: {},
10
+ },
11
+ });
12
+ const pivotColumnState = useMemo(() => pivotState.columnState, [pivotState.columnState]);
13
+ const onPivotColumnStateChange = useEvent((change) => {
14
+ const next = { ...pivotState, columnState: change };
15
+ setPivotState(next);
16
+ onPivotStateChange?.(next);
17
+ });
18
+ const pivotGroupState = useMemo(() => pivotState.columnGroupState, [pivotState.columnGroupState]);
19
+ const onPivotGroupStateChange = useEvent((change) => {
20
+ const next = { ...pivotState, pivotGroupState: change };
21
+ setPivotState(next);
22
+ onPivotStateChange?.(next);
23
+ });
24
+ const pivotRowGroupExpansions = useMemo(() => pivotState.rowGroupExpansions, [pivotState.rowGroupExpansions]);
25
+ const onPivotRowGroupChange = useEvent((change) => {
26
+ const next = { ...pivotState, rowGroupExpansions: change };
27
+ setPivotState(next);
28
+ onPivotStateChange?.(next);
29
+ });
30
+ return {
31
+ state: pivotState,
32
+ setState: setPivotState,
33
+ pivotColumnState,
34
+ onPivotColumnStateChange,
35
+ pivotGroupState,
36
+ onPivotGroupStateChange,
37
+ pivotRowGroupExpansions,
38
+ onPivotRowGroupChange,
39
+ };
40
+ }
@@ -0,0 +1,91 @@
1
+ import type { AggregationFn, Aggregator, Dimension, DimensionAgg, DimensionSort, FilterFn, GroupFn, GroupIdFn, LeafIdFn, RowGroup, RowLeaf, RowNode, RowSelectionState, RowSource, SortFn } from "@1771technologies/lytenyte-shared";
2
+ import type { Column, Field } from "../types/column.js";
3
+ import type { GridSpec } from "../types/grid.js";
4
+ import type { PivotState } from "./hooks/use-pivot/use-pivot-columns.js";
5
+ import type { Props } from "../types/props.js";
6
+ export type PivotField<Spec extends GridSpec = GridSpec> = {
7
+ field?: Field<Spec["data"]>;
8
+ };
9
+ export type HavingFilterFn = (node: RowGroup) => boolean;
10
+ export interface RowSourceClient<Spec extends GridSpec = GridSpec> extends RowSource<Spec["data"]> {
11
+ readonly usePivotProps: () => {
12
+ readonly columns?: Column<Spec>[];
13
+ readonly onColumnsChange: Props<Spec>["onColumnsChange"];
14
+ readonly columnGroupExpansions: Props<Spec>["columnGroupExpansions"];
15
+ readonly onColumnGroupExpansionChange: Props<Spec>["onColumnGroupExpansionChange"];
16
+ };
17
+ readonly rowUpdate: (rows: Map<RowNode<Spec["data"]>, Spec["data"]>) => void;
18
+ readonly rowDelete: (rows: RowNode<Spec["data"]>[]) => void;
19
+ readonly rowAdd: (rows: Spec["data"][], placement?: "start" | "end" | number) => void;
20
+ }
21
+ export type LabelFilter = (s: string | null) => boolean;
22
+ export interface PivotModel<Spec extends GridSpec = GridSpec> {
23
+ readonly columns?: (Column<Spec> | PivotField<Spec>)[];
24
+ readonly rows?: (Column<Spec> | PivotField<Spec>)[];
25
+ readonly measures?: {
26
+ dim: Column<Spec>;
27
+ fn: Aggregator<Spec["data"]> | string;
28
+ }[];
29
+ readonly sort?: SortFn<Spec["data"]> | DimensionSort<Spec["data"]>[] | null;
30
+ readonly filter?: (HavingFilterFn | null)[];
31
+ readonly rowLabelFilter?: (LabelFilter | null)[];
32
+ readonly colLabelFilter?: (LabelFilter | null)[];
33
+ }
34
+ export interface UseClientDataSourceParams<Spec extends GridSpec = GridSpec, T = Spec["data"]> {
35
+ readonly data: T[];
36
+ readonly topData?: T[];
37
+ readonly botData?: T[];
38
+ readonly pivotMode?: boolean;
39
+ readonly pivotModel?: PivotModel<Spec>;
40
+ readonly pivotGrandTotals?: "top" | "bottom" | null;
41
+ readonly pivotColumnProcessor?: (columns: Column<Spec>[]) => Column<Spec>[];
42
+ readonly pivotState?: PivotState;
43
+ readonly onPivotStateChange?: (p: PivotState) => void;
44
+ readonly pivotApplyExistingFilter?: boolean;
45
+ readonly rowGroupExpansions?: {
46
+ [rowId: string]: boolean | undefined;
47
+ };
48
+ readonly rowGroupDefaultExpansion?: boolean | number;
49
+ readonly rowGroupCollapseBehavior?: "no-collapse" | "last-only" | "full-tree";
50
+ readonly rowGroupSuppressLeafExpansion?: boolean;
51
+ readonly onRowGroupExpansionChange?: (state: Record<string, boolean | undefined>) => void;
52
+ readonly sort?: SortFn<T> | DimensionSort<T>[] | null;
53
+ readonly group?: GroupFn<T> | Dimension<T>[];
54
+ readonly filter?: FilterFn<T> | FilterFn<T>[] | null;
55
+ readonly aggregate?: AggregationFn<T> | DimensionAgg<T>[];
56
+ readonly aggregateFns?: Record<string, Aggregator<T>>;
57
+ readonly having?: (HavingFilterFn | null)[] | null;
58
+ readonly labelFilter?: (LabelFilter | null)[] | null;
59
+ readonly leafIdFn?: LeafIdFn<T>;
60
+ readonly groupIdFn?: GroupIdFn;
61
+ readonly rowsIsolatedSelection?: boolean;
62
+ readonly rowSelectKey?: unknown[];
63
+ readonly rowSelection?: RowSelectionState;
64
+ readonly rowSelectionIdUniverseAdditions?: {
65
+ readonly id: string;
66
+ readonly root: boolean;
67
+ }[];
68
+ readonly rowSelectionIdUniverseSubtractions?: Set<string>;
69
+ readonly onRowSelectionChange?: (state: RowSelectionState) => void;
70
+ readonly onRowsAdded?: (params: {
71
+ newData: T[];
72
+ placement: "start" | "end" | number;
73
+ top: T[];
74
+ center: T[];
75
+ bottom: T[];
76
+ }) => void;
77
+ readonly onRowsDeleted?: (params: {
78
+ rows: RowLeaf<T>[];
79
+ sourceIndices: number[];
80
+ top: T[];
81
+ center: T[];
82
+ bottom: T[];
83
+ }) => void;
84
+ readonly onRowDataChange?: (params: {
85
+ readonly rows: Map<RowNode<T>, T>;
86
+ readonly top: Map<number, T>;
87
+ readonly bottom: Map<number, T>;
88
+ readonly center: Map<number, T>;
89
+ }) => void;
90
+ }
91
+ export declare function useClientDataSource<Spec extends GridSpec = GridSpec>(props: UseClientDataSourceParams<Spec>): RowSourceClient<Spec>;
@@ -0,0 +1,169 @@
1
+ import { useMemo } from "react";
2
+ import { useSourceState } from "./hooks/use-controlled-ds-state.js";
3
+ import { useEvent, useGlobalRefresh, useIdUniverse, useLeafNodes, useOnRowsSelected, useOnRowsUpdated, usePiece, useRowAdd, useRowById, useRowByIndex, useRowChildren, useRowDelete, useRowIsSelected, useRowLeafs, useRowParents, useRows, useRowsBetween, useRowSelection, useRowSelectionState, useRowSelectSplitLookup, useRowSiblings, } from "@1771technologies/lytenyte-core/internal";
4
+ import { useFlattenedData } from "./hooks/use-flattened-data.js";
5
+ import { usePivotData } from "./hooks/use-pivot/use-pivot-data.js";
6
+ import { usePivotState } from "./hooks/use-pivot/use-pivot-state.js";
7
+ const groupIdFallback = (p) => p.map((x) => (x == null ? "_null_" : x)).join("->");
8
+ export function useClientDataSource(props) {
9
+ const leafsTuple = useLeafNodes(props.topData, props.data, props.botData, props.leafIdFn);
10
+ const pivotControlled = usePivotState(props.pivotState, props.onPivotStateChange);
11
+ // s == state, f == flat, p == pivot
12
+ const s = useSourceState(props, pivotControlled);
13
+ const d = useFlattenedData(props, leafsTuple, s);
14
+ const p = usePivotData(props, leafsTuple, s, pivotControlled);
15
+ const f = props.pivotMode ? p : d;
16
+ const mode = props?.pivotMode === true;
17
+ const piece = usePiece(mode ? p.flatten : d.flatten);
18
+ const botPiece = usePiece(f.leafsBot.length);
19
+ const topPiece = usePiece(f.leafsTop.length);
20
+ const depth = props.group
21
+ ? Array.isArray(props.group)
22
+ ? props.group.length
23
+ : d.maxDepth
24
+ : props.pivotMode && props.pivotModel?.rows?.length
25
+ ? p.maxDepth
26
+ : 0;
27
+ const maxDepthPiece = usePiece(depth);
28
+ const rowById = useRowById(f.tree, f.leafIdsRef);
29
+ const rowParents = useRowParents(rowById, f.tree, f.groupFn, props.groupIdFn ?? groupIdFallback);
30
+ const onRowsUpdated = useOnRowsUpdated(props.onRowDataChange);
31
+ const globalSignal = useGlobalRefresh();
32
+ const idToSpec = useEvent((id) => {
33
+ if (!f.tree)
34
+ return null;
35
+ const node = f.tree.groupLookup.get(id);
36
+ if (!node)
37
+ return null;
38
+ return { size: node.children.size, children: node.children };
39
+ });
40
+ const rowSelectionKey = useMemo(() => {
41
+ if (props.rowSelectKey)
42
+ return props.rowSelectKey;
43
+ return [props.group, props.filter];
44
+ }, [props.filter, props.group, props.rowSelectKey]);
45
+ const { idUniverse, rootIds } = useIdUniverse(f.tree, f.leafIdsRef.current, props.rowSelectionIdUniverseAdditions, props.rowSelectionIdUniverseSubtractions);
46
+ const selectionState = useRowSelection(props.rowSelection, props.onRowSelectionChange, props.rowsIsolatedSelection ?? false, rowSelectionKey, idUniverse, rootIds, rootIds.size, globalSignal);
47
+ const onRowsSelected = useOnRowsSelected(selectionState, idToSpec, rowParents, props.rowsIsolatedSelection ?? false, globalSignal);
48
+ const rowIsSelected = useRowIsSelected(selectionState, rowParents, rowById);
49
+ const rowsSelected = useRowSelectSplitLookup(selectionState, f.leafIdsRef.current, f.tree?.groupLookup, rowParents);
50
+ const rowSelectionState = useRowSelectionState(selectionState);
51
+ const { rowInvalidate, rowByIndex } = useRowByIndex(piece, globalSignal, selectionState, rowParents);
52
+ const rowsBetween = useRowsBetween(f.rowIdToRowIndexRef, rowByIndex);
53
+ const rowLeafs = useRowLeafs(f.tree);
54
+ const rowChildren = useRowChildren(f.tree);
55
+ const setExpansions = s.onExpansionsChange;
56
+ const setPivotState = pivotControlled.onPivotColumnStateChange;
57
+ const setPivotGroupState = pivotControlled.onPivotGroupStateChange;
58
+ const setPivotRowGroupExpansions = s.onPivotExpansionsChange;
59
+ const mode$ = usePiece(mode);
60
+ const flat = piece.get();
61
+ const rowAdd = useRowAdd(props);
62
+ const rowDelete = useRowDelete(props, rowById);
63
+ const rows$ = useRows(flat);
64
+ const rowSiblings = useRowSiblings(f.tree);
65
+ const selection$ = usePiece(selectionState.rowSelectionsRaw);
66
+ const source = useMemo(() => {
67
+ const rowCount$ = (x) => x.length;
68
+ const source = {
69
+ rowInvalidate,
70
+ rowByIndex,
71
+ rowIndexToRowId: (index) => f.rowByIndexRef.current.get(index)?.id ?? null,
72
+ rowIdToRowIndex: (id) => f.rowIdToRowIndexRef.current.get(id) ?? null,
73
+ rowById,
74
+ rowsBetween,
75
+ rowChildren,
76
+ rowLeafs,
77
+ rowIsSelected,
78
+ rowsSelected,
79
+ rowParents,
80
+ rowSelectionState,
81
+ rowAdd,
82
+ rowDelete,
83
+ rowUpdate: onRowsUpdated,
84
+ rowSiblings,
85
+ useBottomCount: botPiece.useValue,
86
+ useTopCount: topPiece.useValue,
87
+ useRowCount: () => piece.useValue(rowCount$),
88
+ useRows: () => rows$.useValue(),
89
+ useSelectionState: selection$.useValue,
90
+ useMaxRowGroupDepth: maxDepthPiece.useValue,
91
+ rowGroupExpansionChange: (deltaChanges) => {
92
+ if (mode$.get())
93
+ setPivotRowGroupExpansions(deltaChanges);
94
+ else
95
+ setExpansions(deltaChanges);
96
+ },
97
+ onRowsSelected,
98
+ onRowsUpdated,
99
+ onViewChange: () => { },
100
+ usePivotProps: () => {
101
+ const pivotColumns = p.pivotPiece.useValue();
102
+ const pivotGroups = p.pivotGroupPiece.useValue();
103
+ const mode = mode$.useValue();
104
+ return useMemo(() => {
105
+ if (!mode)
106
+ return {};
107
+ const object = {};
108
+ if (pivotColumns)
109
+ object.columns = pivotColumns;
110
+ if (pivotColumns)
111
+ object.columnGroupExpansions = pivotGroups.value;
112
+ const onColChange = (columns) => {
113
+ const ordering = columns.map((x) => x.id);
114
+ const resizingEntries = columns
115
+ .map((x) => (x.width == null ? null : [x.id, x.width]))
116
+ .filter(Boolean);
117
+ const pinnedEntries = columns
118
+ .map((x) => (x.pin === undefined ? null : [x.id, x.pin]))
119
+ .filter(Boolean);
120
+ setPivotState({
121
+ ordering,
122
+ resizing: Object.fromEntries(resizingEntries),
123
+ pinning: Object.fromEntries(pinnedEntries),
124
+ });
125
+ };
126
+ const onColumnGroup = (change) => {
127
+ setPivotGroupState(change);
128
+ };
129
+ object.onColumnsChange = onColChange;
130
+ object.onColumnGroupExpansionChange = onColumnGroup;
131
+ return object;
132
+ }, [mode, pivotColumns, pivotGroups.value]);
133
+ },
134
+ };
135
+ return source;
136
+ }, [
137
+ rowInvalidate,
138
+ rowByIndex,
139
+ rowById,
140
+ rowsBetween,
141
+ rowChildren,
142
+ rowLeafs,
143
+ rowIsSelected,
144
+ rowsSelected,
145
+ rowParents,
146
+ rowSelectionState,
147
+ rowAdd,
148
+ rowDelete,
149
+ onRowsUpdated,
150
+ rowSiblings,
151
+ botPiece.useValue,
152
+ topPiece.useValue,
153
+ selection$.useValue,
154
+ maxDepthPiece.useValue,
155
+ onRowsSelected,
156
+ f.rowByIndexRef,
157
+ f.rowIdToRowIndexRef,
158
+ piece,
159
+ rows$,
160
+ mode$,
161
+ setPivotRowGroupExpansions,
162
+ setExpansions,
163
+ p.pivotPiece,
164
+ p.pivotGroupPiece,
165
+ setPivotState,
166
+ setPivotGroupState,
167
+ ]);
168
+ return source;
169
+ }
@@ -0,0 +1 @@
1
+ export declare const ROOT_LEAF_PREFIX = "__|#-Root-#|__";
@@ -0,0 +1 @@
1
+ export const ROOT_LEAF_PREFIX = "__|#-Root-#|__";
@@ -0,0 +1,2 @@
1
+ import type { DeleteDataAction, TreeRoot } from "./types";
2
+ export declare function applyDeleteActionToTree(p: DeleteDataAction, tree: TreeRoot): void;
@@ -0,0 +1,27 @@
1
+ import { getParentNodeByPath } from "./get-parent-node-by-path.js";
2
+ export function applyDeleteActionToTree(p, tree) {
3
+ // No op. We aren't deleting keys or indices
4
+ if (!p.relIndices?.length && !p.paths?.length)
5
+ return;
6
+ const parentNode = getParentNodeByPath(tree, p.path);
7
+ if (!parentNode)
8
+ return;
9
+ if (p.relIndices) {
10
+ for (const rel of p.relIndices) {
11
+ const node = parentNode.byIndex.get(rel);
12
+ if (!node)
13
+ continue;
14
+ parentNode.byPath.delete(node.path);
15
+ parentNode.byIndex.delete(rel);
16
+ }
17
+ }
18
+ if (p.paths) {
19
+ for (const path of p.paths) {
20
+ const node = parentNode.byPath.get(path);
21
+ if (!node)
22
+ continue;
23
+ parentNode.byPath.delete(node.path);
24
+ parentNode.byIndex.delete(node.relIndex);
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction, TreeRoot } from "./types.js";
2
+ export declare function applySetActionToTree(p: SetDataAction, root: TreeRoot): boolean;
@@ -0,0 +1,26 @@
1
+ import { maybeApplyParentRemoveSelf } from "./maybe-apply-parent-remove-self.js";
2
+ import { getParentNodeByPath } from "./get-parent-node-by-path.js";
3
+ import { isSetActionANoOpOnNode } from "./is-set-action-a-no-op-on-node.js";
4
+ import { maybeApplyResize } from "./maybe-apply-resize.js";
5
+ import { maybeApplySetActionItems } from "./maybe-apply-set-action-items.js";
6
+ import { checkSetAction } from "./data-integrity-checks/check-set-action.js";
7
+ export function applySetActionToTree(p, root) {
8
+ // If we are not adding items and we are not resizing a node, then we just
9
+ // return our previous data and skip the update. This is effectively a no-op.
10
+ if (!p.items?.length && p.size == null)
11
+ return false;
12
+ // We need to find the parent that we are adding data to. Its possible the path is invalid.
13
+ // If we encounter an invalid path we return early without change. An invalid path is a
14
+ // path that does not exist or where there is a leaf node at some point in the path.
15
+ const pathNode = getParentNodeByPath(root, p.path);
16
+ if (!pathNode)
17
+ return false;
18
+ checkSetAction(p, pathNode);
19
+ if (isSetActionANoOpOnNode(p, pathNode))
20
+ return false;
21
+ maybeApplyResize(pathNode, p.size, p.asOf ?? Date.now());
22
+ if (maybeApplyParentRemoveSelf(pathNode))
23
+ return true;
24
+ maybeApplySetActionItems(p, pathNode, root);
25
+ return true;
26
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction } from "../types.js";
2
+ export declare function checkSetActionItemKeysAreUnique(p: SetDataAction): boolean;
@@ -0,0 +1,20 @@
1
+ import { ROOT_LEAF_PREFIX } from "../+constants.async-tree.js";
2
+ export function checkSetActionItemKeysAreUnique(p) {
3
+ const seenKeys = new Set();
4
+ const seenPaths = new Set();
5
+ if (!p.items?.length)
6
+ return true;
7
+ for (let i = p.items.length - 1; i >= 0; i--) {
8
+ const item = p.items[i];
9
+ if (seenKeys.has(item.relIndex)) {
10
+ return false;
11
+ }
12
+ const pathId = item.kind === "leaf" ? `${p.path.at(-1) ?? ROOT_LEAF_PREFIX}#${item.relIndex}` : item.path;
13
+ if (seenPaths.has(pathId)) {
14
+ return false;
15
+ }
16
+ seenPaths.add(pathId);
17
+ seenKeys.add(item.relIndex);
18
+ }
19
+ return true;
20
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction } from "../types.js";
2
+ export declare function checkSetActionItemKeysAreValid(p: SetDataAction): boolean;
@@ -0,0 +1,12 @@
1
+ export function checkSetActionItemKeysAreValid(p) {
2
+ if (!p.items?.length)
3
+ return true;
4
+ const items = p.items;
5
+ for (let i = items.length - 1; i >= 0; i--) {
6
+ const x = items[i];
7
+ if (typeof x.relIndex !== "number" || x.relIndex < 0 || Math.floor(x.relIndex) !== x.relIndex) {
8
+ return false;
9
+ }
10
+ }
11
+ return true;
12
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction, TreeParent, TreeRoot } from "../types.js";
2
+ export declare function checkSetActionItemKeysFit(p: SetDataAction, pathNode: TreeParent | TreeRoot): boolean;
@@ -0,0 +1,18 @@
1
+ const invalidItemKeySize = "Invalid set action items, 'relIndex' must be less than parent size";
2
+ export function checkSetActionItemKeysFit(p, pathNode) {
3
+ // If we are not adding any items, then the items definitely fit - since 0 fits in 0.
4
+ if (!p.items?.length)
5
+ return true;
6
+ // Grab the node size. The action may be updating the size, so we check for that first, otherwise
7
+ // we check if the current size.
8
+ const size = p.size ?? pathNode.size;
9
+ // We check the relative item indices. They should be within the size.
10
+ for (let i = p.items.length - 1; i >= 0; i--) {
11
+ const x = p.items[i];
12
+ if (x.relIndex >= size) {
13
+ console.error(invalidItemKeySize, p, pathNode);
14
+ return false;
15
+ }
16
+ }
17
+ return true;
18
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction } from "../types.js";
2
+ export declare function checkSetActionItemKinds(p: SetDataAction): boolean;
@@ -0,0 +1,12 @@
1
+ export function checkSetActionItemKinds(p) {
2
+ if (!p.items?.length)
3
+ return true;
4
+ const items = p.items;
5
+ for (let i = items.length - 1; i >= 0; i--) {
6
+ const x = items[i];
7
+ if (x.kind !== "leaf" && x.kind !== "parent") {
8
+ return false;
9
+ }
10
+ }
11
+ return true;
12
+ }
@@ -0,0 +1,2 @@
1
+ import type { SetDataAction, TreeParent, TreeRoot } from "../types";
2
+ export declare function checkSetAction(p: SetDataAction, pathNode: TreeRoot | TreeParent): void;
@@ -0,0 +1,24 @@
1
+ import { checkSetActionItemKeysAreUnique } from "./check-set-action-item-keys-are-unique.js";
2
+ import { checkSetActionItemKeysAreValid } from "./check-set-action-item-keys-are-valid.js";
3
+ import { checkSetActionItemKeysFit } from "./check-set-action-item-keys-fit.js";
4
+ import { checkSetActionItemKinds } from "./check-set-action-item-kinds.js";
5
+ export function checkSetAction(p, pathNode) {
6
+ // We need to make sure that the items being added will fit path nodes specification.
7
+ if (!checkSetActionItemKeysFit(p, pathNode)) {
8
+ console.error("Invalid data dispatch", p);
9
+ throw new Error(`Server data payload error occurred. The node at at ${p.path} has a size of ${pathNode.size} but data payload would exceed this size.`);
10
+ }
11
+ // We need to ensure the kind of the data in the dispatch is valid.
12
+ if (!checkSetActionItemKinds(p)) {
13
+ console.error("Invalid data dispatch", p);
14
+ throw new Error(`Server data payload error occurred. The payload has invalid data kinds. Each item must have kind "leaf" or "parent".`);
15
+ }
16
+ if (!checkSetActionItemKeysAreValid(p)) {
17
+ console.error("Invalid data dispatch", p);
18
+ throw new Error(`Server data payload error occurred. The payload has invalid relIndex values.`);
19
+ }
20
+ if (!checkSetActionItemKeysAreUnique(p)) {
21
+ console.error("Invalid data dispatch", p);
22
+ throw new Error(`Server data payload error occurred. The payload has duplicated key items or paths.`);
23
+ }
24
+ }
@@ -0,0 +1,2 @@
1
+ import type { TreeParent, TreeRoot } from "./types.js";
2
+ export declare function getParentNodeByPath(tree: TreeRoot, path: (string | null)[]): TreeParent | TreeRoot | null;