@elaraai/east-ui 1.0.80 → 1.0.82

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 (353) hide show
  1. package/dist/src/charts/chart/index.d.ts +4 -0
  2. package/dist/src/charts/chart/index.d.ts.map +1 -1
  3. package/dist/src/charts/spec/index.d.ts +8 -0
  4. package/dist/src/charts/spec/index.d.ts.map +1 -1
  5. package/dist/src/collections/deck/index.d.ts +8 -0
  6. package/dist/src/collections/deck/index.d.ts.map +1 -1
  7. package/dist/src/collections/index.d.ts +2 -2
  8. package/dist/src/collections/index.d.ts.map +1 -1
  9. package/dist/src/collections/index.js.map +1 -1
  10. package/dist/src/collections/library/index.d.ts +4 -0
  11. package/dist/src/collections/library/index.d.ts.map +1 -1
  12. package/dist/src/collections/library/types.d.ts +4 -0
  13. package/dist/src/collections/library/types.d.ts.map +1 -1
  14. package/dist/src/collections/matrix/index.d.ts +56 -19
  15. package/dist/src/collections/matrix/index.d.ts.map +1 -1
  16. package/dist/src/collections/matrix/index.js +38 -24
  17. package/dist/src/collections/matrix/index.js.map +1 -1
  18. package/dist/src/collections/plan/assemble.d.ts +655 -2113
  19. package/dist/src/collections/plan/assemble.d.ts.map +1 -1
  20. package/dist/src/collections/plan/assemble.js +159 -136
  21. package/dist/src/collections/plan/assemble.js.map +1 -1
  22. package/dist/src/collections/plan/builders.d.ts +193 -40
  23. package/dist/src/collections/plan/builders.d.ts.map +1 -1
  24. package/dist/src/collections/plan/builders.js +162 -32
  25. package/dist/src/collections/plan/builders.js.map +1 -1
  26. package/dist/src/collections/plan/factories.d.ts +290 -116
  27. package/dist/src/collections/plan/factories.d.ts.map +1 -1
  28. package/dist/src/collections/plan/factories.js +281 -156
  29. package/dist/src/collections/plan/factories.js.map +1 -1
  30. package/dist/src/collections/plan/index.d.ts +111 -58
  31. package/dist/src/collections/plan/index.d.ts.map +1 -1
  32. package/dist/src/collections/plan/index.js +62 -31
  33. package/dist/src/collections/plan/index.js.map +1 -1
  34. package/dist/src/collections/plan/ir.d.ts +759 -1769
  35. package/dist/src/collections/plan/ir.d.ts.map +1 -1
  36. package/dist/src/collections/plan/ir.js +51 -27
  37. package/dist/src/collections/plan/ir.js.map +1 -1
  38. package/dist/src/collections/plan/pick.d.ts +89 -71
  39. package/dist/src/collections/plan/pick.d.ts.map +1 -1
  40. package/dist/src/collections/plan/pick.js +101 -86
  41. package/dist/src/collections/plan/pick.js.map +1 -1
  42. package/dist/src/collections/plan/root.d.ts +164 -77
  43. package/dist/src/collections/plan/root.d.ts.map +1 -1
  44. package/dist/src/collections/plan/root.js +350 -42
  45. package/dist/src/collections/plan/root.js.map +1 -1
  46. package/dist/src/collections/plan/series.d.ts +12524 -10527
  47. package/dist/src/collections/plan/series.d.ts.map +1 -1
  48. package/dist/src/collections/plan/series.js +1596 -298
  49. package/dist/src/collections/plan/series.js.map +1 -1
  50. package/dist/src/collections/plan/types.d.ts +6115 -2802
  51. package/dist/src/collections/plan/types.d.ts.map +1 -1
  52. package/dist/src/collections/plan/types.js +575 -170
  53. package/dist/src/collections/plan/types.js.map +1 -1
  54. package/dist/src/collections/sheet/bridge.d.ts +154 -43
  55. package/dist/src/collections/sheet/bridge.d.ts.map +1 -1
  56. package/dist/src/collections/sheet/bridge.js +383 -240
  57. package/dist/src/collections/sheet/bridge.js.map +1 -1
  58. package/dist/src/collections/sheet/columns.d.ts +66 -16
  59. package/dist/src/collections/sheet/columns.d.ts.map +1 -1
  60. package/dist/src/collections/sheet/columns.js +25 -25
  61. package/dist/src/collections/sheet/columns.js.map +1 -1
  62. package/dist/src/collections/sheet/context-bridge.d.ts +48 -0
  63. package/dist/src/collections/sheet/context-bridge.d.ts.map +1 -0
  64. package/dist/src/collections/sheet/context-bridge.js +216 -0
  65. package/dist/src/collections/sheet/context-bridge.js.map +1 -0
  66. package/dist/src/collections/sheet/draft-bridge.d.ts +37 -0
  67. package/dist/src/collections/sheet/draft-bridge.d.ts.map +1 -0
  68. package/dist/src/collections/sheet/draft-bridge.js +153 -0
  69. package/dist/src/collections/sheet/draft-bridge.js.map +1 -0
  70. package/dist/src/collections/sheet/drafts.d.ts +14 -0
  71. package/dist/src/collections/sheet/drafts.d.ts.map +1 -0
  72. package/dist/src/collections/sheet/drafts.js +14 -0
  73. package/dist/src/collections/sheet/drafts.js.map +1 -0
  74. package/dist/src/collections/sheet/editing-bridge.d.ts +36 -0
  75. package/dist/src/collections/sheet/editing-bridge.d.ts.map +1 -0
  76. package/dist/src/collections/sheet/editing-bridge.js +196 -0
  77. package/dist/src/collections/sheet/editing-bridge.js.map +1 -0
  78. package/dist/src/collections/sheet/editing-types.d.ts +268 -0
  79. package/dist/src/collections/sheet/editing-types.d.ts.map +1 -0
  80. package/dist/src/collections/sheet/editing-types.js +34 -0
  81. package/dist/src/collections/sheet/editing-types.js.map +1 -0
  82. package/dist/src/collections/sheet/edits.d.ts +37 -0
  83. package/dist/src/collections/sheet/edits.d.ts.map +1 -0
  84. package/dist/src/collections/sheet/edits.js +31 -0
  85. package/dist/src/collections/sheet/edits.js.map +1 -0
  86. package/dist/src/collections/sheet/group.d.ts +165 -0
  87. package/dist/src/collections/sheet/group.d.ts.map +1 -0
  88. package/dist/src/collections/sheet/group.js +52 -0
  89. package/dist/src/collections/sheet/group.js.map +1 -0
  90. package/dist/src/collections/sheet/index.d.ts +171 -27
  91. package/dist/src/collections/sheet/index.d.ts.map +1 -1
  92. package/dist/src/collections/sheet/index.js +99 -17
  93. package/dist/src/collections/sheet/index.js.map +1 -1
  94. package/dist/src/collections/sheet/link.d.ts +22 -16
  95. package/dist/src/collections/sheet/link.d.ts.map +1 -1
  96. package/dist/src/collections/sheet/link.js +18 -12
  97. package/dist/src/collections/sheet/link.js.map +1 -1
  98. package/dist/src/collections/sheet/registers.d.ts +152 -5
  99. package/dist/src/collections/sheet/registers.d.ts.map +1 -1
  100. package/dist/src/collections/sheet/registers.js +154 -5
  101. package/dist/src/collections/sheet/registers.js.map +1 -1
  102. package/dist/src/collections/sheet/root.d.ts +175 -26
  103. package/dist/src/collections/sheet/root.d.ts.map +1 -1
  104. package/dist/src/collections/sheet/root.js +150 -26
  105. package/dist/src/collections/sheet/root.js.map +1 -1
  106. package/dist/src/collections/sheet/seed-bridge.d.ts +14 -0
  107. package/dist/src/collections/sheet/seed-bridge.d.ts.map +1 -0
  108. package/dist/src/collections/sheet/seed-bridge.js +51 -0
  109. package/dist/src/collections/sheet/seed-bridge.js.map +1 -0
  110. package/dist/src/collections/sheet/sub-rows.d.ts +249 -0
  111. package/dist/src/collections/sheet/sub-rows.d.ts.map +1 -0
  112. package/dist/src/collections/sheet/sub-rows.js +222 -0
  113. package/dist/src/collections/sheet/sub-rows.js.map +1 -0
  114. package/dist/src/collections/sheet/transactions.d.ts +76 -0
  115. package/dist/src/collections/sheet/transactions.d.ts.map +1 -0
  116. package/dist/src/collections/sheet/transactions.js +40 -0
  117. package/dist/src/collections/sheet/transactions.js.map +1 -0
  118. package/dist/src/collections/sheet/types.d.ts +12034 -3651
  119. package/dist/src/collections/sheet/types.d.ts.map +1 -1
  120. package/dist/src/collections/sheet/types.js +365 -48
  121. package/dist/src/collections/sheet/types.js.map +1 -1
  122. package/dist/src/collections/table/index.d.ts +98 -123
  123. package/dist/src/collections/table/index.d.ts.map +1 -1
  124. package/dist/src/collections/table/index.js +97 -111
  125. package/dist/src/collections/table/index.js.map +1 -1
  126. package/dist/src/collections/table/types.d.ts +87 -31
  127. package/dist/src/collections/table/types.d.ts.map +1 -1
  128. package/dist/src/collections/table/types.js +51 -26
  129. package/dist/src/collections/table/types.js.map +1 -1
  130. package/dist/src/collections/value-tree/flatten.d.ts.map +1 -1
  131. package/dist/src/collections/value-tree/flatten.js +4 -1
  132. package/dist/src/collections/value-tree/flatten.js.map +1 -1
  133. package/dist/src/component.d.ts +5075 -4079
  134. package/dist/src/component.d.ts.map +1 -1
  135. package/dist/src/component.js +46 -46
  136. package/dist/src/component.js.map +1 -1
  137. package/dist/src/contracts/approval.d.ts +10 -8
  138. package/dist/src/contracts/approval.d.ts.map +1 -1
  139. package/dist/src/contracts/approval.js +10 -8
  140. package/dist/src/contracts/approval.js.map +1 -1
  141. package/dist/src/contracts/drag.d.ts +11 -9
  142. package/dist/src/contracts/drag.d.ts.map +1 -1
  143. package/dist/src/contracts/drag.js +28 -21
  144. package/dist/src/contracts/drag.js.map +1 -1
  145. package/dist/src/contracts/editing.d.ts +1283 -0
  146. package/dist/src/contracts/editing.d.ts.map +1 -0
  147. package/dist/src/contracts/editing.js +711 -0
  148. package/dist/src/contracts/editing.js.map +1 -0
  149. package/dist/src/contracts/index.d.ts +2 -1
  150. package/dist/src/contracts/index.d.ts.map +1 -1
  151. package/dist/src/contracts/index.js +2 -1
  152. package/dist/src/contracts/index.js.map +1 -1
  153. package/dist/src/contracts/pick.d.ts +6 -7
  154. package/dist/src/contracts/pick.d.ts.map +1 -1
  155. package/dist/src/contracts/pick.js +6 -7
  156. package/dist/src/contracts/pick.js.map +1 -1
  157. package/dist/src/contracts/review.d.ts +3 -1
  158. package/dist/src/contracts/review.d.ts.map +1 -1
  159. package/dist/src/contracts/review.js +3 -1
  160. package/dist/src/contracts/review.js.map +1 -1
  161. package/dist/src/contracts/source.d.ts +270 -80
  162. package/dist/src/contracts/source.d.ts.map +1 -1
  163. package/dist/src/contracts/source.js +357 -58
  164. package/dist/src/contracts/source.js.map +1 -1
  165. package/dist/src/display/chip-rail/index.d.ts.map +1 -1
  166. package/dist/src/display/chip-rail/index.js +10 -10
  167. package/dist/src/display/chip-rail/index.js.map +1 -1
  168. package/dist/src/extension.d.ts +2 -1
  169. package/dist/src/extension.d.ts.map +1 -1
  170. package/dist/src/extension.js +2 -1
  171. package/dist/src/extension.js.map +1 -1
  172. package/dist/src/format/index.d.ts +1 -154
  173. package/dist/src/format/index.d.ts.map +1 -1
  174. package/dist/src/format/types.d.ts +35 -23
  175. package/dist/src/format/types.d.ts.map +1 -1
  176. package/dist/src/format/types.js +16 -14
  177. package/dist/src/format/types.js.map +1 -1
  178. package/dist/src/forms/field/index.js +4 -4
  179. package/dist/src/forms/field/index.js.map +1 -1
  180. package/dist/src/forms/file-upload/index.js +16 -16
  181. package/dist/src/forms/file-upload/index.js.map +1 -1
  182. package/dist/src/index.d.ts +4 -2
  183. package/dist/src/index.d.ts.map +1 -1
  184. package/dist/src/index.js +12 -5
  185. package/dist/src/index.js.map +1 -1
  186. package/dist/src/internal.d.ts +8 -3
  187. package/dist/src/internal.d.ts.map +1 -1
  188. package/dist/src/internal.js +11 -3
  189. package/dist/src/internal.js.map +1 -1
  190. package/dist/src/layout/box/index.d.ts.map +1 -1
  191. package/dist/src/layout/box/index.js +47 -47
  192. package/dist/src/layout/box/index.js.map +1 -1
  193. package/dist/src/layout/flex/index.d.ts.map +1 -1
  194. package/dist/src/layout/flex/index.js +47 -47
  195. package/dist/src/layout/flex/index.js.map +1 -1
  196. package/dist/src/layout/grid/index.js +11 -11
  197. package/dist/src/layout/grid/index.js.map +1 -1
  198. package/dist/src/layout/scroll-area/index.d.ts.map +1 -1
  199. package/dist/src/layout/scroll-area/index.js +8 -8
  200. package/dist/src/layout/scroll-area/index.js.map +1 -1
  201. package/dist/src/layout/separator/index.d.ts.map +1 -1
  202. package/dist/src/layout/separator/index.js +6 -6
  203. package/dist/src/layout/separator/index.js.map +1 -1
  204. package/dist/src/layout/stack/index.d.ts.map +1 -1
  205. package/dist/src/layout/stack/index.js +46 -46
  206. package/dist/src/layout/stack/index.js.map +1 -1
  207. package/dist/src/layout/sticky/index.d.ts.map +1 -1
  208. package/dist/src/layout/sticky/index.js +8 -8
  209. package/dist/src/layout/sticky/index.js.map +1 -1
  210. package/dist/src/overlays/action-bar/index.d.ts.map +1 -1
  211. package/dist/src/overlays/action-bar/index.js +8 -8
  212. package/dist/src/overlays/action-bar/index.js.map +1 -1
  213. package/dist/src/platform/index.d.ts +1 -1
  214. package/dist/src/platform/index.d.ts.map +1 -1
  215. package/dist/src/platform/index.js +1 -1
  216. package/dist/src/platform/index.js.map +1 -1
  217. package/dist/src/platform/slice/impl.d.ts +62 -51
  218. package/dist/src/platform/slice/impl.d.ts.map +1 -1
  219. package/dist/src/platform/slice/impl.js +155 -72
  220. package/dist/src/platform/slice/impl.js.map +1 -1
  221. package/dist/src/platform/slice/index.d.ts +3744 -2226
  222. package/dist/src/platform/slice/index.d.ts.map +1 -1
  223. package/dist/src/platform/slice/index.js +43 -1
  224. package/dist/src/platform/slice/index.js.map +1 -1
  225. package/dist/src/runtime/collections/deck.d.ts +4 -0
  226. package/dist/src/runtime/collections/deck.d.ts.map +1 -1
  227. package/dist/src/runtime/collections/matrix.d.ts +10 -9
  228. package/dist/src/runtime/collections/matrix.d.ts.map +1 -1
  229. package/dist/src/runtime/collections/matrix.js +11 -6
  230. package/dist/src/runtime/collections/matrix.js.map +1 -1
  231. package/dist/src/runtime/collections/plan.d.ts +148 -65
  232. package/dist/src/runtime/collections/plan.d.ts.map +1 -1
  233. package/dist/src/runtime/collections/plan.js +155 -67
  234. package/dist/src/runtime/collections/plan.js.map +1 -1
  235. package/dist/src/runtime/collections/sheet.d.ts +56 -23
  236. package/dist/src/runtime/collections/sheet.d.ts.map +1 -1
  237. package/dist/src/runtime/collections/sheet.js +30 -22
  238. package/dist/src/runtime/collections/sheet.js.map +1 -1
  239. package/dist/src/runtime/collections/table.d.ts +18 -11
  240. package/dist/src/runtime/collections/table.d.ts.map +1 -1
  241. package/dist/src/runtime/collections/table.js +7 -4
  242. package/dist/src/runtime/collections/table.js.map +1 -1
  243. package/dist/src/shared/reify.d.ts +4 -46
  244. package/dist/src/shared/reify.d.ts.map +1 -1
  245. package/dist/src/shared/reify.js +4 -61
  246. package/dist/src/shared/reify.js.map +1 -1
  247. package/dist/src/shared/tree.d.ts +88 -0
  248. package/dist/src/shared/tree.d.ts.map +1 -0
  249. package/dist/src/shared/tree.js +134 -0
  250. package/dist/src/shared/tree.js.map +1 -0
  251. package/dist/src/slice/breakdown/index.d.ts +4 -0
  252. package/dist/src/slice/breakdown/index.d.ts.map +1 -1
  253. package/dist/src/slice/breakdown/types.d.ts +4 -0
  254. package/dist/src/slice/breakdown/types.d.ts.map +1 -1
  255. package/dist/src/slice/cohort/index.d.ts +24 -4
  256. package/dist/src/slice/cohort/index.d.ts.map +1 -1
  257. package/dist/src/slice/cohort/index.js +8 -4
  258. package/dist/src/slice/cohort/index.js.map +1 -1
  259. package/dist/src/slice/cohort/types.d.ts +11 -0
  260. package/dist/src/slice/cohort/types.d.ts.map +1 -1
  261. package/dist/src/slice/cohort/types.js +7 -0
  262. package/dist/src/slice/cohort/types.js.map +1 -1
  263. package/dist/src/slice/filter/index.d.ts +4 -0
  264. package/dist/src/slice/filter/index.d.ts.map +1 -1
  265. package/dist/src/slice/filter/types.d.ts +4 -0
  266. package/dist/src/slice/filter/types.d.ts.map +1 -1
  267. package/dist/src/slice/index.d.ts +736 -0
  268. package/dist/src/slice/index.d.ts.map +1 -1
  269. package/dist/src/slice/legend/index.d.ts +4 -0
  270. package/dist/src/slice/legend/index.d.ts.map +1 -1
  271. package/dist/src/slice/legend/types.d.ts +4 -0
  272. package/dist/src/slice/legend/types.d.ts.map +1 -1
  273. package/dist/src/slice/rail/index.d.ts +8 -4
  274. package/dist/src/slice/rail/index.d.ts.map +1 -1
  275. package/dist/src/slice/rail/index.js.map +1 -1
  276. package/dist/src/slice/range/index.d.ts +4 -0
  277. package/dist/src/slice/range/index.d.ts.map +1 -1
  278. package/dist/src/slice/range/types.d.ts +4 -0
  279. package/dist/src/slice/range/types.d.ts.map +1 -1
  280. package/dist/src/slice/search/index.d.ts +4 -0
  281. package/dist/src/slice/search/index.d.ts.map +1 -1
  282. package/dist/src/slice/search/types.d.ts +4 -0
  283. package/dist/src/slice/search/types.d.ts.map +1 -1
  284. package/dist/src/slice/summary/index.d.ts +4 -0
  285. package/dist/src/slice/summary/index.d.ts.map +1 -1
  286. package/dist/src/slice/summary/types.d.ts +4 -0
  287. package/dist/src/slice/summary/types.d.ts.map +1 -1
  288. package/dist/src/typography/code/index.js +1 -1
  289. package/dist/src/typography/code/index.js.map +1 -1
  290. package/dist/src/typography/code-block/index.js +7 -7
  291. package/dist/src/typography/code-block/index.js.map +1 -1
  292. package/dist/src/typography/heading/index.js +2 -2
  293. package/dist/src/typography/heading/index.js.map +1 -1
  294. package/dist/src/typography/list/index.js +1 -1
  295. package/dist/src/typography/list/index.js.map +1 -1
  296. package/dist/src/typography/mark/index.js +1 -1
  297. package/dist/src/typography/mark/index.js.map +1 -1
  298. package/dist/src/typography/note/index.js +1 -1
  299. package/dist/src/typography/note/index.js.map +1 -1
  300. package/dist/src/typography/numeric/index.d.ts +3 -308
  301. package/dist/src/typography/numeric/index.d.ts.map +1 -1
  302. package/dist/src/typography/numeric/index.js +4 -4
  303. package/dist/src/typography/numeric/index.js.map +1 -1
  304. package/dist/src/typography/numeric/types.d.ts +1 -154
  305. package/dist/src/typography/numeric/types.d.ts.map +1 -1
  306. package/dist/src/typography/text/index.js +1 -1
  307. package/dist/src/typography/text/index.js.map +1 -1
  308. package/dist/test/collections/matrix.examples.d.ts +7 -3
  309. package/dist/test/collections/matrix.examples.d.ts.map +1 -1
  310. package/dist/test/collections/matrix.examples.js +55 -24
  311. package/dist/test/collections/matrix.examples.js.map +1 -1
  312. package/dist/test/collections/paged-source.examples.d.ts +4 -0
  313. package/dist/test/collections/paged-source.examples.d.ts.map +1 -1
  314. package/dist/test/collections/paged-source.examples.js +98 -13
  315. package/dist/test/collections/paged-source.examples.js.map +1 -1
  316. package/dist/test/collections/plan.examples.d.ts +101 -26
  317. package/dist/test/collections/plan.examples.d.ts.map +1 -1
  318. package/dist/test/collections/plan.examples.js +1481 -755
  319. package/dist/test/collections/plan.examples.js.map +1 -1
  320. package/dist/test/collections/sheet-link.examples.d.ts +7 -0
  321. package/dist/test/collections/sheet-link.examples.d.ts.map +1 -0
  322. package/dist/test/collections/sheet-link.examples.js +41 -0
  323. package/dist/test/collections/sheet-link.examples.js.map +1 -0
  324. package/dist/test/collections/sheet-transactions.examples.d.ts +7 -0
  325. package/dist/test/collections/sheet-transactions.examples.d.ts.map +1 -0
  326. package/dist/test/collections/sheet-transactions.examples.js +58 -0
  327. package/dist/test/collections/sheet-transactions.examples.js.map +1 -0
  328. package/dist/test/collections/sheet.examples.d.ts +52 -5
  329. package/dist/test/collections/sheet.examples.d.ts.map +1 -1
  330. package/dist/test/collections/sheet.examples.js +500 -158
  331. package/dist/test/collections/sheet.examples.js.map +1 -1
  332. package/dist/test/collections/table.examples.d.ts +31 -3
  333. package/dist/test/collections/table.examples.d.ts.map +1 -1
  334. package/dist/test/collections/table.examples.js +188 -28
  335. package/dist/test/collections/table.examples.js.map +1 -1
  336. package/dist/test/contracts/editing.examples.d.ts +7 -0
  337. package/dist/test/contracts/editing.examples.d.ts.map +1 -0
  338. package/dist/test/contracts/editing.examples.js +58 -0
  339. package/dist/test/contracts/editing.examples.js.map +1 -0
  340. package/dist/test/layout/splitter.examples.d.ts.map +1 -1
  341. package/dist/test/layout/splitter.examples.js +3 -1
  342. package/dist/test/layout/splitter.examples.js.map +1 -1
  343. package/dist/test/platform/slice.examples.d.ts.map +1 -1
  344. package/dist/test/platform/slice.examples.js +1 -0
  345. package/dist/test/platform/slice.examples.js.map +1 -1
  346. package/dist/test/slice/slice.examples.d.ts.map +1 -1
  347. package/dist/test/slice/slice.examples.js +5 -2
  348. package/dist/test/slice/slice.examples.js.map +1 -1
  349. package/package.json +4 -3
  350. package/dist/src/collections/plan/data-forms.d.ts +0 -332
  351. package/dist/src/collections/plan/data-forms.d.ts.map +0 -1
  352. package/dist/src/collections/plan/data-forms.js +0 -212
  353. package/dist/src/collections/plan/data-forms.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/runtime/collections/sheet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACH,KAAK,IAAI,YAAY,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;GAKG;AACH,iBAAS,QAAQ,CAAC,CAAC,SAAS,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EACjE,KAAK,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAC5F,SAAS,CAAC;AACb,8FAA8F;AAC9F,iBAAS,QAAQ,CAAC,CAAC,SAAS,UAAU,EAClC,KAAK,EAAE;IAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,GACnF,SAAS,CAAC;AACb;+DAC+D;AAC/D,iBAAS,QAAQ,CAAC,CAAC,SAAS,UAAU,EAClC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,GACjI,SAAS,CAAC;AAYb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,KAAK,EAAE,OAAO,QAAQ,GAAG;IAClC,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC;IACvC,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;CAQnC,CAAC"}
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/runtime/collections/sheet.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,10 @@ function SheetTag(props) {
8
8
  const { data, columns, ...options } = props;
9
9
  return SheetFactory.Root(data, columns, hasKeys(options) ? options : undefined);
10
10
  }
