@elaraai/east-ui 1.0.28 → 1.0.30

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
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { ArrayType, BooleanType, FloatType, FunctionType, NullType, OptionType, StringType, StructType, VariantType } from "@elaraai/east";
5
+ import { ArrayType, BooleanType, FloatType, NullType, OptionType, StringType, StructType, VariantType } from "@elaraai/east";
6
6
  /**
7
7
  * Theme tone for zone strokes, hatching, and links.
8
8
  *
@@ -377,6 +377,14 @@ export declare const SchematicItemType: StructType<{
377
377
  readonly fillOpacity: OptionType<FloatType>;
378
378
  /** Optional stroke width in px */
379
379
  readonly weight: OptionType<FloatType>;
380
+ /** Optional slice-excluded flag — when a {@link SchematicSliceEffectType}
381
+ * is active, a `some(true)` item is treated as filtered-out (ghosted /
382
+ * hidden per the effect); absent / `some(false)` ⇒ included / normal. */
383
+ readonly excluded: OptionType<BooleanType>;
384
+ /** Optional layer membership — the `key` of a {@link SchematicLayerType} in
385
+ * the root `layers`. Hidden when its layer is hidden; absent ⇒ unlayered
386
+ * (always visible). An unknown key is treated as always-visible. */
387
+ readonly layer: OptionType<StringType>;
380
388
  }>;
381
389
  /**
382
390
  * Type representing resolved placed items.
@@ -514,6 +522,9 @@ export declare const SchematicZoneType: StructType<{
514
522
  readonly fillOpacity: OptionType<FloatType>;
515
523
  /** Optional stroke width in px */
516
524
  readonly weight: OptionType<FloatType>;
525
+ /** Optional layer membership — the `key` of a {@link SchematicLayerType};
526
+ * hidden when its layer is hidden. Absent ⇒ unlayered (always visible). */
527
+ readonly layer: OptionType<StringType>;
517
528
  }>;
518
529
  /**
519
530
  * Type representing resolved zones.
@@ -525,6 +536,8 @@ export type SchematicZoneType = typeof SchematicZoneType;
525
536
  * @property key - Link identity
526
537
  * @property from - Source item key
527
538
  * @property to - Destination item key
539
+ * @property label - Optional mid-path label (name / flow description)
540
+ * @property metric - Optional mid-path metric readout (muted, after the label)
528
541
  * @property style - Render style (`solid` / `dashed`, with stroke config)
529
542
  * @property route - Routing mode (`orthogonal` / `direct`)
530
543
  * @property via - Optional world-coordinate waypoints, in order
@@ -536,6 +549,10 @@ export declare const SchematicLinkType: StructType<{
536
549
  readonly from: StringType;
537
550
  /** Destination item key */
538
551
  readonly to: StringType;
552
+ /** Optional label rendered mid-path (a name / flow description); hidden when zoomed out past the label band */
553
+ readonly label: OptionType<StringType>;
554
+ /** Optional metric rendered after the label mid-path (a rate / capacity readout), muted */
555
+ readonly metric: OptionType<StringType>;
539
556
  /** Render style (`solid` / `dashed`, with stroke config) */
540
557
  readonly style: VariantType<{
541
558
  /** A physical run (pipe, conveyor) */
@@ -596,867 +613,571 @@ export declare const SchematicLinkType: StructType<{
596
613
  /** World y */
597
614
  readonly y: FloatType;
598
615
  }>>;
616
+ /** Optional layer membership — the `key` of a {@link SchematicLayerType};
617
+ * hidden when its layer is hidden (a link also vanishes when either endpoint
618
+ * item is hidden). Absent ⇒ unlayered (always visible). */
619
+ readonly layer: OptionType<StringType>;
599
620
  }>;
600
621
  /**
601
622
  * Type representing resolved links.
602
623
  */
603
624
  export type SchematicLinkType = typeof SchematicLinkType;
