@elaraai/east-ui 1.0.28 → 1.0.29

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 (188) hide show
  1. package/README.md +3 -3
  2. package/dist/src/charts/chart/index.d.ts +102 -0
  3. package/dist/src/charts/chart/index.d.ts.map +1 -1
  4. package/dist/src/charts/chart/index.js +30 -11
  5. package/dist/src/charts/chart/index.js.map +1 -1
  6. package/dist/src/charts/spec/index.d.ts +204 -0
  7. package/dist/src/charts/spec/index.d.ts.map +1 -1
  8. package/dist/src/charts/spec/types.d.ts +3 -11
  9. package/dist/src/charts/spec/types.d.ts.map +1 -1
  10. package/dist/src/charts/spec/types.js +5 -20
  11. package/dist/src/charts/spec/types.js.map +1 -1
  12. package/dist/src/collections/blend/index.d.ts.map +1 -1
  13. package/dist/src/collections/blend/index.js +2 -1
  14. package/dist/src/collections/blend/index.js.map +1 -1
  15. package/dist/src/collections/board/index.d.ts +490 -0
  16. package/dist/src/collections/board/index.d.ts.map +1 -0
  17. package/dist/src/collections/board/index.js +282 -0
  18. package/dist/src/collections/board/index.js.map +1 -0
  19. package/dist/src/collections/board/types.d.ts +308 -0
  20. package/dist/src/collections/board/types.d.ts.map +1 -0
  21. package/dist/src/collections/board/types.js +156 -0
  22. package/dist/src/collections/board/types.js.map +1 -0
  23. package/dist/src/collections/calendar/index.d.ts.map +1 -1
  24. package/dist/src/collections/calendar/index.js +2 -1
  25. package/dist/src/collections/calendar/index.js.map +1 -1
  26. package/dist/src/collections/gantt/index.d.ts +1 -1
  27. package/dist/src/collections/gantt/index.d.ts.map +1 -1
  28. package/dist/src/collections/gantt/index.js +45 -52
  29. package/dist/src/collections/gantt/index.js.map +1 -1
  30. package/dist/src/collections/index.d.ts +1 -0
  31. package/dist/src/collections/index.d.ts.map +1 -1
  32. package/dist/src/collections/index.js +1 -0
  33. package/dist/src/collections/index.js.map +1 -1
  34. package/dist/src/collections/library/index.d.ts.map +1 -1
  35. package/dist/src/collections/library/index.js +2 -1
  36. package/dist/src/collections/library/index.js.map +1 -1
  37. package/dist/src/collections/map/index.d.ts.map +1 -1
  38. package/dist/src/collections/map/index.js +5 -4
  39. package/dist/src/collections/map/index.js.map +1 -1
  40. package/dist/src/collections/matrix/index.d.ts.map +1 -1
  41. package/dist/src/collections/matrix/index.js +2 -1
  42. package/dist/src/collections/matrix/index.js.map +1 -1
  43. package/dist/src/collections/planner/index.d.ts.map +1 -1
  44. package/dist/src/collections/planner/index.js +2 -1
  45. package/dist/src/collections/planner/index.js.map +1 -1
  46. package/dist/src/collections/roster/index.d.ts +3 -0
  47. package/dist/src/collections/roster/index.d.ts.map +1 -1
  48. package/dist/src/collections/roster/index.js +4 -2
  49. package/dist/src/collections/roster/index.js.map +1 -1
  50. package/dist/src/collections/roster/types.d.ts +3 -0
  51. package/dist/src/collections/roster/types.d.ts.map +1 -1
  52. package/dist/src/collections/roster/types.js +3 -0
  53. package/dist/src/collections/roster/types.js.map +1 -1
  54. package/dist/src/collections/schematic/index.d.ts +537 -709
  55. package/dist/src/collections/schematic/index.d.ts.map +1 -1
  56. package/dist/src/collections/schematic/index.js +289 -9
  57. package/dist/src/collections/schematic/index.js.map +1 -1
  58. package/dist/src/collections/schematic/types.d.ts +562 -841
  59. package/dist/src/collections/schematic/types.d.ts.map +1 -1
  60. package/dist/src/collections/schematic/types.js +416 -46
  61. package/dist/src/collections/schematic/types.js.map +1 -1
  62. package/dist/src/collections/table/index.d.ts +19 -11
  63. package/dist/src/collections/table/index.d.ts.map +1 -1
  64. package/dist/src/collections/table/index.js +65 -78
  65. package/dist/src/collections/table/index.js.map +1 -1
  66. package/dist/src/component.d.ts +1572 -63
  67. package/dist/src/component.d.ts.map +1 -1
  68. package/dist/src/component.js +55 -15
  69. package/dist/src/component.js.map +1 -1
  70. package/dist/src/contracts/format.d.ts +39 -0
  71. package/dist/src/contracts/format.d.ts.map +1 -0
  72. package/dist/src/contracts/format.js +38 -0
  73. package/dist/src/contracts/format.js.map +1 -0
  74. package/dist/src/contracts/index.d.ts +1 -0
  75. package/dist/src/contracts/index.d.ts.map +1 -1
  76. package/dist/src/contracts/index.js +1 -0
  77. package/dist/src/contracts/index.js.map +1 -1
  78. package/dist/src/contracts/slice-affordances.d.ts +13 -3
  79. package/dist/src/contracts/slice-affordances.d.ts.map +1 -1
  80. package/dist/src/contracts/slice-affordances.js +12 -2
  81. package/dist/src/contracts/slice-affordances.js.map +1 -1
  82. package/dist/src/index.d.ts +3 -2
  83. package/dist/src/index.d.ts.map +1 -1
  84. package/dist/src/index.js +3 -2
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/internal.d.ts +1 -1
  87. package/dist/src/internal.d.ts.map +1 -1
  88. package/dist/src/internal.js +1 -1
  89. package/dist/src/internal.js.map +1 -1
  90. package/dist/src/platform/slice/impl.d.ts +1 -0
  91. package/dist/src/platform/slice/impl.d.ts.map +1 -1
  92. package/dist/src/platform/slice/impl.js +85 -34
  93. package/dist/src/platform/slice/impl.js.map +1 -1
  94. package/dist/src/platform/slice/index.d.ts +2098 -29
  95. package/dist/src/platform/slice/index.d.ts.map +1 -1
  96. package/dist/src/platform/slice/index.js +145 -12
  97. package/dist/src/platform/slice/index.js.map +1 -1
  98. package/dist/src/runtime/collections/board.d.ts +73 -0
  99. package/dist/src/runtime/collections/board.d.ts.map +1 -0
  100. package/dist/src/runtime/collections/board.js +68 -0
  101. package/dist/src/runtime/collections/board.js.map +1 -0
  102. package/dist/src/runtime/collections/index.d.ts +1 -0
  103. package/dist/src/runtime/collections/index.d.ts.map +1 -1
  104. package/dist/src/runtime/collections/index.js +1 -0
  105. package/dist/src/runtime/collections/index.js.map +1 -1
  106. package/dist/src/runtime/collections/schematic.d.ts +11 -4
  107. package/dist/src/runtime/collections/schematic.d.ts.map +1 -1
  108. package/dist/src/runtime/collections/schematic.js +8 -2
  109. package/dist/src/runtime/collections/schematic.js.map +1 -1
  110. package/dist/src/runtime/slice.d.ts +7 -3
  111. package/dist/src/runtime/slice.d.ts.map +1 -1
  112. package/dist/src/runtime/slice.js +62 -14
  113. package/dist/src/runtime/slice.js.map +1 -1
  114. package/dist/src/shared/reify.d.ts +76 -0
  115. package/dist/src/shared/reify.d.ts.map +1 -0
  116. package/dist/src/shared/reify.js +85 -0
  117. package/dist/src/shared/reify.js.map +1 -0
  118. package/dist/src/slice/breakdown/index.d.ts +100 -0
  119. package/dist/src/slice/breakdown/index.d.ts.map +1 -1
  120. package/dist/src/slice/breakdown/types.d.ts +100 -0
  121. package/dist/src/slice/breakdown/types.d.ts.map +1 -1
  122. package/dist/src/slice/cohort/index.d.ts +787 -10
  123. package/dist/src/slice/cohort/index.d.ts.map +1 -1
  124. package/dist/src/slice/cohort/index.js +33 -10
  125. package/dist/src/slice/cohort/index.js.map +1 -1
  126. package/dist/src/slice/cohort/types.d.ts +225 -99
  127. package/dist/src/slice/cohort/types.d.ts.map +1 -1
  128. package/dist/src/slice/cohort/types.js +31 -9
  129. package/dist/src/slice/cohort/types.js.map +1 -1
  130. package/dist/src/slice/filter/index.d.ts +100 -0
  131. package/dist/src/slice/filter/index.d.ts.map +1 -1
  132. package/dist/src/slice/filter/types.d.ts +100 -0
  133. package/dist/src/slice/filter/types.d.ts.map +1 -1
  134. package/dist/src/slice/index.d.ts +2862 -126
  135. package/dist/src/slice/index.d.ts.map +1 -1
  136. package/dist/src/slice/index.js +6 -4
  137. package/dist/src/slice/index.js.map +1 -1
  138. package/dist/src/slice/legend/index.d.ts +124 -7
  139. package/dist/src/slice/legend/index.d.ts.map +1 -1
  140. package/dist/src/slice/legend/index.js +20 -10
  141. package/dist/src/slice/legend/index.js.map +1 -1
  142. package/dist/src/slice/legend/types.d.ts +233 -108
  143. package/dist/src/slice/legend/types.d.ts.map +1 -1
  144. package/dist/src/slice/legend/types.js +26 -5
  145. package/dist/src/slice/legend/types.js.map +1 -1
  146. package/dist/src/slice/rail/index.d.ts +22 -0
  147. package/dist/src/slice/rail/index.d.ts.map +1 -1
  148. package/dist/src/slice/rail/index.js +9 -1
  149. package/dist/src/slice/rail/index.js.map +1 -1
  150. package/dist/src/slice/range/index.d.ts +100 -0
  151. package/dist/src/slice/range/index.d.ts.map +1 -1
  152. package/dist/src/slice/range/types.d.ts +100 -0
  153. package/dist/src/slice/range/types.d.ts.map +1 -1
  154. package/dist/src/slice/search/index.d.ts +100 -0
  155. package/dist/src/slice/search/index.d.ts.map +1 -1
  156. package/dist/src/slice/search/types.d.ts +100 -0
  157. package/dist/src/slice/search/types.d.ts.map +1 -1
  158. package/dist/src/slice/summary/index.d.ts +100 -0
  159. package/dist/src/slice/summary/index.d.ts.map +1 -1
  160. package/dist/src/slice/summary/types.d.ts +100 -0
  161. package/dist/src/slice/summary/types.d.ts.map +1 -1
  162. package/dist/test/collections/board.examples.d.ts +7 -0
  163. package/dist/test/collections/board.examples.d.ts.map +1 -0
  164. package/dist/test/collections/board.examples.js +191 -0
  165. package/dist/test/collections/board.examples.js.map +1 -0
  166. package/dist/test/collections/gantt.examples.js +2 -2
  167. package/dist/test/collections/gantt.examples.js.map +1 -1
  168. package/dist/test/collections/matrix.examples.d.ts.map +1 -1
  169. package/dist/test/collections/matrix.examples.js +4 -3
  170. package/dist/test/collections/matrix.examples.js.map +1 -1
  171. package/dist/test/collections/schematic.examples.d.ts +11 -1
  172. package/dist/test/collections/schematic.examples.d.ts.map +1 -1
  173. package/dist/test/collections/schematic.examples.js +354 -24
  174. package/dist/test/collections/schematic.examples.js.map +1 -1
  175. package/dist/test/collections/table.examples.d.ts.map +1 -1
  176. package/dist/test/collections/table.examples.js +9 -6
  177. package/dist/test/collections/table.examples.js.map +1 -1
  178. package/dist/test/disclosure/story.examples.js +1 -1
  179. package/dist/test/disclosure/story.examples.js.map +1 -1
  180. package/dist/test/display/combine.examples.js +2 -2
  181. package/dist/test/display/combine.examples.js.map +1 -1
  182. package/dist/test/display/editable-chip.examples.js +1 -1
  183. package/dist/test/display/editable-chip.examples.js.map +1 -1
  184. package/dist/test/slice/slice.examples.d.ts +5 -0
  185. package/dist/test/slice/slice.examples.d.ts.map +1 -1
  186. package/dist/test/slice/slice.examples.js +216 -6
  187. package/dist/test/slice/slice.examples.js.map +1 -1
  188. package/package.json +3 -3
