semiotic 3.6.0 → 3.7.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 (122) hide show
  1. package/CLAUDE.md +192 -228
  2. package/README.md +70 -17
  3. package/ai/cli.js +41 -0
  4. package/ai/componentMetadata.cjs +11 -2
  5. package/ai/dist/mcp-server.js +625 -10
  6. package/ai/examples.md +98 -0
  7. package/ai/schema.json +581 -1
  8. package/ai/system-prompt.md +7 -4
  9. package/dist/components/AccessibleNavTree.d.ts +26 -0
  10. package/dist/components/Annotation.d.ts +41 -15
  11. package/dist/components/CategoryColors.d.ts +1 -1
  12. package/dist/components/ChartContainer.d.ts +32 -2
  13. package/dist/components/ChartGrid.d.ts +1 -1
  14. package/dist/components/ContextLayout.d.ts +1 -1
  15. package/dist/components/DataSummaryContext.d.ts +1 -1
  16. package/dist/components/DetailsPanel.d.ts +1 -1
  17. package/dist/components/Legend.d.ts +3 -2
  18. package/dist/components/LinkedCharts.d.ts +1 -1
  19. package/dist/components/ThemeProvider.d.ts +1 -1
  20. package/dist/components/Tooltip/FlippingTooltip.d.ts +1 -1
  21. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  22. package/dist/components/ai/annotationProvenance.d.ts +349 -0
  23. package/dist/components/ai/audienceProfile.d.ts +60 -3
  24. package/dist/components/ai/chartCapabilityTypes.d.ts +60 -2
  25. package/dist/components/ai/chartRoles.d.ts +27 -0
  26. package/dist/components/ai/conversationArc.d.ts +379 -0
  27. package/dist/components/ai/dataScaleProfile.d.ts +320 -0
  28. package/dist/components/ai/describeChart.d.ts +114 -0
  29. package/dist/components/ai/navigationTree.d.ts +45 -0
  30. package/dist/components/ai/qualityScorecard.d.ts +11 -0
  31. package/dist/components/ai/readerGrounding.d.ts +70 -0
  32. package/dist/components/ai/suggestCharts.d.ts +34 -1
  33. package/dist/components/ai/useConversationArc.d.ts +89 -0
  34. package/dist/components/ai/useNavigationSync.d.ts +61 -0
  35. package/dist/components/ai/variantDiscovery.d.ts +168 -0
  36. package/dist/components/charts/geo/ChoroplethMap.d.ts +2 -1
  37. package/dist/components/charts/network/CirclePack.d.ts +2 -1
  38. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  39. package/dist/components/charts/network/TreeDiagram.d.ts +2 -1
  40. package/dist/components/charts/network/Treemap.d.ts +2 -1
  41. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +3 -0
  42. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +4 -1
  43. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +3 -0
  44. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +3 -0
  45. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +3 -0
  46. package/dist/components/charts/shared/ChartError.d.ts +2 -1
  47. package/dist/components/charts/shared/annotationHierarchy.d.ts +42 -0
  48. package/dist/components/charts/shared/annotationResolvers.d.ts +3 -2
  49. package/dist/components/charts/shared/annotationRules.d.ts +16 -0
  50. package/dist/components/charts/shared/annotationTypes.d.ts +14 -0
  51. package/dist/components/charts/shared/auditAccessibility.d.ts +90 -0
  52. package/dist/components/charts/shared/chartSpecs.d.ts +2 -3
  53. package/dist/components/charts/shared/diagnoseConfig.d.ts +4 -6
  54. package/dist/components/charts/shared/selectionUtils.d.ts +5 -2
  55. package/dist/components/charts/shared/streamPropsHelpers.d.ts +2 -0
  56. package/dist/components/charts/shared/types.d.ts +5 -1
  57. package/dist/components/charts/shared/withChartWrapper.d.ts +1 -1
  58. package/dist/components/charts/value/BigNumber.capability.d.ts +13 -0
  59. package/dist/components/charts/value/BigNumber.d.ts +14 -0
  60. package/dist/components/charts/value/formatting.d.ts +40 -0
  61. package/dist/components/charts/value/thresholdSparkline.d.ts +40 -0
  62. package/dist/components/charts/value/types.d.ts +292 -0
  63. package/dist/components/charts/xy/MinimapChart.d.ts +2 -1
  64. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +2 -1
  65. package/dist/components/realtime/lifecycleBands.d.ts +44 -0
  66. package/dist/components/realtime/types.d.ts +23 -8
  67. package/dist/components/recipes/annotationDensity.d.ts +69 -0
  68. package/dist/components/recipes/annotationLayout.d.ts +93 -0
  69. package/dist/components/semiotic-ai.d.ts +38 -15
  70. package/dist/components/semiotic-realtime.d.ts +2 -0
  71. package/dist/components/semiotic-recipes.d.ts +4 -0
  72. package/dist/components/semiotic-server.d.ts +2 -1
  73. package/dist/components/semiotic-utils.d.ts +8 -0
  74. package/dist/components/semiotic-value.d.ts +55 -0
  75. package/dist/components/semiotic.d.ts +7 -0
  76. package/dist/components/server/renderEvidence.d.ts +92 -0
  77. package/dist/components/server/renderToStaticSVG.d.ts +14 -1
  78. package/dist/components/server/staticAnnotations.d.ts +2 -0
  79. package/dist/components/stream/AccessibleDataTable.d.ts +15 -6
  80. package/dist/components/stream/FocusRing.d.ts +2 -1
  81. package/dist/components/stream/MarginalGraphics.d.ts +2 -1
  82. package/dist/components/stream/NetworkSVGOverlay.d.ts +13 -6
  83. package/dist/components/stream/OrdinalBrushOverlay.d.ts +19 -1
  84. package/dist/components/stream/OrdinalSVGOverlay.d.ts +4 -2
  85. package/dist/components/stream/SVGOverlay.d.ts +5 -2
  86. package/dist/components/stream/XYBrushOverlay.d.ts +21 -1
  87. package/dist/components/stream/geoTypes.d.ts +3 -0
  88. package/dist/components/stream/networkTypes.d.ts +2 -0
  89. package/dist/components/stream/ordinalTypes.d.ts +2 -0
  90. package/dist/components/stream/types.d.ts +2 -0
  91. package/dist/geo.min.js +1 -1
  92. package/dist/geo.module.min.js +1 -1
  93. package/dist/network.min.js +1 -1
  94. package/dist/network.module.min.js +1 -1
  95. package/dist/ordinal.min.js +1 -1
  96. package/dist/ordinal.module.min.js +1 -1
  97. package/dist/realtime.min.js +1 -1
  98. package/dist/realtime.module.min.js +1 -1
  99. package/dist/semiotic-ai.d.ts +38 -15
  100. package/dist/semiotic-ai.min.js +1 -1
  101. package/dist/semiotic-ai.module.min.js +1 -1
  102. package/dist/semiotic-realtime.d.ts +2 -0
  103. package/dist/semiotic-recipes.d.ts +4 -0
  104. package/dist/semiotic-recipes.min.js +1 -1
  105. package/dist/semiotic-recipes.module.min.js +1 -1
  106. package/dist/semiotic-server.d.ts +2 -1
  107. package/dist/semiotic-themes.min.js +1 -1
  108. package/dist/semiotic-themes.module.min.js +1 -1
  109. package/dist/semiotic-utils.d.ts +8 -0
  110. package/dist/semiotic-utils.min.js +1 -1
  111. package/dist/semiotic-utils.module.min.js +1 -1
  112. package/dist/semiotic-value.d.ts +55 -0
  113. package/dist/semiotic-value.min.js +2 -0
  114. package/dist/semiotic-value.module.min.js +2 -0
  115. package/dist/semiotic.d.ts +7 -0
  116. package/dist/semiotic.min.js +1 -1
  117. package/dist/semiotic.module.min.js +1 -1
  118. package/dist/server.min.js +1 -1
  119. package/dist/server.module.min.js +1 -1
  120. package/dist/xy.min.js +1 -1
  121. package/dist/xy.module.min.js +1 -1
  122. package/package.json +19 -5
