semiotic 3.7.5 → 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 +54 -12
- package/README.md +121 -27
- 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 +2733 -536
- package/ai/surface-manifest.json +200 -0
- package/ai/system-prompt.md +18 -3
- 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/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 +26 -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 +102 -0
- package/dist/components/ai/describeChart.d.ts +7 -0
- package/dist/components/ai/describeRecipeChart.d.ts +16 -0
- package/dist/components/ai/generativeChart.d.ts +28 -3
- 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 +8 -2
- 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 +1 -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 +9 -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/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/colorUtils.d.ts +16 -1
- 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/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -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/types.d.ts +49 -1
- package/dist/components/charts/shared/useChartSetup.d.ts +9 -2
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +14 -5
- 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/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 +1 -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/fromFlintChart.d.ts +74 -0
- package/dist/components/data/fromVegaLite.d.ts +27 -0
- package/dist/components/data/portability/index.d.ts +6 -3
- package/dist/components/data/portability/result.d.ts +52 -0
- package/dist/components/data/portability/spec.d.ts +31 -0
- package/dist/components/data/portability/vegaLite.d.ts +24 -6
- package/dist/components/export/chartConfig.d.ts +11 -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/{gofishBoba.d.ts → boba.d.ts} +2 -2
- 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 +178 -132
- package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
- 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/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/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 +91 -0
- package/dist/components/recipes/recipeGlyph.d.ts +42 -0
- package/dist/components/recipes/recipeLegend.d.ts +53 -1
- package/dist/components/recipes/recipeUtils.d.ts +52 -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 +50 -8
- package/dist/components/semiotic-controls.d.ts +18 -0
- package/dist/components/semiotic-experimental.d.ts +38 -9
- package/dist/components/semiotic-geo.d.ts +11 -0
- package/dist/components/semiotic-network.d.ts +11 -0
- package/dist/components/semiotic-ordinal.d.ts +8 -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 -30
- 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 -43
- 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 -76
- 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 +8 -0
- package/dist/components/semiotic.d.ts +35 -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 +3 -2
- 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/NetworkPipelineStore.d.ts +31 -26
- package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -1
- package/dist/components/stream/OrdinalPipelineStore.d.ts +46 -2
- package/dist/components/stream/PipelineStore.d.ts +81 -170
- package/dist/components/stream/SceneGraph.d.ts +9 -1
- 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/customLayoutFailure.d.ts +33 -0
- package/dist/components/stream/customLayoutPalette.d.ts +19 -9
- 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/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 +76 -5
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
- 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/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +40 -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/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -0
- package/dist/components/stream/types.d.ts +135 -7
- 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/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/types.d.ts +4 -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 +50 -8
- 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.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental.d.ts +38 -9
- package/dist/semiotic-experimental.min.js +1 -1
- package/dist/semiotic-experimental.module.min.js +1 -1
- package/dist/semiotic-geo.d.ts +11 -0
- package/dist/semiotic-network.d.ts +11 -0
- package/dist/semiotic-ordinal.d.ts +8 -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 -30
- 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 -43
- 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 -76
- 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 +8 -0
- package/dist/semiotic.d.ts +35 -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 +239 -87
- 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/components/recipes/gofish.d.ts +0 -207
- package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
- package/dist/components/recipes/gofishLambdas.d.ts +0 -145
- package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
- package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
- package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
- package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
- package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
- package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
|
@@ -16,17 +16,22 @@ import type { Datum } from "../charts/shared/datumTypes";
|
|
|
16
16
|
* Consumed by: StreamOrdinalFrame (sole consumer).
|
|
17
17
|
*/
|
|
18
18
|
import { type ScaleLinear } from "d3-scale";
|
|
19
|
-
import {
|
|
19
|
+
import type { Quadtree } from "d3-quadtree";
|
|
20
20
|
import type { OrdinalPipelineConfig, OrdinalScales, OrdinalSceneNode, OrdinalColumn, OrdinalLayout } from "./ordinalTypes";
|
|
21
21
|
import type { Changeset, PointSceneNode } from "./types";
|
|
22
22
|
import type { ActiveTransition } from "./pipelineTransitionUtils";
|
|
23
|
+
import type { OrdinalLayoutResult } from "./ordinalCustomLayout";
|
|
23
24
|
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
25
|
+
import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
|
|
26
|
+
import type { UpdateResult } from "./pipelineUpdateContract";
|
|
24
27
|
export declare class OrdinalPipelineStore {
|
|
25
28
|
private buffer;
|
|
26
29
|
private rExtent;
|
|
27
30
|
/** Per-accessor extents for multiAxis mode */
|
|
28
31
|
private rExtents;
|
|
29
32
|
private config;
|
|
33
|
+
private windowSizeWarned;
|
|
34
|
+
private updateResults;
|
|
30
35
|
private getO;
|
|
31
36
|
private getR;
|
|
32
37
|
/** All resolved rAccessors (length > 1 when multiAxis) */
|
|
@@ -57,6 +62,15 @@ export declare class OrdinalPipelineStore {
|
|
|
57
62
|
columns: Record<string, OrdinalColumn>;
|
|
58
63
|
/** Overlays returned from customLayout (consumed by StreamOrdinalFrame). */
|
|
59
64
|
customLayoutOverlays: import("react").ReactNode;
|
|
65
|
+
/** Most recent custom layout result for host readback (`getCustomLayout()`).
|
|
66
|
+
* Null before the first layout or without a custom layout. A failed rerun
|
|
67
|
+
* keeps the last successful result while its scene remains recoverable. */
|
|
68
|
+
lastCustomLayoutResult: OrdinalLayoutResult | null;
|
|
69
|
+
/** Latest custom-layout failure for frame-handle readback. */
|
|
70
|
+
lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
|
|
71
|
+
/** Lets `computeScene` retain a prior scene without mutating it after an
|
|
72
|
+
* exception from `buildSceneNodes`. */
|
|
73
|
+
private _customLayoutFailedThisBuild;
|
|
60
74
|
private _customLayoutDiagnosticsWarned;
|
|
61
75
|
/** Per-frame restyle callback from the custom layout result (see OrdinalLayoutResult.restyle). */
|
|
62
76
|
private _customRestyle;
|
|
@@ -67,7 +81,8 @@ export declare class OrdinalPipelineStore {
|
|
|
67
81
|
version: number;
|
|
68
82
|
/** Bumped whenever the buffer is mutated. Used to invalidate per-frame caches. */
|
|
69
83
|
private _dataVersion;
|
|
70
|
-
|
|
84
|
+
/** Materialized source data, cached for pulse/decay animation frames. */
|
|
85
|
+
private _bufferArrayCache;
|
|
71
86
|
private _pointQuadtree;
|
|
72
87
|
/** Largest visual point radius in the current scene. */
|
|
73
88
|
private _maxPointRadius;
|
|
@@ -77,7 +92,14 @@ export declare class OrdinalPipelineStore {
|
|
|
77
92
|
private _categoryIndexCache;
|
|
78
93
|
private _hasRenderedOnce;
|
|
79
94
|
constructor(config: OrdinalPipelineConfig);
|
|
95
|
+
/**
|
|
96
|
+
* Keep the optional pulse timestamp ring in lockstep with the datum ring.
|
|
97
|
+
* Enabling pulse after mount must seed timestamps for retained rows; an
|
|
98
|
+
* empty ring would associate later timestamps with the wrong datum index.
|
|
99
|
+
*/
|
|
100
|
+
private syncPulseTimestampBuffer;
|
|
80
101
|
ingest(changeset: Changeset): boolean;
|
|
102
|
+
ingestWithResult(changeset: Changeset): UpdateResult;
|
|
81
103
|
private pushValueExtent;
|
|
82
104
|
private evictValueExtent;
|
|
83
105
|
/** For timeline type: resolve rAccessor as a [start, end] pair */
|
|
@@ -119,6 +141,12 @@ export declare class OrdinalPipelineStore {
|
|
|
119
141
|
get maxPointRadius(): number;
|
|
120
142
|
private applyDecay;
|
|
121
143
|
private applyPulse;
|
|
144
|
+
/**
|
|
145
|
+
* Refresh only pulse-derived fields on the existing scene. This deliberately
|
|
146
|
+
* avoids a scene/layout rebuild on every rAF pulse tick.
|
|
147
|
+
*/
|
|
148
|
+
refreshPulse(now: number): boolean;
|
|
149
|
+
hasActivePulsesAt(now: number): boolean;
|
|
122
150
|
get hasActivePulses(): boolean;
|
|
123
151
|
/** Synthesize a zero-state prevPositionMap for animated intro (first render). */
|
|
124
152
|
private synthesizeIntroPositions;
|
|
@@ -136,7 +164,15 @@ export declare class OrdinalPipelineStore {
|
|
|
136
164
|
* after the server already painted the chart.
|
|
137
165
|
*/
|
|
138
166
|
cancelIntroAnimation(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Materialize the ring buffer at most once per data version. Pulse decay
|
|
169
|
+
* ticks reuse this array and the datum/category index caches rather than
|
|
170
|
+
* allocating a fresh copy at animation-frame frequency.
|
|
171
|
+
*/
|
|
172
|
+
private getBufferArray;
|
|
139
173
|
getData(): Datum[];
|
|
174
|
+
/** Most recent additive update result for revision-aware hosts and tests. */
|
|
175
|
+
getLastUpdateResult(): UpdateResult;
|
|
140
176
|
/**
|
|
141
177
|
* Remove data items by ID. Requires dataIdAccessor to be configured.
|
|
142
178
|
* Returns the removed items. Marks the store dirty for scene rebuild.
|
|
@@ -160,5 +196,13 @@ export declare class OrdinalPipelineStore {
|
|
|
160
196
|
* No-op when the layout supplied no `restyle`.
|
|
161
197
|
*/
|
|
162
198
|
restyleScene(selection: CustomLayoutSelection | null): void;
|
|
199
|
+
/**
|
|
200
|
+
* Re-derive every retained fact that depends on the category/value
|
|
201
|
+
* accessors. `updateConfig` can change an accessor without a subsequent
|
|
202
|
+
* ingest (the normal React path), so clearing only a cache would leave the
|
|
203
|
+
* next scene with an empty/stale domain against the existing buffer.
|
|
204
|
+
*/
|
|
205
|
+
private rebuildAccessorDerivedState;
|
|
163
206
|
updateConfig(config: Partial<OrdinalPipelineConfig>): void;
|
|
207
|
+
updateConfigWithResult(config: Partial<OrdinalPipelineConfig>): UpdateResult;
|
|
164
208
|
}
|
|
@@ -1,160 +1,42 @@
|
|
|
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 CoercibleNumber } from "./accessorUtils";
|
|
7
|
-
import type { ActiveTransition } from "./pipelineTransitionUtils";
|
|
21
|
+
import type { Changeset, StreamScales, StreamLayout, SceneNode } from "./types";
|
|
22
|
+
import { type ActiveTransition } from "./pipelineTransitionUtils";
|
|
8
23
|
import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
|
|
9
|
-
import type {
|
|
24
|
+
import type { LayoutResult } from "./customLayout";
|
|
10
25
|
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
11
|
-
import type
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
arrowOfTime: ArrowOfTime;
|
|
18
|
-
extentPadding: number;
|
|
19
|
-
/** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
|
|
20
|
-
scalePadding?: number;
|
|
21
|
-
/** When `"exact"`, the x and y axis domains pin to the literal data
|
|
22
|
-
* min/max — `extentPadding` is skipped so the first and last ticks
|
|
23
|
-
* read as the actual data bounds. Default `"nice"` keeps the existing
|
|
24
|
-
* padded domain so glyphs at the extremes don't clip the plot edge. */
|
|
25
|
-
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
26
|
-
maxCapacity?: number;
|
|
27
|
-
xAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
28
|
-
yAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
29
|
-
timeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
30
|
-
valueAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
31
|
-
colorAccessor?: string | ((d: Datum) => string);
|
|
32
|
-
sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
33
|
-
/** Categorical accessor → glyph shape (scatter/bubble). Emits SymbolSceneNodes. */
|
|
34
|
-
symbolAccessor?: string | ((d: Datum) => string);
|
|
35
|
-
/** Explicit `{category → shape}` map; unmapped categories auto-assign. */
|
|
36
|
-
symbolMap?: Record<string, SymbolName>;
|
|
37
|
-
groupAccessor?: string | ((d: Datum) => string);
|
|
38
|
-
categoryAccessor?: string | ((d: Datum) => string);
|
|
39
|
-
lineDataAccessor?: string;
|
|
40
|
-
xScaleType?: "linear" | "log" | "time";
|
|
41
|
-
yScaleType?: "linear" | "log";
|
|
42
|
-
xExtent?: [number | undefined, number | undefined] | [number];
|
|
43
|
-
yExtent?: [number | undefined, number | undefined] | [number];
|
|
44
|
-
sizeRange?: [number, number];
|
|
45
|
-
binSize?: number;
|
|
46
|
-
normalize?: boolean;
|
|
47
|
-
/** Stacked area baseline mode. Only consulted by stackedarea chart type. */
|
|
48
|
-
baseline?: "zero" | "wiggle" | "silhouette";
|
|
49
|
-
/** Stack order — see StreamXYFrameProps.stackOrder. */
|
|
50
|
-
stackOrder?: "key" | "insideOut" | "asc" | "desc";
|
|
51
|
-
openAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
52
|
-
highAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
53
|
-
lowAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
54
|
-
closeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
55
|
-
candlestickStyle?: CandlestickStyle;
|
|
56
|
-
/** Internal: set by PipelineStore when open/close accessors are both missing */
|
|
57
|
-
candlestickRangeMode?: boolean;
|
|
58
|
-
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
59
|
-
boundsStyle?: any;
|
|
60
|
-
y0Accessor?: string | ((d: Datum) => CoercibleNumber);
|
|
61
|
-
band?: BandConfig | BandConfig[];
|
|
62
|
-
gradientFill?: {
|
|
63
|
-
topOpacity: number;
|
|
64
|
-
bottomOpacity: number;
|
|
65
|
-
} | {
|
|
66
|
-
colorStops: Array<{
|
|
67
|
-
offset: number;
|
|
68
|
-
color: string;
|
|
69
|
-
}>;
|
|
70
|
-
};
|
|
71
|
-
areaGroups?: Set<string>;
|
|
72
|
-
lineGradient?: {
|
|
73
|
-
colorStops: Array<{
|
|
74
|
-
offset: number;
|
|
75
|
-
color: string;
|
|
76
|
-
}>;
|
|
77
|
-
};
|
|
78
|
-
lineStyle?: any;
|
|
79
|
-
pointStyle?: (d: Datum) => Style & {
|
|
80
|
-
r?: number;
|
|
81
|
-
};
|
|
82
|
-
areaStyle?: (d: Datum) => Style;
|
|
83
|
-
swarmStyle?: {
|
|
84
|
-
radius?: number;
|
|
85
|
-
fill?: string;
|
|
86
|
-
opacity?: number;
|
|
87
|
-
stroke?: string;
|
|
88
|
-
strokeWidth?: number;
|
|
89
|
-
};
|
|
90
|
-
waterfallStyle?: {
|
|
91
|
-
positiveColor?: string;
|
|
92
|
-
negativeColor?: string;
|
|
93
|
-
connectorStroke?: string;
|
|
94
|
-
connectorWidth?: number;
|
|
95
|
-
gap?: number;
|
|
96
|
-
stroke?: string;
|
|
97
|
-
strokeWidth?: number;
|
|
98
|
-
};
|
|
99
|
-
colorScheme?: string | string[];
|
|
100
|
-
/** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
|
|
101
|
-
themeCategorical?: string[];
|
|
102
|
-
/**
|
|
103
|
-
* Theme-resolved semantic role colors. Scene builders use these as the
|
|
104
|
-
* default before falling back to hardcoded hex. Populated by the Stream
|
|
105
|
-
* Frame from the in-memory `SemioticTheme.colors` object at render time
|
|
106
|
-
* — the values are concrete hex (or whatever the preset declares), not
|
|
107
|
-
* `var(...)` strings, and so this channel does NOT participate in the
|
|
108
|
-
* DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
|
|
109
|
-
* swapping to a nested provider is how you override these values.
|
|
110
|
-
*
|
|
111
|
-
* Per-scope overrides via CSS custom properties
|
|
112
|
-
* (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
|
|
113
|
-
* values a user explicitly passes through as `var(--...)` strings in
|
|
114
|
-
* chart props — those are resolved via `getComputedStyle` in the
|
|
115
|
-
* canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
|
|
116
|
-
* defaults in this field don't read CSS.
|
|
117
|
-
*/
|
|
118
|
-
themeSemantic?: ThemeSemanticColors;
|
|
119
|
-
/** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
|
|
120
|
-
themeSequential?: string;
|
|
121
|
-
/** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
|
|
122
|
-
themeDiverging?: string;
|
|
123
|
-
barColors?: Record<string, string>;
|
|
124
|
-
/** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
|
|
125
|
-
barStyle?: BarStyle;
|
|
126
|
-
annotations?: Datum[];
|
|
127
|
-
decay?: DecayConfig;
|
|
128
|
-
pulse?: PulseConfig;
|
|
129
|
-
transition?: TransitionConfig;
|
|
130
|
-
/** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
|
|
131
|
-
introAnimation?: boolean;
|
|
132
|
-
staleness?: StalenessConfig;
|
|
133
|
-
heatmapAggregation?: "count" | "sum" | "mean";
|
|
134
|
-
heatmapXBins?: number;
|
|
135
|
-
heatmapYBins?: number;
|
|
136
|
-
showValues?: boolean;
|
|
137
|
-
heatmapValueFormat?: (v: number) => string;
|
|
138
|
-
pointIdAccessor?: string | ((d: Datum) => string);
|
|
139
|
-
curve?: CurveType;
|
|
140
|
-
/** When provided, replaces chart-type dispatch in scene building.
|
|
141
|
-
* Receives a LayoutContext (scales, dimensions, theme, resolveColor)
|
|
142
|
-
* and returns scene nodes plus optional overlays. */
|
|
143
|
-
customLayout?: CustomLayout;
|
|
144
|
-
/** User-supplied config blob threaded through to LayoutContext.config. */
|
|
145
|
-
layoutConfig?: object;
|
|
146
|
-
/** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
|
|
147
|
-
layoutMargin?: MarginType;
|
|
148
|
-
/** Resolved shared selection projected into LayoutContext.selection. Owned by
|
|
149
|
-
* a dedicated frame effect (kept off the rebuild-triggering path). */
|
|
150
|
-
layoutSelection?: CustomLayoutSelection | null;
|
|
151
|
-
}
|
|
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";
|
|
152
32
|
export declare class PipelineStore {
|
|
153
33
|
private buffer;
|
|
154
34
|
private xExtent;
|
|
155
35
|
private yExtent;
|
|
156
36
|
private config;
|
|
157
37
|
private growingCap;
|
|
38
|
+
private growingCapacityWarned;
|
|
39
|
+
private windowSizeWarned;
|
|
158
40
|
private getX;
|
|
159
41
|
private getY;
|
|
160
42
|
private getGroup;
|
|
@@ -206,17 +88,32 @@ export declare class PipelineStore {
|
|
|
206
88
|
private _stackExtentCache;
|
|
207
89
|
/** Monotonic counter incremented on each ingest — used as part of cache keys */
|
|
208
90
|
private _ingestVersion;
|
|
91
|
+
/** Datum→index map for decay/pulse, cached by `_ingestVersion`. */
|
|
92
|
+
private _datumIndexCache;
|
|
209
93
|
/** Cached materialized array from buffer.toArray() — only rebuilt when buffer changes */
|
|
210
94
|
private _bufferArrayCache;
|
|
211
95
|
/** True when the buffer has been mutated since last toArray() call */
|
|
212
96
|
private _bufferDirty;
|
|
213
97
|
private needsFullRebuild;
|
|
214
98
|
private lastLayout;
|
|
99
|
+
private updateResults;
|
|
215
100
|
scales: StreamScales | null;
|
|
216
101
|
scene: SceneNode[];
|
|
217
102
|
version: number;
|
|
218
103
|
/** Overlays returned from customLayout (consumed by StreamXYFrame for SVGOverlay). */
|
|
219
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;
|
|
220
117
|
private _customLayoutDiagnosticsWarned;
|
|
221
118
|
/** Per-frame restyle callback from the custom layout result (see LayoutResult.restyle). */
|
|
222
119
|
private _customRestyle;
|
|
@@ -226,14 +123,23 @@ export declare class PipelineStore {
|
|
|
226
123
|
private _baseStyles;
|
|
227
124
|
/** True when the x accessor returns Date objects (auto-detected on first data ingestion) */
|
|
228
125
|
xIsDate: boolean;
|
|
229
|
-
private
|
|
230
|
-
/** Largest visual point radius in the current scene. The hit tester uses
|
|
231
|
-
* this to widen its quadtree query so points with big radii (bubble) don't
|
|
232
|
-
* fall outside the search region. */
|
|
233
|
-
private _maxPointRadius;
|
|
234
|
-
private static readonly QUADTREE_THRESHOLD;
|
|
126
|
+
private spatialIndex;
|
|
235
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;
|
|
236
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;
|
|
237
143
|
private rebuildYExtent;
|
|
238
144
|
private rebuildExtents;
|
|
239
145
|
private _lastBoundedInsertsRef;
|
|
@@ -250,20 +156,14 @@ export declare class PipelineStore {
|
|
|
250
156
|
* meaningful — streaming consumers don't pass the same array twice.
|
|
251
157
|
*/
|
|
252
158
|
ingest(changeset: Changeset): boolean;
|
|
159
|
+
/** Additive explicit-result form of {@link ingest}; `ingest()` remains unchanged. */
|
|
160
|
+
ingestWithResult(changeset: Changeset): UpdateResult;
|
|
253
161
|
/**
|
|
254
162
|
* Recompute scales and scene graph for the current buffer contents.
|
|
255
163
|
*/
|
|
256
164
|
computeScene(layout: StreamLayout): void;
|
|
257
|
-
/**
|
|
258
|
-
|
|
259
|
-
* Only built for scatter/bubble charts with >QUADTREE_THRESHOLD points.
|
|
260
|
-
*/
|
|
261
|
-
private rebuildQuadtree;
|
|
262
|
-
/**
|
|
263
|
-
* Get the quadtree spatial index, if available.
|
|
264
|
-
* Returns null when chart type is not scatter/bubble or point count is below threshold.
|
|
265
|
-
*/
|
|
266
|
-
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;
|
|
267
167
|
/** Largest visual point radius in the current scene. */
|
|
268
168
|
get maxPointRadius(): number;
|
|
269
169
|
/**
|
|
@@ -274,8 +174,12 @@ export declare class PipelineStore {
|
|
|
274
174
|
private buildSceneNodes;
|
|
275
175
|
private resolveBoundsStyle;
|
|
276
176
|
computeDecayOpacity(bufferIndex: number, bufferSize: number): number;
|
|
177
|
+
private getDatumIndexMap;
|
|
277
178
|
private applyDecay;
|
|
278
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;
|
|
279
183
|
get hasActivePulses(): boolean;
|
|
280
184
|
private get transitionContext();
|
|
281
185
|
private snapshotPositions;
|
|
@@ -317,13 +221,6 @@ export declare class PipelineStore {
|
|
|
317
221
|
private resolveColorMap;
|
|
318
222
|
private resolveLineStyle;
|
|
319
223
|
private resolveAreaStyle;
|
|
320
|
-
/** Resolve a group name to a color from the cached color map or a dedicated group palette.
|
|
321
|
-
* First checks _colorMapCache (populated by resolveColorMap when colorAccessor is set).
|
|
322
|
-
* Falls back to _groupColorMap (insertion-order, never mutates _colorMapCache).
|
|
323
|
-
*
|
|
324
|
-
* FIFO-evicts the oldest entry when the map exceeds `GROUP_COLOR_MAP_CAP`. The palette index
|
|
325
|
-
* uses `_groupColorCounter` (monotonic, decoupled from map size) so eviction doesn't cause
|
|
326
|
-
* new groups to collide with existing entries on a shrunk map. */
|
|
327
224
|
private resolveGroupColor;
|
|
328
225
|
/**
|
|
329
226
|
* Return a cached materialized array of the buffer contents.
|
|
@@ -333,6 +230,8 @@ export declare class PipelineStore {
|
|
|
333
230
|
*/
|
|
334
231
|
private getBufferArray;
|
|
335
232
|
getData(): Datum[];
|
|
233
|
+
/** Most recent additive update result for revision-aware hosts and tests. */
|
|
234
|
+
getLastUpdateResult(): UpdateResult;
|
|
336
235
|
/**
|
|
337
236
|
* Remove data points by ID. Requires pointIdAccessor to be configured.
|
|
338
237
|
* Returns the removed items. Marks the store dirty for scene rebuild.
|
|
@@ -360,11 +259,23 @@ export declare class PipelineStore {
|
|
|
360
259
|
* triggering one. The frame then either repaints (restyle) or rebuilds. */
|
|
361
260
|
setLayoutSelection(selection: CustomLayoutSelection | null): void;
|
|
362
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;
|
|
363
271
|
/**
|
|
364
272
|
* Re-apply the custom layout's `restyle` to the existing scene for
|
|
365
273
|
* `selection`, off each node's base style — no relayout, no quadtree rebuild
|
|
366
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.
|
|
367
276
|
*/
|
|
368
277
|
restyleScene(selection: CustomLayoutSelection | null): void;
|
|
369
278
|
updateConfig(config: Partial<PipelineConfig>): void;
|
|
279
|
+
/** Additive explicit-result form of {@link updateConfig}. */
|
|
280
|
+
updateConfigWithResult(config: Partial<PipelineConfig>): UpdateResult;
|
|
370
281
|
}
|
|
@@ -5,7 +5,7 @@ export declare function buildLineNode(data: Datum[], scales: StreamScales, xGet:
|
|
|
5
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;
|
|
6
6
|
/** Per-group-per-x stacked top values, keyed by group then x */
|
|
7
7
|
export type StackedTops = Map<string, Map<number, number>>;
|
|
8
|
-
export type StackBaseline = "zero" | "wiggle" | "silhouette";
|
|
8
|
+
export type StackBaseline = "zero" | "wiggle" | "silhouette" | "diverging";
|
|
9
9
|
/**
|
|
10
10
|
* Compute per-x stack baseline offsets. Shared between scene rendering
|
|
11
11
|
* (`buildStackedAreaNodes`) and extent computation (`PipelineStore`) so
|
|
@@ -17,8 +17,16 @@ export type StackBaseline = "zero" | "wiggle" | "silhouette";
|
|
|
17
17
|
* xValues — sorted unique x values
|
|
18
18
|
* groupKeys — group keys in stacking order (same order both callers use)
|
|
19
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}.
|
|
20
23
|
*/
|
|
21
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];
|
|
22
30
|
export declare function buildStackedAreaNodes(groups: {
|
|
23
31
|
key: string;
|
|
24
32
|
data: Datum[];
|
|
@@ -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;
|