semiotic 3.8.4 → 3.8.5

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 (140) hide show
  1. package/CLAUDE.md +6 -3
  2. package/README.md +44 -38
  3. package/ai/componentMetadata.cjs +1 -1
  4. package/ai/dist/mcp-server.js +4 -2
  5. package/ai/examples.md +167 -0
  6. package/ai/schema.json +1004 -1
  7. package/ai/surface-manifest.json +6 -4
  8. package/ai/system-prompt.md +1 -1
  9. package/dist/chunk-chartContainerDataAudit-74TLKIP6.module.min.js +2 -0
  10. package/dist/{chunk-chunk-LQBSXO7K.module.min.js → chunk-chunk-4AANPFOX.module.min.js} +1 -1
  11. package/dist/{chunk-chunk-N6VKKF3A.module.min.js → chunk-chunk-5I3UZV4Q.module.min.js} +1 -1
  12. package/dist/chunk-chunk-74CCPVXB.module.min.js +1 -0
  13. package/dist/{chunk-chunk-6TPGFL7M.module.min.js → chunk-chunk-BANTPINB.module.min.js} +1 -1
  14. package/dist/chunk-chunk-CKMD5NV3.module.min.js +2 -0
  15. package/dist/chunk-chunk-CO5KQMGH.module.min.js +1 -0
  16. package/dist/{chunk-chunk-BFHUYEOS.module.min.js → chunk-chunk-CWQ5YIHX.module.min.js} +1 -1
  17. package/dist/chunk-chunk-E6TXX6MI.module.min.js +1 -0
  18. package/dist/{chunk-chunk-JDXT6ORT.module.min.js → chunk-chunk-I36PJ4OC.module.min.js} +1 -1
  19. package/dist/chunk-chunk-K3DMEW22.module.min.js +1 -0
  20. package/dist/chunk-chunk-KT2VAZMZ.module.min.js +1 -0
  21. package/dist/{chunk-chunk-AQPQN2HH.module.min.js → chunk-chunk-L6EA5V3G.module.min.js} +1 -1
  22. package/dist/{chunk-chunk-FBGHXL72.module.min.js → chunk-chunk-LJLS6DY7.module.min.js} +1 -1
  23. package/dist/chunk-chunk-LJPCLYSC.module.min.js +2 -0
  24. package/dist/{chunk-chunk-7RYBCTK5.module.min.js → chunk-chunk-N5DDKCCF.module.min.js} +1 -1
  25. package/dist/chunk-chunk-NLO44TOS.module.min.js +2 -0
  26. package/dist/{chunk-chunk-F5V4UIE6.module.min.js → chunk-chunk-PZJ2SBLL.module.min.js} +1 -1
  27. package/dist/chunk-chunk-QUJ6TTLY.module.min.js +1 -0
  28. package/dist/chunk-chunk-RBIDBUT4.module.min.js +2 -0
  29. package/dist/chunk-chunk-RFLAG356.module.min.js +1 -0
  30. package/dist/{chunk-chunk-7KZJUTKP.module.min.js → chunk-chunk-RPU4IZAV.module.min.js} +1 -1
  31. package/dist/{chunk-chunk-PLIDPQNG.module.min.js → chunk-chunk-SKMBCFIL.module.min.js} +1 -1
  32. package/dist/{chunk-chunk-SR4ZXOWR.module.min.js → chunk-chunk-TAE7W424.module.min.js} +1 -1
  33. package/dist/{chunk-chunk-KQ546MKE.module.min.js → chunk-chunk-TMWIZL3K.module.min.js} +1 -1
  34. package/dist/chunk-chunk-TUBMTZMU.module.min.js +2 -0
  35. package/dist/chunk-chunk-UFFEXJQY.module.min.js +1 -0
  36. package/dist/chunk-chunk-XSCHTS4D.module.min.js +2 -0
  37. package/dist/{chunk-chunk-F7WFPD4O.module.min.js → chunk-chunk-XXWSHGPL.module.min.js} +1 -1
  38. package/dist/chunk-chunk-ZXIXAPRE.module.min.js +2 -0
  39. package/dist/components/ChartContainer.d.ts +10 -0
  40. package/dist/components/ai/chartCapabilities.d.ts +2 -1
  41. package/dist/components/ai/chartCapabilityTypes.d.ts +14 -0
  42. package/dist/components/chartContainerDataAudit.d.ts +10 -0
  43. package/dist/components/charts/geo/DistanceCartogram.d.ts +29 -3
  44. package/dist/components/charts/index.d.ts +1 -0
  45. package/dist/components/charts/network/ForceDirectedGraph.d.ts +36 -1
  46. package/dist/components/charts/physics/CrucibleChart.capability.d.ts +8 -0
  47. package/dist/components/charts/physics/CrucibleChart.d.ts +63 -0
  48. package/dist/components/charts/physics/crucibleBodyRenderers.d.ts +27 -0
  49. package/dist/components/charts/physics/crucibleChartProps.d.ts +90 -0
  50. package/dist/components/charts/physics/crucibleChrome.d.ts +47 -0
  51. package/dist/components/charts/physics/crucibleController.d.ts +59 -0
  52. package/dist/components/charts/physics/crucibleEffects.d.ts +30 -0
  53. package/dist/components/charts/physics/cruciblePhysics.d.ts +54 -0
  54. package/dist/components/charts/physics/crucibleProgram.d.ts +38 -0
  55. package/dist/components/charts/physics/crucibleTypes.d.ts +415 -0
  56. package/dist/components/charts/shared/chartSpecCore.d.ts +8 -0
  57. package/dist/components/charts/shared/crucibleWireSchema.d.ts +5 -0
  58. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  59. package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
  60. package/dist/components/data/auditData.d.ts +51 -0
  61. package/dist/components/data/dataAuditPresentation.d.ts +18 -0
  62. package/dist/components/data/dataAuditSources.d.ts +9 -0
  63. package/dist/components/data/numericContracts.d.ts +59 -0
  64. package/dist/components/data/numericFieldProfiler.d.ts +23 -0
  65. package/dist/components/recipes/netEnsembleLayout.d.ts +167 -0
  66. package/dist/components/recipes/netEnsembleOverlays.d.ts +20 -0
  67. package/dist/components/recipes/wordTrails.d.ts +156 -0
  68. package/dist/components/recipes/wordTrailsProgressiveReveal.d.ts +42 -0
  69. package/dist/components/semiotic-ai-core.d.ts +3 -0
  70. package/dist/components/semiotic-ai-data-audit.d.ts +4 -0
  71. package/dist/components/semiotic-ai.d.ts +7 -5
  72. package/dist/components/semiotic-physics.d.ts +1 -0
  73. package/dist/components/semiotic-recipes-core.d.ts +4 -0
  74. package/dist/components/semiotic-utils-core.d.ts +3 -0
  75. package/dist/components/semiotic.d.ts +1 -1
  76. package/dist/components/server/renderEvidence.d.ts +27 -0
  77. package/dist/components/server/serverChartConfigs.d.ts +1 -0
  78. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  79. package/dist/components/server/staticAnnotations.d.ts +12 -0
  80. package/dist/components/stream/GeoPipelineStore.d.ts +1 -0
  81. package/dist/components/stream/GeoSVGOverlay.d.ts +7 -0
  82. package/dist/components/stream/geoCartogram.d.ts +7 -0
  83. package/dist/components/stream/geoTypes.d.ts +17 -2
  84. package/dist/components/stream/networkFrameHandleTypes.d.ts +4 -0
  85. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +8 -0
  86. package/dist/components/useChartContainerDataAudit.d.ts +7 -0
  87. package/dist/geo.min.js +1 -1
  88. package/dist/geo.module.min.js +1 -1
  89. package/dist/network.min.js +1 -1
  90. package/dist/network.module.min.js +1 -1
  91. package/dist/ordinal.module.min.js +1 -1
  92. package/dist/physics.min.js +1 -1
  93. package/dist/physics.module.min.js +1 -1
  94. package/dist/realtime.min.js +1 -1
  95. package/dist/realtime.module.min.js +1 -1
  96. package/dist/semiotic-ai-core.d.ts +3 -0
  97. package/dist/semiotic-ai-core.min.js +1 -1
  98. package/dist/semiotic-ai-core.module.min.js +1 -1
  99. package/dist/semiotic-ai.d.ts +7 -5
  100. package/dist/semiotic-ai.min.js +1 -1
  101. package/dist/semiotic-ai.module.min.js +1 -1
  102. package/dist/semiotic-experimental.min.js +1 -1
  103. package/dist/semiotic-experimental.module.min.js +1 -1
  104. package/dist/semiotic-physics.d.ts +1 -0
  105. package/dist/semiotic-realtime-core.min.js +1 -1
  106. package/dist/semiotic-realtime-core.module.min.js +1 -1
  107. package/dist/semiotic-recipes-core.d.ts +4 -0
  108. package/dist/semiotic-recipes-core.min.js +1 -1
  109. package/dist/semiotic-recipes-core.module.min.js +1 -1
  110. package/dist/semiotic-recipes.min.js +1 -1
  111. package/dist/semiotic-recipes.module.min.js +1 -1
  112. package/dist/semiotic-server-edge.min.js +1 -1
  113. package/dist/semiotic-server-edge.module.min.js +1 -1
  114. package/dist/semiotic-server-node.min.js +1 -1
  115. package/dist/semiotic-server-node.module.min.js +1 -1
  116. package/dist/semiotic-utils-core.d.ts +3 -0
  117. package/dist/semiotic-utils-core.min.js +1 -1
  118. package/dist/semiotic-utils-core.module.min.js +1 -1
  119. package/dist/semiotic-utils.min.js +1 -1
  120. package/dist/semiotic-utils.module.min.js +1 -1
  121. package/dist/semiotic.d.ts +1 -1
  122. package/dist/semiotic.min.js +1 -1
  123. package/dist/semiotic.module.min.js +1 -1
  124. package/dist/server.min.js +1 -1
  125. package/dist/server.module.min.js +1 -1
  126. package/dist/xy.module.min.js +1 -1
  127. package/package.json +2 -2
  128. package/dist/chunk-chunk-3ILKBVVQ.module.min.js +0 -1
  129. package/dist/chunk-chunk-ASKSE5F5.module.min.js +0 -1
  130. package/dist/chunk-chunk-B3DRZPBK.module.min.js +0 -2
  131. package/dist/chunk-chunk-FP44FHFO.module.min.js +0 -2
  132. package/dist/chunk-chunk-HKXUAEPJ.module.min.js +0 -2
  133. package/dist/chunk-chunk-ICEXPNDC.module.min.js +0 -2
  134. package/dist/chunk-chunk-JMVEIZXP.module.min.js +0 -1
  135. package/dist/chunk-chunk-KHCOJMGK.module.min.js +0 -1
  136. package/dist/chunk-chunk-MFHF4J2Z.module.min.js +0 -1
  137. package/dist/chunk-chunk-NKZ75IM5.module.min.js +0 -2
  138. package/dist/chunk-chunk-QGZGZI4X.module.min.js +0 -1
  139. package/dist/chunk-chunk-RP7WTID5.module.min.js +0 -1
  140. package/dist/chunk-chunk-S7KLNUO6.module.min.js +0 -1
