@elaraai/e3-ui 1.0.97 → 1.0.98

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 (304) hide show
  1. package/dist/src/allocation/index.d.ts +258 -7
  2. package/dist/src/allocation/index.d.ts.map +1 -1
  3. package/dist/src/allocation/index.js +30 -1
  4. package/dist/src/allocation/index.js.map +1 -1
  5. package/dist/src/allocation/types.d.ts +41 -0
  6. package/dist/src/allocation/types.d.ts.map +1 -1
  7. package/dist/src/allocation/types.js +35 -0
  8. package/dist/src/allocation/types.js.map +1 -1
  9. package/dist/src/bind/data-indexed.d.ts +31 -4
  10. package/dist/src/bind/data-indexed.d.ts.map +1 -1
  11. package/dist/src/bind/data-indexed.js +54 -10
  12. package/dist/src/bind/data-indexed.js.map +1 -1
  13. package/dist/src/calendar/index.d.ts +540 -14
  14. package/dist/src/calendar/index.d.ts.map +1 -1
  15. package/dist/src/calendar/index.js +43 -7
  16. package/dist/src/calendar/index.js.map +1 -1
  17. package/dist/src/calendar/paged.d.ts +89 -0
  18. package/dist/src/calendar/paged.d.ts.map +1 -0
  19. package/dist/src/calendar/paged.js +148 -0
  20. package/dist/src/calendar/paged.js.map +1 -0
  21. package/dist/src/flowchart/payload.d.ts +156 -0
  22. package/dist/src/flowchart/payload.d.ts.map +1 -1
  23. package/dist/src/flowchart/window.d.ts +12 -0
  24. package/dist/src/flowchart/window.d.ts.map +1 -1
  25. package/dist/src/index.d.ts +11 -2
  26. package/dist/src/index.d.ts.map +1 -1
  27. package/dist/src/index.js +19 -0
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/internal.d.ts +11 -5
  30. package/dist/src/internal.d.ts.map +1 -1
  31. package/dist/src/internal.js +28 -7
  32. package/dist/src/internal.js.map +1 -1
  33. package/dist/src/plan/builders.d.ts +12 -8
  34. package/dist/src/plan/builders.d.ts.map +1 -1
  35. package/dist/src/plan/builders.js +12 -8
  36. package/dist/src/plan/builders.js.map +1 -1
  37. package/dist/src/plan/event-rows.d.ts +228 -156
  38. package/dist/src/plan/event-rows.d.ts.map +1 -1
  39. package/dist/src/plan/event-rows.js +239 -54
  40. package/dist/src/plan/event-rows.js.map +1 -1
  41. package/dist/src/plan/index.d.ts +5 -0
  42. package/dist/src/plan/index.d.ts.map +1 -1
  43. package/dist/src/plan/index.js +3 -0
  44. package/dist/src/plan/index.js.map +1 -1
  45. package/dist/src/plan/ir.d.ts +70 -0
  46. package/dist/src/plan/ir.d.ts.map +1 -1
  47. package/dist/src/plan/ordered-source.d.ts +2038 -1
  48. package/dist/src/plan/ordered-source.d.ts.map +1 -1
  49. package/dist/src/plan/ordered-source.js +19 -11
  50. package/dist/src/plan/ordered-source.js.map +1 -1
  51. package/dist/src/plan/plan.d.ts +513 -32
  52. package/dist/src/plan/plan.d.ts.map +1 -1
  53. package/dist/src/plan/plan.js +119 -32
  54. package/dist/src/plan/plan.js.map +1 -1
  55. package/dist/src/plan/root.d.ts +4 -2
  56. package/dist/src/plan/root.d.ts.map +1 -1
  57. package/dist/src/plan/root.js +6 -4
  58. package/dist/src/plan/root.js.map +1 -1
  59. package/dist/src/plan/series.d.ts +13 -0
  60. package/dist/src/plan/series.d.ts.map +1 -1
  61. package/dist/src/plan/series.js +61 -7
  62. package/dist/src/plan/series.js.map +1 -1
  63. package/dist/src/plan/types.d.ts +14 -0
  64. package/dist/src/plan/types.d.ts.map +1 -1
  65. package/dist/src/plan/types.js +8 -0
  66. package/dist/src/plan/types.js.map +1 -1
  67. package/dist/src/roster/index.d.ts +608 -20
  68. package/dist/src/roster/index.d.ts.map +1 -1
  69. package/dist/src/roster/index.js +103 -29
  70. package/dist/src/roster/index.js.map +1 -1
  71. package/dist/src/roster/library.d.ts +12 -2
  72. package/dist/src/roster/library.d.ts.map +1 -1
  73. package/dist/src/roster/library.js +8 -0
  74. package/dist/src/roster/library.js.map +1 -1
  75. package/dist/src/roster/lists.d.ts +59 -12
  76. package/dist/src/roster/lists.d.ts.map +1 -1
  77. package/dist/src/roster/lists.js +51 -58
  78. package/dist/src/roster/lists.js.map +1 -1
  79. package/dist/src/roster/times.d.ts +402 -0
  80. package/dist/src/roster/times.d.ts.map +1 -1
  81. package/dist/src/roster/types.d.ts +913 -1
  82. package/dist/src/roster/types.d.ts.map +1 -1
  83. package/dist/src/roster/types.js +43 -3
  84. package/dist/src/roster/types.js.map +1 -1
  85. package/dist/src/schedule/cell-checks.d.ts +85 -0
  86. package/dist/src/schedule/cell-checks.d.ts.map +1 -0
  87. package/dist/src/schedule/cell-checks.js +211 -0
  88. package/dist/src/schedule/cell-checks.js.map +1 -0
  89. package/dist/src/schedule/events.d.ts +42 -10
  90. package/dist/src/schedule/events.d.ts.map +1 -1
  91. package/dist/src/schedule/events.js +349 -155
  92. package/dist/src/schedule/events.js.map +1 -1
  93. package/dist/src/schedule/fields.d.ts +134 -0
  94. package/dist/src/schedule/fields.d.ts.map +1 -0
  95. package/dist/src/schedule/fields.js +207 -0
  96. package/dist/src/schedule/fields.js.map +1 -0
  97. package/dist/src/schedule/library.d.ts +11 -3
  98. package/dist/src/schedule/library.d.ts.map +1 -1
  99. package/dist/src/schedule/library.js +9 -6
  100. package/dist/src/schedule/library.js.map +1 -1
  101. package/dist/src/schedule/optimise.d.ts +124 -0
  102. package/dist/src/schedule/optimise.d.ts.map +1 -0
  103. package/dist/src/schedule/optimise.js +140 -0
  104. package/dist/src/schedule/optimise.js.map +1 -0
  105. package/dist/src/schedule/pages.d.ts +76 -0
  106. package/dist/src/schedule/pages.d.ts.map +1 -0
  107. package/dist/src/schedule/pages.js +86 -0
  108. package/dist/src/schedule/pages.js.map +1 -0
  109. package/dist/src/schedule/record-window.d.ts +119 -6
  110. package/dist/src/schedule/record-window.d.ts.map +1 -1
  111. package/dist/src/schedule/record-window.js +139 -60
  112. package/dist/src/schedule/record-window.js.map +1 -1
  113. package/dist/src/schedule/resources.d.ts +8 -4
  114. package/dist/src/schedule/resources.d.ts.map +1 -1
  115. package/dist/src/schedule/resources.js +35 -15
  116. package/dist/src/schedule/resources.js.map +1 -1
  117. package/dist/src/schedule/session.d.ts +14 -0
  118. package/dist/src/schedule/session.d.ts.map +1 -1
  119. package/dist/src/schedule/session.js +29 -17
  120. package/dist/src/schedule/session.js.map +1 -1
  121. package/dist/src/schedule/types.d.ts +426 -36
  122. package/dist/src/schedule/types.d.ts.map +1 -1
  123. package/dist/src/schedule/types.js +63 -17
  124. package/dist/src/schedule/types.js.map +1 -1
  125. package/dist/src/schedule/window.d.ts +30 -9
  126. package/dist/src/schedule/window.d.ts.map +1 -1
  127. package/dist/src/schedule/window.js +101 -49
  128. package/dist/src/schedule/window.js.map +1 -1
  129. package/dist/src/schematic/index.d.ts +277 -0
  130. package/dist/src/schematic/index.d.ts.map +1 -0
  131. package/dist/src/schematic/index.js +206 -0
  132. package/dist/src/schematic/index.js.map +1 -0
  133. package/dist/src/schematic/kinds.d.ts +501 -0
  134. package/dist/src/schematic/kinds.d.ts.map +1 -0
  135. package/dist/src/schematic/kinds.js +1027 -0
  136. package/dist/src/schematic/kinds.js.map +1 -0
  137. package/dist/src/schematic/layers.d.ts +74 -0
  138. package/dist/src/schematic/layers.d.ts.map +1 -0
  139. package/dist/src/schematic/layers.js +99 -0
  140. package/dist/src/schematic/layers.js.map +1 -0
  141. package/dist/src/schematic/library.d.ts +202 -0
  142. package/dist/src/schematic/library.d.ts.map +1 -0
  143. package/dist/src/schematic/library.js +244 -0
  144. package/dist/src/schematic/library.js.map +1 -0
  145. package/dist/src/schematic/payload.d.ts +8360 -0
  146. package/dist/src/schematic/payload.d.ts.map +1 -0
  147. package/dist/src/schematic/payload.js +446 -0
  148. package/dist/src/schematic/payload.js.map +1 -0
  149. package/dist/src/schematic/schematic.d.ts +27 -0
  150. package/dist/src/schematic/schematic.d.ts.map +1 -0
  151. package/dist/src/schematic/schematic.js +17 -0
  152. package/dist/src/schematic/schematic.js.map +1 -0
  153. package/dist/src/schematic/shapes.d.ts +150 -0
  154. package/dist/src/schematic/shapes.d.ts.map +1 -0
  155. package/dist/src/schematic/shapes.js +171 -0
  156. package/dist/src/schematic/shapes.js.map +1 -0
  157. package/dist/src/schematic/templates.d.ts +96 -0
  158. package/dist/src/schematic/templates.d.ts.map +1 -0
  159. package/dist/src/schematic/templates.js +91 -0
  160. package/dist/src/schematic/templates.js.map +1 -0
  161. package/dist/src/schematic/types.d.ts +5766 -0
  162. package/dist/src/schematic/types.d.ts.map +1 -0
  163. package/dist/src/schematic/types.js +688 -0
  164. package/dist/src/schematic/types.js.map +1 -0
  165. package/dist/src/schematic/window.d.ts +212 -0
  166. package/dist/src/schematic/window.d.ts.map +1 -0
  167. package/dist/src/schematic/window.js +337 -0
  168. package/dist/src/schematic/window.js.map +1 -0
  169. package/dist/src/sheet/editing-bridge.d.ts +4 -2
  170. package/dist/src/sheet/editing-bridge.d.ts.map +1 -1
  171. package/dist/src/sheet/editing-bridge.js +8 -2
  172. package/dist/src/sheet/editing-bridge.js.map +1 -1
  173. package/dist/src/sheet/editing-types.d.ts +9 -5
  174. package/dist/src/sheet/editing-types.d.ts.map +1 -1
  175. package/dist/src/sheet/editing-types.js +9 -5
  176. package/dist/src/sheet/editing-types.js.map +1 -1
  177. package/dist/src/sheet/index.d.ts +18 -8
  178. package/dist/src/sheet/index.d.ts.map +1 -1
  179. package/dist/src/sheet/index.js +15 -7
  180. package/dist/src/sheet/index.js.map +1 -1
  181. package/dist/src/sheet/optimise.d.ts +69 -0
  182. package/dist/src/sheet/optimise.d.ts.map +1 -0
  183. package/dist/src/sheet/optimise.js +81 -0
  184. package/dist/src/sheet/optimise.js.map +1 -0
  185. package/dist/src/sheet/registers.d.ts +5 -5
  186. package/dist/src/sheet/registers.js +5 -5
  187. package/dist/src/sheet/root.d.ts +2 -0
  188. package/dist/src/sheet/root.d.ts.map +1 -1
  189. package/dist/src/sheet/root.js +2 -2
  190. package/dist/src/sheet/root.js.map +1 -1
  191. package/dist/src/sheet/sheet.d.ts +753 -573
  192. package/dist/src/sheet/sheet.d.ts.map +1 -1
  193. package/dist/src/sheet/sheet.js +45 -13
  194. package/dist/src/sheet/sheet.js.map +1 -1
  195. package/dist/src/sheet/types.d.ts +92 -12
  196. package/dist/src/sheet/types.d.ts.map +1 -1
  197. package/dist/src/sheet/types.js +4 -8
  198. package/dist/src/sheet/types.js.map +1 -1
  199. package/dist/src/utils/keyed-rows.d.ts +41 -0
  200. package/dist/src/utils/keyed-rows.d.ts.map +1 -0
  201. package/dist/src/utils/keyed-rows.js +64 -0
  202. package/dist/src/utils/keyed-rows.js.map +1 -0
  203. package/dist/src/utils/optimise.d.ts +79 -0
  204. package/dist/src/utils/optimise.d.ts.map +1 -0
  205. package/dist/src/utils/optimise.js +46 -0
  206. package/dist/src/utils/optimise.js.map +1 -0
  207. package/dist/test/allocation/allocation.examples.d.ts +6 -18
  208. package/dist/test/allocation/allocation.examples.d.ts.map +1 -1
  209. package/dist/test/allocation/allocation.examples.js +3 -3
  210. package/dist/test/allocation/allocation.examples.js.map +1 -1
  211. package/dist/test/allocation/optimise.examples.d.ts +109 -0
  212. package/dist/test/allocation/optimise.examples.d.ts.map +1 -0
  213. package/dist/test/allocation/optimise.examples.js +223 -0
  214. package/dist/test/allocation/optimise.examples.js.map +1 -0
  215. package/dist/test/bind/data/data.examples.d.ts +540 -36
  216. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  217. package/dist/test/bind/data/data.examples.js +66 -2
  218. package/dist/test/bind/data/data.examples.js.map +1 -1
  219. package/dist/test/bind/record/record.examples.d.ts +1 -3
  220. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  221. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
  222. package/dist/test/calendar/calendar-records.examples.js +3 -3
  223. package/dist/test/calendar/calendar-records.examples.js.map +1 -1
  224. package/dist/test/calendar/calendar-windows.examples.d.ts +9 -0
  225. package/dist/test/calendar/calendar-windows.examples.d.ts.map +1 -0
  226. package/dist/test/calendar/calendar-windows.examples.js +111 -0
  227. package/dist/test/calendar/calendar-windows.examples.js.map +1 -0
  228. package/dist/test/calendar/calendar.examples.d.ts +7 -21
  229. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  230. package/dist/test/calendar/calendar.examples.js +7 -7
  231. package/dist/test/calendar/calendar.examples.js.map +1 -1
  232. package/dist/test/calendar/optimise.examples.d.ts +132 -0
  233. package/dist/test/calendar/optimise.examples.d.ts.map +1 -0
  234. package/dist/test/calendar/optimise.examples.js +75 -0
  235. package/dist/test/calendar/optimise.examples.js.map +1 -0
  236. package/dist/test/examples-package.d.ts +46 -10
  237. package/dist/test/examples-package.d.ts.map +1 -1
  238. package/dist/test/examples-package.js +142 -32
  239. package/dist/test/examples-package.js.map +1 -1
  240. package/dist/test/flowchart/flowchart.examples.d.ts +10 -30
  241. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  242. package/dist/test/plan/optimise.examples.d.ts +207 -0
  243. package/dist/test/plan/optimise.examples.d.ts.map +1 -0
  244. package/dist/test/plan/optimise.examples.js +98 -0
  245. package/dist/test/plan/optimise.examples.js.map +1 -0
  246. package/dist/test/plan/plan-events.examples.d.ts +8 -24
  247. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  248. package/dist/test/plan/plan-events.examples.js +3 -3
  249. package/dist/test/plan/plan-events.examples.js.map +1 -1
  250. package/dist/test/plan/plan-records.examples.d.ts +200 -19
  251. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  252. package/dist/test/plan/plan-records.examples.js +125 -28
  253. package/dist/test/plan/plan-records.examples.js.map +1 -1
  254. package/dist/test/plan/plan-windows.examples.d.ts +853 -36
  255. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
  256. package/dist/test/plan/plan-windows.examples.js +166 -29
  257. package/dist/test/plan/plan-windows.examples.js.map +1 -1
  258. package/dist/test/plan/plan.examples.d.ts +7 -21
  259. package/dist/test/plan/plan.examples.d.ts.map +1 -1
  260. package/dist/test/plan/plan.examples.js +11 -9
  261. package/dist/test/plan/plan.examples.js.map +1 -1
  262. package/dist/test/roster/domain.examples.d.ts +804 -0
  263. package/dist/test/roster/domain.examples.d.ts.map +1 -1
  264. package/dist/test/roster/domain.examples.js +3 -3
  265. package/dist/test/roster/domain.examples.js.map +1 -1
  266. package/dist/test/roster/optimise.examples.d.ts +485 -0
  267. package/dist/test/roster/optimise.examples.d.ts.map +1 -0
  268. package/dist/test/roster/optimise.examples.js +155 -0
  269. package/dist/test/roster/optimise.examples.js.map +1 -0
  270. package/dist/test/roster/roster-records.examples.d.ts +6 -18
  271. package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
  272. package/dist/test/roster/roster-records.examples.js +1 -1
  273. package/dist/test/roster/roster-records.examples.js.map +1 -1
  274. package/dist/test/roster/roster.examples.d.ts +3391 -21
  275. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  276. package/dist/test/roster/roster.examples.js +54 -7
  277. package/dist/test/roster/roster.examples.js.map +1 -1
  278. package/dist/test/roster/warehouse.d.ts +150 -7
  279. package/dist/test/roster/warehouse.d.ts.map +1 -1
  280. package/dist/test/roster/warehouse.js +36 -11
  281. package/dist/test/roster/warehouse.js.map +1 -1
  282. package/dist/test/schedule/schedule.examples.d.ts +1 -3
  283. package/dist/test/schedule/schedule.examples.d.ts.map +1 -1
  284. package/dist/test/schematic/schematic-records.examples.d.ts +444 -0
  285. package/dist/test/schematic/schematic-records.examples.d.ts.map +1 -0
  286. package/dist/test/schematic/schematic-records.examples.js +205 -0
  287. package/dist/test/schematic/schematic-records.examples.js.map +1 -0
  288. package/dist/test/schematic/schematic.examples.d.ts +2289 -0
  289. package/dist/test/schematic/schematic.examples.d.ts.map +1 -0
  290. package/dist/test/schematic/schematic.examples.js +453 -0
  291. package/dist/test/schematic/schematic.examples.js.map +1 -0
  292. package/dist/test/sheet/optimise.examples.d.ts +177 -0
  293. package/dist/test/sheet/optimise.examples.d.ts.map +1 -0
  294. package/dist/test/sheet/optimise.examples.js +75 -0
  295. package/dist/test/sheet/optimise.examples.js.map +1 -0
  296. package/dist/test/sheet/sheet-records.examples.d.ts +95 -204
  297. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
  298. package/dist/test/sheet/sheet-records.examples.js +42 -17
  299. package/dist/test/sheet/sheet-records.examples.js.map +1 -1
  300. package/dist/test/sheet/sheet.examples.d.ts +17 -33
  301. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  302. package/dist/test/sheet/sheet.examples.js +18 -15
  303. package/dist/test/sheet/sheet.examples.js.map +1 -1
  304. package/package.json +11 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/schematic/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
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
+ * A Schematic kind's reads (#1386, `Schematic Builder Spec.md` §10.4): its
7
+ * record read whole, or its narrowing read complete through its source of the
8
+ * Schematic's `Slice.bindRecords` — the record slice's `PagedScan`, over
9
+ * `recordSliceReadPlatform` — each answering `none` while a read is in flight.
10
+ * Reading by area — a viewport's window from an area index alone, and the
11
+ * density at overview (§10.4, #1393) — is the renderer's reader's, which reads
12
+ * a window by its cells as the Plan's events are read (D41): what this module
13
+ * gives it is which index and which searches a window reads
14
+ * ({@link schematicAreaIndexes}, {@link schematicWindowPlan}), the agreement
15
+ * of an area index's box with the kind's roles (SC34), and the density's
16
+ * raster ({@link schematicRaster}); the kind's `rowsOf` makes the rows it
17
+ * reads its stored rows.
18
+ *
19
+ * Through its source a kind reads what its narrowing holds and nothing else:
20
+ * the source's choices, each as the rail holds it. Under `narrowed="dim"` it
21
+ * reads every row through its source instead, and never the narrowing, so a
22
+ * choice reads none of its rows again: the renderer draws the rows the
23
+ * narrowing leaves out as context, from the source's shown keys (§10.3,
24
+ * #1392). An entry's row is its `row` — the source joins it — or its `value`,
25
+ * for an index that carries the whole row (D29).
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ import { DictType, OptionType, StringType, type EastType, type ExprType, type FunctionType, type StructType, type ValueTypeOf } from "@elaraai/east";
30
+ import { RecordSliceWhereType, type AreaCell, type AreaWindow, type RecordSliceChoiceType, type RecordSliceIndexType } from "@elaraai/east-ui/internal";
31
+ import type { SchematicBoxFieldsType } from "./types.js";
32
+ /**
33
+ * A kind's source of the Schematic's slice, as the payload hands it to the
34
+ * kind: the source's typed record Slice handle, `Slice.bindRecords`' part
35
+ * named after the kind's slot, bound once in the payload's block
36
+ * (`recordSources(…).bind($)`, #1356). A kind's read reads its members inside
37
+ * its function, so it holds this one source, never the whole slice.
38
+ */
39
+ export type SchematicKindPart = ExprType<StructType>;
40
+ /** A kind's rows, by key: what a read of it gives; `none` while it is in flight. */
41
+ type RowsRead = ExprType<FunctionType<[], OptionType<DictType<StringType, EastType>>>>;
42
+ /**
43
+ * A kind's record read whole: its binding's `read()` — `Record.bind`'s or
44
+ * `Data.bind`'s — by key.
45
+ *
46
+ * @param handle - The record's binding
47
+ * @param rowType - Its row type
48
+ * @returns `()` → the record's rows, by key
49
+ */
50
+ export declare function schematicWholeRows(handle: ExprType<EastType>, rowType: StructType): RowsRead;
51
+ /**
52
+ * A kind's narrowing read complete through its source of the slice (see the
53
+ * module docs).
54
+ *
55
+ * @param part - The kind's source of the slice, bound in the payload
56
+ * @param slot - The kind's slot, which names the source
57
+ * @param rowType - The kind's record's row type
58
+ * @param where - The kind, as a refusal names it
59
+ * @param every - Whether it reads every row, the narrowing read nowhere: under `narrowed="dim"`, what the narrowing
60
+ * leaves out draws as context
61
+ * @returns `()` → the rows the narrowing holds — or every row — by key; `none` while a search or a page is in flight
62
+ * @throws {Error} When the source narrows another record, or reads neither its rows nor an index carrying them
63
+ */
64
+ export declare function schematicSourceRows(part: SchematicKindPart, slot: string, rowType: StructType, where: string, every?: boolean): RowsRead;
65
+ /** One index a record Slice's binding lists, decoded. */
66
+ type Index = ValueTypeOf<typeof RecordSliceIndexType>;
67
+ /** A record Slice's narrowing, decoded. */
68
+ type Where = ReadonlyMap<string, ValueTypeOf<typeof RecordSliceChoiceType>>;
69
+ /** The fields a kind's box is, decoded. */
70
+ type BoxFields = ValueTypeOf<typeof SchematicBoxFieldsType>;
71
+ /**
72
+ * Past this many rows in view, the canvas draws the density in place of items
73
+ * (D25): by the counts its window's searches answer — each cell's rows held
74
+ * evenly over it, the view's share of them — and, past those, by the
75
+ * density's own count of the view, which its footer says.
76
+ */
77
+ export declare const SCHEMATIC_WINDOW_ROWS = 5000;
78
+ /**
79
+ * The most rows a window's searches hold for its rows to be read (D25): its
80
+ * view's, its margin's and its cells' reach past them, which hold some twice a
81
+ * view's rows over an even floor — four views' worth. Past this, the window
82
+ * draws its density whatever its view holds, and a zoom in plans one that
83
+ * holds fewer.
84
+ */
85
+ export declare const SCHEMATIC_WINDOW_READ_ROWS = 20000;
86
+ /** A kind's area indexes (§10.4, D20): the one led by no field, and those led by fields beside it. */
87
+ export interface SchematicAreaIndexes {
88
+ /** The area index led by no field: what reads the window whatever the rail chooses. */
89
+ readonly unled: Index;
90
+ /** The area indexes led by fields, in the order the source lists them: each reads a choice of its fields and the window in one. */
91
+ readonly led: readonly Index[];
92
+ }
93
+ /**
94
+ * The area indexes a kind is read by (§10.4, §11.4, SC34): those its source of
95
+ * the slice lists, each held to the kind's roles — the same `x`, `y`, `width`
96
+ * and `height` fields, at the centre for an item kind and the corner for a
97
+ * zone kind — one led by no field among them.
98
+ *
99
+ * @param indexes - The indexes the kind's source lists (its config's)
100
+ * @param box - The fields the kind's box is (its kind's `box`)
101
+ * @param sort - The kind's sort: items are placed by their centre, zones by their corner
102
+ * @param where - The kind, as a refusal names it
103
+ * @returns Its area indexes; `undefined` for a source that lists none, through which the kind reads its narrowing complete
104
+ * @throws {Error} When an area index's box isn't the kind's roles, naming both; when none is led by no field, naming the
105
+ * index to declare
106
+ */
107
+ export declare function schematicAreaIndexes(indexes: readonly Index[], box: BoxFields, sort: "items" | "zones", where: string): SchematicAreaIndexes | undefined;
108
+ /** Which area index a window reads, and how (§10.4, SC34). */
109
+ export interface SchematicWindowPlan {
110
+ /** The index read. */
111
+ readonly index: Index;
112
+ /** Its finest cell's side, a power of two. */
113
+ readonly cell: number;
114
+ /** The `.east` literals of its leading values, a combination each, a window's searches asked of each: `[[]]` for the unled index. */
115
+ readonly prefixes: readonly (readonly string[])[];
116
+ /** The narrowing's fields the index doesn't lead, which `within` asks of the window's rows; none where it serves the narrowing whole. */
117
+ readonly residual: readonly string[];
118
+ }
119
+ /**
120
+ * Which area index a window reads (§10.4, SC34): one whose `on` the rail's
121
+ * exact choices fill — each leading field a choice of values, one value for a
122
+ * Set field — while its searches across those choices stay within the record
123
+ * slice's bound on landed searches, the one leaving the fewest fields of the
124
+ * narrowing to `within` first; otherwise the one led by no field, the
125
+ * narrowing asked of the window's rows. The window is a read, never the
126
+ * rail's: it is never a choice, and never counted.
127
+ *
128
+ * @param areas - The kind's area indexes ({@link schematicAreaIndexes})
129
+ * @param where - The narrowing the window reads: the rail's, or none, to read every row
130
+ * @param box - The window's box, in world units: its searches grow it by the margin (`areaQueries`)
131
+ * @returns The index, its leading values and the fields left to `within`
132
+ */
133
+ export declare function schematicWindowPlan(areas: SchematicAreaIndexes, where: Where, box: AreaWindow): SchematicWindowPlan;
134
+ /** How a kind read by area reads its rows with no position: the narrowing a read takes, and the fields it leaves to `within`. */
135
+ export interface SchematicUnplacedPlan {
136
+ /** The index read. */
137
+ readonly index: Index;
138
+ /**
139
+ * The narrowing a read takes (`pageWhere`, `countWhere`): the narrowing's choices of the fields the index leads, and the
140
+ * unplaced clause under `__area`.
141
+ */
142
+ readonly where: ValueTypeOf<typeof RecordSliceWhereType>;
143
+ /** The narrowing's fields the index doesn't lead, which `within` asks of the rows read; none where it serves the narrowing whole. */
144
+ readonly residual: readonly string[];
145
+ }
146
+ /**
147
+ * How a kind read by area reads its rows with no position — its Backlog's
148
+ * (§8, §11.4, #1393): through the area index the window would read through
149
+ * ({@link schematicWindowPlan}'s rule, one search a combination of its leading
150
+ * values), the narrowing's choices of the fields it leads beside the unplaced
151
+ * clause; the narrowing's other fields left to `within`, asked of the rows
152
+ * read. The unplaced clause is offered only by an index whose `x` and `y` are
153
+ * Options, as a kind with a backlog boxes its rows.
154
+ *
155
+ * @param areas - The kind's area indexes ({@link schematicAreaIndexes})
156
+ * @param where - The narrowing: the rail's
157
+ * @returns The index, the narrowing a read takes and the fields left to `within`
158
+ */
159
+ export declare function schematicUnplacedPlan(areas: SchematicAreaIndexes, where: Where): SchematicUnplacedPlan;
160
+ /** A window's density raster (§10.4, D25): one level's cells, counted, a combination of the index's leading values at a time. */
161
+ export interface SchematicRaster {
162
+ /** Its level. */
163
+ readonly level: number;
164
+ /** Its cells' side, in world units. */
165
+ readonly side: number;
166
+ /** Each combination's cells, in the plan's order of its prefixes: through a led index, a raster per value. */
167
+ readonly cells: readonly (readonly AreaCell[])[];
168
+ /**
169
+ * The coarser levels' cells, every combination's: their rows are boxes larger than half a raster cell, counted by their
170
+ * keys, and read as rows while they are few.
171
+ */
172
+ readonly coarse: readonly AreaCell[];
173
+ }
174
+ /**
175
+ * A window's density raster (§10.4, D25): the counts of its area index's cells
176
+ * at the level whose cells are about a sixty-fourth of the box, each
177
+ * combination of its leading values a raster of its own, all of them in at
178
+ * most {@link MAX_AREA_RASTER} counted ranges, and the coarser levels' cells by
179
+ * exact key.
180
+ *
181
+ * @param plan - The window's plan ({@link schematicWindowPlan})
182
+ * @param box - The box the raster covers, in world units
183
+ * @returns The raster
184
+ */
185
+ export declare function schematicRaster(plan: SchematicWindowPlan, box: AreaWindow): SchematicRaster;
186
+ /** One cell of a window's density raster that holds rows (D25): its corner, in world units, and how many rows it holds. */
187
+ export interface SchematicDensityCell {
188
+ /** Its left edge. */
189
+ readonly minX: number;
190
+ /** Its top edge. */
191
+ readonly minY: number;
192
+ /** How many rows' centres it holds — some of them a coarser cell's rows' share, spread over it. */
193
+ readonly count: number;
194
+ }
195
+ /**
196
+ * A window's density raster's cells that hold rows (§10.4, D25): each cell's
197
+ * count, every combination's raster added up cell by cell — they are all at one
198
+ * level, over one box — and, given the coarser levels' counts where their rows
199
+ * are too many to read, each coarser cell's rows spread evenly over the raster
200
+ * cells it covers: a row's centre lies anywhere in the cell it is filed in. A
201
+ * cell holds rows while it holds at least half of one.
202
+ *
203
+ * @param raster - The raster ({@link schematicRaster})
204
+ * @param counts - Each of its cells' count, every combination's cells in turn, as `raster.cells` lists them
205
+ * @param spread - Each of its coarser cells' count, as `raster.coarse` lists them, to spread over it; `undefined` while
206
+ * their rows are read as rows
207
+ * @returns The cells that hold rows, row by row
208
+ * @throws {Error} When the counts are not one a cell
209
+ */
210
+ export declare function schematicDensityCells(raster: SchematicRaster, counts: readonly bigint[], spread?: readonly bigint[]): SchematicDensityCell[];
211
+ export {};
212
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/schematic/window.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,337 @@
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
+ * A Schematic kind's reads (#1386, `Schematic Builder Spec.md` §10.4): its
7
+ * record read whole, or its narrowing read complete through its source of the
8
+ * Schematic's `Slice.bindRecords` — the record slice's `PagedScan`, over
9
+ * `recordSliceReadPlatform` — each answering `none` while a read is in flight.
10
+ * Reading by area — a viewport's window from an area index alone, and the
11
+ * density at overview (§10.4, #1393) — is the renderer's reader's, which reads
12
+ * a window by its cells as the Plan's events are read (D41): what this module
13
+ * gives it is which index and which searches a window reads
14
+ * ({@link schematicAreaIndexes}, {@link schematicWindowPlan}), the agreement
15
+ * of an area index's box with the kind's roles (SC34), and the density's
16
+ * raster ({@link schematicRaster}); the kind's `rowsOf` makes the rows it
17
+ * reads its stored rows.
18
+ *
19
+ * Through its source a kind reads what its narrowing holds and nothing else:
20
+ * the source's choices, each as the rail holds it. Under `narrowed="dim"` it
21
+ * reads every row through its source instead, and never the narrowing, so a
22
+ * choice reads none of its rows again: the renderer draws the rows the
23
+ * narrowing leaves out as context, from the source's shown keys (§10.3,
24
+ * #1392). An entry's row is its `row` — the source joins it — or its `value`,
25
+ * for an index that carries the whole row (D29).
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ import { BooleanType, DictType, East, Expr, IntegerType, OptionType, SortedMap, StringType, compareFor, equalFor, isSubtype, isTypeEqual, none, some, variant, } from "@elaraai/east";
30
+ import { AREA_FIELD, AREA_UNPLACED, MAX_AREA_RASTER, MAX_LANDED_SEARCHES, MAX_RECORD_SLICE_RUNS, RecordSliceBindType, RecordSliceConfigType, RecordSliceStateType, RecordSliceWhereType, areaQueries, areaRaster, recordSliceReadPlatform, } from "@elaraai/east-ui/internal";
31
+ import { optionOf } from "../schedule/window.js";
32
+ /**
33
+ * A kind's record read whole: its binding's `read()` — `Record.bind`'s or
34
+ * `Data.bind`'s — by key.
35
+ *
36
+ * @param handle - The record's binding
37
+ * @param rowType - Its row type
38
+ * @returns `()` → the record's rows, by key
39
+ */
40
+ export function schematicWholeRows(handle, rowType) {
41
+ const Held = DictType(StringType, rowType);
42
+ const read = handle.read;
43
+ return East.function([], OptionType(Held), (_$) => East.value(some(read()), OptionType(Held)));
44
+ }
45
+ /**
46
+ * A kind's narrowing read complete through its source of the slice (see the
47
+ * module docs).
48
+ *
49
+ * @param part - The kind's source of the slice, bound in the payload
50
+ * @param slot - The kind's slot, which names the source
51
+ * @param rowType - The kind's record's row type
52
+ * @param where - The kind, as a refusal names it
53
+ * @param every - Whether it reads every row, the narrowing read nowhere: under `narrowed="dim"`, what the narrowing
54
+ * leaves out draws as context
55
+ * @returns `()` → the rows the narrowing holds — or every row — by key; `none` while a search or a page is in flight
56
+ * @throws {Error} When the source narrows another record, or reads neither its rows nor an index carrying them
57
+ */
58
+ export function schematicSourceRows(part, slot, rowType, where, every = false) {
59
+ const type = Expr.type(part);
60
+ const fields = type.type === "Struct" ? type.fields : {};
61
+ const data = fields["data"];
62
+ const page = fields["pageWhere"];
63
+ const output = page?.type === "Function" ? page.output : undefined;
64
+ const collection = output === undefined ? undefined : optionOf(output);
65
+ const entry = collection?.type === "Array" ? collection.value : undefined;
66
+ const entryFields = entry?.type === "Struct" ? entry.fields : undefined;
67
+ const keyed = entryFields?.["key"] !== undefined && isTypeEqual(entryFields["key"], StringType);
68
+ // An entry's row: its `row`, which a joined read fills, or its `value`, when the index carries the whole row (D29).
69
+ const joined = entryFields?.["row"] !== undefined && isTypeEqual(entryFields["row"], OptionType(rowType));
70
+ const carried = entryFields?.["value"] !== undefined && isTypeEqual(entryFields["value"], rowType);
71
+ const pages = page?.type === "Function" && page.inputs.length === 3 && isTypeEqual(page.inputs[0], RecordSliceWhereType)
72
+ && isTypeEqual(page.inputs[1], IntegerType) && isTypeEqual(page.inputs[2], IntegerType);
73
+ const identified = data?.type === "Struct" && data.fields["id"] !== undefined && isTypeEqual(data.fields["id"], StringType)
74
+ && data.fields["revision"] !== undefined && data.fields["revision"].type === "Function";
75
+ const sliced = Object.entries(RecordSliceBindType.fields).every(([name, expected]) => fields[name] !== undefined && isSubtype(fields[name], expected));
76
+ if (!pages || !keyed || !(joined || carried) || !identified || !sliced) {
77
+ throw new Error(`${where}: the slice's source "${slot}" narrows another record — name it after this kind's slot, over the kind's own record: ` +
78
+ `Data.bindPaged(record, { indexes }), its rows joined or carried by its indexes`);
79
+ }
80
+ const Held = DictType(StringType, rowType);
81
+ const Entries = collection;
82
+ const noRows = `${where}: the slice's source "${slot}" reads no rows — bind it with Data.bindPaged(record, { indexes, join: true })`;
83
+ return East.function([], OptionType(Held), ($) => {
84
+ // The source as the payload bound it, its members read here: the read captures the source alone.
85
+ const source = $.const(part);
86
+ const countWhere = $.const(source.countWhere);
87
+ const pageWhere = $.const(source.pageWhere);
88
+ const id = $.const(source.data.id);
89
+ const revision = $.const(source.data.revision);
90
+ // The narrowing the read takes: none under `dim` — every row, the source's state read nowhere, so a choice reads
91
+ // nothing again and the renderer dims what it leaves out (§10.3) — else the rail's, each of the source's choices.
92
+ let taken;
93
+ if (every) {
94
+ taken = $.const(new Map(), RecordSliceWhereType);
95
+ }
96
+ else {
97
+ const read = $.const(source.read);
98
+ const state = $.const(read());
99
+ taken = $.const(state.where);
100
+ }
101
+ const result = $.let(none, OptionType(Held));
102
+ $.match(recordSliceReadPlatform([Entries], id, revision, countWhere, pageWhere, taken), {
103
+ some: ($2, entries) => {
104
+ const held = $2.let(new Map(), Held);
105
+ $2.for(entries, ($3, e) => {
106
+ if (joined) {
107
+ $3.match(e.row, {
108
+ some: ($4, row) => { $4(held.insert(e.key, row)); },
109
+ none: ($4) => {
110
+ if (carried)
111
+ $4(held.insert(e.key, e.value));
112
+ else
113
+ $4.error(noRows);
114
+ },
115
+ });
116
+ }
117
+ else {
118
+ $3(held.insert(e.key, e.value));
119
+ }
120
+ });
121
+ $2.assign(result, some(held));
122
+ },
123
+ });
124
+ return result;
125
+ });
126
+ }
127
+ /**
128
+ * Past this many rows in view, the canvas draws the density in place of items
129
+ * (D25): by the counts its window's searches answer — each cell's rows held
130
+ * evenly over it, the view's share of them — and, past those, by the
131
+ * density's own count of the view, which its footer says.
132
+ */
133
+ export const SCHEMATIC_WINDOW_ROWS = 5_000;
134
+ /**
135
+ * The most rows a window's searches hold for its rows to be read (D25): its
136
+ * view's, its margin's and its cells' reach past them, which hold some twice a
137
+ * view's rows over an even floor — four views' worth. Past this, the window
138
+ * draws its density whatever its view holds, and a zoom in plans one that
139
+ * holds fewer.
140
+ */
141
+ export const SCHEMATIC_WINDOW_READ_ROWS = 20_000;
142
+ const stringEqual = equalFor(StringType);
143
+ const compareString = compareFor(StringType);
144
+ const sideEqual = equalFor(OptionType(StringType));
145
+ const booleanEqual = equalFor(BooleanType);
146
+ /** A box's fields and where it is placed, as a refusal names them. */
147
+ function boxText(box, centre) {
148
+ const sides = box.width.type === "some" && box.height.type === "some" ? `, width: "${box.width.value}", height: "${box.height.value}"` : "";
149
+ return `x: "${box.x}", y: "${box.y}"${sides}, at: "${centre ? "centre" : "corner"}"`;
150
+ }
151
+ /**
152
+ * The area indexes a kind is read by (§10.4, §11.4, SC34): those its source of
153
+ * the slice lists, each held to the kind's roles — the same `x`, `y`, `width`
154
+ * and `height` fields, at the centre for an item kind and the corner for a
155
+ * zone kind — one led by no field among them.
156
+ *
157
+ * @param indexes - The indexes the kind's source lists (its config's)
158
+ * @param box - The fields the kind's box is (its kind's `box`)
159
+ * @param sort - The kind's sort: items are placed by their centre, zones by their corner
160
+ * @param where - The kind, as a refusal names it
161
+ * @returns Its area indexes; `undefined` for a source that lists none, through which the kind reads its narrowing complete
162
+ * @throws {Error} When an area index's box isn't the kind's roles, naming both; when none is led by no field, naming the
163
+ * index to declare
164
+ */
165
+ export function schematicAreaIndexes(indexes, box, sort, where) {
166
+ const areas = indexes.filter((index) => index.area.type === "some");
167
+ if (areas.length === 0)
168
+ return undefined;
169
+ const centre = sort === "items";
170
+ for (const index of areas) {
171
+ if (index.area.type !== "some")
172
+ continue;
173
+ const area = index.area.value;
174
+ if (!stringEqual(area.x, box.x) || !stringEqual(area.y, box.y) || !sideEqual(area.width, box.width) || !sideEqual(area.height, box.height)
175
+ || !booleanEqual(area.centre, centre)) {
176
+ throw new Error(`${where}: the area index '${index.name}' boxes each row by { ${boxText(area, area.centre)} }, and the kind's roles place it by ` +
177
+ `{ ${boxText(box, centre)} } — an area index the kind is read by boxes each row as its roles place it: declare it ` +
178
+ `e3.recordIndex.area(name, record, { ${boxText(box, centre)}, cell })`);
179
+ }
180
+ }
181
+ const unled = areas.find((index) => index.fields.length === 1);
182
+ if (unled === undefined) {
183
+ const named = areas.map((index) => `'${index.name}'`).join(", ");
184
+ throw new Error(`${where}: a kind read by area reads its window through an area index led by no field, whatever the rail chooses, and ` +
185
+ `${named} ${areas.length === 1 ? "is" : "are"} led by fields — declare e3.recordIndex.area(name, record, { ${boxText(box, centre)}, cell }) ` +
186
+ "beside it, and list it in Data.bindPaged's indexes");
187
+ }
188
+ return { unled, led: areas.filter((index) => index.fields.length > 1) };
189
+ }
190
+ /**
191
+ * Which area index a window reads (§10.4, SC34): one whose `on` the rail's
192
+ * exact choices fill — each leading field a choice of values, one value for a
193
+ * Set field — while its searches across those choices stay within the record
194
+ * slice's bound on landed searches, the one leaving the fewest fields of the
195
+ * narrowing to `within` first; otherwise the one led by no field, the
196
+ * narrowing asked of the window's rows. The window is a read, never the
197
+ * rail's: it is never a choice, and never counted.
198
+ *
199
+ * @param areas - The kind's area indexes ({@link schematicAreaIndexes})
200
+ * @param where - The narrowing the window reads: the rail's, or none, to read every row
201
+ * @param box - The window's box, in world units: its searches grow it by the margin (`areaQueries`)
202
+ * @returns The index, its leading values and the fields left to `within`
203
+ */
204
+ export function schematicWindowPlan(areas, where, box) {
205
+ return areaPlan(areas, where, (index) => areaQueries([], box, cellOf(index)).length);
206
+ }
207
+ /** An area index's finest cell's side. */
208
+ function cellOf(index) {
209
+ return index.area.type === "some" ? index.area.value.cell : 1;
210
+ }
211
+ /**
212
+ * Which area index a read by area reads through (§10.4, SC34): one whose `on`
213
+ * the narrowing's exact choices fill — each leading field a choice of values,
214
+ * one value for a Set field — while the read's searches across those choices
215
+ * stay within the record slice's bound on landed searches, the one leaving the
216
+ * fewest fields of the narrowing to `within` first; otherwise the one led by
217
+ * no field.
218
+ *
219
+ * @param areas - The kind's area indexes
220
+ * @param where - The narrowing the read takes
221
+ * @param searches - How many searches the read asks of each combination of an index's leading values
222
+ * @returns The index, its leading values and the fields left to `within`
223
+ */
224
+ function areaPlan(areas, where, searches) {
225
+ let best;
226
+ for (const index of areas.led) {
227
+ const leading = index.fields.slice(0, -1);
228
+ let prefixes = [[]];
229
+ let fills = true;
230
+ for (const field of leading) {
231
+ const choice = where.get(field);
232
+ const values = choice?.type === "values" ? [...new Set(choice.value)] : [];
233
+ if (values.length === 0 || (index.sets.has(field) && values.length !== 1) || prefixes.length * values.length > MAX_RECORD_SLICE_RUNS) {
234
+ fills = false;
235
+ break;
236
+ }
237
+ prefixes = prefixes.flatMap((prefix) => values.map((value) => [...prefix, value]));
238
+ }
239
+ if (!fills || prefixes.length * searches(index) > MAX_LANDED_SEARCHES)
240
+ continue;
241
+ const residual = [...where.keys()].filter((field) => !leading.some((led) => stringEqual(led, field)));
242
+ if (best === undefined || residual.length < best.residual.length)
243
+ best = { index, cell: cellOf(index), prefixes, residual };
244
+ }
245
+ return best ?? { index: areas.unled, cell: cellOf(areas.unled), prefixes: [[]], residual: [...where.keys()] };
246
+ }
247
+ /**
248
+ * How a kind read by area reads its rows with no position — its Backlog's
249
+ * (§8, §11.4, #1393): through the area index the window would read through
250
+ * ({@link schematicWindowPlan}'s rule, one search a combination of its leading
251
+ * values), the narrowing's choices of the fields it leads beside the unplaced
252
+ * clause; the narrowing's other fields left to `within`, asked of the rows
253
+ * read. The unplaced clause is offered only by an index whose `x` and `y` are
254
+ * Options, as a kind with a backlog boxes its rows.
255
+ *
256
+ * @param areas - The kind's area indexes ({@link schematicAreaIndexes})
257
+ * @param where - The narrowing: the rail's
258
+ * @returns The index, the narrowing a read takes and the fields left to `within`
259
+ */
260
+ export function schematicUnplacedPlan(areas, where) {
261
+ const plan = areaPlan(areas, where, () => 1);
262
+ const led = plan.index.fields.slice(0, -1);
263
+ const taken = new SortedMap([], compareString);
264
+ for (const [field, choice] of where)
265
+ if (led.some((name) => stringEqual(name, field)))
266
+ taken.set(field, choice);
267
+ taken.set(AREA_FIELD, variant("values", [AREA_UNPLACED]));
268
+ return { index: plan.index, where: taken, residual: plan.residual };
269
+ }
270
+ /**
271
+ * A window's density raster (§10.4, D25): the counts of its area index's cells
272
+ * at the level whose cells are about a sixty-fourth of the box, each
273
+ * combination of its leading values a raster of its own, all of them in at
274
+ * most {@link MAX_AREA_RASTER} counted ranges, and the coarser levels' cells by
275
+ * exact key.
276
+ *
277
+ * @param plan - The window's plan ({@link schematicWindowPlan})
278
+ * @param box - The box the raster covers, in world units
279
+ * @returns The raster
280
+ */
281
+ export function schematicRaster(plan, box) {
282
+ const budget = Math.max(1, Math.floor(MAX_AREA_RASTER / plan.prefixes.length));
283
+ const rasters = plan.prefixes.map((prefix) => areaRaster(prefix, box, plan.cell, budget));
284
+ // The same box, cell and budget: every combination's raster is at one level.
285
+ const first = rasters[0];
286
+ return { level: first.level, side: first.side, cells: rasters.map((raster) => raster.cells), coarse: rasters.flatMap((raster) => raster.coarse) };
287
+ }
288
+ /**
289
+ * A window's density raster's cells that hold rows (§10.4, D25): each cell's
290
+ * count, every combination's raster added up cell by cell — they are all at one
291
+ * level, over one box — and, given the coarser levels' counts where their rows
292
+ * are too many to read, each coarser cell's rows spread evenly over the raster
293
+ * cells it covers: a row's centre lies anywhere in the cell it is filed in. A
294
+ * cell holds rows while it holds at least half of one.
295
+ *
296
+ * @param raster - The raster ({@link schematicRaster})
297
+ * @param counts - Each of its cells' count, every combination's cells in turn, as `raster.cells` lists them
298
+ * @param spread - Each of its coarser cells' count, as `raster.coarse` lists them, to spread over it; `undefined` while
299
+ * their rows are read as rows
300
+ * @returns The cells that hold rows, row by row
301
+ * @throws {Error} When the counts are not one a cell
302
+ */
303
+ export function schematicDensityCells(raster, counts, spread) {
304
+ const grid = raster.cells[0] ?? [];
305
+ const total = raster.cells.reduce((sum, cells) => sum + cells.length, 0);
306
+ if (counts.length !== total || (spread !== undefined && spread.length !== raster.coarse.length)) {
307
+ throw new Error(`A density raster of ${total} cells and ${raster.coarse.length} coarser ones was counted ${counts.length} and ${spread?.length ?? 0}`);
308
+ }
309
+ if (grid.length === 0)
310
+ return [];
311
+ // Every combination's raster is the same grid, row by row: a cell's place in it is its place in each.
312
+ const x0 = grid[0].ix, y0 = grid[0].iy, x1 = grid[grid.length - 1].ix, y1 = grid[grid.length - 1].iy;
313
+ const across = x1 - x0 + 1;
314
+ const held = new Float64Array(grid.length);
315
+ let at = 0;
316
+ for (const cells of raster.cells)
317
+ for (let i = 0; i < cells.length; i++)
318
+ held[i] = held[i] + Number(counts[at++]);
319
+ raster.coarse.forEach((cell, i) => {
320
+ const count = spread === undefined ? 0 : Number(spread[i]);
321
+ if (count === 0)
322
+ return;
323
+ // A cell `d` levels coarser covers 2^d raster cells a side: each holds its share of the cell's rows.
324
+ const span = 2 ** (raster.level - cell.level);
325
+ const share = count / (span * span);
326
+ const fromX = Math.max(x0, cell.ix * span), toX = Math.min(x1, (cell.ix + 1) * span - 1);
327
+ const fromY = Math.max(y0, cell.iy * span), toY = Math.min(y1, (cell.iy + 1) * span - 1);
328
+ for (let iy = fromY; iy <= toY; iy++) {
329
+ for (let ix = fromX; ix <= toX; ix++) {
330
+ const k = (iy - y0) * across + (ix - x0);
331
+ held[k] = held[k] + share;
332
+ }
333
+ }
334
+ });
335
+ return grid.flatMap((cell, i) => (held[i] >= 0.5 ? [{ minX: cell.minX, minY: cell.minY, count: held[i] }] : []));
336
+ }
337
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/schematic/window.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
5
  /** Typed author callbacks behind a closed renderer transport. @packageDocumentation */
6
- import { type ExprType } from "@elaraai/east";
6
+ import { FunctionType, StringType, type EastType, type ExprType } from "@elaraai/east";
7
7
  import { type ResolvedRowSource } from "@elaraai/east-ui/internal";
8
+ import { SheetRowType } from "./types.js";
8
9
  import { type SheetBridge } from "./bridge.js";
9
10
  import { SheetEditingType } from "./editing-types.js";
10
11
  import { type SheetEditsInput } from "./edits.js";
@@ -33,8 +34,9 @@ export interface SheetEditingInput {
33
34
  * @param bridge - The typed column bridge
34
35
  * @param idField - Positional entry identity field
35
36
  * @param input - Author editing behavior
37
+ * @param rowOf - The row projection the source draws its rows with: an entry and its id to its wire row (#1409)
36
38
  * @param driverColumn - The lookup field used to resolve a row readiness context
37
39
  * @returns The closed transaction transport stored in the root IR
38
40
  */
39
- export declare function buildSheetEditing(source: ResolvedRowSource, bridge: SheetBridge, idField: string | undefined, input: SheetEditingInput, driverColumn?: string): ExprType<typeof SheetEditingType>;
41
+ export declare function buildSheetEditing(source: ResolvedRowSource, bridge: SheetBridge, idField: string | undefined, input: SheetEditingInput, rowOf: ExprType<FunctionType<[EastType, StringType], typeof SheetRowType>>, driverColumn?: string): ExprType<typeof SheetEditingType>;
40
42
  //# sourceMappingURL=editing-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editing-bridge.d.ts","sourceRoot":"","sources":["../../../src/sheet/editing-bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uFAAuF;AACvF,OAAO,EAG2B,KAAK,QAAQ,EAC9C,MAAM,eAAe,CAAC;AACvB,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,mGAAmG;IACnG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CA0LjM"}
1
+ {"version":3,"file":"editing-bridge.d.ts","sourceRoot":"","sources":["../../../src/sheet/editing-bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uFAAuF;AACvF,OAAO,EACiD,YAAY,EAC1C,UAAU,EACjB,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAC9C,MAAM,eAAe,CAAC;AACvB,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,YAAY,EAA0C,MAAM,YAAY,CAAC;AAClF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,mGAAmG;IACnG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,iBAAiB,EACnI,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CA+LxI"}