semiotic 3.3.1 → 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 (204) hide show
  1. package/CLAUDE.md +25 -6
  2. package/README.md +1 -1
  3. package/ai/dist/mcp-server.js +104 -9
  4. package/ai/schema.json +42 -1
  5. package/ai/system-prompt.md +4 -0
  6. package/dist/components/Annotation.d.ts +42 -2
  7. package/dist/components/CategoryColors.d.ts +1 -1
  8. package/dist/components/ChartGrid.d.ts +1 -1
  9. package/dist/components/ContextLayout.d.ts +1 -1
  10. package/dist/components/DataSummaryContext.d.ts +1 -1
  11. package/dist/components/DetailsPanel.d.ts +3 -2
  12. package/dist/components/Legend.d.ts +2 -3
  13. package/dist/components/LinkedCharts.d.ts +9 -1
  14. package/dist/components/ThemeProvider.d.ts +1 -1
  15. package/dist/components/Tooltip/FlippingTooltip.d.ts +1 -1
  16. package/dist/components/Tooltip/Tooltip.d.ts +4 -3
  17. package/dist/components/charts/geo/ChoroplethMap.d.ts +4 -4
  18. package/dist/components/charts/geo/DistanceCartogram.d.ts +5 -4
  19. package/dist/components/charts/geo/FlowMap.d.ts +4 -4
  20. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +4 -3
  21. package/dist/components/charts/index.d.ts +3 -1
  22. package/dist/components/charts/network/ChordDiagram.d.ts +4 -3
  23. package/dist/components/charts/network/CirclePack.d.ts +3 -3
  24. package/dist/components/charts/network/ForceDirectedGraph.d.ts +3 -2
  25. package/dist/components/charts/network/OrbitDiagram.d.ts +6 -5
  26. package/dist/components/charts/network/SankeyDiagram.d.ts +4 -3
  27. package/dist/components/charts/network/TreeDiagram.d.ts +3 -3
  28. package/dist/components/charts/network/Treemap.d.ts +3 -3
  29. package/dist/components/charts/ordinal/BarChart.d.ts +30 -4
  30. package/dist/components/charts/ordinal/BoxPlot.d.ts +4 -3
  31. package/dist/components/charts/ordinal/DonutChart.d.ts +4 -3
  32. package/dist/components/charts/ordinal/DotPlot.d.ts +13 -4
  33. package/dist/components/charts/ordinal/FunnelChart.d.ts +4 -3
  34. package/dist/components/charts/ordinal/GaugeChart.d.ts +2 -1
  35. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +6 -5
  36. package/dist/components/charts/ordinal/Histogram.d.ts +4 -3
  37. package/dist/components/charts/ordinal/LikertChart.d.ts +8 -4
  38. package/dist/components/charts/ordinal/PieChart.d.ts +4 -3
  39. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +4 -3
  40. package/dist/components/charts/ordinal/StackedBarChart.d.ts +6 -5
  41. package/dist/components/charts/ordinal/SwarmPlot.d.ts +4 -3
  42. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -3
  43. package/dist/components/charts/ordinal/ViolinPlot.d.ts +4 -3
  44. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +7 -6
  45. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +10 -7
  46. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -6
  47. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +7 -6
  48. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -6
  49. package/dist/components/charts/shared/ChartError.d.ts +1 -2
  50. package/dist/components/charts/shared/annotationResolvers.d.ts +4 -3
  51. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  52. package/dist/components/charts/shared/colorUtils.d.ts +4 -3
  53. package/dist/components/charts/shared/datumTypes.d.ts +20 -0
  54. package/dist/components/charts/shared/diagnoseConfig.d.ts +2 -7
  55. package/dist/components/charts/shared/formatUtils.d.ts +4 -2
  56. package/dist/components/charts/shared/hooks.d.ts +41 -24
  57. package/dist/components/charts/shared/legendUtils.d.ts +3 -2
  58. package/dist/components/charts/shared/mergeShapeStyle.d.ts +43 -0
  59. package/dist/components/charts/shared/networkUtils.d.ts +7 -6
  60. package/dist/components/charts/shared/selectionUtils.d.ts +14 -11
  61. package/dist/components/charts/shared/statisticalOverlays.d.ts +14 -26
  62. package/dist/components/charts/shared/statisticalOverlaysLazy.d.ts +2 -2
  63. package/dist/components/charts/shared/statsTooltip.d.ts +3 -2
  64. package/dist/components/charts/shared/tooltipUtils.d.ts +20 -7
  65. package/dist/components/charts/shared/types.d.ts +27 -19
  66. package/dist/components/charts/shared/useChartSetup.d.ts +15 -6
  67. package/dist/components/charts/shared/useLikertAggregation.d.ts +18 -7
  68. package/dist/components/charts/shared/useOrdinalStreaming.d.ts +3 -2
  69. package/dist/components/charts/shared/useResolvedSelection.d.ts +2 -0
  70. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -1
  71. package/dist/components/charts/shared/validateChartData.d.ts +2 -1
  72. package/dist/components/charts/shared/validateProps.d.ts +2 -8
  73. package/dist/components/charts/shared/withChartWrapper.d.ts +1 -1
  74. package/dist/components/charts/xy/AreaChart.d.ts +4 -3
  75. package/dist/components/charts/xy/BubbleChart.d.ts +4 -3
  76. package/dist/components/charts/xy/CandlestickChart.d.ts +47 -0
  77. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +4 -3
  78. package/dist/components/charts/xy/Heatmap.d.ts +12 -7
  79. package/dist/components/charts/xy/LineChart.d.ts +4 -3
  80. package/dist/components/charts/xy/MinimapChart.d.ts +4 -4
  81. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +5 -4
  82. package/dist/components/charts/xy/QuadrantChart.d.ts +4 -3
  83. package/dist/components/charts/xy/Scatterplot.d.ts +4 -3
  84. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +3 -3
  85. package/dist/components/charts/xy/StackedAreaChart.d.ts +4 -3
  86. package/dist/components/data/transforms.d.ts +8 -7
  87. package/dist/components/export/chartConfig.d.ts +4 -3
  88. package/dist/components/geo/mergeData.d.ts +2 -1
  89. package/dist/components/realtime/BinAccumulator.d.ts +3 -2
  90. package/dist/components/realtime/renderers/types.d.ts +2 -1
  91. package/dist/components/realtime/renderers/waterfallRenderer.d.ts +2 -1
  92. package/dist/components/realtime/types.d.ts +32 -16
  93. package/dist/components/semiotic-geo.d.ts +4 -0
  94. package/dist/components/semiotic-network.d.ts +7 -0
  95. package/dist/components/semiotic-ordinal.d.ts +8 -0
  96. package/dist/components/semiotic-themes.d.ts +2 -1
  97. package/dist/components/semiotic-xy.d.ts +11 -0
  98. package/dist/components/semiotic.d.ts +3 -3
  99. package/dist/components/server/animatedGif.d.ts +4 -18
  100. package/dist/components/server/renderToStaticSVG.d.ts +6 -5
  101. package/dist/components/server/serverChartConfigs.d.ts +2 -10
  102. package/dist/components/server/staticAnnotations.d.ts +2 -1
  103. package/dist/components/server/staticLegend.d.ts +2 -1
  104. package/dist/components/store/ObservationStore.d.ts +4 -3
  105. package/dist/components/store/SelectionStore.d.ts +3 -8
  106. package/dist/components/store/ThemeStore.d.ts +34 -4
  107. package/dist/components/store/TooltipStore.d.ts +1 -1
  108. package/dist/components/store/useSelection.d.ts +6 -5
  109. package/dist/components/stream/AccessibleDataTable.d.ts +5 -5
  110. package/dist/components/stream/CanvasHitTester.d.ts +10 -4
  111. package/dist/components/stream/DataSourceAdapter.d.ts +19 -1
  112. package/dist/components/stream/FocusRing.d.ts +1 -2
  113. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  114. package/dist/components/stream/GeoParticlePool.d.ts +2 -1
  115. package/dist/components/stream/GeoPipelineStore.d.ts +26 -7
  116. package/dist/components/stream/MarginalGraphics.d.ts +1 -2
  117. package/dist/components/stream/NetworkPipelineStore.d.ts +8 -2
  118. package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -4
  119. package/dist/components/stream/OrdinalBrushOverlay.d.ts +1 -19
  120. package/dist/components/stream/OrdinalCanvasHitTester.d.ts +3 -1
  121. package/dist/components/stream/OrdinalPipelineStore.d.ts +44 -6
  122. package/dist/components/stream/OrdinalSVGOverlay.d.ts +6 -5
  123. package/dist/components/stream/ParticlePool.d.ts +4 -0
  124. package/dist/components/stream/PipelineStore.d.ts +80 -30
  125. package/dist/components/stream/SVGOverlay.d.ts +10 -10
  126. package/dist/components/stream/SceneGraph.d.ts +6 -5
  127. package/dist/components/stream/StreamGeoFrame.d.ts +2 -1
  128. package/dist/components/stream/StreamNetworkFrame.d.ts +2 -1
  129. package/dist/components/stream/StreamOrdinalFrame.d.ts +2 -1
  130. package/dist/components/stream/StreamXYFrame.d.ts +19 -1
  131. package/dist/components/stream/XYBrushOverlay.d.ts +1 -21
  132. package/dist/components/stream/devDataAccessWarning.d.ts +2 -11
  133. package/dist/components/stream/geoTypes.d.ts +32 -18
  134. package/dist/components/stream/hoverUtils.d.ts +14 -1
  135. package/dist/components/stream/layouts/hierarchySceneBuilders.d.ts +4 -3
  136. package/dist/components/stream/layouts/hierarchyUtils.d.ts +4 -3
  137. package/dist/components/stream/networkTypes.d.ts +51 -28
  138. package/dist/components/stream/ordinalSceneBuilders/barFunnelScene.d.ts +1 -1
  139. package/dist/components/stream/ordinalSceneBuilders/barScene.d.ts +2 -2
  140. package/dist/components/stream/ordinalSceneBuilders/connectorScene.d.ts +1 -1
  141. package/dist/components/stream/ordinalSceneBuilders/pointScene.d.ts +2 -2
  142. package/dist/components/stream/ordinalSceneBuilders/statisticalScene.d.ts +4 -4
  143. package/dist/components/stream/ordinalSceneBuilders/swimlaneScene.d.ts +1 -1
  144. package/dist/components/stream/ordinalSceneBuilders/timelineScene.d.ts +1 -1
  145. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +9 -8
  146. package/dist/components/stream/ordinalTypes.d.ts +102 -29
  147. package/dist/components/stream/pipelineDecay.d.ts +2 -1
  148. package/dist/components/stream/pipelinePulse.d.ts +2 -1
  149. package/dist/components/stream/pipelineTransitionUtils.d.ts +21 -0
  150. package/dist/components/stream/pipelineTransitions.d.ts +16 -4
  151. package/dist/components/stream/quadtreeHitTest.d.ts +22 -0
  152. package/dist/components/stream/renderers/colorUtils.d.ts +20 -0
  153. package/dist/components/stream/renderers/resolveCSSColor.d.ts +23 -6
  154. package/dist/components/stream/types.d.ts +63 -8
  155. package/dist/components/stream/useFrame.d.ts +122 -0
  156. package/dist/components/stream/xySceneBuilders/areaScene.d.ts +3 -2
  157. package/dist/components/stream/xySceneBuilders/barScene.d.ts +2 -1
  158. package/dist/components/stream/xySceneBuilders/boundsScene.d.ts +2 -1
  159. package/dist/components/stream/xySceneBuilders/candlestickScene.d.ts +2 -1
  160. package/dist/components/stream/xySceneBuilders/emitPointNodes.d.ts +3 -2
  161. package/dist/components/stream/xySceneBuilders/heatmapScene.d.ts +2 -1
  162. package/dist/components/stream/xySceneBuilders/lineScene.d.ts +2 -1
  163. package/dist/components/stream/xySceneBuilders/mixedScene.d.ts +2 -1
  164. package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -1
  165. package/dist/components/stream/xySceneBuilders/swarmScene.d.ts +2 -1
  166. package/dist/components/stream/xySceneBuilders/types.d.ts +35 -26
  167. package/dist/components/stream/xySceneBuilders/waterfallScene.d.ts +2 -1
  168. package/dist/components/types/marginType.d.ts +15 -0
  169. package/dist/geo.min.js +1 -1
  170. package/dist/geo.module.min.js +1 -1
  171. package/dist/network.min.js +1 -1
  172. package/dist/network.module.min.js +1 -1
  173. package/dist/ordinal.min.js +1 -1
  174. package/dist/ordinal.module.min.js +1 -1
  175. package/dist/realtime.min.js +1 -1
  176. package/dist/realtime.module.min.js +1 -1
  177. package/dist/semiotic-ai.min.js +1 -1
  178. package/dist/semiotic-ai.module.min.js +1 -1
  179. package/dist/semiotic-geo.d.ts +4 -0
  180. package/dist/semiotic-network.d.ts +7 -0
  181. package/dist/semiotic-ordinal.d.ts +8 -0
  182. package/dist/semiotic-statisticalOverlays-Ckd_jM8z.js +1 -0
  183. package/dist/semiotic-themes.d.ts +2 -1
  184. package/dist/semiotic-themes.min.js +1 -1
  185. package/dist/semiotic-themes.module.min.js +1 -1
  186. package/dist/semiotic-utils.min.js +1 -1
  187. package/dist/semiotic-utils.module.min.js +1 -1
  188. package/dist/semiotic-xy.d.ts +11 -0
  189. package/dist/semiotic.d.ts +3 -3
  190. package/dist/semiotic.min.js +1 -1
  191. package/dist/semiotic.module.min.js +1 -1
  192. package/dist/server.min.js +1 -1
  193. package/dist/server.module.min.js +1 -1
  194. package/dist/test-utils/canvasMock.d.ts +35 -1
  195. package/dist/test-utils/ordinalFixtures.d.ts +48 -0
  196. package/dist/xy.min.js +1 -1
  197. package/dist/xy.module.min.js +1 -1
  198. package/package.json +50 -42
  199. package/dist/components/types/annotationTypes.d.ts +0 -145
  200. package/dist/components/types/generalTypes.d.ts +0 -241
  201. package/dist/components/types/interactionTypes.d.ts +0 -72
  202. package/dist/components/types/networkTypes.d.ts +0 -174
  203. package/dist/components/types/ordinalTypes.d.ts +0 -112
  204. package/dist/semiotic-statisticalOverlays-DGX_WWc5.js +0 -1
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
2
  import type { StreamScales, MarginalGraphicsConfig } from "./types";
