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
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  /**
9
10
  * StackedAreaChart component props
10
11
  */
@@ -21,7 +22,7 @@ export interface StackedAreaChartProps<TDatum extends Datum = Datum> extends Bas
21
22
  * Field name or function to access x values
22
23
  * @default "x"
23
24
  */
24
- xAccessor?: ChartAccessor<TDatum, number>;
25
+ xAccessor?: ChartAccessor<TDatum, number | Date | string>;
25
26
  /**
26
27
  * Field name or function to access y values
27
28
  * @default "y"
@@ -55,7 +56,13 @@ export interface StackedAreaChartProps<TDatum extends Datum = Datum> extends Bas
55
56
  * Color scheme for categorical data or custom colors array
56
57
  * @default "category10"
57
58
  */
58
- colorScheme?: string | string[];
59
+ colorScheme?: string | string[] | Record<string, string>;
60
+ /**
61
+ * Declarative, threshold-aware styling for the stacked series. Ordered
62
+ * `{ when, style }` rules; last applicable rule wins. Per-SERIES. A rule
63
+ * `fill` may be a color or a HatchFill. Layers over the resolved series color.
64
+ */
65
+ styleRules?: StyleRule[];
59
66
  /**
60
67
  * Curve interpolation type
61
68
  * @default "monotoneX"
@@ -99,13 +106,16 @@ export interface StackedAreaChartProps<TDatum extends Datum = Datum> extends Bas
99
106
  * wiggle across series — best for high-cardinality series where
100
107
  * relative shape matters more than absolute values.
101
108
  * - `"silhouette"`: center the stack symmetrically around y=0.
109
+ * - `"diverging"`: series with **positive** y stack above 0; series with
110
+ * **negative** y stack below 0 (signed benefit / risk stacks). Pass
111
+ * negative values for risk layers — do not use absolute magnitudes.
102
112
  *
103
113
  * Mutually exclusive with `normalize` — when `normalize` is true,
104
114
  * baseline is forced to `"zero"`.
105
115
  *
106
116
  * @default "zero"
107
117
  */
108
- baseline?: "zero" | "wiggle" | "silhouette";
118
+ baseline?: "zero" | "wiggle" | "silhouette" | "diverging";
109
119
  /**
110
120
  * Stack order — controls which series sits at the top, middle, or
111
121
  * bottom of the stack. Pair with `baseline: "wiggle"` or
@@ -113,12 +123,14 @@ export interface StackedAreaChartProps<TDatum extends Datum = Datum> extends Bas
113
123
  *
114
124
  * - `"key"` (default): alphabetical by series key. Stable under
115
125
  * streaming (no re-shuffling on data eviction).
126
+ * - `"input"`: first-seen series order within the current data
127
+ * buffer/window; streaming eviction can change this order.
116
128
  * - `"insideOut"`: largest-total series in the middle, smaller series
117
129
  * wrapping outward. The classic d3 streamgraph aesthetic — gives
118
130
  * you a "central anchor" layer with everything else built off of it.
119
131
  * - `"asc"` / `"desc"`: by total ascending / descending.
120
132
  */