@@ -20,6 +20,9 @@ export { resolveStyleRules, matchesThreshold, ruleMatches, makeRuleValueResolver
20
20
  export type { StyleRule, StyleRuleStyle, StyleRuleThreshold, StyleRuleContext, StyleRulePredicate, } from "./charts/shared/styleRules";
21
21
  export { validateProps } from "./charts/shared/validateProps";
22
22
  export { diagnoseConfig } from "./charts/shared/diagnoseConfig";
23
+ export { auditData, formatDataAudit, profileNumericFields, toDataAuditNotifications, } from "./data/auditData";
24
+ export type { AuditDataOptions, CheckedNumericContract, DataAuditChartNotification, DataAuditDiagnosis, DataAuditNotificationOptions, DataAuditResult, NumericFieldProfile, ProfileNumericFieldsOptions, } from "./data/auditData";
25
+ export type { NumericAggregateContract, NumericContracts, NumericFieldContract, NumericFieldRole, NumericRequirement, } from "./data/numericContracts";
23
26
  export { auditAccessibility, formatAccessibilityAudit, accessibilityCaveats } from "./charts/shared/auditAccessibility";
24
27
  export { auditMobileVisualization, formatMobileVisualizationAudit, mobileVisualizationCaveats } from "./charts/shared/auditMobileVisualization";
25
28
  export { responsiveRuleMatches, resolveResponsiveRules } from "./charts/shared/responsiveRules";
@@ -72,7 +72,7 @@ export { intentManifestFromRecipe, summarizeIntentManifest } from "./ai/intentMa
72
72
  export type { IntentManifest, IntentManifestFromRecipeOptions } from "./ai/intentManifest";
73
73
  export { useNavigationSync } from "./ai/useNavigationSync";
74
74
  export type { UseNavigationSyncOptions, UseNavigationSyncResult } from "./ai/useNavigationSync";
75
- export type { ChartContainerProps, ChartContainerHandle, ChartContainerMobileOptions, ChartNotification, ChartNotificationLevel, } from "./ChartContainer";
75
+ export type { ChartContainerProps, ChartContainerHandle, ChartContainerDataAudit, ChartContainerDataAuditOptions, ChartContainerMobileOptions, ChartNotification, ChartNotificationLevel, } from "./ChartContainer";
76
76
  export type { MobileChartChip, MobileChartContainerProps, MobileChartDetailMode, } from "./MobileChartContainer";
77
77
  export type { MobileStandardBrushControls, MobileStandardControlKind, MobileStandardControlLegendItem, MobileStandardControlRequest, MobileStandardControlsMode, MobileStandardControlsProps, MobileStandardLegendControls, MobileStandardZoomControls, UseMobileRangeControlsOptions, UseMobileRangeControlsResult, } from "./MobileStandardControls";
78
78
  export type { MobileVisualizationContract } from "./charts/shared/auditMobileVisualization";
@@ -47,6 +47,26 @@ export interface RenderEvidence {
47
47
  ariaLabel: string;
48
48
  /** Stable warning codes (EMPTY_SCENE, NO_SCALES). */
49
49
  warnings: string[];
50
+ /**
51
+ * The resolved margin Semiotic actually used — after auto-reservation for a
52
+ * legend, a title, or any other chrome that grows a side beyond the caller's
53
+ * input. This is ground truth for reconstructing the plot rectangle by
54
+ * hand (e.g. a caller hand-drawing an SSR overlay); it is exactly what the
55
+ * emitted SVG's `data-area` group is translated by.
56
+ */
57
+ margin?: {
58
+ top: number;
59
+ right: number;
60
+ bottom: number;
61
+ left: number;
62
+ };
63
+ /** The plot rectangle after resolving `margin` against the outer `width`/`height`. */
64
+ plot?: {
65
+ x: number;
66
+ y: number;
67
+ width: number;
68
+ height: number;
69
+ };
50
70
  }
51
71
  /**
52
72
  * Internal mutable slot threaded through the frame renderers. Only
@@ -85,6 +105,13 @@ interface BuildEvidenceInput {
85
105
  edgeCount?: number;
86
106
  legendItems?: number;
87
107
  extraWarnings?: string[];
108
+ /** The resolved margin (after auto-reservation) the caller's frame used. */
109
+ margin?: {
110
+ top: number;
111
+ right: number;
112
+ bottom: number;
113
+ left: number;
114
+ };
88
115
  }
