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
@@ -51,6 +51,13 @@ export interface AnnotationLayoutConfig {
51
51
  responsive?: boolean | {
52
52
  minWidth?: number;
53
53
  };
54
+ /**
55
+ * Mobile annotation policy. This composes the existing responsive + density +
56
+ * progressive-disclosure passes into a phone-friendly default: keep the core
57
+ * notes persistent, collapse secondary notes, and prefer short/mobile copy
58
+ * when provided. Off by default.
59
+ */
60
+ mobile?: boolean | AnnotationMobileConfig;
54
61
  /**
55
62
  * M5 — cohesion mode (Rahman et al.'s "Cohesion"). `"blended"` lets notes
56
63
  * adopt the chart's visual language (mark colors / chart typography — the
@@ -69,6 +76,28 @@ export interface AnnotationLayoutConfig {
69
76
  audience?: AnnotationAudience;
70
77
  }
71
78
  export type AnnotationCohesion = "blended" | "layer";
79
+ export interface AnnotationMobileConfig {
80
+ /** Width at or below which mobile behavior activates. Default 480px. */
81
+ breakpoint?: number;
82
+ /** Plot-only, callout-list, or hybrid mobile note behavior. */
83
+ strategy?: "plot" | "callout-list" | "hybrid";
84
+ /** Max persistent notes at phone width. Default 2. */
85
+ maxAnnotations?: number;
86
+ /** Maximum notes expected to move into an external mobile callout list. */
87
+ maxCalloutItems?: number;
88
+ /** Minimum notes kept regardless of budget. Default 1. */
89
+ minVisible?: number;
90
+ /** Keep shed notes hidden/revealable rather than dropping them. Default true. */
91
+ progressiveDisclosure?: boolean;
92
+ /** Responsive breakpoint override. Defaults to `breakpoint`. */
93
+ responsive?: boolean | {
94
+ minWidth?: number;
95
+ };
96
+ /** Annotation cohesion to apply at phone width. */
97
+ cohesion?: AnnotationCohesion;
98
+ /** Prefer annotation.mobileText / shortText for label text. Default true. */
99
+ preferShortText?: boolean;
100
+ }
72
101
  /** Structural subset of `AudienceProfile` the annotation layer reads — anything
73
102
  * with a per-chart `familiarity` map satisfies it, so a real `AudienceProfile`
74
103
  * can be passed directly without coupling `recipes` to the `ai` module. */