11
+ // The tag IS the root, so `Root` is the one factory member it does not carry.
12
+ // Derived, never hand-listed: a member added to `SheetNamespace` rides the tag
13
+ // with no edit here (#862, as #814 did for the Plan).
14
+ const { Root: _root, ...authoring } = SheetFactory;
11
15
  /**
12
16
  * The planning spreadsheet — rows are the host's records, columns are TYPED
13
17
  * (`Sheet.column.date` / `quantity` / `lookup` / `reference` / `enum` /
@@ -22,24 +26,30 @@ function SheetTag(props) {
22
26
  * @example
23
27
  * ```tsx
24
28
  * // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
25
- * import { East, ArrayType, DateTimeType, FloatType, OptionType, StringType, StructType, none } from "@elaraai/east";
29
+ * import { ArrayType, DateTimeType, East, FloatType, OptionType, StringType, StructType, none } from "@elaraai/east";
26
30
  * import { Reactive, Sheet, State, UIComponentType } from "@elaraai/east-ui";
27
31
  *
28
- * const JobType = StructType({ id: StringType, start: OptionType(DateTimeType), task: StringType, qty: OptionType(FloatType) });
29
- *
30
- * const jobs = East.function([], UIComponentType, (_$) => (
32
+ * const sheet = East.function([], UIComponentType, (_$) => (
31
33
  * <Reactive>{$ => {
32
- * const rows = $.let(State.bind([ArrayType(JobType)], "jobs", [{ id: "j1", start: none, task: "Machining", qty: none }]));
34
+ * const JobType = StructType({
35
+ * id: StringType,
36
+ * start: OptionType(DateTimeType), // none = blank cell
37
+ * task: StringType, // "" = blank cell
38
+ * qty: OptionType(FloatType),
39
+ * });
40
+ * const jobs = $.let(State.bind([ArrayType(JobType)], "sheet_basic_jobs", [
41
+ * { id: "j1", start: none, task: "Machining", qty: none },
42
+ * ]));
33
43
  * return (
34
44
  * <Sheet
35
- * data={rows.read()}
45
+ * data={jobs}
36
46
  * id="id"
37
47
  * columns={{
38
- * start: Sheet.column.date(JobType, { header: "Start", sub: "d/m · fri · +3d" }),
48
+ * start: Sheet.column.date(JobType, { header: "Start", sub: "dd / mm / yyyy" }),
39
49
  * task: Sheet.column.text(JobType, { header: "Task" }),
40
- * qty: Sheet.column.quantity(JobType, { header: "Qty" }),
50
+ * qty: Sheet.column.quantity(JobType, { header: "Qty" }), // no driver on this sheet — the two-argument form
41
51
  * }}
42
- * onUpdate={rows.write}
52
+ * onUpdate={jobs.write}
43
53
  * />
44
54
  * );
45
55
  * }}</Reactive>
@@ -47,19 +57,17 @@ function SheetTag(props) {
47
57
  * ```
48
58
  *
49
59
  * @remarks
50
- * Carries the whole authoring namespace — `Sheet.column.*` (the builders),
51
- * `Sheet.register.members` / `.concat`, `Sheet.driver`, `Sheet.link.arity` /
52
- * `.check` / `.parse` / `.print`, `Sheet.patch`, and `Sheet.Types.*` (the
53
- * closed wire types plus the typed constructors `Context(R, D)` / `Fill(T)` /
54
- * `Patch(R)` / `Proposal(R)` / `Edit(R)` / `CheckContext(R)`). Desugars to
60
+ * Carries the factory namespace except `Root` (the tag is the root):
61
+ * `Sheet.column.*` (the builders), `Sheet.register.members` / `.concat`,
62
+ * `Sheet.driver`, `Sheet.link.arity` / `.check` / `.parse` / `.print`,
63
+ * `Sheet.patch`, `Sheet.apply` (a checked batch applied to a collection),
64
+ * `Sheet.group` / `Sheet.group.cell.*` (grouped rows, #740 — with loose rows
65
+ * between the groups over `Sheet.Types.Entry` entries, #846), `Sheet.subRows`
66
+ * / `Sheet.subRow` (sub rows, #844), and `Sheet.Types.*` (the closed wire
67
+ * types plus the typed constructors, among them `DraftContext(R, D)` /
68
+ * `Fill(T)` / `Patch(R)` / `Proposal(R)` / `CheckContext(R)` / `Draft(R)` /
69
+ * `PatchEvent(E)` / `ChangeSet(E)` / `Entry(G, "rows")`). Desugars to
55
70
  * `Sheet.Root(data, columns, options)`.
56
71
  */