@@ -6,20 +6,77 @@
6
6
  * `Schematic` — a 2D world-coordinate canvas for placing real-world
7
7
  * entities (tanks, bays, lines, nodes, cells) in space, plus annotation
8
8
  * zones (rooms, walkways) and key-addressed links, all from flat data
9
- * tables with chart-style field encodings. **Read-only**: single-click
10
- * selection only appearance belongs to the linked Library entry;
11
- * position and live metrics are owned here.
9
+ * tables with chart-style field encodings. Interaction is opt-in per
10
+ * channel (selection, camera, zone / link / net editing, item moves,
11
+ * hover cards) with nothing bound it is a read-only picture; appearance
12
+ * belongs to the linked Library entry; position and live metrics are
13
+ * owned here.
12
14
  *
13
15
  * @packageDocumentation
14
16
  */
15
- import { type ExprType, type SubtypeExprOrValue, type TypeOf, variant, ArrayType, type BooleanType, FloatType, type FunctionType, type NullType, type OptionType, StringType, StructType } from "@elaraai/east";
17
+ import { type ExprType, type SubtypeExprOrValue, type TypeOf, variant, ArrayType, BooleanType, FloatType, FunctionType, NullType, OptionType, StringType, StructType } from "@elaraai/east";
16
18
  import { UIComponentType } from "../../component.js";
17
19
  import { StatusTokenType } from "../../style/interaction.js";
18
20
  import { type IconName } from "../../display/icon/types.js";
19
- import { SliceBindType } from "../../platform/slice/index.js";
21
+ import { SliceBindType, SliceChromeType } from "../../platform/slice/index.js";
20
22
  import { type SliceAffordanceLiteral } from "../../contracts/slice-affordances.js";
21
- import { SchematicPointType, SchematicVertexType, SchematicGeometryType, SchematicZonePatternType, SchematicLinkStyleType, SchematicRouteType, SchematicToneType } from "./types.js";
22
- export { SchematicRootType, SchematicItemType, SchematicZoneType, SchematicLinkType, SchematicPointType, SchematicVertexType, SchematicGeometryType, SchematicZonePatternType, SchematicLinkStyleType, SchematicRouteType, SchematicToneType, } from "./types.js";
23
+ import { SchematicItemType, SchematicZoneType, SchematicLinkType, SchematicPointType, SchematicVertexType, SchematicGeometryType, SchematicZonePatternType, SchematicLinkStyleType, SchematicRouteType, SchematicToneType, SchematicEmphasisType, SchematicSliceEffectType, SchematicLayerType, SchematicSelectionModeType, SchematicSelectionEventType, SchematicViewportEventType, SchematicZoneSelectionEventType, SchematicLinkModeType, SchematicLinkCreateEventType, SchematicLinkEditEventType, SchematicNetEndpointsType, SchematicNetType, SchematicItemMoveEventType } from "./types.js";
24
+ export { SchematicItemType, SchematicZoneType, SchematicLinkType, SchematicPointType, SchematicVertexType, SchematicGeometryType, SchematicZonePatternType, SchematicLinkStyleType, SchematicRouteType, SchematicToneType, SchematicEmphasisType, SchematicSliceEffectType, SchematicLayerType, SchematicSelectionModeType, SchematicRegionType, SchematicSelectionEventType, SchematicViewportEventType, SchematicZoneSelectionEventType, SchematicLinkModeType, SchematicLinkEndpointsType, SchematicLinkCreateEventType, SchematicLinkEditEventType, SchematicNetEndpointsType, SchematicNetType, SchematicItemMoveEventType, } from "./types.js";
25
+ /**
26
+ * East type for the Schematic root — the resolved mirror of the inline
27
+ * `Schematic` struct in `component.ts` (which spells the three `*Hover`
28
+ * fields with the recursion `node` where this mirror resolves them to
29
+ * `UIComponentType`). Keep the two spellings in sync field-for-field.
30
+ *
31
+ * @remarks
32
+ * Per-field docs live on {@link SchematicConfig}; events and collection
33
+ * row types are documented in `./types.ts`.
34
+ */
35
+ export declare const SchematicRootType: StructType<{
36
+ extent: StructType<{
37
+ width: FloatType;
38
+ height: FloatType;
39
+ }>;
40
+ items: ArrayType<SchematicItemType>;
41
+ zones: ArrayType<SchematicZoneType>;
42
+ links: ArrayType<SchematicLinkType>;
43
+ nets: ArrayType<SchematicNetType>;
44
+ scaleUnit: OptionType<StringType>;
45
+ grid: OptionType<BooleanType>;
46
+ navigator: OptionType<BooleanType>;
47
+ minimap: OptionType<BooleanType>;
48
+ slice: OptionType<SliceChromeType>;
49
+ sliceEffect: OptionType<SchematicSliceEffectType>;
50
+ layers: OptionType<ArrayType<SchematicLayerType>>;
51
+ height: OptionType<StringType>;
52
+ onSelect: OptionType<FunctionType<[StringType], NullType>>;
53
+ selectionMode: OptionType<SchematicSelectionModeType>;
54
+ onSelectionChange: OptionType<FunctionType<[SchematicSelectionEventType], NullType>>;
55
+ sliceSelectField: OptionType<StringType>;
56
+ selectZoomFocus: OptionType<BooleanType>;
57
+ onViewportChange: OptionType<FunctionType<[SchematicViewportEventType], NullType>>;
58
+ onItemOpen: OptionType<FunctionType<[StringType], NullType>>;
59
+ onSelectZone: OptionType<FunctionType<[StringType], NullType>>;
60
+ onZoneSelectionChange: OptionType<FunctionType<[SchematicZoneSelectionEventType], NullType>>;
61
+ linkMode: OptionType<SchematicLinkModeType>;
62
+ onCreateLink: OptionType<FunctionType<[SchematicLinkCreateEventType], NullType>>;
63
+ onSelectLink: OptionType<FunctionType<[StringType], NullType>>;
64
+ onEditLink: OptionType<FunctionType<[SchematicLinkEditEventType], NullType>>;
65
+ onDeleteLink: OptionType<FunctionType<[StringType], NullType>>;
66
+ readOnly: OptionType<BooleanType>;
67
+ readOnlyLinks: OptionType<BooleanType>;
68
+ readOnlyItems: OptionType<BooleanType>;
69
+ onMoveItem: OptionType<FunctionType<[SchematicItemMoveEventType], NullType>>;
70
+ itemHover: OptionType<FunctionType<[StringType], UIComponentType>>;
71
+ zoneHover: OptionType<FunctionType<[StringType], UIComponentType>>;
72
+ linkHover: OptionType<FunctionType<[StringType], UIComponentType>>;
73
+ onEditNet: OptionType<FunctionType<[SchematicNetEndpointsType], NullType>>;
74
+ canConnect: OptionType<FunctionType<[StringType, StringType], BooleanType>>;
75
+ }>;
76
+ /**
77
+ * Type representing the Schematic component.
78
+ */
79
+ export type SchematicRootType = typeof SchematicRootType;
23
80
  /** String literal form of {@link SchematicToneType} tags. */
24
81
  export type SchematicToneLiteral = "brand" | "ink" | "muted" | "success" | "warning" | "danger";
25
82
  /** Style configuration accepted by {@link outline} / {@link hatch} / {@link solid} / {@link dashed}. */
@@ -203,6 +260,13 @@ export interface SchematicItemFields {
203
260
  fillOpacity?: SubtypeExprOrValue<FloatType>;
204
261
  /** Optional stroke width in px. */
205
262
  weight?: SubtypeExprOrValue<FloatType>;
263
+ /** Optional slice-excluded flag — when a `sliceEffect` is set, a `true` item
264
+ * is treated as filtered-out (ghosted / hidden per the effect). Typically
265
+ * `Slice.apply.matches(state, cfg, row).not()`, or read from `Slice.partition`. */
266
+ excluded?: SubtypeExprOrValue<BooleanType>;
267
+ /** Optional layer membership — the `key` of a `layers` entry; hidden when
268
+ * that layer is hidden. Absent ⇒ unlayered (always visible). */
269
+ layer?: SubtypeExprOrValue<StringType>;
206
270
  }
207
271
  /**
208
272
  * Fields the `zone` mapper returns — one annotation zone, before defaults.
@@ -248,6 +312,9 @@ export interface SchematicZoneFields {
248
312
  fillOpacity?: SubtypeExprOrValue<FloatType>;
249
313
  /** Optional stroke width in px. */
