@elaraai/e3-ui 1.0.86 → 1.0.87

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 (385) hide show
  1. package/dist/src/bind/data-indexed.d.ts +159 -0
  2. package/dist/src/bind/data-indexed.d.ts.map +1 -0
  3. package/dist/src/bind/data-indexed.js +105 -0
  4. package/dist/src/bind/data-indexed.js.map +1 -0
  5. package/dist/src/bind/data.d.ts +5 -3
  6. package/dist/src/bind/data.d.ts.map +1 -1
  7. package/dist/src/bind/data.js +6 -0
  8. package/dist/src/bind/data.js.map +1 -1
  9. package/dist/src/bind/record.d.ts +34 -23
  10. package/dist/src/bind/record.d.ts.map +1 -1
  11. package/dist/src/bind/record.js +46 -19
  12. package/dist/src/bind/record.js.map +1 -1
  13. package/dist/src/calendar/index.d.ts +2923 -0
  14. package/dist/src/calendar/index.d.ts.map +1 -0
  15. package/dist/src/calendar/index.js +135 -0
  16. package/dist/src/calendar/index.js.map +1 -0
  17. package/dist/src/decision/queue.d.ts +3 -3
  18. package/dist/src/decision/queue.d.ts.map +1 -1
  19. package/dist/src/decision/queue.js +2 -2
  20. package/dist/src/decision/queue.js.map +1 -1
  21. package/dist/src/decision/types.d.ts +4 -0
  22. package/dist/src/decision/types.d.ts.map +1 -1
  23. package/dist/src/decision/types.js +4 -0
  24. package/dist/src/decision/types.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +114 -0
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -0
  27. package/dist/src/flowchart/canvas.js +84 -0
  28. package/dist/src/flowchart/canvas.js.map +1 -0
  29. package/dist/src/flowchart/flowchart.d.ts +79 -0
  30. package/dist/src/flowchart/flowchart.d.ts.map +1 -0
  31. package/dist/src/flowchart/flowchart.js +9 -0
  32. package/dist/src/flowchart/flowchart.js.map +1 -0
  33. package/dist/src/flowchart/index.d.ts +305 -0
  34. package/dist/src/flowchart/index.d.ts.map +1 -0
  35. package/dist/src/flowchart/index.js +267 -0
  36. package/dist/src/flowchart/index.js.map +1 -0
  37. package/dist/src/flowchart/library.d.ts +720 -0
  38. package/dist/src/flowchart/library.d.ts.map +1 -0
  39. package/dist/src/flowchart/library.js +611 -0
  40. package/dist/src/flowchart/library.js.map +1 -0
  41. package/dist/src/flowchart/over.d.ts +234 -0
  42. package/dist/src/flowchart/over.d.ts.map +1 -0
  43. package/dist/src/flowchart/over.js +220 -0
  44. package/dist/src/flowchart/over.js.map +1 -0
  45. package/dist/src/flowchart/patch.d.ts +64 -0
  46. package/dist/src/flowchart/patch.d.ts.map +1 -0
  47. package/dist/src/flowchart/patch.js +67 -0
  48. package/dist/src/flowchart/patch.js.map +1 -0
  49. package/dist/src/flowchart/payload.d.ts +8220 -0
  50. package/dist/src/flowchart/payload.d.ts.map +1 -0
  51. package/dist/src/flowchart/payload.js +521 -0
  52. package/dist/src/flowchart/payload.js.map +1 -0
  53. package/dist/src/flowchart/types.d.ts +393 -0
  54. package/dist/src/flowchart/types.d.ts.map +1 -0
  55. package/dist/src/flowchart/types.js +216 -0
  56. package/dist/src/flowchart/types.js.map +1 -0
  57. package/dist/src/flowchart/values.d.ts +267 -0
  58. package/dist/src/flowchart/values.d.ts.map +1 -0
  59. package/dist/src/flowchart/values.js +216 -0
  60. package/dist/src/flowchart/values.js.map +1 -0
  61. package/dist/src/flowchart/window.d.ts +521 -0
  62. package/dist/src/flowchart/window.d.ts.map +1 -0
  63. package/dist/src/flowchart/window.js +69 -0
  64. package/dist/src/flowchart/window.js.map +1 -0
  65. package/dist/src/index.d.ts +25 -1
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +48 -1
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/internal.d.ts +35 -3
  70. package/dist/src/internal.d.ts.map +1 -1
  71. package/dist/src/internal.js +72 -3
  72. package/dist/src/internal.js.map +1 -1
  73. package/dist/src/plan/assemble.d.ts +2224 -0
  74. package/dist/src/plan/assemble.d.ts.map +1 -0
  75. package/dist/src/plan/assemble.js +210 -0
  76. package/dist/src/plan/assemble.js.map +1 -0
  77. package/dist/src/plan/builders.d.ts +790 -0
  78. package/dist/src/plan/builders.d.ts.map +1 -0
  79. package/dist/src/plan/builders.js +749 -0
  80. package/dist/src/plan/builders.js.map +1 -0
  81. package/dist/src/plan/event-rows.d.ts +2565 -0
  82. package/dist/src/plan/event-rows.d.ts.map +1 -0
  83. package/dist/src/plan/event-rows.js +689 -0
  84. package/dist/src/plan/event-rows.js.map +1 -0
  85. package/dist/src/plan/factories.d.ts +458 -0
  86. package/dist/src/plan/factories.d.ts.map +1 -0
  87. package/dist/src/plan/factories.js +484 -0
  88. package/dist/src/plan/factories.js.map +1 -0
  89. package/dist/src/plan/index.d.ts +672 -0
  90. package/dist/src/plan/index.d.ts.map +1 -0
  91. package/dist/src/plan/index.js +532 -0
  92. package/dist/src/plan/index.js.map +1 -0
  93. package/dist/src/plan/ir.d.ts +2594 -0
  94. package/dist/src/plan/ir.d.ts.map +1 -0
  95. package/dist/src/plan/ir.js +78 -0
  96. package/dist/src/plan/ir.js.map +1 -0
  97. package/dist/src/plan/library.d.ts +772 -0
  98. package/dist/src/plan/library.d.ts.map +1 -0
  99. package/dist/src/plan/library.js +424 -0
  100. package/dist/src/plan/library.js.map +1 -0
  101. package/dist/src/plan/ordered-source.d.ts +27 -0
  102. package/dist/src/plan/ordered-source.d.ts.map +1 -0
  103. package/dist/src/plan/ordered-source.js +48 -0
  104. package/dist/src/plan/ordered-source.js.map +1 -0
  105. package/dist/src/plan/over.d.ts +247 -0
  106. package/dist/src/plan/over.d.ts.map +1 -0
  107. package/dist/src/plan/over.js +266 -0
  108. package/dist/src/plan/over.js.map +1 -0
  109. package/dist/src/plan/pick.d.ts +78 -0
  110. package/dist/src/plan/pick.d.ts.map +1 -0
  111. package/dist/src/plan/pick.js +146 -0
  112. package/dist/src/plan/pick.js.map +1 -0
  113. package/dist/src/plan/plan.d.ts +11611 -0
  114. package/dist/src/plan/plan.d.ts.map +1 -0
  115. package/dist/src/plan/plan.js +428 -0
  116. package/dist/src/plan/plan.js.map +1 -0
  117. package/dist/src/plan/refs.d.ts +218 -0
  118. package/dist/src/plan/refs.d.ts.map +1 -0
  119. package/dist/src/plan/refs.js +226 -0
  120. package/dist/src/plan/refs.js.map +1 -0
  121. package/dist/src/plan/root.d.ts +290 -0
  122. package/dist/src/plan/root.d.ts.map +1 -0
  123. package/dist/src/plan/root.js +463 -0
  124. package/dist/src/plan/root.js.map +1 -0
  125. package/dist/src/plan/series.d.ts +13554 -0
  126. package/dist/src/plan/series.d.ts.map +1 -0
  127. package/dist/src/plan/series.js +1921 -0
  128. package/dist/src/plan/series.js.map +1 -0
  129. package/dist/src/plan/types.d.ts +12400 -0
  130. package/dist/src/plan/types.d.ts.map +1 -0
  131. package/dist/src/plan/types.js +1335 -0
  132. package/dist/src/plan/types.js.map +1 -0
  133. package/dist/src/roster/coverage.d.ts +240 -0
  134. package/dist/src/roster/coverage.d.ts.map +1 -0
  135. package/dist/src/roster/coverage.js +109 -0
  136. package/dist/src/roster/coverage.js.map +1 -0
  137. package/dist/src/roster/index.d.ts +4028 -0
  138. package/dist/src/roster/index.d.ts.map +1 -0
  139. package/dist/src/roster/index.js +115 -0
  140. package/dist/src/roster/index.js.map +1 -0
  141. package/dist/src/roster/library.d.ts +106 -0
  142. package/dist/src/roster/library.d.ts.map +1 -0
  143. package/dist/src/roster/library.js +78 -0
  144. package/dist/src/roster/library.js.map +1 -0
  145. package/dist/src/roster/people.d.ts +50 -0
  146. package/dist/src/roster/people.d.ts.map +1 -0
  147. package/dist/src/roster/people.js +32 -0
  148. package/dist/src/roster/people.js.map +1 -0
  149. package/dist/src/roster/rules.d.ts +275 -0
  150. package/dist/src/roster/rules.d.ts.map +1 -0
  151. package/dist/src/roster/rules.js +162 -0
  152. package/dist/src/roster/rules.js.map +1 -0
  153. package/dist/src/roster/types.d.ts +672 -0
  154. package/dist/src/roster/types.d.ts.map +1 -0
  155. package/dist/src/roster/types.js +248 -0
  156. package/dist/src/roster/types.js.map +1 -0
  157. package/dist/src/roster/visibility.d.ts +66 -0
  158. package/dist/src/roster/visibility.d.ts.map +1 -0
  159. package/dist/src/roster/visibility.js +25 -0
  160. package/dist/src/roster/visibility.js.map +1 -0
  161. package/dist/src/schedule/days.d.ts +54 -0
  162. package/dist/src/schedule/days.d.ts.map +1 -0
  163. package/dist/src/schedule/days.js +68 -0
  164. package/dist/src/schedule/days.js.map +1 -0
  165. package/dist/src/schedule/events.d.ts +433 -0
  166. package/dist/src/schedule/events.d.ts.map +1 -0
  167. package/dist/src/schedule/events.js +851 -0
  168. package/dist/src/schedule/events.js.map +1 -0
  169. package/dist/src/schedule/index.d.ts +150 -0
  170. package/dist/src/schedule/index.d.ts.map +1 -0
  171. package/dist/src/schedule/index.js +132 -0
  172. package/dist/src/schedule/index.js.map +1 -0
  173. package/dist/src/schedule/library.d.ts +70 -0
  174. package/dist/src/schedule/library.d.ts.map +1 -0
  175. package/dist/src/schedule/library.js +102 -0
  176. package/dist/src/schedule/library.js.map +1 -0
  177. package/dist/src/schedule/patch.d.ts +74 -0
  178. package/dist/src/schedule/patch.d.ts.map +1 -0
  179. package/dist/src/schedule/patch.js +68 -0
  180. package/dist/src/schedule/patch.js.map +1 -0
  181. package/dist/src/schedule/record-window.d.ts +189 -0
  182. package/dist/src/schedule/record-window.d.ts.map +1 -0
  183. package/dist/src/schedule/record-window.js +95 -0
  184. package/dist/src/schedule/record-window.js.map +1 -0
  185. package/dist/src/schedule/resources.d.ts +165 -0
  186. package/dist/src/schedule/resources.d.ts.map +1 -0
  187. package/dist/src/schedule/resources.js +234 -0
  188. package/dist/src/schedule/resources.js.map +1 -0
  189. package/dist/src/schedule/templates.d.ts +47 -0
  190. package/dist/src/schedule/templates.d.ts.map +1 -0
  191. package/dist/src/schedule/templates.js +61 -0
  192. package/dist/src/schedule/templates.js.map +1 -0
  193. package/dist/src/schedule/types.d.ts +1677 -0
  194. package/dist/src/schedule/types.d.ts.map +1 -0
  195. package/dist/src/schedule/types.js +374 -0
  196. package/dist/src/schedule/types.js.map +1 -0
  197. package/dist/src/schedule/window.d.ts +154 -0
  198. package/dist/src/schedule/window.d.ts.map +1 -0
  199. package/dist/src/schedule/window.js +363 -0
  200. package/dist/src/schedule/window.js.map +1 -0
  201. package/dist/src/sheet/bridge.d.ts +385 -0
  202. package/dist/src/sheet/bridge.d.ts.map +1 -0
  203. package/dist/src/sheet/bridge.js +809 -0
  204. package/dist/src/sheet/bridge.js.map +1 -0
  205. package/dist/src/sheet/columns.d.ts +410 -0
  206. package/dist/src/sheet/columns.d.ts.map +1 -0
  207. package/dist/src/sheet/columns.js +99 -0
  208. package/dist/src/sheet/columns.js.map +1 -0
  209. package/dist/src/sheet/context-bridge.d.ts +48 -0
  210. package/dist/src/sheet/context-bridge.d.ts.map +1 -0
  211. package/dist/src/sheet/context-bridge.js +216 -0
  212. package/dist/src/sheet/context-bridge.js.map +1 -0
  213. package/dist/src/sheet/draft-bridge.d.ts +37 -0
  214. package/dist/src/sheet/draft-bridge.d.ts.map +1 -0
  215. package/dist/src/sheet/draft-bridge.js +153 -0
  216. package/dist/src/sheet/draft-bridge.js.map +1 -0
  217. package/dist/src/sheet/drafts.d.ts +14 -0
  218. package/dist/src/sheet/drafts.d.ts.map +1 -0
  219. package/dist/src/sheet/drafts.js +14 -0
  220. package/dist/src/sheet/drafts.js.map +1 -0
  221. package/dist/src/sheet/editing-bridge.d.ts +40 -0
  222. package/dist/src/sheet/editing-bridge.d.ts.map +1 -0
  223. package/dist/src/sheet/editing-bridge.js +231 -0
  224. package/dist/src/sheet/editing-bridge.js.map +1 -0
  225. package/dist/src/sheet/editing-types.d.ts +268 -0
  226. package/dist/src/sheet/editing-types.d.ts.map +1 -0
  227. package/dist/src/sheet/editing-types.js +34 -0
  228. package/dist/src/sheet/editing-types.js.map +1 -0
  229. package/dist/src/sheet/edits.d.ts +37 -0
  230. package/dist/src/sheet/edits.d.ts.map +1 -0
  231. package/dist/src/sheet/edits.js +31 -0
  232. package/dist/src/sheet/edits.js.map +1 -0
  233. package/dist/src/sheet/fields.d.ts +693 -0
  234. package/dist/src/sheet/fields.d.ts.map +1 -0
  235. package/dist/src/sheet/fields.js +280 -0
  236. package/dist/src/sheet/fields.js.map +1 -0
  237. package/dist/src/sheet/group.d.ts +165 -0
  238. package/dist/src/sheet/group.d.ts.map +1 -0
  239. package/dist/src/sheet/group.js +52 -0
  240. package/dist/src/sheet/group.js.map +1 -0
  241. package/dist/src/sheet/index.d.ts +542 -0
  242. package/dist/src/sheet/index.d.ts.map +1 -0
  243. package/dist/src/sheet/index.js +387 -0
  244. package/dist/src/sheet/index.js.map +1 -0
  245. package/dist/src/sheet/library.d.ts +284 -0
  246. package/dist/src/sheet/library.d.ts.map +1 -0
  247. package/dist/src/sheet/library.js +259 -0
  248. package/dist/src/sheet/library.js.map +1 -0
  249. package/dist/src/sheet/link.d.ts +398 -0
  250. package/dist/src/sheet/link.d.ts.map +1 -0
  251. package/dist/src/sheet/link.js +228 -0
  252. package/dist/src/sheet/link.js.map +1 -0
  253. package/dist/src/sheet/record.d.ts +75 -0
  254. package/dist/src/sheet/record.d.ts.map +1 -0
  255. package/dist/src/sheet/record.js +128 -0
  256. package/dist/src/sheet/record.js.map +1 -0
  257. package/dist/src/sheet/registers.d.ts +681 -0
  258. package/dist/src/sheet/registers.d.ts.map +1 -0
  259. package/dist/src/sheet/registers.js +671 -0
  260. package/dist/src/sheet/registers.js.map +1 -0
  261. package/dist/src/sheet/root.d.ts +329 -0
  262. package/dist/src/sheet/root.d.ts.map +1 -0
  263. package/dist/src/sheet/root.js +511 -0
  264. package/dist/src/sheet/root.js.map +1 -0
  265. package/dist/src/sheet/seed-bridge.d.ts +14 -0
  266. package/dist/src/sheet/seed-bridge.d.ts.map +1 -0
  267. package/dist/src/sheet/seed-bridge.js +51 -0
  268. package/dist/src/sheet/seed-bridge.js.map +1 -0
  269. package/dist/src/sheet/sheet.d.ts +11819 -0
  270. package/dist/src/sheet/sheet.d.ts.map +1 -0
  271. package/dist/src/sheet/sheet.js +236 -0
  272. package/dist/src/sheet/sheet.js.map +1 -0
  273. package/dist/src/sheet/sub-rows.d.ts +299 -0
  274. package/dist/src/sheet/sub-rows.d.ts.map +1 -0
  275. package/dist/src/sheet/sub-rows.js +272 -0
  276. package/dist/src/sheet/sub-rows.js.map +1 -0
  277. package/dist/src/sheet/templates.d.ts +161 -0
  278. package/dist/src/sheet/templates.d.ts.map +1 -0
  279. package/dist/src/sheet/templates.js +122 -0
  280. package/dist/src/sheet/templates.js.map +1 -0
  281. package/dist/src/sheet/transactions.d.ts +76 -0
  282. package/dist/src/sheet/transactions.d.ts.map +1 -0
  283. package/dist/src/sheet/transactions.js +40 -0
  284. package/dist/src/sheet/transactions.js.map +1 -0
  285. package/dist/src/sheet/types.d.ts +15226 -0
  286. package/dist/src/sheet/types.d.ts.map +1 -0
  287. package/dist/src/sheet/types.js +1070 -0
  288. package/dist/src/sheet/types.js.map +1 -0
  289. package/dist/src/sheet/views.d.ts +29 -0
  290. package/dist/src/sheet/views.d.ts.map +1 -0
  291. package/dist/src/sheet/views.js +43 -0
  292. package/dist/src/sheet/views.js.map +1 -0
  293. package/dist/src/studio/component.d.ts.map +1 -1
  294. package/dist/src/studio/component.js +11 -8
  295. package/dist/src/studio/component.js.map +1 -1
  296. package/dist/src/utils/derive.d.ts +134 -8
  297. package/dist/src/utils/derive.d.ts.map +1 -1
  298. package/dist/src/utils/derive.js +409 -7
  299. package/dist/src/utils/derive.js.map +1 -1
  300. package/dist/src/utils/ordered-source.d.ts +38 -0
  301. package/dist/src/utils/ordered-source.d.ts.map +1 -0
  302. package/dist/src/utils/ordered-source.js +45 -0
  303. package/dist/src/utils/ordered-source.js.map +1 -0
  304. package/dist/src/utils/row-inspector.d.ts +36 -0
  305. package/dist/src/utils/row-inspector.d.ts.map +1 -0
  306. package/dist/src/utils/row-inspector.js +49 -0
  307. package/dist/src/utils/row-inspector.js.map +1 -0
  308. package/dist/test/bind/data/data.examples.d.ts +21 -19
  309. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  310. package/dist/test/bind/data/data.examples.js +122 -122
  311. package/dist/test/bind/data/data.examples.js.map +1 -1
  312. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  313. package/dist/test/bind/record/record.examples.js +9 -9
  314. package/dist/test/bind/record/record.examples.js.map +1 -1
  315. package/dist/test/calendar/calendar-records.examples.d.ts +228 -0
  316. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -0
  317. package/dist/test/calendar/calendar-records.examples.js +91 -0
  318. package/dist/test/calendar/calendar-records.examples.js.map +1 -0
  319. package/dist/test/calendar/calendar.examples.d.ts +776 -0
  320. package/dist/test/calendar/calendar.examples.d.ts.map +1 -0
  321. package/dist/test/calendar/calendar.examples.js +336 -0
  322. package/dist/test/calendar/calendar.examples.js.map +1 -0
  323. package/dist/test/decision/journal.examples.d.ts +28 -28
  324. package/dist/test/decision/journal.examples.d.ts.map +1 -1
  325. package/dist/test/decision/journal.examples.js +4 -4
  326. package/dist/test/decision/journal.examples.js.map +1 -1
  327. package/dist/test/decision/queue.examples.d.ts.map +1 -1
  328. package/dist/test/decision/queue.examples.js +5 -7
  329. package/dist/test/decision/queue.examples.js.map +1 -1
  330. package/dist/test/flowchart/flowchart.examples.d.ts +3713 -0
  331. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -0
  332. package/dist/test/flowchart/flowchart.examples.js +465 -0
  333. package/dist/test/flowchart/flowchart.examples.js.map +1 -0
  334. package/dist/test/plan/plan-events.examples.d.ts +3666 -0
  335. package/dist/test/plan/plan-events.examples.d.ts.map +1 -0
  336. package/dist/test/plan/plan-events.examples.js +773 -0
  337. package/dist/test/plan/plan-events.examples.js.map +1 -0
  338. package/dist/test/plan/plan-records.examples.d.ts +3 -0
  339. package/dist/test/plan/plan-records.examples.d.ts.map +1 -0
  340. package/dist/test/plan/plan-records.examples.js +45 -0
  341. package/dist/test/plan/plan-records.examples.js.map +1 -0
  342. package/dist/test/plan/plan-windows.examples.d.ts +588 -0
  343. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -0
  344. package/dist/test/plan/plan-windows.examples.js +170 -0
  345. package/dist/test/plan/plan-windows.examples.js.map +1 -0
  346. package/dist/test/plan/plan.examples.d.ts +8095 -0
  347. package/dist/test/plan/plan.examples.d.ts.map +1 -0
  348. package/dist/test/plan/plan.examples.js +2500 -0
  349. package/dist/test/plan/plan.examples.js.map +1 -0
  350. package/dist/test/roster/domain.examples.d.ts +367 -0
  351. package/dist/test/roster/domain.examples.d.ts.map +1 -0
  352. package/dist/test/roster/domain.examples.js +72 -0
  353. package/dist/test/roster/domain.examples.js.map +1 -0
  354. package/dist/test/roster/roster-records.examples.d.ts +729 -0
  355. package/dist/test/roster/roster-records.examples.d.ts.map +1 -0
  356. package/dist/test/roster/roster-records.examples.js +86 -0
  357. package/dist/test/roster/roster-records.examples.js.map +1 -0
  358. package/dist/test/roster/roster.examples.d.ts +750 -0
  359. package/dist/test/roster/roster.examples.d.ts.map +1 -0
  360. package/dist/test/roster/roster.examples.js +198 -0
  361. package/dist/test/roster/roster.examples.js.map +1 -0
  362. package/dist/test/roster/warehouse.d.ts +87 -0
  363. package/dist/test/roster/warehouse.d.ts.map +1 -0
  364. package/dist/test/roster/warehouse.js +883 -0
  365. package/dist/test/roster/warehouse.js.map +1 -0
  366. package/dist/test/sheet/sheet-link.examples.d.ts +7 -0
  367. package/dist/test/sheet/sheet-link.examples.d.ts.map +1 -0
  368. package/dist/test/sheet/sheet-link.examples.js +41 -0
  369. package/dist/test/sheet/sheet-link.examples.js.map +1 -0
  370. package/dist/test/sheet/sheet-records.examples.d.ts +421 -0
  371. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -0
  372. package/dist/test/sheet/sheet-records.examples.js +79 -0
  373. package/dist/test/sheet/sheet-records.examples.js.map +1 -0
  374. package/dist/test/sheet/sheet-transactions.examples.d.ts +7 -0
  375. package/dist/test/sheet/sheet-transactions.examples.d.ts.map +1 -0
  376. package/dist/test/sheet/sheet-transactions.examples.js +58 -0
  377. package/dist/test/sheet/sheet-transactions.examples.js.map +1 -0
  378. package/dist/test/sheet/sheet.examples.d.ts +5562 -0
  379. package/dist/test/sheet/sheet.examples.d.ts.map +1 -0
  380. package/dist/test/sheet/sheet.examples.js +1178 -0
  381. package/dist/test/sheet/sheet.examples.js.map +1 -0
  382. package/dist/test/studio/studio.examples.d.ts.map +1 -1
  383. package/dist/test/studio/studio.examples.js +11 -11
  384. package/dist/test/studio/studio.examples.js.map +1 -1
  385. package/package.json +12 -9