57
- export const Sheet = Object.assign(SheetTag, {
58
- column: SheetFactory.column,
59
- register: SheetFactory.register,
60
- driver: SheetFactory.driver,
61
- link: SheetFactory.link,
62
- patch: SheetFactory.patch,
63
- Types: SheetFactory.Types,
64
- });
72
+ export const Sheet = Object.assign(SheetTag, authoring);
65
73
  //# sourceMappingURL=sheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/runtime/collections/sheet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EACH,KAAK,IAAI,YAAY,GAIxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAqB5C,SAAS,QAAQ,CACb,KAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAsE,CAAC;IAC7G,OAAQ,YAAY,CAAC,IAA2D,CAC5E,IAAI,EACJ,OAAO,EACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,MAAM,KAAK,GAOd,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IACxB,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;IAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzB,KAAK,EAAE,YAAY,CAAC,KAAK;CAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/runtime/collections/sheet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EACH,KAAK,IAAI,YAAY,GAUxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiD5C,SAAS,QAAQ,CACb,KAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAsE,CAAC;IAC7G,OAAQ,YAAY,CAAC,IAA2D,CAC5E,IAAI,EACJ,OAAO,EACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;AACN,CAAC;AAED,8EAA8E;AAC9E,+EAA+E;AAC/E,sDAAsD;AACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,MAAM,CAAC,MAAM,KAAK,GAAmD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC"}
