semiotic 3.7.5 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +63 -18
- 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 +1741 -163
- package/ai/examples.md +174 -0
- package/ai/schema.json +2733 -536
- package/ai/surface-manifest.json +201 -0
- package/ai/system-prompt.md +20 -4
- package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
- package/dist/components/AccessibleNavTree.d.ts +7 -1
- 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/chartClinicMetadata.generated.d.ts +15 -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/ai/useNavigationSync.d.ts +17 -2
- package/dist/components/chartContainerMobile.d.ts +9 -0
- 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/ChoroplethMap.d.ts +19 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +15 -3
- package/dist/components/charts/geo/FlowMap.d.ts +11 -7
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +15 -3
- package/dist/components/charts/geo/index.d.ts +2 -0
- package/dist/components/charts/index.d.ts +35 -1
- package/dist/components/charts/network/ChordDiagram.d.ts +10 -2
- package/dist/components/charts/network/CirclePack.d.ts +1 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +26 -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 +10 -2
- 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 +22 -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 +12 -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 +12 -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 +54 -0
- package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +60 -0
- package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +74 -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 +99 -0
- package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +60 -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 +57 -0
- package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
- package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -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/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/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/chartSelectionUtils.d.ts +4 -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/datumTypes.d.ts +2 -0
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +6 -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/formatUtils.d.ts +3 -3
- package/dist/components/charts/shared/hatchFill.d.ts +87 -0
- package/dist/components/charts/shared/hooks.d.ts +34 -10
- 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/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
- 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 +17 -5
- package/dist/components/charts/shared/styleRules.d.ts +205 -0
- package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
- package/dist/components/charts/shared/types.d.ts +58 -7
- package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
- package/dist/components/charts/shared/useChartSetup.d.ts +11 -4
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +17 -5
- 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/useNetworkChartSetup.d.ts +6 -2
- package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +25 -2
- package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -2
- package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
- 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 +7 -9
- 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 +9 -1
- package/dist/components/charts/xy/BubbleChart.d.ts +10 -1
- 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 +12 -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 +8 -1
- package/dist/components/charts/xy/Scatterplot.d.ts +11 -1
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
- package/dist/components/charts/xy/StackedAreaChart.d.ts +16 -4
- 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/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 +46 -9
- 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/rough/createRoughRenderMode.d.ts +46 -0
- package/dist/components/semiotic-ai-core.d.ts +47 -0
- package/dist/components/semiotic-ai.d.ts +53 -9
- package/dist/components/semiotic-controls.d.ts +20 -0
- package/dist/components/semiotic-experimental.d.ts +38 -9
- package/dist/components/semiotic-geo.d.ts +15 -0
- package/dist/components/semiotic-network.d.ts +15 -0
- package/dist/components/semiotic-ordinal.d.ts +14 -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 +60 -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-rough.d.ts +4 -0
- 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 +50 -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 +12 -0
- package/dist/components/semiotic.d.ts +44 -8
- package/dist/components/server/animatedGif.d.ts +36 -0
- package/dist/components/server/optionalImageTypes.d.ts +37 -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 +21 -0
- package/dist/components/server/serverChartConfigs.d.ts +22 -12
- 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/staticAnnotations.d.ts +6 -3
- package/dist/components/server/staticGeo.d.ts +4 -0
- package/dist/components/server/staticLegend.d.ts +2 -2
- package/dist/components/server/staticNetwork.d.ts +8 -0
- package/dist/components/server/staticOrdinal.d.ts +11 -0
- package/dist/components/server/staticPhysics.d.ts +3 -0
- package/dist/components/server/staticSVGChrome.d.ts +110 -0
- package/dist/components/server/staticXY.d.ts +4 -0
- package/dist/components/store/ObservationStore.d.ts +23 -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 +7 -23
- 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/FocusRing.d.ts +4 -2
- package/dist/components/stream/FrameRuntime.d.ts +57 -0
- package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
- package/dist/components/stream/GeoParticlePool.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +62 -3
- 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 +44 -36
- package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
- package/dist/components/stream/NetworkSVGOverlay.d.ts +10 -1
- package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
- package/dist/components/stream/OrdinalPipelineStore.d.ts +55 -11
- 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 +81 -174
- package/dist/components/stream/SVGOverlay.d.ts +6 -0
- package/dist/components/stream/SceneGraph.d.ts +12 -4
- 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 +25 -12
- package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
- 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/frameGraphics.d.ts +4 -0
- package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
- package/dist/components/stream/frameThemeColors.d.ts +24 -0
- package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
- package/dist/components/stream/geoCartogram.d.ts +17 -0
- package/dist/components/stream/geoCustomLayout.d.ts +59 -0
- package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
- package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
- package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
- package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
- package/dist/components/stream/geoTypes.d.ts +97 -15
- package/dist/components/stream/glyphDef.d.ts +98 -0
- package/dist/components/stream/hitTarget.d.ts +170 -0
- package/dist/components/stream/hitTestUtils.d.ts +2 -2
- package/dist/components/stream/hoverUtils.d.ts +7 -2
- 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 +58 -0
- package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
- package/dist/components/stream/networkBezier.d.ts +10 -0
- package/dist/components/stream/networkColorAccessors.d.ts +49 -0
- package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
- package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
- package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
- package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
- package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
- package/dist/components/stream/networkFrameObservations.d.ts +15 -0
- package/dist/components/stream/networkFramePaint.d.ts +52 -0
- package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
- package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
- package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
- package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
- package/dist/components/stream/networkTypes.d.ts +103 -51
- 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 +31 -0
- package/dist/components/stream/ordinalPulse.d.ts +10 -0
- package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
- package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
- package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
- package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +68 -9
- 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 +86 -0
- package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +78 -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 +317 -0
- package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
- 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/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 +27 -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 +18 -0
- package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
- package/dist/components/stream/pipelineConfig.d.ts +179 -0
- package/dist/components/stream/pipelineDecay.d.ts +21 -3
- 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 +17 -3
- 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 +33 -0
- package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
- package/dist/components/stream/pipelineTransitions.d.ts +3 -1
- package/dist/components/stream/pipelineUpdateContract.d.ts +69 -0
- package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
- package/dist/components/stream/pulseFrameRefresh.d.ts +22 -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/glyphCanvasRenderer.d.ts +6 -0
- package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +45 -0
- package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -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 +165 -72
- package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
- package/dist/components/stream/useFrame.d.ts +44 -2
- package/dist/components/stream/useHydration.d.ts +6 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
- package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
- package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -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/xyFrameAxisTypes.d.ts +50 -0
- package/dist/components/stream/xySceneBuilders/types.d.ts +10 -9
- 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/rough.min.js +1 -0
- package/dist/rough.module.min.js +1 -0
- 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 +53 -9
- 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 +20 -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 +15 -0
- package/dist/semiotic-network.d.ts +15 -0
- package/dist/semiotic-ordinal.d.ts +14 -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 +60 -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-rough.d.ts +4 -0
- 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 +50 -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 +12 -0
- package/dist/semiotic.d.ts +44 -8
- 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-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 +259 -88
- 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
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import type { GeoProjection, GeoPath, GeoPermissibleObjects } from "d3-geo";
|
|
3
3
|
import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
|
|
4
|
-
import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, ThemeSemanticColors } from "./types";
|
|
4
|
+
import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, GlyphSceneNode, ThemeSemanticColors, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
|
|
5
5
|
import type { AnimateProp } from "./pipelineTransitionUtils";
|
|
6
6
|
import type { HoverAnnotationConfig, HoverData } from "../realtime/types";
|
|
7
7
|
import type { GeoParticleStyle } from "./GeoParticlePool";
|
|
8
8
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
9
9
|
import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
|
|
10
|
+
import type { MarginType } from "../types/marginType";
|
|
11
|
+
import type { GeoCustomLayout } from "./geoCustomLayout";
|
|
12
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
13
|
+
import type { CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
|
|
14
|
+
import type { OnObservationCallback } from "../store/ObservationStore";
|
|
15
|
+
import type { SemanticClickBehavior, SemanticHoverBehavior } from "../charts/shared/semanticInteractions";
|
|
16
|
+
import type { OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
|
|
10
17
|
export type ProjectionProp = GeoProjection | ProjectionName | ProjectionConfig;
|
|
11
18
|
export type ProjectionName = "mercator" | "equalEarth" | "albersUsa" | "orthographic" | "naturalEarth" | "equirectangular";
|
|
12
19
|
export interface ProjectionConfig {
|
|
@@ -41,6 +48,8 @@ export interface GeoAreaSceneNode {
|
|
|
41
48
|
screenArea: number;
|
|
42
49
|
style: Style;
|
|
43
50
|
datum: SceneDatum;
|
|
51
|
+
accessibleDatum?: SceneAccessibilityMetadata["accessibleDatum"];
|
|
52
|
+
accessibility?: SceneAccessibilityMetadata["accessibility"];
|
|
44
53
|
group?: string;
|
|
45
54
|
interactive?: boolean;
|
|
46
55
|
/** Lazily-cached Path2D parsed from pathData (avoids re-parsing on every hit test) */
|
|
@@ -54,33 +63,42 @@ export interface GeoLineSceneNode {
|
|
|
54
63
|
path: [number, number][];
|
|
55
64
|
style: Style;
|
|
56
65
|
datum: SceneDatum;
|
|
66
|
+
accessibleDatum?: SceneAccessibilityMetadata["accessibleDatum"];
|
|
67
|
+
accessibility?: SceneAccessibilityMetadata["accessibility"];
|
|
57
68
|
group?: string;
|
|
58
69
|
}
|
|
59
|
-
/** Union of all scene node types that GeoFrame produces
|
|
60
|
-
|
|
70
|
+
/** Union of all scene node types that GeoFrame produces. `GlyphSceneNode`
|
|
71
|
+
* joins for custom geo layouts — projected pictograms standing on the map. */
|
|
72
|
+
export type GeoSceneNode = GeoAreaSceneNode | PointSceneNode | GlyphSceneNode | GeoLineSceneNode;
|
|
61
73
|
export interface GeoScales {
|
|
62
74
|
projection: GeoProjection;
|
|
63
|
-
geoPath: GeoPath<
|
|
75
|
+
geoPath: GeoPath<void, GeoPermissibleObjects>;
|
|
64
76
|
projectedPoint: (lon: number, lat: number) => [number, number] | null;
|
|
65
77
|
invertedPoint: (px: number, py: number) => [number, number] | null;
|
|
66
78
|
}
|
|
67
79
|
export interface GeoPipelineConfig {
|
|
68
80
|
projection: ProjectionProp;
|
|
69
81
|
projectionExtent?: [[number, number], [number, number]];
|
|
70
|
-
/**
|
|
71
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Projection-fit padding as a finite fraction of the plot, not pixels.
|
|
84
|
+
* Valid values are in `[0, 0.5)`; `0.1` insets automatic fitting 10% from
|
|
85
|
+
* each edge. `null` and `undefined` use `0`; other values throw `RangeError`
|
|
86
|
+
* at the config boundary. Ignored when `projectionExtent` is supplied.
|
|
87
|
+
* @default 0
|
|
88
|
+
*/
|
|
89
|
+
fitPadding?: number | null;
|
|
72
90
|
xAccessor?: string | ((d: Datum) => number);
|
|
73
91
|
yAccessor?: string | ((d: Datum) => number);
|
|
74
92
|
lineDataAccessor?: string | ((d: Datum) => Datum[]);
|
|
75
93
|
lineType?: "geo" | "line";
|
|
76
94
|
/** Flow rendering style: "basic" (straight/great-circle), "offset" (bidirectional offset), "arc" (curved arcs) @default "basic" */
|
|
77
95
|
flowStyle?: "basic" | "offset" | "arc";
|
|
78
|
-
areaStyle?: Style | ((d:
|
|
96
|
+
areaStyle?: Style | ((d: GeoJSON.Feature) => Style);
|
|
79
97
|
pointStyle?: (d: Datum) => Style & {
|
|
80
98
|
r?: number;
|
|
81
99
|
};
|
|
82
100
|
lineStyle?: Style | ((d: Datum, group?: string) => Style);
|
|
83
|
-
colorScheme?: string | string[]
|
|
101
|
+
colorScheme?: string | string[] | Record<string, string>;
|
|
84
102
|
/** Theme-resolved semantic role colors — default fallback before hardcoded hex. See `ThemeSemanticColors` in ./types. */
|
|
85
103
|
themeSemantic?: ThemeSemanticColors;
|
|
86
104
|
/** Theme sequential scheme name — fallback for ChoroplethMap when colorScheme is not set. */
|
|
@@ -89,6 +107,10 @@ export interface GeoPipelineConfig {
|
|
|
89
107
|
themeDiverging?: string;
|
|
90
108
|
graticule?: boolean | GraticuleConfig;
|
|
91
109
|
projectionTransform?: DistanceCartogramConfig;
|
|
110
|
+
/** Maximum retained points and lines after the store enters streaming mode. @default 500 */
|
|
111
|
+
windowSize?: number;
|
|
112
|
+
/** Logical clock used for Geo pulse and transition work. */
|
|
113
|
+
clock?: import("./FrameRuntime").FrameClock;
|
|
92
114
|
decay?: DecayConfig;
|
|
93
115
|
pulse?: PulseConfig;
|
|
94
116
|
transition?: TransitionConfig;
|
|
@@ -99,15 +121,37 @@ export interface GeoPipelineConfig {
|
|
|
99
121
|
pointIdAccessor?: string | ((d: Datum) => string);
|
|
100
122
|
/** ID accessor on line data — required for `removeLine` by id. */
|
|
101
123
|
lineIdAccessor?: string | ((d: Datum) => string);
|
|
124
|
+
customLayout?: GeoCustomLayout;
|
|
125
|
+
layoutConfig?: object;
|
|
126
|
+
layoutMargin?: MarginType;
|
|
127
|
+
layoutSelection?: CustomLayoutSelection | null;
|
|
128
|
+
/** Receives structured information if `customLayout` throws. */
|
|
129
|
+
onLayoutError?: (diagnostic: CustomLayoutFailureDiagnostic) => void;
|
|
130
|
+
themeCategorical?: string[];
|
|
102
131
|
}
|
|
103
132
|
export interface StreamGeoFrameProps<T = Datum> {
|
|
104
133
|
projection: ProjectionProp;
|
|
105
134
|
projectionExtent?: [[number, number], [number, number]];
|
|
106
|
-
/**
|
|
107
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Projection-fit padding as a finite fraction of the plot, not pixels.
|
|
137
|
+
* Valid values are in `[0, 0.5)`; `0.1` insets automatic fitting 10% from
|
|
138
|
+
* each edge. `null` and `undefined` use `0`; other values throw `RangeError`
|
|
139
|
+
* at the config boundary. Ignored when `projectionExtent` is supplied.
|
|
140
|
+
* @default 0
|
|
141
|
+
*/
|
|
142
|
+
fitPadding?: number | null;
|
|
108
143
|
areas?: GeoJSON.Feature[];
|
|
109
144
|
points?: T[];
|
|
110
145
|
lines?: T[];
|
|
146
|
+
/** Replace built-in area/line/point scene construction with a custom layout. */
|
|
147
|
+
customLayout?: GeoCustomLayout;
|
|
148
|
+
/** User configuration threaded to `GeoLayoutContext.config`. */
|
|
149
|
+
layoutConfig?: object;
|
|
150
|
+
/** Shared-selection projection supplied by `GeoCustomChart`. */
|
|
151
|
+
layoutSelection?: CustomLayoutSelection | null;
|
|
152
|
+
/** Receives structured information if `customLayout` throws. The prior
|
|
153
|
+
* successful scene remains visible when one is available. */
|
|
154
|
+
onLayoutError?: (diagnostic: CustomLayoutFailureDiagnostic) => void;
|
|
111
155
|
xAccessor?: string | ((d: T) => number);
|
|
112
156
|
yAccessor?: string | ((d: T) => number);
|
|
113
157
|
lineDataAccessor?: string | ((d: T) => Datum[]);
|
|
@@ -155,12 +199,16 @@ export interface StreamGeoFrameProps<T = Datum> {
|
|
|
155
199
|
className?: string;
|
|
156
200
|
background?: string;
|
|
157
201
|
runtimeMode?: "bounded" | "streaming";
|
|
158
|
-
|
|
202
|
+
/** Maximum retained points and lines after imperative streaming begins. @default 500 */
|
|
203
|
+
windowSize?: number;
|
|
204
|
+
/** Optional scene paint backend. Exact projected geometry remains interactive. */
|
|
205
|
+
renderMode?: SceneRenderMode<GeoSceneNode>;
|
|
206
|
+
areaStyle?: Style | ((d: GeoJSON.Feature) => Style);
|
|
159
207
|
pointStyle?: (d: Datum) => Style & {
|
|
160
208
|
r?: number;
|
|
161
209
|
};
|
|
162
210
|
lineStyle?: Style | ((d: Datum, group?: string) => Style);
|
|
163
|
-
colorScheme?: string | string[]
|
|
211
|
+
colorScheme?: string | string[] | Record<string, string>;
|
|
164
212
|
/**
|
|
165
213
|
* Categorical color field. For ChoroplethMap reads from area `properties`
|
|
166
214
|
* (or top-level fallback); for ProportionalSymbolMap reads from each point.
|
|
@@ -173,9 +221,23 @@ export interface StreamGeoFrameProps<T = Datum> {
|
|
|
173
221
|
enableHover?: boolean;
|
|
174
222
|
hoverAnnotation?: boolean | HoverAnnotationConfig;
|
|
175
223
|
tooltipContent?: (d: HoverData) => ReactNode;
|
|
176
|
-
|
|
177
|
-
|
|
224
|
+
/**
|
|
225
|
+
* Allow chart-local tooltips to extend beyond the frame bounds.
|
|
226
|
+
* Useful when a non-portal tooltip should overlap adjacent chart chrome.
|
|
227
|
+
* @default false
|
|
228
|
+
*/
|
|
229
|
+
allowTooltipOverflow?: boolean;
|
|
230
|
+
customClickBehavior?: SemanticClickBehavior<HoverData>;
|
|
231
|
+
customHoverBehavior?: SemanticHoverBehavior<HoverData>;
|
|
232
|
+
/** Structured interaction observations, including semantic focus/activate. */
|
|
233
|
+
onObservation?: OnObservationCallback;
|
|
234
|
+
/** @internal HOC observation callback forwarded only to annotation widgets. */
|
|
235
|
+
annotationObservationCallback?: OnObservationCallback;
|
|
236
|
+
/** Chart instance identifier included in observation events. */
|
|
237
|
+
chartId?: string;
|
|
178
238
|
annotations?: Datum[];
|
|
239
|
+
/** Observe activation of widget annotations without replacing widget behavior. */
|
|
240
|
+
onAnnotationActivate?: OnAnnotationActivateCallback;
|
|
179
241
|
autoPlaceAnnotations?: AutoPlaceAnnotations;
|
|
180
242
|
decay?: DecayConfig;
|
|
181
243
|
pulse?: PulseConfig;
|
|
@@ -185,6 +247,18 @@ export interface StreamGeoFrameProps<T = Datum> {
|
|
|
185
247
|
* Set `{ intro: false }` to disable the intro animation. */
|
|
186
248
|
animate?: AnimateProp;
|
|
187
249
|
staleness?: StalenessConfig;
|
|
250
|
+
/** Optional rAF seam for deterministic host scheduling. */
|
|
251
|
+
frameScheduler?: import("./useFrame").FrameScheduler;
|
|
252
|
+
/** Monotonic wall-clock seam for deterministic replay, tests, or evidence capture. */
|
|
253
|
+
clock?: import("./FrameRuntime").FrameClock;
|
|
254
|
+
/** Injectable random source for frame-local stochastic work. */
|
|
255
|
+
random?: import("./FrameRuntime").FrameRandom;
|
|
256
|
+
/** Serializable deterministic random seed. Ignored when `random` is supplied. */
|
|
257
|
+
seed?: number;
|
|
258
|
+
/** Freeze logical animation time and cancel queued work while paused. */
|
|
259
|
+
paused?: boolean;
|
|
260
|
+
/** Freeze logical animation time while the page is hidden. Defaults to true for Geo frames. */
|
|
261
|
+
suspendWhenHidden?: boolean;
|
|
188
262
|
backgroundGraphics?: ReactNode;
|
|
189
263
|
foregroundGraphics?: ReactNode;
|
|
190
264
|
title?: string | ReactNode;
|
|
@@ -230,7 +304,7 @@ export interface StreamGeoFrameHandle {
|
|
|
230
304
|
getLines(): Datum[];
|
|
231
305
|
clear(): void;
|
|
232
306
|
getProjection(): GeoProjection | null;
|
|
233
|
-
getGeoPath(): GeoPath<
|
|
307
|
+
getGeoPath(): GeoPath<void, GeoPermissibleObjects> | null;
|
|
234
308
|
/** Get cartogram layout info (center position, max cost, radius) */
|
|
235
309
|
getCartogramLayout(): {
|
|
236
310
|
cx: number;
|
|
@@ -244,4 +318,12 @@ export interface StreamGeoFrameHandle {
|
|
|
244
318
|
resetZoom(): void;
|
|
245
319
|
/** Get current data points */
|
|
246
320
|
getData(): Datum[];
|
|
321
|
+
/** The most recent custom layout result — host readback so pages that need
|
|
322
|
+
* the computed placement don't re-run the layout. Null before the first
|
|
323
|
+
* layout or when no custom layout is configured. A failed retry retains the
|
|
324
|
+
* prior good result; inspect `getLayoutFailure()` to distinguish recovery. */
|
|
325
|
+
getCustomLayout(): import("./geoCustomLayout").GeoLayoutResult | null;
|
|
326
|
+
/** The most recent custom-layout failure, or null after a successful retry,
|
|
327
|
+
* clear, or explicit removal of `customLayout`. */
|
|
328
|
+
getLayoutFailure(): CustomLayoutFailureDiagnostic | null;
|
|
247
329
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glyph definitions — the composite-pictogram sibling of `symbolPath.ts`.
|
|
3
|
+
*
|
|
4
|
+
* A `symbol` scene node is one path; a `glyph` scene node is a small
|
|
5
|
+
* multi-part vector pictogram (an ISOTYPE sign: a server cabinet with accent
|
|
6
|
+
* vents, a factory with windows) defined once in definition space and stamped
|
|
7
|
+
* per datum with per-node color, accent, size, and partial fill. The same
|
|
8
|
+
* `GlyphDef` renders identically on canvas (`drawGlyphParts`), in SVG/SSR
|
|
9
|
+
* (`SceneToSVG`), and in any React chrome the host draws, because everything
|
|
10
|
+
* reads these helpers.
|
|
11
|
+
*
|
|
12
|
+
* Paint roles, not colors: parts declare `fill: "color" | "accent"` (or a
|
|
13
|
+
* literal CSS color) and the node supplies the actual paints — one definition
|
|
14
|
+
* serves every category/status recoloring, exactly how classic pictogram
|
|
15
|
+
* plates reused one cut in many inks.
|
|
16
|
+
*/
|
|
17
|
+
/** One drawable part of a glyph, in definition coordinates. */
|
|
18
|
+
export interface GlyphPart {
|
|
19
|
+
/** SVG path data in definition (viewBox) coordinates. */
|
|
20
|
+
d: string;
|
|
21
|
+
/**
|
|
22
|
+
* Fill paint: `"color"` (the node's primary paint), `"accent"` (the node's
|
|
23
|
+
* accent paint), `"none"`, or a literal CSS color. @default "color"
|
|
24
|
+
*/
|
|
25
|
+
fill?: "color" | "accent" | "none" | (string & {});
|
|
26
|
+
/** Stroke paint, same tokens as `fill`. @default "none" */
|
|
27
|
+
stroke?: "color" | "accent" | "none" | (string & {});
|
|
28
|
+
/** Stroke width in definition units — scales with the glyph. */
|
|
29
|
+
strokeWidth?: number;
|
|
30
|
+
/** Part opacity, multiplied into the node's opacity. */
|
|
31
|
+
opacity?: number;
|
|
32
|
+
strokeLinecap?: "butt" | "round" | "square";
|
|
33
|
+
strokeLinejoin?: "miter" | "round" | "bevel";
|
|
34
|
+
}
|
|
35
|
+
/** A reusable multi-part pictogram definition. */
|
|
36
|
+
export interface GlyphDef {
|
|
37
|
+
/** Definition-space box `[width, height]` the parts are drawn in. @default [40, 40] */
|
|
38
|
+
viewBox?: [number, number];
|
|
39
|
+
/**
|
|
40
|
+
* Which point of the viewBox lands on the node's `(x, y)`, as fractions.
|
|
41
|
+
* `[0.5, 0.5]` centers the glyph (the default); `[0.5, 1]` anchors its feet
|
|
42
|
+
* — the "standing on a baseline/terrain" pictogram convention.
|
|
43
|
+
*/
|
|
44
|
+
anchor?: [number, number];
|
|
45
|
+
parts: GlyphPart[];
|
|
46
|
+
}
|
|
47
|
+
export declare const DEFAULT_GLYPH_VIEWBOX: [number, number];
|
|
48
|
+
export declare const DEFAULT_GLYPH_ANCHOR: [number, number];
|
|
49
|
+
/** Resolved placement of a glyph node: scale plus the top-left corner offset
|
|
50
|
+
* from the node's (x, y), honoring the definition's anchor. */
|
|
51
|
+
export interface GlyphPlacement {
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
scale: number;
|
|
55
|
+
/** Add to the node's x to get the drawn top-left corner. */
|
|
56
|
+
offsetX: number;
|
|
57
|
+
/** Add to the node's y to get the drawn top-left corner. */
|
|
58
|
+
offsetY: number;
|
|
59
|
+
}
|
|
60
|
+
/** Size is the rendered **height** in px; width follows the viewBox aspect.
|
|
61
|
+
* (Pictogram sizing is a height, unlike the d3-symbol area convention.) */
|
|
62
|
+
export declare function glyphPlacement(def: GlyphDef, size: number): GlyphPlacement;
|
|
63
|
+
/** Radius from the node's (x, y) that bounds the drawn glyph — used for hit
|
|
64
|
+
* testing and keyboard-navigation focus geometry. */
|
|
65
|
+
export declare function glyphExtent(def: GlyphDef, size: number): number;
|
|
66
|
+
/**
|
|
67
|
+
* Resolve a part's paint token against the node's paints. Returns `undefined`
|
|
68
|
+
* for `"none"`/absent so callers can skip the fill/stroke entirely.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveGlyphPaint(token: string | undefined, color: string | undefined, accent: string | undefined, fallback?: string): string | undefined;
|
|
71
|
+
export declare function getGlyphPath2D(d: string): Path2D | null;
|
|
72
|
+
/** The shared fraction geometry for partial glyph fills: the clip rect in
|
|
73
|
+
* definition space covering `[fractionStart, fraction]` of the glyph. */
|
|
74
|
+
export declare function glyphFractionClipRect(def: GlyphDef, fraction: number, fractionStart?: number, direction?: "horizontal" | "vertical"): {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
width: number;
|
|
78
|
+
height: number;
|
|
79
|
+
} | null;
|
|
80
|
+
/** Hit/focus geometry of a glyph node: the drawn bounds' center offset from
|
|
81
|
+
* the node's (x, y) plus its half-extents — shared by the four hit testers
|
|
82
|
+
* and the keyboard-nav extractors so pointer and focus agree exactly. */
|
|
83
|
+
export declare function glyphHitGeometry(def: GlyphDef, size: number): {
|
|
84
|
+
centerDx: number;
|
|
85
|
+
centerDy: number;
|
|
86
|
+
halfWidth: number;
|
|
87
|
+
halfHeight: number;
|
|
88
|
+
radius: number;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Paint a glyph's parts onto a canvas context. The caller has already
|
|
92
|
+
* translated/scaled into definition space (via {@link glyphPlacement}) and
|
|
93
|
+
* set global alpha; this draws parts with the node's paints. `paintOverride`
|
|
94
|
+
* paints every part in one flat color — the ghost-silhouette pass under a
|
|
95
|
+
* partial fill. `resolvePaint` maps a computed paint through the renderer's
|
|
96
|
+
* CSS-var resolution before it hits the canvas.
|
|
97
|
+
*/
|
|
98
|
+
export declare function drawGlyphParts(ctx: CanvasRenderingContext2D, def: GlyphDef, color: string | undefined, accent: string | undefined, paintOverride?: string, resolvePaint?: (paint: string) => string): void;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { PointSceneNode, RectSceneNode, SceneDatum } from "./types";
|
|
2
|
+
import type { GeoAreaSceneNode } from "./geoTypes";
|
|
3
|
+
import type { NetworkCircleNode, NetworkRectNode } from "./networkTypes";
|
|
4
|
+
/** Default hit/keyboard-focus radius (px) — larger than a typical glyph so the
|
|
5
|
+
* target is easy to hit by pointer and to land on by keyboard (Fitts's law). */
|
|
6
|
+
export declare const DEFAULT_HIT_RADIUS = 8;
|
|
7
|
+
export interface HitTargetPointProps {
|
|
8
|
+
/** Plot-relative x of the mark's center. */
|
|
9
|
+
x: number;
|
|
10
|
+
/** Plot-relative y of the mark's center. */
|
|
11
|
+
y: number;
|
|
12
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
13
|
+
datum: SceneDatum;
|
|
14
|
+
/** Stable identity. Set as the node's `pointId` (annotation anchor + nav-tree
|
|
15
|
+
* leaf match) *and* its transition key, so the mark keeps identity across
|
|
16
|
+
* re-layouts. Strongly recommended for interactive/animated custom charts. */
|
|
17
|
+
id?: string | number;
|
|
18
|
+
/** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
|
|
19
|
+
r?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A transparent, hit-testable **point** node for a custom XY or ordinal layout
|
|
23
|
+
* whose visible marks live in `overlays`. Inherits keyboard navigation, the
|
|
24
|
+
* focus ring, annotation anchoring (by `id` → `pointId`), tooltip/`onObservation`
|
|
25
|
+
* emission, and transition identity. See the module overview for the full
|
|
26
|
+
* contract.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* nodes: ctx.data.map((row) => {
|
|
31
|
+
* const { x, y } = polarToXY(angle(row.day), radius(row.value))
|
|
32
|
+
* return hitTargetPoint({ x, y, datum: row, id: `day-${row.day}` })
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function hitTargetPoint(props: HitTargetPointProps): PointSceneNode;
|
|
37
|
+
/**
|
|
38
|
+
* A transparent, hit-testable point node for a custom **geo** layout whose
|
|
39
|
+
* visible marks (sprites, icons, forts) live in `overlays`. Project a lon/lat
|
|
40
|
+
* with `ctx.scales.projectedPoint(lon, lat)` first, then pass the resulting
|
|
41
|
+
* `x` / `y`. Functionally identical to {@link hitTargetPoint} — geo scenes use
|
|
42
|
+
* the same `PointSceneNode` — but named for discoverability: it makes
|
|
43
|
+
* overlay-drawn geographic marks keyboard-navigable, focus-ringed, and
|
|
44
|
+
* annotation-anchorable, exactly as {@link networkHitTarget} does for networks.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* // inside a GeoCustomChart layout
|
|
49
|
+
* nodes: pois.map((p) => {
|
|
50
|
+
* const [x, y] = ctx.scales.projectedPoint(p.lon, p.lat)!
|
|
51
|
+
* return geoHitTarget({ x, y, datum: p, id: p.id })
|
|
52
|
+
* })
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function geoHitTarget(props: HitTargetPointProps): PointSceneNode;
|
|
56
|
+
export interface GeoAreaHitTargetProps {
|
|
57
|
+
/** SVG path string in plot-relative screen coordinates. */
|
|
58
|
+
pathData: string;
|
|
59
|
+
/** Screen-space centroid for tooltip and focus positioning. */
|
|
60
|
+
centroid: [number, number];
|
|
61
|
+
/** Screen-space bounds as [[x0, y0], [x1, y1]]. */
|
|
62
|
+
bounds: [[number, number], [number, number]];
|
|
63
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
64
|
+
datum: SceneDatum;
|
|
65
|
+
/** Optional series/category key for grouped selection + legend interaction. */
|
|
66
|
+
group?: string;
|
|
67
|
+
/** Screen-space area in px^2. Defaults to the bounding-box area. */
|
|
68
|
+
screenArea?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A transparent, hit-testable **area** node for a custom geo layout whose
|
|
72
|
+
* visible polygons live in `overlays`. Use this when the semantic mark is not
|
|
73
|
+
* point-like: isometric tiles, schematic regions, hex/cell maps, contour bands,
|
|
74
|
+
* or any hand-built path that should retain GeoFrame hover, keyboard focus,
|
|
75
|
+
* tooltips, accessible rows, and shape-aware canvas hit testing.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* return geoAreaHitTarget({
|
|
80
|
+
* pathData: diamondPath(x, y, tileWidth, tileHeight),
|
|
81
|
+
* centroid: [x, y],
|
|
82
|
+
* bounds: [[x - tileWidth / 2, y - tileHeight / 2], [x + tileWidth / 2, y + tileHeight / 2]],
|
|
83
|
+
* screenArea: (tileWidth * tileHeight) / 2,
|
|
84
|
+
* datum: tile,
|
|
85
|
+
* group: tile.kind,
|
|
86
|
+
* })
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function geoAreaHitTarget(props: GeoAreaHitTargetProps): GeoAreaSceneNode;
|
|
90
|
+
export interface HitTargetRectProps {
|
|
91
|
+
/** Plot-relative x of the rect's top-left corner. */
|
|
92
|
+
x: number;
|
|
93
|
+
/** Plot-relative y of the rect's top-left corner. */
|
|
94
|
+
y: number;
|
|
95
|
+
/** Rect width in px. */
|
|
96
|
+
width: number;
|
|
97
|
+
/** Rect height in px. */
|
|
98
|
+
height: number;
|
|
99
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
100
|
+
datum: SceneDatum;
|
|
101
|
+
/** Stable identity — used as the transition key, and as `group` for shared
|
|
102
|
+
* selection. (Rect nodes anchor annotations by their center via the
|
|
103
|
+
* point-anchor harvest only on network; for XY/ordinal pair a rect hit area
|
|
104
|
+
* with {@link hitTargetPoint} if you need annotation anchoring.) */
|
|
105
|
+
id?: string | number;
|
|
106
|
+
/** Optional series/category key for grouped selection + legend interaction. */
|
|
107
|
+
group?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A transparent, hit-testable **rect** node for a custom XY or ordinal layout —
|
|
111
|
+
* the rectangular sibling of {@link hitTargetPoint}, for marks that read as a
|
|
112
|
+
* box (a bar, an interval lane segment, a labelled card). Same free interaction:
|
|
113
|
+
* keyboard nav, focus ring, tooltip/`onObservation`, transition identity.
|
|
114
|
+
*/
|
|
115
|
+
export declare function hitTargetRect(props: HitTargetRectProps): RectSceneNode;
|
|
116
|
+
export interface NetworkHitTargetCircleProps {
|
|
117
|
+
/** Plot-relative x of the mark's center. */
|
|
118
|
+
x: number;
|
|
119
|
+
/** Plot-relative y of the mark's center. */
|
|
120
|
+
y: number;
|
|
121
|
+
/** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
|
|
122
|
+
datum: SceneDatum;
|
|
123
|
+
/** Stable identity — set as the node `id`, which is how a `pointId`-anchored
|
|
124
|
+
* annotation resolves to this mark and how shared selection keys it. */
|
|
125
|
+
id?: string | number;
|
|
126
|
+
/** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
|
|
127
|
+
r?: number;
|
|
128
|
+
/** Optional accessible label override for the node. */
|
|
129
|
+
label?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface NetworkHitTargetRectProps {
|
|
132
|
+
/** Plot-relative x of the rect's top-left corner. */
|
|
133
|
+
x: number;
|
|
134
|
+
/** Plot-relative y of the rect's top-left corner. */
|
|
135
|
+
y: number;
|
|
136
|
+
/** Rect width in px. */
|
|
137
|
+
width: number;
|
|
138
|
+
/** Rect height in px. */
|
|
139
|
+
height: number;
|
|
140
|
+
/** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
|
|
141
|
+
datum: SceneDatum;
|
|
142
|
+
/** Stable identity — set as the node `id` for annotation anchoring + selection. */
|
|
143
|
+
id?: string | number;
|
|
144
|
+
/** Optional accessible label override for the node. */
|
|
145
|
+
label?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A transparent, hit-testable node for a custom **network** layout. Pass `width`
|
|
149
|
+
* + `height` for a rect (a labelled box / card), or omit them for a circle of
|
|
150
|
+
* radius `r`. Every network scene node is harvested as an annotation anchor, so
|
|
151
|
+
* `id` resolves a `{ pointId: id }` annotation to this mark. Inherits the same
|
|
152
|
+
* keyboard nav, focus ring, tooltip/`onObservation`, and shared-selection
|
|
153
|
+
* threading the built-in network charts get.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* sceneNodes: positioned.map((node) =>
|
|
158
|
+
* networkHitTarget({
|
|
159
|
+
* x: node.x - node.width / 2,
|
|
160
|
+
* y: node.y - node.height / 2,
|
|
161
|
+
* width: node.width,
|
|
162
|
+
* height: node.height,
|
|
163
|
+
* datum: node,
|
|
164
|
+
* id: node.id,
|
|
165
|
+
* })
|
|
166
|
+
* )
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare function networkHitTarget(props: NetworkHitTargetRectProps): NetworkRectNode;
|
|
170
|
+
export declare function networkHitTarget(props: NetworkHitTargetCircleProps): NetworkCircleNode;
|
|
@@ -27,11 +27,11 @@ export declare function getHitRadius(nodeRadius: number | undefined, maxDistance
|
|
|
27
27
|
* Convert a value to a Date if possible. Returns null for non-date values.
|
|
28
28
|
* Treats numbers > 1e9 as millisecond timestamps.
|
|
29
29
|
*/
|
|
30
|
-
export declare function toDate(value:
|
|
30
|
+
export declare function toDate(value: Date | number | string | null | undefined): Date | null;
|
|
31
31
|
/**
|
|
32
32
|
* Detect whether a tick marks a time boundary (new month or year) compared to the previous tick.
|
|
33
33
|
*/
|
|
34
|
-
export declare function isTimeLandmark(value:
|
|
34
|
+
export declare function isTimeLandmark(value: Date | number | string | null | undefined, prevValue: Date | number | string | null | undefined): boolean;
|
|
35
35
|
/**
|
|
36
36
|
* Normalize an angle to the [0, 2π) range.
|
|
37
37
|
*/
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* property flattening that are handled at the call site.
|
|
8
8
|
*/
|
|
9
9
|
import type { HoverData } from "../realtime/types";
|
|
10
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
11
|
+
export type RawHoverDatum = Datum | Datum[] | null;
|
|
10
12
|
/**
|
|
11
13
|
* Minimal shape a Stream Frame's internal hover handler needs from a pointer
|
|
12
14
|
* event. React.MouseEvent satisfies this structurally, as does the plain
|
|
@@ -18,8 +20,11 @@ import type { HoverData } from "../realtime/types";
|
|
|
18
20
|
export interface HoverPointerCoords {
|
|
19
21
|
clientX: number;
|
|
20
22
|
clientY: number;
|
|
23
|
+
pointerType?: string;
|
|
21
24
|
}
|
|
22
|
-
export declare
|
|
25
|
+
export declare const TOUCH_HIT_RADIUS = 24;
|
|
26
|
+
export declare function getPointerHitRadius(baseRadius: number, pointerType?: string): number;
|
|
27
|
+
export declare function normalizeHoverDatum(rawDatum: RawHoverDatum): Datum | null;
|
|
23
28
|
/**
|
|
24
29
|
* Build a HoverData object from a raw datum and pixel coordinates.
|
|
25
30
|
* The raw datum is preserved as `hover.data` for tooltip / callback
|
|
@@ -27,4 +32,4 @@ export declare function normalizeHoverDatum(rawDatum: any): any;
|
|
|
27
32
|
* relevant to a specific frame family — `category`, `stats`,
|
|
28
33
|
* `nodeOrEdge`, `xValue`, etc. — is layered in via `extra`.
|
|
29
34
|
*/
|
|
30
|
-
export declare function buildHoverData(rawDatum:
|
|
35
|
+
export declare function buildHoverData(rawDatum: RawHoverDatum, x: number, y: number, extra?: Partial<HoverData>): HoverData;
|
|
@@ -20,11 +20,14 @@ export interface NavPoint {
|
|
|
20
20
|
y: number;
|
|
21
21
|
datum: Datum | null;
|
|
22
22
|
/** Shape hint for focus ring rendering */
|
|
23
|
-
shape?: "circle" | "rect" | "wedge";
|
|
23
|
+
shape?: "circle" | "rect" | "wedge" | "geoarea";
|
|
24
24
|
/** Width of rect-shaped elements (bars, sankey nodes) */
|
|
25
25
|
w?: number;
|
|
26
26
|
/** Height of rect-shaped elements */
|
|
27
27
|
h?: number;
|
|
28
|
+
/** SVG path (plot-relative) for a geoarea focus ring — the shape is
|
|
29
|
+
* outlined instead of drawing a circle at the centroid. */
|
|
30
|
+
pathData?: string;
|
|
28
31
|
/** Group identifier for graph navigation (series name, category, node id) */
|
|
29
32
|
group?: string;
|
|
30
33
|
/** Index in NavGraph.flat — set by buildNavGraph for O(1) lookup */
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import type { NetworkLayoutPlugin } from "../networkTypes";
|
|
1
|
+
import type { NetworkLayoutPlugin, RealtimeNode } from "../networkTypes";
|
|
2
|
+
import type { Datum } from "../../charts/shared/datumTypes";
|
|
2
3
|
export declare const forceLayoutPlugin: NetworkLayoutPlugin;
|
|
4
|
+
/**
|
|
5
|
+
* Build a function that returns a node radius. If `nodeSize` is a number,
|
|
6
|
+
* use it directly. If it is a string accessor, look up `node.data[nodeSize]`
|
|
7
|
+
* and scale the result to `nodeSizeRange`. If it is a function, call it.
|
|
8
|
+
* Falls back to a default radius of 8.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveNodeSizeFn(nodeSize: number | string | ((d: Datum) => number) | undefined, nodeSizeRange: [number, number] | undefined, allNodes: RealtimeNode[]): (node: RealtimeNode) => number;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { GraphEdge, GraphNode, Point } from "../../recipes/networkAnalysis";
|
|
2
|
+
import type { ForceLayoutOptions } from "../../recipes/forceLayout";
|
|
3
|
+
import type { NetworkPipelineConfig, RealtimeEdge, RealtimeNode } from "../networkTypes";
|
|
4
|
+
export type ForceLayoutExecution = "auto" | "worker" | "sync";
|
|
5
|
+
export interface NormalizedForceWorkerRequest {
|
|
6
|
+
kind: "normalized";
|
|
7
|
+
nodes: GraphNode[];
|
|
8
|
+
edges: GraphEdge[];
|
|
9
|
+
options: Omit<ForceLayoutOptions, "nodeRadius">;
|
|
10
|
+
nodeRadii?: Record<string, number>;
|
|
11
|
+
}
|
|
12
|
+
export interface FrameForceWorkerRequest {
|
|
13
|
+
kind: "frame";
|
|
14
|
+
nodes: RealtimeNode[];
|
|
15
|
+
edges: RealtimeEdge[];
|
|
16
|
+
config: {
|
|
17
|
+
chartType: "force";
|
|
18
|
+
iterations?: number;
|
|
19
|
+
forceStrength?: number;
|
|
20
|
+
seed?: number;
|
|
21
|
+
};
|
|
22
|
+
size: [number, number];
|
|
23
|
+
}
|
|
24
|
+
export type ForceWorkerRequest = NormalizedForceWorkerRequest | FrameForceWorkerRequest;
|
|
25
|
+
export interface ForceWorkerResponse {
|
|
26
|
+
positions: Record<string, Point>;
|
|
27
|
+
}
|
|
28
|
+
export declare const DEFAULT_FORCE_WORKER_THRESHOLD = 40000;
|
|
29
|
+
export declare function shouldUseForceWorker(execution: ForceLayoutExecution, nodeCount: number, edgeCount: number, iterations: number, threshold?: number): boolean;
|
|
30
|
+
export declare function canUseForceWorker(): boolean;
|
|
31
|
+
export declare function createForceLayoutWorker(): Worker;
|
|
32
|
+
export declare function createFrameForceWorkerRequest(nodes: RealtimeNode[], edges: RealtimeEdge[], config: NetworkPipelineConfig, size: [number, number], previousPositions?: Map<string, {
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
}> | null): FrameForceWorkerRequest;
|
|
36
|
+
/**
|
|
37
|
+
* Long-lived force-layout worker session. Mirrors PhysicsWorkerSession:
|
|
38
|
+
* one Worker is reused across layouts so module parse + startup cost is
|
|
39
|
+
* paid once per page, not once per graph re-layout.
|
|
40
|
+
*/
|
|
41
|
+
export declare class ForceLayoutWorkerSession {
|
|
42
|
+
private nextRequestId;
|
|
43
|
+
private pending;
|
|
44
|
+
private worker;
|
|
45
|
+
private dead;
|
|
46
|
+
constructor(worker?: Worker);
|
|
47
|
+
get isDead(): boolean;
|
|
48
|
+
request(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
|
|
49
|
+
terminate(): void;
|
|
50
|
+
private rejectAll;
|
|
51
|
+
}
|
|
52
|
+
/** Test helper: drop the shared session so the next call creates a fresh Worker. */
|
|
53
|
+
export declare function _resetSharedForceLayoutSessionForTest(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Run a force layout on a reused worker session.
|
|
56
|
+
* Prefer this over constructing a new Worker per layout.
|
|
57
|
+
*/
|
|
58
|
+
export declare function runForceLayoutWorker(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
|
|
@@ -20,7 +20,7 @@ export declare function parseColor(color: string): [number, number, number];
|
|
|
20
20
|
* Uses perceived luminance (ITU-R BT.601).
|
|
21
21
|
*/
|
|
22
22
|
export declare function contrastTextColor(bgColor: string): string;
|
|
23
|
-
export declare function resolveChildrenAccessor(accessor: string | ((d: Datum) =>
|
|
24
|
-
export declare function resolveNodeId(d:
|
|
23
|
+
export declare function resolveChildrenAccessor(accessor: string | ((d: Datum) => Datum[]) | undefined): ((d: Datum) => Datum[]) | undefined;
|
|
24
|
+
export declare function resolveNodeId(d: Datum, config: NetworkPipelineConfig, index: number): string;
|
|
25
25
|
export declare function resolveLabelFn(nodeLabel: string | ((d: Datum) => string) | undefined): ((d: Datum) => string) | null;
|
|
26
26
|
export declare function resolveDefaultNodeSize(nodeSize: number | string | ((d: Datum) => number) | undefined): number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BezierCache, RealtimeEdge, RealtimeNode } from "./networkTypes";
|
|
2
|
+
/** Default cubic control-point curvature (fraction of span). */
|
|
3
|
+
export declare const NETWORK_EDGE_CURVATURE = 0.5;
|
|
4
|
+
export declare function buildStandardBezier(edge: RealtimeEdge, sourceNode: RealtimeNode, targetNode: RealtimeNode, curvature?: number): BezierCache;
|
|
5
|
+
export declare function buildCircularBezier(edge: RealtimeEdge, curvature?: number): BezierCache;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve source/target RealtimeNodes and attach the edge's bezier cache.
|
|
8
|
+
* Returns false if endpoints cannot be resolved.
|
|
9
|
+
*/
|
|
10
|
+
export declare function updateEdgeBezier(edge: RealtimeEdge, nodes: Map<string, RealtimeNode>, curvature?: number): boolean;
|