250
314
  weight?: SubtypeExprOrValue<FloatType>;
315
+ /** Optional layer membership — the `key` of a `layers` entry; hidden when
316
+ * that layer is hidden. Absent ⇒ unlayered (always visible). */
317
+ layer?: SubtypeExprOrValue<StringType>;
251
318
  }
252
319
  /**
253
320
  * Fields the `link` mapper returns — one connection, before defaults.
@@ -266,12 +333,74 @@ export interface SchematicLinkFields {
266
333
  from: SubtypeExprOrValue<StringType>;
267
334
  /** Destination item key. */
268
335
  to: SubtypeExprOrValue<StringType>;
336
+ /** Optional label rendered mid-path (a name / flow description); hidden when zoomed out past the label band. */
337
+ label?: SubtypeExprOrValue<StringType>;
338
+ /** Optional metric rendered after the label mid-path (a rate / capacity readout), muted. */
339
+ metric?: SubtypeExprOrValue<StringType>;
269
340
  /** Optional style (default `Schematic.solid()`). */
270
341
  style?: SubtypeExprOrValue<SchematicLinkStyleType>;
271
342
  /** Optional routing (default orthogonal, rounded corners). */
272
343
  route?: SubtypeExprOrValue<SchematicRouteType>;
273
344
  /** Optional world-coordinate waypoints, in order. */
274
345
  via?: SubtypeExprOrValue<ArrayType<SchematicPointType>>;
346
+ /** Optional layer membership — the `key` of a `layers` entry; hidden when
347
+ * that layer is hidden (or when either endpoint item is hidden). */
348
+ layer?: SubtypeExprOrValue<StringType>;
349
+ }
350
+ /**
351
+ * Author-facing fields for one net (manifold / bus), produced by the `net`
352
+ * mapper — many `sources` feeding many `destinations` through one trunk.
353
+ */
354
+ export interface SchematicNetFields {
355
+ /** Net identity. */
356
+ key: SubtypeExprOrValue<StringType>;
357
+ /** Source item keys (the feeding side). */
358
+ sources: SubtypeExprOrValue<ArrayType<StringType>>;
359
+ /** Destination item keys (the fed side). */
360
+ destinations: SubtypeExprOrValue<ArrayType<StringType>>;
361
+ /** Optional label rendered mid-trunk. */
362
+ label?: SubtypeExprOrValue<StringType>;
363
+ /** Optional metric rendered after the label mid-trunk, muted. */
364
+ metric?: SubtypeExprOrValue<StringType>;
365
+ /** Optional style (default `Schematic.solid()`). */
366
+ style?: SubtypeExprOrValue<SchematicLinkStyleType>;
367
+ /** Optional trunk routing (default orthogonal, rounded corners). */
368
+ route?: SubtypeExprOrValue<SchematicRouteType>;
369
+ /** Optional world-coordinate trunk waypoints, in order. */
370
+ via?: SubtypeExprOrValue<ArrayType<SchematicPointType>>;
371
+ /** Optional layer membership — hidden when that layer is hidden. */
372
+ layer?: SubtypeExprOrValue<StringType>;
373
+ }
374
+ /** String literal form of {@link SchematicEmphasisType} tags. */
375
+ export type SchematicEmphasisLiteral = "halo" | "pulse";
376
+ /** String literal form of {@link SchematicSelectionModeType} tags. */
377
+ export type SchematicSelectionModeLiteral = "single" | "multiple";
378
+ /** String literal form of {@link SchematicLinkModeType} tags. */
379
+ export type SchematicLinkModeLiteral = "draw" | "connect";
380
+ /**
381
+ * A layer declaration for {@link SchematicConfig.layers}. Only `key` + `label`
382
+ * are required; the rest are author defaults the user's panel toggles override.
383
+ *
384
+ * @property key - Layer identity — entities reference it via their `layer` field
385
+ * @property label - Panel display name
386
+ * @property visible - Author default visibility (default `true`); `false` ⇒ ships hidden
387
+ * @property locked - Author default lock / non-selectable (default `false`)
388
+ * @property opacity - Item-level dim (0–1) for the layer's items (default `1`)
389
+ * @property tone - Panel swatch tone
390
+ */
391
+ export interface SchematicLayerInput {
392
+ /** Layer identity — entities reference it via their `layer` field. */
393
+ key: string;
394
+ /** Panel display name. */
395
+ label: string;
396
+ /** Author default visibility (default `true`); `false` ⇒ ships hidden. */
397
+ visible?: boolean;
398
+ /** Author default lock / non-selectable (default `false`). */
399
+ locked?: boolean;
400
+ /** Item-level dim (0–1) for the layer's items (default `1`). */
401
+ opacity?: number;
402
+ /** Panel swatch tone. */
403
+ tone?: SchematicToneLiteral;
275
404
  }
276
405
  /**
277
406
  * Configuration for {@link createSchematic}.
@@ -292,7 +421,7 @@ export interface SchematicLinkFields {
292
421
  * @property height - Optional fixed panel height (any CSS length)
293
422
  * @property onSelect - Optional item-click callback (receives the item key)
294
423
  */