@@ -5,35 +5,42 @@
5
5
  /**
6
6
  * `<Table>` tag — see the export's JSDoc.
7
7
  */
8
- import type { SubtypeExprOrValue, ArrayType, ExprType, StructType } from "@elaraai/east";
8
+ import type { ArrayType, ExprType, RecursiveType, StructType } from "@elaraai/east";
9
9
  import type { PagedSource } from "../../contracts/source.js";
10
- import { Table as TableFactory, type ColumnSpec, type DataFieldKeys, type DataRowType, type TableOptions } from "../../collections/table/index.js";
10
+ import { Table as TableFactory, type ColumnSpec, type DataFieldKeys, type DataRowType, type TableData, type TableOptions, type TableRowNode } from "../../collections/table/index.js";
11
11
  import type { UIElement } from "../runtime.js";
12
+ /** A paged source's row as its accessors receive it — the struct, or a recursive row's node (#954). */
13
+ type PagedRowType<R> = TableRowNode<R> extends StructType ? TableRowNode<R> : StructType;
12
14
  /**
13
15
  * `<Table data={rows} columns={["name", "age"]} striped />` — schema-typed
14
16
  * table. Maps to `Table.Root`. `columns` is typed directly as `ColumnSpec<T>`
15
17
  * (not an inferred generic) so an object-form column map gets excess-property
16
- * checked — a key that is not a data field is a type error.
18
+ * checked — a key that is not a data field is a type error. Recursive rows
19
+ * nest with `tree` (#954), their accessors reading each row's node.
17
20
  */