@@ -0,0 +1,119 @@
1
+ import type { NetworkCustomLayout } from "../stream/networkCustomLayout";
2
+ import type { Datum } from "../charts/shared/datumTypes";
3
+ /**
4
+ * Axis-fixed force layout — "one axis is data, relax the other." Pins each
5
+ * node's position on one axis from a data field (e.g. year → y) and settles the
6
+ * free axis with edge attraction, an anchor spring, and **rectangular**
7
+ * (label-box-aware) collision. The distinct, reusable layout family none of the
8
+ * hierarchical recipes (`flextree`, `dagre`, `lineageDag`, `mermaidDag`) cover —
9
+ * a chronological influence/genealogy network where time is structural and the
10
+ * graph determines the cross-axis arrangement.
11
+ *
12
+ * Rectangular collision ({@link rectCollide}) is the differentiator over plain
13
+ * d3-force, whose `forceCollide` only separates circles — text labels are boxes.
14
+ *
15
+ * Two entry points:
16
+ * - {@link axisFixedForcePositions} — the pure positioner. Returns positioned
17
+ * boxes; pair with art-directed `overlays` + `networkHitTarget` for full
18
+ * control over how nodes/edges look.
19
+ * - {@link axisFixedForceLayout} — a ready `NetworkCustomLayout` that emits
20
+ * default rect nodes, curved edges, and labels (sibling to `dagreLayout`).
21
+ */
22
+ export interface CollisionBox {
23
+ id: string;
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ }
29
+ export interface RectCollideOptions {
30
+ /** Free axis to separate boxes along. @default "x" */
31
+ axis?: "x" | "y";
32
+ /** Minimum gap to maintain between box edges, px. @default 0 */
33
+ padding?: number;
34
+ /** Fraction of each overlap resolved in this pass (0..1). @default 0.5 */
35
+ strength?: number;
36
+ }
37
+ /**
38
+ * One pass of rectangular collision separation. Returns the per-box displacement
39
+ * along the free axis — add it to a force accumulator (as the axis-fixed settle
40
+ * does) or apply it directly. Two boxes interact only when they overlap on the
41
+ * cross axis *and* the free axis, so distant rows never push each other. The
42
+ * box-aware separation every text-heavy network needs (labels are rectangles,
43
+ * not points). Pure / deterministic (symmetric ties broken by id order).
44
+ */
45
+ export declare function rectCollide(boxes: readonly CollisionBox[], opts?: RectCollideOptions): Map<string, number>;
46
+ export interface AxisFixedForceConfig {
47
+ /** Field (or fn) giving the fixed-axis data value, e.g. a year. */
48
+ fixedAccessor: string | ((d: Datum) => number);
49
+ /** `[min, max]` of the fixed value, mapped to the pinned pixel axis. */
50
+ fixedDomain: [number, number];
51
+ /** Which axis is pinned from data. @default "y" (year → y, relax x). */
52
+ fixedAxis?: "x" | "y";
53
+ /** Node id accessor. @default "id" */
54
+ idAccessor?: string | ((d: Datum) => string);
55
+ /** Edge source-id accessor. @default "source" */
56
+ sourceAccessor?: string | ((e: Datum) => string);
57
+ /** Edge target-id accessor. @default "target" */
58
+ targetAccessor?: string | ((e: Datum) => string);
59
+ /** Box size per node (label-aware). @default `{ width: 60, height: 34 }` */
60
+ size?: (d: Datum) => {
61
+ width: number;
62
+ height: number;
63
+ };
64
+ /** Settle iterations. @default 180 */
65
+ iterations?: number;
66
+ /** Edge attraction along the free axis. @default 0.012 */
67
+ attraction?: number;
68
+ /** Spring strength pulling each node back to its initial spread. @default 0.003 */
69
+ anchorStrength?: number;
70
+ /** Collision separation strength. @default 0.12 */
71
+ collisionStrength?: number;
72
+ /** Gap maintained between boxes, px. @default 15 */
73
+ collisionPadding?: number;
74
+ /** Inset from the plot edges on the free axis, px. @default 42 */
75
+ edgePadding?: number;
76
+ /** Inset from the plot edges on the fixed axis, px. @default 16 */
77
+ fixedPadding?: number;
78
+ /** Per-iteration force damping. @default 0.72 */
79
+ damping?: number;
80
+ /** Widen the settled solution about its center (1 = leave as-is). @default 1 */
81
+ spread?: number;
82
+ }
83
+ export interface PositionedNode {
84
+ /** The raw user datum (unwrapped from any frame node wrapper). */
85
+ data: Datum;
86
+ id: string;
87
+ /** Center x in plot coordinates. */
88
+ x: number;
89
+ /** Center y in plot coordinates. */
90
+ y: number;
91
+ width: number;
92
+ height: number;
93
+ /** The fixed-axis data value used (e.g. the year). */
94
+ fixedValue: number;
95
+ }
96
+ export interface AxisFixedForceResult {
97
+ positioned: PositionedNode[];
98
+ byId: Map<string, PositionedNode>;
99
+ }
100
+ interface PlotRect {
101
+ x: number;
102
+ y: number;
103
+ width: number;
104
+ height: number;
105
+ }
106
+ /**
107
+ * The pure positioner. Settles `nodes` against `edges` with one axis pinned from
108
+ * data, returning centered boxes. Deterministic for a given input + config.
109
+ */
110
+ export declare function axisFixedForcePositions(nodes: readonly Datum[], edges: readonly Datum[], plot: PlotRect, config: AxisFixedForceConfig): AxisFixedForceResult;
111
+ /**
112
+ * A ready-to-use `NetworkCustomLayout` wrapping {@link axisFixedForcePositions}:
113
+ * emits a rect node per node, a curved edge per edge ({@link curvedEdgePath},
114
+ * fanned by index), and a centered label. Hand it straight to a
115
+ * `NetworkCustomChart`'s `layout` for a quick chronological force graph; reach
116
+ * for the positioner directly when you want art-directed overlays.
117
+ */
118
+ export declare const axisFixedForceLayout: NetworkCustomLayout<AxisFixedForceConfig>;
119
+ export {};
@@ -1,6 +1,6 @@
1
1
  import type { OrdinalCustomLayout } from "../stream/ordinalCustomLayout";