121
- stackOrder?: "key" | "insideOut" | "asc" | "desc";
133
+ stackOrder?: "key" | "input" | "insideOut" | "asc" | "desc";
122
134
  /**
123
135
  * Enable hover annotations
124
136
  * @default true
@@ -0,0 +1,49 @@
1
+ import type { Datum } from "../shared/datumTypes";
2
+ /**
3
+ * Crossover-segmented record used by the area pipeline. One row per
4
+ * vertex along either the upper or lower boundary; `__diffSegment` is a
5
+ * group key per segment so the area scene builder produces one polygon
6
+ * per id with the correct fill color.
7
+ */
8
+ export interface SegmentRow {
9
+ __x: number;
10
+ /** Upper boundary y value (max of A, B). The area pipeline reads this. */
11
+ __y: number;
12
+ /** Lower boundary y value (min of A, B) — picked up as per-datum y0. */
13
+ __y0: number;
14
+ /** Segment id. Format: `"seg-<index>-<winner>"`. */
15
+ __diffSegment: string;
16
+ /** Which series is on top in this segment ("A" or "B"). Drives fill. */
17
+ __diffWinner: "A" | "B";
18
+ /** Original A value at this x (or interpolated at crossovers). */
19
+ __valA: number;
20
+ /** Original B value at this x (or interpolated at crossovers). */
21
+ __valB: number;
22
+ /** Original datum (for tooltip lookup at non-crossover vertices). */
23
+ __sourceDatum?: Datum;
24
+ }
25
+ /**
26
+ * Walk sorted data, splitting at each A↔B crossover. Inserts an
27
+ * interpolated vertex on BOTH sides of every crossover so adjacent
28
+ * segments meet at a zero-width point (no jagged edges).
29
+ *
30
+ * Non-finite rows are skipped; the algorithm tracks the most recent
31
+ * VALID non-tie row (not the index neighbor) for crossover detection,
32
+ * so a non-finite gap doesn't drop a crossover that straddles it.
33
+ *
34
+ * Tie rows (a === b) are handled distinctly from non-tie rows:
35
+ *
36
+ * - When a tie row sits BETWEEN two non-tie rows with the SAME
37
+ * winner, the tie is emitted in that winner's segment as a
38
+ * zero-width vertex.
39
+ * - When a tie row sits between non-tie rows with DIFFERENT winners,
40
+ * the FIRST tie of the run becomes the crossover vertex. The old
41
+ * segment closes at the tie's x, the new segment opens at the same
42
+ * point, and any subsequent tie rows (multi-tie runs) carry into
43
+ * the new segment as zero-width vertices.
44
+ *
45
+ * This preserves the data's actual zero-difference point: if the user
46
+ * supplied a tie row explicitly, the fill switches color exactly at
47
+ * that x rather than at a linear-interpolated x that ignored the tie.
48
+ */
49
+ export declare function computeDifferenceSegments<TDatum extends Datum>(raw: TDatum[], getX: (d: TDatum) => number, getA: (d: TDatum) => number, getB: (d: TDatum) => number): SegmentRow[];
@@ -0,0 +1,12 @@
1
+ import type { D3BrushEvent } from "d3-brush";
2
+ import type { Datum } from "../shared/datumTypes";
3
+ export interface ScatterplotMatrixHoverInfo {
4
+ datum: Datum;
5
+ xField: string;
6
+ yField: string;
7
+ colIndex: number;
8
+ rowIndex: number;
9
+ px: number;
10
+ py: number;
11
+ }
12
+ export declare function isTwoDimensionalBrushSelection(selection: D3BrushEvent<Datum>["selection"]): selection is [[number, number], [number, number]];
@@ -0,0 +1,97 @@
1
+ import * as React from "react";
2
+ export type SentenceFilterPrimitive = string | number | boolean | null;
3
+ export type SentenceFilterValue = SentenceFilterPrimitive | string[] | number[] | [number, number];
4
+ export interface SentenceFilterOption<T = SentenceFilterPrimitive> {
5
+ value: T;
6
+ label: React.ReactNode;
7
+ description?: React.ReactNode;
8
+ count?: number;
9
+ disabled?: boolean;
10
+ keywords?: string[];
11
+ }
12
+ export interface SentenceFilterBaseDefinition<T = SentenceFilterValue> {
13
+ label: string;
14
+ description?: string;
15
+ disabled?: boolean;
16
+ allowClear?: boolean;
17
+ emptyLabel?: React.ReactNode;
18
+ accent?: string;
19
+ formatValue?: (value: T, filters: Record<string, SentenceFilterValue>) => React.ReactNode;
20
+ getAccessibleValue?: (value: T, filters: Record<string, SentenceFilterValue>) => string;
21
+ }
22
+ export interface SentenceFilterSelectDefinition extends SentenceFilterBaseDefinition {
23
+ type: "select";
24
+ options: SentenceFilterOption[];
25
+ searchable?: boolean;
26
+ }
27
+ export interface SentenceFilterMultiSelectDefinition extends SentenceFilterBaseDefinition {
28
+ type: "multiselect";
29
+ options: SentenceFilterOption[];
30
+ searchable?: boolean;
31
+ conjunction?: "and" | "or";
32
+ }
33
+ export interface SentenceFilterNumberDefinition extends SentenceFilterBaseDefinition<number> {
34
+ type: "number";
35
+ min?: number;
36
+ max?: number;
37
+ step?: number;
38
+ inputMode?: "input" | "slider" | "both";
39
+ }
40
+ export interface SentenceFilterRangeDefinition extends SentenceFilterBaseDefinition<[number, number]> {
41
+ type: "range";
42
+ min: number;
43
+ max: number;
44
+ step?: number;
45
+ }
46
+ export interface SentenceFilterToggleDefinition extends SentenceFilterBaseDefinition<boolean> {
47
+ type: "toggle";
48
+ trueLabel?: React.ReactNode;
49
+ falseLabel?: React.ReactNode;
50
+ }
51
+ export interface SentenceFilterTextDefinition extends SentenceFilterBaseDefinition<string> {
52
+ type: "text";
53
+ suggestions?: SentenceFilterOption<string>[];
54
+ placeholder?: string;
55
+ }
56
+ export type SentenceFilterDefinition = SentenceFilterSelectDefinition | SentenceFilterMultiSelectDefinition | SentenceFilterNumberDefinition | SentenceFilterRangeDefinition | SentenceFilterToggleDefinition | SentenceFilterTextDefinition;
57
+ export interface SentenceFilterChangeMeta {
58
+ key: string;
59
+ previousValue: SentenceFilterValue;
60
+ value: SentenceFilterValue;
61
+ source: "pointer" | "keyboard" | "input" | "clear" | "programmatic";
62
+ }
63
+ export interface SentenceFilterRenderContext {
64
+ key: string;
65
+ value: SentenceFilterValue;
66
+ filters: Record<string, SentenceFilterValue>;
67
+ definition: SentenceFilterDefinition;
68
+ setValue: (value: SentenceFilterValue, source?: SentenceFilterChangeMeta["source"]) => void;
69
+ close: () => void;
70
+ }
71
+ export interface SentenceFilterProps {
72
+ sentence: string;
73
+ /** Controlled filter values. */
74
+ filters?: Record<string, SentenceFilterValue>;
75
+ /** Initial values for the optional uncontrolled form. */
76
+ defaultFilters?: Record<string, SentenceFilterValue>;
77
+ definitions: Record<string, SentenceFilterDefinition>;
78
+ onChange?: (filters: Record<string, SentenceFilterValue>, meta: SentenceFilterChangeMeta) => void;
79
+ as?: React.ElementType;
80
+ className?: string;
81
+ style?: React.CSSProperties;
82
+ size?: "small" | "medium" | "large" | "inherit";
83
+ align?: "start" | "center" | "end";
84
+ wrap?: boolean;
85
+ disabled?: boolean;
86
+ readOnly?: boolean;
87
+ ariaLabel?: string;
88
+ id?: string;
89
+ renderControl?: (context: SentenceFilterRenderContext) => React.ReactNode;
90
+ onOpenChange?: (key: string | null) => void;
91
+ }
92
+ /**
93
+ * An editorial, natural-language filter control. Values are native inline
94
+ * buttons and their editors open in an accessible non-modal dialog.
95
+ */
96
+ export declare function SentenceFilter({ sentence, filters: controlledFilters, defaultFilters, definitions, onChange, as: As, className, style, size, align, wrap, disabled, readOnly, ariaLabel, id, renderControl, onOpenChange, }: SentenceFilterProps): React.ReactElement;
97
+ export default SentenceFilter;
@@ -0,0 +1,24 @@
1
+ import { type VisualizationControlDefinition } from "./controlContract";
2
+ export type ControlAuditStatus = "pass" | "warn" | "fail";
3
+ export interface ControlAuditFinding {
4
+ id: string;
5
+ controlId?: string;
6
+ status: ControlAuditStatus;
7
+ message: string;
8
+ remediation?: string;
9
+ }
10
+ export interface ControlAuditResult {
11
+ ok: boolean;
12
+ findings: ControlAuditFinding[];
13
+ }
14
+ export interface AuditVisualizationControlsOptions {
15
+ controls?: ReadonlyArray<VisualizationControlDefinition>;
16
+ minimumTargetSize?: number;
17
+ }
18
+ /**
19
+ * Audit portable control declarations without requiring a mounted chart. It
20
+ * verifies the invariants an agent or recipe serializer can actually inspect:
21
+ * semantic type, controlled-state target, keyboard path, value text, and
22
+ * minimum target size.
23
+ */
24
+ export declare function auditVisualizationControls({ controls, minimumTargetSize, }: AuditVisualizationControlsOptions): ControlAuditResult;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Frame-neutral semantics shared by SVG, HTML, and declarative visualization
3
+ * controls. This module intentionally has no React, frame, or store imports so
4
+ * it can be included by the small `semiotic/controls` entry point.
5
+ */
6
+ export declare const VISUALIZATION_CONTROL_TYPES: readonly ["value", "threshold", "partition-boundary", "time-window", "range-boundary"];
7
+ export type VisualizationControlType = (typeof VISUALIZATION_CONTROL_TYPES)[number];
8
+ export type VisualizationControlValue = number | [number, number];
9
+ export type ControlObservationPhase = "control-start" | "control-change" | "control-end";
10
+ export type ControlInputSource = "pointer" | "keyboard" | "programmatic";
11
+ /** A machine-readable interaction emitted by a visualization control. */
12
+ export interface ControlObservation {
13
+ type: ControlObservationPhase;
14
+ controlType: VisualizationControlType;
15
+ value: VisualizationControlValue;
16
+ chartType: string;
17
+ timestamp: number;
18
+ controlId?: string;
19
+ chartId?: string;
20
+ source?: ControlInputSource;
21
+ }
22
+ export type ControlObservationCallback = (observation: ControlObservation) => void;
23
+ export interface ControlObservationAdapterOptions {
24
+ controlType: VisualizationControlType;
25
+ controlId?: string;
26
+ chartId?: string;
27
+ chartType?: string;
28
+ onObservation?: ControlObservationCallback;
29
+ }
30
+ /**
31
+ * Creates an adapter for a control implementation. Frame adapters can pass
32
+ * their existing `onObservation`, while standalone controls can omit it.
33
+ */
34
+ export declare function createControlObservationAdapter({ controlType, controlId, chartId, chartType, onObservation, }: ControlObservationAdapterOptions): (phase: ControlObservationPhase, value: VisualizationControlValue, source?: ControlInputSource) => void;
35
+ /**
36
+ * JSON-safe control metadata carried by portable recipes and agent-facing
37
+ * audits. `target` is the controlled state binding, not a pointer handler.
38
+ */
39
+ export interface VisualizationControlDefinition {
40
+ id: string;
41
+ type: VisualizationControlType;
42
+ target: string;
43
+ domain: readonly [number, number];
44
+ label: string;
45
+ valueText: string;
46
+ step?: number;
47
+ keyboard?: "slider" | "buttons" | "native-range";
48
+ alternatives?: readonly string[];
49
+ observations?: readonly ControlObservationPhase[];
50
+ minimumTargetSize?: number;
51
+ annotation?: {
52
+ /** The annotation state key that follows this control's value. */
53
+ target?: string;
54
+ /** A portable template, such as "Threshold: {value}". */
55
+ valueText?: string;
56
+ };
57
+ }
@@ -0,0 +1,74 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import type { ChartConfig } from "../export/chartConfig";
3
+ /**
4
+ * Flint Chart -> Semiotic translator.
5
+ *
6
+ * Flint's public request shape is intentionally small: inline or referenced
7
+ * rows, optional field semantics, and a chart_spec object with chart type,
8
+ * channel encodings, base size, canvas ceiling, and chart properties. This
9
+ * adapter consumes that request as an ecosystem boundary format and emits a
10
+ * Semiotic ChartConfig. It does not call Flint and does not attempt to compile
11
+ * Flint to backend-native specs.
12
+ *
13
+ * Scope (experimental): bar, grouped bar, stacked bar, line, area, scatter,
14
+ * heatmap, pie/donut, histogram, and boxplot with simple channel bindings.
15
+ */
16
+ export type FlintEncodingType = "quantitative" | "nominal" | "ordinal" | "temporal";
17
+ export type FlintAggregate = "count" | "sum" | "average" | "mean";
18
+ export interface FlintSemanticAnnotation {
19
+ semanticType?: string;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface FlintChartEncoding {
23
+ field?: string;
24
+ type?: FlintEncodingType;
25
+ aggregate?: FlintAggregate;
26
+ sortOrder?: "ascending" | "descending";
27
+ sortBy?: string;
28
+ scheme?: string;
29
+ [key: string]: unknown;
30
+ }
31
+ export type FlintEncodingInput = FlintChartEncoding | string;
32
+ export type FlintRawEncodingValue = FlintEncodingInput | FlintEncodingInput[];
33
+ export interface FlintChartSize {
34
+ width: number;
35
+ height: number;
36
+ }
37
+ export interface FlintChartAssemblyInput {
38
+ data: {
39
+ values: Datum[];
40
+ url?: never;
41
+ } | {
42
+ url: string;
43
+ values?: never;
44
+ };
45
+ semantic_types?: Record<string, string | FlintSemanticAnnotation>;
46
+ chart_spec: {
47
+ chartType: string;
48
+ encodings: Record<string, FlintRawEncodingValue>;
49
+ baseSize?: FlintChartSize;
50
+ canvasSize?: FlintChartSize;
51
+ chartProperties?: Record<string, unknown>;
52
+ };
53
+ options?: Record<string, unknown>;
54
+ field_display_names?: Record<string, string>;
55
+ }
56
+ export interface FlintChartConfigMetadata {
57
+ chartType: string;
58
+ semanticTypes?: Record<string, string | FlintSemanticAnnotation>;
59
+ fieldDisplayNames?: Record<string, string>;
60
+ chartProperties?: Record<string, unknown>;
61
+ baseSize?: FlintChartSize;
62
+ canvasSize?: FlintChartSize;
63
+ dataUrl?: string;
64
+ options?: Record<string, unknown>;
65
+ unmappedEncodings?: Record<string, FlintRawEncodingValue>;
66
+ }
67
+ export type FlintChartConfig = ChartConfig & {
68
+ warnings?: string[];
69
+ flint: FlintChartConfigMetadata;
70
+ };
71
+ /**
72
+ * Convert a Flint ChartAssemblyInput into a Semiotic ChartConfig.
73
+ */
74
+ export declare function fromFlintChart(input: FlintChartAssemblyInput): FlintChartConfig;
@@ -1,3 +1,4 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
1
2
  /**
2
3
  * Vega-Lite to Semiotic translator.
3
4
  * Converts a Vega-Lite spec into a Semiotic ChartConfig.
@@ -6,32 +7,32 @@
6
7
  * with basic encodings. No layers, facets, selections, or complex transforms.
7
8
  */
8
9
  import type { ChartConfig } from "../export/chartConfig";
10
+ import type { PortabilityImportResult } from "./portability/result";
9
11
  export interface VegaLiteEncoding {
10
12
  field?: string;
11
13
  type?: "quantitative" | "nominal" | "ordinal" | "temporal";
12
14
  aggregate?: string;
13
15
  scale?: {
14
16
  scheme?: string;
15
- range?: any;
16
- domain?: any;
17
+ range?: Array<string | number>;
18
+ domain?: Array<string | number | boolean | Date>;
17
19
  };
18
20
  axis?: {
19
21
  title?: string;
20
22
  labelAngle?: number;
21
23
  };
22
- value?: any;
24
+ value?: string | number | boolean | null;
23
25
  bin?: boolean | {
24
26
  maxbins?: number;
25
27
  };
26
28
  stack?: boolean | string | null;
27
29
  }
28
30
  export interface VegaLiteSpec {
29
- mark: string | {
31
+ mark: string | ({
30
32
  type: string;
31
- [key: string]: any;
32
- };
33
+ } & Datum);
33
34
  data?: {
34
- values?: any[];
35
+ values?: Datum[];
35
36
  url?: string;
36
37
  };
37
38
  encoding?: Record<string, VegaLiteEncoding>;
@@ -40,9 +41,45 @@ export interface VegaLiteSpec {
40
41
  title?: string | {
41
42
  text: string;
42
43
  };
43
- transform?: any[];
44
- [key: string]: any;
44
+ transform?: Datum[];
45
+ layer?: VegaLiteSpec[];
46
+ hconcat?: VegaLiteSpec[];
47
+ vconcat?: VegaLiteSpec[];
48
+ concat?: VegaLiteSpec[];
49
+ facet?: Datum;
50
+ repeat?: Datum | string[];
51
+ params?: Datum[];
52
+ selection?: Datum;
53
+ usermeta?: Datum & {
54
+ idid?: Datum;
55
+ };
45
56
  }
57
+ /** Strictness for the typed, experimental Vega-Lite import result. */
58
+ export interface FromVegaLiteOptions {
59
+ /**
60
+ * Strict is the safe default: unsupported composition or marks return a
61
+ * typed refusal instead of a plausible fallback chart. `lossy` retains the
62
+ * legacy fallback behavior, but reports every known loss explicitly.
63
+ */
64
+ mode?: "strict" | "lossy";
65
+ }
66
+ /** Typed result for the experimental, loss-aware Vega-Lite importer. */
67
+ export type VegaLiteImportResult = PortabilityImportResult<ChartConfig>;
68
+ /**
69
+ * Recover the one base view emitted by attachIDIDAnnotations(). This is
70
+ * intentionally narrow: arbitrary Vega-Lite layer composition remains
71
+ * unsupported and must not be guessed as a chart configuration.
72
+ */
73
+ export declare function unwrapIDIDEnrichedVegaLiteSpec(spec: VegaLiteSpec): VegaLiteSpec;
46
74
  export declare function fromVegaLite(spec: VegaLiteSpec): ChartConfig & {
47
75
  warnings?: string[];
48
76
  };
77
+ /**
78
+ * Strict, loss-aware Vega-Lite import.
79
+ *
80
+ * `fromVegaLite()` remains the stable compatibility helper and therefore
81
+ * preserves its historical fallback behavior. New portability integrations
82
+ * should use this result API, whose default is to refuse unsupported semantics
83
+ * rather than return a chart that merely looks plausible.
84
+ */
85
+ export declare function fromVegaLiteResult(spec: VegaLiteSpec, options?: FromVegaLiteOptions): VegaLiteImportResult;
@@ -9,6 +9,9 @@
9
9
  * surface is proven against real consumers.
10
10
  */
11
11
  export { IDID_SPEC_VERSION, BUILTIN_INTENT_IDS, validatePortableCapability, validatePortableAudienceProfile, validatePortableAnnotation, } from "./spec";
12
- export type { BuiltInIntentId, PortableIntentId, PortableChartRubric, PortableChartVariant, PortableChartCapability, PortableReceptionModality, PortableAudienceTarget, PortableAudienceProfile, PortableAnnotationActorKind, PortableAnnotationSource, PortableAnnotationBasis, PortableAnnotationProvenance, PortableAnnotationFreshness, PortableAnnotationStatus, PortableAnnotationAnchor, PortableAnnotationLifecycle, PortableAnnotated, ValidationResult, } from "./spec";
13
- export { toVegaLite, attachIDID, readIDID, attachIDIDAnnotations, readIDIDAnnotations, } from "./vegaLite";
14
- export type { IDIDVegaLiteMeta } from "./vegaLite";
12
+ export type { BuiltInIntentId, PortableIntentId, PortableChartRubric, PortableChartVariant, PortableMobileInteractionCapability, PortableMobileLabelCapability, PortableMobileCustomCapability, PortableMobileCapability, PortableChartCapability, PortableReceptionModality, PortableAudienceTarget, PortableAudienceProfile, PortableAnnotationActorKind, PortableAnnotationSource, PortableAnnotationBasis, PortableAnnotationProvenance, PortableAnnotationFreshness, PortableAnnotationStatus, PortableAnnotationAnchor, PortableAnnotationLifecycle, PortableAnnotated, ValidationResult, } from "./spec";
13
+ export { toVegaLite, toVegaLiteResult, attachIDID, readIDID, attachIDIDAnnotations, readIDIDAnnotations, } from "./vegaLite";
14
+ export type { IDIDVegaLiteMeta, ToVegaLiteOptions, VegaLiteExportResult, } from "./vegaLite";
15
+ export { fromVegaLiteResult, unwrapIDIDEnrichedVegaLiteSpec, } from "../fromVegaLite";
16
+ export type { FromVegaLiteOptions, VegaLiteImportResult, } from "../fromVegaLite";
17
+ export type { PortabilityStatus, PortabilityDiagnosticSeverity, PortabilityDiagnostic, PortabilityLoss, PortabilityProvenance, PortabilityResult, PortabilityImportResult, PortabilityExportResult, } from "./result";
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared result vocabulary for experimental portability adapters.
3
+ *
4
+ * An adapter must make a supported translation, a known loss, and a refusal
5
+ * distinguishable to callers. Warnings attached to an otherwise plausible
6
+ * chart are not sufficient: another renderer cannot infer that it should not
7
+ * render an approximation.
8
+ */
9
+ /** Whether an adapter translated exactly, translated with declared loss, or refused. */
10
+ export type PortabilityStatus = "success" | "lossy" | "refused";
11
+ export type PortabilityDiagnosticSeverity = "warning" | "error";
12
+ /** A stable, machine-readable adapter diagnostic. */
13
+ export interface PortabilityDiagnostic {
14
+ code: string;
15
+ severity: PortabilityDiagnosticSeverity;
16
+ message: string;
17
+ path?: string;
18
+ }
19
+ /** A declared semantic loss for an explicitly lossy translation. */
20
+ export interface PortabilityLoss {
21
+ code: string;
22
+ message: string;
23
+ path?: string;
24
+ }
25
+ /**
26
+ * Enough information to identify an adapter operation without coupling this
27
+ * library-neutral result shape to a particular renderer or chart config.
28
+ */
29
+ export interface PortabilityProvenance {
30
+ adapter: string;
31
+ direction: "import" | "export";
32
+ sourceFormat: string;
33
+ targetFormat: string;
34
+ specVersion?: string;
35
+ /** Metadata that travelled with the source artifact, when it is serializable. */
36
+ metadata?: Record<string, unknown>;
37
+ }
38
+ /** Base result shared by adapters that import and export different artifact types. */
39
+ export interface PortabilityResult {
40
+ status: PortabilityStatus;
41
+ diagnostics: readonly PortabilityDiagnostic[];
42
+ lossReport: readonly PortabilityLoss[];
43
+ provenance: PortabilityProvenance;
44
+ }
45
+ /** Result shape for adapters that produce a Semiotic configuration. */
46
+ export interface PortabilityImportResult<TConfig> extends PortabilityResult {
47
+ config?: TConfig;
48
+ }
49
+ /** Result shape for adapters that produce a foreign artifact or spec. */
50
+ export interface PortabilityExportResult<TArtifact> extends PortabilityResult {
51
+ artifact?: TArtifact;
52
+ }
@@ -40,6 +40,35 @@ export interface PortableChartVariant {
40
40
  /** Implementation-specific props; opaque to the spec. */
41
41
  props?: Record<string, unknown>;
42
42
  }
43
+ export interface PortableMobileInteractionCapability {
44
+ primary?: string;
45
+ alternatives?: ReadonlyArray<string>;
46
+ hoverFallback?: string;
47
+ targetSize?: number;
48
+ }
49
+ export interface PortableMobileLabelCapability {
50
+ strategy?: string;
51
+ minFontSize?: number;
52
+ }
53
+ export interface PortableMobileCustomCapability {
54
+ dataBearingSceneNodes?: boolean;
55
+ stableIds?: boolean;
56
+ navigationGranularity?: string;
57
+ }
58
+ export interface PortableMobileCapability {
59
+ strategy?: string;
60
+ responsive?: boolean;
61
+ supportsResponsiveLayout?: boolean;
62
+ breakpoints?: ReadonlyArray<number>;
63
+ minViewportWidth?: number;
64
+ maxMarks?: number;
65
+ maxAnnotations?: number;
66
+ minimumHitTarget?: number;
67
+ summary?: boolean | string;
68
+ interaction?: PortableMobileInteractionCapability;
69
+ labels?: PortableMobileLabelCapability;
70
+ custom?: PortableMobileCustomCapability;
71
+ }
43
72
  export interface PortableChartCapability {
44
73
  /** Stable chart name (e.g. "BarChart"). */
45
74
  component: string;
@@ -53,6 +82,8 @@ export interface PortableChartCapability {
53
82
  variants?: ReadonlyArray<PortableChartVariant>;
54
83
  /** Static, audience-independent caveats. */
55
84
  caveats?: ReadonlyArray<string>;
85
+ /** Phone-specific design contract for mobile audits and responsive adapters. */
86
+ mobile?: PortableMobileCapability;
56
87
  tags?: ReadonlyArray<string>;
57
88
  }
58
89
  export type PortableReceptionModality = "visual" | "screen-reader" | "sonified" | "agent";
@@ -16,14 +16,32 @@
16
16
  import type { ChartConfig } from "../../export/chartConfig";
17
17
  import type { VegaLiteSpec } from "../fromVegaLite";
18
18
  import type { PortableAnnotated, PortableAudienceProfile, PortableChartCapability } from "./spec";
19
+ import type { PortabilityExportResult } from "./result";
20
+ /** Options for the strict, typed outbound Vega-Lite adapter. */
21
+ export interface ToVegaLiteOptions {
22
+ /**
23
+ * Allow a documented approximation. The default is false, so a caller never
24
+ * receives a visually plausible but semantically different Vega-Lite spec by
25
+ * accident.
26
+ */
27
+ allowLossy?: boolean;
28
+ }
29
+ /** Typed result for Vega-Lite export. A refused result deliberately has no spec. */
30
+ export interface VegaLiteExportResult extends PortabilityExportResult<VegaLiteSpec> {
31
+ spec?: VegaLiteSpec;
32
+ }
33
+ /**
34
+ * Translate a Semiotic ChartConfig into Vega-Lite through an explicit result.
35
+ * Unsupported components are refused by default; pass `allowLossy` only when
36
+ * the caller has chosen to accept the listed semantic loss.
37
+ */
38
+ export declare function toVegaLiteResult(config: ChartConfig, options?: ToVegaLiteOptions): VegaLiteExportResult;
19
39
  /**
20
- * Translate a Semiotic ChartConfig into a Vega-Lite spec. Covers the families
21
- * `fromVegaLite` covers, so the pair round-trips. Constructs unsupported by
22
- * Vega-Lite's single-view core surface a warning rather than a wrong spec.
40
+ * Convenience wrapper for the supported subset. Returns undefined on refusal
41
+ * rather than synthesizing a placeholder chart; use `toVegaLiteResult()` when
42
+ * a caller needs the structured diagnostic and loss report.
23
43
  */
24
- export declare function toVegaLite(config: ChartConfig): VegaLiteSpec & {
25
- warnings?: string[];
26
- };
44
+ export declare function toVegaLite(config: ChartConfig, options?: ToVegaLiteOptions): VegaLiteSpec | undefined;
27
45
  /** The metadata block that rides under `usermeta.idid`. */
28
46
  export interface IDIDVegaLiteMeta {
29
47
  specVersion: string;
@@ -11,6 +11,17 @@ export interface ChartConfig {
11
11
  createdAt: string;
12
12
  /** Optional serialized selection/brush state */
13
13
  selections?: SerializedSelections;
14
+ /** Present for portable/local recipe configs. */
15
+ recipeId?: string;
16
+ portable?: boolean;
17
+ reason?: string;
18
+ warnings?: string[];
19
+ manifest?: {
20
+ name: string;
21
+ intents: string[];
22
+ audience?: string[];
23
+ frameFamily: string;
24
+ };
14
25
  }
15
26
  export interface ToConfigOptions {
16
27
  /** Include data arrays in the config. Default: true */
@@ -205,6 +205,17 @@ export interface RealtimeFrameHandle {
205
205
  * export a chart-specific handle (e.g. `LikertChartHandle`) that
206
206
  * extends this interface and narrows `getScales()`. */
207
207
  getScales?(): unknown | null;
208
+ /** The most recent custom layout result (as returned by the chart's
209
+ * `layout(ctx)` function) — host readback so a page that needs the computed
210
+ * placement (stats, inspectors) doesn't re-run the layout function itself.
211
+ * Null before the first layout completes or when the chart has no custom
212
+ * layout. A failed retry can retain the prior result; use
213
+ * `getLayoutFailure()` to distinguish recovery. Typed as `unknown` at this shared boundary; the family frame
214
+ * handles narrow it to their `LayoutResult` shape. */
215
+ getCustomLayout?(): unknown | null;
216
+ /** Latest structured custom-layout failure. Family frame handles narrow this
217
+ * to `CustomLayoutFailureDiagnostic`; absent on frames without layouts. */
218
+ getLayoutFailure?(): unknown | null;
208
219
  }
209
220
  export interface RealtimeScales {
210
221
  time: ScaleLinear<number, number>;