18
- declare function TableTag<T extends SubtypeExprOrValue<ArrayType<StructType>>>(props: {
21
+ declare function TableTag<T extends TableData>(props: {
19
22
  data: T;
20
23
  columns: ColumnSpec<T>;
21
24
  } & TableOptions<DataFieldKeys<T>, DataRowType<T>>): UIElement;
22
25
  /** The PAGED arm (#576) — `data` is a windowed source of the same rows; the
23
26
  * row type rides structurally in its `page` signature, so `columns` is checked
24
- * against it exactly as for an inline array. */
25
- declare function TableTag<R extends StructType>(props: {
27
+ * against it exactly as for an inline array. A source of recursive rows pages
28
+ * its top-level rows, each with its subtree (#954). */
29
+ declare function TableTag<R extends StructType | RecursiveType<StructType>>(props: {
26
30
  data: PagedSource<ArrayType<R>>;
27
31
  columns: ColumnSpec<ExprType<ArrayType<R>>>;
28
- } & TableOptions<Extract<keyof R["fields"], string>, R>): UIElement;
32
+ } & TableOptions<Extract<keyof PagedRowType<R>["fields"], string>, PagedRowType<R>>): UIElement;
29
33
  /**
30
34
  * Schema-typed data table — renders an array of struct rows as columns. The
31
35
  * row type drives everything: `columns` is a key list or a per-key config map
32
36
  * ({@link ColumnSpec}, with `header` / `width` / `value` sort-key / `render`
33
- * cell renderer), and the remaining display props (striped, density, frozen
34
- * columns, row status, selection, pagination, expandable rows, footer rows,
35
- * column groups, interaction callbacks) are flat ({@link TableOptions}). Reach
36
- * for it whenever tabular records need sorting, selection, or rich cells.
37
+ * cell renderer / `aggregate` subtotal), and the remaining display props
38
+ * (striped, density, frozen columns, row status, selection, pagination,
39
+ * expandable rows, footer rows, column groups, interaction callbacks) are flat
40
+ * ({@link TableOptions}). Rows nest to any depth with `tree={{ children }}`
41
+ * (#954): a parent draws its own cells and, in an `aggregate` column, its
42
+ * children's subtotal. Reach for it whenever tabular records need sorting,
43
+ * selection, or rich cells.
37
44
  *
38
45
  * @example
39
46
  * ```tsx
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/collections/table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACH,KAAK,IAAI,YAAY,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACpB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;GAKG;AACH,iBAAS,QAAQ,CAAC,CAAC,SAAS,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EACjE,KAAK,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAC5F,SAAS,CAAC;AACb;;iDAEiD;AACjD,iBAAS,QAAQ,CAAC,CAAC,SAAS,UAAU,EAClC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GACjF,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAC1D,SAAS,CAAC;AAYb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,KAAK,EAAE,OAAO,QAAQ,GAAG;IAAE,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAA;CACd,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/collections/table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACH,KAAK,IAAI,YAAY,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EACpB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,uGAAuG;AACvG,KAAK,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAEzF;;;;;;GAMG;AACH,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EACjC,KAAK,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAC5F,SAAS,CAAC;AACb;;;wDAGwD;AACxD,iBAAS,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,EAC9D,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GACjF,YAAY,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACtF,SAAS,CAAC;AAYb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,KAAK,EAAE,OAAO,QAAQ,GAAG;IAAE,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAA;CACd,CAAC"}
@@ -12,10 +12,13 @@ function TableTag(props) {
12
12
  * Schema-typed data table — renders an array of struct rows as columns. The
13
13
  * row type drives everything: `columns` is a key list or a per-key config map
14
14
  * ({@link ColumnSpec}, with `header` / `width` / `value` sort-key / `render`
15
- * cell renderer), and the remaining display props (striped, density, frozen
16
- * columns, row status, selection, pagination, expandable rows, footer rows,
17
- * column groups, interaction callbacks) are flat ({@link TableOptions}). Reach
18
- * for it whenever tabular records need sorting, selection, or rich cells.
15
+ * cell renderer / `aggregate` subtotal), and the remaining display props
16
+ * (striped, density, frozen columns, row status, selection, pagination,
17
+ * expandable rows, footer rows, column groups, interaction callbacks) are flat
18
+ * ({@link TableOptions}). Rows nest to any depth with `tree={{ children }}`
19
+ * (#954): a parent draws its own cells and, in an `aggregate` column, its
20
+ * children's subtotal. Reach for it whenever tabular records need sorting,
21
+ * selection, or rich cells.
19
22
  *
20
23
  * @example
21
24
  * ```tsx
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/runtime/collections/table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EACH,KAAK,IAAI,YAAY,GAKxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAmB5C,SAAS,QAAQ,CACb,KAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAsE,CAAC;IAC7G,OAAQ,YAAY,CAAC,IAA2D,CAC5E,IAAI,EACJ,OAAO,EACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,CAAC,MAAM,KAAK,GACd,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/runtime/collections/table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EACH,KAAK,IAAI,YAAY,GAOxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAwB5C,SAAS,QAAQ,CACb,KAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAsE,CAAC;IAC7G,OAAQ,YAAY,CAAC,IAA2D,CAC5E,IAAI,EACJ,OAAO,EACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,MAAM,KAAK,GACd,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC"}
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * @packageDocumentation
23
23
  */
24
- import { ArrayType, type BlockBuilder, type DictType, type EastType, type ExprType, type FunctionType, StringType, type StructType, type SubtypeExprOrValue, type TypeOf } from "@elaraai/east";
24
+ import { type ArrayType, type BlockBuilder, type EastType, type ExprType, type FunctionType, type StructType, type SubtypeExprOrValue, type TypeOf } from "@elaraai/east";
25
25
  /**
26
26
  * Reifies an accessor lambda into an East function, inferring the output
27
27
  * type from the lambda's expanded result (single expansion via
@@ -61,8 +61,9 @@ export declare function reifyAccessor<const I extends EastType[], R>(inputs: [..
61
61
  export declare function mapRows<T extends EastType>(rows: ExprType<ArrayType<StructType>>, outType: T, body: (row: ExprType<StructType>) => SubtypeExprOrValue<T>): ExprType<ArrayType<T>>;
62
62
  /**
63
63
  * `mapRows` for row mappers whose body needs a block builder — per-row
64
- * normalizations that declare `$.let` bindings or emit statements (Matrix,
65
- * Library row construction).
64
+ * normalizations that declare `$.let` bindings or emit statements (Library
65
+ * row construction; the Table and the Matrix build theirs in the tree walk,
66
+ * `shared/tree.ts`).
66
67
  *
67
68
  * @typeParam T - The fixed East element type the mapper produces
68
69
  * @param rows - The caller's rows array expression
@@ -73,47 +74,4 @@ export declare function mapRows<T extends EastType>(rows: ExprType<ArrayType<Str
73
74
  * @internal
74
75
  */
75
76
  export declare function mapRowsBlock<T extends EastType>(rows: ExprType<ArrayType<StructType>>, outType: T, body: ($: BlockBuilder<T>, row: ExprType<StructType>) => SubtypeExprOrValue<T>): ExprType<ArrayType<T>>;
76
- /**
77
- * `mapRowsBlock` for per-row constructors that produce a **subtree** — an
78
- * array of output elements per row — rather than exactly one element: the
79
- * reified body's results are concat-flattened eagerly in a single pass, so
80
- * no intermediate array-of-arrays is materialized (Plan row construction,
81
- * where one data row expands to a parent plus its re-parented children).
82
- *
83
- * @typeParam T - The fixed East element type of the flattened result
84
- * @param rows - The caller's rows array expression
85
- * @param outType - The fixed East output ELEMENT type (the helper flattens `ArrayType(outType)` subtrees)
86
- * @param body - Per-row subtree constructor; expanded exactly once against a typed placeholder row
87
- * @returns The eagerly-flattened array expression
88
- *
89
- * @internal
90
- */
91
- export declare function flatMapRowsBlock<T extends EastType>(rows: ExprType<ArrayType<StructType>>, outType: T, body: ($: BlockBuilder<ArrayType<NoInfer<T>>>, row: ExprType<StructType>) => SubtypeExprOrValue<ArrayType<NoInfer<T>>>): ExprType<ArrayType<T>>;
92
- /**
93
- * `flatMapRowsBlock` for per-ENTRY constructors that produce a KEYED subtree —
94
- * a `Dict` of output elements per source entry — folded into one dictionary
95
- * (Plan row construction, where the source is a keyed collection and the
96
- * canvas rows inherit its keys, so duplicates are unconstructable).
97
- *
98
- * @remarks
99
- * The body receives the entry's `(value, key)`, because a keyed dataset does
100
- * not repeat its key inside the value — the key is where a row's identity
101
- * comes from, not a field to re-derive.
102
- *
103
- * The accumulator is folded with `unionInPlace`, never with the pure `union`:
104
- * `union` copies the whole B-tree per step, so a 200-entry window would rebuild
105
- * the dictionary 200 times. `reduce` threads ONE accumulator and each entry's
106
- * subtree is merged into it — the same shape `groupToArrays` uses for arrays.
107
- *
108
- * @typeParam K - The output dictionary's key type
109
- * @typeParam V - The output dictionary's value type
110
- * @param entries - The caller's keyed source expression
111
- * @param dictType - The fixed East output dictionary type
112
- * @param merge - Conflict policy when two entries produce the same key, as `(existing, incoming, key) => kept`
113
- * @param body - Per-entry subtree constructor; expanded exactly once against typed placeholders
114
- * @returns The folded dictionary expression
115
- *
116
- * @internal
117
- */
118
- export declare function foldEntriesToDict<K extends EastType, V extends EastType>(entries: ExprType<DictType<StringType, StructType>>, dictType: DictType<K, V>, merge: SubtypeExprOrValue<FunctionType<[NoInfer<V>, NoInfer<V>, NoInfer<K>], NoInfer<V>>>, body: ($: BlockBuilder<DictType<NoInfer<K>, NoInfer<V>>>, value: ExprType<StructType>, key: ExprType<StringType>) => SubtypeExprOrValue<DictType<NoInfer<K>, NoInfer<V>>>): ExprType<DictType<K, V>>;
119
77
  //# sourceMappingURL=reify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reify.d.ts","sourceRoot":"","sources":["../../../src/shared/reify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reify.d.ts","sourceRoot":"","sources":["../../../src/shared/reify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACH,KAAK,SAAS,EACd,KAAK,YAAY,EAEjB,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACd,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,EAAE,CAAC,EACvD,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EACd,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,KAAK,CAAC,GAC7D,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAOtC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EACtC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EACrC,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAC3D,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAIxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC3C,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EACrC,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAC/E,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAIxB"}
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * @packageDocumentation
23
23
  */
24
- import { ArrayType, East, Expr, StringType, } from "@elaraai/east";
24
+ import { East, Expr, } from "@elaraai/east";
25
25
  /**
26
26
  * Reifies an accessor lambda into an East function, inferring the output
27
27
  * type from the lambda's expanded result (single expansion via
@@ -66,8 +66,9 @@ export function mapRows(rows, outType, body) {
66
66
  }
67
67
  /**
68
68
  * `mapRows` for row mappers whose body needs a block builder — per-row
69
- * normalizations that declare `$.let` bindings or emit statements (Matrix,
70
- * Library row construction).
69
+ * normalizations that declare `$.let` bindings or emit statements (Library
70
+ * row construction; the Table and the Matrix build theirs in the tree walk,
71
+ * `shared/tree.ts`).
71
72
  *
72
73
  * @typeParam T - The fixed East element type the mapper produces
73
74
  * @param rows - The caller's rows array expression
@@ -82,62 +83,4 @@ export function mapRowsBlock(rows, outType, body) {
82
83
  const fn = East.function([rowType], outType, ($, row) => body($, row));
83
84
  return rows.map((_$, row) => fn(row));
84
85
  }
85
- /**
86
- * `mapRowsBlock` for per-row constructors that produce a **subtree** — an
87
- * array of output elements per row — rather than exactly one element: the
88
- * reified body's results are concat-flattened eagerly in a single pass, so
89
- * no intermediate array-of-arrays is materialized (Plan row construction,
90
- * where one data row expands to a parent plus its re-parented children).
91
- *
92
- * @typeParam T - The fixed East element type of the flattened result
93
- * @param rows - The caller's rows array expression
94
- * @param outType - The fixed East output ELEMENT type (the helper flattens `ArrayType(outType)` subtrees)
95
- * @param body - Per-row subtree constructor; expanded exactly once against a typed placeholder row
96
- * @returns The eagerly-flattened array expression
97
- *
98
- * @internal
99
- */
100
- export function flatMapRowsBlock(rows, outType, body) {
101
- const rowType = Expr.type(rows).value;
102
- const fn = East.function([rowType], ArrayType(outType), ($, row) => body($, row));
103
- return rows.reduce((_$, acc, row) => acc.concat(fn(row)), East.value([], ArrayType(outType)));
104
- }
105
- /**
106
- * `flatMapRowsBlock` for per-ENTRY constructors that produce a KEYED subtree —
107
- * a `Dict` of output elements per source entry — folded into one dictionary
108
- * (Plan row construction, where the source is a keyed collection and the
109
- * canvas rows inherit its keys, so duplicates are unconstructable).
110
- *
111
- * @remarks
112
- * The body receives the entry's `(value, key)`, because a keyed dataset does
113
- * not repeat its key inside the value — the key is where a row's identity
114
- * comes from, not a field to re-derive.
115
- *
116
- * The accumulator is folded with `unionInPlace`, never with the pure `union`:
117
- * `union` copies the whole B-tree per step, so a 200-entry window would rebuild
118
- * the dictionary 200 times. `reduce` threads ONE accumulator and each entry's
119
- * subtree is merged into it — the same shape `groupToArrays` uses for arrays.
120
- *
121
- * @typeParam K - The output dictionary's key type
122
- * @typeParam V - The output dictionary's value type
123
- * @param entries - The caller's keyed source expression
124
- * @param dictType - The fixed East output dictionary type
125
- * @param merge - Conflict policy when two entries produce the same key, as `(existing, incoming, key) => kept`
126
- * @param body - Per-entry subtree constructor; expanded exactly once against typed placeholders
127
- * @returns The folded dictionary expression
128
- *
129
- * @internal
130
- */
131
- export function foldEntriesToDict(entries, dictType,
132
- // `dictType` is the ONLY inference site: the loose `SubtypeExprOrValue`
133
- // faces below would otherwise widen `V` to the subtype form and the result
134
- // would stop being assignable to the exact collection type.
135
- merge, body) {
136
- const valueType = Expr.type(entries).value;
137
- const fn = East.function([valueType, StringType], dictType, ($, value, key) => body($, value, key));
138
- return entries.reduce(($, acc, value, key) => {
139
- $(acc.unionInPlace(fn(value, key), merge));
140
- return acc;
141
- }, East.value(new Map(), dictType));
142
- }
143
86
  //# sourceMappingURL=reify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reify.js","sourceRoot":"","sources":["../../../src/shared/reify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reify.js","sourceRoot":"","sources":["../../../src/shared/reify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAGH,IAAI,EAEJ,IAAI,GAMP,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CACzB,MAAc,EACd,QAA4D;IAE5D,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CACpB,MAAM,EACN,SAAS,EACT,CAAC,EAAW,EAAE,GAAG,IAAwC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAClF,CAAC;IACF,OAAO,EAAqD,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CACnB,IAAqC,EACrC,OAAU,EACV,IAA0D;IAE1D,MAAM,OAAO,GAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,CAAC,KAAK,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAsC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CACxB,IAAqC,EACrC,OAAU,EACV,IAA8E;IAE9E,MAAM,OAAO,GAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,CAAC,KAAK,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAoB,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAsC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Nested rows (#954, #955) — a collection's own tree, walked in pre-order.
7
+ *
8
+ * A Table's and a Matrix's rows nest the way the Plan's do (#822): a row
9
+ * carries its children, to any depth, through `tree={{ children, collapsed }}`.
10
+ * The walk is ONE reified East function over the data — an explicit stack,
11
+ * since depth is data (the Plan's walk, `collections/plan/series.ts`) — that
12
+ * turns the author's elements into the component's own rows, each parent
13
+ * followed by its subtree, each with its depth.
14
+ *
15
+ * Not exported from the package barrel — factory-internal; the components
16
+ * re-export the input types under their own names.
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+ import { type BlockBuilder, type EastType, type ExpandOnce, type ExprType, type FunctionType, type RecursiveType, type SubtypeExprOrValue, ArrayType, BooleanType, Expr, IntegerType, StructType } from "@elaraai/east";
21
+ /**
22
+ * A data element as a tree's accessors receive it — a recursive element as
23
+ * its NODE, so an accessor reads its fields directly at every depth
24
+ * (`(r) => r.lines`), as the Plan's series do.
25
+ *
26
+ * @typeParam S - The data's element type
27
+ */
28
+ export type TreeNode<S> = S extends RecursiveType<infer U> ? ExpandOnce<U, S> : S;
29
+ /**
30
+ * How a collection's rows nest — the data's own tree, to any depth.
31
+ *
32
+ * @remarks
33
+ * `children` returns a row's child rows: more of the SAME row type (an `Array`
34
+ * of the data's element type), so every row fills the same columns — a
35
+ * `RecursiveType` row's own field (`r => r.lines`), or a lookup over flat data
36
+ * (`r => all.filter((_$, c) => c.parent.equal(r.id))`), the data holding only
37
+ * the top-level rows. `collapsed` says which parents start closed.
38
+ *
39
+ * @typeParam RowType - The row an accessor receives — a struct, or a recursive row's node
40
+ */
41
+ export interface TreeInput<RowType extends StructType = StructType> {
42
+ /** A row's child rows — an `Array` of the data's element type (a recursive row's own field, say). */
43
+ children: (row: ExprType<RowType>) => Expr;
44
+ /** Whether a parent starts collapsed — `true` for every parent, or per row. Default open. */
45
+ collapsed?: boolean | ((row: ExprType<RowType>) => SubtypeExprOrValue<BooleanType>);
46
+ }
47
+ /** A collection's element type, resolved for its accessors. */
48
+ export interface TreeElement {
49
+ /** The data's element type — a struct, or a recursive type whose node is one. */
50
+ elementType: EastType;
51
+ /** The struct every accessor receives — the element, or its node. */
52
+ rowType: StructType;
53
+ /** An element as the accessors receive it — its node, when recursive. */
54
+ nodeOf: (element: ExprType<EastType>) => ExprType<StructType>;
55
+ }
56
+ /**
57
+ * Resolves a collection's element type for its accessors: a struct as it is,
58
+ * a recursive element through its node.
59
+ *
60
+ * @param component - The component, for the message (`"Table"`)
61
+ * @param elementType - The data's element type
62
+ * @returns The element, its row struct and the node accessor
63
+ * @throws {Error} When the element is neither a struct nor a recursive type whose node is one
64
+ */
65
+ export declare function treeElement(component: string, elementType: EastType): TreeElement;
66
+ /**
67
+ * The collection's rows IN PRE-ORDER, as one East function over the data: a
68
+ * parent, then its subtree, each row built by `rowOf` with its depth and
69
+ * whether it starts collapsed (only a row with children ever does). Without a
70
+ * `tree`, every element is a row at depth 0, in data order.
71
+ *
72
+ * @remarks
73
+ * The tree's depth is data, so the walk is an explicit stack: a level's rows
74
+ * go on REVERSED, so the stack pops the first of them first. Every function
75
+ * the walk calls is reified once and bound once — a captured function
76
+ * referenced in a loop would be re-inlined per use.
77
+ *
78
+ * @typeParam Row - The component's row type
79
+ * @param component - The component, for the build-time messages (`"Table"`)
80
+ * @param element - The collection's element ({@link treeElement})
81
+ * @param rowType - The component's row type
82
+ * @param rowOf - One element's row, given its depth and whether it starts collapsed
83
+ * @param tree - How the rows nest; absent, the collection is flat
84
+ * @returns A function from the collection to its rows
85
+ * @throws {Error} When `tree.children` returns anything but more of the collection's rows
86
+ */
87
+ export declare function preOrderRows<Row extends EastType>(component: string, element: TreeElement, rowType: Row, rowOf: ($: BlockBuilder<Row>, element: ExprType<EastType>, depth: ExprType<IntegerType>, collapsed: ExprType<BooleanType>) => SubtypeExprOrValue<Row>, tree: TreeInput | undefined): ExprType<FunctionType<[ArrayType<EastType>], ArrayType<Row>>>;
88
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/shared/tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,SAAS,EACT,WAAW,EAGX,IAAI,EACJ,WAAW,EACX,UAAU,EAIb,MAAM,eAAe,CAAC;AAGvB;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAElF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IAC9D,qGAAqG;IACrG,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3C,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;CACvF;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IACxB,iFAAiF;IACjF,WAAW,EAAE,QAAQ,CAAC;IACtB,qEAAqE;IACrE,OAAO,EAAE,UAAU,CAAC;IACpB,yEAAyE;IACzE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,WAAW,CAajF;AAiCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,GAAG,SAAS,QAAQ,EAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,kBAAkB,CAAC,GAAG,CAAC,EACrJ,IAAI,EAAE,SAAS,GAAG,SAAS,GAC5B,QAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAiD/D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Nested rows (#954, #955) — a collection's own tree, walked in pre-order.
7
+ *
8
+ * A Table's and a Matrix's rows nest the way the Plan's do (#822): a row
9
+ * carries its children, to any depth, through `tree={{ children, collapsed }}`.
10
+ * The walk is ONE reified East function over the data — an explicit stack,
11
+ * since depth is data (the Plan's walk, `collections/plan/series.ts`) — that
12
+ * turns the author's elements into the component's own rows, each parent
13
+ * followed by its subtree, each with its depth.
14
+ *
15
+ * Not exported from the package barrel — factory-internal; the components
16
+ * re-export the input types under their own names.
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+ import { ArrayType, BooleanType, East, EastTypeType, Expr, IntegerType, StructType, isTypeEqual, printFor, toEastTypeValue, } from "@elaraai/east";
21
+ import { reifyAccessor } from "./reify.js";
22
+ /**
23
+ * Resolves a collection's element type for its accessors: a struct as it is,
24
+ * a recursive element through its node.
25
+ *
26
+ * @param component - The component, for the message (`"Table"`)
27
+ * @param elementType - The data's element type
28
+ * @returns The element, its row struct and the node accessor
29
+ * @throws {Error} When the element is neither a struct nor a recursive type whose node is one
30
+ */
31
+ export function treeElement(component, elementType) {
32
+ const recursive = elementType.type === "Recursive";
33
+ const rowType = (recursive ? elementType.node : elementType);
34
+ if (rowType.type !== "Struct") {
35
+ throw new Error(`${component}: rows must be structs, or recursive rows whose node is a struct — got ` +
36
+ `${rowType.type}. Map the collection to a struct per row before passing it.`);
37
+ }
38
+ const nodeOf = (element) => (recursive
39
+ ? element.unwrap()
40
+ : element);
41
+ return { elementType, rowType, nodeOf };
42
+ }
43
+ /** East's own printer over a type value — the types a build-time message names. */
44
+ const printType = printFor(EastTypeType);
45
+ /**
46
+ * A `tree.children` accessor as a real East function: from a row to its child
47
+ * rows, which must be more of the collection's own rows — an `Array` of its
48
+ * element type — because every row fills the same columns.
49
+ *
50
+ * @param component - The component, for the message (`"Table"`)
51
+ * @param element - The collection's element
52
+ * @param children - The author's accessor
53
+ * @returns The accessor, reified once
54
+ * @throws {Error} When the accessor returns anything but an Array of the element type
55
+ */
56
+ function childRowsOf(component, element, children) {
57
+ const fn = reifyAccessor([element.elementType], (e) => children(element.nodeOf(e)));
58
+ const output = Expr.type(fn).output;
59
+ const want = ArrayType(element.elementType);
60
+ if (!isTypeEqual(output, want)) {
61
+ throw new Error(`${component}: \`tree.children\` returns a row's child rows — more of the ${component.toLowerCase()}'s own rows, ` +
62
+ `${printType(toEastTypeValue(want))} — but it returned ${printType(toEastTypeValue(output))}. ` +
63
+ "Every row fills the same columns: return a recursive row's own children, or look them up among the rows.");
64
+ }
65
+ return fn;
66
+ }
67
+ /**
68
+ * The collection's rows IN PRE-ORDER, as one East function over the data: a
69
+ * parent, then its subtree, each row built by `rowOf` with its depth and
70
+ * whether it starts collapsed (only a row with children ever does). Without a
71
+ * `tree`, every element is a row at depth 0, in data order.
72
+ *
73
+ * @remarks
74
+ * The tree's depth is data, so the walk is an explicit stack: a level's rows
75
+ * go on REVERSED, so the stack pops the first of them first. Every function
76
+ * the walk calls is reified once and bound once — a captured function
77
+ * referenced in a loop would be re-inlined per use.
78
+ *
79
+ * @typeParam Row - The component's row type
80
+ * @param component - The component, for the build-time messages (`"Table"`)
81
+ * @param element - The collection's element ({@link treeElement})
82
+ * @param rowType - The component's row type
83
+ * @param rowOf - One element's row, given its depth and whether it starts collapsed
84
+ * @param tree - How the rows nest; absent, the collection is flat
85
+ * @returns A function from the collection to its rows
86
+ * @throws {Error} When `tree.children` returns anything but more of the collection's rows
87
+ */
88
+ export function preOrderRows(component, element, rowType, rowOf, tree) {
89
+ const { elementType, nodeOf } = element;
90
+ const rowFn = East.function([elementType, IntegerType, BooleanType], rowType, ($, e, depth, collapsed) => rowOf($, e, depth, collapsed));
91
+ const collapsedInput = tree?.collapsed;
92
+ const nesting = tree === undefined ? undefined : {
93
+ children: childRowsOf(component, element, tree.children),
94
+ collapsed: East.function([elementType], BooleanType, (_$, e) => (typeof collapsedInput === "function"
95
+ ? East.value(collapsedInput(nodeOf(e)), BooleanType)
96
+ : East.value(collapsedInput ?? false, BooleanType))),
97
+ };
98
+ const rowsType = ArrayType(rowType);
99
+ const Frame = StructType({ value: elementType, depth: IntegerType });
100
+ const Frames = ArrayType(Frame);
101
+ const walk = East.function([ArrayType(elementType)], rowsType, ($, collection) => {
102
+ const row = $.const(rowFn);
103
+ const out = $.let([], rowsType);
104
+ if (nesting === undefined) {
105
+ $.for(collection, ($2, e) => {
106
+ $2(out.pushLast(row(e, 0n, false)));
107
+ });
108
+ return out;
109
+ }
110
+ const kids = $.const(nesting.children);
111
+ const fold = $.const(nesting.collapsed);
112
+ const stack = $.let([], Frames);
113
+ $.for(collection, ($2, e) => {
114
+ $2(stack.pushLast(East.value({ value: e, depth: 0n }, Frame)));
115
+ });
116
+ $(stack.reverseInPlace());
117
+ $.while(stack.size().greater(0n), ($2) => {
118
+ const frame = $2.let(stack.popLast(), Frame);
119
+ const below = $2.let(kids(frame.value), ArrayType(elementType));
120
+ // Only a row with children folds.
121
+ const closed = $2.let(below.size().greater(0n).and(() => fold(frame.value)), BooleanType);
122
+ $2(out.pushLast(row(frame.value, frame.depth, closed)));
123
+ const next = $2.let([], Frames);
124
+ $2.for(below, ($3, e) => {
125
+ $3(next.pushLast(East.value({ value: e, depth: frame.depth.add(1n) }, Frame)));
126
+ });
127
+ $2(next.reverseInPlace());
128
+ $2(stack.append(next));
129
+ });
130
+ return out;
131
+ });
132
+ return walk;
133
+ }
134
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/shared/tree.ts"],"names":[],"mappings":"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"}