@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":"ir.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGhF,OAAO,EAMH,cAAc,EASjB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,eAAe,CAA+C,CAAC;AAC7H,6CAA6C;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCvB,CAAC;AACH,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC"}
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,eAAe,CAAC;AAMvB,OAAO,EAWH,eAAe,EAClB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc;;;;;EAKzB,CAAC;AACH,6CAA6C;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCvB,CAAC;AACH,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC"}
@@ -5,30 +5,48 @@
5
5
  /**
6
6
  * The Plan's resolved UIComponent-coupled IR — since the data-interface
7
7
  * redesign only the ROOT and the review config touch `UIComponentType`; the
8
- * whole row vocabulary (elements, kinds, rows, templates) is pure
9
- * data in `./types.ts`. These are the named twins of the `Plan` arm in
10
- * `component.ts` (which spells the SAME shapes inline with the recursion
11
- * `node`). Keep the two in lockstep: every factory builds values of these
12
- * types and `Plan.Root` constructs the variant against the arm, so any
13
- * drift fails the specs at build time.
8
+ * whole row vocabulary (elements, kinds, rows) is pure data in `./types.ts`.
9
+ * These are the named twins of the `Plan` arm in `component.ts`, which spells
10
+ * the SAME shapes inline with the recursion `node`. The renderer decodes the
11
+ * arm's values through {@link PlanRootType}, so the two must be one East
12
+ * type: `test/collections/plan.spec.ts` compares them as East type values,
13
+ * and a field (or a field type) on only one side fails it.
14
14
  *
15
15
  * @packageDocumentation
16
16
  */
17
17
  import { ArrayType, FunctionType, NullType, OptionType, StringType, StructType, } from "@elaraai/east";
18
18
  import { UIComponentType } from "../../component.js";
19
19
  import { PickBindType } from "../../contracts/pick.js";
20
- import { reviewType } from "../../contracts/approval.js";
21
- import { CanDropFnType, DragEventType } from "../../contracts/drag.js";
20
+ import { CanDropFnType } from "../../contracts/drag.js";
22
21
  import { SliceChromeType } from "../../platform/slice/index.js";
23
- import { PlanAxisType, PlanGrainType, PlanLinkType, PlanRowsType, PlanElementRefType, PlanRowRefType, PlanRunClickEventType, PlanEventClickEventType, PlanMarkClickEventType, PlanChipClickEventType, PlanCellClickEventType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, } from "./types.js";
22
+ import { PlanAxisType, PlanGrainType, PlanLinkType, PlanRowsType, PlanElementRefType, PlanRowIdType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, PlanUiBindType, PlanEditingType, } from "./types.js";
24
23
  // ============================================================================
25
24
  // Resolved types — the UIComponent-coupled shapes at `UIComponentType`
26
25
  // ============================================================================
27
26
  /**
28
- * The Plan review config — the shared review contract at the Plan's
29
- * keyed-row subject (`{ key }`).
27
+ * The Plan's review chrome (#880) — the decision column's header, the foot's
28
+ * summary and its Rerun.
29
+ *
30
+ * @remarks
31
+ * A verdict is a GESTURE of the root's editing session: the series whose rows
32
+ * are reviewed names the field it writes (`review.verdict`), Approve / Reject
33
+ * on a row and Approve all / Reject all over the canvas draft the entries,
34
+ * and Apply sends them as one checked batch. So the chrome carries no verdict
35
+ * callbacks — the shared contract's (`reviewType`) stay with Table, Roster
36
+ * and Board until they adopt a session. Rerun changes no data, so it stays a
37
+ * callback.
38
+ *
39
+ * @property columnLabel - The decision column's header (`"Decision"` by default)
40
+ * @property summary - The foot's eyebrow — a host-composed component
41
+ * @property onRerun - The Rerun verb (absent ⇒ no Rerun button)
42
+ * @property rerunLabel - The Rerun button's label (`"Rerun"` by default)
30
43
  */