89
116
  /** Assemble evidence from a computed scene. Component name is stamped later
90
117
  * by `renderChartWithEvidence`, which knows the HOC-level name. */
@@ -52,6 +52,7 @@ export declare const CHART_CONFIGS: {
52
52
  CollisionSwarmChart: ChartConfig;
53
53
  ProcessFlowChart: ChartConfig;
54
54
  GauntletChart: ChartConfig;
55
+ CrucibleChart: ChartConfig;
55
56
  PhysicalFlowChart: ChartConfig;
56
57
  PhysicsCustomChart: ChartConfig;
57
58
  };
@@ -5,5 +5,14 @@ export declare const physicsPileChart: ChartConfig;
5
5
  export declare const collisionSwarmChart: ChartConfig;
6
6
  export declare const processFlowChart: ChartConfig;
7
7
  export declare const gauntletChart: ChartConfig;
8
+ /**
9
+ * Static CrucibleChart renders the same deterministic ledger used by the
10
+ * client HOC. A replay request settles at the terminal state for SSR (the
11
+ * client also hydrates from that reduced-motion snapshot); snapshot mode is
12
+ * the one deliberate way to request an authored intermediate instant.
13
+ * `paused`, `playbackRate`, and `rerunMS` govern wall-clock replay only and
14
+ * therefore cannot alter this static semantic state.
15
+ */
16
+ export declare const crucibleChart: ChartConfig;
8
17
  export declare const physicalFlowChart: ChartConfig;
