@elaraai/e3-ui 1.0.103 → 1.0.104

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 (287) hide show
  1. package/dist/src/allocation/functions.d.ts +2 -1
  2. package/dist/src/allocation/functions.d.ts.map +1 -1
  3. package/dist/src/allocation/functions.js +3 -2
  4. package/dist/src/allocation/functions.js.map +1 -1
  5. package/dist/src/allocation/index.d.ts +120 -1
  6. package/dist/src/allocation/index.d.ts.map +1 -1
  7. package/dist/src/allocation/index.js +24 -4
  8. package/dist/src/allocation/index.js.map +1 -1
  9. package/dist/src/bind/data-indexed.d.ts +25 -4
  10. package/dist/src/bind/data-indexed.d.ts.map +1 -1
  11. package/dist/src/bind/data-indexed.js +58 -7
  12. package/dist/src/bind/data-indexed.js.map +1 -1
  13. package/dist/src/bind/data.d.ts +12 -14
  14. package/dist/src/bind/data.d.ts.map +1 -1
  15. package/dist/src/bind/data.js +11 -11
  16. package/dist/src/bind/data.js.map +1 -1
  17. package/dist/src/bind/func.d.ts +7 -2
  18. package/dist/src/bind/func.d.ts.map +1 -1
  19. package/dist/src/bind/func.js +10 -3
  20. package/dist/src/bind/func.js.map +1 -1
  21. package/dist/src/calendar/index.d.ts +148 -1
  22. package/dist/src/calendar/index.d.ts.map +1 -1
  23. package/dist/src/calendar/index.js +55 -5
  24. package/dist/src/calendar/index.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +32 -14
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -1
  27. package/dist/src/flowchart/canvas.js +21 -6
  28. package/dist/src/flowchart/canvas.js.map +1 -1
  29. package/dist/src/flowchart/details.d.ts +469 -0
  30. package/dist/src/flowchart/details.d.ts.map +1 -0
  31. package/dist/src/flowchart/details.js +1035 -0
  32. package/dist/src/flowchart/details.js.map +1 -0
  33. package/dist/src/flowchart/flowchart.d.ts +16 -72
  34. package/dist/src/flowchart/flowchart.d.ts.map +1 -1
  35. package/dist/src/flowchart/flowchart.js +10 -1
  36. package/dist/src/flowchart/flowchart.js.map +1 -1
  37. package/dist/src/flowchart/index.d.ts +282 -251
  38. package/dist/src/flowchart/index.d.ts.map +1 -1
  39. package/dist/src/flowchart/index.js +234 -220
  40. package/dist/src/flowchart/index.js.map +1 -1
  41. package/dist/src/flowchart/kinds.d.ts +438 -0
  42. package/dist/src/flowchart/kinds.d.ts.map +1 -0
  43. package/dist/src/flowchart/kinds.js +799 -0
  44. package/dist/src/flowchart/kinds.js.map +1 -0
  45. package/dist/src/flowchart/library.d.ts +154 -739
  46. package/dist/src/flowchart/library.d.ts.map +1 -1
  47. package/dist/src/flowchart/library.js +191 -673
  48. package/dist/src/flowchart/library.js.map +1 -1
  49. package/dist/src/flowchart/payload.d.ts +3652 -7843
  50. package/dist/src/flowchart/payload.d.ts.map +1 -1
  51. package/dist/src/flowchart/payload.js +331 -469
  52. package/dist/src/flowchart/payload.js.map +1 -1
  53. package/dist/src/flowchart/templates.d.ts +657 -0
  54. package/dist/src/flowchart/templates.d.ts.map +1 -0
  55. package/dist/src/flowchart/templates.js +658 -0
  56. package/dist/src/flowchart/templates.js.map +1 -0
  57. package/dist/src/flowchart/types.d.ts +2258 -214
  58. package/dist/src/flowchart/types.d.ts.map +1 -1
  59. package/dist/src/flowchart/types.js +374 -124
  60. package/dist/src/flowchart/types.js.map +1 -1
  61. package/dist/src/index.d.ts +13 -15
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js +24 -29
  64. package/dist/src/index.js.map +1 -1
  65. package/dist/src/internal.d.ts +5 -7
  66. package/dist/src/internal.d.ts.map +1 -1
  67. package/dist/src/internal.js +12 -19
  68. package/dist/src/internal.js.map +1 -1
  69. package/dist/src/ontology/index.d.ts +44 -15
  70. package/dist/src/ontology/index.d.ts.map +1 -1
  71. package/dist/src/ontology/index.js +19 -11
  72. package/dist/src/ontology/index.js.map +1 -1
  73. package/dist/src/plan/event-rows.d.ts +2 -1
  74. package/dist/src/plan/event-rows.d.ts.map +1 -1
  75. package/dist/src/plan/event-rows.js +6 -4
  76. package/dist/src/plan/event-rows.js.map +1 -1
  77. package/dist/src/plan/ir.d.ts +1 -0
  78. package/dist/src/plan/ir.d.ts.map +1 -1
  79. package/dist/src/plan/plan.d.ts +145 -1
  80. package/dist/src/plan/plan.d.ts.map +1 -1
  81. package/dist/src/plan/plan.js +67 -3
  82. package/dist/src/plan/plan.js.map +1 -1
  83. package/dist/src/plan/types.d.ts +1 -0
  84. package/dist/src/plan/types.d.ts.map +1 -1
  85. package/dist/src/query/builder.d.ts +362 -315
  86. package/dist/src/query/builder.d.ts.map +1 -1
  87. package/dist/src/query/builder.js +12 -1
  88. package/dist/src/query/builder.js.map +1 -1
  89. package/dist/src/query/index.d.ts +5 -1
  90. package/dist/src/query/index.d.ts.map +1 -1
  91. package/dist/src/query/index.js +3 -1
  92. package/dist/src/query/index.js.map +1 -1
  93. package/dist/src/roster/fit.d.ts +5 -2
  94. package/dist/src/roster/fit.d.ts.map +1 -1
  95. package/dist/src/roster/fit.js +5 -3
  96. package/dist/src/roster/fit.js.map +1 -1
  97. package/dist/src/roster/index.d.ts +103 -2
  98. package/dist/src/roster/index.d.ts.map +1 -1
  99. package/dist/src/roster/index.js +45 -6
  100. package/dist/src/roster/index.js.map +1 -1
  101. package/dist/src/runtime/index.d.ts +1 -3
  102. package/dist/src/runtime/index.d.ts.map +1 -1
  103. package/dist/src/runtime/index.js +1 -3
  104. package/dist/src/runtime/index.js.map +1 -1
  105. package/dist/src/schedule/record-window.d.ts +1 -0
  106. package/dist/src/schedule/record-window.d.ts.map +1 -1
  107. package/dist/src/schematic/index.d.ts +1 -1
  108. package/dist/src/schematic/index.d.ts.map +1 -1
  109. package/dist/src/schematic/index.js +1 -1
  110. package/dist/src/schematic/index.js.map +1 -1
  111. package/dist/src/schematic/kinds.d.ts +4 -24
  112. package/dist/src/schematic/kinds.d.ts.map +1 -1
  113. package/dist/src/schematic/kinds.js +8 -212
  114. package/dist/src/schematic/kinds.js.map +1 -1
  115. package/dist/src/schematic/payload.d.ts +140 -1
  116. package/dist/src/schematic/payload.d.ts.map +1 -1
  117. package/dist/src/schematic/payload.js +38 -1
  118. package/dist/src/schematic/payload.js.map +1 -1
  119. package/dist/src/schematic/types.d.ts.map +1 -1
  120. package/dist/src/schematic/types.js +4 -36
  121. package/dist/src/schematic/types.js.map +1 -1
  122. package/dist/src/schematic/window.d.ts +9 -42
  123. package/dist/src/schematic/window.d.ts.map +1 -1
  124. package/dist/src/schematic/window.js +10 -115
  125. package/dist/src/schematic/window.js.map +1 -1
  126. package/dist/src/sheet/actions.d.ts +388 -0
  127. package/dist/src/sheet/actions.d.ts.map +1 -0
  128. package/dist/src/sheet/actions.js +594 -0
  129. package/dist/src/sheet/actions.js.map +1 -0
  130. package/dist/src/sheet/bridge.d.ts +12 -1
  131. package/dist/src/sheet/bridge.d.ts.map +1 -1
  132. package/dist/src/sheet/bridge.js +30 -6
  133. package/dist/src/sheet/bridge.js.map +1 -1
  134. package/dist/src/sheet/columns.d.ts +5 -2
  135. package/dist/src/sheet/columns.d.ts.map +1 -1
  136. package/dist/src/sheet/columns.js.map +1 -1
  137. package/dist/src/sheet/draft-bridge.d.ts +9 -4
  138. package/dist/src/sheet/draft-bridge.d.ts.map +1 -1
  139. package/dist/src/sheet/draft-bridge.js +22 -7
  140. package/dist/src/sheet/draft-bridge.js.map +1 -1
  141. package/dist/src/sheet/fields.d.ts +13 -0
  142. package/dist/src/sheet/fields.d.ts.map +1 -1
  143. package/dist/src/sheet/fields.js +3 -0
  144. package/dist/src/sheet/fields.js.map +1 -1
  145. package/dist/src/sheet/index.d.ts +32 -2
  146. package/dist/src/sheet/index.d.ts.map +1 -1
  147. package/dist/src/sheet/index.js +18 -3
  148. package/dist/src/sheet/index.js.map +1 -1
  149. package/dist/src/sheet/library.d.ts +8 -0
  150. package/dist/src/sheet/library.d.ts.map +1 -1
  151. package/dist/src/sheet/root.d.ts +23 -1
  152. package/dist/src/sheet/root.d.ts.map +1 -1
  153. package/dist/src/sheet/root.js +40 -5
  154. package/dist/src/sheet/root.js.map +1 -1
  155. package/dist/src/sheet/sheet.d.ts +7843 -4132
  156. package/dist/src/sheet/sheet.d.ts.map +1 -1
  157. package/dist/src/sheet/sheet.js +41 -2
  158. package/dist/src/sheet/sheet.js.map +1 -1
  159. package/dist/src/sheet/templates.d.ts +4 -0
  160. package/dist/src/sheet/templates.d.ts.map +1 -1
  161. package/dist/src/sheet/types.d.ts +12449 -5268
  162. package/dist/src/sheet/types.d.ts.map +1 -1
  163. package/dist/src/sheet/types.js +114 -2
  164. package/dist/src/sheet/types.js.map +1 -1
  165. package/dist/src/utils/derive.d.ts +1 -1
  166. package/dist/src/utils/derive.js +1 -1
  167. package/dist/src/utils/record-kind.d.ts +625 -0
  168. package/dist/src/utils/record-kind.d.ts.map +1 -0
  169. package/dist/src/utils/record-kind.js +450 -0
  170. package/dist/src/utils/record-kind.js.map +1 -0
  171. package/dist/src/utils/views.d.ts +55 -0
  172. package/dist/src/utils/views.d.ts.map +1 -0
  173. package/dist/src/utils/views.js +72 -0
  174. package/dist/src/utils/views.js.map +1 -0
  175. package/dist/src/utils/vocabulary.d.ts +48 -0
  176. package/dist/src/utils/vocabulary.d.ts.map +1 -0
  177. package/dist/src/utils/vocabulary.js +47 -0
  178. package/dist/src/utils/vocabulary.js.map +1 -0
  179. package/dist/test/allocation/allocation.examples.d.ts +2 -0
  180. package/dist/test/allocation/allocation.examples.d.ts.map +1 -1
  181. package/dist/test/allocation/allocation.examples.js +81 -2
  182. package/dist/test/allocation/allocation.examples.js.map +1 -1
  183. package/dist/test/bind/func/func.examples.d.ts +19 -1
  184. package/dist/test/bind/func/func.examples.d.ts.map +1 -1
  185. package/dist/test/bind/func/func.examples.js +36 -1
  186. package/dist/test/bind/func/func.examples.js.map +1 -1
  187. package/dist/test/calendar/calendar.examples.d.ts +2 -0
  188. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  189. package/dist/test/calendar/calendar.examples.js +80 -2
  190. package/dist/test/calendar/calendar.examples.js.map +1 -1
  191. package/dist/test/decision/queue.examples.d.ts +1 -0
  192. package/dist/test/decision/queue.examples.d.ts.map +1 -1
  193. package/dist/test/decision/queue.examples.js +12 -0
  194. package/dist/test/decision/queue.examples.js.map +1 -1
  195. package/dist/test/examples-package.d.ts.map +1 -1
  196. package/dist/test/examples-package.js +5 -4
  197. package/dist/test/examples-package.js.map +1 -1
  198. package/dist/test/flowchart/flowchart.examples.d.ts +1250 -4605
  199. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  200. package/dist/test/flowchart/flowchart.examples.js +861 -512
  201. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  202. package/dist/test/ontology/ontology.examples.d.ts +2 -3
  203. package/dist/test/ontology/ontology.examples.d.ts.map +1 -1
  204. package/dist/test/ontology/ontology.examples.js +32 -21
  205. package/dist/test/ontology/ontology.examples.js.map +1 -1
  206. package/dist/test/plan/plan-events.examples.d.ts +1 -0
  207. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  208. package/dist/test/plan/plan-events.examples.js +44 -0
  209. package/dist/test/plan/plan-events.examples.js.map +1 -1
  210. package/dist/test/plan/plan-nested.examples.d.ts +2 -2
  211. package/dist/test/plan/plan-nested.examples.js +5 -5
  212. package/dist/test/plan/plan-nested.examples.js.map +1 -1
  213. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  214. package/dist/test/plan/plan-records.examples.js +1 -1
  215. package/dist/test/plan/plan-records.examples.js.map +1 -1
  216. package/dist/test/query/query.examples.d.ts +2 -0
  217. package/dist/test/query/query.examples.d.ts.map +1 -1
  218. package/dist/test/query/query.examples.js +37 -1
  219. package/dist/test/query/query.examples.js.map +1 -1
  220. package/dist/test/roster/roster.examples.d.ts +2 -0
  221. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  222. package/dist/test/roster/roster.examples.js +76 -15
  223. package/dist/test/roster/roster.examples.js.map +1 -1
  224. package/dist/test/schematic/schematic-records.examples.d.ts.map +1 -1
  225. package/dist/test/schematic/schematic-records.examples.js +6 -4
  226. package/dist/test/schematic/schematic-records.examples.js.map +1 -1
  227. package/dist/test/schematic/schematic.examples.d.ts +1 -0
  228. package/dist/test/schematic/schematic.examples.d.ts.map +1 -1
  229. package/dist/test/schematic/schematic.examples.js +144 -0
  230. package/dist/test/schematic/schematic.examples.js.map +1 -1
  231. package/dist/test/sheet/sheet-actions.examples.d.ts +1264 -0
  232. package/dist/test/sheet/sheet-actions.examples.d.ts.map +1 -0
  233. package/dist/test/sheet/sheet-actions.examples.js +394 -0
  234. package/dist/test/sheet/sheet-actions.examples.js.map +1 -0
  235. package/dist/test/sheet/sheet.examples.d.ts +1 -0
  236. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  237. package/dist/test/sheet/sheet.examples.js +77 -0
  238. package/dist/test/sheet/sheet.examples.js.map +1 -1
  239. package/dist/test/studio/studio.examples.d.ts +1 -0
  240. package/dist/test/studio/studio.examples.d.ts.map +1 -1
  241. package/dist/test/studio/studio.examples.js +18 -8
  242. package/dist/test/studio/studio.examples.js.map +1 -1
  243. package/package.json +12 -12
  244. package/dist/src/diff/index.d.ts +0 -407
  245. package/dist/src/diff/index.d.ts.map +0 -1
  246. package/dist/src/diff/index.js +0 -203
  247. package/dist/src/diff/index.js.map +0 -1
  248. package/dist/src/experiment/index.d.ts +0 -1033
  249. package/dist/src/experiment/index.d.ts.map +0 -1
  250. package/dist/src/experiment/index.js +0 -197
  251. package/dist/src/experiment/index.js.map +0 -1
  252. package/dist/src/experiment/types.d.ts +0 -1093
  253. package/dist/src/experiment/types.d.ts.map +0 -1
  254. package/dist/src/experiment/types.js +0 -423
  255. package/dist/src/experiment/types.js.map +0 -1
  256. package/dist/src/flowchart/over.d.ts +0 -227
  257. package/dist/src/flowchart/over.d.ts.map +0 -1
  258. package/dist/src/flowchart/over.js +0 -213
  259. package/dist/src/flowchart/over.js.map +0 -1
  260. package/dist/src/flowchart/patch.d.ts +0 -64
  261. package/dist/src/flowchart/patch.d.ts.map +0 -1
  262. package/dist/src/flowchart/patch.js +0 -67
  263. package/dist/src/flowchart/patch.js.map +0 -1
  264. package/dist/src/flowchart/values.d.ts +0 -271
  265. package/dist/src/flowchart/values.d.ts.map +0 -1
  266. package/dist/src/flowchart/values.js +0 -220
  267. package/dist/src/flowchart/values.js.map +0 -1
  268. package/dist/src/flowchart/window.d.ts +0 -306
  269. package/dist/src/flowchart/window.d.ts.map +0 -1
  270. package/dist/src/flowchart/window.js +0 -63
  271. package/dist/src/flowchart/window.js.map +0 -1
  272. package/dist/src/runtime/diff.d.ts +0 -36
  273. package/dist/src/runtime/diff.d.ts.map +0 -1
  274. package/dist/src/runtime/diff.js +0 -34
  275. package/dist/src/runtime/diff.js.map +0 -1
  276. package/dist/src/runtime/experiment.d.ts +0 -48
  277. package/dist/src/runtime/experiment.d.ts.map +0 -1
  278. package/dist/src/runtime/experiment.js +0 -10
  279. package/dist/src/runtime/experiment.js.map +0 -1
  280. package/dist/test/diff/diff.examples.d.ts +0 -313
  281. package/dist/test/diff/diff.examples.d.ts.map +0 -1
  282. package/dist/test/diff/diff.examples.js +0 -452
  283. package/dist/test/diff/diff.examples.js.map +0 -1
  284. package/dist/test/experiment/experiment.examples.d.ts +0 -1512
  285. package/dist/test/experiment/experiment.examples.d.ts.map +0 -1
  286. package/dist/test/experiment/experiment.examples.js +0 -609
  287. package/dist/test/experiment/experiment.examples.js.map +0 -1