295
- export interface SchematicConfig<I extends StructType, Z extends StructType, L extends StructType> {
424
+ export interface SchematicConfig<I extends StructType, Z extends StructType, L extends StructType, N extends StructType = StructType> {
296
425
  /** World-coordinate bounds; the canvas scales to fit. */
297
426
  extent: {
298
427
  width: number;
@@ -308,6 +437,10 @@ export interface SchematicConfig<I extends StructType, Z extends StructType, L e
308
437
  links?: SubtypeExprOrValue<ArrayType<L>>;
309
438
  /** Links row mapper; omit when `links` is already `ArrayType(Schematic.Types.Link)`. */
310
439
  link?: (link: ExprType<L>) => SchematicLinkFields;
440
+ /** Optional nets — manifold / bus rows (one row = many sources → many destinations). */
441
+ nets?: SubtypeExprOrValue<ArrayType<N>>;
442
+ /** Maps a net row to its {@link SchematicNetFields} (or passes a resolved {@link SchematicNetType} through). */
443
+ net?: (net: ExprType<N>) => SchematicNetFields;
311
444
  /** Optional unit for the bottom-right scale bar. */
312
445
  scaleUnit?: SubtypeExprOrValue<StringType>;
313
446
  /** Metric grid aligned to the scale legend; default on. */
@@ -325,10 +458,84 @@ export interface SchematicConfig<I extends StructType, Z extends StructType, L e
325
458
  slice?: SubtypeExprOrValue<SliceBindType>;
326
459
  /** Rail affordances when `slice` is set. Default `["search"]`. */
327
460
  affordances?: SliceAffordanceLiteral[];
461
+ /**
462
+ * Slice-driven render effect — instead of hiding filtered-out items, keep
463
+ * them as ghosted / desaturated / shrunk context and emphasise the remainder.
464
+ * Feed the **full** item set and mark each item's `excluded` flag (via
465
+ * `Slice.partition`, or `Slice.apply.matches(...).not()`); every prop below is
466
+ * `SubtypeExprOrValue`, so any can be static or driven reactively from a
467
+ * `State.read`. All absent ⇒ excluded items hidden completely (today's default).
468
+ */
469
+ /** Remove filtered-out items entirely; absent / `false` ⇒ keep them as context. */
470
+ sliceHidden?: SubtypeExprOrValue<BooleanType>;
471
+ /** Ghost opacity (0–1) for kept filtered-out items; absent ⇒ full. */
472
+ sliceOpacity?: SubtypeExprOrValue<FloatType>;
473
+ /** Drain kept filtered-out items' colour to grey. */
474
+ sliceDesaturate?: SubtypeExprOrValue<BooleanType>;
475
+ /** Collapse kept filtered-out items to a bare dot (drop card / label / footprint). */
476
+ sliceDot?: SubtypeExprOrValue<BooleanType>;
477
+ /** Emphasise the matched remainder — `"halo"` (static ring) or `"pulse"`
478
+ * (animated). A reactive `option<Emphasis>` value can be `none` to turn the
479
+ * ring off; the string shorthands are sugar for `some(variant(...))`. */
480
+ sliceEmphasis?: SubtypeExprOrValue<OptionType<SchematicEmphasisType>> | SchematicEmphasisLiteral;
481
+ /** Draw a bounding frame around the matched set. */
482
+ sliceFrame?: SubtypeExprOrValue<BooleanType>;
483
+ /** Auto-fit the camera to the matched frame when the matched set changes. */
484
+ sliceFrameFit?: SubtypeExprOrValue<BooleanType>;
485
+ /**
486
+ * Named layers — cross-cutting groups of items / zones / links, toggled
487
+ * (visibility / solo / lock / dim) from a layer button on the canvas. Tag
488
+ * each entity with a matching `layer` key. Absent ⇒ no layer chrome.
489
+ */
490
+ layers?: SchematicLayerInput[];
328
491
  /** Optional fixed panel height (any CSS length, e.g. `"400px"`); default: aspect-driven, capped at 75vh. */
329
492
  height?: SubtypeExprOrValue<StringType> | string;
330
493
  /** Optional item-click callback (receives the item key). */
331
494
  onSelect?: SubtypeExprOrValue<FunctionType<[StringType], NullType>>;
495
+ /** Optional selection cardinality (`"single"` / `"multiple"` / `"range"`); absent ⇒ single. `multiple` / `range` reveal the marquee tool. */
496
+ selectionMode?: SubtypeExprOrValue<SchematicSelectionModeType> | SchematicSelectionModeLiteral;
497
+ /** Optional selection-set change callback — fired on any tap / marquee / clear with the full selected set ({@link SchematicSelectionEventType}). */
498
+ onSelectionChange?: SubtypeExprOrValue<FunctionType<[SchematicSelectionEventType], NullType>>;
499
+ /** Optional bound-slice fieldId that selection drives with an `in` filter of the selected item keys (requires a bound `slice`); absent ⇒ selection leaves the slice untouched. Best paired with the ghost `slice*` effect rather than a `Slice.rows` feed on the same slice. */
500
+ sliceSelectField?: SubtypeExprOrValue<StringType> | string;
501
+ /** When true, a canvas selection also moves the camera — a single tap flies to the item, a marquee fits to the selected set — regardless of `selectionMode`; default false. The navigator rail + prev/next always fly. */
502
+ selectZoomFocus?: SubtypeExprOrValue<BooleanType> | boolean;
503
+ /** Optional debounced viewport-settled callback ({@link SchematicViewportEventType}: zoom + visible world rect) — fired after a pan / zoom / fly / resize settles, never per-frame. */
504
+ onViewportChange?: SubtypeExprOrValue<FunctionType<[SchematicViewportEventType], NullType>>;
505
+ /** Optional item-open callback (receives the item key) — fired on double-click / double-tap of an item (drill-in); a background double-click keeps Fit / reset. Locked-layer items do not open. */
506
+ onItemOpen?: SubtypeExprOrValue<FunctionType<[StringType], NullType>>;
507
+ /** Optional zone-click callback (receives the zone key) — the single-key channel, parallel to `onSelect`. Items take hit-test precedence; outline zones only (hatch bands are annotations); innermost zone wins for nested zones. */
508
+ onSelectZone?: SubtypeExprOrValue<FunctionType<[StringType], NullType>>;
509
+ /** Optional zone selection-set change callback ({@link SchematicZoneSelectionEventType}) — fired on any zone tap / nav zone click / clear with the full selected zone set AND their `childItemKeys`. Zone gestures follow `selectionMode` (Shift extends in `multiple`). */
510
+ onZoneSelectionChange?: SubtypeExprOrValue<FunctionType<[SchematicZoneSelectionEventType], NullType>>;
511
+ /** Optional connect-gesture mode (`"draw"` adds a physical link locally, form-input style; `"connect"` is event-only and repeatable — the plan-an-operation channel); absent ⇒ draw. */
512
+ linkMode?: SubtypeExprOrValue<SchematicLinkModeType> | SchematicLinkModeLiteral;
513
+ /** Optional link-creation callback ({@link SchematicLinkCreateEventType}) — fired on every committed connect gesture with the newest link, the accumulated Shift-session (`links`), and the pair's `existing` links. */
514
+ onCreateLink?: SubtypeExprOrValue<FunctionType<[SchematicLinkCreateEventType], NullType>>;
515
+ /** Optional link-click callback (receives the link key) — the link analogue of `onSelect`. */
516
+ onSelectLink?: SubtypeExprOrValue<FunctionType<[StringType], NullType>>;
517
+ /** Optional link-edit callback ({@link SchematicLinkEditEventType}) — fired after an endpoint connector re-target with the endpoints AFTER the edit. */
518
+ onEditLink?: SubtypeExprOrValue<FunctionType<[SchematicLinkEditEventType], NullType>>;
519
+ /** Optional link-delete callback (receives the deleted link's key). */
520
+ onDeleteLink?: SubtypeExprOrValue<FunctionType<[StringType], NullType>>;
521
+ /** Master read-only switch — disables ALL editing affordances; default false. */
522
+ readOnly?: SubtypeExprOrValue<BooleanType> | boolean;
523
+ /** Read-only for LINK editing only (connect tool, connectors, delete); effective = `readOnly || readOnlyLinks`; default false. */
524
+ readOnlyLinks?: SubtypeExprOrValue<BooleanType> | boolean;
525
+ /** Read-only for ITEM editing only (the move tool); effective = `readOnly || readOnlyItems`; default false. */
526
+ readOnlyItems?: SubtypeExprOrValue<BooleanType> | boolean;
527
+ /** Optional item-move callback ({@link SchematicItemMoveEventType}) — fired once per move-tool gesture on release; group move rides the current selection. */
528
+ onMoveItem?: SubtypeExprOrValue<FunctionType<[SchematicItemMoveEventType], NullType>>;
529
+ /** Optional hover-card content builder for ITEMS — receives the hovered item's key and returns arbitrary UI (a `Sparkline` / `Chart` over the entity's history is the headline case), evaluated lazily on hover; absent ⇒ no item hover card. Hover is read-only context — it ignores `readOnly` and locked layers. */
530
+ itemHover?: SubtypeExprOrValue<FunctionType<[StringType], UIComponentType>>;
531
+ /** Optional hover-card content builder for ZONES — receives the hovered zone's key; absent ⇒ no zone hover card. */
532
+ zoneHover?: SubtypeExprOrValue<FunctionType<[StringType], UIComponentType>>;
533
+ /** Optional hover-card content builder for LINKS and NETS — receives the hovered link / net key (nets share the channel, like `onSelectLink`); absent ⇒ no link hover card. */
534
+ linkHover?: SubtypeExprOrValue<FunctionType<[StringType], UIComponentType>>;
535
+ /** Optional net membership-edit callback — fired after deleting ONE selected leg (a stub) of a net, with the net's endpoints AFTER the removal (upsert by `key`); removing the last endpoint of a side deletes the whole net via `onDeleteLink` instead. Gated by `readOnly` / `readOnlyLinks`. */
536
+ onEditNet?: SubtypeExprOrValue<FunctionType<[SchematicNetEndpointsType], NullType>>;
537
+ /** Optional connection validator — receives `(from, to)` item keys BEFORE a connect gesture resolves; return false to forbid the pair: the draft never snaps to that target and releasing does nothing. Applies to draw AND connect modes, Shift-session extensions, and endpoint re-targets. A throwing validator logs and ALLOWS (fail-open) so a broken predicate cannot brick editing. */
538
+ canConnect?: SubtypeExprOrValue<FunctionType<[StringType, StringType], BooleanType>>;
332
539
  }
333
540
  /**
334
541
  * Creates a Schematic — a read-only 2D world-coordinate canvas.
@@ -360,9 +567,10 @@ export interface SchematicConfig<I extends StructType, Z extends StructType, L e
360
567
  * );
361
568
  * ```
362
569
  */
363
- declare function createSchematic<I extends SubtypeExprOrValue<ArrayType<StructType>>, Z extends SubtypeExprOrValue<ArrayType<StructType>> = [], L extends SubtypeExprOrValue<ArrayType<StructType>> = []>(items: I, config: SchematicConfig<RowElement<I>, RowElement<Z>, RowElement<L>> & {
570
+ declare function createSchematic<I extends SubtypeExprOrValue<ArrayType<StructType>>, Z extends SubtypeExprOrValue<ArrayType<StructType>> = [], L extends SubtypeExprOrValue<ArrayType<StructType>> = [], N extends SubtypeExprOrValue<ArrayType<StructType>> = []>(items: I, config: SchematicConfig<RowElement<I>, RowElement<Z>, RowElement<L>, RowElement<N>> & {
364
571
  zones?: Z;
365
572
  links?: L;
573
+ nets?: N;
366
574
  }): ExprType<UIComponentType>;
367
575
  /**
368
576
  * Schematic component namespace.
@@ -525,707 +733,45 @@ export declare const Schematic: {
525
733
  * @property onSelect - Optional item-click callback
526
734
  */
527
735
  readonly Schematic: StructType<{
528
- readonly extent: StructType<{
529
- readonly width: FloatType;
530
- readonly height: FloatType;
736
+ extent: StructType<{
737
+ width: FloatType;
738
+ height: FloatType;
531
739
  }>;
532
- readonly items: ArrayType<StructType<{
533
- readonly key: StringType;
534
- readonly x: FloatType;
535
- readonly y: FloatType;
536
- readonly label: StringType;
537
- readonly sublabel: OptionType<StringType>;
538
- readonly icon: OptionType<StringType>;
539
- readonly status: OptionType<import("@elaraai/east").VariantType<{
540
- readonly success: NullType;
541
- readonly warning: NullType;
542
- readonly danger: NullType;
543
- readonly info: NullType;
544
- readonly neutral: NullType;
545
- }>>;
546
- readonly meter: OptionType<StructType<{
547
- readonly value: FloatType;
548
- readonly max: FloatType;
549
- }>>;
550
- readonly metric: OptionType<StringType>;
551
- readonly width: OptionType<FloatType>;
552
- readonly footprint: OptionType<import("@elaraai/east").VariantType<{
553
- readonly rect: NullType;
554
- readonly circle: StructType<{
555
- readonly radius: FloatType;
556
- }>;
557
- readonly polyline: StructType<{
558
- readonly vertices: ArrayType<StructType<{
559
- readonly x: FloatType;
560
- readonly y: FloatType;
561
- readonly bulge: FloatType;
562
- }>>;
563
- readonly width: OptionType<FloatType>;
564
- }>;
565
- readonly polygon: StructType<{
566
- readonly vertices: ArrayType<StructType<{
567
- readonly x: FloatType;
568
- readonly y: FloatType;
569
- readonly bulge: FloatType;
570
- }>>;
571
- }>;
572
- }>>;
573
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
574
- readonly brand: NullType;
575
- readonly ink: NullType;
576
- readonly muted: NullType;
577
- readonly success: NullType;
578
- readonly warning: NullType;
579
- readonly danger: NullType;
580
- }>>;
581
- readonly color: OptionType<StringType>;
582
- readonly bg: OptionType<StringType>;
583
- readonly fillOpacity: OptionType<FloatType>;
584
- readonly weight: OptionType<FloatType>;
585
- }>>;
586
- readonly zones: ArrayType<StructType<{
587
- readonly key: StringType;
588
- readonly label: StringType;
589
- readonly x: FloatType;
590
- readonly y: FloatType;
591
- readonly width: FloatType;
592
- readonly height: FloatType;
593
- readonly pattern: import("@elaraai/east").VariantType<{
594
- readonly outline: StructType<{
595
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
596
- readonly brand: NullType;
597
- readonly ink: NullType;
598
- readonly muted: NullType;
599
- readonly success: NullType;
600
- readonly warning: NullType;
601
- readonly danger: NullType;
602
- }>>;
603
- }>;
604
- readonly hatch: StructType<{
605
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
606
- readonly brand: NullType;
607
- readonly ink: NullType;
608
- readonly muted: NullType;
609
- readonly success: NullType;
610
- readonly warning: NullType;
611
- readonly danger: NullType;
612
- }>>;
613
- readonly spacing: OptionType<FloatType>;
614
- readonly angle: OptionType<FloatType>;
615
- }>;
616
- }>;
617
- readonly geometry: OptionType<import("@elaraai/east").VariantType<{
618
- readonly rect: NullType;
619
- readonly circle: StructType<{
620
- readonly radius: FloatType;
621
- }>;
622
- readonly polyline: StructType<{
623
- readonly vertices: ArrayType<StructType<{
624
- readonly x: FloatType;
625
- readonly y: FloatType;
626
- readonly bulge: FloatType;
627
- }>>;
628
- readonly width: OptionType<FloatType>;
629
- }>;
630
- readonly polygon: StructType<{
631
- readonly vertices: ArrayType<StructType<{
632
- readonly x: FloatType;
633
- readonly y: FloatType;
634
- readonly bulge: FloatType;
635
- }>>;
636
- }>;
637
- }>>;
638
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
639
- readonly brand: NullType;
640
- readonly ink: NullType;
641
- readonly muted: NullType;
642
- readonly success: NullType;
643
- readonly warning: NullType;
644
- readonly danger: NullType;
645
- }>>;
646
- readonly color: OptionType<StringType>;
647
- readonly bg: OptionType<StringType>;
648
- readonly fillOpacity: OptionType<FloatType>;
649
- readonly weight: OptionType<FloatType>;
650
- }>>;
651
- readonly links: ArrayType<StructType<{
652
- readonly key: StringType;
653
- readonly from: StringType;
654
- readonly to: StringType;
655
- readonly style: import("@elaraai/east").VariantType<{
656
- readonly solid: StructType<{
657
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
658
- readonly brand: NullType;
659
- readonly ink: NullType;
660
- readonly muted: NullType;
661
- readonly success: NullType;
662
- readonly warning: NullType;
663
- readonly danger: NullType;
664
- }>>;
665
- readonly weight: OptionType<FloatType>;
666
- }>;
667
- readonly dashed: StructType<{
668
- readonly tone: OptionType<import("@elaraai/east").VariantType<{
669
- readonly brand: NullType;
670
- readonly ink: NullType;
671
- readonly muted: NullType;
672
- readonly success: NullType;
673
- readonly warning: NullType;
674
- readonly danger: NullType;
675
- }>>;
676
- readonly weight: OptionType<FloatType>;
677
- }>;
678
- }>;
679
- readonly route: import("@elaraai/east").VariantType<{
680
- readonly orthogonal: StructType<{
681
- readonly corner: OptionType<FloatType>;
682
- }>;
683
- readonly direct: NullType;
684
- }>;
685
- readonly via: ArrayType<StructType<{
686
- readonly x: FloatType;
687
- readonly y: FloatType;
688
- }>>;
689
- }>>;
690
- readonly scaleUnit: OptionType<StringType>;
691
- readonly grid: OptionType<BooleanType>;
692
- readonly navigator: OptionType<BooleanType>;
693
- readonly minimap: OptionType<BooleanType>;
694
- readonly slice: OptionType<StructType<{
695
- readonly slice: StructType<{
696
- readonly key: StringType;
697
- readonly read: FunctionType<[], StructType<{
698
- readonly range: OptionType<import("@elaraai/east").VariantType<{
699
- readonly datetime: StructType<{
700
- readonly from: import("@elaraai/east").DateTimeType;
701
- readonly to: import("@elaraai/east").DateTimeType;
702
- }>;
703
- readonly datetimePreset: import("@elaraai/east").VariantType<{
704
- readonly today: NullType;
705
- readonly last7d: NullType;
706
- readonly last30d: NullType;
707
- readonly last90d: NullType;
708
- readonly ytd: NullType;
709
- }>;
710
- readonly integer: StructType<{
711
- readonly from: import("@elaraai/east").IntegerType;
712
- readonly to: import("@elaraai/east").IntegerType;
713
- }>;
714
- readonly float: StructType<{
715
- readonly from: FloatType;
716
- readonly to: FloatType;
717
- }>;
718
- }>>;
719
- readonly compare: OptionType<import("@elaraai/east").VariantType<{
720
- readonly previousPeriod: NullType;
721
- readonly previousYear: NullType;
722
- }>>;
723
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
724
- readonly string: StructType<{
725
- readonly fieldId: StringType;
726
- readonly op: import("@elaraai/east").VariantType<{
727
- readonly eq: StringType;
728
- readonly neq: StringType;
729
- readonly in: import("@elaraai/east").SetType<StringType>;
730
- readonly notIn: import("@elaraai/east").SetType<StringType>;
731
- readonly contains: StringType;
732
- readonly matches: StringType;
733
- }>;
734
- }>;
735
- readonly integer: StructType<{
736
- readonly fieldId: StringType;
737
- readonly op: import("@elaraai/east").VariantType<{
738
- readonly eq: import("@elaraai/east").IntegerType;
739
- readonly neq: import("@elaraai/east").IntegerType;
740
- readonly lt: import("@elaraai/east").IntegerType;
741
- readonly lte: import("@elaraai/east").IntegerType;
742
- readonly gt: import("@elaraai/east").IntegerType;
743
- readonly gte: import("@elaraai/east").IntegerType;
744
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
745
- }>;
746
- }>;
747
- readonly float: StructType<{
748
- readonly fieldId: StringType;
749
- readonly op: import("@elaraai/east").VariantType<{
750
- readonly lt: FloatType;
751
- readonly lte: FloatType;
752
- readonly gt: FloatType;
753
- readonly gte: FloatType;
754
- }>;
755
- }>;
756
- readonly datetime: StructType<{
757
- readonly fieldId: StringType;
758
- readonly op: import("@elaraai/east").VariantType<{
759
- readonly before: import("@elaraai/east").DateTimeType;
760
- readonly after: import("@elaraai/east").DateTimeType;
761
- readonly between: StructType<{
762
- readonly from: import("@elaraai/east").DateTimeType;
763
- readonly to: import("@elaraai/east").DateTimeType;
764
- }>;
765
- }>;
766
- }>;
767
- readonly boolean: StructType<{
768
- readonly fieldId: StringType;
769
- readonly op: import("@elaraai/east").VariantType<{
770
- readonly is: BooleanType;
771
- }>;
772
- }>;
773
- }>>;
774
- readonly cohorts: ArrayType<StructType<{
775
- readonly id: StringType;
776
- readonly name: StringType;
777
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
778
- readonly string: StructType<{
779
- readonly fieldId: StringType;
780
- readonly op: import("@elaraai/east").VariantType<{
781
- readonly eq: StringType;
782
- readonly neq: StringType;
783
- readonly in: import("@elaraai/east").SetType<StringType>;
784
- readonly notIn: import("@elaraai/east").SetType<StringType>;
785
- readonly contains: StringType;
786
- readonly matches: StringType;
787
- }>;
788
- }>;
789
- readonly integer: StructType<{
790
- readonly fieldId: StringType;
791
- readonly op: import("@elaraai/east").VariantType<{
792
- readonly eq: import("@elaraai/east").IntegerType;
793
- readonly neq: import("@elaraai/east").IntegerType;
794
- readonly lt: import("@elaraai/east").IntegerType;
795
- readonly lte: import("@elaraai/east").IntegerType;
796
- readonly gt: import("@elaraai/east").IntegerType;
797
- readonly gte: import("@elaraai/east").IntegerType;
798
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
799
- }>;
800
- }>;
801
- readonly float: StructType<{
802
- readonly fieldId: StringType;
803
- readonly op: import("@elaraai/east").VariantType<{
804
- readonly lt: FloatType;
805
- readonly lte: FloatType;
806
- readonly gt: FloatType;
807
- readonly gte: FloatType;
808
- }>;
809
- }>;
810
- readonly datetime: StructType<{
811
- readonly fieldId: StringType;
812
- readonly op: import("@elaraai/east").VariantType<{
813
- readonly before: import("@elaraai/east").DateTimeType;
814
- readonly after: import("@elaraai/east").DateTimeType;
815
- readonly between: StructType<{
816
- readonly from: import("@elaraai/east").DateTimeType;
817
- readonly to: import("@elaraai/east").DateTimeType;
818
- }>;
819
- }>;
820
- }>;
821
- readonly boolean: StructType<{
822
- readonly fieldId: StringType;
823
- readonly op: import("@elaraai/east").VariantType<{
824
- readonly is: BooleanType;
825
- }>;
826
- }>;
827
- }>>;
828
- }>>;
829
- readonly activeCohorts: import("@elaraai/east").SetType<StringType>;
830
- readonly breakdown: OptionType<StructType<{
831
- readonly fieldId: StringType;
832
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
833
- }>>;
834
- readonly search: OptionType<StringType>;
835
- readonly visible: OptionType<import("@elaraai/east").SetType<StringType>>;
836
- readonly selectedIndex: OptionType<import("@elaraai/east").IntegerType>;
837
- }>>;
838
- readonly write: FunctionType<[StructType<{
839
- readonly range: OptionType<import("@elaraai/east").VariantType<{
840
- readonly datetime: StructType<{
841
- readonly from: import("@elaraai/east").DateTimeType;
842
- readonly to: import("@elaraai/east").DateTimeType;
843
- }>;
844
- readonly datetimePreset: import("@elaraai/east").VariantType<{
845
- readonly today: NullType;
846
- readonly last7d: NullType;
847
- readonly last30d: NullType;
848
- readonly last90d: NullType;
849
- readonly ytd: NullType;
850
- }>;
851
- readonly integer: StructType<{
852
- readonly from: import("@elaraai/east").IntegerType;
853
- readonly to: import("@elaraai/east").IntegerType;
854
- }>;
855
- readonly float: StructType<{
856
- readonly from: FloatType;
857
- readonly to: FloatType;
858
- }>;
859
- }>>;
860
- readonly compare: OptionType<import("@elaraai/east").VariantType<{
861
- readonly previousPeriod: NullType;
862
- readonly previousYear: NullType;
863
- }>>;
864
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
865
- readonly string: StructType<{
866
- readonly fieldId: StringType;
867
- readonly op: import("@elaraai/east").VariantType<{
868
- readonly eq: StringType;
869
- readonly neq: StringType;
870
- readonly in: import("@elaraai/east").SetType<StringType>;
871
- readonly notIn: import("@elaraai/east").SetType<StringType>;
872
- readonly contains: StringType;
873
- readonly matches: StringType;
874
- }>;
875
- }>;
876
- readonly integer: StructType<{
877
- readonly fieldId: StringType;
878
- readonly op: import("@elaraai/east").VariantType<{
879
- readonly eq: import("@elaraai/east").IntegerType;
880
- readonly neq: import("@elaraai/east").IntegerType;
881
- readonly lt: import("@elaraai/east").IntegerType;
882
- readonly lte: import("@elaraai/east").IntegerType;
883
- readonly gt: import("@elaraai/east").IntegerType;
884
- readonly gte: import("@elaraai/east").IntegerType;
885
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
886
- }>;
887
- }>;
888
- readonly float: StructType<{
889
- readonly fieldId: StringType;
890
- readonly op: import("@elaraai/east").VariantType<{
891
- readonly lt: FloatType;
892
- readonly lte: FloatType;
893
- readonly gt: FloatType;
894
- readonly gte: FloatType;
895
- }>;
896
- }>;
897
- readonly datetime: StructType<{
898
- readonly fieldId: StringType;
899
- readonly op: import("@elaraai/east").VariantType<{
900
- readonly before: import("@elaraai/east").DateTimeType;
901
- readonly after: import("@elaraai/east").DateTimeType;
902
- readonly between: StructType<{
903
- readonly from: import("@elaraai/east").DateTimeType;
904
- readonly to: import("@elaraai/east").DateTimeType;
905
- }>;
906
- }>;
907
- }>;
908
- readonly boolean: StructType<{
909
- readonly fieldId: StringType;
910
- readonly op: import("@elaraai/east").VariantType<{
911
- readonly is: BooleanType;
912
- }>;
913
- }>;
914
- }>>;
915
- readonly cohorts: ArrayType<StructType<{
916
- readonly id: StringType;
917
- readonly name: StringType;
918
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
919
- readonly string: StructType<{
920
- readonly fieldId: StringType;
921
- readonly op: import("@elaraai/east").VariantType<{
922
- readonly eq: StringType;
923
- readonly neq: StringType;
924
- readonly in: import("@elaraai/east").SetType<StringType>;
925
- readonly notIn: import("@elaraai/east").SetType<StringType>;
926
- readonly contains: StringType;
927
- readonly matches: StringType;
928
- }>;
929
- }>;
930
- readonly integer: StructType<{
931
- readonly fieldId: StringType;
932
- readonly op: import("@elaraai/east").VariantType<{
933
- readonly eq: import("@elaraai/east").IntegerType;
934
- readonly neq: import("@elaraai/east").IntegerType;
935
- readonly lt: import("@elaraai/east").IntegerType;
936
- readonly lte: import("@elaraai/east").IntegerType;
937
- readonly gt: import("@elaraai/east").IntegerType;
938
- readonly gte: import("@elaraai/east").IntegerType;
939
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
940
- }>;
941
- }>;
942
- readonly float: StructType<{
943
- readonly fieldId: StringType;
944
- readonly op: import("@elaraai/east").VariantType<{
945
- readonly lt: FloatType;
946
- readonly lte: FloatType;
947
- readonly gt: FloatType;
948
- readonly gte: FloatType;
949
- }>;
950
- }>;
951
- readonly datetime: StructType<{
952
- readonly fieldId: StringType;
953
- readonly op: import("@elaraai/east").VariantType<{
954
- readonly before: import("@elaraai/east").DateTimeType;
955
- readonly after: import("@elaraai/east").DateTimeType;
956
- readonly between: StructType<{
957
- readonly from: import("@elaraai/east").DateTimeType;
958
- readonly to: import("@elaraai/east").DateTimeType;
959
- }>;
960
- }>;
961
- }>;
962
- readonly boolean: StructType<{
963
- readonly fieldId: StringType;
964
- readonly op: import("@elaraai/east").VariantType<{
965
- readonly is: BooleanType;
966
- }>;
967
- }>;
968
- }>>;
969
- }>>;
970
- readonly activeCohorts: import("@elaraai/east").SetType<StringType>;
971
- readonly breakdown: OptionType<StructType<{
972
- readonly fieldId: StringType;
973
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
974
- }>>;
975
- readonly search: OptionType<StringType>;
976
- readonly visible: OptionType<import("@elaraai/east").SetType<StringType>>;
977
- readonly selectedIndex: OptionType<import("@elaraai/east").IntegerType>;
978
- }>], NullType>;
979
- readonly setRange: FunctionType<[OptionType<import("@elaraai/east").VariantType<{
980
- readonly datetime: StructType<{
981
- readonly from: import("@elaraai/east").DateTimeType;
982
- readonly to: import("@elaraai/east").DateTimeType;
983
- }>;
984
- readonly datetimePreset: import("@elaraai/east").VariantType<{
985
- readonly today: NullType;
986
- readonly last7d: NullType;
987
- readonly last30d: NullType;
988
- readonly last90d: NullType;
989
- readonly ytd: NullType;
990
- }>;
991
- readonly integer: StructType<{
992
- readonly from: import("@elaraai/east").IntegerType;
993
- readonly to: import("@elaraai/east").IntegerType;
994
- }>;
995
- readonly float: StructType<{
996
- readonly from: FloatType;
997
- readonly to: FloatType;
998
- }>;
999
- }>>], NullType>;
1000
- readonly setCompare: FunctionType<[OptionType<import("@elaraai/east").VariantType<{
1001
- readonly previousPeriod: NullType;
1002
- readonly previousYear: NullType;
1003
- }>>], NullType>;
1004
- readonly addFilter: FunctionType<[import("@elaraai/east").VariantType<{
1005
- readonly string: StructType<{
1006
- readonly fieldId: StringType;
1007
- readonly op: import("@elaraai/east").VariantType<{
1008
- readonly eq: StringType;
1009
- readonly neq: StringType;
1010
- readonly in: import("@elaraai/east").SetType<StringType>;
1011
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1012
- readonly contains: StringType;
1013
- readonly matches: StringType;
1014
- }>;
1015
- }>;
1016
- readonly integer: StructType<{
1017
- readonly fieldId: StringType;
1018
- readonly op: import("@elaraai/east").VariantType<{
1019
- readonly eq: import("@elaraai/east").IntegerType;
1020
- readonly neq: import("@elaraai/east").IntegerType;
1021
- readonly lt: import("@elaraai/east").IntegerType;
1022
- readonly lte: import("@elaraai/east").IntegerType;
1023
- readonly gt: import("@elaraai/east").IntegerType;
1024
- readonly gte: import("@elaraai/east").IntegerType;
1025
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1026
- }>;
1027
- }>;
1028
- readonly float: StructType<{
1029
- readonly fieldId: StringType;
1030
- readonly op: import("@elaraai/east").VariantType<{
1031
- readonly lt: FloatType;
1032
- readonly lte: FloatType;
1033
- readonly gt: FloatType;
1034
- readonly gte: FloatType;
1035
- }>;
1036
- }>;
1037
- readonly datetime: StructType<{
1038
- readonly fieldId: StringType;
1039
- readonly op: import("@elaraai/east").VariantType<{
1040
- readonly before: import("@elaraai/east").DateTimeType;
1041
- readonly after: import("@elaraai/east").DateTimeType;
1042
- readonly between: StructType<{
1043
- readonly from: import("@elaraai/east").DateTimeType;
1044
- readonly to: import("@elaraai/east").DateTimeType;
1045
- }>;
1046
- }>;
1047
- }>;
1048
- readonly boolean: StructType<{
1049
- readonly fieldId: StringType;
1050
- readonly op: import("@elaraai/east").VariantType<{
1051
- readonly is: BooleanType;
1052
- }>;
1053
- }>;
1054
- }>], NullType>;
1055
- readonly removeFilter: FunctionType<[import("@elaraai/east").IntegerType], NullType>;
1056
- readonly clearFilters: FunctionType<[], NullType>;
1057
- readonly defineCohort: FunctionType<[StructType<{
1058
- readonly id: StringType;
1059
- readonly name: StringType;
1060
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
1061
- readonly string: StructType<{
1062
- readonly fieldId: StringType;
1063
- readonly op: import("@elaraai/east").VariantType<{
1064
- readonly eq: StringType;
1065
- readonly neq: StringType;
1066
- readonly in: import("@elaraai/east").SetType<StringType>;
1067
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1068
- readonly contains: StringType;
1069
- readonly matches: StringType;
1070
- }>;
1071
- }>;
1072
- readonly integer: StructType<{
1073
- readonly fieldId: StringType;
1074
- readonly op: import("@elaraai/east").VariantType<{
1075
- readonly eq: import("@elaraai/east").IntegerType;
1076
- readonly neq: import("@elaraai/east").IntegerType;
1077
- readonly lt: import("@elaraai/east").IntegerType;
1078
- readonly lte: import("@elaraai/east").IntegerType;
1079
- readonly gt: import("@elaraai/east").IntegerType;
1080
- readonly gte: import("@elaraai/east").IntegerType;
1081
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1082
- }>;
1083
- }>;
1084
- readonly float: StructType<{
1085
- readonly fieldId: StringType;
1086
- readonly op: import("@elaraai/east").VariantType<{
1087
- readonly lt: FloatType;
1088
- readonly lte: FloatType;
1089
- readonly gt: FloatType;
1090
- readonly gte: FloatType;
1091
- }>;
1092
- }>;
1093
- readonly datetime: StructType<{
1094
- readonly fieldId: StringType;
1095
- readonly op: import("@elaraai/east").VariantType<{
1096
- readonly before: import("@elaraai/east").DateTimeType;
1097
- readonly after: import("@elaraai/east").DateTimeType;
1098
- readonly between: StructType<{
1099
- readonly from: import("@elaraai/east").DateTimeType;
1100
- readonly to: import("@elaraai/east").DateTimeType;
1101
- }>;
1102
- }>;
1103
- }>;
1104
- readonly boolean: StructType<{
1105
- readonly fieldId: StringType;
1106
- readonly op: import("@elaraai/east").VariantType<{
1107
- readonly is: BooleanType;
1108
- }>;
1109
- }>;
1110
- }>>;
1111
- }>], NullType>;
1112
- readonly updateCohort: FunctionType<[StringType, StructType<{
1113
- readonly id: StringType;
1114
- readonly name: StringType;
1115
- readonly filters: ArrayType<import("@elaraai/east").VariantType<{
1116
- readonly string: StructType<{
1117
- readonly fieldId: StringType;
1118
- readonly op: import("@elaraai/east").VariantType<{
1119
- readonly eq: StringType;
1120
- readonly neq: StringType;
1121
- readonly in: import("@elaraai/east").SetType<StringType>;
1122
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1123
- readonly contains: StringType;
1124
- readonly matches: StringType;
1125
- }>;
1126
- }>;
1127
- readonly integer: StructType<{
1128
- readonly fieldId: StringType;
1129
- readonly op: import("@elaraai/east").VariantType<{
1130
- readonly eq: import("@elaraai/east").IntegerType;
1131
- readonly neq: import("@elaraai/east").IntegerType;
1132
- readonly lt: import("@elaraai/east").IntegerType;
1133
- readonly lte: import("@elaraai/east").IntegerType;
1134
- readonly gt: import("@elaraai/east").IntegerType;
1135
- readonly gte: import("@elaraai/east").IntegerType;
1136
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1137
- }>;
1138
- }>;
1139
- readonly float: StructType<{
1140
- readonly fieldId: StringType;
1141
- readonly op: import("@elaraai/east").VariantType<{
1142
- readonly lt: FloatType;
1143
- readonly lte: FloatType;
1144
- readonly gt: FloatType;
1145
- readonly gte: FloatType;
1146
- }>;
1147
- }>;
1148
- readonly datetime: StructType<{
1149
- readonly fieldId: StringType;
1150
- readonly op: import("@elaraai/east").VariantType<{
1151
- readonly before: import("@elaraai/east").DateTimeType;
1152
- readonly after: import("@elaraai/east").DateTimeType;
1153
- readonly between: StructType<{
1154
- readonly from: import("@elaraai/east").DateTimeType;
1155
- readonly to: import("@elaraai/east").DateTimeType;
1156
- }>;
1157
- }>;
1158
- }>;
1159
- readonly boolean: StructType<{
1160
- readonly fieldId: StringType;
1161
- readonly op: import("@elaraai/east").VariantType<{
1162
- readonly is: BooleanType;
1163
- }>;
1164
- }>;
1165
- }>>;
1166
- }>], NullType>;
1167
- readonly removeCohort: FunctionType<[StringType], NullType>;
1168
- readonly toggleCohort: FunctionType<[StringType], NullType>;
1169
- readonly setBreakdown: FunctionType<[OptionType<StructType<{
1170
- readonly fieldId: StringType;
1171
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
1172
- }>>], NullType>;
1173
- readonly setSearch: FunctionType<[OptionType<StringType>], NullType>;
1174
- readonly setVisible: FunctionType<[OptionType<import("@elaraai/east").SetType<StringType>>], NullType>;
1175
- readonly select: FunctionType<[OptionType<import("@elaraai/east").IntegerType>], NullType>;
1176
- readonly isActive: FunctionType<[], BooleanType>;
1177
- readonly activeCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1178
- readonly dimensions: FunctionType<[], ArrayType<StructType<{
1179
- readonly fieldId: StringType;
1180
- readonly label: StringType;
1181
- }>>>;
1182
- readonly fields: FunctionType<[], ArrayType<StructType<{
1183
- readonly fieldId: StringType;
1184
- readonly label: StringType;
1185
- readonly kind: StringType;
1186
- readonly hints: ArrayType<StringType>;
1187
- }>>>;
1188
- readonly searchFieldIds: FunctionType<[], ArrayType<StringType>>;
1189
- readonly rangeFieldId: FunctionType<[], OptionType<StringType>>;
1190
- readonly totalCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1191
- readonly resultCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1192
- readonly groups: FunctionType<[], ArrayType<StructType<{
1193
- readonly key: StringType;
1194
- readonly count: import("@elaraai/east").IntegerType;
1195
- readonly color: StringType;
1196
- }>>>;
1197
- readonly series: FunctionType<[StringType, StringType], ArrayType<StructType<{
1198
- readonly key: StringType;
1199
- readonly color: StringType;
1200
- readonly points: ArrayType<StructType<{
1201
- readonly x: import("@elaraai/east").VariantType<{
1202
- readonly category: StringType;
1203
- readonly number: FloatType;
1204
- readonly time: import("@elaraai/east").DateTimeType;
1205
- }>;
1206
- readonly value: FloatType;
1207
- readonly size: OptionType<FloatType>;
1208
- readonly color: OptionType<StringType>;
1209
- }>>;
1210
- }>>>;
1211
- readonly matches: FunctionType<[], ArrayType<StructType<{
1212
- readonly id: StringType;
1213
- readonly label: StringType;
1214
- readonly meta: OptionType<StringType>;
1215
- }>>>;
1216
- readonly cohortCounts: FunctionType<[], import("@elaraai/east").DictType<StringType, import("@elaraai/east").IntegerType>>;
1217
- }>;
1218
- readonly affordances: ArrayType<import("@elaraai/east").VariantType<{
1219
- readonly filter: NullType;
1220
- readonly search: NullType;
1221
- readonly breakdown: NullType;
1222
- readonly range: NullType;
1223
- readonly cohort: NullType;
1224
- readonly brush: NullType;
1225
- }>>;
1226
- }>>;
1227
- readonly height: OptionType<StringType>;
1228
- readonly onSelect: OptionType<FunctionType<[StringType], NullType>>;
740
+ items: ArrayType<SchematicItemType>;
741
+ zones: ArrayType<SchematicZoneType>;
742
+ links: ArrayType<SchematicLinkType>;
743
+ nets: ArrayType<SchematicNetType>;
744
+ scaleUnit: OptionType<StringType>;
745
+ grid: OptionType<BooleanType>;
746
+ navigator: OptionType<BooleanType>;
747
+ minimap: OptionType<BooleanType>;
748
+ slice: OptionType<SliceChromeType>;
749
+ sliceEffect: OptionType<SchematicSliceEffectType>;
750
+ layers: OptionType<ArrayType<SchematicLayerType>>;
751
+ height: OptionType<StringType>;
752
+ onSelect: OptionType<FunctionType<[StringType], NullType>>;
753
+ selectionMode: OptionType<SchematicSelectionModeType>;
754
+ onSelectionChange: OptionType<FunctionType<[SchematicSelectionEventType], NullType>>;
755
+ sliceSelectField: OptionType<StringType>;
756
+ selectZoomFocus: OptionType<BooleanType>;
757
+ onViewportChange: OptionType<FunctionType<[SchematicViewportEventType], NullType>>;
758
+ onItemOpen: OptionType<FunctionType<[StringType], NullType>>;
759
+ onSelectZone: OptionType<FunctionType<[StringType], NullType>>;
760
+ onZoneSelectionChange: OptionType<FunctionType<[SchematicZoneSelectionEventType], NullType>>;
761
+ linkMode: OptionType<SchematicLinkModeType>;
762
+ onCreateLink: OptionType<FunctionType<[SchematicLinkCreateEventType], NullType>>;
763
+ onSelectLink: OptionType<FunctionType<[StringType], NullType>>;
764
+ onEditLink: OptionType<FunctionType<[SchematicLinkEditEventType], NullType>>;
765
+ onDeleteLink: OptionType<FunctionType<[StringType], NullType>>;
766
+ readOnly: OptionType<BooleanType>;
767
+ readOnlyLinks: OptionType<BooleanType>;
768
+ readOnlyItems: OptionType<BooleanType>;
769
+ onMoveItem: OptionType<FunctionType<[SchematicItemMoveEventType], NullType>>;
770
+ itemHover: OptionType<FunctionType<[StringType], UIComponentType>>;
771
+ zoneHover: OptionType<FunctionType<[StringType], UIComponentType>>;
772
+ linkHover: OptionType<FunctionType<[StringType], UIComponentType>>;
773
+ onEditNet: OptionType<FunctionType<[SchematicNetEndpointsType], NullType>>;
774
+ canConnect: OptionType<FunctionType<[StringType, StringType], BooleanType>>;
1229
775
  }>;
