semiotic 3.4.0 → 3.4.1

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 (187) hide show
  1. package/CLAUDE.md +16 -3
  2. package/ai/schema.json +42 -1
  3. package/ai/system-prompt.md +4 -0
  4. package/dist/components/Annotation.d.ts +42 -2
  5. package/dist/components/CategoryColors.d.ts +1 -1
  6. package/dist/components/ChartGrid.d.ts +1 -1
  7. package/dist/components/ContextLayout.d.ts +1 -1
  8. package/dist/components/DataSummaryContext.d.ts +1 -1
  9. package/dist/components/DetailsPanel.d.ts +3 -2
  10. package/dist/components/Legend.d.ts +2 -3
  11. package/dist/components/LinkedCharts.d.ts +1 -1
  12. package/dist/components/ThemeProvider.d.ts +1 -1
  13. package/dist/components/Tooltip/FlippingTooltip.d.ts +1 -1
  14. package/dist/components/Tooltip/Tooltip.d.ts +4 -3
  15. package/dist/components/charts/geo/ChoroplethMap.d.ts +4 -4
  16. package/dist/components/charts/geo/DistanceCartogram.d.ts +5 -4
  17. package/dist/components/charts/geo/FlowMap.d.ts +4 -4
  18. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +4 -3
  19. package/dist/components/charts/index.d.ts +2 -0
  20. package/dist/components/charts/network/ChordDiagram.d.ts +4 -3
  21. package/dist/components/charts/network/CirclePack.d.ts +3 -3
  22. package/dist/components/charts/network/ForceDirectedGraph.d.ts +3 -2
  23. package/dist/components/charts/network/OrbitDiagram.d.ts +6 -5
  24. package/dist/components/charts/network/SankeyDiagram.d.ts +4 -3
  25. package/dist/components/charts/network/TreeDiagram.d.ts +3 -3
  26. package/dist/components/charts/network/Treemap.d.ts +3 -3
  27. package/dist/components/charts/ordinal/BarChart.d.ts +24 -4
  28. package/dist/components/charts/ordinal/BoxPlot.d.ts +4 -3
  29. package/dist/components/charts/ordinal/DonutChart.d.ts +4 -3
  30. package/dist/components/charts/ordinal/DotPlot.d.ts +4 -3
  31. package/dist/components/charts/ordinal/FunnelChart.d.ts +4 -3
  32. package/dist/components/charts/ordinal/GaugeChart.d.ts +2 -1
  33. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +4 -3
  34. package/dist/components/charts/ordinal/Histogram.d.ts +4 -3
  35. package/dist/components/charts/ordinal/LikertChart.d.ts +4 -3
  36. package/dist/components/charts/ordinal/PieChart.d.ts +4 -3
  37. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +4 -3
  38. package/dist/components/charts/ordinal/StackedBarChart.d.ts +4 -3
  39. package/dist/components/charts/ordinal/SwarmPlot.d.ts +4 -3
  40. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -3
  41. package/dist/components/charts/ordinal/ViolinPlot.d.ts +4 -3
  42. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +7 -6
  43. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +10 -7
  44. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -6
  45. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +7 -6
  46. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -6
  47. package/dist/components/charts/shared/ChartError.d.ts +1 -2
  48. package/dist/components/charts/shared/annotationResolvers.d.ts +4 -3
  49. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  50. package/dist/components/charts/shared/colorUtils.d.ts +4 -3
  51. package/dist/components/charts/shared/datumTypes.d.ts +20 -0
  52. package/dist/components/charts/shared/diagnoseConfig.d.ts +2 -7
  53. package/dist/components/charts/shared/formatUtils.d.ts +4 -2
  54. package/dist/components/charts/shared/hooks.d.ts +27 -23
  55. package/dist/components/charts/shared/legendUtils.d.ts +3 -2
  56. package/dist/components/charts/shared/mergeShapeStyle.d.ts +43 -0
  57. package/dist/components/charts/shared/networkUtils.d.ts +7 -6
  58. package/dist/components/charts/shared/selectionUtils.d.ts +5 -4
  59. package/dist/components/charts/shared/statisticalOverlays.d.ts +14 -26
  60. package/dist/components/charts/shared/statisticalOverlaysLazy.d.ts +2 -2
  61. package/dist/components/charts/shared/statsTooltip.d.ts +3 -2
  62. package/dist/components/charts/shared/tooltipUtils.d.ts +7 -6
  63. package/dist/components/charts/shared/types.d.ts +22 -13
  64. package/dist/components/charts/shared/useChartSetup.d.ts +7 -6
  65. package/dist/components/charts/shared/useLikertAggregation.d.ts +18 -7
  66. package/dist/components/charts/shared/useOrdinalStreaming.d.ts +3 -2
  67. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -1
  68. package/dist/components/charts/shared/validateChartData.d.ts +2 -1
  69. package/dist/components/charts/shared/validateProps.d.ts +2 -8
  70. package/dist/components/charts/shared/withChartWrapper.d.ts +1 -1
  71. package/dist/components/charts/xy/AreaChart.d.ts +4 -3
  72. package/dist/components/charts/xy/BubbleChart.d.ts +4 -3
  73. package/dist/components/charts/xy/CandlestickChart.d.ts +47 -0
  74. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +4 -3
  75. package/dist/components/charts/xy/Heatmap.d.ts +12 -7
  76. package/dist/components/charts/xy/LineChart.d.ts +4 -3
  77. package/dist/components/charts/xy/MinimapChart.d.ts +4 -4
  78. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +5 -4
  79. package/dist/components/charts/xy/QuadrantChart.d.ts +4 -3
  80. package/dist/components/charts/xy/Scatterplot.d.ts +4 -3
  81. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +3 -3
  82. package/dist/components/charts/xy/StackedAreaChart.d.ts +4 -3
  83. package/dist/components/data/transforms.d.ts +8 -7
  84. package/dist/components/export/chartConfig.d.ts +4 -3
  85. package/dist/components/geo/mergeData.d.ts +2 -1
  86. package/dist/components/realtime/BinAccumulator.d.ts +3 -2
  87. package/dist/components/realtime/renderers/types.d.ts +2 -1
  88. package/dist/components/realtime/renderers/waterfallRenderer.d.ts +2 -1
  89. package/dist/components/realtime/types.d.ts +20 -16
  90. package/dist/components/semiotic-themes.d.ts +2 -1
  91. package/dist/components/semiotic-xy.d.ts +2 -0
  92. package/dist/components/semiotic.d.ts +3 -3
  93. package/dist/components/server/animatedGif.d.ts +4 -18
  94. package/dist/components/server/renderToStaticSVG.d.ts +5 -4
  95. package/dist/components/server/serverChartConfigs.d.ts +2 -10
  96. package/dist/components/server/staticAnnotations.d.ts +2 -1
  97. package/dist/components/server/staticLegend.d.ts +2 -1
  98. package/dist/components/store/ObservationStore.d.ts +4 -3
  99. package/dist/components/store/SelectionStore.d.ts +3 -8
  100. package/dist/components/store/ThemeStore.d.ts +32 -4
  101. package/dist/components/store/TooltipStore.d.ts +1 -1
  102. package/dist/components/store/useSelection.d.ts +6 -5
  103. package/dist/components/stream/AccessibleDataTable.d.ts +5 -5
  104. package/dist/components/stream/CanvasHitTester.d.ts +2 -1
  105. package/dist/components/stream/DataSourceAdapter.d.ts +2 -1
  106. package/dist/components/stream/FocusRing.d.ts +1 -2
  107. package/dist/components/stream/GeoParticlePool.d.ts +2 -1
  108. package/dist/components/stream/GeoPipelineStore.d.ts +7 -6
  109. package/dist/components/stream/MarginalGraphics.d.ts +1 -2
  110. package/dist/components/stream/NetworkPipelineStore.d.ts +3 -2
  111. package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -4
  112. package/dist/components/stream/OrdinalBrushOverlay.d.ts +1 -19
  113. package/dist/components/stream/OrdinalPipelineStore.d.ts +6 -5
  114. package/dist/components/stream/OrdinalSVGOverlay.d.ts +6 -5
  115. package/dist/components/stream/PipelineStore.d.ts +63 -28
  116. package/dist/components/stream/SVGOverlay.d.ts +10 -10
  117. package/dist/components/stream/SceneGraph.d.ts +6 -5
  118. package/dist/components/stream/StreamGeoFrame.d.ts +2 -1
  119. package/dist/components/stream/StreamNetworkFrame.d.ts +2 -1
  120. package/dist/components/stream/StreamOrdinalFrame.d.ts +2 -1
  121. package/dist/components/stream/StreamXYFrame.d.ts +2 -1
  122. package/dist/components/stream/XYBrushOverlay.d.ts +1 -21
  123. package/dist/components/stream/devDataAccessWarning.d.ts +2 -11
  124. package/dist/components/stream/geoTypes.d.ts +25 -18
  125. package/dist/components/stream/hoverUtils.d.ts +2 -1
  126. package/dist/components/stream/layouts/hierarchySceneBuilders.d.ts +4 -3
  127. package/dist/components/stream/layouts/hierarchyUtils.d.ts +4 -3
  128. package/dist/components/stream/networkTypes.d.ts +33 -28
  129. package/dist/components/stream/ordinalSceneBuilders/barFunnelScene.d.ts +1 -1
  130. package/dist/components/stream/ordinalSceneBuilders/barScene.d.ts +2 -2
  131. package/dist/components/stream/ordinalSceneBuilders/connectorScene.d.ts +1 -1
  132. package/dist/components/stream/ordinalSceneBuilders/pointScene.d.ts +2 -2
  133. package/dist/components/stream/ordinalSceneBuilders/statisticalScene.d.ts +4 -4
  134. package/dist/components/stream/ordinalSceneBuilders/swimlaneScene.d.ts +1 -1
  135. package/dist/components/stream/ordinalSceneBuilders/timelineScene.d.ts +1 -1
  136. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +9 -8
  137. package/dist/components/stream/ordinalTypes.d.ts +54 -22
  138. package/dist/components/stream/pipelineDecay.d.ts +2 -1
  139. package/dist/components/stream/pipelinePulse.d.ts +2 -1
  140. package/dist/components/stream/pipelineTransitions.d.ts +16 -4
  141. package/dist/components/stream/renderers/colorUtils.d.ts +20 -0
  142. package/dist/components/stream/types.d.ts +45 -8
  143. package/dist/components/stream/xySceneBuilders/areaScene.d.ts +3 -2
  144. package/dist/components/stream/xySceneBuilders/barScene.d.ts +2 -1
  145. package/dist/components/stream/xySceneBuilders/boundsScene.d.ts +2 -1
  146. package/dist/components/stream/xySceneBuilders/candlestickScene.d.ts +2 -1
  147. package/dist/components/stream/xySceneBuilders/emitPointNodes.d.ts +3 -2
  148. package/dist/components/stream/xySceneBuilders/heatmapScene.d.ts +2 -1
  149. package/dist/components/stream/xySceneBuilders/lineScene.d.ts +2 -1
  150. package/dist/components/stream/xySceneBuilders/mixedScene.d.ts +2 -1
  151. package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -1
  152. package/dist/components/stream/xySceneBuilders/swarmScene.d.ts +2 -1
  153. package/dist/components/stream/xySceneBuilders/types.d.ts +35 -26
  154. package/dist/components/stream/xySceneBuilders/waterfallScene.d.ts +2 -1
  155. package/dist/components/types/marginType.d.ts +15 -0
  156. package/dist/geo.min.js +1 -1
  157. package/dist/geo.module.min.js +1 -1
  158. package/dist/network.min.js +1 -1
  159. package/dist/network.module.min.js +1 -1
  160. package/dist/ordinal.min.js +1 -1
  161. package/dist/ordinal.module.min.js +1 -1
  162. package/dist/realtime.min.js +1 -1
  163. package/dist/realtime.module.min.js +1 -1
  164. package/dist/semiotic-ai.min.js +1 -1
  165. package/dist/semiotic-ai.module.min.js +1 -1
  166. package/dist/semiotic-statisticalOverlays-Ckd_jM8z.js +1 -0
  167. package/dist/semiotic-themes.d.ts +2 -1
  168. package/dist/semiotic-themes.min.js +1 -1
  169. package/dist/semiotic-themes.module.min.js +1 -1
  170. package/dist/semiotic-utils.min.js +1 -1
  171. package/dist/semiotic-utils.module.min.js +1 -1
  172. package/dist/semiotic-xy.d.ts +2 -0
  173. package/dist/semiotic.d.ts +3 -3
  174. package/dist/semiotic.min.js +1 -1
  175. package/dist/semiotic.module.min.js +1 -1
  176. package/dist/server.min.js +1 -1
  177. package/dist/server.module.min.js +1 -1
  178. package/dist/test-utils/canvasMock.d.ts +10 -2
  179. package/dist/xy.min.js +1 -1
  180. package/dist/xy.module.min.js +1 -1
  181. package/package.json +38 -31
  182. package/dist/components/types/annotationTypes.d.ts +0 -145
  183. package/dist/components/types/generalTypes.d.ts +0 -241
  184. package/dist/components/types/interactionTypes.d.ts +0 -72
  185. package/dist/components/types/networkTypes.d.ts +0 -174
  186. package/dist/components/types/ordinalTypes.d.ts +0 -112
  187. package/dist/semiotic-statisticalOverlays-DGX_WWc5.js +0 -1
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import type { SceneNode, TransitionConfig } from "./types";
14
14
  import type { ActiveTransition } from "./pipelineTransitionUtils";