9
18
  export declare const physicsCustomChart: ChartConfig;
@@ -7,6 +7,7 @@ import type { Datum, DatumValue } from "../charts/shared/datumTypes";
7
7
  */
8
8
  import * as React from "react";
9
9
  import type { SemioticTheme } from "../store/ThemeStore";
10
+ import type { AnnotationContext } from "../realtime/types";
10
11
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
11
12
  interface AnnotationScales {
12
13
  x?: AnnotationScale;
@@ -46,6 +47,17 @@ export interface StaticAnnotationConfig {
46
47
  yAccessor?: string;
47
48
  /** Ordinal projection — determines whether r maps to x or y */
48
49
  projection?: "vertical" | "horizontal" | "radial";
50
+ /**
51
+ * Custom SVG annotation renderer — same contract as the client
52
+ * `svgAnnotationRules` frame prop. When present, each annotation is
53
+ * offered to this rule first; returning `null`/`undefined` falls through
54
+ * to the built-in static type handlers. Without this, custom middle-
55
+ * marker / bulb overlays (and any other non-built-in annotation type)
56
+ * silently vanished from `renderChart` SVG.
57
+ */
58
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => React.ReactNode;
59
+ /** Chart data forwarded into the AnnotationContext for custom rules. */
60
+ annotationData?: Datum[];
49
61
  }
50
62
  /**
51
63
  * Render annotations as static SVG elements.
@@ -52,6 +52,7 @@ export declare class GeoPipelineStore implements UpdateResultStore {
52
52
  cy: number;
53
53
  maxCost: number;
54
54
  availableRadius: number;
55
+ layout?: "radial" | "strip";
55
56
  } | null;
56
57
  private areas;
57
58
  private pointData;
@@ -3,6 +3,7 @@ import type { OnObservationCallback } from "../store/ObservationStore";
3
3
  import { type OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
4
4
  import * as React from "react";
5
5
  import type { ReactNode } from "react";
6
+ import type { AnnotationContext } from "../realtime/types";
6
7
  import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
7
8
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
9
  interface GeoSVGOverlayProps {
@@ -45,6 +46,12 @@ interface GeoSVGOverlayProps {
45
46
  chartId?: string;
46
47
  chartType?: string;
47
48
  autoPlaceAnnotations?: AutoPlaceAnnotations;
49
+ /**
50
+ * Custom SVG annotation renderer. Same contract as XY/ordinal
51
+ * `svgAnnotationRules`. Runs after geographic `coordinates` are projected
52
+ * to pixel `x`/`y`, so rules can use the shared pixel-scale context.
53
+ */
54
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
48
55
  pointNodes?: {
49
56
  pointId?: string;
50
57
  x: number;
@@ -1,6 +1,11 @@
1
1
  /**
2
2
  * Distance-cartogram projection of geo point scene nodes.
3
3
  * Mutates point/line positions in place; returns layout metadata for overlays.
4
+ *
5
+ * Two encodings:
6
+ * - `radial` (default): pixel distance from center ∝ cost; bearing from geography
7
+ * - `strip`: 1D Langren-style cost axis — x ∝ cost, y collapsed to a baseline
8
+ * (sparkline-friendly; no map chrome)
4
9
  */
5
10
  import type { DistanceCartogramConfig, GeoSceneNode } from "./geoTypes";
6
11
  import type { StreamLayout } from "./types";
@@ -9,6 +14,8 @@ export type GeoCartogramLayout = {
9
14
  cy: number;
10
15
  maxCost: number;
11
16
  availableRadius: number;
17
+ /** Active layout encoding — overlays branch on this. */
18
+ layout: "radial" | "strip";
12
19
  };
13
20
  /**
14
21
  * Apply a distance cartogram transform to the scene.
@@ -3,7 +3,7 @@ import type { GeoProjection, GeoPath, GeoPermissibleObjects } from "d3-geo";
3
3
  import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
4
4
  import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, GlyphSceneNode, ThemeSemanticColors, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
5
5
  import type { AnimateProp } from "./pipelineTransitionUtils";
6
- import type { HoverAnnotationConfig, HoverData } from "../realtime/types";
6
+ import type { AnnotationContext, HoverAnnotationConfig, HoverData } from "../realtime/types";
7
7
  import type { GeoParticleStyle } from "./GeoParticlePool";
8
8
  import type { Datum } from "../charts/shared/datumTypes";
9
9
  import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
@@ -35,6 +35,12 @@ export interface DistanceCartogramConfig {
35
35
  costAccessor: string | ((d: Datum) => number);
36
36
  strength?: number;
37
37
  lineMode?: "straight" | "fractional";
38
+ /**
39
+ * Layout encoding for cost-from-center:
40
+ * - `"radial"` (default): polar cartogram — distance ∝ cost, bearing from geography
41
+ * - `"strip"`: 1D Langren-style number line — x ∝ cost, y collapsed (sparkline)
42
+ */
43
+ layout?: "radial" | "strip";
38
44
  }
39
45
  export interface GeoAreaSceneNode {
40
46
  type: "geoarea";
@@ -239,6 +245,14 @@ export interface StreamGeoFrameProps<T = Datum> {
239
245
  /** Observe activation of widget annotations without replacing widget behavior. */
240
246
  onAnnotationActivate?: OnAnnotationActivateCallback;
241
247
  autoPlaceAnnotations?: AutoPlaceAnnotations;
248
+ /**
249
+ * Custom SVG annotation renderer — same contract as XY/ordinal
250
+ * `svgAnnotationRules`. Called before the built-in geo annotation rules;
251
+ * return `null`/`undefined` to fall through. Geo pre-projects
252
+ * `coordinates: [lon, lat]` to pixel `x`/`y` before this runs so a single
253
+ * rule body works on canvas CSR and `renderChart` SSR.
254
+ */
255
+ svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
242
256
  decay?: DecayConfig;
243
257
  pulse?: PulseConfig;
244
258
  transition?: TransitionConfig;
@@ -305,12 +319,13 @@ export interface StreamGeoFrameHandle {
305
319
  clear(): void;
306
320
  getProjection(): GeoProjection | null;
307
321
  getGeoPath(): GeoPath<void, GeoPermissibleObjects> | null;
308
- /** Get cartogram layout info (center position, max cost, radius) */
322
+ /** Get cartogram layout info (center position, max cost, radius / strip length) */
309
323
  getCartogramLayout(): {
310
324
  cx: number;
311
325
  cy: number;
312
326
  maxCost: number;
313
327
  availableRadius: number;
328
+ layout?: "radial" | "strip";
314
329
  } | null;
315
330
  /** Get current zoom level (1 = default) */
316
331
  getZoom(): number;
@@ -4,7 +4,11 @@ import type { CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
4
4
  import type { NetworkLayoutResult } from "./networkCustomLayout";
5
5
  /** Imperative API exposed by `StreamNetworkFrame` refs. */
6
6
  export interface StreamNetworkFrameHandle {
7
+ /** Ingest one edge immediately and coalesce its expensive layout with other
8
+ * pushes at the next animation frame. Geometry getters commit first. */
7
9
  push(edge: EdgePush): void;
10
+ /** Ingest and lay out an explicit edge batch synchronously, absorbing any
11
+ * layout pending from prior single-edge pushes. */
8
12
  pushMany(edges: EdgePush[]): void;
9
13
  /** Remove a node by ID. Also removes connected edges. */
10
14
  removeNode(id: string): boolean;
@@ -1,3 +1,7 @@
1
+ import * as React from "react";
2
+ import type { Style } from "../types";
3
+ import type { FrameGraphicsProp, FrameMargin } from "../useFrame";
4
+ import type { PhysicsBodyState } from "./PhysicsKernel";
1
5
  import type { PhysicsSettledEvidence } from "./PhysicsEvidence";
2
6
  import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
3
7
  import { type PhysicsSettledScene, type PhysicsSettledSceneOptions } from "./PhysicsSettledScene";
@@ -7,8 +11,12 @@ export interface PhysicsSettledSVGOptions extends PhysicsSettledSceneOptions {
7
11
  title?: string;
8
12
  description?: string;
9
13
  background?: string;
14
+ backgroundGraphics?: FrameGraphicsProp;
10
15
  className?: string;
16
+ foregroundGraphics?: FrameGraphicsProp;
11
17
  idPrefix?: string;
18
+ margin?: Partial<FrameMargin>;
19
+ renderBodySVG?: (body: PhysicsBodyState, style: Style, index: number, idPrefix: string) => React.ReactNode | undefined;
12
20
  }
13
21
  export interface PhysicsSettledSVGRender {
14
22
  svg: string;
@@ -0,0 +1,7 @@
1
+ import type { ChartNotification } from "./ChartContainer";
2
+ import type { ChartConfig } from "./export/chartConfig";
3
+ import type { ChartContainerDataAudit } from "./chartContainerDataAudit";
4
+ type AuditableChartConfig = Pick<ChartConfig, "component" | "props">;
5
+ /** Load the opt-in numeric evaluator only when a container asks for it. */
6
+ export declare function useChartContainerDataAudit(chartConfig: AuditableChartConfig | undefined, dataAudit: ChartContainerDataAudit | undefined): ChartNotification[];
7
+ export {};