1230
776
  /**
1231
777
  * A resolved placed item.
@@ -1295,6 +841,8 @@ export declare const Schematic: {
1295
841
  readonly bg: OptionType<StringType>;
1296
842
  readonly fillOpacity: OptionType<FloatType>;
1297
843
  readonly weight: OptionType<FloatType>;
844
+ readonly excluded: OptionType<BooleanType>;
845
+ readonly layer: OptionType<StringType>;
1298
846
  }>;
1299
847
  /**
1300
848
  * A resolved annotation zone.
@@ -1372,6 +920,7 @@ export declare const Schematic: {
1372
920
  readonly bg: OptionType<StringType>;
1373
921
  readonly fillOpacity: OptionType<FloatType>;
1374
922
  readonly weight: OptionType<FloatType>;
923
+ readonly layer: OptionType<StringType>;
1375
924
  }>;
1376
925
  /**
1377
926
  * A resolved link between items.
@@ -1386,6 +935,8 @@ export declare const Schematic: {
1386
935
  readonly key: StringType;
1387
936
  readonly from: StringType;
1388
937
  readonly to: StringType;
938
+ readonly label: OptionType<StringType>;
939
+ readonly metric: OptionType<StringType>;
1389
940
  readonly style: import("@elaraai/east").VariantType<{
1390
941
  readonly solid: StructType<{
1391
942
  readonly tone: OptionType<import("@elaraai/east").VariantType<{
@@ -1420,6 +971,7 @@ export declare const Schematic: {
1420
971
  readonly x: FloatType;
1421
972
  readonly y: FloatType;
1422
973
  }>>;
974
+ readonly layer: OptionType<StringType>;
1423
975
  }>;
1424
976
  /**
1425
977
  * Zone render pattern (`outline` / `hatch`).
@@ -1553,6 +1105,282 @@ export declare const Schematic: {
1553
1105
  readonly y: FloatType;
1554
1106
  readonly bulge: FloatType;
1555
1107
  }>;
1108
+ /**
1109
+ * A named layer — a toggleable group of items / zones / links.
1110
+ *
1111
+ * @property key - Layer identity (entities reference it via `layer`)
1112
+ * @property label - Panel display name
1113
+ * @property visible - Author default visibility
1114
+ * @property locked - Author default lock (non-selectable)
1115
+ * @property opacity - Item dim (0–1)
1116
+ * @property tone - Panel swatch tone
1117
+ */
1118
+ readonly Layer: StructType<{
1119
+ readonly key: StringType;
1120
+ readonly label: StringType;
1121
+ readonly visible: OptionType<BooleanType>;
1122
+ readonly locked: OptionType<BooleanType>;
1123
+ readonly opacity: OptionType<FloatType>;
1124
+ readonly tone: OptionType<import("@elaraai/east").VariantType<{
1125
+ readonly brand: NullType;
1126
+ readonly ink: NullType;
1127
+ readonly muted: NullType;
1128
+ readonly success: NullType;
1129
+ readonly warning: NullType;
1130
+ readonly danger: NullType;
1131
+ }>>;
1132
+ }>;
1133
+ /**
1134
+ * The flat slice-driven render effect struct (mirrors the `slice*` props).
1135
+ */
1136
+ readonly SliceEffect: StructType<{
1137
+ readonly hidden: OptionType<BooleanType>;
1138
+ readonly opacity: OptionType<FloatType>;
1139
+ readonly desaturate: OptionType<BooleanType>;
1140
+ readonly dot: OptionType<BooleanType>;
1141
+ readonly emphasis: OptionType<import("@elaraai/east").VariantType<{
1142
+ readonly halo: NullType;
1143
+ readonly pulse: NullType;
1144
+ }>>;
1145
+ readonly frame: OptionType<BooleanType>;
1146
+ readonly frameFit: OptionType<BooleanType>;
1147
+ }>;
1148
+ /**
1149
+ * Matched-item emphasis (`halo` / `pulse`) — annotate `State` with it to
1150
+ * drive `sliceEmphasis` reactively.
1151
+ */
1152
+ readonly Emphasis: import("@elaraai/east").VariantType<{
1153
+ readonly halo: NullType;
1154
+ readonly pulse: NullType;
1155
+ }>;
1156
+ /**
1157
+ * Selection cardinality (`single` / `multiple` / `range`) — drive
1158
+ * `selectionMode` reactively or read it back.
1159
+ */
1160
+ readonly SelectionMode: import("@elaraai/east").VariantType<{
1161
+ readonly single: NullType;
1162
+ readonly multiple: NullType;
1163
+ }>;
1164
+ /**
1165
+ * A world-coordinate rectangle swept by a marquee gesture.
1166
+ *
1167
+ * @property minX - Left edge (world units)
1168
+ * @property minY - Top edge (world units)
1169
+ * @property maxX - Right edge (world units)
1170
+ * @property maxY - Bottom edge (world units)
1171
+ */
1172
+ readonly Region: StructType<{
1173
+ readonly minX: FloatType;
1174
+ readonly minY: FloatType;
1175
+ readonly maxX: FloatType;
1176
+ readonly maxY: FloatType;
1177
+ }>;
1178
+ /**
1179
+ * Selection-set change event passed to `onSelectionChange`.
1180
+ *
1181
+ * @property key - The item that triggered the change (some for a tap; none for marquee / clear)
1182
+ * @property selected - Whether `key` is now selected; for bulk changes, whether the set is non-empty
1183
+ * @property selectedKeys - The full selected set after the gesture
1184
+ * @property additive - Whether the gesture added to the prior selection vs replaced it
1185
+ * @property region - The world rectangle a marquee swept (some for a marquee; none otherwise)
1186
+ */
1187
+ readonly SelectionEvent: StructType<{
1188
+ readonly key: OptionType<StringType>;
1189
+ readonly selected: BooleanType;
1190
+ readonly selectedKeys: ArrayType<StringType>;
1191
+ readonly additive: BooleanType;
1192
+ readonly region: OptionType<StructType<{
1193
+ readonly minX: FloatType;
1194
+ readonly minY: FloatType;
1195
+ readonly maxX: FloatType;
1196
+ readonly maxY: FloatType;
1197
+ }>>;
1198
+ }>;
1199
+ /**
1200
+ * Viewport-settled event passed to `onViewportChange` — the camera zoom
1201
+ * plus the visible world rectangle, debounced to gesture settle points.
1202
+ *
1203
+ * @property zoom - The settled camera zoom (1 = fully zoomed out)
1204
+ * @property minX - Left edge of the visible world rect
1205
+ * @property minY - Top edge of the visible world rect
1206
+ * @property maxX - Right edge of the visible world rect
1207
+ * @property maxY - Bottom edge of the visible world rect
1208
+ */
1209
+ readonly ViewportEvent: StructType<{
1210
+ readonly zoom: FloatType;
1211
+ readonly minX: FloatType;
1212
+ readonly minY: FloatType;
1213
+ readonly maxX: FloatType;
1214
+ readonly maxY: FloatType;
1215
+ }>;
1216
+ /**
1217
+ * Zone selection-set change event passed to `onZoneSelectionChange` —
1218
+ * the selected zones plus the item keys inside them.
1219
+ *
1220
+ * @property key - The zone that triggered the change (some for a tap; none for a clear)
1221
+ * @property selected - Whether `key` is now selected; for bulk changes, whether the set is non-empty
1222
+ * @property selectedKeys - The full selected zone set after the gesture
1223
+ * @property childItemKeys - Item keys inside the selected zones (nested descendants included)
1224
+ * @property additive - Whether the gesture added to the prior selection vs replaced it
1225
+ */
1226
+ readonly ZoneSelectionEvent: StructType<{
1227
+ readonly key: OptionType<StringType>;
1228
+ readonly selected: BooleanType;
1229
+ readonly selectedKeys: ArrayType<StringType>;
1230
+ readonly childItemKeys: ArrayType<StringType>;
1231
+ readonly additive: BooleanType;
1232
+ }>;
1233
+ /**
1234
+ * Connect-gesture mode (`draw` | `connect`) — `draw` adds a physical
1235
+ * link locally; `connect` is event-only and repeatable.
1236
+ */
1237
+ readonly LinkMode: import("@elaraai/east").VariantType<{
1238
+ readonly draw: NullType;
1239
+ readonly connect: NullType;
1240
+ }>;
1241
+ /**
1242
+ * One connection's endpoints — the unit a connect gesture produces.
1243
+ *
1244
+ * @property key - Renderer-generated key for the gesture's connection
1245
+ * @property from - Source item key
1246
+ * @property to - Destination item key
1247
+ */
1248
+ readonly LinkEndpoints: StructType<{
1249
+ readonly key: StringType;
1250
+ readonly from: StringType;
1251
+ readonly to: StringType;
1252
+ }>;
1253
+ /**
1254
+ * Link-creation event passed to `onCreateLink` — the newest link, the
1255
+ * accumulated Shift-session, and the pair's existing links.
1256
+ *
1257
+ * @property link - The newest connection (this drag)
1258
+ * @property links - The full session set, `link` included
1259
+ * @property additive - True when Shift extended an open session
1260
+ * @property existing - Keys of links already joining the newest pair
1261
+ */
1262
+ readonly LinkCreateEvent: StructType<{
1263
+ readonly link: StructType<{
1264
+ readonly key: StringType;
1265
+ readonly from: StringType;
1266
+ readonly to: StringType;
1267
+ }>;
1268
+ readonly links: ArrayType<StructType<{
1269
+ readonly key: StringType;
1270
+ readonly from: StringType;
1271
+ readonly to: StringType;
1272
+ }>>;
1273
+ readonly net: StructType<{
1274
+ readonly key: StringType;
1275
+ readonly sources: ArrayType<StringType>;
1276
+ readonly destinations: ArrayType<StringType>;
1277
+ }>;
1278
+ readonly additive: BooleanType;
1279
+ readonly existing: ArrayType<StringType>;
1280
+ readonly absorbed: ArrayType<StringType>;
1281
+ }>;
1282
+ /**
1283
+ * Link-edit event passed to `onEditLink` — the endpoints AFTER an
1284
+ * endpoint connector re-target.
1285
+ *
1286
+ * @property key - The edited link's key
1287
+ * @property from - Source item key after the edit
1288
+ * @property to - Destination item key after the edit
1289
+ */
1290
+ readonly LinkEditEvent: StructType<{
1291
+ readonly key: StringType;
1292
+ readonly from: StringType;
1293
+ readonly to: StringType;
1294
+ }>;
1295
+ /**
1296
+ * A net — a manifold / bus link (many `sources` → many `destinations`,
1297
+ * drawn as a trunk with branches).
1298
+ *
1299
+ * @property key - Net identity
1300
+ * @property sources - Source item keys
1301
+ * @property destinations - Destination item keys
1302
+ * @property label - Optional mid-trunk label
1303
+ * @property metric - Optional mid-trunk metric (muted)
1304
+ * @property style - Stroke style for the whole net
1305
+ * @property route - Trunk routing mode
1306
+ * @property via - Optional trunk waypoints
1307
+ * @property layer - Optional layer membership
1308
+ */
1309
+ readonly Net: StructType<{
1310
+ readonly key: StringType;
1311
+ readonly sources: ArrayType<StringType>;
1312
+ readonly destinations: ArrayType<StringType>;
1313
+ readonly label: OptionType<StringType>;
1314
+ readonly metric: OptionType<StringType>;
1315
+ readonly style: import("@elaraai/east").VariantType<{
1316
+ readonly solid: StructType<{
1317
+ readonly tone: OptionType<import("@elaraai/east").VariantType<{
1318
+ readonly brand: NullType;
1319
+ readonly ink: NullType;
1320
+ readonly muted: NullType;
1321
+ readonly success: NullType;
1322
+ readonly warning: NullType;
1323
+ readonly danger: NullType;
1324
+ }>>;
1325
+ readonly weight: OptionType<FloatType>;
1326
+ }>;
1327
+ readonly dashed: StructType<{
1328
+ readonly tone: OptionType<import("@elaraai/east").VariantType<{
1329
+ readonly brand: NullType;
1330
+ readonly ink: NullType;
1331
+ readonly muted: NullType;
1332
+ readonly success: NullType;
1333
+ readonly warning: NullType;
1334
+ readonly danger: NullType;
1335
+ }>>;
1336
+ readonly weight: OptionType<FloatType>;
1337
+ }>;
1338
+ }>;
1339
+ readonly route: import("@elaraai/east").VariantType<{
1340
+ readonly orthogonal: StructType<{
1341
+ readonly corner: OptionType<FloatType>;
1342
+ }>;
1343
+ readonly direct: NullType;
1344
+ }>;
1345
+ readonly via: ArrayType<StructType<{
1346
+ readonly x: FloatType;
1347
+ readonly y: FloatType;
1348
+ }>>;
1349
+ readonly layer: OptionType<StringType>;
1350
+ }>;
1351
+ /**
1352
+ * A connect-session collapsed to net endpoints (stable session `key`)
1353
+ * — carried on every `onCreateLink` for upsert-style handlers.
1354
+ *
1355
+ * @property key - The session key (stable across the session's commits)
1356
+ * @property sources - Distinct source item keys so far
1357
+ * @property destinations - Distinct destination item keys so far
1358
+ */
1359
+ readonly NetEndpoints: StructType<{
1360
+ readonly key: StringType;
1361
+ readonly sources: ArrayType<StringType>;
1362
+ readonly destinations: ArrayType<StringType>;
1363
+ }>;
1364
+ /**
1365
+ * Item-move event passed to `onMoveItem` — the pressed item's final
1366
+ * position, every moved key (group move rides the selection), and the
1367
+ * shared world delta.
1368
+ *
1369
+ * @property key - The pressed item's key
1370
+ * @property x - Final world x
1371
+ * @property y - Final world y
1372
+ * @property keys - Every moved item (`key` included)
1373
+ * @property dx - Shared world x delta
1374
+ * @property dy - Shared world y delta
1375
+ */
1376
+ readonly ItemMoveEvent: StructType<{
1377
+ readonly key: StringType;
1378
+ readonly x: FloatType;
1379
+ readonly y: FloatType;
1380
+ readonly keys: ArrayType<StringType>;
1381
+ readonly dx: FloatType;
1382
+ readonly dy: FloatType;
1383
+ }>;
1556
1384
  };
1557
1385
  };
1558
1386
  //# sourceMappingURL=index.d.ts.map