604
625
  /**
605
- * East StructType for the Schematic component.
626
+ * Positive emphasis applied to the remaining (matched) items when a
627
+ * {@link SchematicSliceEffectType} is active.
628
+ *
629
+ * @remarks
630
+ * `halo` draws a static highlight ring behind each matched marker / card;
631
+ * `pulse` animates that ring (a slow breathing glow) to pull the eye to the
632
+ * survivors. `pulse` runs a lightweight animation loop; `halo` repaints on the
633
+ * normal frame path.
634
+ *
635
+ * @property halo - Static highlight ring on matched items
636
+ * @property pulse - Animated pulse ring on matched items
637
+ */
638
+ export declare const SchematicEmphasisType: VariantType<{
639
+ /** Static highlight ring on matched items. */
640
+ readonly halo: NullType;
641
+ /** Animated pulse ring on matched items. */
642
+ readonly pulse: NullType;
643
+ }>;
644
+ /**
645
+ * Type representing the matched-item emphasis style.
646
+ */
647
+ export type SchematicEmphasisType = typeof SchematicEmphasisType;
648
+ /**
649
+ * Optional slice-driven render effect — how the Schematic treats items once a
650
+ * bound slice narrows them, instead of the default "hidden completely". A flat
651
+ * bag of independently-optional settings, mirroring the flat `sliceHidden` /
652
+ * `sliceOpacity` / `sliceEmphasis` / … config props (each driven statically or
653
+ * reactively via `SubtypeExprOrValue`).
654
+ *
655
+ * @remarks
656
+ * Feed the **full** item set (not `Slice.rows`) and mark each item's `excluded`
657
+ * flag (e.g. via `Slice.partition`, or `Slice.apply.matches(...).not()`).
658
+ * `hidden` removes the filtered-out items entirely (else they stay as context);
659
+ * `opacity` / `desaturate` / `dot` de-emphasise the kept ones; `emphasis`
660
+ * highlights the remainder; `frame` boxes the matched set and `frameFit` also
661
+ * flies the camera to it. Every field absent is a no-op.
662
+ *
663
+ * @property hidden - Remove filtered-out items entirely; absent / `some(false)` ⇒ keep as context
664
+ * @property opacity - Fade alpha (0–1) for kept filtered-out items; absent ⇒ full
665
+ * @property desaturate - Drain kept filtered-out items' colour to grey
666
+ * @property dot - Collapse kept filtered-out items to a bare dot
667
+ * @property emphasis - Positive emphasis on matched items (absent ⇒ none)
668
+ * @property frame - Draw a bounding frame around the matched set
669
+ * @property frameFit - Auto-fit the camera to the matched frame when the set changes
670
+ */
671
+ export declare const SchematicSliceEffectType: StructType<{
672
+ /** Remove filtered-out items entirely; absent / `some(false)` ⇒ keep as context. */
673
+ readonly hidden: OptionType<BooleanType>;
674
+ /** Fade alpha (0–1) for kept filtered-out items; absent ⇒ full. */
675
+ readonly opacity: OptionType<FloatType>;
676
+ /** Drain kept filtered-out items' colour to grey. */
677
+ readonly desaturate: OptionType<BooleanType>;
678
+ /** Collapse kept filtered-out items to a bare dot (drop card / label / footprint). */
679
+ readonly dot: OptionType<BooleanType>;
680
+ /** Positive emphasis on matched items; absent ⇒ none. */
681
+ readonly emphasis: OptionType<VariantType<{
682
+ /** Static highlight ring on matched items. */
683
+ readonly halo: NullType;
684
+ /** Animated pulse ring on matched items. */
685
+ readonly pulse: NullType;
686
+ }>>;
687
+ /** Draw a bounding frame around the matched set. */
688
+ readonly frame: OptionType<BooleanType>;
689
+ /** Auto-fit the camera to the matched frame when the matched set changes. */
690
+ readonly frameFit: OptionType<BooleanType>;
691
+ }>;
692
+ /**
693
+ * Type representing the slice-driven render effect.
694
+ */
695
+ export type SchematicSliceEffectType = typeof SchematicSliceEffectType;
696
+ /**
697
+ * A named layer — a cross-cutting group of items / zones / links that can be
698
+ * shown, hidden, isolated (solo), locked, or dimmed together via the canvas
699
+ * layer button.
606
700
  *
607
701
  * @remarks
608
- * A 2D world-coordinate canvas for placing real-world entities (tanks,
609
- * bays, lines, cells) plus annotation zones and links, all from flat data
610
- * tables. **Read-only**: single-click selection only no events, no drag
611
- * & drop; editing routes through the linked Library.
702
+ * Membership is by `key`: an entity's `layer` field names the layer it belongs
703
+ * to. Layer visibility / lock are VIEW state (owned by the renderer, persisted
704
+ * per panel); the `visible` / `locked` here are the AUTHOR defaults the user's
705
+ * toggles override. `opacity` dims the layer's items (markers / footprints) in
706
+ * v1 (zone / link dimming is not yet applied). `tone` colours the panel swatch
707
+ * (theme-owned). Membership is strictly per-entity — hiding a container zone
708
+ * does not hide the items geometrically inside it.
709
+ *
710
+ * @property key - Layer identity — entities reference it via their `layer` field
711
+ * @property label - Display name shown in the layer panel
712
+ * @property visible - Author default visibility; absent / `some(true)` ⇒ shown, `some(false)` ⇒ ships hidden
713
+ * @property locked - Author default lock (non-selectable); absent ⇒ unlocked
714
+ * @property opacity - Optional item dim (0–1) for the layer's items; absent ⇒ full
715
+ * @property tone - Optional panel swatch tone
716
+ */
717
+ export declare const SchematicLayerType: StructType<{
718
+ /** Layer identity — entities reference it via their `layer` field. */
719
+ readonly key: StringType;
720
+ /** Display name shown in the layer panel. */
721
+ readonly label: StringType;
722
+ /** Author default visibility; `some(false)` ships hidden, absent ⇒ shown. */
723
+ readonly visible: OptionType<BooleanType>;
724
+ /** Author default lock (non-selectable); absent ⇒ unlocked. */
725
+ readonly locked: OptionType<BooleanType>;
726
+ /** Optional item dim (0–1) for the layer's items; absent ⇒ full. */
727
+ readonly opacity: OptionType<FloatType>;
728
+ /** Optional panel swatch tone. */
729
+ readonly tone: OptionType<VariantType<{
730
+ /** Brand teal */
731
+ readonly brand: NullType;
732
+ /** Foreground ink */
733
+ readonly ink: NullType;
734
+ /** Muted foreground */
735
+ readonly muted: NullType;
736
+ /** Status ok */
737
+ readonly success: NullType;
738
+ /** Status warn */
739
+ readonly warning: NullType;
740
+ /** Status bad */
741
+ readonly danger: NullType;
742
+ }>>;
743
+ }>;
744
+ /**
745
+ * Type representing a schematic layer.
746
+ */
747
+ export type SchematicLayerType = typeof SchematicLayerType;
748
+ /**
749
+ * Selection cardinality for the Schematic. Absent on the root ⇒ `single`.
750
+ *
751
+ * @remarks
752
+ * `single` keeps today's behaviour — one selected item at a time, no
753
+ * marquee. `multiple` is the multi-select mode: it reveals a marquee tool
754
+ * in a second control group, where a plain tap / box **replaces** the
755
+ * selection and **Shift**+tap / **Shift**+box **extend** it (Shift-tap
756
+ * toggles a single item; Shift-box unions). Esc / the clear button reset.
757
+ *
758
+ * @property single - At most one item selected; tap replaces (default; no marquee)
759
+ * @property multiple - Multi-select; tap / box replace, Shift+tap / Shift+box extend
760
+ */
761
+ export declare const SchematicSelectionModeType: VariantType<{
762
+ /** At most one item selected; tap replaces (default; no marquee). */
763
+ readonly single: NullType;
764
+ /** Multi-select; tap / box replace, Shift+tap toggles and Shift+box unions. */
765
+ readonly multiple: NullType;
766
+ }>;
767
+ /**
768
+ * Type representing the Schematic selection cardinality.
769
+ */
770
+ export type SchematicSelectionModeType = typeof SchematicSelectionModeType;
771
+ /**
772
+ * A world-coordinate rectangle swept by a marquee gesture — matches the
773
+ * box handed to the spatial index, so coordinates are world units.
774
+ *
775
+ * @property minX - Left edge (world units)
776
+ * @property minY - Top edge (world units)
777
+ * @property maxX - Right edge (world units)
778
+ * @property maxY - Bottom edge (world units)
779
+ */
780
+ export declare const SchematicRegionType: StructType<{
781
+ /** Left edge (world units). */
782
+ readonly minX: FloatType;
783
+ /** Top edge (world units). */
784
+ readonly minY: FloatType;
785
+ /** Right edge (world units). */
786
+ readonly maxX: FloatType;
787
+ /** Bottom edge (world units). */
788
+ readonly maxY: FloatType;
789
+ }>;
790
+ /**
791
+ * Type representing a swept marquee region.
792
+ */
793
+ export type SchematicRegionType = typeof SchematicRegionType;
794
+ /**
795
+ * Selection-set change event — the Schematic analogue of Table's
796
+ * `TableRowSelectionEventType`. Passed to `onSelectionChange` whenever the
797
+ * selected set changes (a tap, a marquee sweep, or a clear).
798
+ *
799
+ * @remarks
800
+ * `key` is `some` for a single-item tap and `none` for a bulk marquee or a
801
+ * clear. `selectedKeys` is always the FULL selection after the gesture (the
802
+ * spatial analogue of `selectedRowsIndices`). `region` is `some` only for a
803
+ * marquee sweep.
804
+ *
805
+ * @property key - The item that triggered the change (some for a tap; none for marquee / clear)
806
+ * @property selected - Whether `key` is now selected (for a tap); for bulk changes, whether the set is non-empty
807
+ * @property selectedKeys - The full selected set after the gesture
808
+ * @property additive - Whether the gesture added to the prior selection (true) or replaced it (false)
809
+ * @property region - The world rectangle a marquee swept (some for a marquee; none for tap / clear)
810
+ */
811
+ export declare const SchematicSelectionEventType: StructType<{
812
+ /** The item that triggered the change (some for a tap; none for marquee / clear). */
813
+ readonly key: OptionType<StringType>;
814
+ /** Whether `key` is now selected (tap); for bulk changes, whether the set is non-empty. */
815
+ readonly selected: BooleanType;
816
+ /** The full selected set after the gesture. */
817
+ readonly selectedKeys: ArrayType<StringType>;
818
+ /** Whether the gesture added to the prior selection (true) or replaced it (false). */
819
+ readonly additive: BooleanType;
820
+ /** The world rectangle a marquee swept (some for a marquee; none for tap / clear). */
821
+ readonly region: OptionType<StructType<{
822
+ /** Left edge (world units). */
823
+ readonly minX: FloatType;
824
+ /** Top edge (world units). */
825
+ readonly minY: FloatType;
826
+ /** Right edge (world units). */
827
+ readonly maxX: FloatType;
828
+ /** Bottom edge (world units). */
829
+ readonly maxY: FloatType;
830
+ }>>;
831
+ }>;
832
+ /**
833
+ * Type representing a Schematic selection-set change event.
834
+ */
835
+ export type SchematicSelectionEventType = typeof SchematicSelectionEventType;
836
+ /**
837
+ * Viewport-settled event — the camera zoom plus the visible world rectangle,
838
+ * reported (debounced) after a pan / zoom / fly / resize settles. Passed to
839
+ * `onViewportChange` so hosts can sync external UI, lazy-load data for the
840
+ * visible region, or persist the view.
612
841
  *
613
- * @property extent - World-coordinate bounds (the canvas scales to fit)
614
- * @property items - The placed items
615
- * @property zones - Annotation zones (rooms, cells, walkway bands)
616
- * @property links - Connections between items, addressed by key
617
- * @property scaleUnit - Optional unit for the bottom-right scale bar
618
- * @property grid - Metric grid aligned to the scale legend
619
- * @property navigator - Navigator rail (zones → items TOC)
620
- * @property minimap - Minimap with the viewport rectangle
621
- * @property height - Optional fixed panel height (any CSS length)
622
- * @property onSelect - Optional item-click callback (receives the item key)
842
+ * @property zoom - The settled camera zoom (1 = fully zoomed out)
843
+ * @property minX - Left edge of the visible world rect
844
+ * @property minY - Top edge of the visible world rect
845
+ * @property maxX - Right edge of the visible world rect
846
+ * @property maxY - Bottom edge of the visible world rect
623
847
  */