@@ -0,0 +1,594 @@
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.column.action` — a variant's state machine as a column (#1474,
7
+ * `Sheet Actions - DX Proposal.md`).
8
+ *
9
+ * The column sits on a field of type `V` or `Option<V>`, `V` a variant. Each
10
+ * case of `V` is a state and the action that gets a row there: the author
11
+ * gives its words, the cases it may go to next (`next`, and `start` for a
12
+ * row with nothing taken), and what else taking it updates. The case's type
13
+ * decides how it is asked: `NullType` is a button, a variant whose every case
14
+ * is `NullType` a menu of those cases, anything else a form drawn with
15
+ * `Fields` — the inspectors' vocabulary. One optional function, `blocked`,
16
+ * says when a row cannot act for a reason the table cannot hold (a step
17
+ * waiting for the one before it).
18
+ *
19
+ * The builder only captures. {@link describeAction} checks the declaration
20
+ * against the row type at build time; {@link buildActionKind} compiles it into
21
+ * the closed wire kind over the sheet's bridge; {@link buildActionCodec} is the
22
+ * cell a row's case lands in.
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ import { ArrayType, BlobType, DateTimeType, DictType, East, Expr, FunctionType, IntegerType, NullType, OptionType, StringType, StructType, VariantType, isTypeEqual, none, some, toEastTypeValue, variant, } from "@elaraai/east";
27
+ import { StatusValueType } from "@elaraai/east-ui";
28
+ import { FIELD_HINT, fieldSelect, fieldSpecs, resolveTag, spellOut, } from "@elaraai/east-ui/internal";
29
+ import { SheetActionCaseType, SheetActionCellType, SheetActionGateType, SheetActionKindType, SheetActionTakeType, SheetActionUpdatesType, SheetCellType, SheetContextType, sheetLinesOf, sheetRuleCell, SheetPatchTypeFor, } from "./types.js";
30
+ import { SheetDraftTypeFor } from "./transactions.js";
31
+ import { SheetDraftGroupTypeFor } from "./drafts.js";
32
+ // ============================================================================
33
+ // The context `blocked`, `initial` and `updates` see
34
+ // ============================================================================
35
+ /**
36
+ * `Sheet.Types.ActionContext(R)` — what an action column's functions see on
37
+ * a flat sheet: the row as plain values, never a draft — a row whose draft
38
+ * is incomplete never acts (T6) — and its neighbours, each `none` while its
39
+ * own draft is incomplete.
40
+ *
41
+ * @typeParam R - The row type
42
+ * @param rowType - The row type value
43
+ * @returns The context type
44
+ *
45
+ * @property row - The row, as it stands before the action
46
+ * @property index - Its place among the rows
47
+ * @property rows - The resident rows, in order; `none` where a row's draft is incomplete
48
+ * @property group - Always `none` on a flat sheet
49
+ * @property today - UTC midnight
50
+ */
51
+ export function SheetActionContextTypeFor(rowType) {
52
+ return StructType({
53
+ row: rowType,
54
+ index: IntegerType,
55
+ rows: ArrayType(OptionType(rowType)),
56
+ group: OptionType(NullType),
57
+ today: DateTimeType,
58
+ });
59
+ }
60
+ /**
61
+ * `Sheet.Types.ActionContext(P, "lines")` — what an action column's
62
+ * functions see on a grouped sheet: the line as plain values, its group's
63
+ * lines, and the group.
64
+ *
65
+ * @typeParam P - The group type
66
+ * @typeParam F - The lines field
67
+ * @param groupType - The group type value
68
+ * @param lines - The lines field
69
+ * @returns The context type
70
+ *
71
+ * @property row - The line, as it stands before the action
72
+ * @property index - Its place among its group's lines
73
+ * @property rows - Its group's lines, in order; `none` where a line's draft is incomplete
74
+ * @property group - Its group; `none` while the group's own draft is incomplete, and for a loose row
75
+ * @property today - UTC midnight
76
+ */
77
+ export function SheetGroupActionContextTypeFor(groupType, lines) {
78
+ const { lineType } = sheetLinesOf(groupType, lines);
79
+ return StructType({
80
+ row: lineType,
81
+ index: IntegerType,
82
+ rows: ArrayType(OptionType(lineType)),
83
+ group: OptionType(groupType),
84
+ today: DateTimeType,
85
+ });
86
+ }
87
+ export function sheetActionContextType(first, second) {
88
+ return second === undefined ? SheetActionContextTypeFor(first) : SheetGroupActionContextTypeFor(first, second);
89
+ }
90
+ export function actionMenu(options = {}) {
91
+ if (options.of !== undefined)
92
+ return { [FIELD_HINT]: "action-register", of: options.of };
93
+ return { ...(options.labels !== undefined ? { labels: options.labels } : {}), [FIELD_HINT]: "action-menu" };
94
+ }
95
+ /**
96
+ * A case's form — `Sheet.action.form({ fields, initial })`: its value's
97
+ * fields through `Sheet.field.*`, and what it opens with.
98
+ *
99
+ * @typeParam R - The row type
100
+ * @typeParam T - The case's value type
101
+ * @param options - The fields' hints and the opening value
102
+ * @returns The take
103
+ */
104
+ export function actionForm(options = {}) {
105
+ return { ...options, [FIELD_HINT]: "action-form" };
106
+ }
107
+ /**
108
+ * An action column — `Sheet.column.action(R, V, config)`: a variant's state
109
+ * machine, each case a state and the action into it. Sits on a `V` or
110
+ * `Option<V>` field.
111
+ *
112
+ * @typeParam R - The row type (a grouped sheet's line)
113
+ * @typeParam V - The variant
114
+ * @param rowType - The row type value
115
+ * @param variantType - The variant the field holds
116
+ * @param config - The cases, `start`, `blocked` and the column's words ({@link SheetActionConfig})
117
+ * @returns The column
118
+ * @example
119
+ * ```tsx
120
+ * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
121
+ * import { DictType, East, NullType, OptionType, StringType, StructType, VariantType, none, some, variant } from "@elaraai/east";
122
+ * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
123
+ * import { Record, Sheet } from "@elaraai/e3-ui";
124
+ * import e3 from "@elaraai/e3";
125
+ *
126
+ * export const JobState = VariantType({ started: NullType, finished: NullType });
127
+ * export const ActionJob = StructType({ task: StringType, state: OptionType(JobState) });
128
+ * export const sheetActionJobs = e3.record("sheet_action_jobs", DictType(StringType, ActionJob), {
129
+ * initial: new Map([
130
+ * ["J-0001", { task: "Panel cutting", state: some(variant("finished", null)) }],
131
+ * ["J-0002", { task: "Edge banding", state: some(variant("started", null)) }],
132
+ * ["J-0003", { task: "CNC routing", state: none }],
133
+ * ]),
134
+ * mutations: (mutation) => ({
135
+ * // The jobs' patch door — every Save commits through it.
136
+ * patch: mutation.patch(),
137
+ * }),
138
+ * });
139
+ *
140
+ * const sheet = East.function([], UIComponentType, (_$) => (
141
+ * <Reactive>{$ => {
142
+ * const jobs = $.let(Record.bind(sheetActionJobs));
143
+ * return (
144
+ * <Box height="320px">
145
+ * <Sheet
146
+ * record={jobs}
147
+ * name="sheetActionsBasic"
148
+ * columns={{
149
+ * task: Sheet.column.text(ActionJob, { header: "Task", width: "240px" }),
150
+ * state: Sheet.column.action(ActionJob, JobState, {
151
+ * header: "State", width: "240px",
152
+ * start: ["started"],
153
+ * cases: {
154
+ * started: { label: "Start", state: "Started", tone: "info", icon: "play", next: ["finished"] },
155
+ * finished: { label: "Finish", state: "Finished", tone: "success", icon: "check" },
156
+ * },
157
+ * }),
158
+ * }}
159
+ * />
160
+ * </Box>
161
+ * );
162
+ * }}</Reactive>
163
+ * ));
164
+ * ```
165
+ */
166
+ export function action(rowType, variantType, config) {
167
+ return { kind: "action", config: config, rowType, variantType };
168
+ }
169
+ /**
170
+ * Compiles an action column's cell codec: a value of `V` to its `Action`
171
+ * cell (its case and its value, beast2 at the case's type), and back.
172
+ *
173
+ * @param variantType - The variant
174
+ * @returns The codec
175
+ * @internal
176
+ */
177
+ export function buildActionCodec(variantType) {
178
+ const cases = Object.entries(variantType.cases);
179
+ const encode = East.function([variantType], SheetCellType, (_$, v) => v.match(Object.fromEntries(cases.map(([name]) => [name,
180
+ (_$2, value) => East.value(variant("Action", { case: name, value: East.Blob.encodeBeast(value, "v2") }), SheetCellType),
181
+ ]))));
182
+ const decode = East.function([SheetActionCellType], OptionType(variantType), ($, cell) => {
183
+ for (const [name, type] of cases) {
184
+ $.if(cell.case.equal(name), ($2) => {
185
+ $2.return(East.value(some(variant(name, cell.value.decodeBeast(type, "v2"))), OptionType(variantType)));
186
+ });
187
+ }
188
+ return East.value(none, OptionType(variantType));
189
+ });
190
+ return { variantType, encode, decode };
191
+ }
192
+ /** A short description of a type, for a refusal. */
193
+ function describeType(type) {
194
+ return type.type === "Struct" ? `a struct` : type.type === "Variant" ? "a variant" : `a ${type.type}`;
195
+ }
196
+ /** Whether a type is a variant whose every case is `NullType`. */
197
+ function isChoice(type) {
198
+ if (type.type !== "Variant")
199
+ return false;
200
+ const cases = Object.values(type.cases);
201
+ return cases.length > 0 && cases.every((t) => isTypeEqual(t, NullType));
202
+ }
203
+ /**
204
+ * Checks an action column's declaration against its field: the field is `V`
205
+ * or `Option<V>`; `cases` names every case of `V` and no other; `start` and
206
+ * each `next` name cases of `V`, once each; `start` sits only on an
207
+ * `Option<V>` field; no `fill` or `value`.
208
+ *
209
+ * @param key - The column key
210
+ * @param col - The built column
211
+ * @param fieldType - The field's type
212
+ * @param optional - Whether the field is an `Option` of `V`
213
+ * @throws Error naming the column and the case
214
+ * @internal
215
+ */
216
+ export function describeAction(key, col, fieldType, optional) {
217
+ const variantType = col.variantType;
218
+ const where = `Sheet: action column "${key}"`;
219
+ if (variantType === undefined || variantType.type !== "Variant") {
220
+ throw new Error(`${where} names no variant — Sheet.column.action(RowType, VariantType, { … })`);
221
+ }
222
+ const unwrapped = optional ? fieldType.cases["some"] : fieldType;
223
+ if (!isTypeEqual(unwrapped, variantType)) {
224
+ throw new Error(`${where} sits on ${describeType(fieldType)} field — it sits on a field of its variant, or an Option of it`);
225
+ }
226
+ const cfg = col.config;
227
+ if (cfg.fill !== undefined)
228
+ throw new Error(`${where} takes no \`fill\` — an action is taken, never filled`);
229
+ if (cfg.value !== undefined)
230
+ throw new Error(`${where} takes no \`value\` — it shows the field its actions write`);
231
+ const names = Object.keys(variantType.cases);
232
+ const declared = Object.keys(cfg.cases ?? {});
233
+ const missing = names.filter((n) => !declared.includes(n));
234
+ const stray = declared.filter((n) => !names.includes(n));
235
+ if (missing.length > 0)
236
+ throw new Error(`${where} declares no case for ${missing.map((n) => `"${n}"`).join(", ")} — \`cases\` gives every case of the variant its words`);
237
+ if (stray.length > 0)
238
+ throw new Error(`${where} declares ${stray.map((n) => `"${n}"`).join(", ")}, ${stray.length === 1 ? "a case" : "cases"} the variant does not have (${names.join(", ")})`);
239
+ const checkList = (list, what) => {
240
+ if (list === undefined)
241
+ return;
242
+ const seen = new Set();
243
+ for (const n of list) {
244
+ if (!names.includes(n))
245
+ throw new Error(`${where}'s ${what} names "${n}", a case the variant does not have (${names.join(", ")})`);
246
+ if (seen.has(n))
247
+ throw new Error(`${where}'s ${what} names "${n}" twice — each case is offered once`);
248
+ seen.add(n);
249
+ }
250
+ };
251
+ if (cfg.start !== undefined && !optional) {
252
+ throw new Error(`${where} has a \`start\`, and its field is always in a case — \`start\` is what a row with nothing taken may do, on an Option field; a new row's first case is \`newRow\`'s`);
253
+ }
254
+ checkList(cfg.start, "`start`");
255
+ for (const n of names)
256
+ checkList(cfg.cases[n].next, `case "${n}"'s \`next\``);
257
+ }
258
+ /**
259
+ * The rule cells an action column projects: the row's summary, and its name
260
+ * and title where the column gives them.
261
+ *
262
+ * @param key - The column key
263
+ * @param col - The built column
264
+ * @param rowType - The row type (a grouped sheet's line)
265
+ * @returns The rule cells
266
+ * @throws Error naming the case whose summary does not return String or Option<String>
267
+ * @internal
268
+ */
269
+ export function actionRuleCells(key, col, rowType) {
270
+ const cfg = col.config;
271
+ const variantType = col.variantType;
272
+ const fieldType = rowType.fields[key];
273
+ const optional = !isTypeEqual(fieldType, variantType);
274
+ const cases = Object.entries(variantType.cases);
275
+ const summaries = new Map();
276
+ for (const [name, type] of cases) {
277
+ const summary = cfg.cases[name].summary;
278
+ if (summary === undefined)
279
+ continue;
280
+ const fn = East.function([type, rowType], undefined, (_$, v, r) => summary(v, r));
281
+ const out = Expr.type(fn).output;
282
+ const asOption = isTypeEqual(out, OptionType(StringType));
283
+ if (!asOption && !isTypeEqual(out, StringType)) {
284
+ throw new Error(`Sheet: action column "${key}" case "${name}" has a \`summary\` returning ${describeType(out)} — it returns String or Option<String>`);
285
+ }
286
+ summaries.set(name, { fn, optional: asOption });
287
+ }
288
+ const summary = East.function([rowType], StringType, ($, r) => {
289
+ const bound = new Map([...summaries].map(([name, s]) => [name, { fn: $.const(s.fn), optional: s.optional }]));
290
+ const ofValue = (v) => v.match(Object.fromEntries(cases.map(([name]) => [name, (_$2, value) => {
291
+ const s = bound.get(name);
292
+ if (s === undefined)
293
+ return East.value("", StringType);
294
+ const out = s.fn(value, r);
295
+ return s.optional ? out.match({ some: (_$3, text) => text, none: () => "" }) : out;
296
+ }])));
297
+ const field = r[key];
298
+ return optional
299
+ ? field.match({ some: (_$2, v) => ofValue(v), none: () => "" })
300
+ : ofValue(field);
301
+ });
302
+ const out = [{ key: sheetRuleCell("summary", key), fn: summary, tag: "String", optional: false }];
303
+ if (cfg.name !== undefined) {
304
+ const name = cfg.name;
305
+ out.push({ key: sheetRuleCell("name", key), fn: East.function([rowType], StringType, (_$, r) => name(r)), tag: "String", optional: false });
306
+ }
307
+ if (cfg.title !== undefined) {
308
+ const title = cfg.title;
309
+ out.push({ key: sheetRuleCell("title", key), fn: East.function([rowType], StringType, (_$, r) => title(r)), tag: "String", optional: false });
310
+ }
311
+ return out;
312
+ }
313
+ // ============================================================================
314
+ // The wire kind
315
+ // ============================================================================
316
+ /** Whether a type is `Option<T>`. */
317
+ function optionOf(type) {
318
+ if (type.type !== "Variant")
319
+ return undefined;
320
+ const cases = type.cases;
321
+ const keys = Object.keys(cases);
322
+ return keys.length === 2 && cases["none"] !== undefined && cases["some"] !== undefined && isTypeEqual(type, OptionType(cases["some"])) ? cases["some"] : undefined;
323
+ }
324
+ /**
325
+ * A draft → the value it stands for, `none` while a field it needs is missing
326
+ * or unread: an `Option` field missing is `none`.
327
+ */
328
+ function buildComplete(rowType) {
329
+ const draftType = SheetDraftTypeFor(rowType);
330
+ const fields = Object.entries(rowType.fields);
331
+ return East.function([draftType], OptionType(rowType), ($, d) => {
332
+ const draft = d;
333
+ const out = {};
334
+ for (const [name, type] of fields) {
335
+ const field = $.const(draft[name]);
336
+ $.if(field.hasTag("invalid"), ($2) => { $2.return(East.value(none, OptionType(rowType))); });
337
+ if (optionOf(type) !== undefined) {
338
+ out[name] = $.const(field.match({ value: (_$2, v) => v }, () => East.value(none, type)), type);
339
+ }
340
+ else {
341
+ $.if(field.hasTag("missing"), ($2) => { $2.return(East.value(none, OptionType(rowType))); });
342
+ out[name] = $.const(field.unwrap("value"), type);
343
+ }
344
+ }
345
+ return East.value(some(out), OptionType(rowType));
346
+ });
347
+ }
348
+ /** A group's draft → the group it stands for, `none` while its own fields or any line is incomplete. */
349
+ function buildCompleteGroup(groupType, linesField, completeLine) {
350
+ const draftType = SheetDraftGroupTypeFor(groupType, linesField);
351
+ const lineType = sheetLinesOf(groupType, linesField).lineType;
352
+ const fields = Object.entries(groupType.fields);
353
+ return East.function([draftType], OptionType(groupType), ($, d) => {
354
+ const draft = d;
355
+ const line = $.const(completeLine);
356
+ const out = {};
357
+ for (const [name, type] of fields) {
358
+ if (name === linesField) {
359
+ const lines = $.const(draft[name].map((_$2, l) => line(l)), ArrayType(OptionType(lineType)));
360
+ $.if(lines.some((_$2, l) => l.hasTag("none")), ($2) => { $2.return(East.value(none, OptionType(groupType))); });
361
+ out[name] = $.const(lines.map((_$2, l) => l.unwrap("some")), ArrayType(lineType));
362
+ continue;
363
+ }
364
+ const field = $.const(draft[name]);
365
+ $.if(field.hasTag("invalid"), ($2) => { $2.return(East.value(none, OptionType(groupType))); });
366
+ if (optionOf(type) !== undefined) {
367
+ out[name] = $.const(field.match({ value: (_$2, v) => v }, () => East.value(none, type)), type);
368
+ }
369
+ else {
370
+ $.if(field.hasTag("missing"), ($2) => { $2.return(East.value(none, OptionType(groupType))); });
371
+ out[name] = $.const(field.unwrap("value"), type);
372
+ }
373
+ }
374
+ return East.value(some(out), OptionType(groupType));
375
+ });
376
+ }
377
+ /** A draft → the labels of the fields an action waits on: a required field missing, any field unread. */
378
+ function buildMissing(rowType, labels) {
379
+ const draftType = SheetDraftTypeFor(rowType);
380
+ const fields = Object.entries(rowType.fields);
381
+ return East.function([draftType], ArrayType(StringType), ($, d) => {
382
+ const draft = d;
383
+ const out = $.let([], ArrayType(StringType));
384
+ for (const [name, type] of fields) {
385
+ const field = $.const(draft[name]);
386
+ const waits = optionOf(type) !== undefined ? field.hasTag("invalid") : field.hasTag("invalid").or(() => field.hasTag("missing"));
387
+ $.if(waits, ($2) => { $2(out.pushLast(East.value(labels.get(name) ?? spellOut(name), StringType))); });
388
+ }
389
+ return out;
390
+ });
391
+ }
392
+ /**
393
+ * Compiles an action column into its wire kind: the machine as names, each
394
+ * case's take resolved through `Fields`, and `blocked`, each `initial` and
395
+ * each `updates` bridged over the wire context.
396
+ *
397
+ * @param input - The column, the bridge, the registers and the group's encoding ({@link SheetActionKindInput})
398
+ * @returns The column's kind payload
399
+ * @throws Error naming the column and the case: a take that does not fit its case's type, a register the sheet does not declare, a group patch on a flat sheet, or a group patch of another type
400
+ * @internal
401
+ */
402
+ export function buildActionKind(input) {
403
+ const { meta, bridge, metas, registers } = input;
404
+ const key = meta.key;
405
+ const where = `Sheet: action column "${key}"`;
406
+ const cfg = meta.config;
407
+ const variantType = meta.action.variantType;
408
+ const grouped = bridge.group !== undefined;
409
+ const lineType = bridge.lineType;
410
+ const groupType = bridge.group?.groupType;
411
+ const ctxType = (grouped
412
+ ? SheetGroupActionContextTypeFor(groupType, bridge.group.linesField)
413
+ : SheetActionContextTypeFor(lineType));
414
+ const rowPatchType = SheetPatchTypeFor(lineType);
415
+ const groupPatchType = groupType !== undefined ? SheetPatchTypeFor(groupType) : undefined;
416
+ const authorUpdatesType = groupPatchType !== undefined
417
+ ? StructType({ row: rowPatchType, group: groupPatchType })
418
+ : StructType({ row: rowPatchType });
419
+ // The draft context → the action context: the row complete, its neighbours each complete or none.
420
+ const completeLine = buildComplete(lineType);
421
+ const completeGroup = grouped ? buildCompleteGroup(groupType, bridge.group.linesField, completeLine) : undefined;
422
+ const toContext = East.function([bridge.ctxType], OptionType(ctxType), ($, c) => {
423
+ const ctx = c;
424
+ const complete = $.const(completeLine);
425
+ const row = $.const(complete(ctx["row"]));
426
+ $.if(row.hasTag("none"), ($2) => { $2.return(East.value(none, OptionType(ctxType))); });
427
+ const rows = $.const(ctx["rows"].map((_$2, r) => complete(r)), ArrayType(OptionType(lineType)));
428
+ let group;
429
+ if (completeGroup !== undefined) {
430
+ const whole = $.const(completeGroup);
431
+ group = $.const(ctx["group"].match({ some: (_$2, g) => whole(g), none: () => East.value(none, OptionType(groupType)) }), OptionType(groupType));
432
+ }
433
+ else {
434
+ group = $.const(none, OptionType(NullType));
435
+ }
436
+ return East.value(some({ row: row.unwrap("some"), index: ctx["rowIndex"], rows, group, today: ctx["today"] }), OptionType(ctxType));
437
+ });
438
+ // Whether a row may act now: its draft complete, and not `blocked`.
439
+ const labels = new Map(metas.filter((m) => m.config.header !== undefined).map((m) => [m.field, m.config.header]));
440
+ const missing = buildMissing(lineType, labels);
441
+ const blockedRule = cfg.blocked;
442
+ const blocked = blockedRule !== undefined
443
+ ? East.function([ctxType], OptionType(StringType), (_$, c) => blockedRule(c))
444
+ : undefined;
445
+ const gate = East.function([SheetContextType], SheetActionGateType, ($, wire) => {
446
+ const bridgeCtx = $.const(bridge.bridgeCtx);
447
+ const to = $.const(toContext);
448
+ const typed = $.const(bridgeCtx(wire), bridge.ctxType);
449
+ const ctx = $.const(to(typed));
450
+ $.if(ctx.hasTag("none"), ($2) => {
451
+ const waits = $2.const(missing);
452
+ $2.return(East.value(variant("incomplete", waits(typed["row"])), SheetActionGateType));
453
+ });
454
+ if (blocked === undefined)
455
+ return East.value(variant("open", null), SheetActionGateType);
456
+ const rule = $.const(blocked);
457
+ return rule(ctx.unwrap("some")).match({
458
+ some: (_$2, reason) => East.value(variant("blocked", reason), SheetActionGateType),
459
+ none: () => East.value(variant("open", null), SheetActionGateType),
460
+ });
461
+ });
462
+ // The author's order: the `cases` record's, as East keeps a variant's cases in name order.
463
+ const types = variantType.cases;
464
+ const ordered = Object.keys(cfg.cases).map((name) => [name, types[name]]);
465
+ const caseValues = ordered.map(([name, type]) => {
466
+ const at = `${where} case "${name}"`;
467
+ const cs = cfg.cases[name];
468
+ const take = cs.take;
469
+ const kind = take?.[FIELD_HINT];
470
+ let wireTake;
471
+ let formInitial;
472
+ if (isTypeEqual(type, NullType)) {
473
+ if (take !== undefined)
474
+ throw new Error(`${at} is NullType — it asks nothing, and is a button; it takes no \`take\``);
475
+ wireTake = East.value(variant("button", null), SheetActionTakeType);
476
+ }
477
+ else if (kind === "action-register") {
478
+ if (!isTypeEqual(type, StringType))
479
+ throw new Error(`${at} is ${describeType(type)} — Sheet.action.menu({ of }) chooses a register member, whose key is a String`);
480
+ if (registers[take.of] === undefined)
481
+ throw new Error(`${at}'s menu names register "${take.of}", which \`registers\` does not declare (${Object.keys(registers).join(", ") || "none declared"})`);
482
+ wireTake = East.value(variant("register", take.of), SheetActionTakeType);
483
+ }
484
+ else if (kind === "action-menu" || (kind === undefined && isChoice(type))) {
485
+ if (!isChoice(type))
486
+ throw new Error(`${at} is ${describeType(type)} — Sheet.action.menu({ labels }) chooses among a variant's cases, each NullType`);
487
+ let spec;
488
+ try {
489
+ spec = fieldSpecs(StructType({ [name]: type }), { [name]: fieldSelect({ labels: take?.labels ?? {} }) })[0];
490
+ }
491
+ catch (e) {
492
+ throw new Error(`${at}'s menu ${e.message.replace(/^Fields: "[^"]*" is .* field — /, "")}`);
493
+ }
494
+ wireTake = East.value(variant("menu", spec.editor.type === "select" ? spec.editor.value : []), SheetActionTakeType);
495
+ }
496
+ else if (kind === "action-form" || kind === undefined) {
497
+ const scalar = type.type !== "Struct";
498
+ const hints = take?.fields;
499
+ let specs;
500
+ try {
501
+ specs = scalar
502
+ ? fieldSpecs(StructType({ [name]: type }), (hints === undefined ? {} : { [name]: hints }))
503
+ : fieldSpecs(type, (hints ?? {}));
504
+ }
505
+ catch (e) {
506
+ throw new Error(`${at}'s form — ${e.message.replace(/^Fields: /, "")}`);
507
+ }
508
+ for (const spec of specs) {
509
+ if (spec.editor.type === "reference" && registers[spec.editor.value.of] === undefined) {
510
+ throw new Error(`${at}'s form field "${spec.path.join(".")}" is a reference to "${spec.editor.value.of}", which is not one of the sheet's registers (${Object.keys(registers).join(", ") || "none declared"})`);
511
+ }
512
+ }
513
+ wireTake = East.value(variant("form", { specs, scalar }), SheetActionTakeType);
514
+ formInitial = take?.initial;
515
+ }
516
+ else {
517
+ throw new Error(`${at}'s \`take\` is "${String(kind)}" — it is Sheet.action.menu(…) or Sheet.action.form(…)`);
518
+ }
519
+ // What the form opens with, encoded at the case's type.
520
+ const initial = formInitial !== undefined
521
+ ? (() => {
522
+ const opening = East.function([ctxType], type, (_$, c) => formInitial(c));
523
+ return some(East.function([SheetContextType], BlobType, ($, wire) => {
524
+ const bridgeCtx = $.const(bridge.bridgeCtx);
525
+ const to = $.const(toContext);
526
+ const open = $.const(opening);
527
+ return East.Blob.encodeBeast(open(to(bridgeCtx(wire)).unwrap("some")), "v2");
528
+ }));
529
+ })()
530
+ : none;
531
+ // What else taking it writes, as the cells its patches set.
532
+ const updatesRule = cs.updates;
533
+ const updates = updatesRule !== undefined
534
+ ? (() => {
535
+ const author = East.function([type, ctxType, DateTimeType], authorUpdatesType, (_$, v, c, moment) => {
536
+ const given = updatesRule(v, c, moment) ?? {};
537
+ if (given.group !== undefined && groupPatchType === undefined) {
538
+ throw new Error(`${at}'s \`updates\` returns a group patch, and the sheet declares no group — a flat sheet's action updates its row alone`);
539
+ }
540
+ const row = given.row !== undefined ? East.value(given.row) : East.value(emptyPatch(lineType), rowPatchType);
541
+ if (!isTypeEqual(Expr.type(row), rowPatchType)) {
542
+ throw new Error(`${at}'s \`updates\` returns a row patch of another type — build it with Sheet.patch(RowType, { … }) over the columns' type`);
543
+ }
544
+ if (groupPatchType === undefined)
545
+ return { row };
546
+ const group = given.group !== undefined ? East.value(given.group) : East.value(emptyPatch(groupType), groupPatchType);
547
+ if (!isTypeEqual(Expr.type(group), groupPatchType)) {
548
+ throw new Error(`${at}'s \`updates\` returns a group patch of another type — build it with Sheet.patch(GroupType, { … }) over the group's type`);
549
+ }
550
+ return { row, group };
551
+ });
552
+ return some(East.function([BlobType, SheetContextType, DateTimeType], SheetActionUpdatesType, ($, bytes, wire, moment) => {
553
+ const bridgeCtx = $.const(bridge.bridgeCtx);
554
+ const to = $.const(toContext);
555
+ const rule = $.const(author);
556
+ const encodeRow = $.const(bridge.seedCells);
557
+ const value = $.const(bytes.decodeBeast(type, "v2"));
558
+ const result = $.const(rule(value, to(bridgeCtx(wire)).unwrap("some"), moment));
559
+ const row = $.const(encodeRow(result.row));
560
+ if (input.encodeGroup === undefined || groupPatchType === undefined) {
561
+ return East.value({ row, group: new Map() }, SheetActionUpdatesType);
562
+ }
563
+ const encodeGroup = $.const(input.encodeGroup);
564
+ return East.value({ row, group: encodeGroup(result.group) }, SheetActionUpdatesType);
565
+ }));
566
+ })()
567
+ : none;
568
+ return East.value({
569
+ case: name,
570
+ label: cs.label,
571
+ state: cs.state,
572
+ tone: cs.tone !== undefined ? some(resolveTag(cs.tone, StatusValueType)) : none,
573
+ icon: cs.icon !== undefined ? some(cs.icon) : none,
574
+ next: [...(cs.next ?? [])],
575
+ take: wireTake,
576
+ valueType: toEastTypeValue(type),
577
+ initial,
578
+ updates,
579
+ }, SheetActionCaseType);
580
+ });
581
+ return East.value({
582
+ start: [...(cfg.start ?? [])],
583
+ cases: caseValues,
584
+ gate,
585
+ summary: sheetRuleCell("summary", key),
586
+ name: cfg.name !== undefined ? some(sheetRuleCell("name", key)) : none,
587
+ title: cfg.title !== undefined ? some(sheetRuleCell("title", key)) : none,
588
+ }, SheetActionKindType);
589
+ }
590
+ /** A patch of a struct that sets nothing — every field `none`. */
591
+ function emptyPatch(type) {
592
+ return Object.fromEntries(Object.keys(type.fields).map((name) => [name, none]));
593
+ }
594
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/sheet/actions.ts"],"names":[],"mappings":"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"}