@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,277 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * The Schematic (#1381): the 2D world-coordinate drawing of the app's own
7
+ * records, e3-ui's as the Plan, the Sheet and the Flowchart are.
8
+ * `<Schematic>` declares its kinds over the app's records — items, zones,
9
+ * links and nets, each record's fields mapped to the Schematic's roles — and
10
+ * returns its payload through the `Schematic` carrier, which
11
+ * e3-ui-components' renderer draws.
12
+ *
13
+ * - `types.ts` — the value types its accessors return, the references, boxes
14
+ * and the connect veto's candidate the Schematic speaks in, and the kinds'
15
+ * wire (`Schematic.Types.*`).
16
+ * - `kinds.ts` — `Schematic.items`, `zones`, `links`, `nets` and `details`:
17
+ * each role's check, the binding a kind's read takes, and the closed
18
+ * functions over beast2 bytes.
19
+ * - `templates.ts` — `Schematic.templates`, a kind's presets read from a
20
+ * record.
21
+ * - `layers.ts` — `Schematic.layers`, the layers read from the app's record.
22
+ * - `window.ts` — a kind's reads: whole, or complete through its source of
23
+ * the slice; and, read by area, which index and searches its window reads,
24
+ * the agreement of the index's box with its roles, and the density's raster.
25
+ * - `library.ts` — `Schematic.library`, the library pane's tabs, and their
26
+ * wire.
27
+ * - `shapes.ts` — the pattern, style and geometry helpers.
28
+ * - `payload.ts` — the payload, its carrier, the shared keys, the props and
29
+ * their refusals.
30
+ * - `schematic.ts` — the tag.
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ import { SchedulePatchTypeFor, schedulePatch } from "../schedule/patch.js";
35
+ import { schematicDetails, schematicItems, schematicLinks, schematicNets, schematicZones } from "./kinds.js";
36
+ import { schematicLayers } from "./layers.js";
37
+ import { SchematicLibraryTabType, type SchematicLibrary } from "./library.js";
38
+ import { SchematicComponent, SchematicPayloadType, createSchematicPayload } from "./payload.js";
39
+ import { type SchematicTagType } from "./schematic.js";
40
+ import { SchematicShapes } from "./shapes.js";
41
+ import { schematicTemplates } from "./templates.js";
42
+ import { SchematicBoxType, SchematicCandidateType, SchematicCardRolesType, SchematicDetailsEntryType, SchematicDetailsRolesType, SchematicKindDetailsType, SchematicEmphasisType, SchematicEndsType, SchematicGeometryType, SchematicItemEntryType, SchematicItemKindType, SchematicItemType, SchematicLayerType, SchematicLinkEntryType, SchematicLinkKindType, SchematicLinkStyleType, SchematicLinkType, SchematicMeterType, SchematicNarrowedType, SchematicNetEntryType, SchematicNetKindType, SchematicNetType, SchematicPointType, SchematicRefType, SchematicRouteType, SchematicSidesType, SchematicStatusCasesFor, SchematicStatusType, SchematicTemplateType, SchematicToneType, SchematicVertexType, SchematicZoneEntryType, SchematicZoneKindType, SchematicZonePatternType, SchematicZoneType } from "./types.js";
43
+ export { SchematicTag, type SchematicTagType } from "./schematic.js";
44
+ export { SCHEMATIC_DEF, isSchematicKind, schematicDetails, schematicItems, schematicLinks, schematicNets, schematicZones, type SchematicDetails, type SchematicDetailsConfig, type SchematicEnd, type SchematicEndField, type SchematicFloatField, type SchematicItems, type SchematicItemsConfig, type SchematicLinks, type SchematicLinksConfig, type SchematicMembersField, type SchematicNets, type SchematicNetsConfig, type SchematicPlaceField, type SchematicRecord, type SchematicSide, type SchematicStatusConfig, type SchematicStringField, type SchematicValuesOf, type SchematicViaField, type SchematicZones, type SchematicZonesConfig, } from "./kinds.js";
45
+ export { SCHEMATIC_TEMPLATES, checkedSchematicTemplates, isSchematicTemplates, schematicTemplates, type SchematicTemplates, type SchematicTemplatesConfig, } from "./templates.js";
46
+ export { SCHEMATIC_WINDOW_READ_ROWS, SCHEMATIC_WINDOW_ROWS, schematicAreaIndexes, schematicDensityCells, schematicRaster, schematicSourceRows, schematicUnplacedPlan, schematicWholeRows, schematicWindowPlan, type SchematicAreaIndexes, type SchematicDensityCell, type SchematicKindPart, type SchematicRaster, type SchematicUnplacedPlan, type SchematicWindowPlan, } from "./window.js";
47
+ export { isSchematicLayers, schematicLayers, type SchematicLayers, type SchematicLayersConfig } from "./layers.js";
48
+ export { SchematicLibraryCardType, SchematicLibraryFactories, SchematicLibraryTabType, buildSchematicLibrary, schematicTabSources, type SchematicLibrary, type SchematicLibraryContext, type SchematicLibraryKind, type SchematicLibraryTab, type SchematicLibraryTabConfig, } from "./library.js";
49
+ export { SchematicShapes, type SchematicPatternConfig, type SchematicPolylineConfig, type SchematicToneLiteral, type SchematicVertexInput, type SchematicVertices, } from "./shapes.js";
50
+ export { SchematicComponent, SchematicPayloadType, createSchematicPayload, schematicKeys, type SchematicNarrowedOptions, type SchematicProps, } from "./payload.js";
51
+ /** The East types a Schematic is written with — `Schematic.Types` (§4.7). */
52
+ export interface SchematicTypes {
53
+ /** Shape geometry, drawn about its entity's anchor: a footprint, a zone's shape ({@link SchematicGeometryType}). */
54
+ Geometry: typeof SchematicGeometryType;
55
+ /** A polyline's or a polygon's vertex: an offset from the anchor, and its bulge ({@link SchematicVertexType}). */
56
+ Vertex: typeof SchematicVertexType;
57
+ /** A point in world units: a link's waypoint ({@link SchematicPointType}). */
58
+ Point: typeof SchematicPointType;
59
+ /** A theme tone ({@link SchematicToneType}). */
60
+ Tone: typeof SchematicToneType;
61
+ /** A zone's pattern — outline or hatch ({@link SchematicZonePatternType}). */
62
+ ZonePattern: typeof SchematicZonePatternType;
63
+ /** A link's style — solid or dashed ({@link SchematicLinkStyleType}). */
64
+ LinkStyle: typeof SchematicLinkStyleType;
65
+ /** A link's routing — orthogonal or direct ({@link SchematicRouteType}). */
66
+ Route: typeof SchematicRouteType;
67
+ /** How one case of a status shows ({@link SchematicStatusType}). */
68
+ Status: typeof SchematicStatusType;
69
+ /** `StatusCases(V)` — a Status per case of a status variant ({@link SchematicStatusCasesFor}). */
70
+ StatusCases: typeof SchematicStatusCasesFor;
71
+ /** `Patch(R)` — a patch over a kind's row type, every field an `Option` ({@link SchedulePatchTypeFor}). */
72
+ Patch: typeof SchedulePatchTypeFor;
73
+ /** A card's bar ({@link SchematicMeterType}). */
74
+ Meter: typeof SchematicMeterType;
75
+ /** An entity, named by its kind's slot and its key ({@link SchematicRefType}). */
76
+ Ref: typeof SchematicRefType;
77
+ /** A box in world units ({@link SchematicBoxType}). */
78
+ Box: typeof SchematicBoxType;
79
+ /** A layer ({@link SchematicLayerType}). */
80
+ Layer: typeof SchematicLayerType;
81
+ /** The matches' emphasis — halo or pulse ({@link SchematicEmphasisType}). */
82
+ Emphasis: typeof SchematicEmphasisType;
83
+ /** What a Connect, a Retarget or an Extend would write, as `canConnect` hears it ({@link SchematicCandidateType}). */
84
+ Candidate: typeof SchematicCandidateType;
85
+ /** An item's roles, as its kind reads them from the app's row ({@link SchematicItemType}). */
86
+ Item: typeof SchematicItemType;
87
+ /** A zone's roles ({@link SchematicZoneType}). */
88
+ Zone: typeof SchematicZoneType;
89
+ /** A link's roles ({@link SchematicLinkType}). */
90
+ Link: typeof SchematicLinkType;
91
+ /** A net's roles ({@link SchematicNetType}). */
92
+ Net: typeof SchematicNetType;
93
+ }
94
+ /**
95
+ * The type of the {@link Schematic} namespace: `<Schematic>`, its kinds, its
96
+ * templates, its patches, its library's tabs, the pattern and geometry helpers
97
+ * and its East types.
98
+ */
99
+ export interface SchematicNamespace extends SchematicTagType {
100
+ /** One kind of placed item over the app's record ({@link schematicItems}). */
101
+ items: typeof schematicItems;
102
+ /** One kind of zone over the app's record ({@link schematicZones}). */
103
+ zones: typeof schematicZones;
104
+ /** One kind of link over the app's record ({@link schematicLinks}). */
105
+ links: typeof schematicLinks;
106
+ /** One kind of net over the app's record ({@link schematicNets}). */
107
+ nets: typeof schematicNets;
108
+ /** A kind's details: a record of the app's keyed as its kind is ({@link schematicDetails}). */
109
+ details: typeof schematicDetails;
110
+ /** A kind's templates, read from a record ({@link schematicTemplates}). */
111
+ templates: typeof schematicTemplates;
112
+ /** The layers, read from the app's record ({@link schematicLayers}). */
113
+ layers: typeof schematicLayers;
114
+ /** A patch over a kind's row type: what an author's card dropped on an entity sets ({@link schedulePatch}). */
115
+ patch: typeof schedulePatch;
116
+ /** The library pane's tabs, each a factory `library` lists ({@link SchematicLibrary}). */
117
+ library: SchematicLibrary;
118
+ /** An `outline` zone pattern — the dashed boundary with an eyebrow label. */
119
+ outline: typeof SchematicShapes.outline;
120
+ /** A `hatch` zone pattern — the hatched band. */
121
+ hatch: typeof SchematicShapes.hatch;
122
+ /** A `solid` link style — a physical run. */
123
+ solid: typeof SchematicShapes.solid;
124
+ /** A `dashed` link style — a routing or logical connection. */
125
+ dashed: typeof SchematicShapes.dashed;
126
+ /** A `rect` geometry — the entity's box itself. */
127
+ rect: typeof SchematicShapes.rect;
128
+ /** A `circle` geometry — centred on the entity's anchor. */
129
+ circle: typeof SchematicShapes.circle;
130
+ /** A `polyline` geometry — about the entity's anchor, optionally a band. */
131
+ polyline: typeof SchematicShapes.polyline;
132
+ /** A `polygon` geometry — about the entity's anchor. */
133
+ polygon: typeof SchematicShapes.polygon;
134
+ /** The East types a Schematic is written with ({@link SchematicTypes}). */
135
+ Types: SchematicTypes;
136
+ }
137
+ /**
138
+ * `<Schematic>` — the 2D world-coordinate drawing of the app's own records:
139
+ * placed items (racks, cooling units, power distribution units), zones (halls,
140
+ * cages, hot and cold aisles), links between two items (fibre runs) and nets
141
+ * joining many to many (a power distribution unit feeding a row of racks).
142
+ *
143
+ * @remarks
144
+ * - **Its kinds** are the app's records (§1): `items`, `zones`, `links` and
145
+ * `nets` each map a slot to a kind — `Schematic.items(record, { … })` and
146
+ * the rest — whose roles are the record's fields, named, or accessors over
147
+ * a row and its key. A role naming a missing field, or one of another type,
148
+ * is refused when the surface is built. A slot names the kind in the
149
+ * payload, and the source of the slice that narrows it.
150
+ * - **Editable or read only by its binding** (§1, rule 4): a kind bound with
151
+ * its patch door, `Record.bind(record, [e3.mutation.patch(record)])`, is
152
+ * editable; one bound `Data.bind(record)`, or `Data.bindPaged(record)` read
153
+ * through its source, is read only. `readOnly` makes every kind so.
154
+ * - **Its details** (`Schematic.details`): a record keyed as its kind is,
155
+ * whose status, bar, figure and second line the cards draw.
156
+ * - **Its narrowing** is one `Slice.bindRecords`: a source named after a
157
+ * kind's slot narrows that kind, read complete through it, and each other
158
+ * source the templates list or the author's tab that names it.
159
+ * - **Geometry is drawn about its entity's anchor** (D22): an item's centre,
160
+ * or a zone's box centre, so an outline moves with its item. A footprint
161
+ * or a zone's shape is an accessor building it from the row's own fields
162
+ * (`Schematic.circle`, `polygon`, …), so the app's record keeps its own
163
+ * types (D35).
164
+ * - **Its props are the Plan's, the Roster's and the Calendar's** (D31–D34,
165
+ * D36): `id`, an inspector you opt into, library tabs over every kind,
166
+ * `onSelect` hearing the whole selection, `canConnect` answering a candidate
167
+ * with the refusal's words, and layers read from the app's record
168
+ * (`Schematic.layers`).
169
+ * - **Refused when the surface is built**, each naming the form that
170
+ * replaces it: rows and their mappers, the callbacks for an edit,
171
+ * `linkMode`, the per-domain read-only switches, the hover cards, the
172
+ * slice's effect props, `sliceSelectField`, `selectionMode`, `navigator`,
173
+ * `height` and `maxHeight`, `onSelectZone`, `onSelectionChange`,
174
+ * `onZoneSelectionChange`, `onSelectLink`, `onViewportChange`, `onItemOpen`,
175
+ * `selectZoomFocus`, `name`, an `inspector` object and a `layers` list (§2).
176
+ *
177
+ * @example
178
+ * ```tsx
179
+ * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
180
+ * import { DictType, East, FloatType, StringType, StructType } from "@elaraai/east";
181
+ * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
182
+ * import { Data, Schematic } from "@elaraai/e3-ui";
183
+ * import e3 from "@elaraai/e3";
184
+ *
185
+ * export const FloorRack = StructType({ name: StringType, x: FloatType, y: FloatType, w: FloatType, h: FloatType, model: StringType, kw: FloatType, capacity: FloatType });
186
+ * export const schematicFloorRacks = e3.record("schematic_floor_racks", DictType(StringType, FloorRack), new Map([
187
+ * ["A01", { name: "A01", x: 2.4, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 5.2, capacity: 8.0 }],
188
+ * ["A02", { name: "A02", x: 6.0, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 7.4, capacity: 8.0 }],
189
+ * ["A03", { name: "A03", x: 9.6, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 3.9, capacity: 8.0 }],
190
+ * ["A04", { name: "A04", x: 13.2, y: 2.9, w: 3.2, h: 1.2, model: "48U · 12 kW", kw: 9.6, capacity: 12.0 }],
191
+ * ["B01", { name: "B01", x: 2.4, y: 8.6, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 6.1, capacity: 8.0 }],
192
+ * ["B02", { name: "B02", x: 6.0, y: 8.6, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 2.8, capacity: 8.0 }],
193
+ * ]));
194
+ *
195
+ * const schematicFloor = East.function([], UIComponentType, (_$) => (
196
+ * <Reactive>{$ => {
197
+ * const racks = $.let(Data.bind(schematicFloorRacks));
198
+ * return (
199
+ * <Box height="440px">
200
+ * <Schematic
201
+ * id="floor"
202
+ * extent={{ width: 18, height: 12 }}
203
+ * scaleUnit="m"
204
+ * items={{
205
+ * racks: Schematic.items(racks, {
206
+ * name: "Rack", icon: "server", x: "x", y: "y", width: "w", height: "h", label: "name",
207
+ * sublabel: (r) => r.model,
208
+ * meter: (r) => ({ value: r.kw, max: r.capacity }),
209
+ * }),
210
+ * }}
211
+ * />
212
+ * </Box>
213
+ * );
214
+ * }}</Reactive>
215
+ * ));
216
+ * ```
217
+ */
218
+ export declare const Schematic: SchematicNamespace;
219
+ /**
220
+ * The type of the internal Schematic namespace — the public one, the payload
221
+ * the tag returns through its carrier, the carrier the renderer registers
222
+ * against, and the payload's own East types.
223
+ */
224
+ export interface SchematicInternalNamespace extends SchematicNamespace {
225
+ /** Creates the Schematic's payload alone — what `<Schematic>` returns through the `Schematic` carrier ({@link createSchematicPayload}). */
226
+ Payload: typeof createSchematicPayload;
227
+ /** The `Schematic` carrier ({@link SchematicComponent}). */
228
+ Component: typeof SchematicComponent;
229
+ /** The East types a Schematic is written with, and its payload's. */
230
+ Types: SchematicTypes & {
231
+ /** The renderer's payload ({@link SchematicPayloadType}). */
232
+ Payload: typeof SchematicPayloadType;
233
+ /** An item kind, closed ({@link SchematicItemKindType}). */
234
+ ItemKind: typeof SchematicItemKindType;
235
+ /** A zone kind, closed ({@link SchematicZoneKindType}). */
236
+ ZoneKind: typeof SchematicZoneKindType;
237
+ /** A link kind, closed ({@link SchematicLinkKindType}). */
238
+ LinkKind: typeof SchematicLinkKindType;
239
+ /** A net kind, closed ({@link SchematicNetKindType}). */
240
+ NetKind: typeof SchematicNetKindType;
241
+ /** A kind's details, closed ({@link SchematicKindDetailsType}). */
242
+ Details: typeof SchematicKindDetailsType;
243
+ /** A details row's roles ({@link SchematicDetailsRolesType}). */
244
+ DetailsRoles: typeof SchematicDetailsRolesType;
245
+ /** Which of a card's roles its kind's details give ({@link SchematicCardRolesType}). */
246
+ CardRoles: typeof SchematicCardRolesType;
247
+ /** A stored item: its roles and its row's bytes ({@link SchematicItemEntryType}). */
248
+ ItemEntry: typeof SchematicItemEntryType;
249
+ /** A stored zone ({@link SchematicZoneEntryType}). */
250
+ ZoneEntry: typeof SchematicZoneEntryType;
251
+ /** A stored link ({@link SchematicLinkEntryType}). */
252
+ LinkEntry: typeof SchematicLinkEntryType;
253
+ /** A stored net ({@link SchematicNetEntryType}). */
254
+ NetEntry: typeof SchematicNetEntryType;
255
+ /** A stored details row ({@link SchematicDetailsEntryType}). */
256
+ DetailsEntry: typeof SchematicDetailsEntryType;
257
+ /** A link's ends, as a gesture writes them ({@link SchematicEndsType}). */
258
+ Ends: typeof SchematicEndsType;
259
+ /** A net's sides, as a gesture writes them ({@link SchematicSidesType}). */
260
+ Sides: typeof SchematicSidesType;
261
+ /** One template ({@link SchematicTemplateType}). */
262
+ Template: typeof SchematicTemplateType;
263
+ /** How a narrowed-out row draws ({@link SchematicNarrowedType}). */
264
+ Narrowed: typeof SchematicNarrowedType;
265
+ /** One tab of the library ({@link SchematicLibraryTabType}). */
266
+ LibraryTab: typeof SchematicLibraryTabType;
267
+ };
268
+ }
269
+ /**
270
+ * The internal Schematic namespace — `@elaraai/e3-ui/internal`'s `Schematic`:
271
+ * the public one, `Schematic.Payload`, the `Schematic` carrier and the
272
+ * payload's types, for the renderer and the tests.
273
+ *
274
+ * @internal
275
+ */
276
+ export declare const SchematicInternal: SchematicInternalNamespace;
277
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schematic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * The Schematic (#1381): the 2D world-coordinate drawing of the app's own
7
+ * records, e3-ui's as the Plan, the Sheet and the Flowchart are.
8
+ * `<Schematic>` declares its kinds over the app's records — items, zones,
9
+ * links and nets, each record's fields mapped to the Schematic's roles — and
10
+ * returns its payload through the `Schematic` carrier, which
11
+ * e3-ui-components' renderer draws.
12
+ *
13
+ * - `types.ts` — the value types its accessors return, the references, boxes
14
+ * and the connect veto's candidate the Schematic speaks in, and the kinds'
15
+ * wire (`Schematic.Types.*`).
16
+ * - `kinds.ts` — `Schematic.items`, `zones`, `links`, `nets` and `details`:
17
+ * each role's check, the binding a kind's read takes, and the closed
18
+ * functions over beast2 bytes.
19
+ * - `templates.ts` — `Schematic.templates`, a kind's presets read from a
20
+ * record.
21
+ * - `layers.ts` — `Schematic.layers`, the layers read from the app's record.
22
+ * - `window.ts` — a kind's reads: whole, or complete through its source of
23
+ * the slice; and, read by area, which index and searches its window reads,
24
+ * the agreement of the index's box with its roles, and the density's raster.
25
+ * - `library.ts` — `Schematic.library`, the library pane's tabs, and their
26
+ * wire.
27
+ * - `shapes.ts` — the pattern, style and geometry helpers.
28
+ * - `payload.ts` — the payload, its carrier, the shared keys, the props and
29
+ * their refusals.
30
+ * - `schematic.ts` — the tag.
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ import { SchedulePatchTypeFor, schedulePatch } from "../schedule/patch.js";
35
+ import { schematicDetails, schematicItems, schematicLinks, schematicNets, schematicZones } from "./kinds.js";
36
+ import { schematicLayers } from "./layers.js";
37
+ import { SchematicLibraryFactories, SchematicLibraryTabType } from "./library.js";
38
+ import { SchematicComponent, SchematicPayloadType, createSchematicPayload } from "./payload.js";
39
+ import { SchematicTag } from "./schematic.js";
40
+ import { SchematicShapes } from "./shapes.js";
41
+ import { schematicTemplates } from "./templates.js";
42
+ import { SchematicBoxType, SchematicCandidateType, SchematicCardRolesType, SchematicDetailsEntryType, SchematicDetailsRolesType, SchematicKindDetailsType, SchematicEmphasisType, SchematicEndsType, SchematicGeometryType, SchematicItemEntryType, SchematicItemKindType, SchematicItemType, SchematicLayerType, SchematicLinkEntryType, SchematicLinkKindType, SchematicLinkStyleType, SchematicLinkType, SchematicMeterType, SchematicNarrowedType, SchematicNetEntryType, SchematicNetKindType, SchematicNetType, SchematicPointType, SchematicRefType, SchematicRouteType, SchematicSidesType, SchematicStatusCasesFor, SchematicStatusType, SchematicTemplateType, SchematicToneType, SchematicVertexType, SchematicZoneEntryType, SchematicZoneKindType, SchematicZonePatternType, SchematicZoneType, } from "./types.js";
43
+ export { SchematicTag } from "./schematic.js";
44
+ export { SCHEMATIC_DEF, isSchematicKind, schematicDetails, schematicItems, schematicLinks, schematicNets, schematicZones, } from "./kinds.js";
45
+ export { SCHEMATIC_TEMPLATES, checkedSchematicTemplates, isSchematicTemplates, schematicTemplates, } from "./templates.js";
46
+ export { SCHEMATIC_WINDOW_READ_ROWS, SCHEMATIC_WINDOW_ROWS, schematicAreaIndexes, schematicDensityCells, schematicRaster, schematicSourceRows, schematicUnplacedPlan, schematicWholeRows, schematicWindowPlan, } from "./window.js";
47
+ export { isSchematicLayers, schematicLayers } from "./layers.js";
48
+ export { SchematicLibraryCardType, SchematicLibraryFactories, SchematicLibraryTabType, buildSchematicLibrary, schematicTabSources, } from "./library.js";
49
+ export { SchematicShapes, } from "./shapes.js";
50
+ export { SchematicComponent, SchematicPayloadType, createSchematicPayload, schematicKeys, } from "./payload.js";
51
+ /** The East types a Schematic is written with. */
52
+ const TYPES = {
53
+ Geometry: SchematicGeometryType,
54
+ Vertex: SchematicVertexType,
55
+ Point: SchematicPointType,
56
+ Tone: SchematicToneType,
57
+ ZonePattern: SchematicZonePatternType,
58
+ LinkStyle: SchematicLinkStyleType,
59
+ Route: SchematicRouteType,
60
+ Status: SchematicStatusType,
61
+ StatusCases: SchematicStatusCasesFor,
62
+ Patch: SchedulePatchTypeFor,
63
+ Meter: SchematicMeterType,
64
+ Ref: SchematicRefType,
65
+ Box: SchematicBoxType,
66
+ Layer: SchematicLayerType,
67
+ Emphasis: SchematicEmphasisType,
68
+ Candidate: SchematicCandidateType,
69
+ Item: SchematicItemType,
70
+ Zone: SchematicZoneType,
71
+ Link: SchematicLinkType,
72
+ Net: SchematicNetType,
73
+ };
74
+ /** The namespace's members — everything `Schematic` carries beside the tag itself. */
75
+ const MEMBERS = {
76
+ items: schematicItems,
77
+ zones: schematicZones,
78
+ links: schematicLinks,
79
+ nets: schematicNets,
80
+ details: schematicDetails,
81
+ templates: schematicTemplates,
82
+ layers: schematicLayers,
83
+ patch: schedulePatch,
84
+ library: SchematicLibraryFactories,
85
+ ...SchematicShapes,
86
+ Types: TYPES,
87
+ };
88
+ /**
89
+ * `<Schematic>` — the 2D world-coordinate drawing of the app's own records:
90
+ * placed items (racks, cooling units, power distribution units), zones (halls,
91
+ * cages, hot and cold aisles), links between two items (fibre runs) and nets
92
+ * joining many to many (a power distribution unit feeding a row of racks).
93
+ *
94
+ * @remarks
95
+ * - **Its kinds** are the app's records (§1): `items`, `zones`, `links` and
96
+ * `nets` each map a slot to a kind — `Schematic.items(record, { … })` and
97
+ * the rest — whose roles are the record's fields, named, or accessors over
98
+ * a row and its key. A role naming a missing field, or one of another type,
99
+ * is refused when the surface is built. A slot names the kind in the
100
+ * payload, and the source of the slice that narrows it.
101
+ * - **Editable or read only by its binding** (§1, rule 4): a kind bound with
102
+ * its patch door, `Record.bind(record, [e3.mutation.patch(record)])`, is
103
+ * editable; one bound `Data.bind(record)`, or `Data.bindPaged(record)` read
104
+ * through its source, is read only. `readOnly` makes every kind so.
105
+ * - **Its details** (`Schematic.details`): a record keyed as its kind is,
106
+ * whose status, bar, figure and second line the cards draw.
107
+ * - **Its narrowing** is one `Slice.bindRecords`: a source named after a
108
+ * kind's slot narrows that kind, read complete through it, and each other
109
+ * source the templates list or the author's tab that names it.
110
+ * - **Geometry is drawn about its entity's anchor** (D22): an item's centre,
111
+ * or a zone's box centre, so an outline moves with its item. A footprint
112
+ * or a zone's shape is an accessor building it from the row's own fields
113
+ * (`Schematic.circle`, `polygon`, …), so the app's record keeps its own
114
+ * types (D35).
115
+ * - **Its props are the Plan's, the Roster's and the Calendar's** (D31–D34,
116
+ * D36): `id`, an inspector you opt into, library tabs over every kind,
117
+ * `onSelect` hearing the whole selection, `canConnect` answering a candidate
118
+ * with the refusal's words, and layers read from the app's record
119
+ * (`Schematic.layers`).
120
+ * - **Refused when the surface is built**, each naming the form that
121
+ * replaces it: rows and their mappers, the callbacks for an edit,
122
+ * `linkMode`, the per-domain read-only switches, the hover cards, the
123
+ * slice's effect props, `sliceSelectField`, `selectionMode`, `navigator`,
124
+ * `height` and `maxHeight`, `onSelectZone`, `onSelectionChange`,
125
+ * `onZoneSelectionChange`, `onSelectLink`, `onViewportChange`, `onItemOpen`,
126
+ * `selectZoomFocus`, `name`, an `inspector` object and a `layers` list (§2).
127
+ *
128
+ * @example
129
+ * ```tsx
130
+ * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
131
+ * import { DictType, East, FloatType, StringType, StructType } from "@elaraai/east";
132
+ * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
133
+ * import { Data, Schematic } from "@elaraai/e3-ui";
134
+ * import e3 from "@elaraai/e3";
135
+ *
136
+ * export const FloorRack = StructType({ name: StringType, x: FloatType, y: FloatType, w: FloatType, h: FloatType, model: StringType, kw: FloatType, capacity: FloatType });
137
+ * export const schematicFloorRacks = e3.record("schematic_floor_racks", DictType(StringType, FloorRack), new Map([
138
+ * ["A01", { name: "A01", x: 2.4, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 5.2, capacity: 8.0 }],
139
+ * ["A02", { name: "A02", x: 6.0, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 7.4, capacity: 8.0 }],
140
+ * ["A03", { name: "A03", x: 9.6, y: 2.9, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 3.9, capacity: 8.0 }],
141
+ * ["A04", { name: "A04", x: 13.2, y: 2.9, w: 3.2, h: 1.2, model: "48U · 12 kW", kw: 9.6, capacity: 12.0 }],
142
+ * ["B01", { name: "B01", x: 2.4, y: 8.6, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 6.1, capacity: 8.0 }],
143
+ * ["B02", { name: "B02", x: 6.0, y: 8.6, w: 3.2, h: 1.2, model: "42U · 8 kW", kw: 2.8, capacity: 8.0 }],
144
+ * ]));
145
+ *
146
+ * const schematicFloor = East.function([], UIComponentType, (_$) => (
147
+ * <Reactive>{$ => {
148
+ * const racks = $.let(Data.bind(schematicFloorRacks));
149
+ * return (
150
+ * <Box height="440px">
151
+ * <Schematic
152
+ * id="floor"
153
+ * extent={{ width: 18, height: 12 }}
154
+ * scaleUnit="m"
155
+ * items={{
156
+ * racks: Schematic.items(racks, {
157
+ * name: "Rack", icon: "server", x: "x", y: "y", width: "w", height: "h", label: "name",
158
+ * sublabel: (r) => r.model,
159
+ * meter: (r) => ({ value: r.kw, max: r.capacity }),
160
+ * }),
161
+ * }}
162
+ * />
163
+ * </Box>
164
+ * );
165
+ * }}</Reactive>
166
+ * ));
167
+ * ```
168
+ */
169
+ export const Schematic = Object.assign(SchematicTag, MEMBERS);
170
+ /** `<Schematic>`, for the internal namespace: the tag, on an object of its own, so the public `Schematic` carries none of the internal members. */
171
+ function SchematicInternalTag(props) {
172
+ return SchematicTag(props);
173
+ }
174
+ /**
175
+ * The internal Schematic namespace — `@elaraai/e3-ui/internal`'s `Schematic`:
176
+ * the public one, `Schematic.Payload`, the `Schematic` carrier and the
177
+ * payload's types, for the renderer and the tests.
178
+ *
179
+ * @internal
180
+ */
181
+ export const SchematicInternal = Object.assign(SchematicInternalTag, MEMBERS, {
182
+ Payload: createSchematicPayload,
183
+ Component: SchematicComponent,
184
+ Types: {
185
+ ...TYPES,
186
+ Payload: SchematicPayloadType,
187
+ ItemKind: SchematicItemKindType,
188
+ ZoneKind: SchematicZoneKindType,
189
+ LinkKind: SchematicLinkKindType,
190
+ NetKind: SchematicNetKindType,
191
+ Details: SchematicKindDetailsType,
192
+ DetailsRoles: SchematicDetailsRolesType,
193
+ CardRoles: SchematicCardRolesType,
194
+ ItemEntry: SchematicItemEntryType,
195
+ ZoneEntry: SchematicZoneEntryType,
196
+ LinkEntry: SchematicLinkEntryType,
197
+ NetEntry: SchematicNetEntryType,
198
+ DetailsEntry: SchematicDetailsEntryType,
199
+ Ends: SchematicEndsType,
200
+ Sides: SchematicSidesType,
201
+ Template: SchematicTemplateType,
202
+ Narrowed: SchematicNarrowedType,
203
+ LibraryTab: SchematicLibraryTabType,
204
+ },
205
+ });
206
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schematic/index.ts"],"names":[],"mappings":"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"}