15
+ import type { Datum } from "../charts/shared/datumTypes";
15
16
  export type PrevPosition = {
16
17
  x: number;
17
18
  y: number;
@@ -19,6 +20,10 @@ export type PrevPosition = {
19
20
  h?: number;
20
21
  r?: number;
21
22
  opacity?: number;
23
+ openY?: number;
24
+ closeY?: number;
25
+ highY?: number;
26
+ lowY?: number;
22
27
  };
23
28
  export type PrevPath = {
24
29
  topPath?: [number, number][];
@@ -29,12 +34,19 @@ export type PrevPath = {
29
34
  /** Context needed from PipelineStore for identity resolution */
30
35
  export interface TransitionContext {
31
36
  runtimeMode?: "streaming" | "bounded";
32
- getX: (d: any) => number;
33
- getY: (d: any) => number;
34
- getCategory?: (d: any) => string;
37
+ getX: (d: Datum) => number;
38
+ getY: (d: Datum) => number;
39
+ getCategory?: (d: Datum) => string;
35
40
  }
36
41
  /**
37
42
  * Get a stable identity key for a scene node.
43
+ *
44
+ * Exit stubs (created during startTransition for scrolled-off nodes) have
45
+ * `datum: null` and carry their original identity on `_transitionKey`. If a
46
+ * new transition starts while exits are still in the scene, resolving their
47
+ * identity via the datum-less fallback (e.g. `c:${index}`) would reshuffle
48
+ * which exit matches which key on the next snapshot. Preferring the stored
49
+ * `_transitionKey` keeps exits stable across overlapping transitions.
38
50
  */
39
51
  export declare function getNodeIdentity(ctx: TransitionContext, node: SceneNode, index: number): string | null;
40
52
  /**
@@ -56,4 +68,4 @@ export declare function startTransition(ctx: TransitionContext, transition: Tran
56
68
  * Advance the transition animation. Returns true if still animating.
57
69
  * Mutates scene nodes in place.
58
70
  */
59
- export declare function advanceTransition(now: number, transition: TransitionConfig, state: TransitionState, prevPositionMap: Map<string, PrevPosition>, prevPathMap: Map<string, PrevPath>): boolean;
71
+ export declare function advanceTransition(now: number, transition: TransitionConfig, state: TransitionState, prevPositionMap: Map<string, PrevPosition>, _prevPathMap: Map<string, PrevPath>): boolean;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Color utilities shared across canvas renderers.
3
+ *
4
+ * Kept here (not in layouts/hierarchyUtils or a deeper shared module) so
5
+ * renderers don't reach into unrelated layers for primitive helpers.
6
+ */
7
+ /**
8
+ * Resolve any valid CSS color string to an [r, g, b] tuple.
9
+ *
10
+ * Uses the canvas's own fillStyle round-trip to normalize first: assigning a
11
+ * CSS color to `ctx.fillStyle` and reading it back always yields `#rrggbb`
12
+ * or `rgba(r, g, b, a)`. That means named colors (`red`, `steelblue`), hsl(),
13
+ * and any other valid CSS form work the same as hex and rgb. Without the
14
+ * normalization pass a bare regex parser silently falls back on anything it
15
+ * doesn't match — gradients from named colors would render gray.
16
+ *
17
+ * The prior fillStyle is restored so this is callable from the middle of a
18
+ * draw without disturbing in-progress paint state.
19
+ */
20
+ export declare function parseCanvasColor(ctx: CanvasRenderingContext2D, color: string): [number, number, number];
@@ -2,6 +2,21 @@ import type { ReactNode } from "react";
2
2
  import type { ScaleLinear } from "d3-scale";
3
3
  import type { AnimateProp } from "./pipelineTransitionUtils";
4
4
  import type { ArrowOfTime, WindowMode, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, HoverAnnotationConfig, HoverData, AnnotationContext, AnnotationAnchorMode } from "../realtime/types";
5
+ import type { Datum } from "../charts/shared/datumTypes";
6
+ export interface ThemeSemanticColors {
7
+ primary?: string;
8
+ secondary?: string;
9
+ success?: string;
10
+ danger?: string;
11
+ warning?: string;
12
+ error?: string;
13
+ info?: string;
14
+ text?: string;
15
+ textSecondary?: string;
16
+ border?: string;
17
+ grid?: string;
18
+ surface?: string;
19
+ }
5
20
  export interface DecayConfig {
6
21
  type: "linear" | "exponential" | "step";
7
22
  /** Exponential: half-life in buffer positions (default: bufferSize/2) */
@@ -194,8 +209,23 @@ export interface RectSceneNode {
194
209
  h: number;
195
210
  /** Rounded corner radius on the end away from the baseline */
196
211
  roundedTop?: number;
197
- /** Which edge to round: "top"/"bottom" (vertical), "right"/"left" (horizontal) */
212
+ /** Which edge is the "tip" (opposite the baseline): "top"/"bottom" for
213
+ * vertical orientation, "right"/"left" for horizontal. Used by the
214
+ * renderer for rounded-corner placement AND gradient direction. Set by
215
+ * bar scene builders unconditionally so gradients resolve without
216
+ * requiring roundedTop. */
198
217
  roundedEdge?: "top" | "bottom" | "right" | "left";
218
+ /** Gradient fill — same shape as the area-scene version. Runs tip → base
219
+ * along the bar axis (inferred from `roundedEdge`). */
220
+ fillGradient?: {
221
+ topOpacity: number;
222
+ bottomOpacity: number;
223
+ } | {
224
+ colorStops: Array<{
225
+ offset: number;
226
+ color: string;
227
+ }>;
228
+ };
199
229
  style: Style;
200
230
  datum: any;
201
231
  group?: string;
@@ -268,6 +298,13 @@ export interface CandlestickSceneNode {
268
298
  _decayOpacity?: number;
269
299
  /** Stable identity key for transition tracking */
270
300
  _transitionKey?: string;
301
+ /** Geometry targets — set during a transition so advanceTransition can lerp
302
+ * toward them from the snapshotted prev position. Cleared on completion. */
303
+ _targetX?: number;
304
+ _targetOpenY?: number;
305
+ _targetCloseY?: number;
306
+ _targetHighY?: number;
307
+ _targetLowY?: number;
271
308
  }
272
309
  export interface CandlestickStyle {
273
310
  upColor?: string;
@@ -278,7 +315,7 @@ export interface CandlestickStyle {
278
315
  /** Single color for range/dumbbell mode (replaces up/down when no open/close provided) */
279
316
  rangeColor?: string;
280
317
  }
281
- export interface Changeset<T = Record<string, any>> {
318
+ export interface Changeset<T = Datum> {
282
319
  inserts: T[];
283
320
  bounded: boolean;
284
321
  /** Hint: total dataset size when progressively chunking bounded data */
@@ -307,7 +344,7 @@ export interface StreamLayout {
307
344
  height: number;
308
345
  }
309
346
  export type CurveType = "linear" | "monotoneX" | "monotoneY" | "step" | "stepAfter" | "stepBefore" | "basis" | "cardinal" | "catmullRom" | "natural";
310
- export interface StreamXYFrameProps<T = Record<string, any>> {
347
+ export interface StreamXYFrameProps<T = Datum> {
311
348
  chartType: StreamChartType;
312
349
  runtimeMode?: RuntimeMode;
313
350
  data?: T[];
@@ -417,8 +454,8 @@ export interface StreamXYFrameProps<T = Record<string, any>> {
417
454
  yLabel?: string;
418
455
  /** Label for the right Y axis (dual-axis charts) */
419
456
  yLabelRight?: string;
420
- xFormat?: (d: any, index?: number, allTicks?: number[]) => string | ReactNode;
421
- yFormat?: (d: any) => string | ReactNode;
457
+ xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
458
+ yFormat?: (d: number | Date | string) => string | ReactNode;
422
459
  tickFormatTime?: (value: number) => string;
423
460
  tickFormatValue?: (value: number) => string;
424
461
  hoverAnnotation?: boolean | HoverAnnotationConfig;
@@ -448,8 +485,8 @@ export interface StreamXYFrameProps<T = Record<string, any>> {
448
485
  } | null) => void;
449
486
  /** Accessor for unique point IDs used by point-anchored annotations */
450
487
  pointIdAccessor?: string | ((d: T) => string);
451
- annotations?: Record<string, any>[];
452
- svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode;
488
+ annotations?: Datum[];
489
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
453
490
  showGrid?: boolean;
454
491
  legend?: ReactNode | {
455
492
  legendGroups: any[];
@@ -510,7 +547,7 @@ export interface StreamXYFrameProps<T = Record<string, any>> {
510
547
  /** Source chart ID — crosshair is suppressed on the source chart to avoid double rendering */
511
548
  linkedCrosshairSourceId?: string;
512
549
  }
513
- export interface StreamXYFrameHandle<T = Record<string, any>> {
550
+ export interface StreamXYFrameHandle<T = Datum> {
514
551
  push(datum: T): void;
515
552
  pushMany(data: T[]): void;
516
553
  /** Remove data points by ID. Requires pointIdAccessor. */
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Area and stacked area scene builders.
3
4
  *
@@ -9,5 +10,5 @@
9
10
  */
10
11
  import type { SceneNode } from "../types";
11
12
  import type { XYSceneContext } from "./types";
12
- export declare function buildAreaScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
13
- export declare function buildStackedAreaScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
13
+ export declare function buildAreaScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
14
+ export declare function buildStackedAreaScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Realtime histogram bar scene builder.
3
4
  *
@@ -15,4 +16,4 @@ export interface BarSceneResult {
15
16
  /** Sorted bin boundary values (edges of all bins) for data-driven brush snapping */
16
17
  binBoundaries: number[];
17
18
  }
18
- export declare function buildBarScene(ctx: XYSceneContext, data: Record<string, any>[]): BarSceneResult;
19
+ export declare function buildBarScene(ctx: XYSceneContext, data: Datum[]): BarSceneResult;
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Bounds scene builder — produces an AreaSceneNode for confidence bands/envelopes.
3
4
  *
@@ -5,4 +6,4 @@
5
6
  */
6
7
  import type { AreaSceneNode } from "../types";
7
8
  import type { XYSceneContext } from "./types";
8
- export declare function buildBoundsForGroup(ctx: XYSceneContext, data: Record<string, any>[], group: string): AreaSceneNode | null;
9
+ export declare function buildBoundsForGroup(ctx: XYSceneContext, data: Datum[], group: string): AreaSceneNode | null;
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Candlestick (OHLC) scene builder.
3
4
  *
@@ -7,4 +8,4 @@
7
8
  */
8
9
  import type { SceneNode, StreamLayout } from "../types";
9
10
  import type { XYSceneContext } from "./types";
10
- export declare function buildCandlestickScene(ctx: XYSceneContext, data: Record<string, any>[], layout: StreamLayout): SceneNode[];
11
+ export declare function buildCandlestickScene(ctx: XYSceneContext, data: Datum[], _layout: StreamLayout): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Shared helper for emitting PointSceneNodes from grouped data.
3
4
  *
@@ -9,5 +10,5 @@ import type { SceneNode } from "../types";
9
10
  import type { XYSceneContext } from "./types";
10
11
  export declare function emitPointNodes(ctx: XYSceneContext, groups: {
11
12
  key: string;
12
- data: Record<string, any>[];
13
- }[], nodes: SceneNode[], yGetOverride?: (d: Record<string, any>) => number): void;
13
+ data: Datum[];
14
+ }[], nodes: SceneNode[], yGetOverride?: (d: Datum) => number): void;
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  import type { SceneNode, StreamLayout } from "../types";
2
3
  import type { XYSceneContext } from "./types";
3
- export declare function buildHeatmapScene(ctx: XYSceneContext, data: Record<string, any>[], layout: StreamLayout): SceneNode[];
4
+ export declare function buildHeatmapScene(ctx: XYSceneContext, data: Datum[], layout: StreamLayout): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Line scene builder — produces LineSceneNode[] from grouped data.
3
4
  *
@@ -9,4 +10,4 @@
9
10
  */
10
11
  import type { SceneNode } from "../types";
11
12
  import type { XYSceneContext } from "./types";
12
- export declare function buildLineScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
13
+ export declare function buildLineScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Mixed scene builder — renders some series as areas and others as lines.
3
4
  *
@@ -9,4 +10,4 @@
9
10
  */
10
11
  import type { SceneNode } from "../types";
11
12
  import type { XYSceneContext } from "./types";
12
- export declare function buildMixedScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
13
+ export declare function buildMixedScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Point/scatter/bubble scene builder.
3
4
  *
@@ -9,4 +10,4 @@
9
10
  */
10
11
  import type { SceneNode } from "../types";
11
12
  import type { XYSceneContext } from "./types";
12
- export declare function buildPointScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
13
+ export declare function buildPointScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * Realtime swarm chart scene builder.
3
4
  *
@@ -7,4 +8,4 @@
7
8
  */
8
9
  import type { SceneNode } from "../types";
9
10
  import type { XYSceneContext } from "./types";
10
- export declare function buildSwarmScene(ctx: XYSceneContext, data: Record<string, any>[]): SceneNode[];
11
+ export declare function buildSwarmScene(ctx: XYSceneContext, data: Datum[]): SceneNode[];
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../../charts/shared/datumTypes";
1
2
  /**
2
3
  * XYSceneContext — shared context passed to all XY scene builder functions.
3
4
  *
@@ -5,33 +6,33 @@
5
6
  * Scene builders are pure functions that receive this context instead of
6
7
  * accessing PipelineStore instance fields directly.
7
8
  */
8
- import type { StreamScales, Style, CurveType } from "../types";
9
+ import type { StreamScales, Style, CurveType, BarStyle, ThemeSemanticColors } from "../types";
9
10
  export interface XYSceneContext {
10
11
  scales: StreamScales;
11
12
  config: XYSceneConfig;
12
- getX: (d: any) => number;
13
- getY: (d: any) => number;
14
- getY0?: (d: any) => number | null;
15
- getSize?: (d: any) => number;
16
- getColor?: (d: any) => string;
17
- getGroup?: (d: any) => string;
18
- getCategory?: (d: any) => string;
19
- getPointId?: (d: any) => string;
20
- getBounds?: (d: any) => number | null;
21
- getOpen?: (d: any) => number;
22
- getHigh?: (d: any) => number;
23
- getLow?: (d: any) => number;
24
- getClose?: (d: any) => number;
13
+ getX: (d: Datum) => number;
14
+ getY: (d: Datum) => number;
15
+ getY0?: (d: Datum) => number | null;
16
+ getSize?: (d: Datum) => number;
17
+ getColor?: (d: Datum) => string;
18
+ getGroup?: (d: Datum) => string;
19
+ getCategory?: (d: Datum) => string;
20
+ getPointId?: (d: Datum) => string;
21
+ getBounds?: (d: Datum) => number | null;
22
+ getOpen?: (d: Datum) => number;
23
+ getHigh?: (d: Datum) => number;
24
+ getLow?: (d: Datum) => number;
25
+ getClose?: (d: Datum) => number;
25
26
  /** Style resolvers — delegate to PipelineStore's cached color management */
26
- resolveLineStyle: (group: string, sampleDatum?: Record<string, any>) => Style;
27
- resolveAreaStyle: (group: string, sampleDatum?: Record<string, any>) => Style;
28
- resolveBoundsStyle: (group: string, sampleDatum?: Record<string, any>) => Style;
29
- resolveColorMap: (data: Record<string, any>[]) => Map<string, string>;
27
+ resolveLineStyle: (group: string, sampleDatum?: Datum) => Style;
28
+ resolveAreaStyle: (group: string, sampleDatum?: Datum) => Style;
29
+ resolveBoundsStyle: (group: string, sampleDatum?: Datum) => Style;
30
+ resolveColorMap: (data: Datum[]) => Map<string, string>;
30
31
  resolveGroupColor: (group: string) => string | null;
31
32
  /** Group data by lineBy/colorBy accessor */
32
- groupData: (data: Record<string, any>[]) => {
33
+ groupData: (data: Datum[]) => {
33
34
  key: string;
34
- data: Record<string, any>[];
35
+ data: Datum[];
35
36
  }[];
36
37
  /** Instance-scoped mutable cache for bar category ordering (prevents cross-instance leaks) */
37
38
  barCategoryCache?: {
@@ -61,14 +62,14 @@ export interface XYSceneConfig {
61
62
  color: string;
62
63
  }>;
63
64
  };
64
- annotations?: Record<string, any>[];
65
- pointStyle?: (d: any) => Style & {
65
+ annotations?: Datum[];
66
+ pointStyle?: (d: Datum) => Style & {
66
67
  r?: number;
67
68
  };
68
69
  sizeRange?: [number, number];
69
- xAccessor?: string | ((d: any) => any);
70
- yAccessor?: string | ((d: any) => any);
71
- valueAccessor?: string | ((d: any) => any);
70
+ xAccessor?: string | ((d: Datum) => any);
71
+ yAccessor?: string | ((d: Datum) => any);
72
+ valueAccessor?: string | ((d: Datum) => any);
72
73
  heatmapAggregation?: "count" | "sum" | "mean";
73
74
  heatmapXBins?: number;
74
75
  heatmapYBins?: number;
@@ -76,6 +77,13 @@ export interface XYSceneConfig {
76
77
  heatmapValueFormat?: (v: number) => string;
77
78
  binSize?: number;
78
79
  barColors?: Record<string, string>;
80
+ /** Bar fill/stroke/strokeWidth/gap. Threaded through from RealtimeHistogram. */
81
+ barStyle?: BarStyle;
82
+ themeSemantic?: ThemeSemanticColors;
83
+ /** Theme sequential scheme name — fallback when colorScheme is not set (heatmap). */
84
+ themeSequential?: string;
85
+ /** Theme diverging scheme name — fallback when colorScheme is not set. */
86
+ themeDiverging?: string;
79
87
  swarmStyle?: {
80
88
  radius?: number;
81
89
  fill?: string;
@@ -89,6 +97,7 @@ export interface XYSceneConfig {
89
97
  gap?: number;
90
98
  stroke?: string;
91
99
  strokeWidth?: number;
100
+ opacity?: number;
92
101
  connectorStroke?: string;
93
102
  connectorWidth?: number;
94
103
  };
@@ -104,5 +113,5 @@ export interface XYSceneConfig {
104
113
  candlestickRangeMode?: boolean;
105
114
  boundsStyle?: Style | ((d: any, group: string) => Style);
106
115
  lineStyle?: Style | ((d: any, group: string) => Style);
107
- areaStyle?: (d: any) => Style;
116
+ areaStyle?: (d: Datum) => Style;
108
117
  }
@@ -7,6 +7,7 @@
7
7
  * Dependencies: SceneGraph (buildRectNode)
8
8
  * Consumed by: PipelineStore.buildSceneNodes (chartType "waterfall")
9
9
  */
10
+ import type { Datum } from "../../charts/shared/datumTypes";
10
11
  import type { SceneNode, StreamLayout } from "../types";
11
12
  import type { XYSceneContext } from "./types";
12
- export declare function buildWaterfallScene(ctx: XYSceneContext, data: Record<string, any>[], layout: StreamLayout): SceneNode[];
13
+ export declare function buildWaterfallScene(ctx: XYSceneContext, data: Datum[], layout: StreamLayout): SceneNode[];
@@ -0,0 +1,15 @@
1
+ /** Resolved chart margin in pixels — every side populated. This is the
2
+ * internal shape after the frame merges the user-supplied margin with
3
+ * chart-mode defaults, so downstream layout math can read all four fields
4
+ * without null-checking. */
5
+ export interface MarginType {
6
+ top: number;
7
+ bottom: number;
8
+ left: number;
9
+ right: number;
10
+ }
11
+ /** Public-API margin shape. Users can pass any subset of sides (`{ left: 120 }`
12
+ * for wide y-axis labels is a common pattern) or a single number as shorthand
13
+ * for "same on all sides". The frame fills missing sides from the chart-mode
14
+ * defaults before handing a fully-resolved `MarginType` to the layout code. */
15
+ export type PartialMargin = number | Partial<MarginType>;