semiotic 3.7.5 → 3.8.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 (575) hide show
  1. package/CLAUDE.md +63 -18
  2. package/README.md +121 -27
  3. package/agent-skill/semiotic-charts/SKILL.md +146 -0
  4. package/ai/cli.js +133 -45
  5. package/ai/componentMetadata.cjs +6 -1
  6. package/ai/dist/mcp-server.js +1741 -163
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +201 -0
  10. package/ai/system-prompt.md +20 -4
  11. package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
  12. package/dist/components/AccessibleNavTree.d.ts +7 -1
  13. package/dist/components/CategoryColors.d.ts +1 -1
  14. package/dist/components/ChartContainer.d.ts +91 -0
  15. package/dist/components/ChartGrid.d.ts +11 -1
  16. package/dist/components/CircularBrush.d.ts +61 -0
  17. package/dist/components/ContextLayout.d.ts +5 -1
  18. package/dist/components/DirectManipulationControl.d.ts +63 -0
  19. package/dist/components/LinkedCharts.d.ts +3 -1
  20. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  21. package/dist/components/MobileChartContainer.d.ts +51 -0
  22. package/dist/components/MobileStandardControls.d.ts +68 -0
  23. package/dist/components/SmallMultipleChart.d.ts +84 -0
  24. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  25. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  26. package/dist/components/ai/IntentMark.d.ts +15 -0
  27. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  28. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  29. package/dist/components/ai/chartClinic.d.ts +91 -0
  30. package/dist/components/ai/chartClinicMetadata.generated.d.ts +15 -0
  31. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  32. package/dist/components/ai/chartRecipes.d.ts +278 -0
  33. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  34. package/dist/components/ai/describeChart.d.ts +7 -0
  35. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  36. package/dist/components/ai/generativeChart.d.ts +28 -3
  37. package/dist/components/ai/intentManifest.d.ts +62 -0
  38. package/dist/components/ai/navigationTree.d.ts +3 -0
  39. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  40. package/dist/components/ai/readerGrounding.d.ts +83 -0
  41. package/dist/components/ai/recipeCapability.d.ts +8 -0
  42. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  43. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  44. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  45. package/dist/components/ai/suggestCharts.d.ts +11 -1
  46. package/dist/components/ai/useNavigationSync.d.ts +17 -2
  47. package/dist/components/chartContainerMobile.d.ts +9 -0
  48. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  49. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  50. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  51. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  52. package/dist/components/charts/geo/ChoroplethMap.d.ts +19 -2
  53. package/dist/components/charts/geo/DistanceCartogram.d.ts +15 -3
  54. package/dist/components/charts/geo/FlowMap.d.ts +11 -7
  55. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +15 -3
  56. package/dist/components/charts/geo/index.d.ts +2 -0
  57. package/dist/components/charts/index.d.ts +35 -1
  58. package/dist/components/charts/network/ChordDiagram.d.ts +10 -2
  59. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  60. package/dist/components/charts/network/ForceDirectedGraph.d.ts +26 -5
  61. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  62. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  63. package/dist/components/charts/network/SankeyDiagram.d.ts +10 -2
  64. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  65. package/dist/components/charts/network/Treemap.d.ts +1 -1
  66. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  67. package/dist/components/charts/ordinal/BarChart.d.ts +22 -1
  68. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  69. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  70. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  71. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  72. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +12 -1
  73. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  74. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  75. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +12 -1
  77. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  78. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  79. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  80. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  81. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +54 -0
  83. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/EventDropChart.d.ts +60 -0
  85. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  86. package/dist/components/charts/physics/GaltonBoardChart.d.ts +74 -0
  87. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  88. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  89. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  90. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  91. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +99 -0
  92. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  93. package/dist/components/charts/physics/PhysicsPileChart.d.ts +60 -0
  94. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  95. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  96. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  97. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  98. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  99. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  100. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  101. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  102. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  103. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  104. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  105. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  106. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  107. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  108. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  109. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  110. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  111. package/dist/components/charts/physics/physicsChartShared.d.ts +57 -0
  112. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  113. package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -0
  114. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  115. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  116. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  117. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  118. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  119. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  120. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  121. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  122. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  123. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  124. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  125. package/dist/components/charts/shared/AnnotationLabel.d.ts +88 -0
  126. package/dist/components/charts/shared/annotationActivation.d.ts +35 -0
  127. package/dist/components/charts/shared/annotationLabelLayout.d.ts +5 -0
  128. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  129. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  130. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  131. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  132. package/dist/components/charts/shared/chartSelectionUtils.d.ts +4 -0
  133. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  134. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  135. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  136. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  137. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  138. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  139. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  140. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  141. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  142. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  143. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  144. package/dist/components/charts/shared/datumTypes.d.ts +2 -0
  145. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +6 -0
  146. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  147. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  148. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  149. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  150. package/dist/components/charts/shared/formatUtils.d.ts +3 -3
  151. package/dist/components/charts/shared/hatchFill.d.ts +87 -0
  152. package/dist/components/charts/shared/hooks.d.ts +34 -10
  153. package/dist/components/charts/shared/knownChartComponents.d.ts +9 -0
  154. package/dist/components/charts/shared/leastSquaresRegression.d.ts +16 -0
  155. package/dist/components/charts/shared/mergeShapeStyle.d.ts +3 -2
  156. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  157. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  158. package/dist/components/charts/shared/semanticInteractions.d.ts +42 -0
  159. package/dist/components/charts/shared/sparseArray.d.ts +1 -1
  160. package/dist/components/charts/shared/streamPropsHelpers.d.ts +17 -5
  161. package/dist/components/charts/shared/styleRules.d.ts +205 -0
  162. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  163. package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
  164. package/dist/components/charts/shared/types.d.ts +58 -7
  165. package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
  166. package/dist/components/charts/shared/useChartSetup.d.ts +11 -4
  167. package/dist/components/charts/shared/useCustomChartSetup.d.ts +17 -5
  168. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -2
  169. package/dist/components/charts/shared/useLikertAggregation.d.ts +4 -4
  170. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  171. package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
  172. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +25 -2
  173. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -2
  174. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  175. package/dist/components/charts/shared/useXYLineStyle.d.ts +10 -0
  176. package/dist/components/charts/shared/useXYPointStyle.d.ts +19 -1
  177. package/dist/components/charts/shared/validateChartData.d.ts +7 -5
  178. package/dist/components/charts/shared/validationMap.d.ts +7 -9
  179. package/dist/components/charts/shared/validationMap.generated.d.ts +6 -0
  180. package/dist/components/charts/shared/withChartWrapper.d.ts +4 -3
  181. package/dist/components/charts/value/targetPresentation.d.ts +22 -0
  182. package/dist/components/charts/value/types.d.ts +5 -6
  183. package/dist/components/charts/xy/AreaChart.d.ts +9 -1
  184. package/dist/components/charts/xy/BubbleChart.d.ts +10 -1
  185. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +7 -0
  186. package/dist/components/charts/xy/DifferenceChart.d.ts +1 -52
  187. package/dist/components/charts/xy/Heatmap.d.ts +2 -2
  188. package/dist/components/charts/xy/LineChart.d.ts +12 -1
  189. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  190. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  191. package/dist/components/charts/xy/QuadrantChart.d.ts +8 -1
  192. package/dist/components/charts/xy/Scatterplot.d.ts +11 -1
  193. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  194. package/dist/components/charts/xy/StackedAreaChart.d.ts +16 -4
  195. package/dist/components/charts/xy/differenceSegments.d.ts +49 -0
  196. package/dist/components/charts/xy/scatterplotMatrixInteractionTypes.d.ts +12 -0
  197. package/dist/components/controls/SentenceFilter.d.ts +97 -0
  198. package/dist/components/controls/controlAudit.d.ts +24 -0
  199. package/dist/components/controls/controlContract.d.ts +57 -0
  200. package/dist/components/data/fromFlintChart.d.ts +74 -0
  201. package/dist/components/data/fromVegaLite.d.ts +46 -9
  202. package/dist/components/data/portability/index.d.ts +6 -3
  203. package/dist/components/data/portability/result.d.ts +52 -0
  204. package/dist/components/data/portability/spec.d.ts +31 -0
  205. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  206. package/dist/components/export/chartConfig.d.ts +11 -0
  207. package/dist/components/realtime/types.d.ts +11 -0
  208. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  209. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  210. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  211. package/dist/components/recipes/cyclical.d.ts +39 -0
  212. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  213. package/dist/components/recipes/forceLayout.d.ts +48 -0
  214. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  215. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  216. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  217. package/dist/components/recipes/gofishIR.d.ts +178 -132
  218. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  219. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  220. package/dist/components/recipes/intervals.d.ts +80 -0
  221. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  222. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  223. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  224. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  225. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  226. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  227. package/dist/components/recipes/physics.d.ts +122 -0
  228. package/dist/components/recipes/physicsReference.d.ts +102 -0
  229. package/dist/components/recipes/processAggregates.d.ts +32 -0
  230. package/dist/components/recipes/processChrome.d.ts +67 -0
  231. package/dist/components/recipes/processJourney.d.ts +54 -0
  232. package/dist/components/recipes/processPhysics.d.ts +300 -0
  233. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  234. package/dist/components/recipes/radialCoords.d.ts +69 -0
  235. package/dist/components/recipes/random.d.ts +2 -0
  236. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  237. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  238. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  239. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  240. package/dist/components/recipes/runs.d.ts +59 -0
  241. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  242. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  243. package/dist/components/recipes/unitize.d.ts +108 -0
  244. package/dist/components/recipes/vector.d.ts +28 -0
  245. package/dist/components/recipes/waffle.d.ts +43 -0
  246. package/dist/components/rough/createRoughRenderMode.d.ts +46 -0
  247. package/dist/components/semiotic-ai-core.d.ts +47 -0
  248. package/dist/components/semiotic-ai.d.ts +53 -9
  249. package/dist/components/semiotic-controls.d.ts +20 -0
  250. package/dist/components/semiotic-experimental.d.ts +38 -9
  251. package/dist/components/semiotic-geo.d.ts +15 -0
  252. package/dist/components/semiotic-network.d.ts +15 -0
  253. package/dist/components/semiotic-ordinal.d.ts +14 -0
  254. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  255. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  256. package/dist/components/semiotic-physics.d.ts +60 -0
  257. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  258. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  259. package/dist/components/semiotic-realtime.d.ts +4 -30
  260. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  261. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  262. package/dist/components/semiotic-recipes.d.ts +4 -43
  263. package/dist/components/semiotic-rough.d.ts +4 -0
  264. package/dist/components/semiotic-server-edge.d.ts +8 -0
  265. package/dist/components/semiotic-server-node.d.ts +5 -0
  266. package/dist/components/semiotic-server.d.ts +2 -2
  267. package/dist/components/semiotic-themes-core.d.ts +53 -0
  268. package/dist/components/semiotic-themes-react.d.ts +4 -0
  269. package/dist/components/semiotic-themes.d.ts +6 -76
  270. package/dist/components/semiotic-utils-core.d.ts +50 -0
  271. package/dist/components/semiotic-utils-react.d.ts +5 -0
  272. package/dist/components/semiotic-utils.d.ts +3 -39
  273. package/dist/components/semiotic-xy.d.ts +12 -0
  274. package/dist/components/semiotic.d.ts +44 -8
  275. package/dist/components/server/animatedGif.d.ts +36 -0
  276. package/dist/components/server/optionalImageTypes.d.ts +37 -0
  277. package/dist/components/server/renderEvidence.d.ts +1 -1
  278. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  279. package/dist/components/server/serverChartConfigShared.d.ts +21 -0
  280. package/dist/components/server/serverChartConfigs.d.ts +22 -12
  281. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  282. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  283. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  284. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  285. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  286. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  287. package/dist/components/server/staticAnnotations.d.ts +6 -3
  288. package/dist/components/server/staticGeo.d.ts +4 -0
  289. package/dist/components/server/staticLegend.d.ts +2 -2
  290. package/dist/components/server/staticNetwork.d.ts +8 -0
  291. package/dist/components/server/staticOrdinal.d.ts +11 -0
  292. package/dist/components/server/staticPhysics.d.ts +3 -0
  293. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  294. package/dist/components/server/staticXY.d.ts +4 -0
  295. package/dist/components/store/ObservationStore.d.ts +23 -2
  296. package/dist/components/store/themeSerialization.d.ts +32 -0
  297. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  298. package/dist/components/stream/AccessibleDataTable.d.ts +7 -23
  299. package/dist/components/stream/AriaLiveTooltip.d.ts +9 -0
  300. package/dist/components/stream/CanvasHitTester.d.ts +4 -4
  301. package/dist/components/stream/DataSourceAdapter.d.ts +1 -1
  302. package/dist/components/stream/FocusRing.d.ts +4 -2
  303. package/dist/components/stream/FrameRuntime.d.ts +57 -0
  304. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  305. package/dist/components/stream/GeoParticlePool.d.ts +1 -1
  306. package/dist/components/stream/GeoPipelineStore.d.ts +62 -3
  307. package/dist/components/stream/GeoSVGOverlay.d.ts +64 -0
  308. package/dist/components/stream/NetworkCanvasHitTester.d.ts +2 -1
  309. package/dist/components/stream/NetworkPipelineStore.d.ts +44 -36
  310. package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
  311. package/dist/components/stream/NetworkSVGOverlay.d.ts +10 -1
  312. package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
  313. package/dist/components/stream/OrdinalPipelineStore.d.ts +55 -11
  314. package/dist/components/stream/OrdinalSVGOverlay.d.ts +9 -1
  315. package/dist/components/stream/OrdinalStyleResolver.d.ts +12 -0
  316. package/dist/components/stream/ParticlePool.d.ts +1 -1
  317. package/dist/components/stream/PipelineStore.d.ts +81 -174
  318. package/dist/components/stream/SVGOverlay.d.ts +6 -0
  319. package/dist/components/stream/SceneGraph.d.ts +12 -4
  320. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  321. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  322. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  323. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  324. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  325. package/dist/components/stream/accessorUtils.d.ts +25 -12
  326. package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
  327. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  328. package/dist/components/stream/canvasBackground.d.ts +24 -0
  329. package/dist/components/stream/canvasSetup.d.ts +4 -1
  330. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  331. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  332. package/dist/components/stream/frameGraphics.d.ts +4 -0
  333. package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
  334. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  335. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  336. package/dist/components/stream/geoCartogram.d.ts +17 -0
  337. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  338. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  339. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  340. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  341. package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
  342. package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
  343. package/dist/components/stream/geoTypes.d.ts +97 -15
  344. package/dist/components/stream/glyphDef.d.ts +98 -0
  345. package/dist/components/stream/hitTarget.d.ts +170 -0
  346. package/dist/components/stream/hitTestUtils.d.ts +2 -2
  347. package/dist/components/stream/hoverUtils.d.ts +7 -2
  348. package/dist/components/stream/keyboardNav.d.ts +4 -1
  349. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  350. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +58 -0
  351. package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
  352. package/dist/components/stream/networkBezier.d.ts +10 -0
  353. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  354. package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
  355. package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
  356. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  357. package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
  358. package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
  359. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  360. package/dist/components/stream/networkFrameObservations.d.ts +15 -0
  361. package/dist/components/stream/networkFramePaint.d.ts +52 -0
  362. package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
  363. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  364. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  365. package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
  366. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  367. package/dist/components/stream/networkTypes.d.ts +103 -51
  368. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  370. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  371. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  372. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +31 -0
  373. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  374. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  375. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  376. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
  377. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  378. package/dist/components/stream/ordinalTypes.d.ts +68 -9
  379. package/dist/components/stream/paintNeeds.d.ts +31 -0
  380. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  381. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  382. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  383. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  384. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  385. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  386. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  387. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  388. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  389. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  390. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  391. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  392. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  393. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  394. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +86 -0
  395. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  396. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +78 -0
  397. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  398. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  399. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  400. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  401. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  402. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  403. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  404. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  405. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  406. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  407. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +317 -0
  408. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  409. package/dist/components/stream/physics/physicsFrameObservations.d.ts +19 -0
  410. package/dist/components/stream/physics/physicsFrameSetup.d.ts +4 -0
  411. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  412. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  413. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  414. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +27 -0
  415. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  416. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  417. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +18 -0
  418. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  419. package/dist/components/stream/pipelineConfig.d.ts +179 -0
  420. package/dist/components/stream/pipelineDecay.d.ts +21 -3
  421. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  422. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  423. package/dist/components/stream/pipelinePulse.d.ts +17 -3
  424. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  425. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  426. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +33 -0
  427. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  428. package/dist/components/stream/pipelineTransitions.d.ts +3 -1
  429. package/dist/components/stream/pipelineUpdateContract.d.ts +69 -0
  430. package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
  431. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  432. package/dist/components/stream/renderBackend.d.ts +27 -0
  433. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +15 -1
  434. package/dist/components/stream/renderers/geoCanvasRenderer.d.ts +3 -2
  435. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  436. package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
  437. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  438. package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
  439. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +45 -0
  440. package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
  441. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  442. package/dist/components/stream/streamThemeTypes.d.ts +14 -0
  443. package/dist/components/stream/svgOverlayUtils.d.ts +10 -0
  444. package/dist/components/stream/test-utils/frameScheduler.d.ts +12 -0
  445. package/dist/components/stream/test-utils/revisionConsumption.d.ts +13 -0
  446. package/dist/components/stream/titleLayout.d.ts +31 -0
  447. package/dist/components/stream/types.d.ts +165 -72
  448. package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
  449. package/dist/components/stream/useFrame.d.ts +44 -2
  450. package/dist/components/stream/useHydration.d.ts +6 -0
  451. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  452. package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
  453. package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -0
  454. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  455. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  456. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  457. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  458. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  459. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  460. package/dist/components/stream/xyFrameAxisTypes.d.ts +50 -0
  461. package/dist/components/stream/xySceneBuilders/types.d.ts +10 -9
  462. package/dist/controls.min.js +2 -0
  463. package/dist/controls.module.min.js +2 -0
  464. package/dist/forceLayoutWorker.js +1 -0
  465. package/dist/geo.min.js +1 -1
  466. package/dist/geo.module.min.js +1 -1
  467. package/dist/network.min.js +1 -1
  468. package/dist/network.module.min.js +1 -1
  469. package/dist/ordinal.min.js +1 -1
  470. package/dist/ordinal.module.min.js +1 -1
  471. package/dist/physics-matter.min.js +1 -0
  472. package/dist/physics-matter.module.min.js +1 -0
  473. package/dist/physics-rapier.min.js +1 -0
  474. package/dist/physics-rapier.module.min.js +1 -0
  475. package/dist/physics.min.js +2 -0
  476. package/dist/physics.module.min.js +2 -0
  477. package/dist/physicsWorker.js +1 -0
  478. package/dist/realtime.min.js +1 -1
  479. package/dist/realtime.module.min.js +1 -1
  480. package/dist/rough.min.js +1 -0
  481. package/dist/rough.module.min.js +1 -0
  482. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  483. package/dist/semiotic-ai-core.d.ts +47 -0
  484. package/dist/semiotic-ai-core.min.js +1 -0
  485. package/dist/semiotic-ai-core.module.min.js +1 -0
  486. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  487. package/dist/semiotic-ai.d.ts +53 -9
  488. package/dist/semiotic-ai.min.js +1 -1
  489. package/dist/semiotic-ai.module.min.js +1 -1
  490. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  491. package/dist/semiotic-controls.d.ts +20 -0
  492. package/dist/semiotic-data.min.js +1 -1
  493. package/dist/semiotic-data.module.min.js +1 -1
  494. package/dist/semiotic-experimental.d.ts +38 -9
  495. package/dist/semiotic-experimental.min.js +1 -1
  496. package/dist/semiotic-experimental.module.min.js +1 -1
  497. package/dist/semiotic-geo.d.ts +15 -0
  498. package/dist/semiotic-network.d.ts +15 -0
  499. package/dist/semiotic-ordinal.d.ts +14 -0
  500. package/dist/semiotic-physics-matter.d.ts +10 -0
  501. package/dist/semiotic-physics-rapier.d.ts +9 -0
  502. package/dist/semiotic-physics.d.ts +60 -0
  503. package/dist/semiotic-realtime-core.d.ts +34 -0
  504. package/dist/semiotic-realtime-core.min.js +1 -0
  505. package/dist/semiotic-realtime-core.module.min.js +1 -0
  506. package/dist/semiotic-realtime-react.d.ts +10 -0
  507. package/dist/semiotic-realtime-react.min.js +2 -0
  508. package/dist/semiotic-realtime-react.module.min.js +2 -0
  509. package/dist/semiotic-realtime.d.ts +4 -30
  510. package/dist/semiotic-recipes-core.d.ts +92 -0
  511. package/dist/semiotic-recipes-core.min.js +1 -0
  512. package/dist/semiotic-recipes-core.module.min.js +1 -0
  513. package/dist/semiotic-recipes-react.d.ts +7 -0
  514. package/dist/semiotic-recipes-react.min.js +2 -0
  515. package/dist/semiotic-recipes-react.module.min.js +2 -0
  516. package/dist/semiotic-recipes.d.ts +4 -43
  517. package/dist/semiotic-recipes.min.js +1 -1
  518. package/dist/semiotic-recipes.module.min.js +1 -1
  519. package/dist/semiotic-rough.d.ts +4 -0
  520. package/dist/semiotic-server-edge.d.ts +8 -0
  521. package/dist/semiotic-server-edge.min.js +1 -0
  522. package/dist/semiotic-server-edge.module.min.js +1 -0
  523. package/dist/semiotic-server-node.d.ts +5 -0
  524. package/dist/semiotic-server-node.min.js +1 -0
  525. package/dist/semiotic-server-node.module.min.js +1 -0
  526. package/dist/semiotic-server.d.ts +2 -2
  527. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  528. package/dist/semiotic-themes-core.d.ts +53 -0
  529. package/dist/semiotic-themes-core.min.js +1 -0
  530. package/dist/semiotic-themes-core.module.min.js +1 -0
  531. package/dist/semiotic-themes-react.d.ts +4 -0
  532. package/dist/semiotic-themes-react.min.js +2 -0
  533. package/dist/semiotic-themes-react.module.min.js +2 -0
  534. package/dist/semiotic-themes.d.ts +6 -76
  535. package/dist/semiotic-themes.min.js +1 -2
  536. package/dist/semiotic-themes.module.min.js +1 -2
  537. package/dist/semiotic-utils-core.d.ts +50 -0
  538. package/dist/semiotic-utils-core.min.js +1 -0
  539. package/dist/semiotic-utils-core.module.min.js +1 -0
  540. package/dist/semiotic-utils-react.d.ts +5 -0
  541. package/dist/semiotic-utils-react.min.js +2 -0
  542. package/dist/semiotic-utils-react.module.min.js +2 -0
  543. package/dist/semiotic-utils.d.ts +3 -39
  544. package/dist/semiotic-utils.min.js +1 -2
  545. package/dist/semiotic-utils.module.min.js +1 -2
  546. package/dist/semiotic-value.min.js +1 -1
  547. package/dist/semiotic-value.module.min.js +1 -1
  548. package/dist/semiotic-xy.d.ts +12 -0
  549. package/dist/semiotic.d.ts +44 -8
  550. package/dist/semiotic.min.js +1 -1
  551. package/dist/semiotic.module.min.js +1 -1
  552. package/dist/server.min.js +1 -1
  553. package/dist/server.module.min.js +1 -1
  554. package/dist/test-utils/capturedFrameProps.d.ts +67 -0
  555. package/dist/test-utils/frameMock.d.ts +12 -9
  556. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  557. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  558. package/dist/xy.min.js +1 -1
  559. package/dist/xy.module.min.js +1 -1
  560. package/package.json +259 -88
  561. package/spec/README.md +152 -0
  562. package/spec/bindings/README.md +35 -0
  563. package/spec/bindings/vega-lite.mjs +112 -0
  564. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  565. package/spec/v0.1/audience-profile.schema.json +67 -0
  566. package/spec/v0.1/chart-capability.schema.json +186 -0
  567. package/dist/components/recipes/gofish.d.ts +0 -207
  568. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  569. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  570. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  571. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  572. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  573. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  574. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  575. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -1,12 +1,19 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { GeoProjection, GeoPath, GeoPermissibleObjects } from "d3-geo";
