semiotic 3.8.0 → 3.8.2
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 +14 -9
- package/README.md +56 -55
- package/ai/behaviorContracts.cjs +9 -0
- package/ai/dist/mcp-server.js +240 -30
- package/ai/schema.json +616 -42
- package/ai/surface-manifest.json +3 -2
- package/ai/system-prompt.md +7 -3
- package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
- package/dist/chunk-OrdinalBrushOverlay-PXHQYDB2.module.min.js +2 -0
- package/dist/chunk-XYBrushOverlay-ECZJJLAJ.module.min.js +1 -0
- package/dist/chunk-XYBrushOverlay-EP2SV3UI.module.min.js +2 -0
- package/dist/chunk-chunk-255KDHW5.module.min.js +1 -0
- package/dist/chunk-chunk-27HVVXS6.module.min.js +1 -0
- package/dist/chunk-chunk-2CXCXRB4.module.min.js +1 -0
- package/dist/chunk-chunk-2JGJ5GUG.module.min.js +2 -0
- package/dist/chunk-chunk-2UN3ANRN.module.min.js +2 -0
- package/dist/chunk-chunk-2VUEY5TH.module.min.js +1 -0
- package/dist/chunk-chunk-2WVCH4PL.module.min.js +1 -0
- package/dist/chunk-chunk-5UKL5W76.module.min.js +2 -0
- package/dist/chunk-chunk-5WEFWNUW.module.min.js +2 -0
- package/dist/chunk-chunk-6F6GEAQU.module.min.js +1 -0
- package/dist/chunk-chunk-7LHMKRKE.module.min.js +2 -0
- package/dist/chunk-chunk-BHYTYMY2.module.min.js +2 -0
- package/dist/chunk-chunk-C6EJ4IOD.module.min.js +2 -0
- package/dist/chunk-chunk-CA3YDW6F.module.min.js +1 -0
- package/dist/chunk-chunk-CP3EN6KZ.module.min.js +1 -0
- package/dist/chunk-chunk-CYIML3AV.module.min.js +2 -0
- package/dist/chunk-chunk-DNY43POY.module.min.js +1 -0
- package/dist/chunk-chunk-DSNGDNJY.module.min.js +1 -0
- package/dist/chunk-chunk-E7MIQX7D.module.min.js +2 -0
- package/dist/chunk-chunk-EMO5NUGE.module.min.js +1 -0
- package/dist/chunk-chunk-ES4DCG3L.module.min.js +1 -0
- package/dist/chunk-chunk-FAKO3RGQ.module.min.js +2 -0
- package/dist/chunk-chunk-FYY2ACNJ.module.min.js +2 -0
- package/dist/chunk-chunk-G7WFWHAD.module.min.js +2 -0
- package/dist/chunk-chunk-GMQ5AYTD.module.min.js +1 -0
- package/dist/chunk-chunk-H4PPRW6N.module.min.js +1 -0
- package/dist/chunk-chunk-IFYPMWKY.module.min.js +1 -0
- package/dist/chunk-chunk-J3ELI22J.module.min.js +1 -0
- package/dist/chunk-chunk-J3QOW4OE.module.min.js +0 -0
- package/dist/chunk-chunk-J3XWETBJ.module.min.js +2 -0
- package/dist/chunk-chunk-JCG72SGW.module.min.js +2 -0
- package/dist/{semiotic-ai-chunk-OG7BQUUW.module.min.js → chunk-chunk-JJ2OOIET.module.min.js} +0 -1
- package/dist/chunk-chunk-KTWEBFMX.module.min.js +2 -0
- package/dist/chunk-chunk-L6D3I3V7.module.min.js +2 -0
- package/dist/chunk-chunk-M337NY6L.module.min.js +1 -0
- package/dist/chunk-chunk-NO4MCQVD.module.min.js +1 -0
- package/dist/chunk-chunk-ODUZEEBH.module.min.js +2 -0
- package/dist/chunk-chunk-P6UBCMSQ.module.min.js +2 -0
- package/dist/chunk-chunk-Q2YADC2V.module.min.js +2 -0
- package/dist/chunk-chunk-QRIBHZYW.module.min.js +1 -0
- package/dist/chunk-chunk-QSQVBIJA.module.min.js +1 -0
- package/dist/chunk-chunk-RCF52Z42.module.min.js +2 -0
- package/dist/chunk-chunk-RH5TSQPH.module.min.js +1 -0
- package/dist/chunk-chunk-ROP4HI7H.module.min.js +2 -0
- package/dist/chunk-chunk-RZH7VZYS.module.min.js +2 -0
- package/dist/chunk-chunk-SIRIJ3DY.module.min.js +1 -0
- package/dist/chunk-chunk-STZFFTAN.module.min.js +2 -0
- package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
- package/dist/chunk-chunk-T27ZEV6A.module.min.js +1 -0
- package/dist/chunk-chunk-U3AGQ5EF.module.min.js +2 -0
- package/dist/chunk-chunk-U66USBWU.module.min.js +1 -0
- package/dist/chunk-chunk-VVCA3DB7.module.min.js +1 -0
- package/dist/chunk-chunk-W3DB2MN4.module.min.js +2 -0
- package/dist/chunk-chunk-WCX6U47H.module.min.js +2 -0
- package/dist/chunk-chunk-WDIN4LRC.module.min.js +1 -0
- package/dist/chunk-chunk-XEVJDUTH.module.min.js +1 -0
- package/dist/chunk-chunk-XOYX77KF.module.min.js +2 -0
- package/dist/chunk-chunk-YCQYG6J5.module.min.js +2 -0
- package/dist/chunk-chunk-YHNZCPOZ.module.min.js +2 -0
- package/dist/chunk-chunk-YWZB3KPI.module.min.js +2 -0
- package/dist/chunk-chunk-Z5KXAVQD.module.min.js +2 -0
- package/dist/chunk-chunk-ZCNBUZPL.module.min.js +2 -0
- package/dist/chunk-chunk-ZLKRTF5N.module.min.js +2 -0
- package/dist/chunk-chunk-ZTNVDWAK.module.min.js +2 -0
- package/dist/chunk-statisticalOverlays-6MVAK5RW.module.min.js +2 -0
- package/dist/components/AccessibleNavTree.d.ts +7 -1
- package/dist/components/ai/chartClinicMetadata.generated.d.ts +15 -0
- package/dist/components/ai/useNavigationSync.d.ts +17 -2
- package/dist/components/chartContainerMobile.d.ts +9 -0
- package/dist/components/charts/geo/ChoroplethMap.d.ts +19 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +14 -2
- package/dist/components/charts/geo/FlowMap.d.ts +10 -6
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +14 -2
- package/dist/components/charts/index.d.ts +6 -0
- package/dist/components/charts/network/ChordDiagram.d.ts +9 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +11 -0
- package/dist/components/charts/network/SankeyDiagram.d.ts +9 -1
- package/dist/components/charts/ordinal/BarChart.d.ts +21 -0
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +11 -0
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +11 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +7 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +7 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +8 -0
- package/dist/components/charts/physics/PhysicalFlowChart.d.ts +7 -0
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +4 -25
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +7 -0
- package/dist/components/charts/physics/physicsChartShared.d.ts +17 -1
- package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -0
- package/dist/components/charts/shared/AnnotationLabel.d.ts +88 -0
- package/dist/components/charts/shared/annotationActivation.d.ts +35 -0
- package/dist/components/charts/shared/annotationLabelLayout.d.ts +5 -0
- package/dist/components/charts/shared/annotationRules.d.ts +2 -1
- package/dist/components/charts/shared/auditAccessibilityText.d.ts +13 -0
- package/dist/components/charts/shared/chartSelectionUtils.d.ts +4 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +3 -3
- package/dist/components/charts/shared/datumTypes.d.ts +2 -0
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +2 -0
- package/dist/components/charts/shared/formatUtils.d.ts +3 -3
- package/dist/components/charts/shared/hatchFill.d.ts +87 -0
- package/dist/components/charts/shared/hooks.d.ts +7 -6
- package/dist/components/charts/shared/knownChartComponents.d.ts +9 -0
- package/dist/components/charts/shared/leastSquaresRegression.d.ts +16 -0
- package/dist/components/charts/shared/mergeShapeStyle.d.ts +3 -2
- package/dist/components/charts/shared/semanticInteractions.d.ts +42 -0
- package/dist/components/charts/shared/sparseArray.d.ts +1 -1
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +6 -4
- package/dist/components/charts/shared/styleRules.d.ts +205 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
- package/dist/components/charts/shared/types.d.ts +9 -6
- package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
- package/dist/components/charts/shared/useChartSetup.d.ts +2 -2
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +3 -0
- package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -2
- package/dist/components/charts/shared/useLikertAggregation.d.ts +4 -4
- package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +24 -1
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/shared/useXYLineStyle.d.ts +10 -0
- package/dist/components/charts/shared/useXYPointStyle.d.ts +19 -1
- package/dist/components/charts/shared/validateChartData.d.ts +7 -5
- package/dist/components/charts/shared/validationMap.d.ts +11 -2
- package/dist/components/charts/shared/validationMap.generated.d.ts +6 -0
- package/dist/components/charts/shared/withChartWrapper.d.ts +4 -3
- package/dist/components/charts/value/targetPresentation.d.ts +22 -0
- package/dist/components/charts/value/types.d.ts +5 -6
- package/dist/components/charts/xy/AreaChart.d.ts +8 -0
- package/dist/components/charts/xy/BubbleChart.d.ts +9 -0
- package/dist/components/charts/xy/ConnectedScatterplot.d.ts +7 -0
- package/dist/components/charts/xy/DifferenceChart.d.ts +1 -52
- package/dist/components/charts/xy/Heatmap.d.ts +2 -2
- package/dist/components/charts/xy/LineChart.d.ts +11 -0
- package/dist/components/charts/xy/QuadrantChart.d.ts +7 -0
- package/dist/components/charts/xy/Scatterplot.d.ts +10 -0
- package/dist/components/charts/xy/StackedAreaChart.d.ts +7 -0
- package/dist/components/charts/xy/differenceSegments.d.ts +49 -0
- package/dist/components/charts/xy/scatterplotMatrixInteractionTypes.d.ts +12 -0
- package/dist/components/controls/SentenceFilter.d.ts +97 -0
- package/dist/components/data/fromVegaLite.d.ts +19 -9
- package/dist/components/rough/createRoughRenderMode.d.ts +46 -0
- package/dist/components/semiotic-ai.d.ts +3 -1
- package/dist/components/semiotic-controls.d.ts +2 -0
- package/dist/components/semiotic-geo.d.ts +4 -0
- package/dist/components/semiotic-network.d.ts +4 -0
- package/dist/components/semiotic-ordinal.d.ts +6 -0
- package/dist/components/semiotic-physics.d.ts +4 -0
- package/dist/components/semiotic-rough.d.ts +4 -0
- package/dist/components/semiotic-utils-core.d.ts +4 -0
- package/dist/components/semiotic-xy.d.ts +4 -0
- package/dist/components/semiotic.d.ts +9 -1
- package/dist/components/server/optionalImageTypes.d.ts +37 -0
- package/dist/components/server/serverChartConfigShared.d.ts +9 -5
- package/dist/components/server/serverChartConfigs.d.ts +4 -4
- package/dist/components/server/staticAnnotations.d.ts +6 -3
- package/dist/components/server/staticLegend.d.ts +1 -1
- package/dist/components/server/staticNetwork.d.ts +4 -4
- package/dist/components/server/staticSVGChrome.d.ts +5 -4
- package/dist/components/store/ObservationStore.d.ts +21 -1
- package/dist/components/stream/AccessibleDataTable.d.ts +4 -10
- package/dist/components/stream/AriaLiveTooltip.d.ts +9 -0
- package/dist/components/stream/CanvasHitTester.d.ts +4 -4
- package/dist/components/stream/DataSourceAdapter.d.ts +1 -1
- package/dist/components/stream/FrameRuntime.d.ts +57 -0
- package/dist/components/stream/GeoParticlePool.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +43 -12
- package/dist/components/stream/GeoSVGOverlay.d.ts +64 -0
- package/dist/components/stream/NetworkCanvasHitTester.d.ts +2 -1
- package/dist/components/stream/NetworkPipelineStore.d.ts +24 -21
- package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
- package/dist/components/stream/NetworkSVGOverlay.d.ts +6 -0
- package/dist/components/stream/OrdinalBrushOverlay.d.ts +1 -2
- package/dist/components/stream/OrdinalBrushOverlayLazy.d.ts +9 -0
- package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
- package/dist/components/stream/OrdinalPipelineStore.d.ts +13 -13
- package/dist/components/stream/OrdinalSVGOverlay.d.ts +9 -1
- package/dist/components/stream/OrdinalStyleResolver.d.ts +12 -0
- package/dist/components/stream/ParticlePool.d.ts +1 -1
- package/dist/components/stream/PipelineStore.d.ts +12 -16
- package/dist/components/stream/SVGOverlay.d.ts +6 -0
- package/dist/components/stream/SceneGraph.d.ts +3 -3
- package/dist/components/stream/XYBrushOverlayLazy.d.ts +17 -0
- package/dist/components/stream/accessorUtils.d.ts +2 -2
- package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
- package/dist/components/stream/frameGraphics.d.ts +4 -0
- package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +3 -3
- package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
- package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
- package/dist/components/stream/geoTypes.d.ts +48 -15
- package/dist/components/stream/hitTestUtils.d.ts +2 -2
- package/dist/components/stream/hoverUtils.d.ts +4 -2
- package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +1 -0
- package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
- package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
- package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
- package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
- package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
- package/dist/components/stream/networkFrameObservations.d.ts +15 -0
- package/dist/components/stream/networkFramePaint.d.ts +11 -2
- package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +2 -2
- package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
- package/dist/components/stream/networkTypes.d.ts +37 -56
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +2 -2
- package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +20 -1
- package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
- package/dist/components/stream/ordinalTypes.d.ts +30 -3
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +2 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +6 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +21 -6
- package/dist/components/stream/physics/physicsFrameObservations.d.ts +19 -0
- package/dist/components/stream/physics/physicsFrameSetup.d.ts +4 -0
- package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +19 -1
- package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +3 -1
- package/dist/components/stream/pipelineConfig.d.ts +4 -2
- package/dist/components/stream/pipelineDecay.d.ts +2 -2
- package/dist/components/stream/pipelinePulse.d.ts +2 -2
- package/dist/components/stream/pipelineStoreUpdateResults.d.ts +23 -2
- package/dist/components/stream/pipelineTransitions.d.ts +1 -1
- package/dist/components/stream/pipelineUpdateContract.d.ts +7 -0
- package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
- package/dist/components/stream/renderBackend.d.ts +27 -0
- package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +15 -1
- package/dist/components/stream/renderers/geoCanvasRenderer.d.ts +3 -2
- package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
- package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +31 -4
- package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
- package/dist/components/stream/streamThemeTypes.d.ts +14 -0
- package/dist/components/stream/svgOverlayUtils.d.ts +10 -0
- package/dist/components/stream/test-utils/frameScheduler.d.ts +12 -0
- package/dist/components/stream/test-utils/revisionConsumption.d.ts +13 -0
- package/dist/components/stream/titleLayout.d.ts +31 -0
- package/dist/components/stream/types.d.ts +30 -65
- package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
- package/dist/components/stream/useFrame.d.ts +23 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +3 -3
- package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
- package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -0
- package/dist/components/stream/xyFrameAxisTypes.d.ts +50 -0
- package/dist/components/stream/xySceneBuilders/types.d.ts +6 -5
- package/dist/controls.min.js +1 -1
- package/dist/controls.module.min.js +1 -1
- package/dist/forceLayoutWorker.js +1 -1
- 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 -1
- package/dist/physics-matter.module.min.js +1 -1
- package/dist/physics-rapier.min.js +1 -1
- package/dist/physics-rapier.module.min.js +1 -1
- package/dist/physics.min.js +1 -1
- package/dist/physics.module.min.js +1 -1
- package/dist/physicsWorker.js +1 -1
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/rough.min.js +1 -0
- package/dist/rough.module.min.js +1 -0
- package/dist/semiotic-ai-core.min.js +1 -1
- package/dist/semiotic-ai-core.module.min.js +1 -1
- package/dist/semiotic-ai.d.ts +3 -1
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-controls.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.min.js +1 -1
- package/dist/semiotic-experimental.module.min.js +1 -1
- package/dist/semiotic-geo.d.ts +4 -0
- package/dist/semiotic-network.d.ts +4 -0
- package/dist/semiotic-ordinal.d.ts +6 -0
- package/dist/semiotic-physics.d.ts +4 -0
- package/dist/semiotic-realtime-core.min.js +1 -1
- package/dist/semiotic-realtime-core.module.min.js +1 -1
- package/dist/semiotic-realtime-react.min.js +1 -1
- package/dist/semiotic-realtime-react.module.min.js +1 -1
- package/dist/semiotic-recipes-core.min.js +1 -1
- package/dist/semiotic-recipes-core.module.min.js +1 -1
- package/dist/semiotic-recipes-react.min.js +1 -1
- package/dist/semiotic-recipes-react.module.min.js +1 -1
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-rough.d.ts +4 -0
- package/dist/semiotic-server-edge.min.js +1 -1
- package/dist/semiotic-server-edge.module.min.js +1 -1
- package/dist/semiotic-server-node.min.js +1 -1
- package/dist/semiotic-server-node.module.min.js +1 -1
- package/dist/semiotic-themes-core.min.js +1 -1
- package/dist/semiotic-themes-core.module.min.js +1 -1
- package/dist/semiotic-themes-react.min.js +1 -1
- package/dist/semiotic-themes-react.module.min.js +1 -1
- package/dist/semiotic-themes.min.js +1 -1
- package/dist/semiotic-themes.module.min.js +1 -1
- package/dist/semiotic-utils-core.d.ts +4 -0
- package/dist/semiotic-utils-core.min.js +1 -1
- package/dist/semiotic-utils-core.module.min.js +1 -1
- package/dist/semiotic-utils-react.min.js +1 -1
- package/dist/semiotic-utils-react.module.min.js +1 -1
- package/dist/semiotic-utils.min.js +1 -1
- package/dist/semiotic-utils.module.min.js +1 -1
- package/dist/semiotic-value.min.js +1 -1
- package/dist/semiotic-value.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +4 -0
- package/dist/semiotic.d.ts +9 -1
- 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/test-utils/capturedFrameProps.d.ts +67 -0
- package/dist/test-utils/frameMock.d.ts +12 -9
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +29 -10
- package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +0 -2
- package/dist/semiotic-chunk-3FSVZ46U.module.min.js +0 -2
- package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +0 -2
- package/dist/xy-chunk-IWD6IB6V.module.min.js +0 -2
- package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +0 -2
|
@@ -16,8 +16,8 @@ export interface OrdinalSceneContext {
|
|
|
16
16
|
getO: (d: Datum) => string;
|
|
17
17
|
multiScales: ScaleLinear<number, number>[];
|
|
18
18
|
rAccessors: ((d: Datum) => number)[];
|
|
19
|
-
resolvePieceStyle: (d:
|
|
20
|
-
resolveSummaryStyle: (d:
|
|
19
|
+
resolvePieceStyle: (d: Datum | null, category?: string) => Style;
|
|
20
|
+
resolveSummaryStyle: (d: Datum | null, category?: string) => Style;
|
|
21
21
|
/** For timeline: resolve rAccessor as [start, end] */
|
|
22
22
|
getRawRange: (d: Datum) => [number, number] | null;
|
|
23
23
|
}
|
|
@@ -3,10 +3,13 @@ import type { ScaleLinear, ScaleBand } from "d3-scale";
|
|
|
3
3
|
import type { WindowMode, HoverAnnotationConfig, HoverData, AnnotationContext } from "../realtime/types";
|
|
4
4
|
import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
|
|
5
5
|
import type { SymbolName } from "./symbolPath";
|
|
6
|
-
import type { Style, SceneDatum, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors, FrameGraphicsProp, SceneAccessibilityMetadata } from "./types";
|
|
6
|
+
import type { Style, SceneDatum, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors, FrameGraphicsProp, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
|
|
7
7
|
import type { AnimateProp } from "./pipelineTransitionUtils";
|
|
8
8
|
import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
|
|
9
9
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
10
|
+
import type { OnObservationCallback } from "../store/ObservationStore";
|
|
11
|
+
import type { SemanticClickBehavior, SemanticHoverBehavior } from "../charts/shared/semanticInteractions";
|
|
12
|
+
import type { OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
|
|
10
13
|
export type OrdinalChartType = "bar" | "clusterbar" | "point" | "swarm" | "pie" | "donut" | "boxplot" | "violin" | "histogram" | "ridgeline" | "timeline" | "funnel" | "bar-funnel" | "swimlane" | "custom";
|
|
11
14
|
export interface OrdinalScales {
|
|
12
15
|
o: ScaleBand<string>;
|
|
@@ -280,6 +283,8 @@ export interface OrdinalPipelineConfig {
|
|
|
280
283
|
/** Whether to animate elements on first render (bars grow from baseline, wedges sweep in) */
|
|
281
284
|
introAnimation?: boolean;
|
|
282
285
|
staleness?: StalenessConfig;
|
|
286
|
+
/** Frame-owned logical clock for ingest, pulse, staleness, and transitions. */
|
|
287
|
+
clock?: import("./FrameRuntime").FrameClock;
|
|
283
288
|
/** When provided, replaces chart-type dispatch in scene building.
|
|
284
289
|
* Receives an OrdinalLayoutContext (scales, dimensions, theme,
|
|
285
290
|
* resolveColor) and returns scene nodes plus optional overlays. */
|
|
@@ -384,6 +389,8 @@ export interface StreamOrdinalFrameProps<T = Datum> {
|
|
|
384
389
|
* it's a band scale, not a continuous one. Ignored when explicit
|
|
385
390
|
* `rTickValues` are provided — caller has hand-picked positions. */
|
|
386
391
|
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
392
|
+
/** Optional scene paint backend. Exact scene geometry remains interactive. */
|
|
393
|
+
renderMode?: SceneRenderMode<OrdinalSceneNode>;
|
|
387
394
|
pieceStyle?: (d: Datum, category?: string) => Style;
|
|
388
395
|
summaryStyle?: (d: Datum, category?: string) => Style;
|
|
389
396
|
colorScheme?: string | string[] | Record<string, string>;
|
|
@@ -409,9 +416,17 @@ export interface StreamOrdinalFrameProps<T = Datum> {
|
|
|
409
416
|
enableHover?: boolean;
|
|
410
417
|
hoverAnnotation?: boolean | HoverAnnotationConfig;
|
|
411
418
|
tooltipContent?: (d: HoverData) => ReactNode;
|
|
412
|
-
customHoverBehavior?:
|
|
413
|
-
customClickBehavior?:
|
|
419
|
+
customHoverBehavior?: SemanticHoverBehavior<HoverData>;
|
|
420
|
+
customClickBehavior?: SemanticClickBehavior<HoverData>;
|
|
421
|
+
/** Structured interaction observations, including semantic focus/activate. */
|
|
422
|
+
onObservation?: OnObservationCallback;
|
|
423
|
+
/** @internal HOC observation callback forwarded only to annotation widgets. */
|
|
424
|
+
annotationObservationCallback?: OnObservationCallback;
|
|
425
|
+
/** Chart instance identifier included in observation events. */
|
|
426
|
+
chartId?: string;
|
|
414
427
|
annotations?: Datum[];
|
|
428
|
+
/** Observe activation of widget annotations without replacing widget behavior. */
|
|
429
|
+
onAnnotationActivate?: OnAnnotationActivateCallback;
|
|
415
430
|
autoPlaceAnnotations?: AutoPlaceAnnotations;
|
|
416
431
|
svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
|
|
417
432
|
showGrid?: boolean;
|
|
@@ -460,6 +475,18 @@ export interface StreamOrdinalFrameProps<T = Datum> {
|
|
|
460
475
|
* Set `{ intro: false }` to disable the intro animation. */
|
|
461
476
|
animate?: AnimateProp;
|
|
462
477
|
staleness?: StalenessConfig;
|
|
478
|
+
/** Optional rAF seam for deterministic host scheduling. */
|
|
479
|
+
frameScheduler?: import("./useFrame").FrameScheduler;
|
|
480
|
+
/** Monotonic wall-clock seam used to derive logical frame time. */
|
|
481
|
+
clock?: import("./FrameRuntime").FrameClock;
|
|
482
|
+
/** Injectable frame-local random source. Ordinal rendering currently has no stochastic layout. */
|
|
483
|
+
random?: import("./FrameRuntime").FrameRandom;
|
|
484
|
+
/** Serializable deterministic random seed for future ordinal stochastic work. */
|
|
485
|
+
seed?: number;
|
|
486
|
+
/** Freeze logical animation time and cancel queued work while paused. */
|
|
487
|
+
paused?: boolean;
|
|
488
|
+
/** Freeze logical animation time while the document is hidden. Defaults to true. */
|
|
489
|
+
suspendWhenHidden?: boolean;
|
|
463
490
|
/** Render a visually-hidden data table from the scene graph for screen readers */
|
|
464
491
|
accessibleTable?: boolean;
|
|
465
492
|
/** Accessible description overriding the auto-generated aria-label on the chart container */
|
|
@@ -56,6 +56,8 @@ export declare class PhysicsPipelineStore {
|
|
|
56
56
|
recordObservation(record: PhysicsObservationRecord): PhysicsObservationEvent;
|
|
57
57
|
/** Most recent explicit update result for a revision-aware host or tool. */
|
|
58
58
|
getLastUpdateResult(): UpdateResult;
|
|
59
|
+
getUpdateSnapshot(): UpdateResult;
|
|
60
|
+
subscribeUpdateResult(listener: () => void): () => void;
|
|
59
61
|
version(): number;
|
|
60
62
|
setPaused(paused: boolean): void;
|
|
61
63
|
setVisible(visible: boolean): void;
|
|
@@ -10,6 +10,8 @@ import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../../type
|
|
|
10
10
|
import { type AutoPlaceAnnotations } from "../../recipes/annotationLayout";
|
|
11
11
|
import type { AnnotationContext } from "../../realtime/types";
|
|
12
12
|
import type { PhysicsBodyState } from "./PhysicsKernel";
|
|
13
|
+
import type { OnObservationCallback } from "../../store/ObservationStore";
|
|
14
|
+
import { type OnAnnotationActivateCallback } from "../../charts/shared/annotationActivation";
|
|
13
15
|
export type PhysicsAnnotationAnchorNode = {
|
|
14
16
|
pointId?: string;
|
|
15
17
|
x: number;
|
|
@@ -47,6 +49,10 @@ export interface PhysicsSVGOverlayProps {
|
|
|
47
49
|
/** Live body anchors for pointId / bodyId annotations. */
|
|
48
50
|
pointNodes?: PhysicsAnnotationAnchorNode[];
|
|
49
51
|
annotations?: Datum[];
|
|
52
|
+
onAnnotationActivate?: OnAnnotationActivateCallback;
|
|
53
|
+
onObservation?: OnObservationCallback;
|
|
54
|
+
chartId?: string;
|
|
55
|
+
chartType?: string;
|
|
50
56
|
autoPlaceAnnotations?: AutoPlaceAnnotations;
|
|
51
57
|
svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
|
|
52
58
|
/** Optional foreground SVG already composed into the frame stack. */
|
|
@@ -157,7 +157,7 @@ export type StreamPhysicsBodyForce = StreamPhysicsRegionVector | ((context: Stre
|
|
|
157
157
|
export interface PhysicsHoverData {
|
|
158
158
|
__semioticHoverData: true;
|
|
159
159
|
body: PhysicsBodyState;
|
|
160
|
-
data:
|
|
160
|
+
data: Datum | PhysicsBodyState;
|
|
161
161
|
id: string;
|
|
162
162
|
type: "body";
|
|
163
163
|
x: number;
|
|
@@ -183,6 +183,17 @@ export interface StreamPhysicsFrameProps {
|
|
|
183
183
|
* deterministic clock for replayable tests or evidence capture.
|
|
184
184
|
*/
|
|
185
185
|
clock?: () => number;
|
|
186
|
+
/**
|
|
187
|
+
* Host-level random seam for frame-local visual work. It deliberately does
|
|
188
|
+
* not replace the physics kernel's deterministic random source.
|
|
189
|
+
*/
|
|
190
|
+
random?: () => number;
|
|
191
|
+
/**
|
|
192
|
+
* Serializable deterministic seed for frame-local work and, when
|
|
193
|
+
* `config.kernel.seed` is omitted, the built-in physics kernel. An explicit
|
|
194
|
+
* kernel seed always wins so existing simulation snapshots remain stable.
|
|
195
|
+
*/
|
|
196
|
+
seed?: number;
|
|
186
197
|
bodySemanticItemLimit?: number;
|
|
187
198
|
bodySemanticItems?: boolean | PhysicsBodySemanticItemAccessor;
|
|
188
199
|
bodySemanticUpdateMs?: number;
|
|
@@ -230,6 +241,8 @@ export interface StreamPhysicsFrameProps {
|
|
|
230
241
|
* `physics: "barrier"|"sensor"` also feed colliders via PhysicsAnnotations.
|
|
231
242
|
*/
|
|
232
243
|
annotations?: Datum[];
|
|
244
|
+
/** Observe activation of widget annotations without replacing widget behavior. */
|
|
245
|
+
onAnnotationActivate?: import("../../charts/shared/annotationActivation").OnAnnotationActivateCallback;
|
|
233
246
|
autoPlaceAnnotations?: AutoPlaceAnnotations;
|
|
234
247
|
svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => React.ReactNode;
|
|
235
248
|
legend?: React.ReactNode | {
|
|
@@ -257,11 +270,13 @@ export interface StreamPhysicsFrameProps {
|
|
|
257
270
|
* Click on a body (or empty canvas when null). Prefer this over
|
|
258
271
|
* `onBodyPointerDown` when you only need the Semiotic click contract.
|
|
259
272
|
*/
|
|
260
|
-
onClick?:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
273
|
+
onClick?: {
|
|
274
|
+
bivarianceHack(datum: Datum | null, event: {
|
|
275
|
+
x: number;
|
|
276
|
+
y: number;
|
|
277
|
+
body: PhysicsBodyState | null;
|
|
278
|
+
}): void;
|
|
279
|
+
}["bivarianceHack"];
|
|
265
280
|
onRegionEvent?: (event: StreamPhysicsRegionEvent) => void;
|
|
266
281
|
onSimulationExecutionChange?: (state: StreamPhysicsExecutionState) => void;
|
|
267
282
|
onBodyPointerDown?: (body: PhysicsBodyState | null, event: React.PointerEvent<HTMLCanvasElement>) => void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ObservationInputType, OnObservationCallback } from "../../store/ObservationStore";
|
|
2
|
+
interface CurrentRef<T> {
|
|
3
|
+
current: T;
|
|
4
|
+
}
|
|
5
|
+
export type PhysicsFrameObservationType = "hover" | "hover-end" | "click" | "click-end" | "focus" | "activate";
|
|
6
|
+
export interface PhysicsFrameObservationPayload {
|
|
7
|
+
datum?: unknown;
|
|
8
|
+
x?: number;
|
|
9
|
+
y?: number;
|
|
10
|
+
inputType?: ObservationInputType;
|
|
11
|
+
}
|
|
12
|
+
interface PhysicsFrameObservationOptions {
|
|
13
|
+
onObservationRef: CurrentRef<OnObservationCallback | undefined>;
|
|
14
|
+
chartIdRef: CurrentRef<string | undefined>;
|
|
15
|
+
wallClockRef: CurrentRef<() => number>;
|
|
16
|
+
}
|
|
17
|
+
/** Builds a stable emitter while reading the frame's latest callback and clock refs. */
|
|
18
|
+
export declare function usePhysicsFrameObservationEmitter({ onObservationRef, chartIdRef, wallClockRef }: PhysicsFrameObservationOptions): (type: PhysicsFrameObservationType, payload?: PhysicsFrameObservationPayload) => void;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PhysicsPipelineStore, type PhysicsPipelineConfig, type PhysicsQueuedSpawn, type PhysicsSpawnPacingOptions } from "./PhysicsPipelineStore";
|
|
2
|
+
/** Create the retained simulation store and seed its initial queued bodies. */
|
|
3
|
+
export declare function createPhysicsFrameStore(config: PhysicsPipelineConfig | undefined, initialSpawns: PhysicsQueuedSpawn[] | undefined, initialSpawnPacing: PhysicsSpawnPacingOptions | undefined): PhysicsPipelineStore;
|
|
4
|
+
export declare function defaultPhysicsFrameClock(): number;
|
|
@@ -3,7 +3,25 @@ import type { PhysicsPipelineConfig } from "./PhysicsPipelineTypes";
|
|
|
3
3
|
import type { Invalidation } from "../pipelineUpdateContract";
|
|
4
4
|
export declare const PHYSICS_BODY_INVALIDATIONS: readonly Invalidation[];
|
|
5
5
|
export declare const PHYSICS_MOTION_INVALIDATIONS: readonly Invalidation[];
|
|
6
|
-
export declare const PHYSICS_CONFIG_INVALIDATIONS: readonly Invalidation[];
|
|
7
6
|
export declare const PHYSICS_STATE_INVALIDATIONS: readonly Invalidation[];
|
|
7
|
+
/** Whether a config patch rebuilds Physics' retained simulation resource. */
|
|
8
|
+
export type PhysicsRetainedDataEffect = "preserve" | "rebuild";
|
|
9
|
+
export interface PhysicsConfigPatchDependency {
|
|
10
|
+
readonly retainedData: PhysicsRetainedDataEffect;
|
|
11
|
+
readonly invalidations: readonly Invalidation[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Physics config changes either rebuild the retained engine, affect the next
|
|
15
|
+
* simulated geometry, alter capacity presentation, or only change future
|
|
16
|
+
* stepping/observation behavior. This keeps direct store consumers from
|
|
17
|
+
* treating every physics option as a full scene-layout update.
|
|
18
|
+
*/
|
|
19
|
+
export declare const PHYSICS_CONFIG_PATCH_DEPENDENCIES: Readonly<Record<string, PhysicsConfigPatchDependency>>;
|
|
20
|
+
export interface PhysicsConfigPatchClassification {
|
|
21
|
+
readonly retainedData: PhysicsRetainedDataEffect;
|
|
22
|
+
readonly invalidations: ReadonlySet<Invalidation>;
|
|
23
|
+
}
|
|
24
|
+
/** Union the declared effects for a patch after its effective keys are known. */
|
|
25
|
+
export declare function classifyPhysicsConfigPatch(keys: readonly string[]): PhysicsConfigPatchClassification;
|
|
8
26
|
export declare function physicsKernelOptionsEqual(a: PhysicsKernelOptions | undefined, b: PhysicsKernelOptions | undefined): boolean;
|
|
9
27
|
export declare function changedPhysicsConfigKeys(config: PhysicsPipelineConfig, previous: PhysicsPipelineConfig): string[];
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type MutableRefObject, type RefObject } from "react";
|
|
2
|
+
import type { FrameRuntime } from "../FrameRuntime";
|
|
2
3
|
import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
|
|
3
4
|
import type { PhysicsWorkerCommand } from "./PhysicsWorkerProtocol";
|
|
4
5
|
export declare function isPhysicsDocumentVisible(): boolean;
|
|
5
6
|
interface PhysicsFrameLifecyclePolicyInput {
|
|
6
7
|
cancelRender: () => void;
|
|
8
|
+
frameRuntime: FrameRuntime;
|
|
7
9
|
lastFrameTimeRef: MutableRefObject<number | null>;
|
|
8
10
|
paused: boolean;
|
|
9
11
|
postWorkerCommand: (command: PhysicsWorkerCommand, notifyTick?: boolean) => void;
|
|
@@ -12,5 +14,5 @@ interface PhysicsFrameLifecyclePolicyInput {
|
|
|
12
14
|
suspendWhenHidden: boolean;
|
|
13
15
|
}
|
|
14
16
|
/** Keep pause and page-visibility scheduling policy consistent for physics frames. */
|
|
15
|
-
export declare function usePhysicsFrameLifecyclePolicy({ cancelRender, lastFrameTimeRef, paused, postWorkerCommand, requestRender, storeRef, suspendWhenHidden }: PhysicsFrameLifecyclePolicyInput): void;
|
|
17
|
+
export declare function usePhysicsFrameLifecyclePolicy({ cancelRender, frameRuntime, lastFrameTimeRef, paused, postWorkerCommand, requestRender, storeRef, suspendWhenHidden }: PhysicsFrameLifecyclePolicyInput): void;
|
|
16
18
|
export {};
|
|
@@ -11,6 +11,8 @@ import type { MarginType } from "../types/marginType";
|
|
|
11
11
|
export interface PipelineConfig {
|
|
12
12
|
chartType: StreamChartType;
|
|
13
13
|
runtimeMode?: "streaming" | "bounded";
|
|
14
|
+
/** Optional monotonic clock owned by a frame runtime or embedding host. */
|
|
15
|
+
clock?: () => number;
|
|
14
16
|
windowSize: number;
|
|
15
17
|
windowMode: WindowMode;
|
|
16
18
|
arrowOfTime: ArrowOfTime;
|
|
@@ -71,7 +73,7 @@ export interface PipelineConfig {
|
|
|
71
73
|
/** Internal: set by PipelineStore when open/close accessors are both missing */
|
|
72
74
|
candlestickRangeMode?: boolean;
|
|
73
75
|
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
74
|
-
boundsStyle?:
|
|
76
|
+
boundsStyle?: Style | ((d: Datum, group?: string) => Style);
|
|
75
77
|
y0Accessor?: string | ((d: Datum) => CoercibleNumber);
|
|
76
78
|
band?: BandConfig | BandConfig[];
|
|
77
79
|
gradientFill?: {
|
|
@@ -90,7 +92,7 @@ export interface PipelineConfig {
|
|
|
90
92
|
color: string;
|
|
91
93
|
}>;
|
|
92
94
|
};
|
|
93
|
-
lineStyle?:
|
|
95
|
+
lineStyle?: Style | ((d: Datum, group?: string) => Style);
|
|
94
96
|
pointStyle?: (d: Datum) => Style & {
|
|
95
97
|
r?: number;
|
|
96
98
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Datum } from "../charts/shared/datumTypes";
|
|
1
|
+
import type { Datum, DatumValue } from "../charts/shared/datumTypes";
|
|
2
2
|
/**
|
|
3
3
|
* Shared decay encoding utilities for all pipeline stores.
|
|
4
4
|
*
|
|
@@ -37,4 +37,4 @@ export declare function buildDatumIndexMap(data: readonly Datum[]): Map<Datum, n
|
|
|
37
37
|
*
|
|
38
38
|
* @param indexMap Optional prebuilt datum→index map (see {@link buildDatumIndexMap}).
|
|
39
39
|
*/
|
|
40
|
-
export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[], indexMap?: Map<
|
|
40
|
+
export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[], indexMap?: Map<DatumValue, number>): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Datum } from "../charts/shared/datumTypes";
|
|
1
|
+
import type { Datum, DatumValue } from "../charts/shared/datumTypes";
|
|
2
2
|
/**
|
|
3
3
|
* Pulse encoding for XY pipeline scene nodes.
|
|
4
4
|
*
|
|
@@ -21,7 +21,7 @@ export declare function computePulseIntensity(pulse: PulseConfig, insertTime: nu
|
|
|
21
21
|
* @param indexMap Optional prebuilt datum→index map so a scene pass that
|
|
22
22
|
* also runs decay can share one O(n) walk of the buffer.
|
|
23
23
|
*/
|
|
24
|
-
export declare function applyPulse(pulse: PulseConfig, nodes: SceneNode[], data: Datum[], timestampBuffer: RingBuffer<number>, indexMap?: Map<
|
|
24
|
+
export declare function applyPulse(pulse: PulseConfig, nodes: SceneNode[], data: Datum[], timestampBuffer: RingBuffer<number>, indexMap?: Map<DatumValue, number>, now?: number): boolean;
|
|
25
25
|
/**
|
|
26
26
|
* Update the pulse-owned fields for a node that the pipeline has matched to
|
|
27
27
|
* source data. Keeping this narrow is important for custom layouts: nodes
|
|
@@ -1,12 +1,33 @@
|
|
|
1
|
-
import { type ChangeSet, type UpdateResult } from "./pipelineUpdateContract";
|
|
1
|
+
import { type ChangeSet, type Invalidation, type UpdateResult } from "./pipelineUpdateContract";
|
|
2
|
+
/** Whether a config patch re-derives retained XY data resources. */
|
|
3
|
+
export type XYRetainedDataEffect = "preserve" | "rebuild";
|
|
4
|
+
export interface XYConfigPatchDependency {
|
|
5
|
+
readonly retainedData: XYRetainedDataEffect;
|
|
6
|
+
readonly invalidations: readonly Invalidation[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* XY's explicit config-patch dependency table. Accessor and chart-mode
|
|
10
|
+
* changes re-derive retained data; scale/layout keys preserve data while
|
|
11
|
+
* rebuilding derived scene state; styling and overlays repaint their own
|
|
12
|
+
* layers. Mount-only and future-work keys intentionally have no immediate
|
|
13
|
+
* revision effect.
|
|
14
|
+
*/
|
|
15
|
+
export declare const XY_CONFIG_PATCH_DEPENDENCIES: Readonly<Record<string, XYConfigPatchDependency>>;
|
|
16
|
+
export interface XYConfigPatchClassification {
|
|
17
|
+
readonly retainedData: XYRetainedDataEffect;
|
|
18
|
+
readonly invalidations: ReadonlySet<Invalidation>;
|
|
19
|
+
}
|
|
20
|
+
/** Union the declared effects for a patch after its effective keys are known. */
|
|
21
|
+
export declare function classifyXYConfigPatch(keys: readonly string[]): XYConfigPatchClassification;
|
|
2
22
|
type DataChangeKind = Extract<ChangeSet["kind"], "ingest" | "replace" | "remove" | "update" | "clear">;
|
|
3
23
|
/** Result bookkeeping and invalidation policy for the XY PipelineStore pilot. */
|
|
4
24
|
export declare class PipelineStoreUpdateResults {
|
|
5
25
|
private tracker;
|
|
6
26
|
get last(): UpdateResult;
|
|
27
|
+
subscribe(listener: () => void): () => void;
|
|
7
28
|
recordData(kind: DataChangeKind, count?: number): UpdateResult;
|
|
8
29
|
recordNoop(kind: DataChangeKind | "restyle"): UpdateResult;
|
|
9
30
|
recordRestyle(hasCustomRestyle: boolean): UpdateResult;
|
|
10
|
-
recordConfig(keys: readonly string[]
|
|
31
|
+
recordConfig(keys: readonly string[]): UpdateResult;
|
|
11
32
|
}
|
|
12
33
|
export {};
|
|
@@ -65,7 +65,7 @@ export interface TransitionState {
|
|
|
65
65
|
* Detects entering nodes (new, no prev match) and exiting nodes (prev, no new match).
|
|
66
66
|
* Mutates scene and exitNodes in place. Returns updated state.
|
|
67
67
|
*/
|
|
68
|
-
export declare function startTransition(ctx: TransitionContext, transition: TransitionConfig, state: TransitionState, prevPositionMap: Map<string, PrevPosition>, prevPathMap: Map<string, PrevPath
|
|
68
|
+
export declare function startTransition(ctx: TransitionContext, transition: TransitionConfig, state: TransitionState, prevPositionMap: Map<string, PrevPosition>, prevPathMap: Map<string, PrevPath>, startTime?: number): TransitionState;
|
|
69
69
|
/**
|
|
70
70
|
* Advance the transition animation. Returns true if still animating.
|
|
71
71
|
* Mutates scene nodes in place.
|
|
@@ -54,9 +54,16 @@ export declare function createUpdateResult(changeSet: ChangeSet, invalidations:
|
|
|
54
54
|
* keeps revision bookkeeping out of family-specific data/layout code while
|
|
55
55
|
* preserving each store's existing mutation API.
|
|
56
56
|
*/
|
|
57
|
+
export type UpdateResultListener = () => void;
|
|
58
|
+
export interface UpdateResultStore {
|
|
59
|
+
getUpdateSnapshot(): UpdateResult;
|
|
60
|
+
subscribeUpdateResult(listener: UpdateResultListener): () => void;
|
|
61
|
+
}
|
|
57
62
|
export declare class UpdateResultTracker {
|
|
58
63
|
private revisions;
|
|
59
64
|
private latest;
|
|
65
|
+
private listeners;
|
|
60
66
|
get last(): UpdateResult;
|
|
67
|
+
subscribe(listener: UpdateResultListener): () => void;
|
|
61
68
|
record(changeSet: ChangeSet, invalidations: Iterable<Invalidation>): UpdateResult;
|
|
62
69
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { UpdateResult } from "./pipelineUpdateContract";
|
|
2
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
3
|
+
export type { UpdateResult } from "./pipelineUpdateContract";
|
|
4
|
+
/** Shared additive update-result read and subscription surface for stream stores. */
|
|
5
|
+
export interface PipelineUpdateResultSource {
|
|
6
|
+
readonly last: UpdateResult;
|
|
7
|
+
subscribe(listener: () => void): () => void;
|
|
8
|
+
}
|
|
9
|
+
/** Public lifecycle surface installed on each stream store prototype. */
|
|
10
|
+
export interface UpdateResultStore {
|
|
11
|
+
getLastUpdateResult(): UpdateResult;
|
|
12
|
+
getUpdateSnapshot(): UpdateResult;
|
|
13
|
+
subscribeUpdateResult(listener: () => void): () => void;
|
|
14
|
+
setLayoutSelection(selection: CustomLayoutSelection | null): void;
|
|
15
|
+
markStylePaintPending(): void;
|
|
16
|
+
consumeStylePaintPending(): boolean;
|
|
17
|
+
}
|
|
18
|
+
/** Adds the shared lifecycle methods without imposing a base-class constructor. */
|
|
19
|
+
export declare function attachUpdateResultStore(target: {
|
|
20
|
+
prototype: object;
|
|
21
|
+
}): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { SceneRenderBackend, SceneRenderMode, Style } from "./types";
|
|
3
|
+
type SceneLike = {
|
|
4
|
+
type?: string;
|
|
5
|
+
datum?: unknown;
|
|
6
|
+
style?: Style;
|
|
7
|
+
};
|
|
8
|
+
/** Resolve a whole-scene or per-datum renderer. The legacy `sketchy` token
|
|
9
|
+
* stays on the existing built-in rendering path. */
|
|
10
|
+
export declare function resolveSceneRenderBackend<Node extends SceneLike>(renderMode: SceneRenderMode<Node> | undefined, node: Node): SceneRenderBackend<Node> | undefined;
|
|
11
|
+
/** Paint nodes in scene order, delegating unsupported runs to the built-in renderer. */
|
|
12
|
+
export declare function paintSceneWithBackend<Node extends SceneLike>(args: {
|
|
13
|
+
context: CanvasRenderingContext2D;
|
|
14
|
+
nodes: Node[];
|
|
15
|
+
renderMode: SceneRenderMode<Node> | undefined;
|
|
16
|
+
pixelRatio: number;
|
|
17
|
+
paintBuiltIn: (nodes: Node[]) => void;
|
|
18
|
+
}): void;
|
|
19
|
+
/** Try a backend for SSR/static SVG, then invoke the existing converter. */
|
|
20
|
+
export declare function renderSceneWithBackend<Node extends SceneLike>(args: {
|
|
21
|
+
node: Node;
|
|
22
|
+
index: number;
|
|
23
|
+
renderMode: SceneRenderMode<Node> | undefined;
|
|
24
|
+
fallback: () => React.ReactNode;
|
|
25
|
+
}): React.ReactNode;
|
|
26
|
+
export declare function resetRenderBackendWarningsForTests(): void;
|
|
27
|
+
export {};
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* mechanical bits that recur regardless of the shape being painted.
|
|
17
17
|
*/
|
|
18
18
|
import type { CurveType } from "../types";
|
|
19
|
+
import { type HatchFill } from "../../charts/shared/hatchFill";
|
|
19
20
|
import type { CurveFactory } from "d3-shape";
|
|
20
21
|
/**
|
|
21
22
|
* Structural shapes for the gradient configs the helpers accept. Kept
|
|
@@ -61,7 +62,20 @@ export declare function resolveCurveFactory(curve: CurveType | undefined): Curve
|
|
|
61
62
|
* `(typeof X === "string" ? resolveCSSColor(ctx, X) : X) || fallback`,
|
|
62
63
|
* repeated once per renderer per fill/stroke site.
|
|
63
64
|
*/
|
|
64
|
-
export declare function resolveCanvasFill(ctx: CanvasRenderingContext2D, fill: string | CanvasPattern | null | undefined, fallback: string): string | CanvasPattern;
|
|
65
|
+
export declare function resolveCanvasFill(ctx: CanvasRenderingContext2D, fill: string | HatchFill | CanvasPattern | null | undefined, fallback: string): string | CanvasPattern;
|
|
66
|
+
/**
|
|
67
|
+
* Narrow a possibly-`HatchFill` `style.fill` to the `string | CanvasPattern`
|
|
68
|
+
* a canvas `fillStyle` accepts, for the direct-assign sites that don't
|
|
69
|
+
* otherwise route through {@link resolveCanvasFill}. Returns `undefined` for a
|
|
70
|
+
* nullish (or unresolvable) fill so callers can apply their own fallback with
|
|
71
|
+
* `?? "…"`.
|
|
72
|
+
*
|
|
73
|
+
* Delegates to {@link resolveCanvasFill} so behavior stays consistent: string
|
|
74
|
+
* fills (including `var(--…)`) resolve through `resolveCSSColor` — a raw CSS
|
|
75
|
+
* variable written straight to `fillStyle` would silently paint black — and a
|
|
76
|
+
* `HatchFill` resolves to its `CanvasPattern` (or its resolved background).
|
|
77
|
+
*/
|
|
78
|
+
export declare function coerceCanvasFill(ctx: CanvasRenderingContext2D, fill: string | HatchFill | CanvasPattern | null | undefined): string | CanvasPattern | undefined;
|
|
65
79
|
/**
|
|
66
80
|
* Build a linear gradient from a `FillGradient` config. Returns `null`
|
|
67
81
|
* when the gradient cannot be constructed (fewer than two valid color
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { GeoSceneNode } from "../geoTypes";
|
|
1
|
+
import type { GeoScales, GeoSceneNode } from "../geoTypes";
|
|
2
|
+
import type { StreamLayout } from "../types";
|
|
2
3
|
/**
|
|
3
4
|
* Canvas renderer for GeoAreaSceneNode — projected geographic polygons.
|
|
4
5
|
* Uses Path2D for GPU-accelerated rendering of complex geo paths.
|
|
@@ -6,4 +7,4 @@ import type { GeoSceneNode } from "../geoTypes";
|
|
|
6
7
|
* Points and lines in a geo frame are rendered by the existing
|
|
7
8
|
* pointCanvasRenderer and lineCanvasRenderer respectively.
|
|
8
9
|
*/
|
|
9
|
-
export declare function geoCanvasRenderer(ctx: CanvasRenderingContext2D, nodes: GeoSceneNode[], _scales:
|
|
10
|
+
export declare function geoCanvasRenderer(ctx: CanvasRenderingContext2D, nodes: GeoSceneNode[], _scales: GeoScales, _layout: StreamLayout): void;
|
|
@@ -8,4 +8,4 @@ export declare function renderNetworkParticles(ctx: CanvasRenderingContext2D, po
|
|
|
8
8
|
/**
|
|
9
9
|
* Spawn particles for all edges proportional to their value.
|
|
10
10
|
*/
|
|
11
|
-
export declare function spawnNetworkParticles(pool: ParticlePool, edges: RealtimeEdge[], deltaTime: number, style: ParticleStyle): void;
|
|
11
|
+
export declare function spawnNetworkParticles(pool: ParticlePool, edges: RealtimeEdge[], deltaTime: number, style: ParticleStyle, random?: () => number): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
3
|
+
import type { Style } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Optional paint backend for pre-computed scene nodes. A backend may change
|
|
6
|
+
* how a mark looks, but it must not mutate the scene node: original geometry
|
|
7
|
+
* remains authoritative for interaction, focus, transitions, and accessibility.
|
|
8
|
+
*/
|
|
9
|
+
export interface SceneRenderBackend<Node = unknown> {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
cacheKey(node: Node, style: Style): string;
|
|
12
|
+
drawCanvas(args: {
|
|
13
|
+
context: CanvasRenderingContext2D;
|
|
14
|
+
node: Node;
|
|
15
|
+
style: Style;
|
|
16
|
+
pixelRatio: number;
|
|
17
|
+
}): boolean;
|
|
18
|
+
renderStaticSVG(args: {
|
|
19
|
+
node: Node;
|
|
20
|
+
style: Style;
|
|
21
|
+
key: string;
|
|
22
|
+
}): ReactNode | null;
|
|
23
|
+
}
|
|
24
|
+
/** A backend can cover the whole scene or be selected per datum. */
|
|
25
|
+
export type SceneRenderDatum<Node> = Node extends {
|
|
26
|
+
datum?: infer NodeDatum;
|
|
27
|
+
} ? Exclude<NodeDatum, undefined> | null : Datum | null;
|
|
28
|
+
export type SceneRenderMode<Node = unknown> = "sketchy" | SceneRenderBackend<Node> | ((datum: SceneRenderDatum<Node>, node: Node) => "sketchy" | SceneRenderBackend<Node> | undefined);
|
|
@@ -1,18 +1,45 @@
|
|
|
1
|
-
import type { RevisionSet, UpdateResult } from "./pipelineUpdateContract";
|
|
2
|
-
type SceneRevisionSet = Pick<RevisionSet, "sceneGeometry" | "layout" | "domain">;
|
|
3
|
-
interface SceneRevisionCheck {
|
|
1
|
+
import type { RevisionSet, UpdateResult, UpdateResultStore } from "./pipelineUpdateContract";
|
|
2
|
+
export type SceneRevisionSet = Pick<RevisionSet, "sceneGeometry" | "layout" | "domain">;
|
|
3
|
+
export interface SceneRevisionCheck {
|
|
4
4
|
revisions: SceneRevisionSet;
|
|
5
5
|
signature: string;
|
|
6
6
|
sawSignals: boolean;
|
|
7
7
|
wasUnconsumed: boolean;
|
|
8
8
|
warnUnconsumed: boolean;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
interface SceneRevisionStore extends UpdateResultStore {
|
|
11
|
+
getLastUpdateResult(): UpdateResult;
|
|
12
|
+
}
|
|
13
|
+
/** Development-only consumption and duplicate-compute diagnostics for a scene host. */
|
|
11
14
|
export declare class SceneRevisionDiagnostics {
|
|
15
|
+
private readonly hostName;
|
|
16
|
+
constructor(hostName?: string);
|
|
12
17
|
private lastConsumed;
|
|
18
|
+
private lastObserved;
|
|
13
19
|
private lastDuplicateWarning;
|
|
14
20
|
private lastUnconsumedWarning;
|
|
21
|
+
/**
|
|
22
|
+
* Accept a React external-store observation without participating in frame
|
|
23
|
+
* scheduling or paint. The imperative result passed to beforeCompute remains
|
|
24
|
+
* authoritative; retaining the high-water mark only protects development
|
|
25
|
+
* diagnostics when React observes an update between frame passes.
|
|
26
|
+
*/
|
|
27
|
+
observeUpdateResult(updateResult: UpdateResult): void;
|
|
15
28
|
beforeCompute(updateResult: UpdateResult, isTransitioning: boolean): SceneRevisionCheck;
|
|
16
29
|
afterCompute(check: SceneRevisionCheck, computedScene: boolean, dimsChanged: boolean): void;
|
|
17
30
|
}
|
|
31
|
+
/** Keep a frame's development-only revision tracker stable across renders. */
|
|
32
|
+
export declare function useSceneRevisionDiagnostics(hostName: string): import("react").RefObject<SceneRevisionDiagnostics>;
|
|
33
|
+
/** Wrap an unconditional scene build with the common revision accounting. */
|
|
34
|
+
export declare function runSceneBuild(diagnostics: SceneRevisionDiagnostics, store: SceneRevisionStore, build: () => void, isTransitioning?: boolean, dimsChanged?: boolean): void;
|
|
35
|
+
/**
|
|
36
|
+
* Observes external-store revisions without putting diagnostics on a React
|
|
37
|
+
* render path. Stores can record non-invalidating operational results during
|
|
38
|
+
* host effects, so a useSyncExternalStore subscription here could feed those
|
|
39
|
+
* diagnostics back into the host's render cycle.
|
|
40
|
+
*/
|
|
41
|
+
export declare const SceneRevisionDiagnosticsObserver: import("react").MemoExoticComponent<({ store, diagnostics }: {
|
|
42
|
+
store: UpdateResultStore;
|
|
43
|
+
diagnostics: SceneRevisionDiagnostics;
|
|
44
|
+
}) => null>;
|
|
18
45
|
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OnObservationCallback } from "../store/ObservationStore";
|
|
2
|
+
import type { SemanticClickBehavior, SemanticHoverBehavior } from "../charts/shared/semanticInteractions";
|
|
3
|
+
import type { OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
|
|
4
|
+
/** Interaction props shared by all Stream Frame families. */
|
|
5
|
+
export interface StreamSemanticInteractionProps<Hover> {
|
|
6
|
+
customHoverBehavior?: SemanticHoverBehavior<Hover>;
|
|
7
|
+
customClickBehavior?: SemanticClickBehavior<Hover>;
|
|
8
|
+
/** Structured interaction observations, including semantic focus/activate. */
|
|
9
|
+
onObservation?: OnObservationCallback;
|
|
10
|
+
/** @internal HOC observation callback forwarded only to annotation widgets. */
|
|
11
|
+
annotationObservationCallback?: OnObservationCallback;
|
|
12
|
+
/** Chart instance identifier included in observation events. */
|
|
13
|
+
chartId?: string;
|
|
14
|
+
/** Observe activation of widget annotations without replacing widget behavior. */
|
|
15
|
+
onAnnotationActivate?: OnAnnotationActivateCallback;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ThemeSemanticColors {
|
|
2
|
+
primary?: string;
|
|
3
|
+
secondary?: string;
|
|
4
|
+
success?: string;
|
|
5
|
+
danger?: string;
|
|
6
|
+
warning?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
info?: string;
|
|
9
|
+
text?: string;
|
|
10
|
+
textSecondary?: string;
|
|
11
|
+
border?: string;
|
|
12
|
+
grid?: string;
|
|
13
|
+
surface?: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function resolveHorizontalTickAnchor(mode: "middle" | "edges" | undefined, isLeftmost: boolean, isRightmost: boolean): "start" | "middle" | "end";
|
|
2
|
+
export declare function resolveVerticalTickBaseline(mode: "middle" | "edges" | undefined, isTopmost: boolean, isBottommost: boolean): "hanging" | "middle" | "auto";
|
|
3
|
+
export declare function tickPixelExtent(ticks: Array<{
|
|
4
|
+
pixel: number;
|
|
5
|
+
}>): {
|
|
6
|
+
min: number | null;
|
|
7
|
+
max: number | null;
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveGridDash(style: "dashed" | "dotted" | string | undefined): string | undefined;
|
|
10
|
+
export declare function jaggedBaselinePath(orient: "left" | "right" | "top" | "bottom", width: number, height: number): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FrameScheduler } from "../useFrame";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic rAF scheduler for frame tests. It deliberately permits zero
|
|
4
|
+
* as the first handle so tests cannot rely on truthiness for pending work.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createFrameScheduler(firstHandle?: number): {
|
|
7
|
+
scheduler: FrameScheduler;
|
|
8
|
+
requestedHandles: number[];
|
|
9
|
+
cancelledHandles: number[];
|
|
10
|
+
readonly pendingCount: number;
|
|
11
|
+
flush(timestamp?: number): void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SceneRevisionDiagnostics, type SceneRevisionCheck } from "../sceneRevisionDiagnostics";
|
|
2
|
+
import type { UpdateResult } from "../pipelineUpdateContract";
|
|
3
|
+
export interface UnconsumedSceneRevisionProbe {
|
|
4
|
+
diagnostics: SceneRevisionDiagnostics;
|
|
5
|
+
initial: SceneRevisionCheck;
|
|
6
|
+
later: SceneRevisionCheck;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Assert the contract that a later style/state result cannot conceal scene
|
|
10
|
+
* work that a host has not consumed. Callers finish the probe with
|
|
11
|
+
* `diagnostics.afterCompute(probe.later, false, false)` and assert its warning.
|
|
12
|
+
*/
|
|
13
|
+
export declare function assertUnconsumedSceneRevisionSurvivesLaterUpdate(initialResult: UpdateResult, laterResult: UpdateResult, hostName?: string): UnconsumedSceneRevisionProbe;
|