@@ -13,6 +13,14 @@ export declare function computeCanvasAriaLabel(scene: AnySceneNode[] | null | un
13
13
  * Compute an aria-label for network charts from scene nodes and edges.
14
14
  */
15
15
  export declare function computeNetworkAriaLabel(nodeCount: number, edgeCount: number, chartType: string): string;
16
+ interface DataRow {
17
+ label: string;
18
+ values: Record<string, string | number>;
19
+ }
20
+ /** Extract a flat list of typed rows from scene nodes, surfacing the raw datum
21
+ * fields (not pixel coordinates). Defensively handles missing/malformed data —
22
+ * never throws. Exported for direct testing. */
23
+ export declare function extractAllRows(scene: AnySceneNode[]): DataRow[];
16
24
  interface AccessibleDataTableProps {
17
25
  scene: AnySceneNode[];
18
26
  chartType: string;
@@ -24,9 +32,10 @@ interface AccessibleDataTableProps {
24
32
  /**
25
33
  * JIT accessible data summary. Renders a lightweight sr-only button by default.
26
34
  * On activation (or when ChartContainer's dataSummary action is toggled),
27
- * computes a statistical summary (.describe()-style) and shows 5 sample rows.
35
+ * computes a statistical summary (.describe()-style) and shows a sample of rows
36
+ * (5 to start), pageable to the full dataset via "Show more".
28
37
  */
29
- export declare function AccessibleDataTable({ scene, chartType, tableId, chartTitle }: AccessibleDataTableProps): import("react/jsx-runtime").JSX.Element | null;
38
+ export declare function AccessibleDataTable({ scene, chartType, tableId, chartTitle }: AccessibleDataTableProps): React.JSX.Element | null;
30
39
  interface NetworkAccessibleDataTableProps {
31
40
  nodes: Array<{
32
41
  datum?: any;
@@ -48,25 +57,25 @@ interface NetworkAccessibleDataTableProps {
48
57
  /**
49
58
  * JIT accessible data summary for network charts.
50
59
  */
51
- export declare function NetworkAccessibleDataTable({ nodes, edges, chartType, tableId, chartTitle }: NetworkAccessibleDataTableProps): import("react/jsx-runtime").JSX.Element | null;
60
+ export declare function NetworkAccessibleDataTable({ nodes, edges, chartType, tableId, chartTitle }: NetworkAccessibleDataTableProps): React.JSX.Element | null;
52
61
  /**
53
62
  * Screen-reader-only summary note for the chart.
54
63
  * Rendered as role="note" so assistive technology can discover it.
55
64
  */
56
65
  export declare function ScreenReaderSummary({ summary }: {
57
66
  summary?: string;
58
- }): import("react/jsx-runtime").JSX.Element | null;
67
+ }): React.JSX.Element | null;
59
68
  /**
60
69
  * Screen-reader-only skip link to jump past chart canvas to the data table.
61
70
  * Only rendered when accessibleTable is enabled.
62
71
  */
63
72
  export declare function SkipToTableLink({ tableId }: {
64
73
  tableId: string;
65
- }): import("react/jsx-runtime").JSX.Element;
74
+ }): React.JSX.Element;
66
75
  /**
67
76
  * Visually-hidden aria-live region that mirrors tooltip text for screen readers.
68
77
  */
69
78
  export declare function AriaLiveTooltip({ hoverPoint }: {
70
79
  hoverPoint: any;
71
- }): import("react/jsx-runtime").JSX.Element;
80
+ }): React.JSX.Element;
72
81
  export { SR_ONLY_STYLE };