2
2
  import type { Datum } from "../charts/shared/datumTypes";
3
- export interface GofishBobaConfig {
3
+ export interface BobaConfig {
4
4
  /** Category — one cup per distinct value. @default "name" */
5
5
  categoryAccessor?: string | ((d: Datum) => string);
6
6
  /** Tea volume (cm³). @default field "teaVolume" → 450 */
@@ -20,4 +20,4 @@ export interface GofishBobaConfig {
20
20
  /** Fraction of each band the cup glyph may occupy. @default 0.82 */
21
21
  cupWidthRatio?: number;
22
22
  }
23
- export declare const gofishBobaLayout: OrdinalCustomLayout<GofishBobaConfig>;
23
+ export declare const bobaLayout: OrdinalCustomLayout<BobaConfig>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Cyclical (wrap-around) interval math for any periodic axis — day-of-year,
3
+ * hour-of-day, compass bearing, phase. A radial/circular brush, a clock chart,
4
+ * or a seasonal ribbon re-derives this; it lives here once.
5
+ *
6
+ * Pure / SSR-safe. All functions are domain-agnostic: pass the period of the
7
+ * cycle (365 for day-of-year, 24 for hour-of-day, 360 for degrees, `2π` for
8
+ * radians).
9
+ */
10
+ /**
11
+ * Wrap a value into the half-open cycle `[min, min + period)`. Handles negatives
12
+ * and multiple wraps. `wrapValue(370, 365) → 5`, `wrapValue(-1, 365) → 364`.
13
+ */
14
+ export declare function wrapValue(value: number, period: number, min?: number): number;
15
+ /**
16
+ * The signed shortest step from `from` to `to` around the cycle. Result is in
17
+ * `(-period/2, period/2]`: positive goes forward (increasing), negative
18
+ * backward, taking whichever way around is shorter. The delta a drag handler
19
+ * applies so dragging a circular range never "unwinds" the long way round.
20
+ */
21
+ export declare function shortestArcDelta(from: number, to: number, period: number): number;
22
+ /**
23
+ * Whether `value` falls within the inclusive cyclic range `[start, end]`. When
24
+ * `start <= end` it's a normal interval; when `start > end` the range wraps past
25
+ * the period boundary (e.g. a Dec→Feb winter window), so membership is
26
+ * `value >= start || value <= end`. Values are compared as given — wrap them
27
+ * with {@link wrapValue} first if they may be out of range.
28
+ */
29
+ export declare function cyclicRangeContains(value: number, start: number, end: number): boolean;
30
+ /**
31
+ * Filter items whose accessor value falls in the cyclic range `[start, end]`
32
+ * (inclusive), handling the wrap-around case. The generic replacement for the
33
+ * hand-rolled "if start<=end filter once, else union two filters" pattern.
34
+ *
35
+ * When the range wraps, items are returned in two contiguous arcs (the
36
+ * `[start, period)` arc first, then the `[min, end]` arc) so a downstream
37
+ * consumer reading them in order walks the selection the way the eye does.
38
+ */
39
+ export declare function selectCyclicRange<T>(items: readonly T[], accessor: (item: T) => number, start: number, end: number): T[];
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Edge-router kit — shared SVG-path builders for custom **network** layouts that
3
+ * draw their own edges in `overlays` (or emit `sceneEdges` of type `curved`).
4
+ * Every hand-built influence/lineage diagram re-derives bezier control points,
5
+ * box exit/entry anchors, and a fan-out bend to keep parallel edges from
6
+ * overlapping; this centralizes that geometry.
7
+ *
8
+ * Pure / SSR-safe. Complements the network `sceneEdges` `bezier` / `curved`
9
+ * types and the annotation `connector: { type: "curve" }` option.
10
+ */
11
+ export interface Point {
12
+ x: number;
13
+ y: number;
14
+ }
15
+ /** A box positioned by its **center** (what force/constraint layouts produce). */
16
+ export interface CenteredBox {
17
+ cx: number;
18
+ cy: number;
19
+ width: number;
20
+ height: number;
21
+ }
22
+ export type EdgeOrientation = "vertical" | "horizontal";
23
+ export interface CurvedEdgeOptions {
24
+ /** Which axis the edge mainly travels along. `"vertical"` flows top↔bottom
25
+ * (control points share x); `"horizontal"` flows left↔right. @default "vertical" */
26
+ orientation?: EdgeOrientation;
27
+ /** Cross-axis offset of the curve's midpoint, in px — fan parallel edges apart.
28
+ * Feed it {@link fanOutBend}. @default 0 */
29
+ bend?: number;
30
+ /** Below this along-axis distance the endpoints are nearly side-by-side, so a
31
+ * straight S-curve would collapse; the router draws a sideways bow instead.
32
+ * @default 18 */
33
+ minAlong?: number;
34
+ }
35
+ /**
36
+ * A smooth cubic-bezier edge between two points. For a top-to-bottom flow the
37
+ * control points sit at the vertical midpoint (offset by `bend`), giving the
38
+ * familiar S-curve; when the two ends are nearly level it falls back to a
39
+ * quadratic side-bow so the edge stays visible. Generalizes the bespoke
40
+ * "S-curve, with a short-hop side-bow for near-parallel pairs" router.
41
+ */
42
+ export declare function curvedEdgePath(from: Point, to: Point, opts?: CurvedEdgeOptions): string;
43
+ /**
44
+ * An orthogonal "elbow" edge — two right-angle bends through the midpoint of the
45
+ * travel axis. The step-router alternative to {@link curvedEdgePath} for
46
+ * dataflow/lineage diagrams that prefer rectilinear edges.
47
+ */
48
+ export declare function orthogonalEdgePath(from: Point, to: Point, opts?: {
49
+ orientation?: EdgeOrientation;
50
+ }): string;
51
+ export interface BoxEdgeAnchorOptions {
52
+ orientation?: EdgeOrientation;
53
+ }
54
+ /**
55
+ * Resolve where an edge leaves the source box and meets the target box. For a
56
+ * vertical flow it exits the bottom-center and enters the top-center when the
57
+ * target is below (and vice-versa); horizontal uses right/left centers. Removes
58
+ * the per-recipe "compute startY/endY from half-heights and direction" block.
59
+ */
60
+ export declare function boxEdgeAnchors(source: CenteredBox, target: CenteredBox, opts?: BoxEdgeAnchorOptions): {
61
+ from: Point;
62
+ to: Point;
63
+ };
64
+ export interface FanOutBendOptions {
65
+ /** Total number of parallel edges, for a centered fan: edge `(count-1)/2`
66
+ * gets bend 0. Ignored when `modulo` is set. */
67
+ count?: number;
68
+ /** Cross-axis spacing between adjacent fanned edges, in px. @default 5 */
69
+ spread?: number;
70
+ /** Cycle bends through `modulo` evenly-spaced offsets centered on 0 — useful
71
+ * when you don't know the per-pair count and just want global variety. */
72
+ modulo?: number;
73
+ }
74
+ /**
75
+ * A cross-axis bend offset that fans parallel edges apart so they don't overlap.
76
+ * Pass an edge's index; with `count` it centers a fan (`0` at the middle edge),
77
+ * with `modulo` it cycles through a fixed set of offsets. Feed the result to
78
+ * {@link curvedEdgePath}'s `bend`.
79
+ */
80
+ export declare function fanOutBend(index: number, opts?: FanOutBendOptions): number;
81
+ /** A cubic Bézier as its four control points (start, two handles, end). */
82
+ export interface CubicCurve {
83
+ p0: Point;
84
+ p1: Point;
85
+ p2: Point;
86
+ p3: Point;
87
+ }
88
+ /**
89
+ * Evaluate the point on a cubic Bézier at parameter `t ∈ [0, 1]`. The companion
90
+ * to {@link curvedEdgePath} / {@link cubicPath} for the case the path string
91
+ * can't cover: *placing a mark along the curve* — a station node at `t = 0.5`,
92
+ * an arrowhead at the end, a label at the third. `t = 0` is `p0`, `t = 1` is `p3`.
93
+ */
94
+ export declare function cubicPoint(curve: CubicCurve, t: number): Point;
95
+ /**
96
+ * The (unnormalized) tangent vector of a cubic Bézier at `t` — the curve's
97
+ * derivative. Normalize it (e.g. with `normalizePoint` from the vector kit) to
98
+ * orient an arrowhead or grow a branch normal to the curve. Points in the
99
+ * direction of increasing `t`.
100
+ */
101
+ export declare function cubicTangent(curve: CubicCurve, t: number): Point;
102
+ /** Serialize a {@link CubicCurve} to an SVG `M…C…` path string. */
103
+ export declare function cubicPath(curve: CubicCurve): string;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Seeded, deterministic force layout for custom network charts.
3
+ *
4
+ * `ForceDirectedGraph` runs a force simulation internally, but `NetworkCustomChart`
5
+ * expects pre-computed positions — and there was no reproducible positioner to
6
+ * feed it. This is a compact spring/repulsion/gravity sim with a seeded PRNG, so
7
+ * the same graph + seed always produces the same layout (change the seed to get a
8
+ * different one — useful for "re-run the layout" interactions). Positions are
9
+ * returned normalized to [0, 1], so you map them into the plot yourself.
10
+ *
11
+ * Synchronous and deterministic: it settles before returning, so consumers get
12
+ * stable coordinates without running an interactive simulation.
13
+ */
14
+ import type { GraphNode, GraphEdge, Point } from "./networkAnalysis";
15
+ export { mulberry32 } from "./random";
16
+ export interface ForceLayoutOptions {
17
+ /** PRNG seed — same seed ⇒ same layout. @default 1 */
18
+ seed?: number;
19
+ /** Simulation iterations. @default 260 */
20
+ iterations?: number;
21
+ /** Repulsion strength between every pair of nodes. @default 5200 */
22
+ repulsion?: number;
23
+ /** Target edge length in the virtual (pre-normalization) space. @default 165 */
24
+ linkDistance?: number;
25
+ /** Spring stiffness pulling connected nodes to `linkDistance`. @default 0.045 */
26
+ linkStrength?: number;
27
+ /** Gravity toward the center (keeps disconnected pieces on screen). @default 0.018 */
28
+ centerStrength?: number;
29
+ /** Per-step velocity damping. @default 0.84 */
30
+ damping?: number;
31
+ /** Node collision radius in virtual layout units. @default 12 */
32
+ nodeRadius?: number | ((node: GraphNode) => number);
33
+ /** Extra collision spacing in virtual layout units. @default 3 */
34
+ nodePadding?: number;
35
+ /** Inset kept clear at the edges of the normalized box. @default 0.06 */
36
+ inset?: number;
37
+ }
38
+ /**
39
+ * Lay a graph out with a seeded force simulation. Returns node id → {x, y} with
40
+ * both in [0, 1].
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const pos = forceLayout(nodes, edges, { seed: 7 })
45
+ * // in a NetworkCustomChart layout: cx = plot.x + pos[node.id].x * plot.width
46
+ * ```
47
+ */
48
+ export declare function forceLayout(nodes: ReadonlyArray<GraphNode>, edges: ReadonlyArray<GraphEdge>, options?: ForceLayoutOptions): Record<string, Point>;
@@ -0,0 +1,17 @@
1
+ import { type ForceLayoutOptions } from "./forceLayout";
2
+ import type { GraphEdge, GraphNode, Point } from "./networkAnalysis";
3
+ import { type ForceLayoutExecution } from "../stream/layouts/forceLayoutWorkerClient";
4
+ export interface ForceLayoutAsyncOptions extends ForceLayoutOptions {
5
+ /** Choose worker execution, synchronous execution, or an automatic cost threshold. */
6
+ execution?: ForceLayoutExecution;
7
+ /** Abort pending worker execution. */
8
+ signal?: AbortSignal;
9
+ /** Override the automatic `iterations × (nodes + edges)` worker threshold. */
10
+ workerThreshold?: number;
11
+ }
12
+ /**
13
+ * Asynchronous counterpart to {@link forceLayout}. Large layouts run in a
14
+ * short-lived module worker; small, server-side, or unsupported environments
15
+ * fall back to the same deterministic synchronous implementation.
16
+ */
17
+ export declare function forceLayoutAsync(nodes: ReadonlyArray<GraphNode>, edges: ReadonlyArray<GraphEdge>, options?: ForceLayoutAsyncOptions): Promise<Record<string, Point>>;
@@ -0,0 +1,3 @@
1
+ import type { GofishDisplayListDocument } from "./gofishIR";
2
+ /** The hand-emitted boba DisplayList document (computed once, deterministic). */
3
+ export declare const bobaDisplayList: GofishDisplayListDocument;
@@ -0,0 +1,37 @@
1
+ import type { DisplayList } from "gofish-ir";
2
+ type DisplayListDocument = DisplayList.DisplayListDocument;
3
+ /**
4
+ * Flower meadow — GoFish's real flower chart, verbatim: a meadow where each lake is a green stem (a bar whose height is the lake's total catch) topped by a polar fan of petals, one per species, sized by count. It is layer([stems, flowers]) — the flowers selectAll the stems and stack a polar petal fan on each. The composition's root is a combinator (no ChartBuilder.toDisplayList), so it is baked through GoFish's mark-resolution contract; see gofish-displaylist-findings.md.
5
+ * Source: https://gofish.graphics/js/examples/flower-chart.html
6
+ */
7
+ export declare const flowerDisplayList: DisplayListDocument;
8
+ /**
9
+ * Polar ribbon chart — GoFish's polar ribbon chart, verbatim: the catch stacked radially per lake under a clock() projection, then a smooth area ribbon drawn across the lakes for each species (selectAll the bars, group by species). The wrap, the open gap, and the bumped ribbons are all baked into absolute-pixel paths; the radial bars keep their datum (hit targets), the ribbons are area chrome. Root is a layer({ coord: clock() }) combinator, baked through GoFish's mark-resolution contract — see gofish-displaylist-findings.md.
10
+ * Source: https://gofish.graphics/js/examples/polar-ribbon-chart.html
11
+ */
12
+ export declare const polarribbonDisplayList: DisplayListDocument;
13
+ /**
14
+ * Fare circle treemap — GoFish's titanic fare circle treemap, verbatim: faceted by passenger class (facet by pclass, dir x), then a squarify-circle treemap per facet sizing each passenger by fare (sort desc, so fares run large→small) and colouring by survival. Three blocks — big first-class circles, then a field of tiny third-class ones. Every circle is a data node carrying its passenger; the facet labels/legend are chrome.
15
+ * Source: https://gofish.graphics/js/examples/titanic-fare-circle-treemap.html
16
+ */
17
+ export declare const treemapDisplayList: DisplayListDocument;
18
+ /**
19
+ * Bottle fill pictorial — GoFish's real bottle-fill technique: a fill rect sized by amount is color-composited *inside* the bottle silhouette via paint({ blendMode: 'color' }), so the liquid reads as rising within the bottle (not a bar behind a picture). Bakes to a composite item; the adapter harvests the composite's datum so each bottle keeps hit-testing and tooltips.
20
+ * Source: https://gofish.graphics/js/examples/bottle-fill-chart.html
21
+ */
22
+ export declare const bottleDisplayList: DisplayListDocument;
23
+ /**
24
+ * Python memory diagram — A Python Tutor runtime memory diagram: a Global Frame of variables (c, d → pointers; x = 5) whose arrows fan into a heap of tuples, with tuple cells pointing on to further tuples. NOTE: GoFish's own example is not a portable spec — it relies on ~250 lines of unpublished story helpers (globalFrame/heap/tuple/Arrow). This is a best-effort reconstruction from GoFish primitives only (rect/text/Arrow/ref + .name()). It is also vertically flipped vs the live example: a free-space Layer baked through toDisplayList orients y-down differently than .render() (GoFish issue #143/#16). See gofish-displaylist-findings.md §6.
25
+ * Source: https://gofish.graphics/js/examples/python-tutor-memory-diagram.html
26
+ */
27
+ export declare const pythonDisplayList: DisplayListDocument;
28
+ export interface GofishDisplayListExample {
29
+ key: "bars" | "flower" | "polarribbon" | "treemap" | "bottle" | "python";
30
+ label: string;
31
+ source: string;
32
+ blurb: string;
33
+ doc: DisplayListDocument;
34
+ }
35
+ /** All baked gallery fixtures, in display order. */
36
+ export declare const gofishDisplayListExamples: readonly GofishDisplayListExample[];
37
+ export {};