semiotic 3.7.4 → 3.8.0
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.
- package/CLAUDE.md +60 -15
- package/README.md +135 -24
- package/agent-skill/semiotic-charts/SKILL.md +146 -0
- package/ai/cli.js +133 -45
- package/ai/componentMetadata.cjs +6 -1
- package/ai/dist/mcp-server.js +1651 -154
- package/ai/examples.md +174 -0
- package/ai/schema.json +2934 -517
- package/ai/surface-manifest.json +200 -0
- package/ai/system-prompt.md +19 -3
- package/dist/components/Annotation.d.ts +4 -0
- package/dist/components/CategoryColors.d.ts +1 -1
- package/dist/components/ChartContainer.d.ts +91 -0
- package/dist/components/ChartGrid.d.ts +11 -1
- package/dist/components/CircularBrush.d.ts +61 -0
- package/dist/components/ContextLayout.d.ts +5 -1
- package/dist/components/DataSummaryContext.d.ts +1 -0
- package/dist/components/DirectManipulationControl.d.ts +63 -0
- package/dist/components/LinkedCharts.d.ts +3 -1
- package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
- package/dist/components/MobileChartContainer.d.ts +51 -0
- package/dist/components/MobileStandardControls.d.ts +68 -0
- package/dist/components/SmallMultipleChart.d.ts +84 -0
- package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
- package/dist/components/ai/ChartRecipe.d.ts +16 -0
- package/dist/components/ai/IntentMark.d.ts +15 -0
- package/dist/components/ai/chartCapabilities.d.ts +8 -1
- package/dist/components/ai/chartCapabilityTypes.d.ts +42 -1
- package/dist/components/ai/chartClinic.d.ts +91 -0
- package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
- package/dist/components/ai/chartRecipes.d.ts +278 -0
- package/dist/components/ai/dataPitfallsBridge.d.ts +203 -0
- package/dist/components/ai/dataQualityBridge.d.ts +201 -0
- package/dist/components/ai/describeChart.d.ts +9 -0
- package/dist/components/ai/describeRecipeChart.d.ts +16 -0
- package/dist/components/ai/generativeChart.d.ts +170 -0
- package/dist/components/ai/intentManifest.d.ts +62 -0
- package/dist/components/ai/navigationTree.d.ts +3 -0
- package/dist/components/ai/observedSceneAudit.d.ts +72 -0
- package/dist/components/ai/readerGrounding.d.ts +83 -0
- package/dist/components/ai/recipeCapability.d.ts +8 -0
- package/dist/components/ai/recipeNavigation.d.ts +13 -0
- package/dist/components/ai/recipeSemantics.d.ts +11 -0
- package/dist/components/ai/repairChartConfig.d.ts +9 -0
- package/dist/components/ai/suggestCharts.d.ts +11 -1
- package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
- package/dist/components/charts/custom/NetworkCustomChart.d.ts +22 -3
- package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
- package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
- package/dist/components/charts/geo/FlowMap.d.ts +1 -1
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
- package/dist/components/charts/geo/index.d.ts +2 -0
- package/dist/components/charts/index.d.ts +29 -1
- package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
- package/dist/components/charts/network/CirclePack.d.ts +1 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
- package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
- package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
- package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
- package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
- package/dist/components/charts/network/Treemap.d.ts +1 -1
- package/dist/components/charts/network/useForceLayout.d.ts +17 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
- package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
- package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
- package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/SwarmPlot.d.ts +8 -1
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
- package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
- package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
- package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
- package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
- package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
- package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
- package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
- package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
- package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
- package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
- package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
- package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
- package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
- package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
- package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
- package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
- package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
- package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
- package/dist/components/charts/physics/gauntletController.d.ts +73 -0
- package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
- package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
- package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
- package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
- package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
- package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
- package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
- package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
- package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
- package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
- package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
- package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
- package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +30 -1
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
- package/dist/components/charts/realtime/aggregate.d.ts +51 -0
- package/dist/components/charts/realtime/eventTime.d.ts +26 -0
- package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
- package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
- package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
- package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
- package/dist/components/charts/shared/colorContrast.d.ts +3 -0
- package/dist/components/charts/shared/colorPalettes.d.ts +2 -0
- package/dist/components/charts/shared/colorUtils.d.ts +17 -13
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
- package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
- package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
- package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
- package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
- package/dist/components/charts/shared/hooks.d.ts +28 -5
- package/dist/components/charts/shared/minMax.d.ts +3 -0
- package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/radialGeometry.d.ts +0 -18
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
- package/dist/components/charts/shared/smartTooltip.d.ts +27 -0
- package/dist/components/charts/shared/statisticalOverlays.d.ts +35 -0
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
- package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +2 -0
- package/dist/components/charts/shared/types.d.ts +49 -1
- package/dist/components/charts/shared/useChartSetup.d.ts +10 -3
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +15 -6
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
- package/dist/components/charts/shared/validateChartData.d.ts +1 -1
- package/dist/components/charts/shared/validationMap.d.ts +0 -11
- package/dist/components/charts/xy/AreaChart.d.ts +1 -1
- package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
- package/dist/components/charts/xy/LineChart.d.ts +1 -1
- package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
- package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
- package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
- package/dist/components/charts/xy/Scatterplot.d.ts +10 -1
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
- package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
- package/dist/components/controls/controlAudit.d.ts +24 -0
- package/dist/components/controls/controlContract.d.ts +57 -0
- package/dist/components/data/fromArrow.d.ts +54 -0
- package/dist/components/data/fromFlintChart.d.ts +74 -0
- package/dist/components/data/fromMermaid.d.ts +47 -0
- package/dist/components/data/fromObservablePlot.d.ts +69 -0
- package/dist/components/data/fromVegaLite.d.ts +27 -0
- package/dist/components/data/portability/index.d.ts +17 -0
- package/dist/components/data/portability/result.d.ts +52 -0
- package/dist/components/data/portability/spec.d.ts +160 -0
- package/dist/components/data/portability/vegaLite.d.ts +80 -0
- package/dist/components/export/chartConfig.d.ts +11 -0
- package/dist/components/realtime/ReorderBuffer.d.ts +54 -0
- package/dist/components/realtime/RunningStats.d.ts +66 -0
- package/dist/components/realtime/WindowAccumulator.d.ts +105 -0
- package/dist/components/realtime/parseWindowDuration.d.ts +12 -0
- package/dist/components/realtime/types.d.ts +11 -0
- package/dist/components/recipes/annotationLayout.d.ts +29 -0
- package/dist/components/recipes/axisFixedForce.d.ts +119 -0
- package/dist/components/recipes/boba.d.ts +23 -0
- package/dist/components/recipes/customTooltip.d.ts +31 -0
- package/dist/components/recipes/cyclical.d.ts +39 -0
- package/dist/components/recipes/edgeRouter.d.ts +103 -0
- package/dist/components/recipes/forceLayout.d.ts +48 -0
- package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
- package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
- package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
- package/dist/components/recipes/gofishIR.d.ts +215 -0
- package/dist/components/recipes/gofishIRExamples.d.ts +38 -0
- package/dist/components/recipes/intervalLanes.d.ts +87 -0
- package/dist/components/recipes/intervals.d.ts +80 -0
- package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
- package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
- package/dist/components/recipes/mermaidDag.d.ts +44 -0
- package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
- package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
- package/dist/components/recipes/networkAnalysis.d.ts +102 -0
- package/dist/components/recipes/networkLayouts.d.ts +83 -0
- package/dist/components/recipes/packedClusterMatrix.d.ts +166 -0
- package/dist/components/recipes/physics.d.ts +122 -0
- package/dist/components/recipes/physicsReference.d.ts +102 -0
- package/dist/components/recipes/processAggregates.d.ts +32 -0
- package/dist/components/recipes/processChrome.d.ts +67 -0
- package/dist/components/recipes/processJourney.d.ts +54 -0
- package/dist/components/recipes/processPhysics.d.ts +300 -0
- package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
- package/dist/components/recipes/radialCoords.d.ts +69 -0
- package/dist/components/recipes/random.d.ts +2 -0
- package/dist/components/recipes/recipeChrome.d.ts +191 -0
- package/dist/components/recipes/recipeGlyph.d.ts +42 -0
- package/dist/components/recipes/recipeLegend.d.ts +109 -0
- package/dist/components/recipes/recipeUtils.d.ts +157 -0
- package/dist/components/recipes/runs.d.ts +59 -0
- package/dist/components/recipes/tokenEncoding.d.ts +157 -0
- package/dist/components/recipes/tokenLayer.d.ts +79 -0
- package/dist/components/recipes/unitize.d.ts +108 -0
- package/dist/components/recipes/vector.d.ts +28 -0
- package/dist/components/recipes/waffle.d.ts +43 -0
- package/dist/components/semiotic-ai-core.d.ts +47 -0
- package/dist/components/semiotic-ai.d.ts +52 -4
- package/dist/components/semiotic-controls.d.ts +18 -0
- package/dist/components/semiotic-data.d.ts +2 -0
- package/dist/components/semiotic-experimental.d.ts +49 -0
- package/dist/components/semiotic-geo.d.ts +11 -0
- package/dist/components/semiotic-network.d.ts +14 -1
- package/dist/components/semiotic-ordinal.d.ts +10 -0
- package/dist/components/semiotic-physics-matter.d.ts +10 -0
- package/dist/components/semiotic-physics-rapier.d.ts +9 -0
- package/dist/components/semiotic-physics.d.ts +56 -0
- package/dist/components/semiotic-realtime-core.d.ts +34 -0
- package/dist/components/semiotic-realtime-react.d.ts +10 -0
- package/dist/components/semiotic-realtime.d.ts +4 -22
- package/dist/components/semiotic-recipes-core.d.ts +92 -0
- package/dist/components/semiotic-recipes-react.d.ts +7 -0
- package/dist/components/semiotic-recipes.d.ts +4 -26
- package/dist/components/semiotic-server-edge.d.ts +8 -0
- package/dist/components/semiotic-server-node.d.ts +5 -0
- package/dist/components/semiotic-server.d.ts +2 -2
- package/dist/components/semiotic-themes-core.d.ts +53 -0
- package/dist/components/semiotic-themes-react.d.ts +4 -0
- package/dist/components/semiotic-themes.d.ts +6 -74
- package/dist/components/semiotic-utils-core.d.ts +46 -0
- package/dist/components/semiotic-utils-react.d.ts +5 -0
- package/dist/components/semiotic-utils.d.ts +3 -39
- package/dist/components/semiotic-xy.d.ts +10 -0
- package/dist/components/semiotic.d.ts +39 -7
- package/dist/components/server/animatedGif.d.ts +36 -0
- package/dist/components/server/renderEvidence.d.ts +1 -1
- package/dist/components/server/renderToStaticSVG.d.ts +3 -35
- package/dist/components/server/serverChartConfigShared.d.ts +17 -0
- package/dist/components/server/serverChartConfigs.d.ts +19 -9
- package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
- package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
- package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
- package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
- package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
- package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
- package/dist/components/server/staticGeo.d.ts +4 -0
- package/dist/components/server/staticLegend.d.ts +1 -1
- package/dist/components/server/staticNetwork.d.ts +8 -0
- package/dist/components/server/staticOrdinal.d.ts +11 -0
- package/dist/components/server/staticPhysics.d.ts +3 -0
- package/dist/components/server/staticSVGChrome.d.ts +110 -0
- package/dist/components/server/staticXY.d.ts +4 -0
- package/dist/components/store/ObservationStore.d.ts +23 -3
- package/dist/components/store/SelectionStore.d.ts +1 -1
- package/dist/components/store/ThemeStore.d.ts +1 -1
- package/dist/components/store/TooltipStore.d.ts +1 -1
- package/dist/components/store/createStore.d.ts +1 -1
- package/dist/components/store/designTokens.d.ts +15 -0
- package/dist/components/store/themeSerialization.d.ts +32 -0
- package/dist/components/store/useChartInterrogation.d.ts +9 -0
- package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
- package/dist/components/stream/FocusRing.d.ts +4 -2
- package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
- package/dist/components/stream/NetworkHtmlMarksLayer.d.ts +44 -0
- package/dist/components/stream/NetworkPipelineStore.d.ts +62 -25
- package/dist/components/stream/NetworkSVGOverlay.d.ts +15 -0
- package/dist/components/stream/OrdinalPipelineStore.d.ts +64 -2
- package/dist/components/stream/PipelineStore.d.ts +100 -162
- package/dist/components/stream/SceneGraph.d.ts +14 -2
- package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
- package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
- package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
- package/dist/components/stream/StreamXYFrame.d.ts +2 -18
- package/dist/components/stream/accessibleDataRows.d.ts +33 -0
- package/dist/components/stream/accessorUtils.d.ts +23 -10
- package/dist/components/stream/brushAccessibility.d.ts +25 -0
- package/dist/components/stream/canvasBackground.d.ts +24 -0
- package/dist/components/stream/canvasSetup.d.ts +4 -1
- package/dist/components/stream/customLayout.d.ts +20 -0
- package/dist/components/stream/customLayoutDiagnostics.d.ts +11 -0
- package/dist/components/stream/customLayoutFailure.d.ts +33 -0
- package/dist/components/stream/customLayoutPalette.d.ts +19 -9
- package/dist/components/stream/customLayoutSelection.d.ts +52 -0
- package/dist/components/stream/frameThemeColors.d.ts +24 -0
- package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
- package/dist/components/stream/geoCartogram.d.ts +17 -0
- package/dist/components/stream/geoCustomLayout.d.ts +59 -0
- package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
- package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
- package/dist/components/stream/geoTypes.d.ts +56 -7
- package/dist/components/stream/glyphDef.d.ts +98 -0
- package/dist/components/stream/hitTarget.d.ts +170 -0
- package/dist/components/stream/hoverUtils.d.ts +3 -0
- package/dist/components/stream/keyboardNav.d.ts +4 -1
- package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
- package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
- package/dist/components/stream/networkBezier.d.ts +10 -0
- package/dist/components/stream/networkColorAccessors.d.ts +49 -0
- package/dist/components/stream/networkCustomLayout.d.ts +66 -1
- package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
- package/dist/components/stream/networkFramePaint.d.ts +43 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
- package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
- package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
- package/dist/components/stream/networkTypes.d.ts +104 -5
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/ordinalCustomLayout.d.ts +17 -1
- package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
- package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/ordinalDomain.d.ts +38 -0
- package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
- package/dist/components/stream/ordinalPulse.d.ts +10 -0
- package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
- package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
- package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -0
- package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +56 -8
- package/dist/components/stream/paintNeeds.d.ts +31 -0
- package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
- package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
- package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
- package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
- package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
- package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
- package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
- package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
- package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
- package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
- package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
- package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
- package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
- package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
- package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
- package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
- package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
- package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
- package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
- package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
- package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
- package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
- package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
- package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
- package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
- package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
- package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
- package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
- package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
- package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
- package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
- package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
- package/dist/components/stream/pipelineConfig.d.ts +177 -0
- package/dist/components/stream/pipelineDecay.d.ts +20 -2
- package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
- package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
- package/dist/components/stream/pipelinePulse.d.ts +16 -2
- package/dist/components/stream/pipelineRibbons.d.ts +41 -0
- package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
- package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
- package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
- package/dist/components/stream/pipelineTransitions.d.ts +2 -0
- package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
- package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
- package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
- package/dist/components/stream/renderers/networkSymbolRenderer.d.ts +2 -0
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/renderers/symbolCanvasRenderer.d.ts +2 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
- package/dist/components/stream/stalenessBands.d.ts +28 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -0
- package/dist/components/stream/symbolPath.d.ts +24 -0
- package/dist/components/stream/types.d.ts +206 -9
- package/dist/components/stream/useFrame.d.ts +21 -2
- package/dist/components/stream/useHydration.d.ts +6 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
- package/dist/components/stream/useStalenessCheck.d.ts +6 -1
- package/dist/components/stream/workerModuleUrl.d.ts +10 -0
- package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
- package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/xyCrosshair.d.ts +11 -0
- package/dist/components/stream/xyDateTicks.d.ts +9 -0
- package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/types.d.ts +9 -4
- package/dist/controls.min.js +2 -0
- package/dist/controls.module.min.js +2 -0
- package/dist/forceLayoutWorker.js +1 -0
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics-matter.min.js +1 -0
- package/dist/physics-matter.module.min.js +1 -0
- package/dist/physics-rapier.min.js +1 -0
- package/dist/physics-rapier.module.min.js +1 -0
- package/dist/physics.min.js +2 -0
- package/dist/physics.module.min.js +2 -0
- package/dist/physicsWorker.js +1 -0
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
- package/dist/semiotic-ai-core.d.ts +47 -0
- package/dist/semiotic-ai-core.min.js +1 -0
- package/dist/semiotic-ai-core.module.min.js +1 -0
- package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
- package/dist/semiotic-ai.d.ts +52 -4
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
- package/dist/semiotic-controls.d.ts +18 -0
- package/dist/semiotic-data.d.ts +2 -0
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental.d.ts +49 -0
- package/dist/semiotic-experimental.min.js +1 -0
- package/dist/semiotic-experimental.module.min.js +1 -0
- package/dist/semiotic-geo.d.ts +11 -0
- package/dist/semiotic-network.d.ts +14 -1
- package/dist/semiotic-ordinal.d.ts +10 -0
- package/dist/semiotic-physics-matter.d.ts +10 -0
- package/dist/semiotic-physics-rapier.d.ts +9 -0
- package/dist/semiotic-physics.d.ts +56 -0
- package/dist/semiotic-realtime-core.d.ts +34 -0
- package/dist/semiotic-realtime-core.min.js +1 -0
- package/dist/semiotic-realtime-core.module.min.js +1 -0
- package/dist/semiotic-realtime-react.d.ts +10 -0
- package/dist/semiotic-realtime-react.min.js +2 -0
- package/dist/semiotic-realtime-react.module.min.js +2 -0
- package/dist/semiotic-realtime.d.ts +4 -22
- package/dist/semiotic-recipes-core.d.ts +92 -0
- package/dist/semiotic-recipes-core.min.js +1 -0
- package/dist/semiotic-recipes-core.module.min.js +1 -0
- package/dist/semiotic-recipes-react.d.ts +7 -0
- package/dist/semiotic-recipes-react.min.js +2 -0
- package/dist/semiotic-recipes-react.module.min.js +2 -0
- package/dist/semiotic-recipes.d.ts +4 -26
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.d.ts +8 -0
- package/dist/semiotic-server-edge.min.js +1 -0
- package/dist/semiotic-server-edge.module.min.js +1 -0
- package/dist/semiotic-server-node.d.ts +5 -0
- package/dist/semiotic-server-node.min.js +1 -0
- package/dist/semiotic-server-node.module.min.js +1 -0
- package/dist/semiotic-server.d.ts +2 -2
- package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
- package/dist/semiotic-themes-core.d.ts +53 -0
- package/dist/semiotic-themes-core.min.js +1 -0
- package/dist/semiotic-themes-core.module.min.js +1 -0
- package/dist/semiotic-themes-react.d.ts +4 -0
- package/dist/semiotic-themes-react.min.js +2 -0
- package/dist/semiotic-themes-react.module.min.js +2 -0
- package/dist/semiotic-themes.d.ts +6 -74
- package/dist/semiotic-themes.min.js +1 -2
- package/dist/semiotic-themes.module.min.js +1 -2
- package/dist/semiotic-utils-core.d.ts +46 -0
- package/dist/semiotic-utils-core.min.js +1 -0
- package/dist/semiotic-utils-core.module.min.js +1 -0
- package/dist/semiotic-utils-react.d.ts +5 -0
- package/dist/semiotic-utils-react.min.js +2 -0
- package/dist/semiotic-utils-react.module.min.js +2 -0
- package/dist/semiotic-utils.d.ts +3 -39
- package/dist/semiotic-utils.min.js +1 -2
- package/dist/semiotic-utils.module.min.js +1 -2
- package/dist/semiotic-value.min.js +1 -1
- package/dist/semiotic-value.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +10 -0
- package/dist/semiotic.d.ts +39 -7
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
- package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +246 -86
- package/spec/README.md +152 -0
- package/spec/bindings/README.md +35 -0
- package/spec/bindings/vega-lite.mjs +112 -0
- package/spec/v0.1/annotation-provenance.schema.json +127 -0
- package/spec/v0.1/audience-profile.schema.json +67 -0
- package/spec/v0.1/chart-capability.schema.json +186 -0
- package/dist/semiotic-ai-statisticalOverlays-C2PPlmXv.js +0 -1
- package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +0 -1
- package/dist/xy-statisticalOverlays-C2PPlmXv.js +0 -1
|
@@ -1,157 +1,49 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* PipelineStore — stateful pipeline for XY/streaming chart data.
|
|
4
|
+
*
|
|
5
|
+
* Owns: data ingestion (RingBuffer), extent tracking, scale computation,
|
|
6
|
+
* scene layout delegation (via xySceneBuilders/), transition animation,
|
|
7
|
+
* decay/pulse/staleness encoding, and quadtree spatial indexing.
|
|
8
|
+
*
|
|
9
|
+
* Scene building was extracted to xySceneBuilders/ — this store constructs
|
|
10
|
+
* an XYSceneContext and dispatches to the appropriate builder function.
|
|
11
|
+
*
|
|
12
|
+
* Key dependencies:
|
|
13
|
+
* xySceneBuilders/ — per-chartType scene layout (line, area, point, etc.)
|
|
14
|
+
* SceneGraph — node constructors (buildLineNode, buildPointNode, etc.)
|
|
15
|
+
* RingBuffer — sliding window data storage
|
|
16
|
+
* IncrementalExtent — O(1) min/max tracking
|
|
17
|
+
*
|
|
18
|
+
* Consumed by: StreamXYFrame (sole consumer).
|
|
19
|
+
*/
|
|
3
20
|
import { RingBuffer } from "../realtime/RingBuffer";
|
|
4
|
-
import type { Changeset,
|
|
5
|
-
import { type
|
|
6
|
-
import type { ActiveTransition } from "./pipelineTransitionUtils";
|
|
21
|
+
import type { Changeset, StreamScales, StreamLayout, SceneNode } from "./types";
|
|
22
|
+
import { type ActiveTransition } from "./pipelineTransitionUtils";
|
|
7
23
|
import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
extentPadding: number;
|
|
17
|
-
/** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
|
|
18
|
-
scalePadding?: number;
|
|
19
|
-
/** When `"exact"`, the x and y axis domains pin to the literal data
|
|
20
|
-
* min/max — `extentPadding` is skipped so the first and last ticks
|
|
21
|
-
* read as the actual data bounds. Default `"nice"` keeps the existing
|
|
22
|
-
* padded domain so glyphs at the extremes don't clip the plot edge. */
|
|
23
|
-
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
24
|
-
maxCapacity?: number;
|
|
25
|
-
xAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
26
|
-
yAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
27
|
-
timeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
28
|
-
valueAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
29
|
-
colorAccessor?: string | ((d: Datum) => string);
|
|
30
|
-
sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
31
|
-
groupAccessor?: string | ((d: Datum) => string);
|
|
32
|
-
categoryAccessor?: string | ((d: Datum) => string);
|
|
33
|
-
lineDataAccessor?: string;
|
|
34
|
-
xScaleType?: "linear" | "log" | "time";
|
|
35
|
-
yScaleType?: "linear" | "log";
|
|
36
|
-
xExtent?: [number | undefined, number | undefined] | [number];
|
|
37
|
-
yExtent?: [number | undefined, number | undefined] | [number];
|
|
38
|
-
sizeRange?: [number, number];
|
|
39
|
-
binSize?: number;
|
|
40
|
-
normalize?: boolean;
|
|
41
|
-
/** Stacked area baseline mode. Only consulted by stackedarea chart type. */
|
|
42
|
-
baseline?: "zero" | "wiggle" | "silhouette";
|
|
43
|
-
/** Stack order — see StreamXYFrameProps.stackOrder. */
|
|
44
|
-
stackOrder?: "key" | "insideOut" | "asc" | "desc";
|
|
45
|
-
openAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
46
|
-
highAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
47
|
-
lowAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
48
|
-
closeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
49
|
-
candlestickStyle?: CandlestickStyle;
|
|
50
|
-
/** Internal: set by PipelineStore when open/close accessors are both missing */
|
|
51
|
-
candlestickRangeMode?: boolean;
|
|
52
|
-
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
53
|
-
boundsStyle?: any;
|
|
54
|
-
y0Accessor?: string | ((d: Datum) => CoercibleNumber);
|
|
55
|
-
band?: BandConfig | BandConfig[];
|
|
56
|
-
gradientFill?: {
|
|
57
|
-
topOpacity: number;
|
|
58
|
-
bottomOpacity: number;
|
|
59
|
-
} | {
|
|
60
|
-
colorStops: Array<{
|
|
61
|
-
offset: number;
|
|
62
|
-
color: string;
|
|
63
|
-
}>;
|
|
64
|
-
};
|
|
65
|
-
areaGroups?: Set<string>;
|
|
66
|
-
lineGradient?: {
|
|
67
|
-
colorStops: Array<{
|
|
68
|
-
offset: number;
|
|
69
|
-
color: string;
|
|
70
|
-
}>;
|
|
71
|
-
};
|
|
72
|
-
lineStyle?: any;
|
|
73
|
-
pointStyle?: (d: Datum) => Style & {
|
|
74
|
-
r?: number;
|
|
75
|
-
};
|
|
76
|
-
areaStyle?: (d: Datum) => Style;
|
|
77
|
-
swarmStyle?: {
|
|
78
|
-
radius?: number;
|
|
79
|
-
fill?: string;
|
|
80
|
-
opacity?: number;
|
|
81
|
-
stroke?: string;
|
|
82
|
-
strokeWidth?: number;
|
|
83
|
-
};
|
|
84
|
-
waterfallStyle?: {
|
|
85
|
-
positiveColor?: string;
|
|
86
|
-
negativeColor?: string;
|
|
87
|
-
connectorStroke?: string;
|
|
88
|
-
connectorWidth?: number;
|
|
89
|
-
gap?: number;
|
|
90
|
-
stroke?: string;
|
|
91
|
-
strokeWidth?: number;
|
|
92
|
-
};
|
|
93
|
-
colorScheme?: string | string[];
|
|
94
|
-
/** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
|
|
95
|
-
themeCategorical?: string[];
|
|
96
|
-
/**
|
|
97
|
-
* Theme-resolved semantic role colors. Scene builders use these as the
|
|
98
|
-
* default before falling back to hardcoded hex. Populated by the Stream
|
|
99
|
-
* Frame from the in-memory `SemioticTheme.colors` object at render time
|
|
100
|
-
* — the values are concrete hex (or whatever the preset declares), not
|
|
101
|
-
* `var(...)` strings, and so this channel does NOT participate in the
|
|
102
|
-
* DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
|
|
103
|
-
* swapping to a nested provider is how you override these values.
|
|
104
|
-
*
|
|
105
|
-
* Per-scope overrides via CSS custom properties
|
|
106
|
-
* (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
|
|
107
|
-
* values a user explicitly passes through as `var(--...)` strings in
|
|
108
|
-
* chart props — those are resolved via `getComputedStyle` in the
|
|
109
|
-
* canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
|
|
110
|
-
* defaults in this field don't read CSS.
|
|
111
|
-
*/
|
|
112
|
-
themeSemantic?: ThemeSemanticColors;
|
|
113
|
-
/** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
|
|
114
|
-
themeSequential?: string;
|
|
115
|
-
/** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
|
|
116
|
-
themeDiverging?: string;
|
|
117
|
-
barColors?: Record<string, string>;
|
|
118
|
-
/** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
|
|
119
|
-
barStyle?: BarStyle;
|
|
120
|
-
annotations?: Datum[];
|
|
121
|
-
decay?: DecayConfig;
|
|
122
|
-
pulse?: PulseConfig;
|
|
123
|
-
transition?: TransitionConfig;
|
|
124
|
-
/** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
|
|
125
|
-
introAnimation?: boolean;
|
|
126
|
-
staleness?: StalenessConfig;
|
|
127
|
-
heatmapAggregation?: "count" | "sum" | "mean";
|
|
128
|
-
heatmapXBins?: number;
|
|
129
|
-
heatmapYBins?: number;
|
|
130
|
-
showValues?: boolean;
|
|
131
|
-
heatmapValueFormat?: (v: number) => string;
|
|
132
|
-
pointIdAccessor?: string | ((d: Datum) => string);
|
|
133
|
-
curve?: CurveType;
|
|
134
|
-
/** When provided, replaces chart-type dispatch in scene building.
|
|
135
|
-
* Receives a LayoutContext (scales, dimensions, theme, resolveColor)
|
|
136
|
-
* and returns scene nodes plus optional overlays. */
|
|
137
|
-
customLayout?: CustomLayout;
|
|
138
|
-
/** User-supplied config blob threaded through to LayoutContext.config. */
|
|
139
|
-
layoutConfig?: object;
|
|
140
|
-
/** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
|
|
141
|
-
layoutMargin?: MarginType;
|
|
142
|
-
}
|
|
24
|
+
import type { LayoutResult } from "./customLayout";
|
|
25
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
26
|
+
import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
|
|
27
|
+
import { type PipelineConfig } from "./pipelineConfig";
|
|
28
|
+
import type { UpdateResult } from "./pipelineUpdateContract";
|
|
29
|
+
export type { PipelineConfig } from "./pipelineConfig";
|
|
30
|
+
export type { ChangeSet, Invalidation, RevisionSet, UpdateResult, } from "./pipelineUpdateContract";
|
|
31
|
+
export { DEFAULT_GROWING_MAX_CAPACITY, GROWING_CAPACITY_WARN_THRESHOLD } from "./pipelineConfig";
|
|
143
32
|
export declare class PipelineStore {
|
|
144
33
|
private buffer;
|
|
145
34
|
private xExtent;
|
|
146
35
|
private yExtent;
|
|
147
36
|
private config;
|
|
148
37
|
private growingCap;
|
|
38
|
+
private growingCapacityWarned;
|
|
39
|
+
private windowSizeWarned;
|
|
149
40
|
private getX;
|
|
150
41
|
private getY;
|
|
151
42
|
private getGroup;
|
|
152
43
|
private getCategory;
|
|
153
44
|
private getSize;
|
|
154
45
|
private getColor;
|
|
46
|
+
private getSymbol;
|
|
155
47
|
private getY0;
|
|
156
48
|
/** Unified ribbon list — `boundsAccessor` + `band` both compose into
|
|
157
49
|
* this single array (see `resolveRibbons`). Read by the scene
|
|
@@ -196,27 +88,58 @@ export declare class PipelineStore {
|
|
|
196
88
|
private _stackExtentCache;
|
|
197
89
|
/** Monotonic counter incremented on each ingest — used as part of cache keys */
|
|
198
90
|
private _ingestVersion;
|
|
91
|
+
/** Datum→index map for decay/pulse, cached by `_ingestVersion`. */
|
|
92
|
+
private _datumIndexCache;
|
|
199
93
|
/** Cached materialized array from buffer.toArray() — only rebuilt when buffer changes */
|
|
200
94
|
private _bufferArrayCache;
|
|
201
95
|
/** True when the buffer has been mutated since last toArray() call */
|
|
202
96
|
private _bufferDirty;
|
|
203
97
|
private needsFullRebuild;
|
|
204
98
|
private lastLayout;
|
|
99
|
+
private updateResults;
|
|
205
100
|
scales: StreamScales | null;
|
|
206
101
|
scene: SceneNode[];
|
|
207
102
|
version: number;
|
|
208
103
|
/** Overlays returned from customLayout (consumed by StreamXYFrame for SVGOverlay). */
|
|
209
104
|
customLayoutOverlays: import("react").ReactNode;
|
|
105
|
+
/** The most recent custom layout result, exposed for host readback via the
|
|
106
|
+
* frame handle's `getCustomLayout()` — so a page that needs the computed
|
|
107
|
+
* placement (stats, inspectors) doesn't re-run the layout. Null before the
|
|
108
|
+
* first layout or when no custom layout is set. A rerun failure preserves
|
|
109
|
+
* this last successful result when it is safe to do so. */
|
|
110
|
+
lastCustomLayoutResult: LayoutResult | null;
|
|
111
|
+
/** Latest custom-layout failure for frame-handle readback. */
|
|
112
|
+
lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
|
|
113
|
+
/** Set only while `buildSceneNodes` is recovering from a layout exception.
|
|
114
|
+
* `computeScene` uses it to retain the previous scene/scales without applying
|
|
115
|
+
* a new transition, pulse, or decay pass to that retained output. */
|
|
116
|
+
private _customLayoutFailedThisBuild;
|
|
117
|
+
private _customLayoutDiagnosticsWarned;
|
|
118
|
+
/** Per-frame restyle callback from the custom layout result (see LayoutResult.restyle). */
|
|
119
|
+
private _customRestyle;
|
|
120
|
+
/** True when the active custom layout supplied a `restyle`. */
|
|
121
|
+
hasCustomRestyle: boolean;
|
|
122
|
+
/** Base (as-emitted) style per node, so restyle passes don't compound. */
|
|
123
|
+
private _baseStyles;
|
|
210
124
|
/** True when the x accessor returns Date objects (auto-detected on first data ingestion) */
|
|
211
125
|
xIsDate: boolean;
|
|
212
|
-
private
|
|
213
|
-
/** Largest visual point radius in the current scene. The hit tester uses
|
|
214
|
-
* this to widen its quadtree query so points with big radii (bubble) don't
|
|
215
|
-
* fall outside the search region. */
|
|
216
|
-
private _maxPointRadius;
|
|
217
|
-
private static readonly QUADTREE_THRESHOLD;
|
|
126
|
+
private spatialIndex;
|
|
218
127
|
constructor(config: PipelineConfig);
|
|
128
|
+
/**
|
|
129
|
+
* Keep pulse timestamps structurally coupled to the datum ring when pulse
|
|
130
|
+
* is changed after construction. A fresh timestamp ring must be seeded for
|
|
131
|
+
* already-retained data; otherwise the next push would be timestamp index 0
|
|
132
|
+
* while its datum is at the end of the data ring.
|
|
133
|
+
*/
|
|
134
|
+
private syncPulseTimestampBuffer;
|
|
219
135
|
private pushDatumYExtent;
|
|
136
|
+
/**
|
|
137
|
+
* Remove every y-domain contribution made by {@link pushDatumYExtent}.
|
|
138
|
+
* Keeping these paths paired is important: a ribbon/band can extend the
|
|
139
|
+
* visible domain beyond the point itself, so removing or replacing that
|
|
140
|
+
* datum must evict its envelope extrema too.
|
|
141
|
+
*/
|
|
142
|
+
private evictDatumYExtent;
|
|
220
143
|
private rebuildYExtent;
|
|
221
144
|
private rebuildExtents;
|
|
222
145
|
private _lastBoundedInsertsRef;
|
|
@@ -233,20 +156,14 @@ export declare class PipelineStore {
|
|
|
233
156
|
* meaningful — streaming consumers don't pass the same array twice.
|
|
234
157
|
*/
|
|
235
158
|
ingest(changeset: Changeset): boolean;
|
|
159
|
+
/** Additive explicit-result form of {@link ingest}; `ingest()` remains unchanged. */
|
|
160
|
+
ingestWithResult(changeset: Changeset): UpdateResult;
|
|
236
161
|
/**
|
|
237
162
|
* Recompute scales and scene graph for the current buffer contents.
|
|
238
163
|
*/
|
|
239
164
|
computeScene(layout: StreamLayout): void;
|
|
240
|
-
/**
|
|
241
|
-
|
|
242
|
-
* Only built for scatter/bubble charts with >QUADTREE_THRESHOLD points.
|
|
243
|
-
*/
|
|
244
|
-
private rebuildQuadtree;
|
|
245
|
-
/**
|
|
246
|
-
* Get the quadtree spatial index, if available.
|
|
247
|
-
* Returns null when chart type is not scatter/bubble or point count is below threshold.
|
|
248
|
-
*/
|
|
249
|
-
get quadtree(): Quadtree<PointSceneNode> | null;
|
|
165
|
+
/** Get the retained point-scene spatial index, if available. */
|
|
166
|
+
get quadtree(): import("d3-quadtree").Quadtree<import("./types").PointSceneNode> | null;
|
|
250
167
|
/** Largest visual point radius in the current scene. */
|
|
251
168
|
get maxPointRadius(): number;
|
|
252
169
|
/**
|
|
@@ -257,8 +174,12 @@ export declare class PipelineStore {
|
|
|
257
174
|
private buildSceneNodes;
|
|
258
175
|
private resolveBoundsStyle;
|
|
259
176
|
computeDecayOpacity(bufferIndex: number, bufferSize: number): number;
|
|
177
|
+
private getDatumIndexMap;
|
|
260
178
|
private applyDecay;
|
|
261
179
|
private applyPulse;
|
|
180
|
+
/** Refresh pulse fields without rebuilding layout; retained custom scenes stay immutable. */
|
|
181
|
+
refreshPulse(now: number): boolean;
|
|
182
|
+
hasActivePulsesAt(now: number): boolean;
|
|
262
183
|
get hasActivePulses(): boolean;
|
|
263
184
|
private get transitionContext();
|
|
264
185
|
private snapshotPositions;
|
|
@@ -300,13 +221,6 @@ export declare class PipelineStore {
|
|
|
300
221
|
private resolveColorMap;
|
|
301
222
|
private resolveLineStyle;
|
|
302
223
|
private resolveAreaStyle;
|
|
303
|
-
/** Resolve a group name to a color from the cached color map or a dedicated group palette.
|
|
304
|
-
* First checks _colorMapCache (populated by resolveColorMap when colorAccessor is set).
|
|
305
|
-
* Falls back to _groupColorMap (insertion-order, never mutates _colorMapCache).
|
|
306
|
-
*
|
|
307
|
-
* FIFO-evicts the oldest entry when the map exceeds `GROUP_COLOR_MAP_CAP`. The palette index
|
|
308
|
-
* uses `_groupColorCounter` (monotonic, decoupled from map size) so eviction doesn't cause
|
|
309
|
-
* new groups to collide with existing entries on a shrunk map. */
|
|
310
224
|
private resolveGroupColor;
|
|
311
225
|
/**
|
|
312
226
|
* Return a cached materialized array of the buffer contents.
|
|
@@ -316,6 +230,8 @@ export declare class PipelineStore {
|
|
|
316
230
|
*/
|
|
317
231
|
private getBufferArray;
|
|
318
232
|
getData(): Datum[];
|
|
233
|
+
/** Most recent additive update result for revision-aware hosts and tests. */
|
|
234
|
+
getLastUpdateResult(): UpdateResult;
|
|
319
235
|
/**
|
|
320
236
|
* Remove data points by ID. Requires pointIdAccessor to be configured.
|
|
321
237
|
* Returns the removed items. Marks the store dirty for scene rebuild.
|
|
@@ -339,5 +255,27 @@ export declare class PipelineStore {
|
|
|
339
255
|
getXAccessor(): (d: Datum) => number;
|
|
340
256
|
getYAccessor(): (d: Datum) => number;
|
|
341
257
|
getCategoryAccessor(): ((d: Datum) => string) | undefined;
|
|
258
|
+
/** Update the selection the layout reads at the next rebuild, without
|
|
259
|
+
* triggering one. The frame then either repaints (restyle) or rebuilds. */
|
|
260
|
+
setLayoutSelection(selection: CustomLayoutSelection | null): void;
|
|
261
|
+
private applyCustomRestyle;
|
|
262
|
+
/**
|
|
263
|
+
* "Styles changed, repaint the data canvas without rebuilding the scene."
|
|
264
|
+
* Set by {@link restyleScene}; consumed once per frame by the render loop.
|
|
265
|
+
* Kept separate from the dirty flag so a style-only selection change repaints
|
|
266
|
+
* without forcing a layout/scene rebuild (the point of the restyle fast path).
|
|
267
|
+
*/
|
|
268
|
+
private _stylePaintPending;
|
|
269
|
+
/** Consume the style-only repaint signal (see {@link _stylePaintPending}). */
|
|
270
|
+
consumeStylePaintPending(): boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Re-apply the custom layout's `restyle` to the existing scene for
|
|
273
|
+
* `selection`, off each node's base style — no relayout, no quadtree rebuild
|
|
274
|
+
* (positions are unchanged). No-op when the layout supplied no `restyle`.
|
|
275
|
+
* Flags a style-only repaint so the render loop redraws the mutated styles.
|
|
276
|
+
*/
|
|
277
|
+
restyleScene(selection: CustomLayoutSelection | null): void;
|
|
342
278
|
updateConfig(config: Partial<PipelineConfig>): void;
|
|
279
|
+
/** Additive explicit-result form of {@link updateConfig}. */
|
|
280
|
+
updateConfigWithResult(config: Partial<PipelineConfig>): UpdateResult;
|
|
343
281
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
|
|
1
|
+
import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, SymbolSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
|
|
2
|
+
import type { SymbolName } from "./symbolPath";
|
|
2
3
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
3
4
|
export declare function buildLineNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, style: Style, group?: string): LineSceneNode;
|
|
4
5
|
export declare function buildAreaNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, baselineY: number, style: Style, group?: string, y0Get?: (d: Datum) => number): AreaSceneNode;
|
|
5
6
|
/** Per-group-per-x stacked top values, keyed by group then x */
|
|
6
7
|
export type StackedTops = Map<string, Map<number, number>>;
|
|
7
|
-
export type StackBaseline = "zero" | "wiggle" | "silhouette";
|
|
8
|
+
export type StackBaseline = "zero" | "wiggle" | "silhouette" | "diverging";
|
|
8
9
|
/**
|
|
9
10
|
* Compute per-x stack baseline offsets. Shared between scene rendering
|
|
10
11
|
* (`buildStackedAreaNodes`) and extent computation (`PipelineStore`) so
|
|
@@ -16,8 +17,16 @@ export type StackBaseline = "zero" | "wiggle" | "silhouette";
|
|
|
16
17
|
* xValues — sorted unique x values
|
|
17
18
|
* groupKeys — group keys in stacking order (same order both callers use)
|
|
18
19
|
* valueAt — (groupKey, x) → group's value at x (0 if absent)
|
|
20
|
+
*
|
|
21
|
+
* `"diverging"` returns zero offsets — positives and negatives stack from
|
|
22
|
+
* y=0 independently inside {@link buildStackedAreaNodes}.
|
|
19
23
|
*/
|
|
20
24
|
export declare function computeStackOffsets(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number, baseline: StackBaseline): Map<number, number>;
|
|
25
|
+
/**
|
|
26
|
+
* Diverging stack extent: positives accumulate above 0, negatives below.
|
|
27
|
+
* Shared by PipelineStore auto-extent and any host that needs matching bounds.
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeDivergingStackExtent(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number): [number, number];
|
|
21
30
|
export declare function buildStackedAreaNodes(groups: {
|
|
22
31
|
key: string;
|
|
23
32
|
data: Datum[];
|
|
@@ -26,6 +35,9 @@ export declare function buildStackedAreaNodes(groups: {
|
|
|
26
35
|
stackedTops: StackedTops;
|
|
27
36
|
};
|
|
28
37
|
export declare function buildPointNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, r: number, style: Style, pointId?: string): PointSceneNode | null;
|
|
38
|
+
/** Build a {@link SymbolSceneNode} — the glyph sibling of {@link buildPointNode}.
|
|
39
|
+
* `size` is the d3-symbol area (px²); convert from a target radius with πr². */
|
|
40
|
+
export declare function buildSymbolNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, size: number, symbolType: SymbolName, style: Style, pointId?: string): SymbolSceneNode | null;
|
|
29
41
|
export declare function buildRectNode(x: number, y: number, w: number, h: number, style: Style, datum: any, group?: string): RectSceneNode;
|
|
30
42
|
export declare function buildHeatcellNode(x: number, y: number, w: number, h: number, fill: string, datum: any, options?: {
|
|
31
43
|
value?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import type { StreamGeoFrameProps, StreamGeoFrameHandle } from "./geoTypes";
|
|
4
|
-
declare const StreamGeoFrame: React.
|
|
4
|
+
declare const StreamGeoFrame: React.NamedExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
|
|
5
5
|
export default StreamGeoFrame;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import type { StreamNetworkFrameProps, StreamNetworkFrameHandle } from "./networkTypes";
|
|
4
|
-
declare const StreamNetworkFrame: React.
|
|
4
|
+
declare const StreamNetworkFrame: React.NamedExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
|
|
5
5
|
export default StreamNetworkFrame;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle } from "./ordinalTypes";
|
|
4
|
-
declare const StreamOrdinalFrame: React.
|
|
4
|
+
declare const StreamOrdinalFrame: React.NamedExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
|
|
5
5
|
export default StreamOrdinalFrame;
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import type { StreamXYFrameProps, StreamXYFrameHandle } from "./types";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* CSS color string. The naive `${color}${alpha}` concatenation only works
|
|
7
|
-
* when `color` is a 6-char `#rrggbb`; shorthand `#rgb` produces the
|
|
8
|
-
* invalid 5-char `#rgbXX`, which `ctx.strokeStyle`/`fillStyle` silently
|
|
9
|
-
* rejects (falling back to `#000000` — black, invisible on dark themes).
|
|
10
|
-
* The /cookbook/marginal-graphics crosshair invisibility was caused
|
|
11
|
-
* precisely by `--semiotic-text-secondary: "#aaa"` hitting this path.
|
|
12
|
-
*
|
|
13
|
-
* Handles:
|
|
14
|
-
* • 3-char hex (`#abc`) → expanded to 6-char then concatenated
|
|
15
|
-
* • 6-char hex (`#aabbcc`) → concatenated directly
|
|
16
|
-
* • `rgb(...)` → repacked as `rgba(..., a)` with numeric alpha
|
|
17
|
-
* Any other form (named colors, hsl(), oklch(), etc.) falls back to the
|
|
18
|
-
* raw color without alpha — degrades gracefully.
|
|
19
|
-
*/
|
|
20
|
-
export declare function withAlpha(color: string, alphaHex: string): string;
|
|
21
|
-
declare const StreamXYFrame: React.ForwardRefExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
|
|
4
|
+
export { withAlpha } from "./frameThemeColors";
|
|
5
|
+
declare const StreamXYFrame: React.NamedExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
|
|
22
6
|
export default StreamXYFrame;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Structural scene node accepted from any frame family. */
|
|
2
|
+
export type AccessibleSceneNode = {
|
|
3
|
+
type?: unknown;
|
|
4
|
+
datum?: unknown;
|
|
5
|
+
accessibleDatum?: unknown;
|
|
6
|
+
accessibility?: unknown;
|
|
7
|
+
group?: unknown;
|
|
8
|
+
value?: unknown;
|
|
9
|
+
category?: unknown;
|
|
10
|
+
label?: unknown;
|
|
11
|
+
name?: unknown;
|
|
12
|
+
properties?: unknown;
|
|
13
|
+
tableFields?: unknown;
|
|
14
|
+
x?: unknown;
|
|
15
|
+
y?: unknown;
|
|
16
|
+
w?: unknown;
|
|
17
|
+
h?: unknown;
|
|
18
|
+
path?: unknown;
|
|
19
|
+
topPath?: unknown;
|
|
20
|
+
openY?: unknown;
|
|
21
|
+
closeY?: unknown;
|
|
22
|
+
highY?: unknown;
|
|
23
|
+
lowY?: unknown;
|
|
24
|
+
};
|
|
25
|
+
export interface DataRow {
|
|
26
|
+
label: string;
|
|
27
|
+
values: Record<string, string | number>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract user-facing table rows from scene nodes. Geometry is ignored; rich
|
|
31
|
+
* accessibleDatum/tableFields metadata takes precedence over the render datum.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractAllRows(scene: AccessibleSceneNode[]): DataRow[];
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Compare two accessor specs for equivalence.
|
|
3
|
-
* -
|
|
4
|
-
* -
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - Mismatched types or undefined vs defined: not equivalent
|
|
2
|
+
* Compare two accessor specs for equivalence, using **identity** semantics.
|
|
3
|
+
* - String accessors: compared by value (`"value" === "value"`).
|
|
4
|
+
* - Function accessors: compared by reference. Two distinct function objects are
|
|
5
|
+
* NOT equivalent, even when their source text matches.
|
|
6
|
+
* - Mismatched types or `undefined` vs defined: not equivalent.
|
|
8
7
|
*
|
|
9
|
-
* **
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* **Why identity, not source text.** A previous implementation compared
|
|
9
|
+
* `a.toString() === b.toString()` to treat re-created inline arrows
|
|
10
|
+
* (`d => d.value`) as equivalent across renders. That was a correctness bug:
|
|
11
|
+
* `.toString()` compares source text, not captured variables, so two closures
|
|
12
|
+
* with identical source but different bindings — `makeAccessor(1)` vs
|
|
13
|
+
* `makeAccessor(10)` — compared equal, and the store retained a stale
|
|
14
|
+
* domain/scene against a genuinely different accessor. Identity comparison also
|
|
15
|
+
* matches how the frames already decide a config changed
|
|
16
|
+
* (`useStableShallow` compares function props by identity), so the store no
|
|
17
|
+
* longer second-guesses a change the frame already detected.
|
|
18
|
+
*
|
|
19
|
+
* **Consumer contract.** Passing a *new* function accessor (a fresh inline
|
|
20
|
+
* arrow every render) now triggers a rebuild, because the library can no longer
|
|
21
|
+
* prove the new closure is semantically identical. Use a string accessor
|
|
22
|
+
* (always referentially stable) or memoize the function with `useCallback`. For
|
|
23
|
+
* the rare case where a stable function's captured semantics change *without*
|
|
24
|
+
* its identity changing, bump the pipeline config's `accessorRevision` to force
|
|
25
|
+
* re-derivation.
|
|
13
26
|
*/
|
|
14
27
|
export declare function accessorsEquivalent(a: string | ((...args: any[]) => any) | undefined, b: string | ((...args: any[]) => any) | undefined): boolean;
|
|
15
28
|
export type CoercibleNumber = number | Date | string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type BrushKeyboardAction = {
|
|
3
|
+
type: "nudge";
|
|
4
|
+
direction: "left" | "right" | "up" | "down";
|
|
5
|
+
resize: boolean;
|
|
6
|
+
} | {
|
|
7
|
+
type: "clear";
|
|
8
|
+
};
|
|
9
|
+
export interface BrushAccessibilityOptions {
|
|
10
|
+
label?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
onAction?: (action: BrushKeyboardAction) => void;
|
|
13
|
+
}
|
|
14
|
+
/** Shared ARIA and keyboard vocabulary for frame-owned D3 brushes. */
|
|
15
|
+
export declare function useBrushAccessibility({ label, description, onAction, }?: BrushAccessibilityOptions): {
|
|
16
|
+
description: string;
|
|
17
|
+
descriptionId: string;
|
|
18
|
+
svgProps: {
|
|
19
|
+
role: string;
|
|
20
|
+
tabIndex: number;
|
|
21
|
+
"aria-label": string;
|
|
22
|
+
"aria-describedby": string;
|
|
23
|
+
onKeyDown: (event: React.KeyboardEvent<SVGSVGElement>) => void;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface PaintCanvasBackgroundOptions {
|
|
2
|
+
/** Explicit chart background color (or CSS var). */
|
|
3
|
+
background?: string;
|
|
4
|
+
/**
|
|
5
|
+
* When true, skip the fill so an SVG backgroundGraphics layer shows through.
|
|
6
|
+
* Equivalent to frames' `backgroundGraphics` prop being set.
|
|
7
|
+
*/
|
|
8
|
+
hasBackgroundGraphics?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Theme fallback when `background` is unset (e.g. `--semiotic-bg`).
|
|
11
|
+
* Empty / transparent values are ignored.
|
|
12
|
+
*/
|
|
13
|
+
themeBackground?: string;
|
|
14
|
+
/** Fill origin (plot-local or canvas-local depending on frame transform). */
|
|
15
|
+
x?: number;
|
|
16
|
+
y?: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Paint an opaque chart background when appropriate.
|
|
22
|
+
* Returns true if a fill was applied.
|
|
23
|
+
*/
|
|
24
|
+
export declare function paintCanvasBackground(ctx: CanvasRenderingContext2D, options: PaintCanvasBackgroundOptions): boolean;
|
|
@@ -21,6 +21,9 @@ export interface CanvasMargin {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function prepareCanvas(canvas: HTMLCanvasElement, size: [number, number], margin: CanvasMargin, dpr: number): CanvasRenderingContext2D | null;
|
|
23
23
|
/**
|
|
24
|
-
* Get the
|
|
24
|
+
* Get the effective canvas devicePixelRatio, defaulting to 1 in non-browser
|
|
25
|
+
* environments. Mobile/coarse-pointer screens are capped at 2x to avoid
|
|
26
|
+
* allocating very large backing stores on high-density phones; desktop stays
|
|
27
|
+
* crisper but still caps pathological DPR values at 3x.
|
|
25
28
|
*/
|
|
26
29
|
export declare function getDevicePixelRatio(): number;
|
|
@@ -2,6 +2,7 @@ import type { ReactNode } from "react";
|
|
|
2
2
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
3
3
|
import type { MarginType } from "../types/marginType";
|
|
4
4
|
import type { SceneNode, StreamScales, Style, ThemeSemanticColors } from "./types";
|
|
5
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
5
6
|
/**
|
|
6
7
|
* customLayout — escape hatch for bespoke chart geometry.
|
|
7
8
|
*
|
|
@@ -57,12 +58,31 @@ export interface LayoutContext<C extends object = Record<string, unknown>> {
|
|
|
57
58
|
resolveColor: (group: string, datum?: Datum) => string;
|
|
58
59
|
/** User-supplied config blob threaded through `layoutConfig`. */
|
|
59
60
|
config: C;
|
|
61
|
+
/**
|
|
62
|
+
* Shared-selection projection (from `selection` / `linkedHover`). `null` when
|
|
63
|
+
* the chart isn't wired to a selection store. Dim/highlight by
|
|
64
|
+
* `selection.predicate(datum)`. For selection-driven styling that shouldn't
|
|
65
|
+
* pay a relayout, express it via {@link LayoutResult.restyle} (canvas) /
|
|
66
|
+
* `useCustomLayoutSelection` (overlays) instead of recomputing geometry here.
|
|
67
|
+
*/
|
|
68
|
+
selection?: CustomLayoutSelection | null;
|
|
60
69
|
}
|
|
61
70
|
export interface LayoutResult {
|
|
62
71
|
/** Scene nodes to render. Get hit testing, transitions, decay, SSR for free. */
|
|
63
72
|
nodes?: SceneNode[];
|
|
64
73
|
/** SVG overlays composited above the canvas (labels, annotations). */
|
|
65
74
|
overlays?: ReactNode;
|
|
75
|
+
/**
|
|
76
|
+
* **Per-frame restyle of canvas marks, without re-positioning.** When present,
|
|
77
|
+
* a selection/hover change re-applies styles to the existing scene nodes and
|
|
78
|
+
* repaints — it does NOT re-run the layout or rebuild the point quadtree.
|
|
79
|
+
* Return a style patch merged onto the node's *base* style; return nothing to
|
|
80
|
+
* leave it unchanged. Providing it opts the chart into the cheap selection
|
|
81
|
+
* path (hover stays O(nodes) paint, not O(nodes) relayout); omit it and
|
|
82
|
+
* selection changes re-run the layout. Pairs with `useCustomLayoutSelection`
|
|
83
|
+
* for the `overlays`.
|
|
84
|
+
*/
|
|
85
|
+
restyle?: (node: SceneNode, selection: CustomLayoutSelection | null) => Partial<Style> | void;
|
|
66
86
|
}
|
|
67
87
|
/**
|
|
68
88
|
* Note on extents: customLayout v1 does not return extents. Layouts that
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface CustomLayoutDiagnosticNode {
|
|
3
|
+
datum?: unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface CustomLayoutDiagnosticsOptions {
|
|
6
|
+
label: string;
|
|
7
|
+
nodes: readonly CustomLayoutDiagnosticNode[];
|
|
8
|
+
overlays?: ReactNode;
|
|
9
|
+
warned: Set<string>;
|
|
10
|
+
}
|
|
11
|
+
export declare function warnCustomLayoutDiagnostics(options: CustomLayoutDiagnosticsOptions): void;
|