3
3
  import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
4
- import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, ThemeSemanticColors } from "./types";
4
+ import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, GlyphSceneNode, ThemeSemanticColors, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
5
5
  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
9
  import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
10
+ import type { MarginType } from "../types/marginType";
11
+ import type { GeoCustomLayout } from "./geoCustomLayout";
12
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
13
+ import type { CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
14
+ import type { OnObservationCallback } from "../store/ObservationStore";
15
+ import type { SemanticClickBehavior, SemanticHoverBehavior } from "../charts/shared/semanticInteractions";
16
+ import type { OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
10
17
  export type ProjectionProp = GeoProjection | ProjectionName | ProjectionConfig;
11
18
  export type ProjectionName = "mercator" | "equalEarth" | "albersUsa" | "orthographic" | "naturalEarth" | "equirectangular";
12
19
  export interface ProjectionConfig {
@@ -41,6 +48,8 @@ export interface GeoAreaSceneNode {
41
48
  screenArea: number;
42
49
  style: Style;
43
50
  datum: SceneDatum;
51
+ accessibleDatum?: SceneAccessibilityMetadata["accessibleDatum"];
52
+ accessibility?: SceneAccessibilityMetadata["accessibility"];
44
53
  group?: string;
45
54
  interactive?: boolean;
46
55
  /** Lazily-cached Path2D parsed from pathData (avoids re-parsing on every hit test) */
@@ -54,33 +63,42 @@ export interface GeoLineSceneNode {
54
63
  path: [number, number][];
55
64
  style: Style;
56
65
  datum: SceneDatum;
66
+ accessibleDatum?: SceneAccessibilityMetadata["accessibleDatum"];
67
+ accessibility?: SceneAccessibilityMetadata["accessibility"];
57
68
  group?: string;
58
69
  }
59
- /** Union of all scene node types that GeoFrame produces */
60
- export type GeoSceneNode = GeoAreaSceneNode | PointSceneNode | GeoLineSceneNode;
70
+ /** Union of all scene node types that GeoFrame produces. `GlyphSceneNode`
71
+ * joins for custom geo layouts projected pictograms standing on the map. */
72
+ export type GeoSceneNode = GeoAreaSceneNode | PointSceneNode | GlyphSceneNode | GeoLineSceneNode;
61
73
  export interface GeoScales {
62
74
  projection: GeoProjection;
63
- geoPath: GeoPath<any, GeoPermissibleObjects>;
75
+ geoPath: GeoPath<void, GeoPermissibleObjects>;
64
76
  projectedPoint: (lon: number, lat: number) => [number, number] | null;
65
77
  invertedPoint: (px: number, py: number) => [number, number] | null;
66
78
  }
67
79
  export interface GeoPipelineConfig {
68
80
  projection: ProjectionProp;
69
81
  projectionExtent?: [[number, number], [number, number]];
70
- /** Padding fraction for auto-fit projection. 0.1 = 10% inset from edges. @default 0 */
71
- fitPadding?: number;
82
+ /**
83
+ * Projection-fit padding as a finite fraction of the plot, not pixels.
84
+ * Valid values are in `[0, 0.5)`; `0.1` insets automatic fitting 10% from
85
+ * each edge. `null` and `undefined` use `0`; other values throw `RangeError`
86
+ * at the config boundary. Ignored when `projectionExtent` is supplied.
87
+ * @default 0
88
+ */
89
+ fitPadding?: number | null;
72
90
  xAccessor?: string | ((d: Datum) => number);
73
91
  yAccessor?: string | ((d: Datum) => number);
74
92
  lineDataAccessor?: string | ((d: Datum) => Datum[]);
75
93
  lineType?: "geo" | "line";
76
94
  /** Flow rendering style: "basic" (straight/great-circle), "offset" (bidirectional offset), "arc" (curved arcs) @default "basic" */
77
95
  flowStyle?: "basic" | "offset" | "arc";
78
- areaStyle?: Style | ((d: Datum) => Style);
96
+ areaStyle?: Style | ((d: GeoJSON.Feature) => Style);
79
97
  pointStyle?: (d: Datum) => Style & {
80
98
  r?: number;
81
99
  };
82
100
  lineStyle?: Style | ((d: Datum, group?: string) => Style);
83
- colorScheme?: string | string[];
101
+ colorScheme?: string | string[] | Record<string, string>;
84
102
  /** Theme-resolved semantic role colors — default fallback before hardcoded hex. See `ThemeSemanticColors` in ./types. */
85
103
  themeSemantic?: ThemeSemanticColors;
86
104
  /** Theme sequential scheme name — fallback for ChoroplethMap when colorScheme is not set. */
@@ -89,6 +107,10 @@ export interface GeoPipelineConfig {
89
107
  themeDiverging?: string;
90
108
  graticule?: boolean | GraticuleConfig;
91
109
  projectionTransform?: DistanceCartogramConfig;
110
+ /** Maximum retained points and lines after the store enters streaming mode. @default 500 */
111
+ windowSize?: number;
112
+ /** Logical clock used for Geo pulse and transition work. */
113
+ clock?: import("./FrameRuntime").FrameClock;
92
114
  decay?: DecayConfig;
93
115
  pulse?: PulseConfig;
94
116
  transition?: TransitionConfig;
@@ -99,15 +121,37 @@ export interface GeoPipelineConfig {
99
121
  pointIdAccessor?: string | ((d: Datum) => string);
100
122
  /** ID accessor on line data — required for `removeLine` by id. */
101
123
  lineIdAccessor?: string | ((d: Datum) => string);
124
+ customLayout?: GeoCustomLayout;
125
+ layoutConfig?: object;
126
+ layoutMargin?: MarginType;
127
+ layoutSelection?: CustomLayoutSelection | null;
128
+ /** Receives structured information if `customLayout` throws. */
129
+ onLayoutError?: (diagnostic: CustomLayoutFailureDiagnostic) => void;
130
+ themeCategorical?: string[];
102
131
  }
103
132
  export interface StreamGeoFrameProps<T = Datum> {
104
133
  projection: ProjectionProp;
105
134
  projectionExtent?: [[number, number], [number, number]];
106
- /** Padding fraction for auto-fit projection. 0.1 = 10% inset from edges. @default 0 */
107
- fitPadding?: number;
135
+ /**
136
+ * Projection-fit padding as a finite fraction of the plot, not pixels.
137
+ * Valid values are in `[0, 0.5)`; `0.1` insets automatic fitting 10% from
138
+ * each edge. `null` and `undefined` use `0`; other values throw `RangeError`
139
+ * at the config boundary. Ignored when `projectionExtent` is supplied.
140
+ * @default 0
141
+ */
142
+ fitPadding?: number | null;
108
143
  areas?: GeoJSON.Feature[];
109
144
  points?: T[];
110
145
  lines?: T[];
146
+ /** Replace built-in area/line/point scene construction with a custom layout. */
147
+ customLayout?: GeoCustomLayout;
148
+ /** User configuration threaded to `GeoLayoutContext.config`. */
149
+ layoutConfig?: object;
150
+ /** Shared-selection projection supplied by `GeoCustomChart`. */
151
+ layoutSelection?: CustomLayoutSelection | null;
152
+ /** Receives structured information if `customLayout` throws. The prior
153
+ * successful scene remains visible when one is available. */
154
+ onLayoutError?: (diagnostic: CustomLayoutFailureDiagnostic) => void;
111
155
  xAccessor?: string | ((d: T) => number);
112
156
  yAccessor?: string | ((d: T) => number);
113
157
  lineDataAccessor?: string | ((d: T) => Datum[]);
@@ -155,12 +199,16 @@ export interface StreamGeoFrameProps<T = Datum> {
155
199
  className?: string;
156
200
  background?: string;
157
201
  runtimeMode?: "bounded" | "streaming";
158
- areaStyle?: Style | ((d: Datum) => Style);
202
+ /** Maximum retained points and lines after imperative streaming begins. @default 500 */
203
+ windowSize?: number;
204
+ /** Optional scene paint backend. Exact projected geometry remains interactive. */
205
+ renderMode?: SceneRenderMode<GeoSceneNode>;
206
+ areaStyle?: Style | ((d: GeoJSON.Feature) => Style);
159
207
  pointStyle?: (d: Datum) => Style & {
160
208
  r?: number;
161
209
  };
162
210
  lineStyle?: Style | ((d: Datum, group?: string) => Style);
163
- colorScheme?: string | string[];
211
+ colorScheme?: string | string[] | Record<string, string>;
164
212
  /**
165
213
  * Categorical color field. For ChoroplethMap reads from area `properties`
166
214
  * (or top-level fallback); for ProportionalSymbolMap reads from each point.
@@ -173,9 +221,23 @@ export interface StreamGeoFrameProps<T = Datum> {
173
221
  enableHover?: boolean;
174
222
  hoverAnnotation?: boolean | HoverAnnotationConfig;
175
223
  tooltipContent?: (d: HoverData) => ReactNode;
176
- customClickBehavior?: (d: HoverData | null) => void;
177
- customHoverBehavior?: (d: HoverData | null) => void;
224
+ /**
225
+ * Allow chart-local tooltips to extend beyond the frame bounds.
226
+ * Useful when a non-portal tooltip should overlap adjacent chart chrome.
227
+ * @default false
228
+ */
229
+ allowTooltipOverflow?: boolean;
230
+ customClickBehavior?: SemanticClickBehavior<HoverData>;
231
+ customHoverBehavior?: SemanticHoverBehavior<HoverData>;
232
+ /** Structured interaction observations, including semantic focus/activate. */
233
+ onObservation?: OnObservationCallback;
234
+ /** @internal HOC observation callback forwarded only to annotation widgets. */
235
+ annotationObservationCallback?: OnObservationCallback;
236
+ /** Chart instance identifier included in observation events. */
237
+ chartId?: string;
178
238
  annotations?: Datum[];
239
+ /** Observe activation of widget annotations without replacing widget behavior. */
240
+ onAnnotationActivate?: OnAnnotationActivateCallback;
179
241
  autoPlaceAnnotations?: AutoPlaceAnnotations;
180
242
  decay?: DecayConfig;
181
243
  pulse?: PulseConfig;
@@ -185,6 +247,18 @@ export interface StreamGeoFrameProps<T = Datum> {
185
247
  * Set `{ intro: false }` to disable the intro animation. */
186
248
  animate?: AnimateProp;
187
249
  staleness?: StalenessConfig;
250
+ /** Optional rAF seam for deterministic host scheduling. */
251
+ frameScheduler?: import("./useFrame").FrameScheduler;
252
+ /** Monotonic wall-clock seam for deterministic replay, tests, or evidence capture. */
253
+ clock?: import("./FrameRuntime").FrameClock;
254
+ /** Injectable random source for frame-local stochastic work. */
255
+ random?: import("./FrameRuntime").FrameRandom;
256
+ /** Serializable deterministic random seed. Ignored when `random` is supplied. */
257
+ seed?: number;
258
+ /** Freeze logical animation time and cancel queued work while paused. */
259
+ paused?: boolean;
260
+ /** Freeze logical animation time while the page is hidden. Defaults to true for Geo frames. */
261
+ suspendWhenHidden?: boolean;
188
262
  backgroundGraphics?: ReactNode;
189
263
  foregroundGraphics?: ReactNode;
190
264
  title?: string | ReactNode;
@@ -230,7 +304,7 @@ export interface StreamGeoFrameHandle {
230
304
  getLines(): Datum[];
231
305
  clear(): void;
232
306
  getProjection(): GeoProjection | null;
233
- getGeoPath(): GeoPath<any, GeoPermissibleObjects> | null;
307
+ getGeoPath(): GeoPath<void, GeoPermissibleObjects> | null;
234
308
  /** Get cartogram layout info (center position, max cost, radius) */
235
309
  getCartogramLayout(): {
236
310
  cx: number;
@@ -244,4 +318,12 @@ export interface StreamGeoFrameHandle {
244
318
  resetZoom(): void;
245
319
  /** Get current data points */
246
320
  getData(): Datum[];
321
+ /** The most recent custom layout result — host readback so pages that need
322
+ * the computed placement don't re-run the layout. Null before the first
323
+ * layout or when no custom layout is configured. A failed retry retains the
324
+ * prior good result; inspect `getLayoutFailure()` to distinguish recovery. */
325
+ getCustomLayout(): import("./geoCustomLayout").GeoLayoutResult | null;
326
+ /** The most recent custom-layout failure, or null after a successful retry,
327
+ * clear, or explicit removal of `customLayout`. */
328
+ getLayoutFailure(): CustomLayoutFailureDiagnostic | null;
247
329
  }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Glyph definitions — the composite-pictogram sibling of `symbolPath.ts`.
3
+ *
4
+ * A `symbol` scene node is one path; a `glyph` scene node is a small
5
+ * multi-part vector pictogram (an ISOTYPE sign: a server cabinet with accent
6
+ * vents, a factory with windows) defined once in definition space and stamped
7
+ * per datum with per-node color, accent, size, and partial fill. The same
8
+ * `GlyphDef` renders identically on canvas (`drawGlyphParts`), in SVG/SSR
9
+ * (`SceneToSVG`), and in any React chrome the host draws, because everything
10
+ * reads these helpers.
11
+ *
12
+ * Paint roles, not colors: parts declare `fill: "color" | "accent"` (or a
13
+ * literal CSS color) and the node supplies the actual paints — one definition
14
+ * serves every category/status recoloring, exactly how classic pictogram
15
+ * plates reused one cut in many inks.
16
+ */
17
+ /** One drawable part of a glyph, in definition coordinates. */
18
+ export interface GlyphPart {
19
+ /** SVG path data in definition (viewBox) coordinates. */
20
+ d: string;
21
+ /**
22
+ * Fill paint: `"color"` (the node's primary paint), `"accent"` (the node's
23
+ * accent paint), `"none"`, or a literal CSS color. @default "color"
24
+ */
25
+ fill?: "color" | "accent" | "none" | (string & {});
26
+ /** Stroke paint, same tokens as `fill`. @default "none" */
27
+ stroke?: "color" | "accent" | "none" | (string & {});
28
+ /** Stroke width in definition units — scales with the glyph. */
29
+ strokeWidth?: number;
30
+ /** Part opacity, multiplied into the node's opacity. */
31
+ opacity?: number;
32
+ strokeLinecap?: "butt" | "round" | "square";
33
+ strokeLinejoin?: "miter" | "round" | "bevel";
34
+ }
35
+ /** A reusable multi-part pictogram definition. */
36
+ export interface GlyphDef {
37
+ /** Definition-space box `[width, height]` the parts are drawn in. @default [40, 40] */
38
+ viewBox?: [number, number];
39
+ /**
40
+ * Which point of the viewBox lands on the node's `(x, y)`, as fractions.
41
+ * `[0.5, 0.5]` centers the glyph (the default); `[0.5, 1]` anchors its feet
42
+ * — the "standing on a baseline/terrain" pictogram convention.
43
+ */
44
+ anchor?: [number, number];
45
+ parts: GlyphPart[];
46
+ }
47
+ export declare const DEFAULT_GLYPH_VIEWBOX: [number, number];
48
+ export declare const DEFAULT_GLYPH_ANCHOR: [number, number];
49
+ /** Resolved placement of a glyph node: scale plus the top-left corner offset
50
+ * from the node's (x, y), honoring the definition's anchor. */
51
+ export interface GlyphPlacement {
52
+ width: number;
53
+ height: number;
54
+ scale: number;
55
+ /** Add to the node's x to get the drawn top-left corner. */
56
+ offsetX: number;
57
+ /** Add to the node's y to get the drawn top-left corner. */
58
+ offsetY: number;
59
+ }
60
+ /** Size is the rendered **height** in px; width follows the viewBox aspect.
61
+ * (Pictogram sizing is a height, unlike the d3-symbol area convention.) */
62
+ export declare function glyphPlacement(def: GlyphDef, size: number): GlyphPlacement;
63
+ /** Radius from the node's (x, y) that bounds the drawn glyph — used for hit
64
+ * testing and keyboard-navigation focus geometry. */
65
+ export declare function glyphExtent(def: GlyphDef, size: number): number;
66
+ /**
67
+ * Resolve a part's paint token against the node's paints. Returns `undefined`
68
+ * for `"none"`/absent so callers can skip the fill/stroke entirely.
69
+ */
70
+ export declare function resolveGlyphPaint(token: string | undefined, color: string | undefined, accent: string | undefined, fallback?: string): string | undefined;
71
+ export declare function getGlyphPath2D(d: string): Path2D | null;
72
+ /** The shared fraction geometry for partial glyph fills: the clip rect in
73
+ * definition space covering `[fractionStart, fraction]` of the glyph. */
74
+ export declare function glyphFractionClipRect(def: GlyphDef, fraction: number, fractionStart?: number, direction?: "horizontal" | "vertical"): {
75
+ x: number;
76
+ y: number;
77
+ width: number;
78
+ height: number;
79
+ } | null;
80
+ /** Hit/focus geometry of a glyph node: the drawn bounds' center offset from
81
+ * the node's (x, y) plus its half-extents — shared by the four hit testers
82
+ * and the keyboard-nav extractors so pointer and focus agree exactly. */
83
+ export declare function glyphHitGeometry(def: GlyphDef, size: number): {
84
+ centerDx: number;
85
+ centerDy: number;
86
+ halfWidth: number;
87
+ halfHeight: number;
88
+ radius: number;
89
+ };
90
+ /**
91
+ * Paint a glyph's parts onto a canvas context. The caller has already
92
+ * translated/scaled into definition space (via {@link glyphPlacement}) and
93
+ * set global alpha; this draws parts with the node's paints. `paintOverride`
94
+ * paints every part in one flat color — the ghost-silhouette pass under a
95
+ * partial fill. `resolvePaint` maps a computed paint through the renderer's
96
+ * CSS-var resolution before it hits the canvas.
97
+ */
98
+ export declare function drawGlyphParts(ctx: CanvasRenderingContext2D, def: GlyphDef, color: string | undefined, accent: string | undefined, paintOverride?: string, resolvePaint?: (paint: string) => string): void;
@@ -0,0 +1,170 @@
1
+ import type { PointSceneNode, RectSceneNode, SceneDatum } from "./types";
2
+ import type { GeoAreaSceneNode } from "./geoTypes";
3
+ import type { NetworkCircleNode, NetworkRectNode } from "./networkTypes";
4
+ /** Default hit/keyboard-focus radius (px) — larger than a typical glyph so the
5
+ * target is easy to hit by pointer and to land on by keyboard (Fitts's law). */
6
+ export declare const DEFAULT_HIT_RADIUS = 8;
7
+ export interface HitTargetPointProps {
8
+ /** Plot-relative x of the mark's center. */
9
+ x: number;
10
+ /** Plot-relative y of the mark's center. */
11
+ y: number;
12
+ /** The raw user datum to surface on hover/click/focus and in the data table. */
13
+ datum: SceneDatum;
14
+ /** Stable identity. Set as the node's `pointId` (annotation anchor + nav-tree
15
+ * leaf match) *and* its transition key, so the mark keeps identity across
16
+ * re-layouts. Strongly recommended for interactive/animated custom charts. */
17
+ id?: string | number;
18
+ /** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
19
+ r?: number;
20
+ }
21
+ /**
22
+ * A transparent, hit-testable **point** node for a custom XY or ordinal layout
23
+ * whose visible marks live in `overlays`. Inherits keyboard navigation, the
24
+ * focus ring, annotation anchoring (by `id` → `pointId`), tooltip/`onObservation`
25
+ * emission, and transition identity. See the module overview for the full
26
+ * contract.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * nodes: ctx.data.map((row) => {
31
+ * const { x, y } = polarToXY(angle(row.day), radius(row.value))
32
+ * return hitTargetPoint({ x, y, datum: row, id: `day-${row.day}` })
33
+ * })
34
+ * ```
35
+ */
36
+ export declare function hitTargetPoint(props: HitTargetPointProps): PointSceneNode;
37
+ /**
38
+ * A transparent, hit-testable point node for a custom **geo** layout whose
39
+ * visible marks (sprites, icons, forts) live in `overlays`. Project a lon/lat
40
+ * with `ctx.scales.projectedPoint(lon, lat)` first, then pass the resulting
41
+ * `x` / `y`. Functionally identical to {@link hitTargetPoint} — geo scenes use
42
+ * the same `PointSceneNode` — but named for discoverability: it makes
43
+ * overlay-drawn geographic marks keyboard-navigable, focus-ringed, and
44
+ * annotation-anchorable, exactly as {@link networkHitTarget} does for networks.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * // inside a GeoCustomChart layout
49
+ * nodes: pois.map((p) => {
50
+ * const [x, y] = ctx.scales.projectedPoint(p.lon, p.lat)!
51
+ * return geoHitTarget({ x, y, datum: p, id: p.id })
52
+ * })
53
+ * ```
54
+ */
55
+ export declare function geoHitTarget(props: HitTargetPointProps): PointSceneNode;
56
+ export interface GeoAreaHitTargetProps {
57
+ /** SVG path string in plot-relative screen coordinates. */
58
+ pathData: string;
59
+ /** Screen-space centroid for tooltip and focus positioning. */
60
+ centroid: [number, number];
61
+ /** Screen-space bounds as [[x0, y0], [x1, y1]]. */
62
+ bounds: [[number, number], [number, number]];
63
+ /** The raw user datum to surface on hover/click/focus and in the data table. */
64
+ datum: SceneDatum;
65
+ /** Optional series/category key for grouped selection + legend interaction. */
66
+ group?: string;
67
+ /** Screen-space area in px^2. Defaults to the bounding-box area. */
68
+ screenArea?: number;
69
+ }
70
+ /**
71
+ * A transparent, hit-testable **area** node for a custom geo layout whose
72
+ * visible polygons live in `overlays`. Use this when the semantic mark is not
73
+ * point-like: isometric tiles, schematic regions, hex/cell maps, contour bands,
74
+ * or any hand-built path that should retain GeoFrame hover, keyboard focus,
75
+ * tooltips, accessible rows, and shape-aware canvas hit testing.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * return geoAreaHitTarget({
80
+ * pathData: diamondPath(x, y, tileWidth, tileHeight),
81
+ * centroid: [x, y],
82
+ * bounds: [[x - tileWidth / 2, y - tileHeight / 2], [x + tileWidth / 2, y + tileHeight / 2]],
83
+ * screenArea: (tileWidth * tileHeight) / 2,
84
+ * datum: tile,
85
+ * group: tile.kind,
86
+ * })
87
+ * ```
88
+ */
89
+ export declare function geoAreaHitTarget(props: GeoAreaHitTargetProps): GeoAreaSceneNode;
90
+ export interface HitTargetRectProps {
91
+ /** Plot-relative x of the rect's top-left corner. */
92
+ x: number;
93
+ /** Plot-relative y of the rect's top-left corner. */
94
+ y: number;
95
+ /** Rect width in px. */
96
+ width: number;
97
+ /** Rect height in px. */
98
+ height: number;
99
+ /** The raw user datum to surface on hover/click/focus and in the data table. */
100
+ datum: SceneDatum;
101
+ /** Stable identity — used as the transition key, and as `group` for shared
102
+ * selection. (Rect nodes anchor annotations by their center via the
103
+ * point-anchor harvest only on network; for XY/ordinal pair a rect hit area
104
+ * with {@link hitTargetPoint} if you need annotation anchoring.) */
105
+ id?: string | number;
106
+ /** Optional series/category key for grouped selection + legend interaction. */
107
+ group?: string;
108
+ }
109
+ /**
110
+ * A transparent, hit-testable **rect** node for a custom XY or ordinal layout —
111
+ * the rectangular sibling of {@link hitTargetPoint}, for marks that read as a
112
+ * box (a bar, an interval lane segment, a labelled card). Same free interaction:
113
+ * keyboard nav, focus ring, tooltip/`onObservation`, transition identity.
114
+ */
115
+ export declare function hitTargetRect(props: HitTargetRectProps): RectSceneNode;
116
+ export interface NetworkHitTargetCircleProps {
117
+ /** Plot-relative x of the mark's center. */
118
+ x: number;
119
+ /** Plot-relative y of the mark's center. */
120
+ y: number;
121
+ /** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
122
+ datum: SceneDatum;
123
+ /** Stable identity — set as the node `id`, which is how a `pointId`-anchored
124
+ * annotation resolves to this mark and how shared selection keys it. */
125
+ id?: string | number;
126
+ /** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
127
+ r?: number;
128
+ /** Optional accessible label override for the node. */
129
+ label?: string;
130
+ }
131
+ export interface NetworkHitTargetRectProps {
132
+ /** Plot-relative x of the rect's top-left corner. */
133
+ x: number;
134
+ /** Plot-relative y of the rect's top-left corner. */
135
+ y: number;
136
+ /** Rect width in px. */
137
+ width: number;
138
+ /** Rect height in px. */
139
+ height: number;
140
+ /** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
141
+ datum: SceneDatum;
142
+ /** Stable identity — set as the node `id` for annotation anchoring + selection. */
143
+ id?: string | number;
144
+ /** Optional accessible label override for the node. */
145
+ label?: string;
146
+ }
147
+ /**
148
+ * A transparent, hit-testable node for a custom **network** layout. Pass `width`
149
+ * + `height` for a rect (a labelled box / card), or omit them for a circle of
150
+ * radius `r`. Every network scene node is harvested as an annotation anchor, so
151
+ * `id` resolves a `{ pointId: id }` annotation to this mark. Inherits the same
152
+ * keyboard nav, focus ring, tooltip/`onObservation`, and shared-selection
153
+ * threading the built-in network charts get.
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * sceneNodes: positioned.map((node) =>
158
+ * networkHitTarget({
159
+ * x: node.x - node.width / 2,
160
+ * y: node.y - node.height / 2,
161
+ * width: node.width,
162
+ * height: node.height,
163
+ * datum: node,
164
+ * id: node.id,
165
+ * })
166
+ * )
167
+ * ```
168
+ */
169
+ export declare function networkHitTarget(props: NetworkHitTargetRectProps): NetworkRectNode;
170
+ export declare function networkHitTarget(props: NetworkHitTargetCircleProps): NetworkCircleNode;
@@ -27,11 +27,11 @@ export declare function getHitRadius(nodeRadius: number | undefined, maxDistance
27
27
  * Convert a value to a Date if possible. Returns null for non-date values.
28
28
  * Treats numbers > 1e9 as millisecond timestamps.
29
29
  */
30
- export declare function toDate(value: any): Date | null;
30
+ export declare function toDate(value: Date | number | string | null | undefined): Date | null;
31
31
  /**
32
32
  * Detect whether a tick marks a time boundary (new month or year) compared to the previous tick.
33
33
  */
34
- export declare function isTimeLandmark(value: any, prevValue: any): boolean;
34
+ export declare function isTimeLandmark(value: Date | number | string | null | undefined, prevValue: Date | number | string | null | undefined): boolean;
35
35
  /**
36
36
  * Normalize an angle to the [0, 2π) range.
37
37
  */
@@ -7,6 +7,8 @@
7
7
  * property flattening that are handled at the call site.
8
8
  */
9
9
  import type { HoverData } from "../realtime/types";
10
+ import type { Datum } from "../charts/shared/datumTypes";
11
+ export type RawHoverDatum = Datum | Datum[] | null;
10
12
  /**
11
13
  * Minimal shape a Stream Frame's internal hover handler needs from a pointer
12
14
  * event. React.MouseEvent satisfies this structurally, as does the plain
@@ -18,8 +20,11 @@ import type { HoverData } from "../realtime/types";
18
20
  export interface HoverPointerCoords {
19
21
  clientX: number;
20
22
  clientY: number;
23
+ pointerType?: string;
21
24
  }
22
- export declare function normalizeHoverDatum(rawDatum: any): any;
25
+ export declare const TOUCH_HIT_RADIUS = 24;
26
+ export declare function getPointerHitRadius(baseRadius: number, pointerType?: string): number;
27
+ export declare function normalizeHoverDatum(rawDatum: RawHoverDatum): Datum | null;
23
28
  /**
24
29
  * Build a HoverData object from a raw datum and pixel coordinates.
25
30
  * The raw datum is preserved as `hover.data` for tooltip / callback
@@ -27,4 +32,4 @@ export declare function normalizeHoverDatum(rawDatum: any): any;
27
32
  * relevant to a specific frame family — `category`, `stats`,
28
33
  * `nodeOrEdge`, `xValue`, etc. — is layered in via `extra`.
29
34
  */
30
- export declare function buildHoverData(rawDatum: any, x: number, y: number, extra?: Partial<HoverData>): HoverData;
35
+ export declare function buildHoverData(rawDatum: RawHoverDatum, x: number, y: number, extra?: Partial<HoverData>): HoverData;
@@ -20,11 +20,14 @@ export interface NavPoint {
20
20
  y: number;
21
21
  datum: Datum | null;
22
22
  /** Shape hint for focus ring rendering */
23
- shape?: "circle" | "rect" | "wedge";
23
+ shape?: "circle" | "rect" | "wedge" | "geoarea";
24
24
  /** Width of rect-shaped elements (bars, sankey nodes) */
25
25
  w?: number;
26
26
  /** Height of rect-shaped elements */
27
27
  h?: number;
28
+ /** SVG path (plot-relative) for a geoarea focus ring — the shape is
29
+ * outlined instead of drawing a circle at the centroid. */
30
+ pathData?: string;
28
31
  /** Group identifier for graph navigation (series name, category, node id) */
29
32
  group?: string;
30
33
  /** Index in NavGraph.flat — set by buildNavGraph for O(1) lookup */
@@ -1,2 +1,10 @@
1
- import type { NetworkLayoutPlugin } from "../networkTypes";
1
+ import type { NetworkLayoutPlugin, RealtimeNode } from "../networkTypes";
2
+ import type { Datum } from "../../charts/shared/datumTypes";
2
3
  export declare const forceLayoutPlugin: NetworkLayoutPlugin;
4
+ /**
5
+ * Build a function that returns a node radius. If `nodeSize` is a number,
6
+ * use it directly. If it is a string accessor, look up `node.data[nodeSize]`
7
+ * and scale the result to `nodeSizeRange`. If it is a function, call it.
8
+ * Falls back to a default radius of 8.
9
+ */
10
+ export declare function resolveNodeSizeFn(nodeSize: number | string | ((d: Datum) => number) | undefined, nodeSizeRange: [number, number] | undefined, allNodes: RealtimeNode[]): (node: RealtimeNode) => number;
@@ -0,0 +1,58 @@
1
+ import type { GraphEdge, GraphNode, Point } from "../../recipes/networkAnalysis";
2
+ import type { ForceLayoutOptions } from "../../recipes/forceLayout";
3
+ import type { NetworkPipelineConfig, RealtimeEdge, RealtimeNode } from "../networkTypes";
4
+ export type ForceLayoutExecution = "auto" | "worker" | "sync";
5
+ export interface NormalizedForceWorkerRequest {
6
+ kind: "normalized";
7
+ nodes: GraphNode[];
8
+ edges: GraphEdge[];
9
+ options: Omit<ForceLayoutOptions, "nodeRadius">;
10
+ nodeRadii?: Record<string, number>;
11
+ }
12
+ export interface FrameForceWorkerRequest {
13
+ kind: "frame";
14
+ nodes: RealtimeNode[];
15
+ edges: RealtimeEdge[];
16
+ config: {
17
+ chartType: "force";
18
+ iterations?: number;
19
+ forceStrength?: number;
20
+ seed?: number;
21
+ };
22
+ size: [number, number];
23
+ }
24
+ export type ForceWorkerRequest = NormalizedForceWorkerRequest | FrameForceWorkerRequest;
25
+ export interface ForceWorkerResponse {
26
+ positions: Record<string, Point>;
27
+ }
28
+ export declare const DEFAULT_FORCE_WORKER_THRESHOLD = 40000;
29
+ export declare function shouldUseForceWorker(execution: ForceLayoutExecution, nodeCount: number, edgeCount: number, iterations: number, threshold?: number): boolean;
30
+ export declare function canUseForceWorker(): boolean;
31
+ export declare function createForceLayoutWorker(): Worker;
32
+ export declare function createFrameForceWorkerRequest(nodes: RealtimeNode[], edges: RealtimeEdge[], config: NetworkPipelineConfig, size: [number, number], previousPositions?: Map<string, {
33
+ x: number;
34
+ y: number;
35
+ }> | null): FrameForceWorkerRequest;
36
+ /**
37
+ * Long-lived force-layout worker session. Mirrors PhysicsWorkerSession:
38
+ * one Worker is reused across layouts so module parse + startup cost is
39
+ * paid once per page, not once per graph re-layout.
40
+ */
41
+ export declare class ForceLayoutWorkerSession {
42
+ private nextRequestId;
43
+ private pending;
44
+ private worker;
45
+ private dead;
46
+ constructor(worker?: Worker);
47
+ get isDead(): boolean;
48
+ request(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
49
+ terminate(): void;
50
+ private rejectAll;
51
+ }
52
+ /** Test helper: drop the shared session so the next call creates a fresh Worker. */
53
+ export declare function _resetSharedForceLayoutSessionForTest(): void;
54
+ /**
55
+ * Run a force layout on a reused worker session.
56
+ * Prefer this over constructing a new Worker per layout.
57
+ */
58
+ export declare function runForceLayoutWorker(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
@@ -20,7 +20,7 @@ export declare function parseColor(color: string): [number, number, number];
20
20
  * Uses perceived luminance (ITU-R BT.601).
21
21
  */
22
22
  export declare function contrastTextColor(bgColor: string): string;
23
- export declare function resolveChildrenAccessor(accessor: string | ((d: Datum) => any[]) | undefined): ((d: Datum) => any[]) | undefined;
24
- export declare function resolveNodeId(d: any, config: NetworkPipelineConfig, index: number): string;
23
+ export declare function resolveChildrenAccessor(accessor: string | ((d: Datum) => Datum[]) | undefined): ((d: Datum) => Datum[]) | undefined;
24
+ export declare function resolveNodeId(d: Datum, config: NetworkPipelineConfig, index: number): string;
25
25
  export declare function resolveLabelFn(nodeLabel: string | ((d: Datum) => string) | undefined): ((d: Datum) => string) | null;
26
26
  export declare function resolveDefaultNodeSize(nodeSize: number | string | ((d: Datum) => number) | undefined): number;
@@ -0,0 +1,10 @@
1
+ import type { BezierCache, RealtimeEdge, RealtimeNode } from "./networkTypes";
2
+ /** Default cubic control-point curvature (fraction of span). */
3
+ export declare const NETWORK_EDGE_CURVATURE = 0.5;
4
+ export declare function buildStandardBezier(edge: RealtimeEdge, sourceNode: RealtimeNode, targetNode: RealtimeNode, curvature?: number): BezierCache;
5
+ export declare function buildCircularBezier(edge: RealtimeEdge, curvature?: number): BezierCache;
6
+ /**
7
+ * Resolve source/target RealtimeNodes and attach the edge's bezier cache.
8
+ * Returns false if endpoints cannot be resolved.
9
+ */
10
+ export declare function updateEdgeBezier(edge: RealtimeEdge, nodes: Map<string, RealtimeNode>, curvature?: number): boolean;