31
- export const PlanReviewType = reviewType(PlanRowRefType, UIComponentType);
44
+ export const PlanReviewType = StructType({
45
+ columnLabel: StringType,
46
+ summary: OptionType(UIComponentType),
47
+ onRerun: OptionType(FunctionType([], NullType)),
48
+ rerunLabel: StringType,
49
+ });
32
50
  /**
33
51
  * The Plan root IR — the whole canvas.
34
52
  *
@@ -38,8 +56,11 @@ export const PlanReviewType = reviewType(PlanRowRefType, UIComponentType);
38
56
  * order is data (no sort callback), and element detail lives in the root
39
57
  * RESOLVERS: `popover` / `hover` over {@link PlanElementRefType} (a `none`
40
58
  * result opens nothing) and `expandRender` over the row ref (the R2
41
- * developer render for rows declaring `expand`) — one stored function per
42
- * surface instead of UI embedded per element.
59
+ * developer render for rows declaring `expand`, over the row's id) — one stored function per
60
+ * surface instead of UI embedded per element. A click on any element reports
61
+ * to ONE callback over the same ref (`onElementClick`, #824), and the
62
+ * interaction state a host wants to hold — selection, collapse, charts, a row
63
+ * to bring into view — rides a bound `ui` state.
43
64
  */
