@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,553 @@
1
+ import { equal, } from "@1771technologies/lytenyte-shared";
2
+ import { makeAsyncTree } from "./async-tree/make-async-tree.js";
3
+ import { RangeTree } from "./range-tree/range-tree.js";
4
+ import { getRequestId } from "./utils/get-request-id.js";
5
+ import { getNodePath } from "./utils/get-node-path.js";
6
+ import { getNodeDepth } from "./utils/get-node-depth.js";
7
+ const noopFetcher = async () => [];
8
+ export class ServerData {
9
+ #top = { asOf: 0, rows: [] };
10
+ #bottom = { asOf: 0, rows: [] };
11
+ #blocksize;
12
+ tree;
13
+ flat;
14
+ #dataFetcher = noopFetcher;
15
+ #expansions;
16
+ #onResetLoadBegin;
17
+ #onResetLoadError;
18
+ #onResetLoadEnd;
19
+ #onFlatten;
20
+ #onInvalidate;
21
+ #rowViewBounds = [0, 0];
22
+ #seenRequests = new Set();
23
+ #loadingRows = new Set();
24
+ #loadingGroup = new Set();
25
+ #rowsWithError = new Map();
26
+ #rowsWithGroupError = new Map();
27
+ #controllers = new Set();
28
+ #defaultExpansion;
29
+ constructor({ blocksize, expansions, onResetLoadBegin, onResetLoadEnd, onResetLoadError, onFlatten, onInvalidate, defaultExpansion, }) {
30
+ this.tree = makeAsyncTree();
31
+ this.#blocksize = blocksize;
32
+ this.#expansions = expansions;
33
+ this.#defaultExpansion = defaultExpansion;
34
+ this.#onResetLoadBegin = onResetLoadBegin;
35
+ this.#onResetLoadEnd = onResetLoadEnd;
36
+ this.#onResetLoadError = onResetLoadError;
37
+ this.#onFlatten = onFlatten;
38
+ this.#onInvalidate = onInvalidate;
39
+ }
40
+ // Properties
41
+ set dataFetcher(d) {
42
+ if (this.#dataFetcher === d)
43
+ return;
44
+ this.#dataFetcher = d;
45
+ this.reset();
46
+ }
47
+ set expansions(d) {
48
+ this.#expansions = d;
49
+ this.#flatten();
50
+ }
51
+ set defaultExpansion(d) {
52
+ this.#defaultExpansion = d;
53
+ }
54
+ set rowViewBounds(viewBounds) {
55
+ if (equal(viewBounds, this.#rowViewBounds))
56
+ return;
57
+ this.#rowViewBounds = viewBounds;
58
+ this.handleViewBoundsChange();
59
+ }
60
+ // Methods
61
+ reset = async () => {
62
+ // Abort all the existing requests in flight.
63
+ this.#controllers.forEach((c) => c.abort());
64
+ this.tree = makeAsyncTree();
65
+ this.#flatten();
66
+ this.#rowsWithError.clear();
67
+ this.#rowsWithGroupError.clear();
68
+ this.#loadingRows.clear();
69
+ this.#loadingGroup.clear();
70
+ try {
71
+ this.#onResetLoadBegin();
72
+ this.#seenRequests.clear();
73
+ const req = {
74
+ rowStartIndex: 0,
75
+ rowEndIndex: this.#blocksize,
76
+ id: getRequestId([], 0, this.#blocksize),
77
+ path: [],
78
+ start: 0,
79
+ end: this.#blocksize,
80
+ };
81
+ this.#seenRequests.add(req.id);
82
+ const res = await this.#dataFetcher([req], this.#expansions);
83
+ this.handleResponses(res);
84
+ }
85
+ catch (e) {
86
+ this.#onResetLoadError(e);
87
+ }
88
+ finally {
89
+ this.#onResetLoadEnd();
90
+ }
91
+ };
92
+ requestForGroup(i) {
93
+ const ranges = this.flat.rangeTree.findRangesForRowIndex(i);
94
+ const path = ranges.slice(1).map((c) => (c.parent.kind === "parent" ? c.parent.path : null));
95
+ const row = this.flat.rowIndexToRow.get(i);
96
+ if (row?.kind !== "branch")
97
+ return null;
98
+ path.push(row.key);
99
+ const r = (ranges.at(-1)?.parent).byPath.get(row.key);
100
+ const blocksize = this.#blocksize;
101
+ const start = 0;
102
+ const end = Math.min(start + blocksize, r.size);
103
+ const reqSize = end - start;
104
+ const req = {
105
+ path,
106
+ start: start,
107
+ end: end,
108
+ id: getRequestId(path, 0, blocksize),
109
+ rowStartIndex: i + 1,
110
+ rowEndIndex: i + 1 + reqSize,
111
+ };
112
+ return req;
113
+ }
114
+ handleRequests = async (requests, opts = {}) => {
115
+ const controller = new AbortController();
116
+ this.#controllers.add(controller);
117
+ const skip = opts.skipState ?? false;
118
+ // We need to request our new data now. There are a few scenarios to be aware. Once we are requesting rows,
119
+ // we should mark the rows loading. This means we mark the row indices as loading (maybe by range)?
120
+ // The load may fail, in which case we should mark the request as an error.
121
+ try {
122
+ // Mark these rows as loading
123
+ requests.forEach((req) => {
124
+ if (!skip)
125
+ for (let i = req.rowStartIndex; i < req.rowEndIndex; i++)
126
+ this.#loadingRows.add(i);
127
+ });
128
+ const responses = await this.#dataFetcher(requests, this.#expansions);
129
+ // The request was aborted, so we can ignore it from this point
130
+ if (controller.signal.aborted)
131
+ return;
132
+ this.handleResponses(responses, () => {
133
+ if (!skip)
134
+ requests.forEach((req) => {
135
+ for (let i = req.rowStartIndex; i < req.rowEndIndex; i++)
136
+ this.#rowsWithError.delete(i);
137
+ for (let i = req.rowStartIndex; i < req.rowEndIndex; i++)
138
+ this.#loadingRows.delete(i);
139
+ });
140
+ });
141
+ opts?.onSuccess?.();
142
+ }
143
+ catch (e) {
144
+ if (controller.signal.aborted)
145
+ return;
146
+ opts?.onError?.(e);
147
+ this.#onInvalidate();
148
+ if (!skip)
149
+ requests.forEach((req) => {
150
+ for (let i = req.rowStartIndex; i < req.rowEndIndex; i++)
151
+ this.#rowsWithError.set(i, { error: e, request: req });
152
+ for (let i = req.rowStartIndex; i < req.rowEndIndex; i++)
153
+ this.#loadingRows.delete(i);
154
+ });
155
+ }
156
+ finally {
157
+ this.#controllers.delete(controller);
158
+ }
159
+ };
160
+ handleResponses = (data, beforeOnFlat) => {
161
+ const pinned = data.filter((c) => c.kind === "top" || c.kind === "bottom");
162
+ const center = data.filter((c) => c.kind !== "top" && c.kind !== "bottom");
163
+ // handle pinned
164
+ for (let i = 0; i < pinned.length; i++) {
165
+ const r = pinned[i];
166
+ if (r.kind === "top" && r.asOfTime > this.#top.asOf) {
167
+ this.#top = {
168
+ asOf: r.asOfTime,
169
+ rows: r.data.map((c) => ({ id: c.id, data: c.data, kind: "leaf", depth: 0 })),
170
+ };
171
+ }
172
+ else if (r.kind === "bottom" && r.asOfTime > this.#bottom.asOf) {
173
+ this.#bottom = {
174
+ asOf: r.asOfTime,
175
+ rows: r.data.map((c) => ({ id: c.id, data: c.data, kind: "leaf", depth: 0 })),
176
+ };
177
+ }
178
+ }
179
+ center.sort((l, r) => l.path.length - r.path.length);
180
+ for (let i = 0; i < center.length; i++) {
181
+ const r = center[i];
182
+ this.tree.set({
183
+ path: r.path,
184
+ items: r.data.map((c, i) => {
185
+ const parentNode = this.tree.get({ path: r.path });
186
+ const parentId = parentNode?.kind === "parent" ? parentNode.row.id : null;
187
+ if (c.kind === "leaf") {
188
+ return {
189
+ kind: "leaf",
190
+ row: {
191
+ kind: "leaf",
192
+ data: c.data,
193
+ id: c.id,
194
+ depth: r.path.length,
195
+ parentId,
196
+ },
197
+ relIndex: r.start + i,
198
+ };
199
+ }
200
+ else {
201
+ return {
202
+ kind: "parent",
203
+ row: {
204
+ kind: "branch",
205
+ data: c.data,
206
+ depth: r.path.length,
207
+ id: c.id,
208
+ key: c.key,
209
+ expandable: true, // Group nodes are always expandable for the server data source3
210
+ expanded: false,
211
+ last: false,
212
+ parentId,
213
+ __path: r.path,
214
+ },
215
+ path: c.key,
216
+ relIndex: r.start + i,
217
+ size: c.childCount,
218
+ };
219
+ }
220
+ }),
221
+ size: r.size,
222
+ asOf: r.asOfTime,
223
+ });
224
+ }
225
+ // Re-flatten our tree once everything has been re-updated.
226
+ this.#flatten(beforeOnFlat);
227
+ };
228
+ requestForNextSlice(req) {
229
+ let current = this.tree;
230
+ for (const c of req.path) {
231
+ if (current.kind === "leaf")
232
+ return null;
233
+ const next = current.byPath.get(c);
234
+ if (!next)
235
+ return null;
236
+ current = next;
237
+ }
238
+ if (current.kind === "leaf")
239
+ return null;
240
+ const maxSize = current.size;
241
+ if (req.end >= maxSize)
242
+ return null;
243
+ const prevSize = req.end - req.start;
244
+ const start = req.end;
245
+ const end = Math.min(req.end + this.#blocksize, maxSize);
246
+ const size = end - start;
247
+ return {
248
+ id: getRequestId(req.path, start, start + this.#blocksize),
249
+ path: req.path,
250
+ start,
251
+ end,
252
+ rowStartIndex: req.rowStartIndex + prevSize,
253
+ rowEndIndex: req.rowStartIndex + prevSize + size,
254
+ };
255
+ }
256
+ requestsForView(start, end) {
257
+ const bounds = this.#rowViewBounds;
258
+ start = start ?? bounds[0];
259
+ end = end ?? bounds[1];
260
+ const seen = new Set();
261
+ const requests = [];
262
+ for (let i = start; i < end; i++) {
263
+ const ranges = this.flat.rangeTree.findRangesForRowIndex(i);
264
+ ranges.forEach((c) => {
265
+ if (c.parent.kind === "root") {
266
+ const blockIndex = Math.floor(i / this.#blocksize);
267
+ const start = blockIndex * this.#blocksize;
268
+ const end = Math.min(start + this.#blocksize, c.parent.size);
269
+ const path = [];
270
+ const reqId = getRequestId(path, start, start + this.#blocksize);
271
+ if (seen.has(reqId))
272
+ return;
273
+ seen.add(reqId);
274
+ const size = start + this.#blocksize > c.parent.size ? c.parent.size - start : this.#blocksize;
275
+ requests.push({ id: reqId, path, start, end, rowStartIndex: i, rowEndIndex: i + size });
276
+ }
277
+ else {
278
+ const blockIndex = Math.floor((i - c.rowStart) / this.#blocksize);
279
+ const start = blockIndex * this.#blocksize;
280
+ const end = Math.min(start + this.#blocksize, c.parent.size);
281
+ const path = getNodePath(c.parent);
282
+ const reqId = getRequestId(path, start, start + this.#blocksize);
283
+ if (seen.has(reqId))
284
+ return;
285
+ seen.add(reqId);
286
+ const size = start + this.#blocksize > c.parent.size ? c.parent.size - start : this.#blocksize;
287
+ requests.push({ id: reqId, path, start, end, rowStartIndex: i, rowEndIndex: i + size });
288
+ }
289
+ });
290
+ }
291
+ return requests;
292
+ }
293
+ async handleViewBoundsChange() {
294
+ const requests = this.requestsForView();
295
+ const newRequests = requests.filter((c) => !this.#seenRequests.has(c.id));
296
+ // We don't have any new requests to make in our view, so we can return
297
+ if (!newRequests.length)
298
+ return;
299
+ for (const n of newRequests)
300
+ this.#seenRequests.add(n.id);
301
+ await this.handleRequests(newRequests);
302
+ }
303
+ retry() {
304
+ const inViewSet = new Set(this.requestsForView().map((c) => c.id));
305
+ const erroredRequests = [...this.#rowsWithError.values()]
306
+ .map((c) => c.request)
307
+ .filter(Boolean);
308
+ const erroredGroups = [...this.#rowsWithGroupError.entries()];
309
+ const errors = erroredRequests.filter((x) => inViewSet.has(x.id));
310
+ const [start, end] = this.#rowViewBounds;
311
+ const groupErrors = erroredGroups
312
+ .filter(([index]) => {
313
+ return index >= start && index < end;
314
+ })
315
+ .map(([index, c]) => [index, c.request]);
316
+ const seenRequests = this.#seenRequests;
317
+ erroredRequests.map((x) => seenRequests.delete(x.id));
318
+ erroredGroups.map((x) => seenRequests.delete(x[1].request.id));
319
+ this.#rowsWithError.clear();
320
+ this.#rowsWithGroupError.clear();
321
+ const requests = [];
322
+ const seen = new Set();
323
+ groupErrors.forEach((x) => {
324
+ if (seen.has(x[1].id))
325
+ return;
326
+ requests.push(x[1]);
327
+ seen.add(x[1].id);
328
+ });
329
+ errors.forEach((x) => {
330
+ if (seen.has(x.id))
331
+ return;
332
+ seen.add(x.id);
333
+ requests.push(x);
334
+ });
335
+ for (const x of groupErrors) {
336
+ this.#loadingGroup.add(x[0]);
337
+ }
338
+ requests.forEach((x) => seenRequests.add(x.id));
339
+ const invalidate = this.#onInvalidate;
340
+ const withGroupError = this.#rowsWithGroupError;
341
+ const loadingGroup = this.#loadingGroup;
342
+ this.handleRequests(requests, {
343
+ onError: (e) => {
344
+ invalidate();
345
+ groupErrors.forEach((c) => {
346
+ withGroupError.set(c[0], { error: e, request: c[1] });
347
+ loadingGroup.delete(c[0]);
348
+ });
349
+ },
350
+ onSuccess: () => {
351
+ groupErrors.forEach((c) => {
352
+ loadingGroup.delete(c[0]);
353
+ });
354
+ },
355
+ });
356
+ }
357
+ addBefore(leafs) {
358
+ this.tree.addBefore(leafs);
359
+ }
360
+ addAfter(leafs) {
361
+ this.tree.addAfter(leafs);
362
+ }
363
+ deleteBefore(leafs) {
364
+ this.tree.deleteBefore(leafs);
365
+ }
366
+ deleteAfter(leafs) {
367
+ this.tree.deleteAfter(leafs);
368
+ }
369
+ updateRow(id, data, asOf) {
370
+ const centerRow = this.tree.rowIdToNode.get(id);
371
+ if (centerRow) {
372
+ if (asOf && centerRow.asOf > asOf)
373
+ return;
374
+ centerRow.row = { ...centerRow.row, data };
375
+ return;
376
+ }
377
+ // Maybe its a pinned row?
378
+ const topIndex = this.#top.rows.findIndex((c) => c.id === id);
379
+ if (topIndex != -1) {
380
+ if (asOf && this.#top.asOf > asOf)
381
+ return;
382
+ this.#top.rows[topIndex] = { ...this.#top.rows[topIndex], data };
383
+ }
384
+ const botIndex = this.#bottom.rows.findIndex((c) => c.id === id);
385
+ if (botIndex != -1) {
386
+ if (asOf && this.#bottom.asOf > asOf)
387
+ return;
388
+ this.#top.rows[botIndex] = { ...this.#top.rows[botIndex], data };
389
+ }
390
+ }
391
+ flatten = () => {
392
+ this.#flatten();
393
+ };
394
+ #flatten = (beforeOnFlat) => {
395
+ // The mode we are in determines the expansions we will use for the server data.
396
+ const expansions = this.#expansions;
397
+ const t = this.tree;
398
+ // We use these maps to keep track of the current view. These are helpful for
399
+ // quick lookup. They are also used to implement many of the data source APIs.
400
+ const rowIdToRow = new Map();
401
+ const rowIndexToRow = new Map();
402
+ const rowIdToRowIndex = new Map();
403
+ const rowIdToTreeNode = new Map();
404
+ // When flattening the tree we need to keep track of the ranges. The tree itself
405
+ // will only have some rows loaded, but the ranges will be fully defined.
406
+ const ranges = [];
407
+ const blocksize = this.#blocksize;
408
+ const seen = this.#seenRequests;
409
+ // Tracks the error and loading state of the rows.
410
+ const withGroupError = this.#rowsWithGroupError;
411
+ const withLoadingGroup = this.#loadingGroup;
412
+ const handleRequests = this.handleRequests;
413
+ const defaultExpansion = this.#defaultExpansion;
414
+ const postFlatRequests = [];
415
+ let hasGroups = false;
416
+ function processParent(node, start) {
417
+ const rows = [...node.byIndex.values()].sort((l, r) => l.relIndex - r.relIndex);
418
+ let offset = 0;
419
+ let deleted = 0;
420
+ if (node.kind === "root") {
421
+ if (node.before.length) {
422
+ for (const n of node.before) {
423
+ const rowIndex = offset;
424
+ offset++;
425
+ rowIndexToRow.set(rowIndex, n.row);
426
+ rowIdToRowIndex.set(n.row.id, rowIndex);
427
+ rowIdToRow.set(n.row.id, n.row);
428
+ rowIdToTreeNode.set(n.row.id, n);
429
+ }
430
+ }
431
+ }
432
+ for (let i = 0; i < rows.length; i++) {
433
+ const node = rows[i];
434
+ if (node.deleted) {
435
+ deleted++;
436
+ continue;
437
+ }
438
+ const rowIndex = node.relIndex + start + offset - deleted;
439
+ rowIndexToRow.set(rowIndex, node.row);
440
+ rowIdToRowIndex.set(node.row.id, rowIndex);
441
+ rowIdToRow.set(node.row.id, node.row);
442
+ rowIdToTreeNode.set(node.row.id, node);
443
+ // If this rows is a parent row, we need to check if it is expanded. There are a couple of
444
+ // situations this to consider.
445
+ // - the row is not expanded, in which case we only add the row itself to the flat view
446
+ // - the row is expanded but it has no data loaded. We should then request data, but not add the rows
447
+ // - the row is expanded and there is add. This is the easy case, we simply add the child rows as we flatten
448
+ if (node.kind === "parent") {
449
+ hasGroups = true;
450
+ const expanded = expansions[node.row.id] ??
451
+ (typeof defaultExpansion === "number"
452
+ ? getNodeDepth(node) <= defaultExpansion
453
+ : defaultExpansion);
454
+ if (expanded) {
455
+ node.row.expanded = true;
456
+ }
457
+ else {
458
+ node.row.expanded = false;
459
+ }
460
+ // Expanded but no data. Fetch the child data.
461
+ if (expanded && !node.byIndex.size) {
462
+ const path = getNodePath(node);
463
+ const start = 0;
464
+ const end = Math.min(start + blocksize, node.size);
465
+ const reqSize = end - start;
466
+ const req = {
467
+ path,
468
+ start: start,
469
+ end: end,
470
+ id: getRequestId(path, 0, blocksize),
471
+ rowStartIndex: rowIndex + 1,
472
+ rowEndIndex: rowIndex + 1 + reqSize,
473
+ };
474
+ // If we haven't already requested the children data for this node, let's request it.
475
+ if (!seen.has(req.id)) {
476
+ postFlatRequests.push([rowIndex, req]);
477
+ }
478
+ }
479
+ else if (expanded) {
480
+ offset += processParent(node, rowIndex + 1);
481
+ }
482
+ }
483
+ }
484
+ ranges.push({
485
+ rowStart: start,
486
+ rowEnd: offset + node.size + start - deleted,
487
+ parent: node,
488
+ });
489
+ return offset + node.size - deleted;
490
+ }
491
+ const topCount = this.#top.rows.length;
492
+ const bottomCount = this.#bottom.rows.length;
493
+ for (let i = 0; i < topCount; i++) {
494
+ const row = this.#top.rows[i];
495
+ rowIndexToRow.set(i, row);
496
+ rowIdToRow.set(row.id, row);
497
+ rowIdToRowIndex.set(row.id, i);
498
+ }
499
+ const size = processParent(t, topCount);
500
+ for (let i = 0; i < bottomCount; i++) {
501
+ const row = this.#bottom.rows[i];
502
+ const rowIndex = i + size;
503
+ rowIndexToRow.set(rowIndex, row);
504
+ rowIdToRow.set(row.id, row);
505
+ rowIdToRowIndex.set(row.id, rowIndex);
506
+ }
507
+ const rangeTree = new RangeTree(ranges);
508
+ if (postFlatRequests.length > 0) {
509
+ postFlatRequests.forEach((c) => {
510
+ withLoadingGroup.add(c[0]);
511
+ seen.add(c[1].id);
512
+ });
513
+ const invalidate = this.#onInvalidate;
514
+ const reqs = postFlatRequests.map((c) => c[1]);
515
+ handleRequests(reqs, {
516
+ skipState: true,
517
+ onError: (e) => {
518
+ invalidate();
519
+ postFlatRequests.forEach((c) => {
520
+ const rowIndex = c[0];
521
+ const req = c[1];
522
+ withLoadingGroup.delete(rowIndex);
523
+ withGroupError.set(rowIndex, { error: e, request: req });
524
+ });
525
+ },
526
+ onSuccess: () => {
527
+ postFlatRequests.forEach((c) => {
528
+ withLoadingGroup.delete(c[0]);
529
+ });
530
+ },
531
+ });
532
+ }
533
+ this.flat = {
534
+ tree: t,
535
+ top: topCount,
536
+ center: size - topCount,
537
+ bottom: bottomCount,
538
+ rangeTree,
539
+ rowIndexToRow,
540
+ rowIdToRow,
541
+ rowIdToRowIndex,
542
+ rowIdToTreeNode,
543
+ errored: this.#rowsWithError,
544
+ erroredGroup: this.#rowsWithGroupError,
545
+ loading: this.#loadingRows,
546
+ loadingGroup: this.#loadingGroup,
547
+ maxDepth: hasGroups ? 1 : 0,
548
+ seenRequests: seen,
549
+ };
550
+ beforeOnFlat?.();
551
+ this.#onFlatten(this.flat);
552
+ };
553
+ }
@@ -0,0 +1,4 @@
1
+ import { type Signal } from "@1771technologies/lytenyte-core/internal";
2
+ import type { ServerData } from "../server-data";
3
+ import { type UseServerDataSourceParams } from "../use-server-data-source.js";
4
+ export declare function useOnRowsUpdated<T>(source: ServerData, onRowDataChange: UseServerDataSourceParams<any, unknown[]>["onRowDataChange"], optimistic: UseServerDataSourceParams<any, unknown[]>["rowUpdateOptimistically"], globalSignal: Signal<number>): (rows: Map<import("@1771technologies/lytenyte-shared").RowNode<T>, T>) => void;
@@ -0,0 +1,29 @@
1
+ import { useEvent } from "@1771technologies/lytenyte-core/internal";
2
+ import {} from "../use-server-data-source.js";
3
+ export function useOnRowsUpdated(source, onRowDataChange, optimistic, globalSignal) {
4
+ const onRowsUpdated = useEvent((updates) => {
5
+ if (!onRowDataChange)
6
+ return;
7
+ if (!optimistic) {
8
+ onRowDataChange?.({ rows: updates });
9
+ return;
10
+ }
11
+ const rollbackMap = new Map();
12
+ updates.forEach((d, row) => {
13
+ const node = source.tree.rowIdToNode.get(row.id);
14
+ if (node) {
15
+ rollbackMap.set(row.id, { data: node.row.data, asOf: node.asOf });
16
+ }
17
+ source.updateRow(row.id, d);
18
+ });
19
+ source.flatten();
20
+ onRowDataChange({ rows: updates }).catch(() => {
21
+ rollbackMap.forEach((d, id) => {
22
+ source.updateRow(id, d.data, d.asOf);
23
+ });
24
+ source.flatten();
25
+ });
26
+ globalSignal(Date.now());
27
+ });
28
+ return onRowsUpdated;
29
+ }
@@ -0,0 +1,3 @@
1
+ import type { ServerData } from "../server-data";
2
+ import type { DataRequest } from "../types";
3
+ export declare function useOnViewChange<T>(source: ServerData, requestsForView: DataRequest[], setRequestsForView: (v: DataRequest[]) => void): (view: import("@1771technologies/lytenyte-shared").SpanLayout) => void;
@@ -0,0 +1,13 @@
1
+ import { useEvent } from "@1771technologies/lytenyte-core/internal";
2
+ import { equal } from "@1771technologies/lytenyte-shared";
3
+ export function useOnViewChange(source, requestsForView, setRequestsForView) {
4
+ const onViewChange = useEvent((bounds) => {
5
+ // This will result in the server sending the requests for the current view.
6
+ source.rowViewBounds = [bounds.rowCenterStart, bounds.rowCenterEnd];
7
+ const requests = source.requestsForView();
8
+ if (equal(requests, requestsForView))
9
+ return;
10
+ setRequestsForView(requests);
11
+ });
12
+ return onViewChange;
13
+ }
@@ -0,0 +1,3 @@
1
+ import type { ServerData } from "../server-data";
2
+ import type { UseServerDataSourceParams } from "../use-server-data-source";
3
+ export declare function useRowAdd<T>(source: ServerData, onRowAdd: UseServerDataSourceParams<any, unknown[]>["onRowsAdded"], optimistic?: boolean): (rows: import("@1771technologies/lytenyte-shared").RowLeaf<T>[], placement?: "start" | "end") => void;
@@ -0,0 +1,36 @@
1
+ import { useEvent } from "@1771technologies/lytenyte-core/internal";
2
+ import { ROOT_LEAF_PREFIX } from "../async-tree/+constants.async-tree.js";
3
+ export function useRowAdd(source, onRowAdd, optimistic = false) {
4
+ const rowAdd = useEvent((rows, placement = "start") => {
5
+ if (!onRowAdd || !rows.length)
6
+ return;
7
+ if (!optimistic) {
8
+ onRowAdd({ rows, placement });
9
+ return;
10
+ }
11
+ const toNodes = rows.map((x) => {
12
+ return {
13
+ asOf: Date.now(),
14
+ kind: "leaf",
15
+ parent: source.tree,
16
+ path: ROOT_LEAF_PREFIX,
17
+ relIndex: -1,
18
+ row: x,
19
+ optimistic: placement,
20
+ };
21
+ });
22
+ if (placement === "start")
23
+ source.addBefore(toNodes);
24
+ else
25
+ source.addAfter(toNodes);
26
+ source.flatten();
27
+ onRowAdd({ rows, placement }).catch(() => {
28
+ if (placement === "start")
29
+ source.deleteBefore(toNodes.map((x) => x.row.id));
30
+ else
31
+ source.deleteAfter(toNodes.map((x) => x.row.id));
32
+ source.flatten();
33
+ });
34
+ });
35
+ return rowAdd;
36
+ }
@@ -0,0 +1,2 @@
1
+ import type { ServerData } from "../server-data";
2
+ export declare function useRowById<T>(source: ServerData): (id: string) => import("@1771technologies/lytenyte-shared").RowNode<T> | null;
@@ -0,0 +1,8 @@
1
+ import { useEvent } from "@1771technologies/lytenyte-core/internal";
2
+ export function useRowById(source) {
3
+ const rowById = useEvent((id) => {
4
+ const node = source.tree.rowIdToNode.get(id)?.row;
5
+ return node ?? null;
6
+ });
7
+ return rowById;
8
+ }
@@ -0,0 +1,9 @@
1
+ import type { RowAtom, RowNode, RowSelectionStateWithParent } from "@1771technologies/lytenyte-shared";
2
+ import type { ServerData } from "../server-data.js";
3
+ import { type Signal } from "@1771technologies/lytenyte-core/internal";
4
+ export declare function useRowByIndex<T>(source: ServerData, state: {
5
+ rowSelections: RowSelectionStateWithParent;
6
+ }, globalSignal: Signal<number>, getParents: (id: string) => string[]): {
7
+ rowInvalidate: (row?: number) => void;
8
+ rowByIndex: (row: number) => RowAtom<RowNode<T> | null>;
9
+ };