@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 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/sheet/fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACH,SAAS,EACT,QAAQ,EAGR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EAMV,KAAK,QAAQ,EAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAmC,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAOtG;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMxB,CAAC;AAEH,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAuKnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACpD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACzD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,SAAS,MAAM,EAAE,GAC7B,QAAQ,CAAC,cAAc,CAAC,CAwB1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,qDAAS,CAAC"}
@@ -0,0 +1,280 @@
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
+ * The Sheet's inspector forms (#1188, `Sheet Builder Spec.md` §5.3,
7
+ * SB10): every field of a row — a grouped sheet's line — and of a group,
8
+ * resolved through `Fields`, each column's kind its field's default hint and
9
+ * an explicit hint (`fields`, `groupFields`) winning.
10
+ *
11
+ * | The field's column | Its editor |
12
+ * |---|---|
13
+ * | `text` | Text |
14
+ * | `custom` | Text — the column's own `print` shows it, its `parse` reads it |
15
+ * | `date` | The date field, at the row's date level (the renderer sets its precision) |
16
+ * | `quantity`, `integer` | The number field — a quantity in the driver's unit |
17
+ * | `lookup`, `reference`, `enum` | A select over the register's members (`reference` of the register) |
18
+ * | `set`, `link` | Read only here: the renderer draws the members, and edits them in the grid |
19
+ * | `stamped`, a `value` projection, `editable: false` | Read only |
20
+ * | No column | By its type, as `Fields.specs` resolves it |
21
+ *
22
+ * A field with a column is read and written through it: its spec names the
23
+ * column (or the band cell, on a group), and an edit in the inspector is the
24
+ * cell's write, as typing in it is (SB52). A field with none is the draft's
25
+ * own. A hint may label a column's field, give it a help line, make it read
26
+ * only or hide it; an editor hint must fit the field's type, and a read-only
27
+ * column takes none. Each form carries the cells a patch of its struct sets
28
+ * (`encode`) — the projection the copilot's proposals and the templates go
29
+ * through — so a whole-row write (a custom inspector's `update`, SB58) lands
30
+ * on the cells as the grid would write them.
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ import { ArrayType, BlobType, East, EastTypeType, FunctionType, OptionType, StringType, StructType, none, some, toEastTypeValue, variant, } from "@elaraai/east";
35
+ import { FIELD_HINT, FieldSpecType, Fields, fieldSpecs, spellOut } from "@elaraai/east-ui/internal";
36
+ import { SheetCellsType, buildPatchCells } from "./bridge.js";
37
+ import { SheetPatchTypeFor } from "./types.js";
38
+ // ============================================================================
39
+ // The wire
40
+ // ============================================================================
41
+ /**
42
+ * One field of an inspector form on the wire.
43
+ *
44
+ * @property spec - What the form draws — `Fields`' spec
45
+ * @property column - The column it is read and written through, by key (on a group, the band cell's key); `none` for a field the draft holds alone
46
+ */
47
+ export const SheetFieldType = StructType({
48
+ spec: FieldSpecType,
49
+ column: OptionType(StringType),
50
+ });
51
+ /**
52
+ * One inspector form on the wire: the struct it edits, its fields in the
53
+ * form's order, and the cells a patch of the struct sets.
54
+ *
55
+ * @property type - The struct the form edits — the row (a grouped sheet's line), or the group
56
+ * @property fields - Its fields: the hinted first, in hint order, then the rest in declared order
57
+ * @property columns - The struct's fields its editable columns write — a column's own, a link's other half — whatever the form shows: a whole-row write sets these through `encode`
58
+ * @property readonly - The struct's fields its read-only columns show — a stamped code, a `value` projection, a column `editable: false` — which a whole-row write leaves as they are, as the grid does; every other field a whole-row write sets on the draft
59
+ * @property encode - A `Sheet.Types.Patch` of the struct, encoded (beast2) → the cells it sets through the sheet's editable columns (or the band's cells)
60
+ */
61
+ export const SheetFormType = StructType({
62
+ type: EastTypeType,
63
+ fields: ArrayType(SheetFieldType),
64
+ columns: ArrayType(StringType),
65
+ readonly: ArrayType(StringType),
66
+ encode: FunctionType([BlobType], SheetCellsType),
67
+ });
68
+ /**
69
+ * The inspector's forms on the wire.
70
+ *
71
+ * @property row - A row's — a grouped sheet's line's
72
+ * @property group - A group's own fields, on a grouped sheet
73
+ */
74
+ export const SheetFormsType = StructType({
75
+ row: SheetFormType,
76
+ group: OptionType(SheetFormType),
77
+ });
78
+ /** Whether a value is a hint rather than a nested struct's hints. */
79
+ function isHint(value) {
80
+ return value !== null && typeof value === "object" && FIELD_HINT in value;
81
+ }
82
+ /** Why a column's field takes no editor hint, or `undefined` when it does. */
83
+ function readOnlyReason(meta) {
84
+ if (meta.derived !== undefined)
85
+ return "is a `value` projection, a derived read";
86
+ if (meta.kind === "stamped")
87
+ return "is stamped — a code an upstream system owns";
88
+ if (meta.kind === "set" || meta.kind === "link")
89
+ return `is a ${meta.kind} column, whose members are edited in the sheet`;
90
+ if (meta.kind === "custom")
91
+ return "is a custom column, read through its own `parse`";
92
+ if (!meta.editable)
93
+ return "is read only (`editable: false`)";
94
+ return undefined;
95
+ }
96
+ /** A hint's `reference` editor, checked against the sheet's registers: the keyed set a select lists is one of them. */
97
+ function checkReference(editor, field, registers) {
98
+ if (editor.type !== "reference" || registers.has(editor.value.of))
99
+ return;
100
+ throw new Error(`Sheet: \`${field}\` is a reference to "${editor.value.of}", which is not one of the sheet's registers (${[...registers].join(", ") || "none declared"}) — declare it in \`registers\`, or name one of them`);
101
+ }
102
+ /** A column's field's editor with no hint: its kind's. */
103
+ function kindEditor(meta) {
104
+ if (meta.derived !== undefined || !meta.editable)
105
+ return variant("readonly", null);
106
+ switch (meta.kind) {
107
+ case "text":
108
+ case "custom": return variant("text", { placeholder: none });
109
+ case "date": return variant("datetime", { precision: none });
110
+ case "quantity":
111
+ case "integer": return variant("number", { unit: none, step: none, min: none, max: none });
112
+ case "lookup":
113
+ case "reference":
114
+ case "enum": return variant("reference", { of: meta.register });
115
+ default: return variant("readonly", null);
116
+ }
117
+ }
118
+ /**
119
+ * The spec of a field read and written through a column — its kind's editor,
120
+ * or its hint's; the column's header (else the field's name spelled out) and
121
+ * its second line its label and help, unless the hint names its own.
122
+ */
123
+ function columnField(name, meta, hint, where, registers) {
124
+ const kind = hint?.[FIELD_HINT];
125
+ let editor;
126
+ let type;
127
+ if (meta.derived !== undefined) {
128
+ // A projection's value is the cell's, never the field's.
129
+ type = meta.derivedOptional === true ? OptionType(meta.payloadType) : meta.payloadType;
130
+ }
131
+ else if (meta.kind === "custom") {
132
+ // A custom column's text: shown by its print, read by its parse.
133
+ type = meta.optional ? OptionType(StringType) : StringType;
134
+ }
135
+ else {
136
+ type = meta.fieldType;
137
+ }
138
+ if (kind === undefined || kind === "readonly") {
139
+ editor = kind === "readonly" ? variant("readonly", null) : kindEditor(meta);
140
+ }
141
+ else {
142
+ const reason = readOnlyReason(meta);
143
+ if (reason !== undefined) {
144
+ throw new Error(`Sheet: \`${where}.${name}\` gives its field an editor, but its column ${reason} — hint it Sheet.field.readonly() or Sheet.field.hidden(), or give it a label or help alone`);
145
+ }
146
+ // The hint's editor, checked against the field's type as Fields checks it, and a select's set against the registers.
147
+ editor = fieldSpecs(StructType({ [name]: meta.fieldType }), { [name]: hint })[0].editor;
148
+ checkReference(editor, `${where}.${name}`, registers);
149
+ }
150
+ return East.value({
151
+ spec: {
152
+ path: [name],
153
+ // The hint's label, else the column's header, else the field's name spelled out.
154
+ label: hint?.label ?? meta.config.header ?? spellOut(name),
155
+ help: hint?.help !== undefined ? some(hint.help) : meta.config.sub !== undefined ? some(meta.config.sub) : none,
156
+ group: none,
157
+ type: toEastTypeValue(type),
158
+ optional: type.type === "Variant" && Object.keys(type.cases).length === 2 && "some" in type.cases && "none" in type.cases,
159
+ editor,
160
+ },
161
+ column: some(meta.key),
162
+ }, SheetFieldType);
163
+ }
164
+ /**
165
+ * One inspector form: the struct's fields, each through its column or by its
166
+ * type, in the form's order.
167
+ *
168
+ * @param struct - The struct the form edits
169
+ * @param metas - The columns its fields are read through, by field
170
+ * @param hints - The author's hints, by field
171
+ * @param leave - The fields the form leaves out: an identity field, a group's lines field
172
+ * @param where - The prop the hints came from, for a refusal (`fields`, `groupFields`)
173
+ * @param registers - The sheet's registers, by name: what a `reference` hint may name
174
+ * @returns The form's fields
175
+ * @throws Error naming the field: a hint for a field the struct does not have, one that does not fit it, or a reference to a register the sheet does not declare
176
+ */
177
+ function formFields(struct, metas, hints, leave, where, registers) {
178
+ const fields = struct.fields;
179
+ // A link column's other half is written through that column, never on its own.
180
+ const halves = new Set([...metas.values()].flatMap((m) => (m.otherField !== undefined ? [m.otherField] : [])));
181
+ for (const name of Object.keys(hints)) {
182
+ if (!(name in fields)) {
183
+ throw new Error(`Sheet: \`${where}\` names "${name}", which is not a field of ${where === "groupFields" ? "the group type" : "the row type"} (${Object.keys(fields).join(", ")})`);
184
+ }
185
+ if (leave.has(name) || halves.has(name)) {
186
+ throw new Error(`Sheet: \`${where}\` names "${name}", which the inspector does not show as a field of its own — ${halves.has(name) ? "it is a link column's other half, shown with that column" : "it is the row's identity, or the group's rows"}`);
187
+ }
188
+ }
189
+ const order = [...Object.keys(hints), ...Object.keys(fields).filter((name) => !(name in hints))];
190
+ const out = [];
191
+ for (const name of order) {
192
+ if (leave.has(name) || halves.has(name))
193
+ continue;
194
+ const hint = hints[name];
195
+ if (isHint(hint) && hint[FIELD_HINT] === "hidden")
196
+ continue;
197
+ const meta = metas.get(name);
198
+ if (meta !== undefined) {
199
+ if (hint !== undefined && !isHint(hint)) {
200
+ throw new Error(`Sheet: \`${where}.${name}\` is shown through its column — its hint is one of Sheet.field's, never a hint per nested field`);
201
+ }
202
+ out.push(columnField(name, meta, hint, where, registers));
203
+ continue;
204
+ }
205
+ // No column: the field by its type, as Fields resolves it — a nested struct's fields under its name.
206
+ const others = Object.keys(fields).filter((f) => f !== name);
207
+ for (const spec of fieldSpecs(struct, (hint === undefined ? {} : { [name]: hint }), others)) {
208
+ checkReference(spec.editor, `${where}.${spec.path.join(".")}`, registers);
209
+ out.push(East.value({ spec, column: none }, SheetFieldType));
210
+ }
211
+ }
212
+ return out;
213
+ }
214
+ /**
215
+ * The fields a whole-row write sets through the columns — the fields `encode`
216
+ * writes: an editable column's own and a link's other half — and the fields
217
+ * it leaves, under the read-only columns.
218
+ */
219
+ function columnFields(metas) {
220
+ const writes = (m) => m.editable && m.derived === undefined;
221
+ const columns = new Set(metas.filter(writes).flatMap((m) => (m.otherField !== undefined ? [m.field, m.otherField] : [m.field])));
222
+ const readonly = new Set(metas.filter((m) => !writes(m) && !columns.has(m.field)).map((m) => m.field));
223
+ return { columns: [...columns], readonly: [...readonly] };
224
+ }
225
+ /** A form's `encode`: a patch of the struct, as bytes, through the cells it sets. */
226
+ function encodeOf(patchType, cells) {
227
+ return East.function([BlobType], SheetCellsType, ($, bytes) => {
228
+ const encode = $.const(cells);
229
+ const patch = $.const(bytes.decodeBeast(patchType, "v2"));
230
+ return encode(patch);
231
+ });
232
+ }
233
+ /**
234
+ * Builds the inspector's forms (SB10): a row's (a grouped sheet's line's) and,
235
+ * on a grouped sheet, a group's.
236
+ *
237
+ * @param bridge - The sheet's bridge, as its root compiled it
238
+ * @param metas - The declared columns, described against the row (or line) type
239
+ * @param hints - `fields`: the author's hints for the row's fields
240
+ * @param groupHints - `groupFields`: the author's hints for the group's own fields
241
+ * @param idField - The rows' identity field, which the form leaves to the header
242
+ * @param registers - The sheet's registers' names, the driver's among them: what a `reference` hint may name
243
+ * @returns The forms on the wire
244
+ * @throws Error naming the prop: `groupFields` on a flat sheet, and each refusal of a hint
245
+ * @internal
246
+ */
247
+ export function buildForms(bridge, metas, hints, groupHints, idField, registers) {
248
+ const named = new Set(registers);
249
+ const groupHalf = bridge.group;
250
+ if (groupHalf === undefined && groupHints !== undefined) {
251
+ throw new Error("Sheet: `groupFields` hints a group's fields, and this sheet declares no group — pass `group={Sheet.group(…)}`, or hint the rows with `fields`");
252
+ }
253
+ // A row's identity is its header's, never a field to edit: a flat row's, and a loose row's line beside the groups (#846).
254
+ const lineLeave = new Set(idField !== undefined && idField in bridge.lineType.fields ? [idField] : []);
255
+ const row = East.value({
256
+ type: toEastTypeValue(bridge.lineType),
257
+ fields: formFields(bridge.lineType, new Map(metas.map((m) => [m.field, m])), hints ?? {}, lineLeave, "fields", named),
258
+ ...columnFields(metas),
259
+ encode: encodeOf(bridge.patchType, bridge.encodePatch),
260
+ }, SheetFormType);
261
+ if (groupHalf === undefined)
262
+ return East.value({ row, group: none }, SheetFormsType);
263
+ const groupType = groupHalf.groupType;
264
+ const groupLeave = new Set([groupHalf.linesField, ...(idField !== undefined && idField in groupType.fields ? [idField] : [])]);
265
+ const group = East.value({
266
+ type: toEastTypeValue(groupType),
267
+ fields: formFields(groupType, new Map(groupHalf.cellMetas.map((m) => [m.field, m])), groupHints ?? {}, groupLeave, "groupFields", named),
268
+ ...columnFields(groupHalf.cellMetas),
269
+ encode: encodeOf(SheetPatchTypeFor(groupType), buildPatchCells(groupType, groupHalf.cellMetas, {})),
270
+ }, SheetFormType);
271
+ return East.value({ row, group: some(group) }, SheetFormsType);
272
+ }
273
+ /**
274
+ * `Sheet.field` — the inspector's hints, `Fields`' own (#1147): a label, a
275
+ * help line, an editor for a field the inspector shows by its type, a field
276
+ * read only or hidden. A column's field takes a label, a help line, read only
277
+ * or hidden, and an editor that fits its type when its column is written.
278
+ */
279
+ export const SheetField = Fields;
280
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/sheet/fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACH,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,OAAO,GAIV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAA0C,MAAM,2BAA2B,CAAC;AAC5I,OAAO,EAAE,cAAc,EAAE,eAAe,EAA0C,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC;CACjC,CAAC,CAAC;AAKH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IACjC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC;IAC/B,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACnD,CAAC,CAAC;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACrC,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC;CACnC,CAAC,CAAC;AAYH,qEAAqE;AACrE,SAAS,MAAM,CAAC,KAAc;IAC1B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,SAAS,cAAc,CAAC,IAAqB;IACzC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,yCAAyC,CAAC;IACjF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,6CAA6C,CAAC;IAClF,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,IAAI,CAAC,IAAI,gDAAgD,CAAC;IAC1H,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,kDAAkD,CAAC;IACtF,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,kCAAkC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,uHAAuH;AACvH,SAAS,cAAc,CAAC,MAAwB,EAAE,KAAa,EAAE,SAA8B;IAC3F,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO;IAC1E,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,iDAAiD,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,sDAAsD,CAAC,CAAC;AAClO,CAAC;AAED,0DAA0D;AAC1D,SAAS,UAAU,CAAC,IAAqB;IACrC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnF,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,QAAS,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,IAAqB,EAAE,IAAyB,EAAE,KAAa,EAAE,SAA8B;IAC9H,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,MAAwB,CAAC;IAC7B,IAAI,IAAc,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7B,yDAAyD;QACzD,IAAI,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC3F,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,iEAAiE;QACjE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,gDAAgD,MAAM,6FAA6F,CAAC,CAAC;QAClM,CAAC;QACD,qHAAqH;QACrH,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAW,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;QAClG,cAAc,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACd,IAAI,EAAE;YACF,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,iFAAiF;YACjF,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC;YAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/G,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAG,IAAyB,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAE,IAA0B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,IAAK,IAA0B,CAAC,KAAK,IAAI,MAAM,IAAK,IAA0B,CAAC,KAAK;YACpN,MAAM;SACT;QACD,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACa,EAAE,cAAc,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,UAAU,CACf,MAAkB,EAClB,KAA2C,EAC3C,KAAwC,EACxC,KAA0B,EAC1B,KAAa,EACb,SAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAkC,CAAC;IACzD,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,aAAa,IAAI,8BAA8B,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvL,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,aAAa,IAAI,gEAAgE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAAC;QACzP,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,GAAG,GAA+B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,kGAAkG,CAAC,CAAC;YACjJ,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAC1D,SAAS;QACb,CAAC;QACD,qGAAqG;QACrG,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAyC,EAAE,MAAM,CAAC,EAAE,CAAC;YAClI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAiC;IACnD,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjI,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvG,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,qFAAqF;AACrF,SAAS,QAAQ,CAAC,SAAqB,EAAE,KAAiC;IACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACtB,MAAmB,EACnB,KAAiC,EACjC,KAAoD,EACpD,UAAyD,EACzD,OAA2B,EAC3B,SAA4B;IAE5B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/B,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+IAA+I,CAAC,CAAC;IACrK,CAAC;IACD,0HAA0H;IAC1H,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;QACrH,GAAG,YAAY,CAAC,KAAK,CAAC;QACtB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;KACzD,EAAE,aAAa,CAAC,CAAC;IAClB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/H,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;QAChC,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC;QACxI,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC;QACpC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAA0B,EAAE,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;KAC/H,EAAE,aAAa,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC"}
@@ -0,0 +1,165 @@
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
+ * `Sheet.group` and `Sheet.group.cell.*` — grouped rows (#740): the group is
7
+ * the row, its lines live in one `Array<L>` field of its own type, and the
8
+ * band a group draws above its lines shows the group's own fields under the
9
+ * line columns.
10
+ *
11
+ * `Sheet.group(P, "lines", { title, sub?, cells?, folded?, noun? })` names
12
+ * the lines field and the band; each `cells` entry is a group field declared
13
+ * over the group's row with `Sheet.group.cell.<kind>(P, "field", cfg)` — the
14
+ * same builders as `Sheet.column.<kind>` minus the header, keyed in `cells`
15
+ * by the LINE column it sits under. A band cell edits like any cell: the
16
+ * edit joins the sheet's batch and reaches the host through `onUpdate` or
17
+ * `onApply`. `editable: false` and a `value:` projection are read-only.
18
+ *
19
+ * The builders only CAPTURE; the root describes each cell against the group's
20
+ * row type and reifies the accessors (`root.ts`, `bridge.ts`).
21
+ *
22
+ * @packageDocumentation
23
+ */
24
+ import type { EastType, ExprType, SubtypeExprOrValue, BooleanType, DateTimeType, FloatType, IntegerType, OptionType, StringType, StructType } from "@elaraai/east";
25
+ import type { TickFormatType } from "@elaraai/east-ui/internal";
26
+ import type { SheetColumnKindLiteral, SheetLinesField, SheetLineOf } from "./types.js";
27
+ import type { SheetAnyColumnConfig, SheetFieldKey } from "./columns.js";
28
+ /**
29
+ * A built band cell — what a `Sheet.group.cell.*` builder returns and the
30
+ * `cells` map holds.
31
+ *
32
+ * @typeParam P - The group's row type
33
+ */
34
+ export interface SheetGroupCell<P extends StructType> {
35
+ /** The cell's kind. */
36
+ readonly kind: SheetColumnKindLiteral;
37
+ /** The group field the cell reads and writes. */
38
+ readonly field: SheetFieldKey<P>;
39
+ /** The author's config, as given. @internal */
40
+ readonly config: SheetAnyColumnConfig;
41
+ /** The register the cell resolves against. @internal */
42
+ readonly register?: string;
43
+ /** Phantom — the row type. @internal */
44
+ readonly __row?: (r: P) => void;
45
+ }
46
+ /** The keys of a group row whose field is `A` or its `Option`. */
47
+ export type SheetFieldOf<P extends StructType, A extends EastType> = {
48
+ [K in SheetFieldKey<P>]: P["fields"][K] extends A | OptionType<A> ? K : never;
49
+ }[SheetFieldKey<P>];
50
+ /**
51
+ * What every band cell takes.
52
+ *
53
+ * @property editable - `false` makes the cell read-only
54
+ */
55
+ export interface SheetGroupCellBaseConfig {
56
+ /** `false` makes the cell read-only. */
57
+ editable?: boolean;
58
+ }
59
+ /**
60
+ * A derived read — the cell displays the projection over the group row and
61
+ * is read-only; it may reach into the group's lines.
62
+ *
63
+ * @typeParam P - The group's row type
64
+ * @typeParam T - The kind's payload type
65
+ */
66
+ export interface SheetGroupValueConfig<P extends StructType, T extends EastType> {
67
+ /** The projection over the group row. */
68
+ value: (row: ExprType<P>) => SubtypeExprOrValue<T | OptionType<T>>;
69
+ }
70
+ /** Config for `Sheet.group.cell.date`. */
71
+ export interface SheetGroupDateConfig extends SheetGroupCellBaseConfig {
72
+ /** A display pattern (East date tokens). */
73
+ format?: SubtypeExprOrValue<StringType>;
74
+ }
75
+ /**
76
+ * Config for `Sheet.group.cell.quantity`. A band has no driver member, so a
77
+ * band quantity carries no unit; the line column's unit is the driver's.
78
+ */
79
+ export interface SheetGroupQuantityConfig extends SheetGroupCellBaseConfig {
80
+ /** A display format. */
81
+ format?: SubtypeExprOrValue<TickFormatType>;
82
+ }
83
+ /** Config for `Sheet.group.cell.stamped`. */
84
+ export interface SheetGroupStampedConfig {
85
+ /** The owning system. */
86
+ owner?: SubtypeExprOrValue<StringType>;
87
+ }
88
+ /** A text band cell — `Sheet.group.cell.text(P, "field", cfg)` on a `String` / `Option<String>` field, or a `value:` projection on any field. */
89
+ export declare function text<P extends StructType>(groupType: P, field: SheetFieldKey<P>, config: SheetGroupCellBaseConfig & SheetGroupValueConfig<P, StringType>): SheetGroupCell<P>;
90
+ export declare function text<P extends StructType>(groupType: P, field: SheetFieldOf<P, StringType>, config?: SheetGroupCellBaseConfig): SheetGroupCell<P>;
91
+ /** A date band cell — `Sheet.group.cell.date(P, "field", cfg)` on a `DateTime` / `Option<DateTime>` field. */
92
+ export declare function date<P extends StructType>(groupType: P, field: SheetFieldKey<P>, config: SheetGroupDateConfig & SheetGroupValueConfig<P, DateTimeType>): SheetGroupCell<P>;
93
+ export declare function date<P extends StructType>(groupType: P, field: SheetFieldOf<P, DateTimeType>, config?: SheetGroupDateConfig): SheetGroupCell<P>;
94
+ /** A quantity band cell — `Sheet.group.cell.quantity(P, "field", cfg)` on a `Float` / `Option<Float>` field, or a `value:` projection (a total over the lines, say). */
95
+ export declare function quantity<P extends StructType>(groupType: P, field: SheetFieldKey<P>, config: SheetGroupQuantityConfig & SheetGroupValueConfig<P, FloatType>): SheetGroupCell<P>;
96
+ export declare function quantity<P extends StructType>(groupType: P, field: SheetFieldOf<P, FloatType>, config?: SheetGroupQuantityConfig): SheetGroupCell<P>;
97
+ /** An integer band cell — `Sheet.group.cell.integer(P, "field", cfg)` on an `Integer` / `Option<Integer>` field. */
98
+ export declare function integer<P extends StructType>(groupType: P, field: SheetFieldKey<P>, config: SheetGroupCellBaseConfig & SheetGroupValueConfig<P, IntegerType>): SheetGroupCell<P>;
99
+ export declare function integer<P extends StructType>(groupType: P, field: SheetFieldOf<P, IntegerType>, config?: SheetGroupCellBaseConfig): SheetGroupCell<P>;
100
+ /** A reference band cell — `Sheet.group.cell.reference(P, register, "field", cfg)`: a lookup over a flat member list, on a `String` / `Option<String>` field. */
101
+ export declare function reference<P extends StructType>(_groupType: P, register: string, field: SheetFieldOf<P, StringType>, config?: SheetGroupCellBaseConfig): SheetGroupCell<P>;
102
+ /** An enum band cell — `Sheet.group.cell.enum(P, register, "field", cfg)`: an upper-cased register word with its valence dot, on a `String` / `Option<String>` field. */
103
+ export declare function enumCell<P extends StructType>(_groupType: P, register: string, field: SheetFieldOf<P, StringType>, config?: SheetGroupCellBaseConfig): SheetGroupCell<P>;
104
+ /** A stamped band cell — `Sheet.group.cell.stamped(P, "field", cfg)`: a read-only code an upstream system owns, on a `String` / `Option<String>` field. */
105
+ export declare function stamped<P extends StructType>(_groupType: P, field: SheetFieldOf<P, StringType>, config?: SheetGroupStampedConfig): SheetGroupCell<P>;
106
+ /**
107
+ * What `Sheet.group(P, "lines", …)` takes.
108
+ *
109
+ * @typeParam P - The group's row type
110
+ * @typeParam L - The line type the lines field holds
111
+ * @property title - The band's title — a `String` field of the group row; ⏎ / F2 on the band renames it
112
+ * @property sub - The band's eyebrow — an accessor over the group row, display only
113
+ * @property cells - Band cells keyed by the LINE column they sit under
114
+ * @property folded - Whether a group opens folded — an accessor over the group row
115
+ * @property noun - The word the renderer prints for a group — fold-all, the footer count, hints, the new-group button (#844); omitted, the renderer's own word in the viewer's language (`"group"` / `"groups"` in English, #861)
116
+ */
117
+ export interface SheetGroupConfig<P extends StructType, L extends StructType = StructType> {
118
+ /** The band's title — a `String` field of the group row. */
119
+ title: SheetFieldOf<P, StringType>;
120
+ /** The band's eyebrow — display only. */
121
+ sub?: (row: ExprType<P>) => SubtypeExprOrValue<StringType>;
122
+ /** Band cells keyed by the line column they sit under. */
123
+ cells?: {
124
+ [K in SheetFieldKey<L>]?: SheetGroupCell<P>;
125
+ };
126
+ /** Whether a group opens folded. */
127
+ folded?: (row: ExprType<P>) => SubtypeExprOrValue<BooleanType>;
128
+ /** The word the renderer prints for a group. */
129
+ noun?: {
130
+ /** One group (`"order"`). */
131
+ singular: SubtypeExprOrValue<StringType>;
132
+ /** Several (`"orders"`). */
133
+ plural: SubtypeExprOrValue<StringType>;
134
+ };
135
+ }
136
+ /**
137
+ * A built group declaration — what `Sheet.group(…)` returns and the `group`
138
+ * prop takes.
139
+ *
140
+ * @typeParam P - The group's row type
141
+ * @typeParam F - The lines field
142
+ */
143
+ export interface SheetGroupValue<P extends StructType, F extends string> {
144
+ /** The group's row type. */
145
+ readonly rowType: P;
146
+ /** The field holding the lines. */
147
+ readonly lines: F;
148
+ /** The author's config, as given. @internal */
149
+ readonly config: SheetGroupConfig<P, StructType>;
150
+ }
151
+ /**
152
+ * Declares grouped rows — `Sheet.group(P, "lines", { title, sub?, cells?, folded?, noun? })`
153
+ * (#740): the group is the row, `lines` names the `Array<Line>` field
154
+ * holding its lines, and the band draws the title, the eyebrow and the
155
+ * `cells` under their line columns.
156
+ *
157
+ * @typeParam P - The group's row type
158
+ * @typeParam F - The lines field — an `Array<Line>` field of `P`
159
+ * @param rowType - The group's row type value
160
+ * @param lines - The lines field
161
+ * @param config - The band ({@link SheetGroupConfig})
162
+ * @returns The declaration the `group` prop takes
163
+ */
164
+ export declare function createGroup<P extends StructType, F extends SheetLinesField<P>>(rowType: P, lines: F, config: SheetGroupConfig<P, SheetLineOf<P, F>>): SheetGroupValue<P, F>;
165
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/sheet/group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
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
+ // Builders
7
+ // ============================================================================
8
+ /** Build one band cell value. */
9
+ function cell(kind, field, config, extra = {}) {
10
+ return { kind, field, config: config, ...extra };
11
+ }
12
+ export function text(_groupType, field, config = {}) {
13
+ return cell("text", field, config);
14
+ }
15
+ export function date(_groupType, field, config = {}) {
16
+ return cell("date", field, config);
17
+ }
18
+ export function quantity(_groupType, field, config = {}) {
19
+ return cell("quantity", field, config);
20
+ }
21
+ export function integer(_groupType, field, config = {}) {
22
+ return cell("integer", field, config);
23
+ }
24
+ /** A reference band cell — `Sheet.group.cell.reference(P, register, "field", cfg)`: a lookup over a flat member list, on a `String` / `Option<String>` field. */
25
+ export function reference(_groupType, register, field, config = {}) {
26
+ return cell("reference", field, config, { register });
27
+ }
28
+ /** An enum band cell — `Sheet.group.cell.enum(P, register, "field", cfg)`: an upper-cased register word with its valence dot, on a `String` / `Option<String>` field. */
29
+ export function enumCell(_groupType, register, field, config = {}) {
30
+ return cell("enum", field, config, { register });
31
+ }
32
+ /** A stamped band cell — `Sheet.group.cell.stamped(P, "field", cfg)`: a read-only code an upstream system owns, on a `String` / `Option<String>` field. */
33
+ export function stamped(_groupType, field, config = {}) {
34
+ return cell("stamped", field, config);
35
+ }
36
+ /**
37
+ * Declares grouped rows — `Sheet.group(P, "lines", { title, sub?, cells?, folded?, noun? })`
38
+ * (#740): the group is the row, `lines` names the `Array<Line>` field
39
+ * holding its lines, and the band draws the title, the eyebrow and the
40
+ * `cells` under their line columns.
41
+ *
42
+ * @typeParam P - The group's row type
43
+ * @typeParam F - The lines field — an `Array<Line>` field of `P`
44
+ * @param rowType - The group's row type value
45
+ * @param lines - The lines field
46
+ * @param config - The band ({@link SheetGroupConfig})
47
+ * @returns The declaration the `group` prop takes
48
+ */
49
+ export function createGroup(rowType, lines, config) {
50
+ return { rowType, lines, config: config };
51
+ }
52
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/sheet/group.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkHH,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,iCAAiC;AACjC,SAAS,IAAI,CACT,IAA4B,EAC5B,KAAuB,EACvB,MAAc,EACd,QAA+B,EAAE;IAEjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAA8B,EAAE,GAAG,KAAK,EAAE,CAAC;AAC7E,CAAC;AAKD,MAAM,UAAU,IAAI,CAAuB,UAAa,EAAE,KAAa,EAAE,SAAiB,EAAE;IACxF,OAAO,IAAI,CAAC,MAAM,EAAE,KAAyB,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAKD,MAAM,UAAU,IAAI,CAAuB,UAAa,EAAE,KAAa,EAAE,SAAiB,EAAE;IACxF,OAAO,IAAI,CAAC,MAAM,EAAE,KAAyB,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAuB,UAAa,EAAE,KAAa,EAAE,SAAiB,EAAE;IAC5F,OAAO,IAAI,CAAC,UAAU,EAAE,KAAyB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAKD,MAAM,UAAU,OAAO,CAAuB,UAAa,EAAE,KAAa,EAAE,SAAiB,EAAE;IAC3F,OAAO,IAAI,CAAC,SAAS,EAAE,KAAyB,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,iKAAiK;AACjK,MAAM,UAAU,SAAS,CAAuB,UAAa,EAAE,QAAgB,EAAE,KAAkC,EAAE,SAAmC,EAAE;IACtJ,OAAO,IAAI,CAAC,WAAW,EAAE,KAAyB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,yKAAyK;AACzK,MAAM,UAAU,QAAQ,CAAuB,UAAa,EAAE,QAAgB,EAAE,KAAkC,EAAE,SAAmC,EAAE;IACrJ,OAAO,IAAI,CAAC,MAAM,EAAE,KAAyB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,2JAA2J;AAC3J,MAAM,UAAU,OAAO,CAAuB,UAAa,EAAE,KAAkC,EAAE,SAAkC,EAAE;IACjI,OAAO,IAAI,CAAC,SAAS,EAAE,KAAyB,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAmDD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAqD,OAAU,EAAE,KAAQ,EAAE,MAA8C;IAChJ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAyC,EAAE,CAAC;AACjF,CAAC"}