44
65
  export const PlanRootType = StructType({
45
66
  rows: PlanRowsType,
@@ -54,30 +75,33 @@ export const PlanRootType = StructType({
54
75
  // the action callbacks below).
55
76
  popover: OptionType(FunctionType([PlanElementRefType], OptionType(UIComponentType))),
56
77
  hover: OptionType(FunctionType([PlanElementRefType], OptionType(UIComponentType))),
57
- expandRender: OptionType(FunctionType([PlanRowRefType], UIComponentType)),
78
+ expandRender: OptionType(FunctionType([PlanRowIdType], UIComponentType)),
58
79
  // The GUTTER half of R2. An expanded row's gutter cell grows with the row
59
80
  // (one tall cell, top-aligned), and the space that opens up is the
60
81
  // author's — identity that only earns its place when the row has the
61
- // canvas. Same shape as `expandRender`, over the same row ref.
62
- expandGutter: OptionType(FunctionType([PlanRowRefType], UIComponentType)),
82
+ // canvas. Same shape as `expandRender`, over the same row id.
83
+ expandGutter: OptionType(FunctionType([PlanRowIdType], UIComponentType)),
63
84
  review: OptionType(PlanReviewType),
85
+ // The editing session (#880) — every verdict, every dropped card and every
86
+ // moved or resized element (#825) is a draft, applied as one checked batch.
87
+ editing: OptionType(PlanEditingType),
64
88
  pick: OptionType(PickBindType),
65
89
  slice: OptionType(SliceChromeType),
66
90
  footer: ArrayType(PlanFooterItemType),
67
- // DnD target role — the shared grammar verbatim (contracts/drag.ts).
68
- id: StringType,
91
+ // DnD target role — the shared grammar (contracts/drag.ts); no id, no
92
+ // library card lands (#824 — it used to be `""`), though the canvas's own
93
+ // elements still move (#825). A drop or a move is a gesture of the editing
94
+ // session (#880); `canDrop` vets it first.
95
+ id: OptionType(StringType),
69
96
  sources: ArrayType(StringType),
70
- onDrag: OptionType(FunctionType([DragEventType], NullType)),
71
97
  canDrop: OptionType(CanDropFnType),
72
- // Selection + per-element clicks.
73
- onSelect: OptionType(FunctionType([PlanRowRefType], NullType)),
74
- onRunClick: OptionType(FunctionType([PlanRunClickEventType], NullType)),
75
- onEventClick: OptionType(FunctionType([PlanEventClickEventType], NullType)),
76
- onMarkClick: OptionType(FunctionType([PlanMarkClickEventType], NullType)),
77
- onChipClick: OptionType(FunctionType([PlanChipClickEventType], NullType)),
78
- onCellClick: OptionType(FunctionType([PlanCellClickEventType], NullType)),
98
+ // Selection + the one element click (#824).
99
+ onSelect: OptionType(FunctionType([PlanRowIdType], NullType)),
100
+ onElementClick: OptionType(FunctionType([PlanElementRefType], NullType)),
79
101
  onGroupToggle: OptionType(FunctionType([PlanGroupToggleEventType], NullType)),
80
102
  onGrainChange: OptionType(FunctionType([PlanGrainType], NullType)),
103
+ // The interaction state a host holds — a bound `State.bind` handle (#824).
104
+ ui: OptionType(PlanUiBindType),
81
105
  style: OptionType(PlanStyleType),
82
106
  });
83
107
  //# sourceMappingURL=ir.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ir.js","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ir.js","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"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"}
@@ -6,31 +6,21 @@
6
6
  * `Plan.pick` — the Plan's façade over the shared pick contract (#590).
7
7
  *
8
8
  * The contract holds identified things and does not know what they are, so an
9
- * adopter supplies the two things it cannot: how to read identity off one item,
10
- * and what a useful count is. For a Plan that is a nine-arm match over the
11
- * series variant, plus the row count that series would contribute.
9
+ * adopter supplies what it cannot: how to read identity off one item. For a
10
+ * Plan that is an eleven-arm match over the series variant — every arm carries
11
+ * the same four identity fields, and the arm itself picks the kind's icon.
12
12
  *
13
- * Nothing here is Plan-specific machinery — it is ~40 lines of accessors. The
14
- * façade exists so an author writes `Plan.pick(key, all)` instead of restating
15
- * the match at every call site, not because the Plan needs its own contract.
13
+ * There are no per-series row counts (#822): a count means something only when
14
+ * every entry is in hand, and nothing on a Plan may behave differently because
15
+ * its data is inline or paged.
16
16
  *
17
17
  * @packageDocumentation
18
18
  */
19
- import { type ExprType, type SubtypeExprOrValue, ArrayType, DictType, StringType, StructType } from "@elaraai/east";
19
+ import { type ExprType, ArrayType } from "@elaraai/east";
20
20
  import { type PickHandle, type PickItemType } from "../../contracts/pick.js";
21
21
  import { PlanSeriesType, type PlanSeriesInput } from "./series.js";
22
22
  /** Options for {@link createPlanPick}. */
23
23
  export interface PlanPickOptions {
24
- /**
25
- * The canvas data. Supplying it gives each library entry its row COUNT,
26
- * derived by running that series' own pipeline — which is what turns "this
27
- * series is on" into "this series contributes 18 rows", and what surfaces
28
- * the `0 rs` case where a series is switched on to no visible effect.
29
- *
30
- * Omit it for a paged canvas: a window cannot know the total, and a wrong
31
- * count is worse than none.
32
- */
33
- data?: SubtypeExprOrValue<DictType<StringType, StructType>>;
34
24
  /** Series switched off to begin with; omit ⇒ everything shows. */
35
25
  hidden?: readonly string[];
36
26
  }
@@ -38,27 +28,92 @@ export interface PlanPickOptions {
38
28
  * Bind a Plan's row series to a persisted pick.
39
29
  *
40
30
  * @remarks
41
- * A GROUP is the unit a person picks — "add Machines" — and hiding one takes
42
- * its whole subtree with it, because the members are built by the group's own
43
- * `derive`. That is why every arm carries identity (#590 §6.1): without it the
44
- * library could only offer top-level series, which on a grouped canvas is
45
- * almost nothing.
31
+ * The list is the layout (#822): the canvas shows the series still switched
32
+ * on, in the order they are listed, one block each — so the order written here
33
+ * is the order on screen. A section, a group or a views series is the unit a
34
+ * person picks — "add Machines" — and hiding one takes its whole subtree with
35
+ * it, because its members are built by its own `derive`.
46
36
  *
47
- * Identity is read through ONE nine-arm match rather than one match per
48
- * accessor — every arm carries the same four fields, so matching four times
49
- * would build four copies of the same traversal.
37
+ * Identity is read through ONE match rather than one match per accessor —
38
+ * every arm carries the same four fields, so matching four times would build
39
+ * four copies of the same traversal. A TS list is checked here for two series
40
+ * sharing a key (one switch would wear two labels).
41
+ *
42
+ * The handle is STATE (`State.bind` underneath), so it is built inside a
43
+ * `Reactive`. Pass it to the canvas as `pick`, in place of `series`: the Plan
44
+ * shows the picked series and mounts the library panel itself.
50
45
  *
51
46
  * @param key - The store key; also the persistence key
52
- * @param all - Every series that COULD show
53
- * @param options - Data for counts, and the initial hidden set ({@link PlanPickOptions})
54
- * @returns A pick handle over the series type
47
+ * @param all - Every series that COULD show, in layout order
48
+ * @param options - The initial hidden set ({@link PlanPickOptions})
49
+ * @returns A pick handle over the series type — the canvas's `pick` prop
55
50
  *
56
51
  * @example
57
52
  * ```tsx
58
- * const shown = $.let(Plan.pick("ops.series", all, { data: ops }));
59
- *
60
- * <Pick.Panel value={shown} title="Series" />
61
- * <Plan axis={axis} data={ops} series={Pick.active(shown)} />
53
+ * // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
54
+ * import { ArrayType, DateTimeType, DictType, East, FloatType, IntegerType, StringType, StructType, none, some, variant } from "@elaraai/east";
55
+ * import { EventStateType, Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
56
+ *
57
+ * const canvas = East.function([], UIComponentType, (_$) => (
58
+ * <Reactive>{$ => {
59
+ * // Monday of ISO week n, 2026 — window W27–W38 (half-open), now W31.
60
+ * const week = $.const(East.function([IntegerType], DateTimeType, ($, n) => {
61
+ * const w1 = $.const(new Date("2025-12-29T00:00:00Z"), DateTimeType);
62
+ * return w1.addWeeks(n.subtract(1n));
63
+ * }));
64
+ * const JobRow = StructType({
65
+ * batch: StringType, start: DateTimeType, end: DateTimeType, state: EventStateType,
66
+ * });
67
+ * const OpsRow = StructType({
68
+ * series: StringType, jobs: ArrayType(JobRow), cells: ArrayType(Plan.Types.HeatCell),
69
+ * });
70
+ * const noJobs = $.const([], ArrayType(JobRow));
71
+ * const noCells = $.const([], ArrayType(Plan.Types.HeatCell));
72
+ * const pcts = $.const([46.0, 58.0, 66.0, 72.0, 84.0, 96.0], ArrayType(FloatType));
73
+ * const cells = $.let(East.Array.generate(6n, Plan.Types.HeatCell, (_$, i) => ({
74
+ * at: Plan.at.time(week(i.multiply(2n).add(27n))), value: some(pcts.get(i)), label: none,
75
+ * })));
76
+ * const ops = $.const(new Map([
77
+ * ["L1-M03", { series: "machines", cells: noCells,
78
+ * jobs: [{ batch: "B-214", start: week(28n), end: week(31n), state: variant("in-progress", null) }] }],
79
+ * ["L1-M04", { series: "machines", cells: noCells,
80
+ * jobs: [{ batch: "B-208", start: week(27n), end: week(30n), state: variant("actual", null) }] }],
81
+ * ["L2-load", { series: "load", cells, jobs: noJobs }],
82
+ * ]), DictType(StringType, OpsRow));
83
+ * // Every series that COULD show — the library lists these, and the
84
+ * // canvas shows the ones switched on in this order.
85
+ * const all = $.const([
86
+ * Plan.series.span(OpsRow, {
87
+ * key: "machines", title: "Machine jobs", subtitle: "one row per machine",
88
+ * match: r => r.series.equal("machines"),
89
+ * label: (_r, k) => k, id: true,
90
+ * runs: r => r.jobs.map((_$, j) => Plan.run({
91
+ * key: j.batch, start: j.start, end: j.end,
92
+ * label: East.str`RUN · ${j.batch}`, state: j.state,
93
+ * })),
94
+ * }),
95
+ * Plan.series.heat(OpsRow, {
96
+ * key: "load", title: "Line load", subtitle: "% per fortnight",
97
+ * match: r => r.series.equal("load"),
98
+ * label: (_r, k) => k,
99
+ * cells: r => Plan.heatCells(r.cells, { min: 0, max: 100 }),
100
+ * }),
101
+ * ], ArrayType(Plan.Types.Series(OpsRow)));
102
+ * // The handle is STATE — which series are switched off, persisted
103
+ * // under its key — so it lives inside the Reactive. "load" starts off.
104
+ * const shown = $.let(Plan.pick("ex.plan.pick", all, { hidden: ["load"] }));
105
+ * const axis = $.const(Plan.axis({ window: { min: week(27n), max: week(39n) }, resolution: "week", now: week(31n) }));
106
+ * // `pick` REPLACES `series`: the canvas shows the picked series and
107
+ * // mounts the library itself, so nothing else is wired.
108
+ * return (
109
+ * <Plan
110
+ * axis={axis}
111
+ * data={ops}
112
+ * pick={shown}
113
+ * />
114
+ * );
115
+ * }}</Reactive>
116
+ * ));
62
117
  * ```
63
118
  */
64
119
  export declare function createPlanPick(key: string, all: PlanSeriesInput, options?: PlanPickOptions): PickHandle<ReturnType<typeof PlanSeriesType>>;
@@ -69,47 +124,10 @@ export declare function createPlanPick(key: string, all: PlanSeriesInput, option
69
124
  * {@link createPlanPick} builds its `items` from the same accessors, so proving
70
125
  * this proves the bound path too. Split out because `State.bind` is not
71
126
  * runnable in a `describeEast` spec (`TestImpl` carries no State runtime), and
72
- * identity / kind icons / counts are exactly the part worth asserting.
127
+ * identity and kind icons are exactly the part worth asserting.
73
128
  *
74
129
  * @param all - Every series that COULD show
75
- * @param options - Data for counts ({@link PlanPickOptions})
76
130
  * @returns One descriptor per series, in declaration order
77
131
  */
78
- /**
79
- * A stable signature of WHICH series a canvas is built from.
80
- *
81
- * @remarks
82
- * Exists for the paged arm. `PagedSourceType` requires that "two sources with
83
- * the same `id` must serve the same rows", and a derived source built from a
84
- * SUBSET of the series serves different rows than one built from all of them —
85
- * so its id has to say so.
86
- *
87
- * That requirement is not theoretical: the window cache invalidates on
88
- * `source.id` alone (`use-plan-paging.ts`), and resident windows are immutable
89
- * and served without re-calling `page`. Without a signature, toggling a series
90
- * off leaves the previous rows on screen indefinitely
91
- * (`use-plan-paging.dom.test.tsx` pins both halves of this).
92
- *
93
- * **This makes the key a load-bearing identity on a paged canvas.** The
94
- * signature is the joined keys, so it assumes a key NAMES a series: same keys ⇒
95
- * same rows. Two consequences worth knowing:
96
- *
97
- * - Two series sharing a key are safe HERE, because they share one entry in the
98
- * hidden set and so toggle together — the active list is both-in or both-out,
99
- * and the signature moves either way. They break the LIBRARY instead (one
100
- * switch, two labels — `Pick.Panel` reports it).
101
- * - A key that stays put while the series it names CHANGES is the real hazard:
102
- * the id does not move, the cache is not dropped, and resident windows keep
103
- * serving rows built by the previous pipeline. Keys must be stable AND
104
- * identifying, which is what they were for.
105
- *
106
- * Row keys are a separate layer with its own rule: two series emitting the same
107
- * ROW key resolve LAST_WINS inside `applySeries`, deterministically by series
108
- * order, and identically in every window (#568).
109
- *
110
- * @param all - The series the canvas is built from
111
- * @returns The series' keys, joined — stable for a given active set
112
- */
113
- export declare function seriesSignature(all: PlanSeriesInput): ExprType<StringType>;
114
- export declare function createPlanPickItems(all: PlanSeriesInput, options?: PlanPickOptions): ExprType<ArrayType<PickItemType>>;
132
+ export declare function createPlanPickItems(all: PlanSeriesInput): ExprType<ArrayType<PickItemType>>;
115
133
  //# sourceMappingURL=pick.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/pick.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,SAAS,EACT,QAAQ,EAKR,UAAU,EACV,UAAU,EAGb,MAAM,eAAe,CAAC;AAGvB,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAC1H,OAAO,EAAE,cAAc,EAAoB,KAAK,eAAe,EAAwB,MAAM,aAAa,CAAC;AAmC3G,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC5B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,kEAAkE;IAClE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAyDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC1B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,eAAe,GAC1B,UAAU,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAM/C;AAED;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,CAa1E;AAED,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,eAAe,GAC1B,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAGnC"}
1
+ {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/pick.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEH,KAAK,QAAQ,EAEb,SAAS,EAQZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAC1H,OAAO,EAAE,cAAc,EAAmC,KAAK,eAAe,EAAwB,MAAM,aAAa,CAAC;AAkC1H,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAmDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,wBAAgB,cAAc,CAC1B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,eAAe,GAC1B,UAAU,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAO/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAI3F"}
@@ -6,28 +6,25 @@
6
6
  * `Plan.pick` — the Plan's façade over the shared pick contract (#590).
7
7
  *
8
8
  * The contract holds identified things and does not know what they are, so an
9
- * adopter supplies the two things it cannot: how to read identity off one item,
10
- * and what a useful count is. For a Plan that is a nine-arm match over the
11
- * series variant, plus the row count that series would contribute.
9
+ * adopter supplies what it cannot: how to read identity off one item. For a
10
+ * Plan that is an eleven-arm match over the series variant — every arm carries
11
+ * the same four identity fields, and the arm itself picks the kind's icon.
12
12
  *
13
- * Nothing here is Plan-specific machinery — it is ~40 lines of accessors. The
14
- * façade exists so an author writes `Plan.pick(key, all)` instead of restating
15
- * the match at every call site, not because the Plan needs its own contract.
13
+ * There are no per-series row counts (#822): a count means something only when
14
+ * every entry is in hand, and nothing on a Plan may behave differently because
15
+ * its data is inline or paged.
16
16
  *
17
17
  * @packageDocumentation
18
18
  */
19
- import { ArrayType, DictType, East, Expr, IntegerType, OptionType, StringType, StructType, some, none, } from "@elaraai/east";
19
+ import { ArrayType, East, Expr, OptionType, StringType, StructType, some, none, } from "@elaraai/east";
20
20
  import { IconType } from "../../display/icon/types.js";
21
21
  import { createPickBind, pickItems } from "../../contracts/pick.js";
22
- import { PlanSeriesType, applySeriesValue } from "./series.js";
22
+ import { PlanSeriesType, checkSeries } from "./series.js";
23
23
  /**
24
- * The FA glyph each row kind declares.
25
- *
26
- * @remarks
27
- * `PlanTemplateKindType` has documented this set since the template model, and
28
- * nothing has ever rendered it — the library is the first surface that does.
29
- * `group` and `rows` are not template kinds and so are not in that set; they
30
- * take the marks that read as "a section" and "a hand-built list".
24
+ * The FA glyph the library shows for each series kind — the row kind's glyph
25
+ * for the seven row kinds; the four composites take the marks that read as
26
+ * "a group per entry", "a titled block", "one entry several ways" and "a
27
+ * hand-built list".
31
28
  */
32
29
  const KIND_ICONS = {
33
30
  span: "bars-staggered",
@@ -42,6 +39,8 @@ const KIND_ICONS = {
42
39
  cards: "user-group",
43
40
  events: "flag",
44
41
  group: "layer-group",
42
+ section: "heading",
43
+ views: "clone",
45
44
  rows: "list",
46
45
  };
47
46
  /** Identity read off ONE series — the whole of what the library needs. */
@@ -78,18 +77,15 @@ function planPickOptions(allExpr, options) {
78
77
  cards: (_$2, v) => ident(v, "cards"),
79
78
  events: (_$2, v) => ident(v, "events"),
80
79
  group: (_$2, v) => ident(v, "group"),
80
+ section: (_$2, v) => ident(v, "section"),
81
+ views: (_$2, v) => ident(v, "views"),
81
82
  rows: (_$2, v) => ident(v, "rows"),
82
83
  }));
83
- // The row count this series contributes — its own pipeline, run over the
84
- // canvas data. Absent for a paged canvas, which cannot know a total.
85
- const data = options?.data;
86
- const countOf = data === undefined ? undefined : East.function([itemType], IntegerType, (_$, s) => applySeriesValue(s, East.value(data)).size());
87
84
  return {
88
85
  id: (s) => identityOf(s).key,
89
86
  title: (s) => identityOf(s).title,
90
87
  subtitle: (s) => identityOf(s).subtitle,
91
88
  icon: (s) => identityOf(s).icon,
92
- ...(countOf !== undefined ? { count: (s) => some(countOf(s)) } : {}),
93
89
  ...(options?.hidden !== undefined ? { hidden: options.hidden } : {}),
94
90
  };
95
91
  }
@@ -97,30 +93,96 @@ function planPickOptions(allExpr, options) {
97
93
  * Bind a Plan's row series to a persisted pick.
98
94
  *
99
95
  * @remarks
100
- * A GROUP is the unit a person picks — "add Machines" — and hiding one takes
101
- * its whole subtree with it, because the members are built by the group's own
102
- * `derive`. That is why every arm carries identity (#590 §6.1): without it the
103
- * library could only offer top-level series, which on a grouped canvas is
104
- * almost nothing.
96
+ * The list is the layout (#822): the canvas shows the series still switched
97
+ * on, in the order they are listed, one block each — so the order written here
98
+ * is the order on screen. A section, a group or a views series is the unit a
99
+ * person picks — "add Machines" — and hiding one takes its whole subtree with
100
+ * it, because its members are built by its own `derive`.
101
+ *
102
+ * Identity is read through ONE match rather than one match per accessor —
103
+ * every arm carries the same four fields, so matching four times would build
104
+ * four copies of the same traversal. A TS list is checked here for two series
105
+ * sharing a key (one switch would wear two labels).
105
106
  *
106
- * Identity is read through ONE nine-arm match rather than one match per
107
- * accessor — every arm carries the same four fields, so matching four times
108
- * would build four copies of the same traversal.
107
+ * The handle is STATE (`State.bind` underneath), so it is built inside a
108
+ * `Reactive`. Pass it to the canvas as `pick`, in place of `series`: the Plan
109
+ * shows the picked series and mounts the library panel itself.
109
110
  *
110
111
  * @param key - The store key; also the persistence key
111
- * @param all - Every series that COULD show
112
- * @param options - Data for counts, and the initial hidden set ({@link PlanPickOptions})
113
- * @returns A pick handle over the series type
112
+ * @param all - Every series that COULD show, in layout order
113
+ * @param options - The initial hidden set ({@link PlanPickOptions})
114
+ * @returns A pick handle over the series type — the canvas's `pick` prop
114
115
  *
115
116
  * @example
116
117
  * ```tsx
117
- * const shown = $.let(Plan.pick("ops.series", all, { data: ops }));
118
- *
119
- * <Pick.Panel value={shown} title="Series" />
120
- * <Plan axis={axis} data={ops} series={Pick.active(shown)} />
118
+ * // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
119
+ * import { ArrayType, DateTimeType, DictType, East, FloatType, IntegerType, StringType, StructType, none, some, variant } from "@elaraai/east";
120
+ * import { EventStateType, Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
121
+ *
122
+ * const canvas = East.function([], UIComponentType, (_$) => (
123
+ * <Reactive>{$ => {
124
+ * // Monday of ISO week n, 2026 — window W27–W38 (half-open), now W31.
125
+ * const week = $.const(East.function([IntegerType], DateTimeType, ($, n) => {
126
+ * const w1 = $.const(new Date("2025-12-29T00:00:00Z"), DateTimeType);
127
+ * return w1.addWeeks(n.subtract(1n));
128
+ * }));
129
+ * const JobRow = StructType({
130
+ * batch: StringType, start: DateTimeType, end: DateTimeType, state: EventStateType,
131
+ * });
132
+ * const OpsRow = StructType({
133
+ * series: StringType, jobs: ArrayType(JobRow), cells: ArrayType(Plan.Types.HeatCell),
134
+ * });
135
+ * const noJobs = $.const([], ArrayType(JobRow));
136
+ * const noCells = $.const([], ArrayType(Plan.Types.HeatCell));
137
+ * const pcts = $.const([46.0, 58.0, 66.0, 72.0, 84.0, 96.0], ArrayType(FloatType));
138
+ * const cells = $.let(East.Array.generate(6n, Plan.Types.HeatCell, (_$, i) => ({
139
+ * at: Plan.at.time(week(i.multiply(2n).add(27n))), value: some(pcts.get(i)), label: none,
140
+ * })));
141
+ * const ops = $.const(new Map([
142
+ * ["L1-M03", { series: "machines", cells: noCells,
143
+ * jobs: [{ batch: "B-214", start: week(28n), end: week(31n), state: variant("in-progress", null) }] }],
144
+ * ["L1-M04", { series: "machines", cells: noCells,
145
+ * jobs: [{ batch: "B-208", start: week(27n), end: week(30n), state: variant("actual", null) }] }],
146
+ * ["L2-load", { series: "load", cells, jobs: noJobs }],
147
+ * ]), DictType(StringType, OpsRow));
148
+ * // Every series that COULD show — the library lists these, and the
149
+ * // canvas shows the ones switched on in this order.
150
+ * const all = $.const([
151
+ * Plan.series.span(OpsRow, {
152
+ * key: "machines", title: "Machine jobs", subtitle: "one row per machine",
153
+ * match: r => r.series.equal("machines"),
154
+ * label: (_r, k) => k, id: true,
155
+ * runs: r => r.jobs.map((_$, j) => Plan.run({
156
+ * key: j.batch, start: j.start, end: j.end,
157
+ * label: East.str`RUN · ${j.batch}`, state: j.state,
158
+ * })),
159
+ * }),
160
+ * Plan.series.heat(OpsRow, {
161
+ * key: "load", title: "Line load", subtitle: "% per fortnight",
162
+ * match: r => r.series.equal("load"),
163
+ * label: (_r, k) => k,
164
+ * cells: r => Plan.heatCells(r.cells, { min: 0, max: 100 }),
165
+ * }),
166
+ * ], ArrayType(Plan.Types.Series(OpsRow)));
167
+ * // The handle is STATE — which series are switched off, persisted
168
+ * // under its key — so it lives inside the Reactive. "load" starts off.
169
+ * const shown = $.let(Plan.pick("ex.plan.pick", all, { hidden: ["load"] }));
170
+ * const axis = $.const(Plan.axis({ window: { min: week(27n), max: week(39n) }, resolution: "week", now: week(31n) }));
171
+ * // `pick` REPLACES `series`: the canvas shows the picked series and
172
+ * // mounts the library itself, so nothing else is wired.
173
+ * return (
174
+ * <Plan
175
+ * axis={axis}
176
+ * data={ops}
177
+ * pick={shown}
178
+ * />
179
+ * );
180
+ * }}</Reactive>
181
+ * ));
121
182
  * ```
122
183
  */
123
184
  export function createPlanPick(key, all, options) {
185
+ checkSeries(all, "Plan.pick");
124
186
  const allExpr = East.value(all);
125
187
  // Typed at the SERIES shape, not the erased element type: that is what
126
188
  // makes `Pick.active(shown)` assignable straight back to the `series` prop.
@@ -133,61 +195,14 @@ export function createPlanPick(key, all, options) {
133
195
  * {@link createPlanPick} builds its `items` from the same accessors, so proving
134
196
  * this proves the bound path too. Split out because `State.bind` is not
135
197
  * runnable in a `describeEast` spec (`TestImpl` carries no State runtime), and
136
- * identity / kind icons / counts are exactly the part worth asserting.
198
+ * identity and kind icons are exactly the part worth asserting.
137
199
  *
138
200
  * @param all - Every series that COULD show
139
- * @param options - Data for counts ({@link PlanPickOptions})
140
201
  * @returns One descriptor per series, in declaration order
141
202
  */
142
- /**
143
- * A stable signature of WHICH series a canvas is built from.
144
- *
145
- * @remarks
146
- * Exists for the paged arm. `PagedSourceType` requires that "two sources with
147
- * the same `id` must serve the same rows", and a derived source built from a
148
- * SUBSET of the series serves different rows than one built from all of them —
149
- * so its id has to say so.
150
- *
151
- * That requirement is not theoretical: the window cache invalidates on
152
- * `source.id` alone (`use-plan-paging.ts`), and resident windows are immutable
153
- * and served without re-calling `page`. Without a signature, toggling a series
154
- * off leaves the previous rows on screen indefinitely
155
- * (`use-plan-paging.dom.test.tsx` pins both halves of this).
156
- *
157
- * **This makes the key a load-bearing identity on a paged canvas.** The
158
- * signature is the joined keys, so it assumes a key NAMES a series: same keys ⇒
159
- * same rows. Two consequences worth knowing:
160
- *
161
- * - Two series sharing a key are safe HERE, because they share one entry in the
162
- * hidden set and so toggle together — the active list is both-in or both-out,
163
- * and the signature moves either way. They break the LIBRARY instead (one
164
- * switch, two labels — `Pick.Panel` reports it).
165
- * - A key that stays put while the series it names CHANGES is the real hazard:
166
- * the id does not move, the cache is not dropped, and resident windows keep
167
- * serving rows built by the previous pipeline. Keys must be stable AND
168
- * identifying, which is what they were for.
169
- *
170
- * Row keys are a separate layer with its own rule: two series emitting the same
171
- * ROW key resolve LAST_WINS inside `applySeries`, deterministically by series
172
- * order, and identically in every window (#568).
173
- *
174
- * @param all - The series the canvas is built from
175
- * @returns The series' keys, joined — stable for a given active set
176
- */
177
- export function seriesSignature(all) {
178
- const allExpr = East.value(all);
179
- const itemType = Expr.type(allExpr).value;
180
- // An EMPTY series list has no element type (`Never`), so there is no
181
- // variant to match on — and nothing to distinguish either. A canvas with no
182
- // series is legal (`Plan.Root({ …, series: [] })`).
183
- if (itemType.type !== "Variant")
184
- return East.value("", StringType);
185
- const keyOf = planPickOptions(allExpr).id;
186
- const keyFn = East.function([itemType], StringType, (_$, s) => keyOf(s));
187
- return allExpr.reduce((_$, acc, s) => East.str `${acc}/${keyFn(s)}`, East.value("", StringType));
188
- }
189
- export function createPlanPickItems(all, options) {
203
+ export function createPlanPickItems(all) {
204
+ checkSeries(all, "Plan.pickItems");
190
205
  const allExpr = East.value(all);
191
- return pickItems(allExpr, planPickOptions(allExpr, options));
206
+ return pickItems(allExpr, planPickOptions(allExpr));
192
207
  }
193
208
  //# sourceMappingURL=pick.js.map