@@ -1,3 +1,4 @@
1
+ import * as React from "react";
1
2
  /**
2
3
  * Shape-appropriate keyboard focus indicator for canvas-based charts.
3
4
  *
@@ -29,4 +30,4 @@ export interface FocusRingProps {
29
30
  /** Height of rect-shaped focus target */
30
31
  height?: number;
31
32
  }
32
- export declare function FocusRing({ active, hoverPoint, margin, size, shape, width, height }: FocusRingProps): import("react/jsx-runtime").JSX.Element | null;
33
+ export declare function FocusRing({ active, hoverPoint, margin, size, shape, width, height }: FocusRingProps): React.JSX.Element | null;
@@ -1,3 +1,4 @@
1
+ import * as React from "react";
1
2
  import type { ScaleLinear } from "d3-scale";
2
3
  import type { MarginalConfig, MarginalType } from "./types";
3
4
  export type MarginalOrient = "top" | "bottom" | "left" | "right";
@@ -15,4 +16,4 @@ export interface MarginalGraphicsProps {
15
16
  }
16
17
  /** Resolve a string shorthand or full config into a MarginalConfig */
17
18
  export declare function normalizeMarginalConfig(input: MarginalConfig | MarginalType): MarginalConfig;
18
- export declare function MarginalGraphics({ orient, config: rawConfig, values, scale, size, length }: MarginalGraphicsProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export declare function MarginalGraphics({ orient, config: rawConfig, values, scale, size, length }: MarginalGraphicsProps): React.JSX.Element | null;
@@ -1,7 +1,10 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
+ import * as React from "react";
2
3
  import type { ReactNode } from "react";
3
4
  import type { NetworkLabel } from "./networkTypes";
4
5
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
6
+ import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
7
+ import type { AnnotationContext } from "../realtime/types";
5
8
  type AnnotationAnchorNode = {
6
9
  type: string;
7
10
  datum: Datum | null;
@@ -12,6 +15,13 @@ type AnnotationAnchorNode = {
12
15
  cy?: number;
13
16
  w?: number;
14
17
  h?: number;
18
+ /** Circle nodes (NetworkCircleNode, force/tree/orbit marks) carry an explicit radius. */
19
+ r?: number;
20
+ /** Arc nodes (chord, radial) carry an outer radius. */
21
+ outerR?: number;
22
+ };
23
+ type NetworkAnnotationContext = AnnotationContext & {
24
+ sceneNodes?: AnnotationAnchorNode[];
15
25
  };
16
26
  export interface NetworkSVGOverlayProps {
17
27
  width: number;
@@ -50,11 +60,8 @@ export interface NetworkSVGOverlayProps {
50
60
  sceneNodes?: AnnotationAnchorNode[];
51
61
  /** Annotations */
52
62
  annotations?: Datum[];
53
- svgAnnotationRules?: (annotation: Datum, index: number, context: {
54
- width: number;
55
- height: number;
56
- sceneNodes?: AnnotationAnchorNode[];
57
- }) => ReactNode;
63
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
64
+ svgAnnotationRules?: (annotation: Datum, index: number, context: NetworkAnnotationContext) => ReactNode;
58
65
  annotationFrame?: number;
59
66
  }
60
67
  /**
@@ -63,7 +70,7 @@ export interface NetworkSVGOverlayProps {
63
70
  * Unlike XY/ordinal overlays, network charts don't have axes or grid lines.
64
71
  * The overlay is positioned absolutely over the canvas.
65
72
  */
66
- export declare function NetworkSVGOverlay(props: NetworkSVGOverlayProps): import("react/jsx-runtime").JSX.Element;
73
+ export declare function NetworkSVGOverlay(props: NetworkSVGOverlayProps): React.JSX.Element;
67
74
  export declare namespace NetworkSVGOverlay {
68
75
  var displayName: string;
69
76
  }
@@ -1,3 +1,21 @@
1
+ /**
2
+ * OrdinalBrushOverlay — d3-brush SVG overlay for ordinal frames.
3
+ *
4
+ * Renders a transparent SVG positioned above the canvas. Brushes along the
5
+ * r-axis (value axis) only: horizontal projection → brushX, vertical → brushY.
6
+ *
7
+ * Key design decisions:
8
+ * - Outer SVG has pointerEvents:"none", inner brush-g has "all", so
9
+ * axes/legends rendered underneath remain clickable.
10
+ * - d3-brush lifecycle (useEffect) depends on [width, height, isHorizontal]
11
+ * only — NOT scales. Scales are read from a ref to avoid brush teardown
12
+ * mid-drag (scales change every render due to new object identity).
13
+ * - A separate useEffect repositions the brush when scales change (streaming).
14
+ *
15
+ * Consumed by: StreamOrdinalFrame (rendered when brush prop is set).
16
+ * Wired by: useOrdinalBrush hook in HOC charts.
17
+ */
18
+ import * as React from "react";
1
19
  import type { OrdinalScales } from "./ordinalTypes";
2
20
  interface OrdinalBrushOverlayProps {
3
21
  width: number;
@@ -21,5 +39,5 @@ interface OrdinalBrushOverlayProps {
21
39
  * In horizontal projection, r maps to x-pixels → uses brushX.
22
40
  * In vertical projection, r maps to y-pixels → uses brushY.
23
41
  */
24
- export declare function OrdinalBrushOverlay({ width, height, totalWidth, totalHeight, margin, scales, onBrush }: OrdinalBrushOverlayProps): import("react/jsx-runtime").JSX.Element;
42
+ export declare function OrdinalBrushOverlay({ width, height, totalWidth, totalHeight, margin, scales, onBrush }: OrdinalBrushOverlayProps): React.JSX.Element;
25
43
  export {};
@@ -4,6 +4,7 @@ import type { OrdinalScales } from "./ordinalTypes";
4
4
  import type { AnnotationContext } from "../realtime/types";
5
5
  import type { ReactNode } from "react";
6
6
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
7
+ import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
7
8
  import { type AxisExtentMode } from "../charts/shared/axisExtent";
8
9
  interface OrdinalSVGOverlayProps {
9
10
  width: number;
@@ -52,6 +53,7 @@ interface OrdinalSVGOverlayProps {
52
53
  legendLayout?: LegendLayout;
53
54
  foregroundGraphics?: ReactNode;
54
55
  annotations?: Datum[];
56
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
55
57
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
56
58
  annotationFrame?: number;
57
59
  xAccessor?: string;
@@ -79,6 +81,6 @@ interface OrdinalSVGUnderlayProps {
79
81
  rTickValues?: number[];
80
82
  axisExtent?: AxisExtentMode;
81
83
  }
82
- export declare function OrdinalSVGUnderlay(props: OrdinalSVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
83
- export declare function OrdinalSVGOverlay(props: OrdinalSVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
84
+ export declare function OrdinalSVGUnderlay(props: OrdinalSVGUnderlayProps): React.JSX.Element | null;
85
+ export declare function OrdinalSVGOverlay(props: OrdinalSVGOverlayProps): React.JSX.Element | null;
84
86
  export {};
@@ -1,8 +1,10 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
+ import * as React from "react";
2
3
  import type { StreamScales, MarginalGraphicsConfig, XYFrameAxisConfig } from "./types";
3
4
  import type { AnnotationContext } from "../realtime/types";
4
5
  import type { ReactNode } from "react";
5
6
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
7
+ import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
6
8
  export type AxisConfig = XYFrameAxisConfig;
7
9
  interface SVGOverlayProps {
8
10
  width: number;
@@ -57,6 +59,7 @@ interface SVGOverlayProps {
57
59
  xValues?: number[];
58
60
  yValues?: number[];
59
61
  annotations?: Datum[];
62
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
60
63
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
61
64
  annotationFrame?: number;
62
65
  xAccessor?: string;
@@ -109,6 +112,6 @@ interface SVGUnderlayProps {
109
112
  yFormat?: (d: number | Date | string) => string | ReactNode;
110
113
  axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
111
114
  }
112
- export declare function SVGUnderlay(props: SVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
113
- export declare function SVGOverlay(props: SVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
115
+ export declare function SVGUnderlay(props: SVGUnderlayProps): React.JSX.Element | null;
116
+ export declare function SVGOverlay(props: SVGOverlayProps): React.JSX.Element | null;
114
117
  export {};
@@ -1,3 +1,23 @@
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";
1
21
  import type { StreamScales } from "./types";
2
22
  export interface XYBrushOverlayProps {
3
23
  width: number;
@@ -24,4 +44,4 @@ export interface XYBrushOverlayProps {
24
44
  snapDuring?: boolean;
25
45
  streaming?: boolean;
26
46
  }
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;
47
+ export declare function XYBrushOverlay({ width, height, totalWidth, totalHeight, margin, dimension, scales, onBrush, binSize, snap, binBoundaries, snapDuring, streaming }: XYBrushOverlayProps): React.JSX.Element;
@@ -6,6 +6,7 @@ import type { AnimateProp } from "./pipelineTransitionUtils";
6
6
  import type { HoverAnnotationConfig, HoverData } from "../realtime/types";
7
7
  import type { GeoParticleStyle } from "./GeoParticlePool";
8
8
  import type { Datum } from "../charts/shared/datumTypes";
9
+ import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
9
10
  export type ProjectionProp = GeoProjection | ProjectionName | ProjectionConfig;
10
11
  export type ProjectionName = "mercator" | "equalEarth" | "albersUsa" | "orthographic" | "naturalEarth" | "equirectangular";
11
12
  export interface ProjectionConfig {
@@ -94,6 +95,7 @@ export interface GeoPipelineConfig {
94
95
  /** Whether to animate elements on first render */
95
96
  introAnimation?: boolean;
96
97
  annotations?: Datum[];
98
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
97
99
  pointIdAccessor?: string | ((d: Datum) => string);
98
100
  /** ID accessor on line data — required for `removeLine` by id. */
99
101
  lineIdAccessor?: string | ((d: Datum) => string);
@@ -174,6 +176,7 @@ export interface StreamGeoFrameProps<T = Datum> {
174
176
  customClickBehavior?: (d: HoverData | null) => void;
175
177
  customHoverBehavior?: (d: HoverData | null) => void;
176
178
  annotations?: Datum[];
179
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
177
180
  decay?: DecayConfig;
178
181
  pulse?: PulseConfig;
179
182
  transition?: TransitionConfig;
@@ -5,6 +5,7 @@ import type { LegendGroup, LegendLayout } from "../types/legendTypes";
5
5
  import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors, SceneDatum } from "./types";
6
6
  import type { AnimateProp } from "./pipelineTransitionUtils";
7
7
  import type { Datum } from "../charts/shared/datumTypes";
8
+ import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
9
  export interface TensionConfig {
9
10
  weightChange: number;
10
11
  newEdge: number;
@@ -518,6 +519,7 @@ export interface StreamNetworkFrameProps<T = Datum> {
518
519
  chartId?: string;
519
520
  onTopologyChange?: (nodes: RealtimeNode[], edges: RealtimeEdge[]) => void;
520
521
  annotations?: Datum[];
522
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
521
523
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
522
524
  legend?: ReactNode | {
523
525
  legendGroups: LegendGroup[];
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { ScaleLinear, ScaleBand } from "d3-scale";
3
3
  import type { WindowMode, HoverAnnotationConfig, HoverData, AnnotationContext } from "../realtime/types";
4
+ import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
4
5
  import type { Style, SceneDatum, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors } from "./types";
5
6
  import type { AnimateProp } from "./pipelineTransitionUtils";
6
7
  import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
@@ -381,6 +382,7 @@ export interface StreamOrdinalFrameProps<T = Datum> {
381
382
  tooltipContent?: (d: HoverData) => ReactNode;
382
383
  customHoverBehavior?: (d: HoverData | null) => void;
383
384
  annotations?: Datum[];
385
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
384
386
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
385
387
  showGrid?: boolean;
386
388
  legend?: ReactNode | {
@@ -5,6 +5,7 @@ import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/l
5
5
  import type { ArrowOfTime, WindowMode, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, HoverAnnotationConfig, HoverData, AnnotationContext, AnnotationAnchorMode } from "../realtime/types";
6
6
  import type { Datum } from "../charts/shared/datumTypes";
7
7
  import type { CoercibleNumber } from "./accessorUtils";
8
+ import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
9
  export type SceneDatum = Datum | null;
9
10
  export type SeriesDatum = Datum[] | null;
10
11
  export type AxisTickFormat = ((d: number, index?: number, allTicks?: number[]) => string) | ((d: string, index?: number, allTicks?: number[]) => string) | ((d: Date, index?: number, allTicks?: number[]) => string);
@@ -635,6 +636,7 @@ export interface StreamXYFrameProps<T = Datum> {
635
636
  /** Accessor for unique point IDs used by point-anchored annotations */
636
637
  pointIdAccessor?: string | ((d: T) => string);
637
638
  annotations?: Datum[];
639
+ autoPlaceAnnotations?: AutoPlaceAnnotations;
638
640
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
639
641
  showGrid?: boolean;
640
642
  legend?: ReactNode | {