3
3
  import type { AnnotationContext } from "../realtime/types";
4
4
  import type { ReactNode } from "react";
@@ -38,8 +38,8 @@ interface SVGOverlayProps {
38
38
  yLabel?: string;
39
39
  /** Label for the right Y axis (dual-axis charts) */
40
40
  yLabelRight?: string;
41
- xFormat?: (d: any, index?: number, allTicks?: number[]) => string | ReactNode;
42
- yFormat?: (d: any) => string | ReactNode;
41
+ xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
42
+ yFormat?: (d: number | Date | string) => string | ReactNode;
43
43
  showGrid?: boolean;
44
44
  title?: string | ReactNode;
45
45
  legend?: ReactNode | {
@@ -65,12 +65,12 @@ interface SVGOverlayProps {
65
65
  marginalGraphics?: MarginalGraphicsConfig;
66
66
  xValues?: number[];
67
67
  yValues?: number[];
68
- annotations?: Record<string, any>[];
69
- svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode;
68
+ annotations?: Datum[];
69
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
70
70
  annotationFrame?: number;
71
71
  xAccessor?: string;
72
72
  yAccessor?: string;
73
- annotationData?: Record<string, any>[];
73
+ annotationData?: Datum[];
74
74
  pointNodes?: {
75
75
  pointId?: string;
76
76
  x: number;
@@ -102,9 +102,9 @@ interface SVGUnderlayProps {
102
102
  showAxes?: boolean;
103
103
  axes?: AxisConfig[];
104
104
  showGrid?: boolean;
105
- xFormat?: (d: any, index?: number, allTicks?: number[]) => string | ReactNode;
106
- yFormat?: (d: any) => string | ReactNode;
105
+ xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
106
+ yFormat?: (d: number | Date | string) => string | ReactNode;
107
107
  }
108
- export declare function SVGUnderlay(props: SVGUnderlayProps): React.JSX.Element | null;
109
- export declare function SVGOverlay(props: SVGOverlayProps): React.JSX.Element | null;
108
+ export declare function SVGUnderlay(props: SVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
109
+ export declare function SVGOverlay(props: SVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
110
110
  export {};
@@ -1,16 +1,17 @@
1
1
  import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
2
- export declare function buildLineNode(data: Record<string, any>[], scales: StreamScales, xGet: (d: Record<string, any>) => number, yGet: (d: Record<string, any>) => number, style: Style, group?: string): LineSceneNode;
3
- export declare function buildAreaNode(data: Record<string, any>[], scales: StreamScales, xGet: (d: Record<string, any>) => number, yGet: (d: Record<string, any>) => number, baselineY: number, style: Style, group?: string, y0Get?: (d: Record<string, any>) => number): AreaSceneNode;
2
+ import type { Datum } from "../charts/shared/datumTypes";
3
+ export declare function buildLineNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, style: Style, group?: string): LineSceneNode;
4
+ export declare function buildAreaNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, baselineY: number, style: Style, group?: string, y0Get?: (d: Datum) => number): AreaSceneNode;
4
5
  /** Per-group-per-x stacked top values, keyed by group then x */
5
6
  export type StackedTops = Map<string, Map<number, number>>;
6
7
  export declare function buildStackedAreaNodes(groups: {
7
8
  key: string;
8
- data: Record<string, any>[];
9
- }[], scales: StreamScales, xGet: (d: Record<string, any>) => number, yGet: (d: Record<string, any>) => number, styleFn: (group: string, sampleDatum?: Record<string, any>) => Style, normalize?: boolean, curve?: CurveType): {
9
+ data: Datum[];
10
+ }[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, styleFn: (group: string, sampleDatum?: Datum) => Style, normalize?: boolean, curve?: CurveType): {
10
11
  nodes: AreaSceneNode[];
11
12
  stackedTops: StackedTops;
12
13
  };
13
- export declare function buildPointNode(datum: Record<string, any>, scales: StreamScales, xGet: (d: Record<string, any>) => number, yGet: (d: Record<string, any>) => number, r: number, style: Style, pointId?: string): PointSceneNode | null;
14
+ export declare function buildPointNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, r: number, style: Style, pointId?: string): PointSceneNode | null;
14
15
  export declare function buildRectNode(x: number, y: number, w: number, h: number, style: Style, datum: any, group?: string): RectSceneNode;
15
16
  export declare function buildHeatcellNode(x: number, y: number, w: number, h: number, fill: string, datum: any, options?: {
16
17
  value?: number;
@@ -1,4 +1,5 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  import * as React from "react";
2
3
  import type { StreamGeoFrameProps, StreamGeoFrameHandle } from "./geoTypes";
3
- declare const StreamGeoFrame: React.ForwardRefExoticComponent<StreamGeoFrameProps<Record<string, any>> & React.RefAttributes<StreamGeoFrameHandle>>;
4
+ declare const StreamGeoFrame: React.ForwardRefExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
4
5
  export default StreamGeoFrame;
@@ -1,4 +1,5 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  import * as React from "react";
2
3
  import type { StreamNetworkFrameProps, StreamNetworkFrameHandle } from "./networkTypes";
3
- declare const StreamNetworkFrame: React.ForwardRefExoticComponent<StreamNetworkFrameProps<Record<string, any>> & React.RefAttributes<StreamNetworkFrameHandle>>;
4
+ declare const StreamNetworkFrame: React.ForwardRefExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
4
5
  export default StreamNetworkFrame;
@@ -1,4 +1,5 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  import * as React from "react";
2
3
  import type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle } from "./ordinalTypes";
3
- declare const StreamOrdinalFrame: React.ForwardRefExoticComponent<StreamOrdinalFrameProps<Record<string, any>> & React.RefAttributes<StreamOrdinalFrameHandle<Record<string, any>>>>;
4
+ declare const StreamOrdinalFrame: React.ForwardRefExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
4
5
  export default StreamOrdinalFrame;
@@ -1,4 +1,22 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  import * as React from "react";
2
3
  import type { StreamXYFrameProps, StreamXYFrameHandle } from "./types";
3
- declare const StreamXYFrame: React.ForwardRefExoticComponent<StreamXYFrameProps<Record<string, any>> & React.RefAttributes<StreamXYFrameHandle<Record<string, any>>>>;
4
+ /**
5
+ * Append a 2-char hex alpha to an existing CSS color, returning a valid
6
+ * CSS color string. The naive `${color}${alpha}` concatenation only works
7
+ * when `color` is a 6-char `#rrggbb`; shorthand `#rgb` produces the
8
+ * invalid 5-char `#rgbXX`, which `ctx.strokeStyle`/`fillStyle` silently
9
+ * rejects (falling back to `#000000` — black, invisible on dark themes).
10
+ * The /cookbook/marginal-graphics crosshair invisibility was caused
11
+ * precisely by `--semiotic-text-secondary: "#aaa"` hitting this path.
12
+ *
13
+ * Handles:
14
+ * • 3-char hex (`#abc`) → expanded to 6-char then concatenated
15
+ * • 6-char hex (`#aabbcc`) → concatenated directly
16
+ * • `rgb(...)` → repacked as `rgba(..., a)` with numeric alpha
17
+ * Any other form (named colors, hsl(), oklch(), etc.) falls back to the
18
+ * raw color without alpha — degrades gracefully.
19
+ */
20
+ export declare function withAlpha(color: string, alphaHex: string): string;
21
+ declare const StreamXYFrame: React.ForwardRefExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
4
22
  export default StreamXYFrame;
@@ -1,23 +1,3 @@
1
- /**
2
- * XYBrushOverlay — d3-brush SVG overlay for XY frames.
3
- *
4
- * Renders a transparent SVG positioned above the canvas. Supports x, y, and
5
- * xy brush dimensions, bin snapping, and streaming brush tracking (shrinks/
6
- * clears the brush as data scrolls past the selected range).
7
- *
8
- * Key design decisions:
9
- * - d3-brush lifecycle depends on [width, height, dimension, snap, binSize, snapDuring]
10
- * only — scales and binBoundaries are read from refs to avoid teardown mid-drag.
11
- * - Data-driven snapping (binBoundaries) uses binary search to snap to actual bin
12
- * edges. Falls back to uniform grid math (binSize) when no boundaries are provided.
13
- * - Bin snapping applies on "end" events by default. Set snapDuring=true to also
14
- * snap during drag (the "brush" event).
15
- * - Streaming tracking guards against y-only dimension (no x-domain to track).
16
- * - isProgrammaticMoveRef prevents re-entrant brush events from .move() calls.
17
- *
18
- * Consumed by: StreamXYFrame (rendered when brush prop is set).
19
- */
20
- import * as React from "react";
21
1
  import type { StreamScales } from "./types";
22
2
  export interface XYBrushOverlayProps {
23
3
  width: number;
@@ -44,4 +24,4 @@ export interface XYBrushOverlayProps {
44
24
  snapDuring?: boolean;
45
25
  streaming?: boolean;
46
26
  }
47
- export declare function XYBrushOverlay({ width, height, totalWidth, totalHeight, margin, dimension, scales, onBrush, binSize, snap, binBoundaries, snapDuring, streaming }: XYBrushOverlayProps): React.JSX.Element;
27
+ export declare function XYBrushOverlay({ width, height, totalWidth, totalHeight, margin, dimension, scales, onBrush, binSize, snap, binBoundaries, snapDuring, streaming }: XYBrushOverlayProps): import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,4 @@
1
- /**
2
- * Dev-mode helper that warns when user callbacks access properties that exist
3
- * on `.data` but not on the RealtimeNode/RealtimeEdge wrapper.
4
- *
5
- * Common pitfall:
6
- * nodeStyle={(d) => ({ fill: d.category })} // undefined!
7
- * nodeStyle={(d) => ({ fill: d.data?.category })} // correct
8
- *
9
- * In production, this is a no-op passthrough.
10
- */
1
+ import type { Datum } from "../charts/shared/datumTypes";
11
2
  export declare function wrapWithDataHint<T extends {
12
- data?: Record<string, any>;
3
+ data?: Datum;
13
4
  }>(datum: T, callbackName: string): T;
@@ -1,8 +1,10 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { GeoProjection, GeoPath, GeoPermissibleObjects } from "d3-geo";
3
- import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, PointSceneNode, LineSceneNode } from "./types";
3
+ import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, PointSceneNode, LineSceneNode, ThemeSemanticColors } from "./types";
4
+ import type { AnimateProp } from "./pipelineTransitionUtils";
4
5
  import type { HoverAnnotationConfig, HoverData } from "../realtime/types";
5
6
  import type { GeoParticleStyle } from "./GeoParticlePool";
7
+ import type { Datum } from "../charts/shared/datumTypes";
6
8
  export type ProjectionProp = GeoProjection | ProjectionName | ProjectionConfig;
7
9
  export type ProjectionName = "mercator" | "equalEarth" | "albersUsa" | "orthographic" | "naturalEarth" | "equirectangular";
8
10
  export interface ProjectionConfig {
@@ -20,8 +22,8 @@ export interface GraticuleConfig {
20
22
  }
21
23
  export interface DistanceCartogramConfig {
22
24
  center: string;
23
- centerAccessor?: string | ((d: any) => string);
24
- costAccessor: string | ((d: any) => number);
25
+ centerAccessor?: string | ((d: Datum) => string);
26
+ costAccessor: string | ((d: Datum) => number);
25
27
  strength?: number;
26
28
  lineMode?: "straight" | "fractional";
27
29
  }
@@ -58,27 +60,35 @@ export interface GeoPipelineConfig {
58
60
  projectionExtent?: [[number, number], [number, number]];
59
61
  /** Padding fraction for auto-fit projection. 0.1 = 10% inset from edges. @default 0 */
60
62
  fitPadding?: number;
61
- xAccessor?: string | ((d: any) => number);
62
- yAccessor?: string | ((d: any) => number);
63
- lineDataAccessor?: string | ((d: any) => any[]);
63
+ xAccessor?: string | ((d: Datum) => number);
64
+ yAccessor?: string | ((d: Datum) => number);
65
+ lineDataAccessor?: string | ((d: Datum) => any[]);
64
66
  lineType?: "geo" | "line";
65
67
  /** Flow rendering style: "basic" (straight/great-circle), "offset" (bidirectional offset), "arc" (curved arcs) @default "basic" */
66
68
  flowStyle?: "basic" | "offset" | "arc";
67
- areaStyle?: Style | ((d: any) => Style);
68
- pointStyle?: (d: any) => Style & {
69
+ areaStyle?: Style | ((d: Datum) => Style);
70
+ pointStyle?: (d: Datum) => Style & {
69
71
  r?: number;
70
72
  };
71
73
  lineStyle?: Style | ((d: any, group?: string) => Style);
72
74
  colorScheme?: string | string[];
75
+ /** Theme-resolved semantic role colors — default fallback before hardcoded hex. See `ThemeSemanticColors` in ./types. */
76
+ themeSemantic?: ThemeSemanticColors;
77
+ /** Theme sequential scheme name — fallback for ChoroplethMap when colorScheme is not set. */
78
+ themeSequential?: string;
79
+ /** Theme diverging scheme name — available for geo consumers that need midpoint encodings. */
80
+ themeDiverging?: string;
73
81
  graticule?: boolean | GraticuleConfig;
74
82
  projectionTransform?: DistanceCartogramConfig;
75
83
  decay?: DecayConfig;
76
84
  pulse?: PulseConfig;
77
85
  transition?: TransitionConfig;
78
- annotations?: Record<string, any>[];
79
- pointIdAccessor?: string | ((d: any) => string);
86
+ /** Whether to animate elements on first render */
87
+ introAnimation?: boolean;
88
+ annotations?: Datum[];
89
+ pointIdAccessor?: string | ((d: Datum) => string);
80
90
  }
81
- export interface StreamGeoFrameProps<T = Record<string, any>> {
91
+ export interface StreamGeoFrameProps<T = Datum> {
82
92
  projection: ProjectionProp;
83
93
  projectionExtent?: [[number, number], [number, number]];
84
94
  /** Padding fraction for auto-fit projection. 0.1 = 10% inset from edges. @default 0 */
@@ -131,8 +141,8 @@ export interface StreamGeoFrameProps<T = Record<string, any>> {
131
141
  className?: string;
132
142
  background?: string;
133
143
  runtimeMode?: "bounded" | "streaming";
134
- areaStyle?: Style | ((d: any) => Style);
135
- pointStyle?: (d: any) => Style & {
144
+ areaStyle?: Style | ((d: Datum) => Style);
145
+ pointStyle?: (d: Datum) => Style & {
136
146
  r?: number;
137
147
  };
138
148
  lineStyle?: Style | ((d: any, group?: string) => Style);
@@ -142,10 +152,14 @@ export interface StreamGeoFrameProps<T = Record<string, any>> {
142
152
  tooltipContent?: (d: HoverData) => ReactNode;
143
153
  customClickBehavior?: (d: HoverData | null) => void;
144
154
  customHoverBehavior?: (d: HoverData | null) => void;
145
- annotations?: Record<string, any>[];
155
+ annotations?: Datum[];
146
156
  decay?: DecayConfig;
147
157
  pulse?: PulseConfig;
148
158
  transition?: TransitionConfig;
159
+ /** Declarative animation: `true` for defaults (300ms ease-out), or config object.
160
+ * When enabled, charts animate on first render (intro) and on data change.
161
+ * Set `{ intro: false }` to disable the intro animation. */
162
+ animate?: AnimateProp;
149
163
  staleness?: StalenessConfig;
150
164
  backgroundGraphics?: ReactNode;
151
165
  foregroundGraphics?: ReactNode;
@@ -169,10 +183,10 @@ export interface StreamGeoFrameProps<T = Record<string, any>> {
169
183
  summary?: string;
170
184
  }
171
185
  export interface StreamGeoFrameHandle {
172
- push(datum: Record<string, any>): void;
173
- pushMany(data: Record<string, any>[]): void;
186
+ push(datum: Datum): void;
187
+ pushMany(data: Datum[]): void;
174
188
  /** Remove points by ID. Requires pointIdAccessor. */
175
- removePoint(id: string | string[]): Record<string, any>[];
189
+ removePoint(id: string | string[]): Datum[];
176
190
  clear(): void;
177
191
  getProjection(): GeoProjection | null;
178
192
  getGeoPath(): GeoPath<any, GeoPermissibleObjects> | null;
@@ -188,5 +202,5 @@ export interface StreamGeoFrameHandle {
188
202
  /** Animate back to initial view */
189
203
  resetZoom(): void;
190
204
  /** Get current data points */
191
- getData(): Record<string, any>[];
205
+ getData(): Datum[];
192
206
  }
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  /**
2
3
  * Shared hover data utilities for stream frames.
3
4
  *
@@ -7,13 +8,25 @@
7
8
  * property flattening that are handled at the call site.
8
9
  */
9
10
  import type { HoverData } from "../realtime/types";
11
+ /**
12
+ * Minimal shape a Stream Frame's internal hover handler needs from a pointer
13
+ * event. React.MouseEvent satisfies this structurally, as does the plain
14
+ * `{clientX, clientY}` object the rAF-coalescing path synthesizes. Using this
15
+ * narrower type on `hoverHandlerRef` (instead of `React.MouseEvent`) prevents
16
+ * downstream code from reading event fields — `currentTarget`, `target`,
17
+ * `preventDefault` — that wouldn't survive the coalescing cast.
18
+ */
19
+ export interface HoverPointerCoords {
20
+ clientX: number;
21
+ clientY: number;
22
+ }
10
23
  /**
11
24
  * Spread raw datum properties onto HoverData if it's a non-null,
12
25
  * non-array object. Class instances (Date, etc.) are included —
13
26
  * this matches the historical behavior where all datum fields are
14
27
  * accessible directly on the hover object (d.fieldName).
15
28
  */
16
- export declare function spreadDatum(rawDatum: any): Record<string, any>;
29
+ export declare function spreadDatum(rawDatum: any): Datum;
17
30
  /**
18
31
  * Build a HoverData object from a raw datum and pixel coordinates.
19
32
  * Spreads plain-object datum properties for backwards compatibility
@@ -13,17 +13,18 @@
13
13
  * Consumed by: hierarchyLayoutPlugin.ts (buildScene dispatcher)
14
14
  */
15
15
  import type { NetworkPipelineConfig, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, RealtimeNode, RealtimeEdge } from "../networkTypes";
16
- export declare function buildTreeScene(nodes: RealtimeNode[], edges: RealtimeEdge[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: any) => Record<string, any>, edgeStyleFn: (d: any) => Record<string, any>): {
16
+ import type { Style } from "../types";
17
+ export declare function buildTreeScene(nodes: RealtimeNode[], edges: RealtimeEdge[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: RealtimeNode) => Style, edgeStyleFn: (d: RealtimeEdge) => Style): {
17
18
  sceneNodes: NetworkSceneNode[];
18
19
  sceneEdges: NetworkSceneEdge[];
19
20
  labels: NetworkLabel[];
20
21
  };
21
- export declare function buildRectScene(nodes: RealtimeNode[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: any) => Record<string, any>): {
22
+ export declare function buildRectScene(nodes: RealtimeNode[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: RealtimeNode) => Style): {
22
23
  sceneNodes: NetworkSceneNode[];
23
24
  sceneEdges: NetworkSceneEdge[];
24
25
  labels: NetworkLabel[];
25
26
  };
26
- export declare function buildCircleScene(nodes: RealtimeNode[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: any) => Record<string, any>): {
27
+ export declare function buildCircleScene(nodes: RealtimeNode[], config: NetworkPipelineConfig, size: [number, number], nodeStyleFn: (d: RealtimeNode) => Style): {
27
28
  sceneNodes: NetworkSceneNode[];
28
29
  sceneEdges: NetworkSceneEdge[];
29
30
  labels: NetworkLabel[];
@@ -7,6 +7,7 @@
7
7
  * Consumed by: hierarchyLayoutPlugin.ts, hierarchySceneBuilders.ts
8
8
  */
9
9
  import type { NetworkPipelineConfig } from "../networkTypes";
10
+ import type { Datum } from "../../charts/shared/datumTypes";
10
11
  /** Depth-based color palette shared across all hierarchy scene builders */
11
12
  export declare const DEPTH_PALETTE: string[];
12
13
  /**
@@ -19,7 +20,7 @@ export declare function parseColor(color: string): [number, number, number];
19
20
  * Uses perceived luminance (ITU-R BT.601).
20
21
  */
21
22
  export declare function contrastTextColor(bgColor: string): string;
22
- export declare function resolveChildrenAccessor(accessor: string | ((d: any) => any[]) | undefined): ((d: any) => any[]) | undefined;
23
+ export declare function resolveChildrenAccessor(accessor: string | ((d: Datum) => any[]) | undefined): ((d: Datum) => any[]) | undefined;
23
24
  export declare function resolveNodeId(d: any, config: NetworkPipelineConfig, index: number): string;
24
- export declare function resolveLabelFn(nodeLabel: string | ((d: any) => string) | undefined): ((d: any) => string) | null;
25
- export declare function resolveDefaultNodeSize(nodeSize: number | string | ((d: any) => number) | undefined): number;
25
+ export declare function resolveLabelFn(nodeLabel: string | ((d: Datum) => string) | undefined): ((d: Datum) => string) | null;
26
+ export declare function resolveDefaultNodeSize(nodeSize: number | string | ((d: Datum) => number) | undefined): number;
@@ -2,7 +2,9 @@ import type { ReactNode } from "react";
2
2
  import type { OnObservationCallback } from "../store/ObservationStore";
3
3
  import type { HoverData, AnnotationContext } from "../realtime/types";
4
4
  import type { LegendGroup } from "../types/legendTypes";
5
- import type { Style, DecayConfig, PulseConfig, StalenessConfig } from "./types";
5
+ import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors } from "./types";
6
+ import type { AnimateProp } from "./pipelineTransitionUtils";
7
+ import type { Datum } from "../charts/shared/datumTypes";
6
8
  export interface TensionConfig {
7
9
  weightChange: number;
8
10
  newEdge: number;
@@ -31,7 +33,7 @@ export interface RealtimeNode {
31
33
  _targetY1?: number;
32
34
  value: number;
33
35
  depth?: number;
34
- data?: Record<string, any>;
36
+ data?: Datum;
35
37
  createdByFrame?: boolean;
36
38
  sourceLinks?: RealtimeEdge[];
37
39
  targetLinks?: RealtimeEdge[];
@@ -52,11 +54,13 @@ export interface RealtimeEdge {
52
54
  _targetY0?: number;
53
55
  _targetY1?: number;
54
56
  _targetSankeyWidth?: number;
57
+ /** Set during intro animation to allow edge interpolation from width 0 */
58
+ _introFromZero?: boolean;
55
59
  direction?: string;
56
60
  circular?: boolean;
57
61
  circularPathData?: any;
58
62
  bezier?: BezierCache;
59
- data?: Record<string, any>;
63
+ data?: Datum;
60
64
  /** Unique key for this edge (supports parallel edges between same node pair) */
61
65
  _edgeKey?: string;
62
66
  _pulseIntensity?: number;
@@ -208,6 +212,9 @@ export interface NetworkBezierEdge {
208
212
  datum: any;
209
213
  _pulseIntensity?: number;
210
214
  _pulseColor?: string;
215
+ /** Lazily-built Path2D for hit testing; invalidated when pathD changes. */
216
+ _cachedPath2D?: Path2D;
217
+ _cachedPath2DSource?: string;
211
218
  }
212
219
  /** Ribbon edge — used by chord */
213
220
  export interface NetworkRibbonEdge {
@@ -217,6 +224,8 @@ export interface NetworkRibbonEdge {
217
224
  datum: any;
218
225
  _pulseIntensity?: number;
219
226
  _pulseColor?: string;
227
+ _cachedPath2D?: Path2D;
228
+ _cachedPath2DSource?: string;
220
229
  }
221
230
  /** Curved edge — used by tree, cluster */
222
231
  export interface NetworkCurvedEdge {
@@ -226,6 +235,8 @@ export interface NetworkCurvedEdge {
226
235
  datum: any;
227
236
  _pulseIntensity?: number;
228
237
  _pulseColor?: string;
238
+ _cachedPath2D?: Path2D;
239
+ _cachedPath2DSource?: string;
229
240
  }
230
241
  export type NetworkSceneNode = NetworkCircleNode | NetworkRectNode | NetworkArcNode;
231
242
  export type NetworkSceneEdge = NetworkLineEdge | NetworkBezierEdge | NetworkRibbonEdge | NetworkCurvedEdge;
@@ -289,14 +300,14 @@ export interface ThresholdAlertConfig {
289
300
  }
290
301
  export interface NetworkPipelineConfig {
291
302
  chartType: NetworkChartType;
292
- nodeIDAccessor?: string | ((d: any) => string);
293
- sourceAccessor?: string | ((d: any) => string);
294
- targetAccessor?: string | ((d: any) => string);
295
- valueAccessor?: string | ((d: any) => number);
303
+ nodeIDAccessor?: string | ((d: Datum) => string);
304
+ sourceAccessor?: string | ((d: Datum) => string);
305
+ targetAccessor?: string | ((d: Datum) => string);
306
+ valueAccessor?: string | ((d: Datum) => number);
296
307
  /** Edge ID accessor for removeEdge(edgeId) — enables single-ID edge removal */
297
- edgeIdAccessor?: string | ((d: any) => string);
298
- childrenAccessor?: string | ((d: any) => any[]);
299
- hierarchySum?: string | ((d: any) => number);
308
+ edgeIdAccessor?: string | ((d: Datum) => string);
309
+ childrenAccessor?: string | ((d: Datum) => any[]);
310
+ hierarchySum?: string | ((d: Datum) => number);
300
311
  orientation?: "horizontal" | "vertical";
301
312
  nodeAlign?: "justify" | "left" | "right" | "center";
302
313
  nodePaddingRatio?: number;
@@ -314,20 +325,27 @@ export interface NetworkPipelineConfig {
314
325
  tensionConfig?: TensionConfig;
315
326
  showParticles?: boolean;
316
327
  particleStyle?: ParticleStyle;
317
- nodeStyle?: (d: any) => Record<string, any>;
318
- edgeStyle?: (d: any) => Record<string, any>;
319
- nodeLabel?: string | ((d: any) => string);
328
+ nodeStyle?: (d: Datum) => Datum;
329
+ edgeStyle?: (d: Datum) => Datum;
330
+ nodeLabel?: string | ((d: Datum) => string);
320
331
  showLabels?: boolean;
321
332
  labelMode?: "leaf" | "parent" | "all";
322
- colorBy?: string | ((d: any) => string | number);
333
+ colorBy?: string | ((d: Datum) => string | number);
323
334
  colorScheme?: string | string[];
324
- edgeColorBy?: "source" | "target" | "gradient" | ((d: any) => string);
335
+ /** Theme categorical palette used as fallback when colorScheme is not an explicit array */
336
+ themeCategorical?: string[];
337
+ /** Theme-resolved semantic role colors — default fallback before hardcoded hex. See `ThemeSemanticColors` in ./types. */
338
+ themeSemantic?: ThemeSemanticColors;
339
+ edgeColorBy?: "source" | "target" | "gradient" | ((d: Datum) => string);
325
340
  edgeOpacity?: number;
326
341
  colorByDepth?: boolean;
327
- nodeSize?: number | string | ((d: any) => number);
342
+ nodeSize?: number | string | ((d: Datum) => number);
328
343
  nodeSizeRange?: [number, number];
329
344
  decay?: DecayConfig;
330
345
  pulse?: PulseConfig;
346
+ transition?: TransitionConfig;
347
+ /** Whether to animate elements on first render (nodes scale up, edges fade in) */
348
+ introAnimation?: boolean;
331
349
  staleness?: StalenessConfig;
332
350
  thresholds?: ThresholdAlertConfig;
333
351
  /** Ring arrangement mode: "flat" (all children in one ring), "solar" (one per ring),
@@ -364,7 +382,7 @@ export interface NetworkPipelineConfig {
364
382
  y: number;
365
383
  }>;
366
384
  }
367
- export interface StreamNetworkFrameProps<T = Record<string, any>> {
385
+ export interface StreamNetworkFrameProps<T = Datum> {
368
386
  chartType: NetworkChartType;
369
387
  nodes?: T[];
370
388
  edges?: T[] | T;
@@ -376,7 +394,7 @@ export interface StreamNetworkFrameProps<T = Record<string, any>> {
376
394
  targetAccessor?: string | ((d: T) => string);
377
395
  valueAccessor?: string | ((d: T) => number);
378
396
  /** Edge ID accessor for removeEdge(edgeId) single-ID removal */
379
- edgeIdAccessor?: string | ((d: any) => string);
397
+ edgeIdAccessor?: string | ((d: Datum) => string);
380
398
  childrenAccessor?: string | ((d: T) => T[]);
381
399
  hierarchySum?: string | ((d: T) => number);
382
400
  orientation?: "horizontal" | "vertical";
@@ -396,16 +414,16 @@ export interface StreamNetworkFrameProps<T = Record<string, any>> {
396
414
  tensionConfig?: Partial<TensionConfig>;
397
415
  showParticles?: boolean;
398
416
  particleStyle?: ParticleStyle;
399
- nodeStyle?: (d: any) => Record<string, any>;
400
- edgeStyle?: (d: any) => Record<string, any>;
401
- colorBy?: string | ((d: any) => string | number);
417
+ nodeStyle?: (d: Datum) => Datum;
418
+ edgeStyle?: (d: Datum) => Datum;
419
+ colorBy?: string | ((d: Datum) => string | number);
402
420
  colorScheme?: string | string[];
403
- edgeColorBy?: "source" | "target" | "gradient" | ((d: any) => string);
421
+ edgeColorBy?: "source" | "target" | "gradient" | ((d: Datum) => string);
404
422
  edgeOpacity?: number;
405
423
  colorByDepth?: boolean;
406
- nodeSize?: number | string | ((d: any) => number);
424
+ nodeSize?: number | string | ((d: Datum) => number);
407
425
  nodeSizeRange?: [number, number];
408
- nodeLabel?: string | ((d: any) => string);
426
+ nodeLabel?: string | ((d: Datum) => string);
409
427
  showLabels?: boolean;
410
428
  labelMode?: "leaf" | "parent" | "all";
411
429
  size?: [number, number];
@@ -428,8 +446,8 @@ export interface StreamNetworkFrameProps<T = Record<string, any>> {
428
446
  /** Chart instance identifier for observation filtering */
429
447
  chartId?: string;
430
448
  onTopologyChange?: (nodes: RealtimeNode[], edges: RealtimeEdge[]) => void;
431
- annotations?: Record<string, any>[];
432
- svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode;
449
+ annotations?: Datum[];
450
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
433
451
  legend?: ReactNode | {
434
452
  legendGroups: LegendGroup[];
435
453
  };
@@ -447,6 +465,11 @@ export interface StreamNetworkFrameProps<T = Record<string, any>> {
447
465
  backgroundGraphics?: ReactNode;
448
466
  decay?: DecayConfig;
449
467
  pulse?: PulseConfig;
468
+ transition?: TransitionConfig;
469
+ /** Declarative animation: `true` for defaults (300ms ease-out), or config object.
470
+ * When enabled, charts animate on first render (intro) and on data change.
471
+ * Set `{ intro: false }` to disable the intro animation. */
472
+ animate?: AnimateProp;
450
473
  staleness?: StalenessConfig;
451
474
  thresholds?: ThresholdAlertConfig;
452
475
  orbitMode?: "flat" | "solar" | "atomic" | number[];
@@ -472,9 +495,9 @@ export interface StreamNetworkFrameHandle {
472
495
  /** Remove edges by source+target, or by edge ID when edgeIdAccessor is configured. */
473
496
  removeEdge(sourceIdOrEdgeId: string, targetId?: string): boolean;
474
497
  /** Update a node's data by ID. Returns previous data. */
475
- updateNode(id: string, updater: (data: Record<string, any>) => Record<string, any>): Record<string, any> | null;
498
+ updateNode(id: string, updater: (data: Datum) => Datum): Datum | null;
476
499
  /** Update all edges between source+target. Returns array of previous data. */
477
- updateEdge(sourceId: string, targetId: string, updater: (data: Record<string, any>) => Record<string, any>): Record<string, any>[];
500
+ updateEdge(sourceId: string, targetId: string, updater: (data: Datum) => Datum): Datum[];
478
501
  clear(): void;
479
502
  getTopology(): {
480
503
  nodes: RealtimeNode[];
@@ -24,4 +24,4 @@ import type { OrdinalSceneContext } from "./types";
24
24
  * - __barFunnelCategory: category key (for multi-category)
25
25
  * - __barFunnelLabelX/Y: position for the floating label
26
26
  */
27
- export declare function buildBarFunnelScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
27
+ export declare function buildBarFunnelScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
@@ -1,4 +1,4 @@
1
1
  import type { OrdinalSceneNode, OrdinalLayout } from "../ordinalTypes";
2
2
  import type { OrdinalSceneContext } from "./types";
3
- export declare function buildBarScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
4
- export declare function buildClusterBarScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
3
+ export declare function buildBarScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
4
+ export declare function buildClusterBarScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
@@ -1,3 +1,3 @@
1
1
  import type { ConnectorSceneNode, OrdinalSceneNode, OrdinalLayout } from "../ordinalTypes";
2
2
  import type { OrdinalSceneContext } from "./types";
3
- export declare function buildConnectors(ctx: OrdinalSceneContext, pieceNodes: OrdinalSceneNode[], layout: OrdinalLayout): ConnectorSceneNode[];
3
+ export declare function buildConnectors(ctx: OrdinalSceneContext, pieceNodes: OrdinalSceneNode[], _layout: OrdinalLayout): ConnectorSceneNode[];
@@ -1,4 +1,4 @@
1
1
  import type { OrdinalSceneNode, OrdinalLayout } from "../ordinalTypes";
2
2
  import type { OrdinalSceneContext } from "./types";
3
- export declare function buildPointScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
4
- export declare function buildSwarmScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
3
+ export declare function buildPointScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
4
+ export declare function buildSwarmScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
@@ -1,6 +1,6 @@
1
1
  import type { OrdinalSceneNode, OrdinalLayout } from "../ordinalTypes";
2
2
  import type { OrdinalSceneContext } from "./types";
3
- export declare function buildBoxplotScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
4
- export declare function buildViolinScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
5
- export declare function buildHistogramScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
6
- export declare function buildRidgelineScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
3
+ export declare function buildBoxplotScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
4
+ export declare function buildViolinScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
5
+ export declare function buildHistogramScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
6
+ export declare function buildRidgelineScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
@@ -9,4 +9,4 @@ import type { OrdinalSceneContext } from "./types";
9
9
  * multiple items with the same subcategory can appear in the same lane —
10
10
  * they simply stack sequentially.
11
11
  */
12
- export declare function buildSwimlaneScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
12
+ export declare function buildSwimlaneScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];
@@ -1,3 +1,3 @@
1
1
  import type { OrdinalSceneNode, OrdinalLayout } from "../ordinalTypes";
2
2
  import type { OrdinalSceneContext } from "./types";
3
- export declare function buildTimelineScene(ctx: OrdinalSceneContext, layout: OrdinalLayout): OrdinalSceneNode[];
3
+ export declare function buildTimelineScene(ctx: OrdinalSceneContext, _layout: OrdinalLayout): OrdinalSceneNode[];