624
- export declare const SchematicRootType: StructType<{
625
- /** World-coordinate bounds (the canvas scales to fit) */
626
- readonly extent: StructType<{
627
- /** World width */
628
- readonly width: FloatType;
629
- /** World height */
630
- readonly height: FloatType;
848
+ export declare const SchematicViewportEventType: StructType<{
849
+ /** The settled camera zoom (1 = fully zoomed out). */
850
+ readonly zoom: FloatType;
851
+ /** Left edge of the visible world rect. */
852
+ readonly minX: FloatType;
853
+ /** Top edge of the visible world rect. */
854
+ readonly minY: FloatType;
855
+ /** Right edge of the visible world rect. */
856
+ readonly maxX: FloatType;
857
+ /** Bottom edge of the visible world rect. */
858
+ readonly maxY: FloatType;
859
+ }>;
860
+ /**
861
+ * Type representing a Schematic viewport-settled event.
862
+ */
863
+ export type SchematicViewportEventType = typeof SchematicViewportEventType;
864
+ /**
865
+ * Zone (area) selection-set change event — the zone analogue of
866
+ * `SchematicSelectionEventType`, passed to `onZoneSelectionChange` whenever
867
+ * the selected ZONE set changes (a tap on a zone body, a nav-rail zone click,
868
+ * or a clear).
869
+ *
870
+ * @remarks
871
+ * `childItemKeys` reports the items sitting **inside** the selected zones —
872
+ * an item counts when its innermost containing zone, or any of that zone's
873
+ * ancestors, is selected (so selecting a hall includes items in its nested
874
+ * cells). Items always take hit-test precedence: tapping an item never
875
+ * selects its host zone.
876
+ *
877
+ * @property key - The zone that triggered the change (some for a tap; none for a clear)
878
+ * @property selected - Whether `key` is now selected; for bulk changes, whether the set is non-empty
879
+ * @property selectedKeys - The full selected zone set after the gesture
880
+ * @property childItemKeys - Item keys inside the selected zones (nested descendants included)
881
+ * @property additive - Whether the gesture added to the prior selection (true) or replaced it (false)
882
+ */
883
+ export declare const SchematicZoneSelectionEventType: StructType<{
884
+ /** The zone that triggered the change (some for a tap; none for a clear). */
885
+ readonly key: OptionType<StringType>;
886
+ /** Whether `key` is now selected (tap); for bulk changes, whether the set is non-empty. */
887
+ readonly selected: BooleanType;
888
+ /** The full selected zone set after the gesture. */
889
+ readonly selectedKeys: ArrayType<StringType>;
890
+ /** Item keys inside the selected zones (nested descendants included). */
891
+ readonly childItemKeys: ArrayType<StringType>;
892
+ /** Whether the gesture added to the prior selection (true) or replaced it (false). */
893
+ readonly additive: BooleanType;
894
+ }>;
895
+ /**
896
+ * Type representing a Schematic zone selection-set change event.
897
+ */
898
+ export type SchematicZoneSelectionEventType = typeof SchematicZoneSelectionEventType;
899
+ /**
900
+ * Link-gesture mode for the connect tool. Absent on the root ⇒ `draw`.
901
+ *
902
+ * @remarks
903
+ * `draw`: a committed connect gesture adds a **physical link** to the
904
+ * renderer's local link state (the form-input model — works with no callback
905
+ * wired), and `onCreateLink` fires in addition. `connect`: the gesture is a
906
+ * **pure connection event** — nothing is added; only `onCreateLink` fires
907
+ * (with the pair, the accumulated session, and any existing links between the
908
+ * endpoints), and the gesture stays repeatable — the channel for planning
909
+ * operations between plant areas rather than drawing pipes.
910
+ *
911
+ * @property draw - The gesture draws a physical link (local-state-first)
912
+ * @property connect - The gesture only fires the event (nothing added; repeatable)
913
+ */
914
+ export declare const SchematicLinkModeType: VariantType<{
915
+ /** The gesture draws a physical link (local-state-first). */
916
+ readonly draw: NullType;
917
+ /** The gesture only fires the event (nothing added; repeatable). */
918
+ readonly connect: NullType;
919
+ }>;
920
+ /**
921
+ * Type representing the Schematic link-gesture mode.
922
+ */
923
+ export type SchematicLinkModeType = typeof SchematicLinkModeType;
924
+ /**
925
+ * One connection's endpoints — the unit a connect gesture produces.
926
+ *
927
+ * @property key - Renderer-generated key for the gesture's connection
928
+ * @property from - Source item key
929
+ * @property to - Destination item key
930
+ */
931
+ export declare const SchematicLinkEndpointsType: StructType<{
932
+ /** Renderer-generated key for the gesture's connection. */
933
+ readonly key: StringType;
934
+ /** Source item key. */
935
+ readonly from: StringType;
936
+ /** Destination item key. */
937
+ readonly to: StringType;
938
+ }>;
939
+ /**
940
+ * Type representing a connect gesture's endpoints.
941
+ */
942
+ export type SchematicLinkEndpointsType = typeof SchematicLinkEndpointsType;
943
+ /**
944
+ * A connect-session collapsed to net endpoints — carried on every
945
+ * `onCreateLink` so handlers can upsert ONE net per session.
946
+ *
947
+ * @remarks
948
+ * `key` is the SESSION key, stable across all of a session's commits: the
949
+ * plain drag and every Shift-extension report the same `key` with the
950
+ * accumulated `sources` (distinct froms) and `destinations` (distinct tos).
951
+ *
952
+ * @property key - The session key (stable across the session's commits)
953
+ * @property sources - Distinct source item keys so far
954
+ * @property destinations - Distinct destination item keys so far
955
+ */
956
+ export declare const SchematicNetEndpointsType: StructType<{
957
+ /** The session key (stable across the session's commits). */
958
+ readonly key: StringType;
959
+ /** Distinct source item keys so far. */
960
+ readonly sources: ArrayType<StringType>;
961
+ /** Distinct destination item keys so far. */
962
+ readonly destinations: ArrayType<StringType>;
963
+ }>;
964
+ /**
965
+ * Type representing a session's net endpoints.
966
+ */
967
+ export type SchematicNetEndpointsType = typeof SchematicNetEndpointsType;
968
+ /**
969
+ * A net — a manifold / bus link joining MANY sources to MANY destinations as
970
+ * ONE entity, rendered as a trunk with per-endpoint branches.
971
+ *
972
+ * @remarks
973
+ * Use a net when the real topology is a shared run (a CIP manifold feeding
974
+ * 30 units, a header bridging two banks) — one row instead of a pairwise
975
+ * `links` explosion. The trunk routes like a link (`route`, with `via` as
976
+ * TRUNK waypoints); each source branches into the trunk head, each
977
+ * destination off the tail. A branch drops when its endpoint item is hidden
978
+ * (layer / slice-hide); the whole net hides when either side empties, or
979
+ * when its own `layer` is hidden.
980
+ *
981
+ * @property key - Net identity (participates in link selection / deletion)
982
+ * @property sources - Source item keys (the feeding side)
983
+ * @property destinations - Destination item keys (the fed side)
984
+ * @property label - Optional mid-trunk label (name / flow description)
985
+ * @property metric - Optional mid-trunk metric readout (muted, after the label)
986
+ * @property style - Render style (`solid` / `dashed`) — one stroke for the whole net
987
+ * @property route - Trunk routing mode (`orthogonal` / `direct`)
988
+ * @property via - Optional world-coordinate TRUNK waypoints, in order
989
+ * @property layer - Optional layer membership — hidden when its layer is hidden
990
+ */
991
+ export declare const SchematicNetType: StructType<{
992
+ /** Net identity (participates in link selection / deletion) */
993
+ readonly key: StringType;
994
+ /** Source item keys (the feeding side) */
995
+ readonly sources: ArrayType<StringType>;
996
+ /** Destination item keys (the fed side) */
997
+ readonly destinations: ArrayType<StringType>;
998
+ /** Optional label rendered mid-trunk */
999
+ readonly label: OptionType<StringType>;
1000
+ /** Optional metric rendered after the label mid-trunk, muted */
1001
+ readonly metric: OptionType<StringType>;
1002
+ /** Render style (`solid` / `dashed`, with stroke config) */
1003
+ readonly style: VariantType<{
1004
+ /** A physical run (pipe, conveyor) */
1005
+ readonly solid: StructType<{
1006
+ /** Stroke tone (default `brand`) */
1007
+ readonly tone: OptionType<VariantType<{
1008
+ /** Brand teal */
1009
+ readonly brand: NullType;
1010
+ /** Foreground ink */
1011
+ readonly ink: NullType;
1012
+ /** Muted foreground */
1013
+ readonly muted: NullType;
1014
+ /** Status ok */
1015
+ readonly success: NullType;
1016
+ /** Status warn */
1017
+ readonly warning: NullType;
1018
+ /** Status bad */
1019
+ readonly danger: NullType;
1020
+ }>>;
1021
+ /** Stroke width in pixels (default 2.5) */
1022
+ readonly weight: OptionType<FloatType>;
1023
+ }>;
1024
+ /** A routing / logical connection */
1025
+ readonly dashed: StructType<{
1026
+ /** Stroke tone (default `muted`) */
1027
+ readonly tone: OptionType<VariantType<{
1028
+ /** Brand teal */
1029
+ readonly brand: NullType;
1030
+ /** Foreground ink */
1031
+ readonly ink: NullType;
1032
+ /** Muted foreground */
1033
+ readonly muted: NullType;
1034
+ /** Status ok */
1035
+ readonly success: NullType;
1036
+ /** Status warn */
1037
+ readonly warning: NullType;
1038
+ /** Status bad */
1039
+ readonly danger: NullType;
1040
+ }>>;
1041
+ /** Stroke width in pixels (default 1.5) */
1042
+ readonly weight: OptionType<FloatType>;
1043
+ }>;
631
1044
  }>;
632
- /** The placed items */
633
- readonly items: ArrayType<StructType<{
634
- /** Item identity links reference it; `onSelect` returns it */
635
- readonly key: StringType;
636
- /** World x of the card centre */
1045
+ /** Trunk routing mode (`orthogonal` / `direct`) */
1046
+ readonly route: VariantType<{
1047
+ /** Axis-aligned with rounded corners */
1048
+ readonly orthogonal: StructType<{
1049
+ /** Corner radius in pixels (default 8) */
1050
+ readonly corner: OptionType<FloatType>;
1051
+ }>;
1052
+ /** Straight segments between anchors */
1053
+ readonly direct: NullType;
1054
+ }>;
1055
+ /** Optional world-coordinate trunk waypoints, in order */
1056
+ readonly via: ArrayType<StructType<{
1057
+ /** World x */
637
1058
  readonly x: FloatType;
638
- /** World y of the card centre */
1059
+ /** World y */
639
1060
  readonly y: FloatType;
640
- /** Primary identity line */
641
- readonly label: StringType;
642
- /** Optional muted second line (kind / capacity) */
643
- readonly sublabel: OptionType<StringType>;
644
- /** Optional Font Awesome solid icon name */
645
- readonly icon: OptionType<StringType>;
646
- /** Optional status dot tone */
647
- readonly status: OptionType<VariantType<{
648
- readonly success: NullType;
649
- readonly warning: NullType;
650
- readonly danger: NullType;
651
- readonly info: NullType;
652
- readonly neutral: NullType;
653
- }>>;
654
- /** Optional mini utilisation bar */
655
- readonly meter: OptionType<StructType<{
656
- /** Current value */
657
- readonly value: FloatType;
658
- /** Full-scale value */
659
- readonly max: FloatType;
660
- }>>;
661
- /** Optional live metric text */
662
- readonly metric: OptionType<StringType>;
663
- /** Optional world width — renders the wide bar form */
664
- readonly width: OptionType<FloatType>;
665
- /** Optional shape footprint; absent ⇒ point + icon (`x/y` stay the anchor/centroid) */
666
- readonly footprint: OptionType<VariantType<{
667
- /** Axis-aligned box — zones use `x/y/width/height`; items, the point / marker form. */
668
- readonly rect: NullType;
669
- /** Circle centred on the entity anchor (item `x/y` or zone bbox centre); `radius` in world units. */
670
- readonly circle: StructType<{
671
- /** Circle radius in world units. */
672
- readonly radius: FloatType;
673
- }>;
674
- /** Open, arc-aware polyline in world coords; optional world-space band width. */
675
- readonly polyline: StructType<{
676
- /** Vertices in world coords, in order (each carries a DXF bulge). */
677
- readonly vertices: ArrayType<StructType<{
678
- /** World x */
679
- readonly x: FloatType;
680
- /** World y */
681
- readonly y: FloatType;
682
- /** DXF bulge for the edge to the next vertex (0 = straight; `tan(includedAngle / 4)`). */
683
- readonly bulge: FloatType;
684
- }>>;
685
- /** Optional band width in world units — the stroke widens into a road / aisle. */
686
- readonly width: OptionType<FloatType>;
687
- }>;
688
- /** Closed, arc-aware polygon in world coords (>= 3 vertices, auto-closed). */
689
- readonly polygon: StructType<{
690
- /** Boundary vertices in world coords, in order (each carries a DXF bulge). */
691
- readonly vertices: ArrayType<StructType<{
692
- /** World x */
693
- readonly x: FloatType;
694
- /** World y */
695
- readonly y: FloatType;
696
- /** DXF bulge for the edge to the next vertex (0 = straight; `tan(includedAngle / 4)`). */
697
- readonly bulge: FloatType;
698
- }>>;
699
- }>;
700
- }>>;
701
- /** Optional colour override (semantic tone); absent ⇒ `status` drives the colour */
702
- readonly tone: OptionType<VariantType<{
703
- /** Brand teal */
704
- readonly brand: NullType;
705
- /** Foreground ink */
706
- readonly ink: NullType;
707
- /** Muted foreground */
708
- readonly muted: NullType;
709
- /** Status ok */
710
- readonly success: NullType;
711
- /** Status warn */
712
- readonly warning: NullType;
713
- /** Status bad */
714
- readonly danger: NullType;
715
- }>>;
716
- /** Optional raw CSS stroke / marker tint (e.g. `"#2D7FF9"`, `"teal"`); wins over `tone` */
717
- readonly color: OptionType<StringType>;
718
- /** Optional raw CSS fill for a polygon / circle footprint */
719
- readonly bg: OptionType<StringType>;
720
- /** Optional fill alpha (0–1) for a polygon / circle footprint */
721
- readonly fillOpacity: OptionType<FloatType>;
722
- /** Optional stroke width in px */
723
- readonly weight: OptionType<FloatType>;
724
1061
  }>>;
725
- /** Annotation zones (rooms, cells, walkway bands) */
726
- readonly zones: ArrayType<StructType<{
727
- /** Zone identity */
1062
+ /** Optional layer membership hidden when its layer is hidden */
1063
+ readonly layer: OptionType<StringType>;
1064
+ }>;
1065
+ /**
1066
+ * Type representing a net (manifold / bus link).
1067
+ */
1068
+ export type SchematicNetType = typeof SchematicNetType;
1069
+ /**
1070
+ * Link-creation event passed to `onCreateLink` on every committed connect
1071
+ * gesture.
1072
+ *
1073
+ * @remarks
1074
+ * Connect gestures build a **session**: a plain drag starts a new session
1075
+ * (one connection); a **Shift**+drag ADDS to the open session — mirroring
1076
+ * Shift = "extend the set" in the selection modes — so an operation relating
1077
+ * MORE than two items is built one visual link at a time. The event always
1078
+ * carries the newest `link`, the FULL accumulated `links` session (newest
1079
+ * included), whether the gesture was `additive` (Shift), and the keys of
1080
+ * `existing` links already joining the newest pair (either direction).
1081
+ *
1082
+ * @property link - The newest connection (this drag)
1083
+ * @property links - The full session set, `link` included (length 1 for a plain drag)
1084
+ * @property net - The session collapsed to net endpoints (stable session `key` — upsert-friendly)
1085
+ * @property additive - True when Shift extended an open session
1086
+ * @property existing - Keys of links already joining the newest from↔to (either direction)
1087
+ * @property absorbed - Keys of existing pairwise links absorbed into the session (selected-link seed)
1088
+ */
1089
+ export declare const SchematicLinkCreateEventType: StructType<{
1090
+ /** The newest connection (this drag). */
1091
+ readonly link: StructType<{
1092
+ /** Renderer-generated key for the gesture's connection. */
728
1093
  readonly key: StringType;
729
- /** Mono eyebrow label on the boundary */
730
- readonly label: StringType;
731
- /** World x of the top-left corner */
732
- readonly x: FloatType;
733
- /** World y of the top-left corner */
734
- readonly y: FloatType;
735
- /** World width */
736
- readonly width: FloatType;
737
- /** World height */
738
- readonly height: FloatType;
739
- /** Render pattern (`outline` / `hatch`) */
740
- readonly pattern: VariantType<{
741
- /** Dashed boundary with an eyebrow label (rooms, cells) */
742
- readonly outline: StructType<{
743
- /** Stroke tone (default `muted`) */
744
- readonly tone: OptionType<VariantType<{
745
- /** Brand teal */
746
- readonly brand: NullType;
747
- /** Foreground ink */
748
- readonly ink: NullType;
749
- /** Muted foreground */
750
- readonly muted: NullType;
751
- /** Status ok */
752
- readonly success: NullType;
753
- /** Status warn */
754
- readonly warning: NullType;
755
- /** Status bad */
756
- readonly danger: NullType;
757
- }>>;
758
- }>;
759
- /** Hatched band (walkways, aisles, exclusion strips) */
760
- readonly hatch: StructType<{
761
- /** Hatch-line tone (default `muted`) */
762
- readonly tone: OptionType<VariantType<{
763
- /** Brand teal */
764
- readonly brand: NullType;
765
- /** Foreground ink */
766
- readonly ink: NullType;
767
- /** Muted foreground */
768
- readonly muted: NullType;
769
- /** Status ok */
770
- readonly success: NullType;
771
- /** Status warn */
772
- readonly warning: NullType;
773
- /** Status bad */
774
- readonly danger: NullType;
775
- }>>;
776
- /** Line spacing in pixels (default 8) */
777
- readonly spacing: OptionType<FloatType>;
778
- /** Line angle in degrees (default 45) */
779
- readonly angle: OptionType<FloatType>;
780
- }>;
781
- }>;
782
- /** Optional shape geometry; absent ⇒ rect (`x/y/width/height` stay the bounding box) */
783
- readonly geometry: OptionType<VariantType<{
784
- /** Axis-aligned box — zones use `x/y/width/height`; items, the point / marker form. */
785
- readonly rect: NullType;
786
- /** Circle centred on the entity anchor (item `x/y` or zone bbox centre); `radius` in world units. */
787
- readonly circle: StructType<{
788
- /** Circle radius in world units. */
789
- readonly radius: FloatType;
790
- }>;
791
- /** Open, arc-aware polyline in world coords; optional world-space band width. */
792
- readonly polyline: StructType<{
793
- /** Vertices in world coords, in order (each carries a DXF bulge). */
794
- readonly vertices: ArrayType<StructType<{
795
- /** World x */
796
- readonly x: FloatType;
797
- /** World y */
798
- readonly y: FloatType;
799
- /** DXF bulge for the edge to the next vertex (0 = straight; `tan(includedAngle / 4)`). */
800
- readonly bulge: FloatType;
801
- }>>;
802
- /** Optional band width in world units — the stroke widens into a road / aisle. */
803
- readonly width: OptionType<FloatType>;
804
- }>;
805
- /** Closed, arc-aware polygon in world coords (>= 3 vertices, auto-closed). */
806
- readonly polygon: StructType<{
807
- /** Boundary vertices in world coords, in order (each carries a DXF bulge). */
808
- readonly vertices: ArrayType<StructType<{
809
- /** World x */
810
- readonly x: FloatType;
811
- /** World y */
812
- readonly y: FloatType;
813
- /** DXF bulge for the edge to the next vertex (0 = straight; `tan(includedAngle / 4)`). */
814
- readonly bulge: FloatType;
815
- }>>;
816
- }>;
817
- }>>;
818
- /** Optional colour override (semantic tone); absent ⇒ the `pattern`'s tone drives the colour */
819
- readonly tone: OptionType<VariantType<{
820
- /** Brand teal */
821
- readonly brand: NullType;
822
- /** Foreground ink */
823
- readonly ink: NullType;
824
- /** Muted foreground */
825
- readonly muted: NullType;
826
- /** Status ok */
827
- readonly success: NullType;
828
- /** Status warn */
829
- readonly warning: NullType;
830
- /** Status bad */
831
- readonly danger: NullType;
832
- }>>;
833
- /** Optional raw CSS stroke tint (e.g. `"#2D7FF9"`, `"teal"`); wins over `tone` */
834
- readonly color: OptionType<StringType>;
835
- /** Optional raw CSS area fill (opt-in; zones are unfilled by default) */
836
- readonly bg: OptionType<StringType>;
837
- /** Optional fill alpha (0–1) for the area fill */
838
- readonly fillOpacity: OptionType<FloatType>;
839
- /** Optional stroke width in px */
840
- readonly weight: OptionType<FloatType>;
841
- }>>;
842
- /** Connections between items, addressed by key */
1094
+ /** Source item key. */
1095
+ readonly from: StringType;
1096
+ /** Destination item key. */
1097
+ readonly to: StringType;
1098
+ }>;
1099
+ /** The full session set, `link` included (length 1 for a plain drag). */
843
1100
  readonly links: ArrayType<StructType<{
844
- /** Link identity */
1101
+ /** Renderer-generated key for the gesture's connection. */
845
1102
  readonly key: StringType;
846
- /** Source item key */
1103
+ /** Source item key. */
847
1104
  readonly from: StringType;
848
- /** Destination item key */
1105
+ /** Destination item key. */
849
1106
  readonly to: StringType;
850
- /** Render style (`solid` / `dashed`, with stroke config) */
851
- readonly style: VariantType<{
852
- /** A physical run (pipe, conveyor) */
853
- readonly solid: StructType<{
854
- /** Stroke tone (default `brand`) */
855
- readonly tone: OptionType<VariantType<{
856
- /** Brand teal */
857
- readonly brand: NullType;
858
- /** Foreground ink */
859
- readonly ink: NullType;
860
- /** Muted foreground */
861
- readonly muted: NullType;
862
- /** Status ok */
863
- readonly success: NullType;
864
- /** Status warn */
865
- readonly warning: NullType;
866
- /** Status bad */
867
- readonly danger: NullType;
868
- }>>;
869
- /** Stroke width in pixels (default 2.5) */
870
- readonly weight: OptionType<FloatType>;
871
- }>;
872
- /** A routing / logical connection */
873
- readonly dashed: StructType<{
874
- /** Stroke tone (default `muted`) */
875
- readonly tone: OptionType<VariantType<{
876
- /** Brand teal */
877
- readonly brand: NullType;
878
- /** Foreground ink */
879
- readonly ink: NullType;
880
- /** Muted foreground */
881
- readonly muted: NullType;
882
- /** Status ok */
883
- readonly success: NullType;
884
- /** Status warn */
885
- readonly warning: NullType;
886
- /** Status bad */
887
- readonly danger: NullType;
888
- }>>;
889
- /** Stroke width in pixels (default 1.5) */
890
- readonly weight: OptionType<FloatType>;
891
- }>;
892
- }>;
893
- /** Routing mode (`orthogonal` / `direct`) */
894
- readonly route: VariantType<{
895
- /** Axis-aligned with rounded corners */
896
- readonly orthogonal: StructType<{
897
- /** Corner radius in pixels (default 8) */
898
- readonly corner: OptionType<FloatType>;
899
- }>;
900
- /** Straight segments between anchors */
901
- readonly direct: NullType;
902
- }>;
903
- /** Optional world-coordinate waypoints, in order */
904
- readonly via: ArrayType<StructType<{
905
- /** World x */
906
- readonly x: FloatType;
907
- /** World y */
908
- readonly y: FloatType;
909
- }>>;
910
- }>>;
911
- /** Optional unit for the bottom-right scale bar */
912
- readonly scaleUnit: OptionType<StringType>;
913
- /** Metric grid aligned to the scale legend; default on */
914
- readonly grid: OptionType<BooleanType>;
915
- /** Navigator rail (zones → items TOC); default: shown when zones exist */
916
- readonly navigator: OptionType<BooleanType>;
917
- /** Minimap with the viewport rectangle; default: shown for large canvases */
918
- readonly minimap: OptionType<BooleanType>;
919
- /** Optional Slice chrome — a full-width top-edge rail mounting the affordances (replaces the built-in search) */
920
- readonly slice: OptionType<StructType<{
921
- readonly slice: StructType<{
922
- readonly key: StringType;
923
- readonly read: FunctionType<[], StructType<{
924
- readonly range: OptionType<VariantType<{
925
- readonly datetime: StructType<{
926
- readonly from: import("@elaraai/east").DateTimeType;
927
- readonly to: import("@elaraai/east").DateTimeType;
928
- }>;
929
- readonly datetimePreset: VariantType<{
930
- readonly today: NullType;
931
- readonly last7d: NullType;
932
- readonly last30d: NullType;
933
- readonly last90d: NullType;
934
- readonly ytd: NullType;
935
- }>;
936
- readonly integer: StructType<{
937
- readonly from: import("@elaraai/east").IntegerType;
938
- readonly to: import("@elaraai/east").IntegerType;
939
- }>;
940
- readonly float: StructType<{
941
- readonly from: FloatType;
942
- readonly to: FloatType;
943
- }>;
944
- }>>;
945
- readonly compare: OptionType<VariantType<{
946
- readonly previousPeriod: NullType;
947
- readonly previousYear: NullType;
948
- }>>;
949
- readonly filters: ArrayType<VariantType<{
950
- readonly string: StructType<{
951
- readonly fieldId: StringType;
952
- readonly op: VariantType<{
953
- readonly eq: StringType;
954
- readonly neq: StringType;
955
- readonly in: import("@elaraai/east").SetType<StringType>;
956
- readonly notIn: import("@elaraai/east").SetType<StringType>;
957
- readonly contains: StringType;
958
- readonly matches: StringType;
959
- }>;
960
- }>;
961
- readonly integer: StructType<{
962
- readonly fieldId: StringType;
963
- readonly op: VariantType<{
964
- readonly eq: import("@elaraai/east").IntegerType;
965
- readonly neq: import("@elaraai/east").IntegerType;
966
- readonly lt: import("@elaraai/east").IntegerType;
967
- readonly lte: import("@elaraai/east").IntegerType;
968
- readonly gt: import("@elaraai/east").IntegerType;
969
- readonly gte: import("@elaraai/east").IntegerType;
970
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
971
- }>;
972
- }>;
973
- readonly float: StructType<{
974
- readonly fieldId: StringType;
975
- readonly op: VariantType<{
976
- readonly lt: FloatType;
977
- readonly lte: FloatType;
978
- readonly gt: FloatType;
979
- readonly gte: FloatType;
980
- }>;
981
- }>;
982
- readonly datetime: StructType<{
983
- readonly fieldId: StringType;
984
- readonly op: VariantType<{
985
- readonly before: import("@elaraai/east").DateTimeType;
986
- readonly after: import("@elaraai/east").DateTimeType;
987
- readonly between: StructType<{
988
- readonly from: import("@elaraai/east").DateTimeType;
989
- readonly to: import("@elaraai/east").DateTimeType;
990
- }>;
991
- }>;
992
- }>;
993
- readonly boolean: StructType<{
994
- readonly fieldId: StringType;
995
- readonly op: VariantType<{
996
- readonly is: BooleanType;
997
- }>;
998
- }>;
999
- }>>;
1000
- readonly cohorts: ArrayType<StructType<{
1001
- readonly id: StringType;
1002
- readonly name: StringType;
1003
- readonly filters: ArrayType<VariantType<{
1004
- readonly string: StructType<{
1005
- readonly fieldId: StringType;
1006
- readonly op: VariantType<{
1007
- readonly eq: StringType;
1008
- readonly neq: StringType;
1009
- readonly in: import("@elaraai/east").SetType<StringType>;
1010
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1011
- readonly contains: StringType;
1012
- readonly matches: StringType;
1013
- }>;
1014
- }>;
1015
- readonly integer: StructType<{
1016
- readonly fieldId: StringType;
1017
- readonly op: VariantType<{
1018
- readonly eq: import("@elaraai/east").IntegerType;
1019
- readonly neq: import("@elaraai/east").IntegerType;
1020
- readonly lt: import("@elaraai/east").IntegerType;
1021
- readonly lte: import("@elaraai/east").IntegerType;
1022
- readonly gt: import("@elaraai/east").IntegerType;
1023
- readonly gte: import("@elaraai/east").IntegerType;
1024
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1025
- }>;
1026
- }>;
1027
- readonly float: StructType<{
1028
- readonly fieldId: StringType;
1029
- readonly op: VariantType<{
1030
- readonly lt: FloatType;
1031
- readonly lte: FloatType;
1032
- readonly gt: FloatType;
1033
- readonly gte: FloatType;
1034
- }>;
1035
- }>;
1036
- readonly datetime: StructType<{
1037
- readonly fieldId: StringType;
1038
- readonly op: VariantType<{
1039
- readonly before: import("@elaraai/east").DateTimeType;
1040
- readonly after: import("@elaraai/east").DateTimeType;
1041
- readonly between: StructType<{
1042
- readonly from: import("@elaraai/east").DateTimeType;
1043
- readonly to: import("@elaraai/east").DateTimeType;
1044
- }>;
1045
- }>;
1046
- }>;
1047
- readonly boolean: StructType<{
1048
- readonly fieldId: StringType;
1049
- readonly op: VariantType<{
1050
- readonly is: BooleanType;
1051
- }>;
1052
- }>;
1053
- }>>;
1054
- }>>;
1055
- readonly activeCohorts: import("@elaraai/east").SetType<StringType>;
1056
- readonly breakdown: OptionType<StructType<{
1057
- readonly fieldId: StringType;
1058
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
1059
- }>>;
1060
- readonly search: OptionType<StringType>;
1061
- readonly visible: OptionType<import("@elaraai/east").SetType<StringType>>;
1062
- readonly selectedIndex: OptionType<import("@elaraai/east").IntegerType>;
1063
- }>>;
1064
- readonly write: FunctionType<[StructType<{
1065
- readonly range: OptionType<VariantType<{
1066
- readonly datetime: StructType<{
1067
- readonly from: import("@elaraai/east").DateTimeType;
1068
- readonly to: import("@elaraai/east").DateTimeType;
1069
- }>;
1070
- readonly datetimePreset: VariantType<{
1071
- readonly today: NullType;
1072
- readonly last7d: NullType;
1073
- readonly last30d: NullType;
1074
- readonly last90d: NullType;
1075
- readonly ytd: NullType;
1076
- }>;
1077
- readonly integer: StructType<{
1078
- readonly from: import("@elaraai/east").IntegerType;
1079
- readonly to: import("@elaraai/east").IntegerType;
1080
- }>;
1081
- readonly float: StructType<{
1082
- readonly from: FloatType;
1083
- readonly to: FloatType;
1084
- }>;
1085
- }>>;
1086
- readonly compare: OptionType<VariantType<{
1087
- readonly previousPeriod: NullType;
1088
- readonly previousYear: NullType;
1089
- }>>;
1090
- readonly filters: ArrayType<VariantType<{
1091
- readonly string: StructType<{
1092
- readonly fieldId: StringType;
1093
- readonly op: VariantType<{
1094
- readonly eq: StringType;
1095
- readonly neq: StringType;
1096
- readonly in: import("@elaraai/east").SetType<StringType>;
1097
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1098
- readonly contains: StringType;
1099
- readonly matches: StringType;
1100
- }>;
1101
- }>;
1102
- readonly integer: StructType<{
1103
- readonly fieldId: StringType;
1104
- readonly op: VariantType<{
1105
- readonly eq: import("@elaraai/east").IntegerType;
1106
- readonly neq: import("@elaraai/east").IntegerType;
1107
- readonly lt: import("@elaraai/east").IntegerType;
1108
- readonly lte: import("@elaraai/east").IntegerType;
1109
- readonly gt: import("@elaraai/east").IntegerType;
1110
- readonly gte: import("@elaraai/east").IntegerType;
1111
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1112
- }>;
1113
- }>;
1114
- readonly float: StructType<{
1115
- readonly fieldId: StringType;
1116
- readonly op: VariantType<{
1117
- readonly lt: FloatType;
1118
- readonly lte: FloatType;
1119
- readonly gt: FloatType;
1120
- readonly gte: FloatType;
1121
- }>;
1122
- }>;
1123
- readonly datetime: StructType<{
1124
- readonly fieldId: StringType;
1125
- readonly op: VariantType<{
1126
- readonly before: import("@elaraai/east").DateTimeType;
1127
- readonly after: import("@elaraai/east").DateTimeType;
1128
- readonly between: StructType<{
1129
- readonly from: import("@elaraai/east").DateTimeType;
1130
- readonly to: import("@elaraai/east").DateTimeType;
1131
- }>;
1132
- }>;
1133
- }>;
1134
- readonly boolean: StructType<{
1135
- readonly fieldId: StringType;
1136
- readonly op: VariantType<{
1137
- readonly is: BooleanType;
1138
- }>;
1139
- }>;
1140
- }>>;
1141
- readonly cohorts: ArrayType<StructType<{
1142
- readonly id: StringType;
1143
- readonly name: StringType;
1144
- readonly filters: ArrayType<VariantType<{
1145
- readonly string: StructType<{
1146
- readonly fieldId: StringType;
1147
- readonly op: VariantType<{
1148
- readonly eq: StringType;
1149
- readonly neq: StringType;
1150
- readonly in: import("@elaraai/east").SetType<StringType>;
1151
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1152
- readonly contains: StringType;
1153
- readonly matches: StringType;
1154
- }>;
1155
- }>;
1156
- readonly integer: StructType<{
1157
- readonly fieldId: StringType;
1158
- readonly op: VariantType<{
1159
- readonly eq: import("@elaraai/east").IntegerType;
1160
- readonly neq: import("@elaraai/east").IntegerType;
1161
- readonly lt: import("@elaraai/east").IntegerType;
1162
- readonly lte: import("@elaraai/east").IntegerType;
1163
- readonly gt: import("@elaraai/east").IntegerType;
1164
- readonly gte: import("@elaraai/east").IntegerType;
1165
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1166
- }>;
1167
- }>;
1168
- readonly float: StructType<{
1169
- readonly fieldId: StringType;
1170
- readonly op: VariantType<{
1171
- readonly lt: FloatType;
1172
- readonly lte: FloatType;
1173
- readonly gt: FloatType;
1174
- readonly gte: FloatType;
1175
- }>;
1176
- }>;
1177
- readonly datetime: StructType<{
1178
- readonly fieldId: StringType;
1179
- readonly op: VariantType<{
1180
- readonly before: import("@elaraai/east").DateTimeType;
1181
- readonly after: import("@elaraai/east").DateTimeType;
1182
- readonly between: StructType<{
1183
- readonly from: import("@elaraai/east").DateTimeType;
1184
- readonly to: import("@elaraai/east").DateTimeType;
1185
- }>;
1186
- }>;
1187
- }>;
1188
- readonly boolean: StructType<{
1189
- readonly fieldId: StringType;
1190
- readonly op: VariantType<{
1191
- readonly is: BooleanType;
1192
- }>;
1193
- }>;
1194
- }>>;
1195
- }>>;
1196
- readonly activeCohorts: import("@elaraai/east").SetType<StringType>;
1197
- readonly breakdown: OptionType<StructType<{
1198
- readonly fieldId: StringType;
1199
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
1200
- }>>;
1201
- readonly search: OptionType<StringType>;
1202
- readonly visible: OptionType<import("@elaraai/east").SetType<StringType>>;
1203
- readonly selectedIndex: OptionType<import("@elaraai/east").IntegerType>;
1204
- }>], NullType>;
1205
- readonly setRange: FunctionType<[OptionType<VariantType<{
1206
- readonly datetime: StructType<{
1207
- readonly from: import("@elaraai/east").DateTimeType;
1208
- readonly to: import("@elaraai/east").DateTimeType;
1209
- }>;
1210
- readonly datetimePreset: VariantType<{
1211
- readonly today: NullType;
1212
- readonly last7d: NullType;
1213
- readonly last30d: NullType;
1214
- readonly last90d: NullType;
1215
- readonly ytd: NullType;
1216
- }>;
1217
- readonly integer: StructType<{
1218
- readonly from: import("@elaraai/east").IntegerType;
1219
- readonly to: import("@elaraai/east").IntegerType;
1220
- }>;
1221
- readonly float: StructType<{
1222
- readonly from: FloatType;
1223
- readonly to: FloatType;
1224
- }>;
1225
- }>>], NullType>;
1226
- readonly setCompare: FunctionType<[OptionType<VariantType<{
1227
- readonly previousPeriod: NullType;
1228
- readonly previousYear: NullType;
1229
- }>>], NullType>;
1230
- readonly addFilter: FunctionType<[VariantType<{
1231
- readonly string: StructType<{
1232
- readonly fieldId: StringType;
1233
- readonly op: VariantType<{
1234
- readonly eq: StringType;
1235
- readonly neq: StringType;
1236
- readonly in: import("@elaraai/east").SetType<StringType>;
1237
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1238
- readonly contains: StringType;
1239
- readonly matches: StringType;
1240
- }>;
1241
- }>;
1242
- readonly integer: StructType<{
1243
- readonly fieldId: StringType;
1244
- readonly op: VariantType<{
1245
- readonly eq: import("@elaraai/east").IntegerType;
1246
- readonly neq: import("@elaraai/east").IntegerType;
1247
- readonly lt: import("@elaraai/east").IntegerType;
1248
- readonly lte: import("@elaraai/east").IntegerType;
1249
- readonly gt: import("@elaraai/east").IntegerType;
1250
- readonly gte: import("@elaraai/east").IntegerType;
1251
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1252
- }>;
1253
- }>;
1254
- readonly float: StructType<{
1255
- readonly fieldId: StringType;
1256
- readonly op: VariantType<{
1257
- readonly lt: FloatType;
1258
- readonly lte: FloatType;
1259
- readonly gt: FloatType;
1260
- readonly gte: FloatType;
1261
- }>;
1262
- }>;
1263
- readonly datetime: StructType<{
1264
- readonly fieldId: StringType;
1265
- readonly op: VariantType<{
1266
- readonly before: import("@elaraai/east").DateTimeType;
1267
- readonly after: import("@elaraai/east").DateTimeType;
1268
- readonly between: StructType<{
1269
- readonly from: import("@elaraai/east").DateTimeType;
1270
- readonly to: import("@elaraai/east").DateTimeType;
1271
- }>;
1272
- }>;
1273
- }>;
1274
- readonly boolean: StructType<{
1275
- readonly fieldId: StringType;
1276
- readonly op: VariantType<{
1277
- readonly is: BooleanType;
1278
- }>;
1279
- }>;
1280
- }>], NullType>;
1281
- readonly removeFilter: FunctionType<[import("@elaraai/east").IntegerType], NullType>;
1282
- readonly clearFilters: FunctionType<[], NullType>;
1283
- readonly defineCohort: FunctionType<[StructType<{
1284
- readonly id: StringType;
1285
- readonly name: StringType;
1286
- readonly filters: ArrayType<VariantType<{
1287
- readonly string: StructType<{
1288
- readonly fieldId: StringType;
1289
- readonly op: VariantType<{
1290
- readonly eq: StringType;
1291
- readonly neq: StringType;
1292
- readonly in: import("@elaraai/east").SetType<StringType>;
1293
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1294
- readonly contains: StringType;
1295
- readonly matches: StringType;
1296
- }>;
1297
- }>;
1298
- readonly integer: StructType<{
1299
- readonly fieldId: StringType;
1300
- readonly op: VariantType<{
1301
- readonly eq: import("@elaraai/east").IntegerType;
1302
- readonly neq: import("@elaraai/east").IntegerType;
1303
- readonly lt: import("@elaraai/east").IntegerType;
1304
- readonly lte: import("@elaraai/east").IntegerType;
1305
- readonly gt: import("@elaraai/east").IntegerType;
1306
- readonly gte: import("@elaraai/east").IntegerType;
1307
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1308
- }>;
1309
- }>;
1310
- readonly float: StructType<{
1311
- readonly fieldId: StringType;
1312
- readonly op: VariantType<{
1313
- readonly lt: FloatType;
1314
- readonly lte: FloatType;
1315
- readonly gt: FloatType;
1316
- readonly gte: FloatType;
1317
- }>;
1318
- }>;
1319
- readonly datetime: StructType<{
1320
- readonly fieldId: StringType;
1321
- readonly op: VariantType<{
1322
- readonly before: import("@elaraai/east").DateTimeType;
1323
- readonly after: import("@elaraai/east").DateTimeType;
1324
- readonly between: StructType<{
1325
- readonly from: import("@elaraai/east").DateTimeType;
1326
- readonly to: import("@elaraai/east").DateTimeType;
1327
- }>;
1328
- }>;
1329
- }>;
1330
- readonly boolean: StructType<{
1331
- readonly fieldId: StringType;
1332
- readonly op: VariantType<{
1333
- readonly is: BooleanType;
1334
- }>;
1335
- }>;
1336
- }>>;
1337
- }>], NullType>;
1338
- readonly updateCohort: FunctionType<[StringType, StructType<{
1339
- readonly id: StringType;
1340
- readonly name: StringType;
1341
- readonly filters: ArrayType<VariantType<{
1342
- readonly string: StructType<{
1343
- readonly fieldId: StringType;
1344
- readonly op: VariantType<{
1345
- readonly eq: StringType;
1346
- readonly neq: StringType;
1347
- readonly in: import("@elaraai/east").SetType<StringType>;
1348
- readonly notIn: import("@elaraai/east").SetType<StringType>;
1349
- readonly contains: StringType;
1350
- readonly matches: StringType;
1351
- }>;
1352
- }>;
1353
- readonly integer: StructType<{
1354
- readonly fieldId: StringType;
1355
- readonly op: VariantType<{
1356
- readonly eq: import("@elaraai/east").IntegerType;
1357
- readonly neq: import("@elaraai/east").IntegerType;
1358
- readonly lt: import("@elaraai/east").IntegerType;
1359
- readonly lte: import("@elaraai/east").IntegerType;
1360
- readonly gt: import("@elaraai/east").IntegerType;
1361
- readonly gte: import("@elaraai/east").IntegerType;
1362
- readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1363
- }>;
1364
- }>;
1365
- readonly float: StructType<{
1366
- readonly fieldId: StringType;
1367
- readonly op: VariantType<{
1368
- readonly lt: FloatType;
1369
- readonly lte: FloatType;
1370
- readonly gt: FloatType;
1371
- readonly gte: FloatType;
1372
- }>;
1373
- }>;
1374
- readonly datetime: StructType<{
1375
- readonly fieldId: StringType;
1376
- readonly op: VariantType<{
1377
- readonly before: import("@elaraai/east").DateTimeType;
1378
- readonly after: import("@elaraai/east").DateTimeType;
1379
- readonly between: StructType<{
1380
- readonly from: import("@elaraai/east").DateTimeType;
1381
- readonly to: import("@elaraai/east").DateTimeType;
1382
- }>;
1383
- }>;
1384
- }>;
1385
- readonly boolean: StructType<{
1386
- readonly fieldId: StringType;
1387
- readonly op: VariantType<{
1388
- readonly is: BooleanType;
1389
- }>;
1390
- }>;
1391
- }>>;
1392
- }>], NullType>;
1393
- readonly removeCohort: FunctionType<[StringType], NullType>;
1394
- readonly toggleCohort: FunctionType<[StringType], NullType>;
1395
- readonly setBreakdown: FunctionType<[OptionType<StructType<{
1396
- readonly fieldId: StringType;
1397
- readonly limit: OptionType<import("@elaraai/east").IntegerType>;
1398
- }>>], NullType>;
1399
- readonly setSearch: FunctionType<[OptionType<StringType>], NullType>;
1400
- readonly setVisible: FunctionType<[OptionType<import("@elaraai/east").SetType<StringType>>], NullType>;
1401
- readonly select: FunctionType<[OptionType<import("@elaraai/east").IntegerType>], NullType>;
1402
- readonly isActive: FunctionType<[], BooleanType>;
1403
- readonly activeCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1404
- readonly dimensions: FunctionType<[], ArrayType<StructType<{
1405
- readonly fieldId: StringType;
1406
- readonly label: StringType;
1407
- }>>>;
1408
- readonly fields: FunctionType<[], ArrayType<StructType<{
1409
- readonly fieldId: StringType;
1410
- readonly label: StringType;
1411
- readonly kind: StringType;
1412
- readonly hints: ArrayType<StringType>;
1413
- }>>>;
1414
- readonly searchFieldIds: FunctionType<[], ArrayType<StringType>>;
1415
- readonly rangeFieldId: FunctionType<[], OptionType<StringType>>;
1416
- readonly totalCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1417
- readonly resultCount: FunctionType<[], import("@elaraai/east").IntegerType>;
1418
- readonly groups: FunctionType<[], ArrayType<StructType<{
1419
- readonly key: StringType;
1420
- readonly count: import("@elaraai/east").IntegerType;
1421
- readonly color: StringType;
1422
- }>>>;
1423
- readonly series: FunctionType<[StringType, StringType], ArrayType<StructType<{
1424
- readonly key: StringType;
1425
- readonly color: StringType;
1426
- readonly points: ArrayType<StructType<{
1427
- readonly x: VariantType<{
1428
- readonly category: StringType;
1429
- readonly number: FloatType;
1430
- readonly time: import("@elaraai/east").DateTimeType;
1431
- }>;
1432
- readonly value: FloatType;
1433
- readonly size: OptionType<FloatType>;
1434
- readonly color: OptionType<StringType>;
1435
- }>>;
1436
- }>>>;
1437
- readonly matches: FunctionType<[], ArrayType<StructType<{
1438
- readonly id: StringType;
1439
- readonly label: StringType;
1440
- readonly meta: OptionType<StringType>;
1441
- }>>>;
1442
- readonly cohortCounts: FunctionType<[], import("@elaraai/east").DictType<StringType, import("@elaraai/east").IntegerType>>;
1443
- }>;
1444
- readonly affordances: ArrayType<VariantType<{
1445
- readonly filter: NullType;
1446
- readonly search: NullType;
1447
- readonly breakdown: NullType;
1448
- readonly range: NullType;
1449
- readonly cohort: NullType;
1450
- readonly brush: NullType;
1451
- }>>;
1452
1107
  }>>;
1453
- /** Optional fixed panel height (any CSS length, e.g. `"400px"`); default: aspect-driven, capped at 75vh */
1454
- readonly height: OptionType<StringType>;
1455
- /** Optional item-click callback (receives the item key) */
1456
- readonly onSelect: OptionType<FunctionType<[StringType], NullType>>;
1108
+ /** The session collapsed to net endpoints upsert ONE net per session by `net.key`. */
1109
+ readonly net: StructType<{
1110
+ /** The session key (stable across the session's commits). */
1111
+ readonly key: StringType;
1112
+ /** Distinct source item keys so far. */
1113
+ readonly sources: ArrayType<StringType>;
1114
+ /** Distinct destination item keys so far. */
1115
+ readonly destinations: ArrayType<StringType>;
1116
+ }>;
1117
+ /** True when Shift extended an open session. */
1118
+ readonly additive: BooleanType;
1119
+ /** Keys of links already joining the newest from↔to (either direction). */
1120
+ readonly existing: ArrayType<StringType>;
1121
+ /** Keys of EXISTING pairwise links absorbed into this session (a selected
1122
+ * link's Shift-drag seed) — delete these rows when upserting the net. */
1123
+ readonly absorbed: ArrayType<StringType>;
1124
+ }>;
1125
+ /**
1126
+ * Type representing a link-creation (connect gesture) event.
1127
+ */
1128
+ export type SchematicLinkCreateEventType = typeof SchematicLinkCreateEventType;
1129
+ /**
1130
+ * Link-edit event passed to `onEditLink` after an endpoint connector is
1131
+ * dragged to a new item.
1132
+ *
1133
+ * @property key - The edited link's key
1134
+ * @property from - Source item key AFTER the re-target
1135
+ * @property to - Destination item key AFTER the re-target
1136
+ */
1137
+ export declare const SchematicLinkEditEventType: StructType<{
1138
+ /** The edited link's key. */
1139
+ readonly key: StringType;
1140
+ /** Source item key AFTER the re-target. */
1141
+ readonly from: StringType;
1142
+ /** Destination item key AFTER the re-target. */
1143
+ readonly to: StringType;
1144
+ }>;
1145
+ /**
1146
+ * Type representing a link-edit (re-target) event.
1147
+ */
1148
+ export type SchematicLinkEditEventType = typeof SchematicLinkEditEventType;
1149
+ /**
1150
+ * Item-move event passed to `onMoveItem` when a move-tool drag releases.
1151
+ *
1152
+ * @remarks
1153
+ * When the dragged item is part of the current selection the WHOLE selection
1154
+ * moves rigidly — `keys` lists every moved item (the pressed `key` included)
1155
+ * and `dx`/`dy` is the shared world delta; `x`/`y` is the pressed item's
1156
+ * final position. Fired once per gesture, on release.
1157
+ *
1158
+ * @property key - The pressed (dragged) item's key
1159
+ * @property x - The pressed item's final world x
1160
+ * @property y - The pressed item's final world y
1161
+ * @property keys - Every item moved by the gesture (`key` included)
1162
+ * @property dx - The gesture's world x delta (applies to all `keys`)
1163
+ * @property dy - The gesture's world y delta (applies to all `keys`)
1164
+ */
1165
+ export declare const SchematicItemMoveEventType: StructType<{
1166
+ /** The pressed (dragged) item's key. */
1167
+ readonly key: StringType;
1168
+ /** The pressed item's final world x. */
1169
+ readonly x: FloatType;
1170
+ /** The pressed item's final world y. */
1171
+ readonly y: FloatType;
1172
+ /** Every item moved by the gesture (`key` included). */
1173
+ readonly keys: ArrayType<StringType>;
1174
+ /** The gesture's world x delta (applies to all `keys`). */
1175
+ readonly dx: FloatType;
1176
+ /** The gesture's world y delta (applies to all `keys`). */
1177
+ readonly dy: FloatType;
1457
1178
  }>;
1458
1179
  /**
1459
- * Type representing the Schematic component.
1180
+ * Type representing an item-move event.
1460
1181
  */
1461
- export type SchematicRootType = typeof SchematicRootType;
1182
+ export type SchematicItemMoveEventType = typeof SchematicItemMoveEventType;
1462
1183
  //# sourceMappingURL=types.d.ts.map