@@ -0,0 +1,672 @@
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
+ * `Plan` — the axis-aligned composite canvas, `<Plan>`, the one Plan (#1191):
7
+ * it renders in its `BuilderFrame` wherever it is used, its panes optional
8
+ * props. One shared axis
9
+ * (`{ time | number | ordinal }`, declared once and carried by every element
10
+ * instant — #631); heterogeneous rows: span rows (Gantt state-runs), bucket
11
+ * rows (Planner lanes), chart rows (Chart layers consumed as data),
12
+ * heat/table rows (Matrix cells / bucketed numerals), cards rows (Roster
13
+ * chips) and event rows — sliced and planned as one surface.
14
+ *
15
+ * A canvas is DEFINED as `data` + `series`: a keyed source of entries, and a
16
+ * list of `Plan.series.*` row recipes over them (`Plan.pick` makes the list
17
+ * pickable). The list IS the layout — each series contributes its rows in
18
+ * declared order, as blocks (#823: a data series one block of its entries'
19
+ * rows, a section its header and then its members') — and the rows are an
20
+ * ordered STREAM (`Array<PlanRow>`, #822), each parent followed by its subtree. The kind
21
+ * factories (`Plan.span` / `buckets` / … / `group`) build the rows no dataset
22
+ * holds, placed by a `Plan.series.rows` entry.
23
+ *
24
+ * Hierarchy comes only from the data's own nesting: a series' `children` walk
25
+ * more of its own entries (a recursive entry, to any depth) or step down with
26
+ * `Plan.children(of, [series…])`; `Plan.series.section` titles a block and
27
+ * `Plan.series.views` shows one entry several ways. The declared aggregates —
28
+ * span rollup bands (union / byStatus, `×k` peak concurrency, summed
29
+ * quantities, pessimistic certainty), per-bucket heat `mean`/`max`/`sum`,
30
+ * table subtotals, strip summaries and member counts — are derived
31
+ * renderer-side from the tree the rows' `parent` ids encode, and are exact
32
+ * because a whole subtree rides in its entry. Every row carries a typed id
33
+ * (`{ series, path }` — `Plan.ref` builds one), which every callback reports.
34
+ *
35
+ * The module is the namespace assembler over the split sources:
36
+ * `types.ts` (the UIComponent-free row vocabulary) · `ir.ts` (the root at
37
+ * `UIComponentType`) · `builders.ts` (the axis, instant,
38
+ * element and cell builders, and row ids) · `assemble.ts` (the one row
39
+ * envelope, the row streams and their re-basing) · `factories.ts` (the kind
40
+ * factories, the per-kind constructors and chart-layer consumption) ·
41
+ * `series.ts` (`Plan.series.*`, `Plan.children` and their application to
42
+ * `data`) · `pick.ts` (`Plan.pick` / `Plan.pickItems`) · `root.ts` (the
43
+ * canvas's root, the internal namespace's `Plan.Root`) · `plan.ts` (`<Plan>`
44
+ * itself, its payload and its `Plan` carrier, #1191) with `over.ts`
45
+ * (`Plan.over`, read-only rows over a dataset), `refs.ts` (`Plan.eventRef`,
46
+ * an event named for a link's end) and `library.ts` (`Plan.library`, the
47
+ * library pane's tabs, #1195). The event kinds a Plan takes are `Schedule`'s
48
+ * (`src/schedule/`).
49
+ *
50
+ * `Plan` is the tag and the namespace at once, as east-ui's `Table` and the
51
+ * Sheet are.
52
+ *
53
+ * @packageDocumentation
54
+ */
55
+ import { PlanAxisType, PlanTimeAxisType, PlanNumberAxisType, PlanOrdinalAxisType, PlanInstantType, PlanGrainType, PlanGutterType, PlanPortType, PlanRollupType, PlanDrawType, PlanCellMarkerType, PlanStretchType, PlanContentType, PlanAnimationType, PlanChartPointType, PlanAxisSideType, PlanBreachType, PlanChartAxisType, PlanChartLayerType, PlanChartHeightType, PlanHeatCellType, PlanWeightCellType, PlanSegmentType, PlanSegmentCellType, PlanHeatCellsType, PlanAggregateType, PlanTableToneType, PlanTableCellType, PlanTableSeriesType, PlanTableSplitType, PlanTableEmphasisType, PlanEventMarkKindType, PlanRowIdType, PlanRunRefType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, PlanLinkType, PlanExpandAxisType, PlanElementRefType, PlanExpandType, PlanRunType, PlanDecisionMarkType, PlanBucketEventType, PlanChipType, PlanEventMarkType, PlanLaneType, PlanRowKindType, PlanRowType, PlanRowsCollectionType, PlanBlockType, PlanBlocksType, PlanFoldType, PlanQuantityType, PlanHeatScaleType, PlanGroupSummaryType, PlanUiStateType, PlanUiBindType, PlanDropType, PlanMoveType, PlanGestureType, PlanMoveEditsType, PlanRowEditsType, PlanPatchEventTypeFor, PlanEditingType } from "./types.js";
56
+ import { PlanRootType } from "./ir.js";
57
+ import { createAxis, at, createQuantity, createUiState, createRun, createDecision, createPort, createBucketEvent, createLane, createCellMarker, createChip, createEventMark, markKind, createHeatCells, createWeightCells, createSegmentCells, createSegment, createTableCells, createTableSeries, createLink, createRef, createSectionRef } from "./builders.js";
58
+ import { createLayer, createFixedHeight, createSpan, createBuckets, createChart, createHeat, createTable, createCards, createEvents, createGroup } from "./factories.js";
59
+ import { PlanSeriesType, createSeriesSpan, createSeriesBuckets, createSeriesChart, createSeriesHeat, createSeriesTable, createSeriesCards, createSeriesEvents, createSeriesGroup, createSeriesSection, createSeriesViews, createSeriesRows, createChildren } from "./series.js";
60
+ import { createPlanRoot } from "./root.js";
61
+ import { createPlanPick, createPlanPickItems } from "./pick.js";
62
+ import { PlanComponent, createPlanPayload, type PlanTagType } from "./plan.js";
63
+ import { createOver } from "./over.js";
64
+ import { createEventRef } from "./refs.js";
65
+ import { libraryBacklog, libraryEvents, librarySeries, libraryTab } from "./library.js";
66
+ export { PlanAxisType, PlanTimeAxisType, PlanNumberAxisType, PlanOrdinalAxisType, PlanInstantType, type PlanInstantLikeType, type PlanInstantInput, type PlanAxisKindLiteral, PlanAxisKindBrand, type PlanKinded, type PlanKindOf, type PlanInstantExpr, type PlanRunExpr, type PlanDecisionMarkExpr, type PlanPortExpr, type PlanBucketEventExpr, type PlanCellMarkerExpr, type PlanChipExpr, type PlanEventMarkExpr, type PlanHeatCellsExpr, type PlanTableCellsExpr, type PlanTableSeriesExpr, type PlanAxisExpr, type PlanElementsInput, type PlanRecordInput, type PlanKindedRecord, type PlanCellsInput, type PlanHeatCellsInput, type PlanTableCellsInput, type PlanAxisInput, type PlanAxisOptions, type PlanNumberAxisOptions, type PlanOrdinalAxisOptions, PlanGrainType, type PlanGrainLiteral, PlanGutterType, PlanGutterSwatchType, PlanPortType, PlanRollupType, type PlanRollupLiteral, PlanDrawType, type PlanDrawLiteral, PlanCellMarkerType, PlanStretchType, type PlanStretchLiteral, PlanContentAlignType, type PlanContentAlignLiteral, PlanContentType, PlanAnimationType, type PlanAnimationLiteral, PlanChartPointType, PlanAxisSideType, type PlanAxisSideLiteral, PlanBreachType, PlanChartBandPointType, PlanChartAxisType, PlanChartLayerType, PlanChartHeightType, type PlanChartHeightLiteral, PlanHeatCellType, PlanWeightCellType, PlanSegmentType, PlanSegmentCellType, PlanHeatCellsType, PlanAggregateType, type PlanAggregateLiteral, PlanTableToneType, type PlanTableToneLiteral, PlanTableCellType, PlanTableSeriesType, PlanTableSplitType, type PlanTableSplitLiteral, PlanTableEmphasisType, type PlanTableEmphasisLiteral, PlanEventMarkKindType, PlanRowIdType, PlanRunRefType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, PlanLinkType, PlanExpandAxisType, type PlanExpandAxisLiteral, PlanElementRefType, PlanExpandType, PlanRunType, PlanDecisionMarkType, PlanBucketEventType, PlanChipType, PlanEventMarkType, PlanLaneType, PlanRowKindType, PlanRowType, PlanRowsCollectionType, type PlanRowsValue, PlanBlockType, PlanBlocksType, type PlanBlocksValue, PlanFoldType, type PlanFoldLiteral, PlanQuantityType, PlanHeatScaleType, PlanGroupSummaryType, PlanUiStateType, PlanUiBindType, PlanDropType, PlanMoveType, PlanGestureType, PlanMoveEditsType, PlanRowEditsType, PlanPatchEventTypeFor, PlanEditingType, PlanWriteRequestType, PlanReadyEntryType, PLAN_PAGE_SIZE, } from "./types.js";
67
+ export { PlanRootType } from "./ir.js";
68
+ export { PlanTag, PlanComponent, PlanPayloadType, PlanSettingsType, PlanEventBlocksType, PlanEventCanDropType, createPlanPayload, planKeys, type PlanTagType, type PlanProps, type PlanRowsItem, } from "./plan.js";
69
+ export { createOver, type PlanOverRows } from "./over.js";
70
+ export { createEventRef, eventRefKind } from "./refs.js";
71
+ export { PlanLibraryCardType, PlanLibraryHidesType, PlanLibraryRowsItemType, PlanLibrarySeriesType, PlanLibraryTabType, libraryBacklog, libraryEvents, librarySeries, libraryTab, planHideId, type PlanLibraryTab, type PlanLibraryTabConfig, } from "./library.js";
72
+ export { resolvePlanEventState, resolveInstant, type PlanAxisBuilder, type PlanRawTableCellType, type PlanIconInput, type PlanFoldInput, type PlanQuantityOptions, type PlanHeatScaleInput, type PlanCellsFoldOptions, type PlanUiStateInput, type PlanRunInput, type PlanDecisionInput, type PlanPortInput, type PlanBucketEventInput, type PlanLaneInput, type PlanCellMarkerInput, type PlanChipInput, type PlanEventMarkInput, type PlanHeatCellsOptions, type PlanSegmentInput, type PlanTableSeriesInput, type PlanLinkInput, } from "./builders.js";
73
+ export { type PlanExpandInput, type PlanRowBaseInput, type PlanRowsInput, type PlanRowFields, type PlanGutterFields } from "./assemble.js";
74
+ export { type PlanLayerChannels, type PlanWrappedLayer, type PlanChartLayerInput, type PlanChartAxisInput, type PlanSpanInput, type PlanBucketsInput, type PlanChartInput, type PlanHeatInput, type PlanTableInput, type PlanCardsInput, type PlanEventsInput, type PlanGroupInput, type PlanSpanParts, type PlanBucketsParts, type PlanChartParts, type PlanHeatParts, type PlanTableParts, } from "./factories.js";
75
+ export { type PlanEditingConfig, type PlanBindHandle, type PlanConfig, type PlanCanvasOptions, createPlanRoot, buildPlanRoot } from "./root.js";
76
+ export { type PlanPickOptions, createPlanPick, createPlanPickItems } from "./pick.js";
77
+ export { PlanSeriesType, type PlanSeriesArm, type PlanSeriesValue, type PlanSeriesInput, type PlanSeriesIdentity, type PlanEntryExpr, type PlanAccessor, type PlanElementsAccessor, type PlanKindedAccessor, type PlanChildren, type PlanChildrenInput, type PlanSeriesRowConfig, type PlanSpanSeriesConfig, type PlanHeatSeriesConfig, type PlanTableSeriesOfConfig, type PlanBucketsSeriesConfig, type PlanCardsSeriesConfig, type PlanEventsSeriesConfig, type PlanChartSeriesConfig, type PlanGroupSeriesConfig, type PlanSectionSeriesConfig, type PlanViewsSeriesConfig, type PlanEntryFields, type PlanItemsField, type PlanItemOf, type PlanItemFields, type PlanItemKeyField, type PlanItemInstantType, type PlanItemInstantField, type PlanEditInput, type PlanPointEditInput, } from "./series.js";
78
+ /**
79
+ * The type of `Plan`: the `<Plan>` tag and its namespace. Declared explicitly
80
+ * (rather than inferred from `as const`) so the declaration emit stays within
81
+ * TypeScript's serialization limit.
82
+ */
83
+ export interface PlanNamespace extends PlanTagType {
84
+ /** Builds the shared axis declaration — `Plan.axis({ … })` is the `time`
85
+ * shorthand; `Plan.axis.time` / `.number` / `.ordinal` declare each kind. */
86
+ axis: typeof createAxis;
87
+ /** Builds one instant explicitly — `Plan.at.time(d)` / `.number(n)` /
88
+ * `.ordinal(s)` (element builders wrap by type; these are for records
89
+ * written as data and for reading as a declaration). */
90
+ at: typeof at;
91
+ /** Builds a quantity — a number with its unit and format (#824) — for a
92
+ * run's or a link's `quantity`. */
93
+ quantity: typeof createQuantity;
94
+ /** Builds a bound `ui` state's seed (#824) — `State.bind([Plan.Types.UiState], key, Plan.uiState())`. */
95
+ uiState: typeof createUiState;
96
+ /** Span-row stream builder (`series.rows` chrome + nested `rows:` input). */
97
+ span: typeof createSpan;
98
+ /** Bucket-row subtree builder. */
99
+ buckets: typeof createBuckets;
100
+ /** Chart-row subtree builder — Chart layer builders consumed as data. */
101
+ chart: typeof createChart;
102
+ /** Heat-row subtree builder. */
103
+ heat: typeof createHeat;
104
+ /** Table-row subtree builder. */
105
+ table: typeof createTable;
106
+ /** Cards rows (Roster chips). */
107
+ cards: typeof createCards;
108
+ /** Event rows (instant marks). */
109
+ events: typeof createEvents;
110
+ /** Group strips (the heterogeneous container). */
111
+ group: typeof createGroup;
112
+ /** Data-driven row SERIES over one source (`data` + `series` props) —
113
+ * each builder takes the entry type first and returns a real East series
114
+ * value; the list is the layout (#822). */
115
+ series: {
116
+ /** A span series (runs; a parent rolls its subtree up into bands). */
117
+ span: typeof createSeriesSpan;
118
+ /** A bucket series (Planner tiles). */
119
+ buckets: typeof createSeriesBuckets;
120
+ /** A chart series (layers from each entry's data). */
121
+ chart: typeof createSeriesChart;
122
+ /** A heat series (a parent aggregates its children per bucket). */
123
+ heat: typeof createSeriesHeat;
124
+ /** A table series (a parent subtotals its children per position). */
125
+ table: typeof createSeriesTable;
126
+ /** A cards series (Roster chips). */
127
+ cards: typeof createSeriesCards;
128
+ /** An events series (instant marks). */
129
+ events: typeof createSeriesEvents;
130
+ /** One group strip per entry, its members the entry's children. */
131
+ group: typeof createSeriesGroup;
132
+ /** A fixed titled block over series. */
133
+ section: typeof createSeriesSection;
134
+ /** One row per member series per entry, adjacent. */
135
+ views: typeof createSeriesViews;
136
+ /** Hand-built rows, named by the series and placed as its block. */
137
+ rows: typeof createSeriesRows;
138
+ };
139
+ /** A step down from an entry to a child collection of another type — a series' `children` (#822). */
140
+ children: typeof createChildren;
141
+ /** A row's id by series and path — `Plan.ref("press-jobs", "H1", "p03")` (#822). */
142
+ ref: typeof createRef;
143
+ /** A section header's id — `Plan.sectionRef("crew-block", "H1")` (#822). */
144
+ sectionRef: typeof createSectionRef;
145
+ /** An event of one of the Plan's event kinds, named for a link's end — `Plan.eventRef("job", key)` (#1191). */
146
+ eventRef: typeof createEventRef;
147
+ /** Series over a dataset, read only, for a Plan's `rows` — `Plan.over(data, [series…])` (#1191). */
148
+ over: typeof createOver;
149
+ /** The library pane's tabs, for a Plan's `library`, in its order (#1195). */
150
+ library: {
151
+ /** Every event kind's templates, by kind — `Plan.library.events()`. */
152
+ events: typeof libraryEvents;
153
+ /** Every event kind's unscheduled events, by when they are due — `Plan.library.backlog()`. */
154
+ backlog: typeof libraryBacklog;
155
+ /** What the canvas shows that a viewer can hide, each with an eye — `Plan.library.series()`. */
156
+ series: typeof librarySeries;
157
+ /** Cards of the author's own, one per row — `Plan.library.tab(rows, { name, label, … })`. */
158
+ tab: typeof libraryTab;
159
+ };
160
+ /** Builds one span run. */
161
+ run: typeof createRun;
162
+ /** Builds one decision diamond. */
163
+ decision: typeof createDecision;
164
+ /** Builds one quantity port glyph. */
165
+ port: typeof createPort;
166
+ /** Builds one bucket-event tile. */
167
+ event: typeof createBucketEvent;
168
+ /** Builds one bucket-row lane. */
169
+ lane: typeof createLane;
170
+ /** Builds one bucket-cell status marker. */
171
+ marker: typeof createCellMarker;
172
+ /** Builds one cards chip. */
173
+ chip: typeof createChip;
174
+ /** Builds one event-row mark. */
175
+ mark: typeof createEventMark;
176
+ /** Builds one link edge of the canvas's link graph (`<Plan links>`). */
177
+ link: typeof createLink;
178
+ /** Non-null mark-kind builders (`Plan.markKind.decision(applied)`). */
179
+ markKind: typeof markKind;
180
+ /** Wraps heat cells into the `heat` arm (scale + warn threshold). */
181
+ heatCells: typeof createHeatCells;
182
+ /** Wraps weight cells into the `weight` arm. */
183
+ weightCells: typeof createWeightCells;
184
+ /** Wraps segment cells into the `segments` arm. */
185
+ segmentCells: typeof createSegmentCells;
186
+ /** Builds one segment of a segment cell. */
187
+ segment: typeof createSegment;
188
+ /** Builds formatted per-bucket table cells from raw values. */
189
+ tableCells: typeof createTableCells;
190
+ /** Builds one table-row value series (per-position style, raw cells). */
191
+ tableSeries: typeof createTableSeries;
192
+ /** Wraps a Chart layer with the Plan-only channels (axis / breach / series). */
193
+ layer: typeof createLayer;
194
+ /** Pins a chart row to an explicit pixel height. */
195
+ fixed: typeof createFixedHeight;
196
+ /** Binds the canvas's row series to a persisted pick (#590) — pass it as
197
+ * `<Plan pick>` and the canvas shows the picked series and mounts the
198
+ * library, which lists sections and kinds. */
199
+ pick: typeof createPlanPick;
200
+ /** The library entries for the canvas's series — no state binding. */
201
+ pickItems: typeof createPlanPickItems;
202
+ /** The Plan East types. */
203
+ Types: {
204
+ /** The Plan root IR ({@link PlanRootType}). */
205
+ Root: typeof PlanRootType;
206
+ /** The shared axis declaration — `{ time | number | ordinal }`. */
207
+ Axis: typeof PlanAxisType;
208
+ /** The `time` axis arm. */
209
+ TimeAxis: typeof PlanTimeAxisType;
210
+ /** The `number` axis arm. */
211
+ NumberAxis: typeof PlanNumberAxisType;
212
+ /** The `ordinal` axis arm. */
213
+ OrdinalAxis: typeof PlanOrdinalAxisType;
214
+ /** One instant on the shared axis — `{ time | number | ordinal }`. */
215
+ Instant: typeof PlanInstantType;
216
+ /** The two grains (group / resource). */
217
+ Grain: typeof PlanGrainType;
218
+ /** One canvas row. */
219
+ Row: typeof PlanRowType;
220
+ /** One block's rows — an ordered stream (#822). */
221
+ Rows: typeof PlanRowsCollectionType;
222
+ /** One block of the canvas's rows — a data series' entries, which a
223
+ * paged canvas pages on its own, or fixed rows drawn once (#823). */
224
+ Block: typeof PlanBlockType;
225
+ /** The canvas's rows — its blocks, in layout order (#823). */
226
+ Blocks: typeof PlanBlocksType;
227
+ /** A row's typed identity — `{ series, path }` (#822). */
228
+ RowId: typeof PlanRowIdType;
229
+ /** The eight-arm row kind. */
230
+ RowKind: typeof PlanRowKindType;
231
+ /** The gutter identity. */
232
+ Gutter: typeof PlanGutterType;
233
+ /** One span run. */
234
+ Run: typeof PlanRunType;
235
+ /** One decision diamond. */
236
+ DecisionMark: typeof PlanDecisionMarkType;
237
+ /** One quantity port. */
238
+ Port: typeof PlanPortType;
239
+ /** The rollup mode (union / byStatus / sum). */
240
+ Rollup: typeof PlanRollupType;
241
+ /** How an event kind draws — bars, tiles, chips or marks (#1190). */
242
+ Draw: typeof PlanDrawType;
243
+ /** One bucket-event tile. */
244
+ BucketEvent: typeof PlanBucketEventType;
245
+ /** One bucket-row lane. */
246
+ Lane: typeof PlanLaneType;
247
+ /** One bucket-cell status marker. */
248
+ CellMarker: typeof PlanCellMarkerType;
249
+ /** The tile fill axis. */
250
+ Stretch: typeof PlanStretchType;
251
+ /** The tile two-axis content alignment. */
252
+ Content: typeof PlanContentType;
253
+ /** The tile attention animation. */
254
+ Animation: typeof PlanAnimationType;
255
+ /** One data-only chart layer. */
256
+ ChartLayer: typeof PlanChartLayerType;
257
+ /** One `{t, y}` chart point. */
258
+ ChartPoint: typeof PlanChartPointType;
259
+ /** A chart y-axis declaration. */
260
+ ChartAxis: typeof PlanChartAxisType;
261
+ /** The chart height mode (spark / expanded / fixed). */
262
+ ChartHeight: typeof PlanChartHeightType;
263
+ /** The y-axis side (left / right). */
264
+ AxisSide: typeof PlanAxisSideType;
265
+ /** A breach threshold. */
266
+ Breach: typeof PlanBreachType;
267
+ /** A heat row's cells (heat / weight / segments). */
268
+ HeatCells: typeof PlanHeatCellsType;
269
+ /** One heat cell. */
270
+ HeatCell: typeof PlanHeatCellType;
271
+ /** One weight cell. */
272
+ WeightCell: typeof PlanWeightCellType;
273
+ /** One segment cell. */
274
+ SegmentCell: typeof PlanSegmentCellType;
275
+ /** One segment of a segment cell. */
276
+ Segment: typeof PlanSegmentType;
277
+ /** The heat aggregation mode. */
278
+ Aggregate: typeof PlanAggregateType;
279
+ /** One table cell. */
280
+ TableCell: typeof PlanTableCellType;
281
+ /** One table-row value series (cells + per-position style). */
282
+ TableSeries: typeof PlanTableSeriesType;
283
+ /** The multi-series part layout (horizontal / vertical). */
284
+ TableSplit: typeof PlanTableSplitType;
285
+ /** The table-cell tone. */
286
+ TableTone: typeof PlanTableToneType;
287
+ /** The table-row emphasis. */
288
+ TableEmphasis: typeof PlanTableEmphasisType;
289
+ /** One cards chip. */
290
+ Chip: typeof PlanChipType;
291
+ /** One event mark. */
292
+ EventMark: typeof PlanEventMarkType;
293
+ /** The event-mark kind. */
294
+ EventMarkKind: typeof PlanEventMarkKindType;
295
+ /** One link edge of the canvas's link graph (the ribbon shape). */
296
+ Link: typeof PlanLinkType;
297
+ /** A row's expand-in-place declaration (R2). */
298
+ Expand: typeof PlanExpandType;
299
+ /** The expand render's axis treatment (keep / dim / off). */
300
+ ExpandAxis: typeof PlanExpandAxisType;
301
+ /** A gesture a draft is made by — a card dropped on a row (#880), or an element moved or resized (#825). */
302
+ Gesture: typeof PlanGestureType;
303
+ /** A library card dropped on a row — what an editable series' `create` builds its item from (#880). */
304
+ Drop: typeof PlanDropType;
305
+ /** A run, chip, tile or mark moved or resized — its item's new row and instants (#825). */
306
+ Move: typeof PlanMoveType;
307
+ /** Which gestures a row takes (#880). */
308
+ RowEdits: typeof PlanRowEditsType;
309
+ /** How a row's elements move — its item type, and whether they resize (#825). */
310
+ MoveEdits: typeof PlanMoveEditsType;
311
+ /** `PatchEvent(R)` — what `editing.onPatch` receives for entries of `R` (#880). */
312
+ PatchEvent: typeof PlanPatchEventTypeFor;
313
+ /** The root's editing declaration on the wire — the shared session's fields and the canvas's own (#880). */
314
+ Editing: typeof PlanEditingType;
315
+ /** The series type CONSTRUCTOR — `Plan.Types.Series(RowType)` gives the
316
+ * concrete variant type of one series over `Dict<String, RowType>`
317
+ * entries; `Plan.Types.Series(RowType, KeyType)` over another key type. */
318
+ Series: typeof PlanSeriesType;
319
+ /** One run by reference — a `run` element ref, and a link's two ends. */
320
+ RunRef: typeof PlanRunRefType;
321
+ /** One canvas element by reference — what `onElementClick` and the `popover` / `hover` resolvers receive. */
322
+ ElementRef: typeof PlanElementRefType;
323
+ /** How a bucket folds the values that fall in it (#824). */
324
+ Fold: typeof PlanFoldType;
325
+ /** A quantity — a number, its unit and format (#824). */
326
+ Quantity: typeof PlanQuantityType;
327
+ /** A heat scale — min, max and the warn threshold. */
328
+ HeatScale: typeof PlanHeatScaleType;
329
+ /** What a collapsed group strip shows (#824). */
330
+ GroupSummary: typeof PlanGroupSummaryType;
331
+ /** The interaction state a bound `ui` holds (#824). */
332
+ UiState: typeof PlanUiStateType;
333
+ /** A bound `ui` — `State.bind`'s handle at {@link PlanUiStateType}. */
334
+ UiBind: typeof PlanUiBindType;
335
+ /** The `onGroupToggle` payload. */
336
+ GroupToggleEvent: typeof PlanGroupToggleEventType;
337
+ /** One status-footer item. */
338
+ FooterItem: typeof PlanFooterItemType;
339
+ /** The Plan style. */
340
+ Style: typeof PlanStyleType;
341
+ };
342
+ }
343
+ /**
344
+ * The axis-aligned planning canvas, `<Plan>`: the one Plan. It renders in its
345
+ * `BuilderFrame` wherever it is used — one toolbar holding every control, the
346
+ * banners, the canvas in main, the footer — and its panes are optional props:
347
+ * no prop, no pane.
348
+ *
349
+ * One shared axis (`{ time | number | ordinal }` — a window ÷ resolution or
350
+ * step, or an ordinal list, = `n` buckets) runs under heterogeneous rows —
351
+ * span rows (Gantt state-runs), bucket rows (Planner allocation lanes), chart
352
+ * rows (Chart layers consumed as data), heat and table rows (Matrix cells,
353
+ * bucketed numerals), cards rows (Roster chips), event marks and group strips
354
+ * — sliced and planned as one surface.
355
+ *
356
+ * - **The rows** come from event kinds over records (`resources` and
357
+ * `events`, `Schedule`'s, which a Calendar takes too), from `data` laid out
358
+ * by `series` and edited through `editing`, and from `rows` (hand-built rows
359
+ * and `Plan.over(data, [series…])`), read only — in that order down the
360
+ * canvas, pinned rows of any source under the ruler.
361
+ * - **`data` and `series`**: a keyed collection of raw entries, or a paged
362
+ * source of one, and one `Plan.series.*` value per row series, whose
363
+ * accessors derive each canvas row from the raw fields (`Plan.pick` makes
364
+ * the list one the user picks from). The list IS the layout — one block per
365
+ * series, top to bottom — and hierarchy comes only from the data's own
366
+ * nesting (#822): a series' `children` walk what an entry holds, to any
367
+ * depth (`Plan.children` steps down to another entry type), and a flat
368
+ * source is grouped in a data step first (`groupToDicts`).
369
+ * `Plan.series.section` titles a block and `Plan.series.views` shows one
370
+ * entry several ways. Every row has a typed id — its series and the path of
371
+ * entry keys to it (`Plan.ref`).
372
+ * - **The axis** is `Plan.axis` (`time`), `Plan.axis.number` or
373
+ * `Plan.axis.ordinal`, its window stated or supplied by a bound slice. Event
374
+ * kinds need a time axis.
375
+ * - **Content** comes from the value builders (`Plan.run` / `event` / `chip`
376
+ * / `mark` / `marker` / `decision` / `port` / `segment` / the cell builders,
377
+ * instants via `Plan.at.*` when written as data) and the kind factories
378
+ * (`Plan.span` / `buckets` / `chart` / `heat` / `table` / `cards` /
379
+ * `events` / `group`); every East type is on `Plan.Types.*`.
380
+ * - **Links** join runs (`Plan.ref(series, …path)` and the run's key) or
381
+ * events (`Plan.eventRef(kind, key)`).
382
+ * - **The library** (`library`) is the start pane's tabs, in its order:
383
+ * `Plan.library.events()`, `backlog()`, `series()` and `tab(rows, { … })`,
384
+ * cards of the author's own. Left out, there is no library pane.
385
+ *
386
+ * The Plan fills its parent and draws no border of its own. `id` keeps two
387
+ * Plans on one surface apart. The tag is generic in the canvas's axis kind,
388
+ * inferred from `axis`: a series or a hand-built row whose instants ride
389
+ * another arm is a compile error at the tag.
390
+ *
391
+ * @example
392
+ * ```tsx
393
+ * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
394
+ * import { ArrayType, BooleanType, DictType, East, FloatType, OptionType, StringType, StructType, none, some, variant } from "@elaraai/east";
395
+ * import { Chart, EventStateType, Format, Reactive, UIComponentType } from "@elaraai/east-ui";
396
+ * import { Data, Plan } from "@elaraai/e3-ui";
397
+ * import e3 from "@elaraai/e3";
398
+ *
399
+ * export const OrdinalJob = StructType({ key: StringType, label: StringType, start: StringType, end: StringType, state: EventStateType });
400
+ * export const OrdinalAlloc = StructType({ key: StringType, phase: StringType, state: EventStateType });
401
+ * export const OrdinalShift = StructType({ key: StringType, from: StringType, to: StringType, label: StringType, state: EventStateType });
402
+ * export const OrdinalMark = StructType({ key: StringType, phase: StringType, label: StringType, exception: BooleanType });
403
+ * export const OrdinalPoint = StructType({ phase: StringType, n: FloatType });
404
+ * export const OrdinalReading = StructType({ at: StringType, value: OptionType(FloatType) });
405
+ * export const OrdinalOrderRow = StructType({
406
+ * series: StringType, label: StringType, value: OptionType(StringType), sub: OptionType(StringType),
407
+ * jobs: ArrayType(OrdinalJob), allocations: ArrayType(OrdinalAlloc), shifts: ArrayType(OrdinalShift),
408
+ * marks: ArrayType(OrdinalMark), points: ArrayType(OrdinalPoint), counts: ArrayType(OrdinalReading),
409
+ * cells: ArrayType(Plan.Types.HeatCell),
410
+ * });
411
+ * export const planOrdinalOrders = e3.input("plan_ordinal_orders", DictType(StringType, OrdinalOrderRow), variant("value", new Map([
412
+ * ["j6188", { series: "job", label: "J-6188", value: some("96 k sheets"), sub: none,
413
+ * allocations: [], shifts: [], marks: [], points: [], counts: [], cells: [],
414
+ * jobs: [
415
+ * { key: "plates", label: "PLATES", start: "PREPRESS", end: "PLATES", state: variant("actual", null) },
416
+ * { key: "print", label: "PRINT · J-4642", start: "PRINT", end: "FINISH", state: variant("in-progress", null) },
417
+ * { key: "deliver", label: "BIND + DELIVER", start: "BIND", end: "DELIVER", state: variant("proposed", variant("recommended", null)) },
418
+ * ] }],
419
+ * ["j6204", { series: "job", label: "J-6204", value: some("54 k sheets"), sub: none,
420
+ * allocations: [], shifts: [], marks: [], points: [], counts: [], cells: [],
421
+ * jobs: [
422
+ * { key: "prepress", label: "PREPRESS", start: "PREPRESS", end: "PREPRESS", state: variant("actual", null) },
423
+ * { key: "print", label: "PRINT · J-4663", start: "PLATES", end: "BIND", state: variant("proposed", variant("recommended", null)) },
424
+ * ] }],
425
+ * ["bindery", { series: "bindery", label: "Bindery 2", value: none, sub: some("slots"),
426
+ * jobs: [], shifts: [], marks: [], points: [], counts: [], cells: [],
427
+ * allocations: [
428
+ * { key: "a1", phase: "PLATES", state: variant("confirmed", null) }, { key: "a2", phase: "PRINT", state: variant("confirmed", null) },
429
+ * { key: "a3", phase: "PRINT", state: variant("proposed", variant("recommended", null)) }, { key: "a4", phase: "BIND", state: variant("proposed", variant("recommended", null)) },
430
+ * ] }],
431
+ * // Heat cells as STORED records — the phase spelled on the `ordinal` arm.
432
+ * ["load", { series: "load", label: "Phase load", value: none, sub: none,
433
+ * jobs: [], allocations: [], shifts: [], marks: [], points: [], counts: [],
434
+ * cells: [
435
+ * { at: variant("ordinal", "PREPRESS"), value: some(35.0), label: some("35") },
436
+ * { at: variant("ordinal", "PLATES"), value: some(66.0), label: some("66") },
437
+ * { at: variant("ordinal", "PRINT"), value: some(37.0), label: some("37") },
438
+ * { at: variant("ordinal", "FINISH"), value: some(68.0), label: some("68") },
439
+ * { at: variant("ordinal", "BIND"), value: some(39.0), label: some("39") },
440
+ * { at: variant("ordinal", "DELIVER"), value: some(70.0), label: some("70") },
441
+ * ] }],
442
+ * ["wip", { series: "wip", label: "WIP · jobs", value: some("31"), sub: none,
443
+ * jobs: [], allocations: [], shifts: [], marks: [], counts: [], cells: [],
444
+ * points: [
445
+ * { phase: "PREPRESS", n: 4.0 }, { phase: "PLATES", n: 11.0 }, { phase: "PRINT", n: 18.0 },
446
+ * { phase: "FINISH", n: 5.0 }, { phase: "BIND", n: 12.0 }, { phase: "DELIVER", n: 19.0 },
447
+ * ] }],
448
+ * ["count", { series: "count", label: "Jobs in phase", value: none, sub: none,
449
+ * jobs: [], allocations: [], shifts: [], marks: [], points: [], cells: [],
450
+ * counts: [
451
+ * { at: "PREPRESS", value: some(12.0) }, { at: "PLATES", value: some(23.0) }, { at: "PRINT", value: some(34.0) },
452
+ * { at: "FINISH", value: some(15.0) }, { at: "BIND", value: none }, { at: "DELIVER", value: some(37.0) },
453
+ * ] }],
454
+ * ["crew", { series: "crew", label: "Crew B", value: none, sub: none,
455
+ * jobs: [], allocations: [], marks: [], points: [], counts: [], cells: [],
456
+ * shifts: [
457
+ * { key: "s1", from: "PREPRESS", to: "PLATES", label: "prepress crew", state: variant("confirmed", null) },
458
+ * { key: "s2", from: "PRINT", to: "DELIVER", label: "+ bindery crew", state: variant("proposed", variant("recommended", null)) },
459
+ * ] }],
460
+ * ["gates", { series: "gates", label: "Gates", value: none, sub: none,
461
+ * jobs: [], allocations: [], shifts: [], points: [], counts: [], cells: [],
462
+ * marks: [
463
+ * { key: "g1", phase: "FINISH", label: "HOLD", exception: true },
464
+ * { key: "g2", phase: "DELIVER", label: "RELEASE", exception: false },
465
+ * ] }],
466
+ * ])));
467
+ *
468
+ * const canvas = East.function([], UIComponentType, (_$) => (
469
+ * <Reactive>{$ => {
470
+ * const orders = $.let(Data.bind(planOrdinalOrders));
471
+ * const PHASES = $.const(["PREPRESS", "PLATES", "PRINT", "FINISH", "BIND", "DELIVER"], ArrayType(StringType));
472
+ * const EXCEPTION = $.const(variant("exception", null), Plan.Types.EventMarkKind);
473
+ * const MILESTONE = $.const(variant("milestone", null), Plan.Types.EventMarkKind);
474
+ * const series = $.const([
475
+ * Plan.series.section(OrdinalOrderRow, { key: "job-block", title: "Jobs", meta: "2 rows" }, [
476
+ * Plan.series.span(OrdinalOrderRow, {
477
+ * key: "job", title: "Jobs",
478
+ * match: r => r.series.equal("job"),
479
+ * label: r => r.label, id: true, value: r => r.value,
480
+ * // `j.start` / `j.end` are StringType fields — the builder wraps them to the ordinal arm.
481
+ * runs: r => r.jobs.map((_$, j) => Plan.run({ key: j.key, start: j.start, end: j.end, label: j.label, state: j.state })),
482
+ * }),
483
+ * ]),
484
+ * Plan.series.buckets(OrdinalOrderRow, {
485
+ * key: "bindery", title: "Bindery",
486
+ * match: r => r.series.equal("bindery"),
487
+ * label: r => r.label, sub: r => r.sub,
488
+ * events: r => r.allocations.map((_$, a) => Plan.event({ key: a.key, at: a.phase, state: a.state })),
489
+ * }),
490
+ * Plan.series.heat(OrdinalOrderRow, {
491
+ * key: "load", title: "Phase load",
492
+ * match: r => r.series.equal("load"),
493
+ * label: r => r.label,
494
+ * cells: r => Plan.heatCells(r.cells, { min: 0, max: 100, warnAt: 90 }),
495
+ * }),
496
+ * Plan.series.chart(OrdinalOrderRow, {
497
+ * key: "wip", title: "WIP",
498
+ * match: r => r.series.equal("wip"),
499
+ * label: r => r.label, id: true, value: r => r.value, height: "expanded",
500
+ * // A string x accessor lands the columns on the ordinal arm.
501
+ * layers: r => [Chart.Column(r.points, { x: p => p.phase, y: p => p.n })],
502
+ * }),
503
+ * Plan.series.table(OrdinalOrderRow, {
504
+ * key: "count", title: "Counts",
505
+ * match: r => r.series.equal("count"),
506
+ * label: r => r.label,
507
+ * cells: r => Plan.tableCells(r.counts),
508
+ * format: Format.Number({ maximumFractionDigits: 0n }),
509
+ * }),
510
+ * Plan.series.cards(OrdinalOrderRow, {
511
+ * key: "crew", title: "Crews",
512
+ * match: r => r.series.equal("crew"),
513
+ * label: r => r.label,
514
+ * chips: r => r.shifts.map((_$, s) => Plan.chip({ key: s.key, from: s.from, to: s.to, label: s.label, state: s.state })),
515
+ * }),
516
+ * Plan.series.events(OrdinalOrderRow, {
517
+ * key: "gates", title: "Gates",
518
+ * match: r => r.series.equal("gates"),
519
+ * label: r => r.label, id: true,
520
+ * marks: r => r.marks.map((_$, m) => Plan.mark({
521
+ * key: m.key, at: m.phase, label: m.label,
522
+ * kind: m.exception.ifElse(() => EXCEPTION, () => MILESTONE),
523
+ * })),
524
+ * }),
525
+ * ], ArrayType(Plan.Types.Series(OrdinalOrderRow)));
526
+ * // The declaration: the list IS the axis — one bucket per phase, `now` at PRINT.
527
+ * const axis = $.const(Plan.axis.ordinal({ values: PHASES, now: "PRINT" }));
528
+ * return (
529
+ * <Plan
530
+ * axis={axis}
531
+ * data={orders}
532
+ * series={series}
533
+ * footer={[{ text: "6 PHASES · NOW PRINT" }]}
534
+ * />
535
+ * );
536
+ * }}</Reactive>
537
+ * ));
538
+ * ```
539
+ *
540
+ * @example
541
+ * ```tsx
542
+ * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
543
+ * import { DateTimeType, DictType, East, FloatType, NullType, OptionType, StringType, StructType, VariantType, none, some, variant } from "@elaraai/east";
544
+ * import { EventStateType, Reactive, UIComponentType } from "@elaraai/east-ui";
545
+ * import { Plan, Record, Schedule } from "@elaraai/e3-ui";
546
+ * import e3 from "@elaraai/e3";
547
+ *
548
+ * export const PrintPress = StructType({ name: StringType, hall: StringType, sheets_per_hour: FloatType });
549
+ * export const PrintJob = StructType({
550
+ * title: StringType,
551
+ * start: OptionType(DateTimeType),
552
+ * end: OptionType(DateTimeType),
553
+ * press: OptionType(StringType),
554
+ * state: EventStateType,
555
+ * sheets: FloatType,
556
+ * customer: StringType,
557
+ * stock: VariantType({ coated: NullType, uncoated: NullType, board: NullType }),
558
+ * due: OptionType(DateTimeType),
559
+ * });
560
+ * export const PrintCustomer = StructType({ name: StringType, district: StringType, trade: StringType });
561
+ * export const planPrintPresses = e3.record("plan_print_presses", DictType(StringType, PrintPress), new Map([
562
+ * ["a1", { name: "Press A1", hall: "Hall A", sheets_per_hour: 12000.0 }],
563
+ * ["a2", { name: "Press A2", hall: "Hall A", sheets_per_hour: 10000.0 }],
564
+ * ["a3", { name: "Press A3", hall: "Hall A", sheets_per_hour: 8000.0 }],
565
+ * ["b1", { name: "Press B1", hall: "Hall B", sheets_per_hour: 15000.0 }],
566
+ * ["b2", { name: "Press B2", hall: "Hall B", sheets_per_hour: 12000.0 }],
567
+ * ["b3", { name: "Press B3", hall: "Hall B", sheets_per_hour: 6000.0 }],
568
+ * ]));
569
+ * export const planPrintCustomers = e3.record("plan_print_customers", DictType(StringType, PrintCustomer), new Map([
570
+ * ["alder-finch", { name: "Alder & Finch", district: "Old Town", trade: "Retail" }],
571
+ * ["bluewater-tours", { name: "Bluewater Tours", district: "North Quay", trade: "Travel" }],
572
+ * ["copperleaf-cafe", { name: "Copperleaf Cafe", district: "Old Town", trade: "Hospitality" }],
573
+ * ["driftwood-museum", { name: "Driftwood Museum", district: "North Quay", trade: "Arts" }],
574
+ * ["elmway-college", { name: "Elmway College", district: "Riverside", trade: "Education" }],
575
+ * ["foxglove-gardens", { name: "Foxglove Gardens", district: "Riverside", trade: "Retail" }],
576
+ * ["granite-hall", { name: "Granite Hall", district: "Old Town", trade: "Events" }],
577
+ * ["harbour-arts", { name: "Harbour Arts Society", district: "North Quay", trade: "Arts" }],
578
+ * ["heathfield", { name: "Heathfield Theatre", district: "Old Town", trade: "Arts" }],
579
+ * ["ivy-lane", { name: "Ivy Lane Studio", district: "Riverside", trade: "Design" }],
580
+ * ["juniper-toys", { name: "Juniper Toys", district: "Riverside", trade: "Retail" }],
581
+ * ["kestrel-cycling", { name: "Kestrel Cycling Club", district: "Riverside", trade: "Sport" }],
582
+ * ["larkspur-home", { name: "Larkspur Home", district: "Old Town", trade: "Retail" }],
583
+ * ["meridian-monthly", { name: "Meridian Monthly", district: "North Quay", trade: "Publishing" }],
584
+ * ["northwind", { name: "Northwind Outfitters", district: "North Quay", trade: "Retail" }],
585
+ * ["orchard-market", { name: "Orchard Street Market", district: "Old Town", trade: "Markets" }],
586
+ * ]));
587
+ * export const planEventJobs = e3.record("plan_event_jobs", DictType(StringType, PrintJob), new Map([
588
+ * ["J-3001", { title: "Spring catalogue", start: some(new Date("2026-10-06T06:00:00Z")), end: some(new Date("2026-10-06T14:00:00Z")), press: some("a1"), state: variant("actual", null), sheets: 96000.0, customer: "Alder & Finch", stock: variant("coated", null), due: some(new Date("2026-10-08T00:00:00Z")) }],
589
+ * ["J-3002", { title: "Course handbook", start: some(new Date("2026-10-19T06:00:00Z")), end: some(new Date("2026-10-19T18:00:00Z")), press: some("a1"), state: variant("confirmed", null), sheets: 144000.0, customer: "Elmway College", stock: variant("uncoated", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
590
+ * ["J-3003", { title: "Annual report", start: some(new Date("2026-10-14T06:00:00Z")), end: some(new Date("2026-10-14T12:00:00Z")), press: some("a2"), state: variant("in-progress", null), sheets: 60000.0, customer: "Harbour Arts Society", stock: variant("coated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
591
+ * ["J-3004", { title: "Club newsletter", start: some(new Date("2026-10-08T06:00:00Z")), end: some(new Date("2026-10-08T08:00:00Z")), press: some("a3"), state: variant("actual", null), sheets: 16000.0, customer: "Kestrel Cycling Club", stock: variant("uncoated", null), due: some(new Date("2026-10-09T00:00:00Z")) }],
592
+ * ["J-3005", { title: "Store flyers", start: some(new Date("2026-10-15T06:00:00Z")), end: some(new Date("2026-10-15T16:00:00Z")), press: some("b1"), state: variant("confirmed", null), sheets: 150000.0, customer: "Northwind Outfitters", stock: variant("uncoated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
593
+ * ["J-3006", { title: "Market posters", start: some(new Date("2026-10-20T06:00:00Z")), end: some(new Date("2026-10-20T12:00:00Z")), press: some("b2"), state: variant("confirmed", null), sheets: 72000.0, customer: "Orchard Street Market", stock: variant("coated", null), due: some(new Date("2026-10-22T00:00:00Z")) }],
594
+ * ["J-3007", { title: "Loyalty cards", start: some(new Date("2026-10-20T10:00:00Z")), end: some(new Date("2026-10-20T13:00:00Z")), press: some("b2"), state: variant("proposed", variant("added", null)), sheets: 36000.0, customer: "Copperleaf Cafe", stock: variant("board", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
595
+ * ["J-3008", { title: "Gift boxes", start: some(new Date("2026-10-27T06:00:00Z")), end: some(new Date("2026-10-27T12:00:00Z")), press: some("b3"), state: variant("proposed", variant("recommended", null)), sheets: 48000.0, customer: "Juniper Toys", stock: variant("board", null), due: some(new Date("2026-10-30T00:00:00Z")) }],
596
+ * ["J-3009", { title: "Ticket books", start: some(new Date("2026-10-22T06:00:00Z")), end: some(new Date("2026-10-22T09:00:00Z")), press: none, state: variant("proposed", variant("added", null)), sheets: 24000.0, customer: "Heathfield Theatre", stock: variant("uncoated", null), due: some(new Date("2026-10-26T00:00:00Z")) }],
597
+ * ["J-3010", { title: "Guide reprint", start: none, end: none, press: none, state: variant("estimated", null), sheets: 24000.0, customer: "Driftwood Museum", stock: variant("coated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
598
+ * ["J-3011", { title: "Wall calendars", start: none, end: none, press: none, state: variant("estimated", null), sheets: 50000.0, customer: "Foxglove Gardens", stock: variant("coated", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
599
+ * ["J-3012", { title: "Spare covers", start: none, end: none, press: none, state: variant("estimated", null), sheets: 8000.0, customer: "Meridian Monthly", stock: variant("board", null), due: none }],
600
+ * ]));
601
+ * export const planEventJobsPatch = e3.mutation.patch(planEventJobs);
602
+ *
603
+ * const planEvents = East.function([], UIComponentType, (_$) => (
604
+ * <Reactive>{$ => {
605
+ * const presses = $.let(Record.bind(planPrintPresses, []));
606
+ * const jobs = $.let(Record.bind(planEventJobs, [planEventJobsPatch]));
607
+ * const customers = $.let(Record.bind(planPrintCustomers, []));
608
+ * const axis = $.let(Plan.axis({
609
+ * window: { min: new Date("2026-10-05T00:00:00Z"), max: new Date("2026-11-02T00:00:00Z") },
610
+ * resolution: "day", now: new Date("2026-10-14T09:00:00Z"),
611
+ * }));
612
+ * return (
613
+ * <Plan
614
+ * id="jobs"
615
+ * axis={axis}
616
+ * resources={{
617
+ * presses: Schedule.resources(presses.read(), { name: "Presses", icon: "print", label: p => p.name }),
618
+ * }}
619
+ * events={{
620
+ * job: Schedule.events(jobs, {
621
+ * name: "Print job", icon: "file-lines",
622
+ * title: "title", start: "start", end: "end",
623
+ * resource: { field: "press", of: "presses" },
624
+ * state: "state",
625
+ * // A job with no start waits in the backlog: placed, it runs as long as its sheets take at
626
+ * // 8,000 an hour.
627
+ * backlog: { duration: j => variant("hours", j.sheets.divide(8000.0)), due: j => j.due },
628
+ * fields: {
629
+ * customer: Schedule.field.text({ label: "Customer" }),
630
+ * stock: Schedule.field.select({ labels: { coated: "Coated", uncoated: "Uncoated", board: "Board" } }),
631
+ * },
632
+ * }),
633
+ * }}
634
+ * library={[
635
+ * Plan.library.backlog(),
636
+ * // The customers, by district: a card dropped on a job sets its customer.
637
+ * Plan.library.tab(customers.read(), {
638
+ * name: "Customers", icon: "building",
639
+ * label: c => c.name, meta: c => some(c.trade), group: c => c.district,
640
+ * drop: c => Schedule.patch(PrintJob, { customer: c.name }),
641
+ * }),
642
+ * ]}
643
+ * inspector
644
+ * />
645
+ * );
646
+ * }}</Reactive>
647
+ * ));
648
+ * ```
649
+ */
650
+ export declare const Plan: PlanNamespace;
651
+ /**
652
+ * The type of the internal Plan namespace — the public one, the payload the
653
+ * tag returns through its carrier, the canvas's root alone, and the carrier
654
+ * the renderer registers against.
655
+ */
656
+ export interface PlanInternalNamespace extends PlanNamespace {
657
+ /** Creates the Plan's payload alone — what `<Plan>` returns through the `Plan` carrier ({@link createPlanPayload}). */
658
+ Payload: typeof createPlanPayload;
659
+ /** Creates the canvas's root alone — the axis, rows over `data` and the rest the payload carries as its `plan` ({@link createPlanRoot}). */
660
+ Root: typeof createPlanRoot;
661
+ /** The `Plan` carrier ({@link PlanComponent}). */
662
+ Component: typeof PlanComponent;
663
+ }
664
+ /**
665
+ * The internal Plan namespace — `@elaraai/e3-ui/internal`'s `Plan`: the public
666
+ * namespace, `Plan.Payload`, `Plan.Root` and the `Plan` carrier, for the
667
+ * renderer and the tests.
668
+ *
669
+ * @internal
670
+ */
671
+ export declare const PlanInternal: PlanInternalNamespace;
672
+ //# sourceMappingURL=index.d.ts.map