semiotic 3.7.4 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +60 -15
- package/README.md +135 -24
- package/agent-skill/semiotic-charts/SKILL.md +146 -0
- package/ai/cli.js +133 -45
- package/ai/componentMetadata.cjs +6 -1
- package/ai/dist/mcp-server.js +1651 -154
- package/ai/examples.md +174 -0
- package/ai/schema.json +2934 -517
- package/ai/surface-manifest.json +200 -0
- package/ai/system-prompt.md +19 -3
- package/dist/components/Annotation.d.ts +4 -0
- package/dist/components/CategoryColors.d.ts +1 -1
- package/dist/components/ChartContainer.d.ts +91 -0
- package/dist/components/ChartGrid.d.ts +11 -1
- package/dist/components/CircularBrush.d.ts +61 -0
- package/dist/components/ContextLayout.d.ts +5 -1
- package/dist/components/DataSummaryContext.d.ts +1 -0
- package/dist/components/DirectManipulationControl.d.ts +63 -0
- package/dist/components/LinkedCharts.d.ts +3 -1
- package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
- package/dist/components/MobileChartContainer.d.ts +51 -0
- package/dist/components/MobileStandardControls.d.ts +68 -0
- package/dist/components/SmallMultipleChart.d.ts +84 -0
- package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
- package/dist/components/ai/ChartRecipe.d.ts +16 -0
- package/dist/components/ai/IntentMark.d.ts +15 -0
- package/dist/components/ai/chartCapabilities.d.ts +8 -1
- package/dist/components/ai/chartCapabilityTypes.d.ts +42 -1
- package/dist/components/ai/chartClinic.d.ts +91 -0
- package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
- package/dist/components/ai/chartRecipes.d.ts +278 -0
- package/dist/components/ai/dataPitfallsBridge.d.ts +203 -0
- package/dist/components/ai/dataQualityBridge.d.ts +201 -0
- package/dist/components/ai/describeChart.d.ts +9 -0
- package/dist/components/ai/describeRecipeChart.d.ts +16 -0
- package/dist/components/ai/generativeChart.d.ts +170 -0
- package/dist/components/ai/intentManifest.d.ts +62 -0
- package/dist/components/ai/navigationTree.d.ts +3 -0
- package/dist/components/ai/observedSceneAudit.d.ts +72 -0
- package/dist/components/ai/readerGrounding.d.ts +83 -0
- package/dist/components/ai/recipeCapability.d.ts +8 -0
- package/dist/components/ai/recipeNavigation.d.ts +13 -0
- package/dist/components/ai/recipeSemantics.d.ts +11 -0
- package/dist/components/ai/repairChartConfig.d.ts +9 -0
- package/dist/components/ai/suggestCharts.d.ts +11 -1
- package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
- package/dist/components/charts/custom/NetworkCustomChart.d.ts +22 -3
- package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
- package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
- package/dist/components/charts/geo/FlowMap.d.ts +1 -1
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
- package/dist/components/charts/geo/index.d.ts +2 -0
- package/dist/components/charts/index.d.ts +29 -1
- package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
- package/dist/components/charts/network/CirclePack.d.ts +1 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
- package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
- package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
- package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
- package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
- package/dist/components/charts/network/Treemap.d.ts +1 -1
- package/dist/components/charts/network/useForceLayout.d.ts +17 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
- package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
- package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
- package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/SwarmPlot.d.ts +8 -1
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
- package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
- package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
- package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
- package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
- package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
- package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
- package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
- package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
- package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
- package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
- package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
- package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
- package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
- package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
- package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
- package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
- package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
- package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
- package/dist/components/charts/physics/gauntletController.d.ts +73 -0
- package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
- package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
- package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
- package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
- package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
- package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
- package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
- package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
- package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
- package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
- package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
- package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
- package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +30 -1
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
- package/dist/components/charts/realtime/aggregate.d.ts +51 -0
- package/dist/components/charts/realtime/eventTime.d.ts +26 -0
- package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
- package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
- package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
- package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
- package/dist/components/charts/shared/colorContrast.d.ts +3 -0
- package/dist/components/charts/shared/colorPalettes.d.ts +2 -0
- package/dist/components/charts/shared/colorUtils.d.ts +17 -13
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
- package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
- package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
- package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
- package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
- package/dist/components/charts/shared/hooks.d.ts +28 -5
- package/dist/components/charts/shared/minMax.d.ts +3 -0
- package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/radialGeometry.d.ts +0 -18
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
- package/dist/components/charts/shared/smartTooltip.d.ts +27 -0
- package/dist/components/charts/shared/statisticalOverlays.d.ts +35 -0
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
- package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +2 -0
- package/dist/components/charts/shared/types.d.ts +49 -1
- package/dist/components/charts/shared/useChartSetup.d.ts +10 -3
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +15 -6
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
- package/dist/components/charts/shared/validateChartData.d.ts +1 -1
- package/dist/components/charts/shared/validationMap.d.ts +0 -11
- package/dist/components/charts/xy/AreaChart.d.ts +1 -1
- package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
- package/dist/components/charts/xy/LineChart.d.ts +1 -1
- package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
- package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
- package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
- package/dist/components/charts/xy/Scatterplot.d.ts +10 -1
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
- package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
- package/dist/components/controls/controlAudit.d.ts +24 -0
- package/dist/components/controls/controlContract.d.ts +57 -0
- package/dist/components/data/fromArrow.d.ts +54 -0
- package/dist/components/data/fromFlintChart.d.ts +74 -0
- package/dist/components/data/fromMermaid.d.ts +47 -0
- package/dist/components/data/fromObservablePlot.d.ts +69 -0
- package/dist/components/data/fromVegaLite.d.ts +27 -0
- package/dist/components/data/portability/index.d.ts +17 -0
- package/dist/components/data/portability/result.d.ts +52 -0
- package/dist/components/data/portability/spec.d.ts +160 -0
- package/dist/components/data/portability/vegaLite.d.ts +80 -0
- package/dist/components/export/chartConfig.d.ts +11 -0
- package/dist/components/realtime/ReorderBuffer.d.ts +54 -0
- package/dist/components/realtime/RunningStats.d.ts +66 -0
- package/dist/components/realtime/WindowAccumulator.d.ts +105 -0
- package/dist/components/realtime/parseWindowDuration.d.ts +12 -0
- package/dist/components/realtime/types.d.ts +11 -0
- package/dist/components/recipes/annotationLayout.d.ts +29 -0
- package/dist/components/recipes/axisFixedForce.d.ts +119 -0
- package/dist/components/recipes/boba.d.ts +23 -0
- package/dist/components/recipes/customTooltip.d.ts +31 -0
- package/dist/components/recipes/cyclical.d.ts +39 -0
- package/dist/components/recipes/edgeRouter.d.ts +103 -0
- package/dist/components/recipes/forceLayout.d.ts +48 -0
- package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
- package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
- package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
- package/dist/components/recipes/gofishIR.d.ts +215 -0
- package/dist/components/recipes/gofishIRExamples.d.ts +38 -0
- package/dist/components/recipes/intervalLanes.d.ts +87 -0
- package/dist/components/recipes/intervals.d.ts +80 -0
- package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
- package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
- package/dist/components/recipes/mermaidDag.d.ts +44 -0
- package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
- package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
- package/dist/components/recipes/networkAnalysis.d.ts +102 -0
- package/dist/components/recipes/networkLayouts.d.ts +83 -0
- package/dist/components/recipes/packedClusterMatrix.d.ts +166 -0
- package/dist/components/recipes/physics.d.ts +122 -0
- package/dist/components/recipes/physicsReference.d.ts +102 -0
- package/dist/components/recipes/processAggregates.d.ts +32 -0
- package/dist/components/recipes/processChrome.d.ts +67 -0
- package/dist/components/recipes/processJourney.d.ts +54 -0
- package/dist/components/recipes/processPhysics.d.ts +300 -0
- package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
- package/dist/components/recipes/radialCoords.d.ts +69 -0
- package/dist/components/recipes/random.d.ts +2 -0
- package/dist/components/recipes/recipeChrome.d.ts +191 -0
- package/dist/components/recipes/recipeGlyph.d.ts +42 -0
- package/dist/components/recipes/recipeLegend.d.ts +109 -0
- package/dist/components/recipes/recipeUtils.d.ts +157 -0
- package/dist/components/recipes/runs.d.ts +59 -0
- package/dist/components/recipes/tokenEncoding.d.ts +157 -0
- package/dist/components/recipes/tokenLayer.d.ts +79 -0
- package/dist/components/recipes/unitize.d.ts +108 -0
- package/dist/components/recipes/vector.d.ts +28 -0
- package/dist/components/recipes/waffle.d.ts +43 -0
- package/dist/components/semiotic-ai-core.d.ts +47 -0
- package/dist/components/semiotic-ai.d.ts +52 -4
- package/dist/components/semiotic-controls.d.ts +18 -0
- package/dist/components/semiotic-data.d.ts +2 -0
- package/dist/components/semiotic-experimental.d.ts +49 -0
- package/dist/components/semiotic-geo.d.ts +11 -0
- package/dist/components/semiotic-network.d.ts +14 -1
- package/dist/components/semiotic-ordinal.d.ts +10 -0
- package/dist/components/semiotic-physics-matter.d.ts +10 -0
- package/dist/components/semiotic-physics-rapier.d.ts +9 -0
- package/dist/components/semiotic-physics.d.ts +56 -0
- package/dist/components/semiotic-realtime-core.d.ts +34 -0
- package/dist/components/semiotic-realtime-react.d.ts +10 -0
- package/dist/components/semiotic-realtime.d.ts +4 -22
- package/dist/components/semiotic-recipes-core.d.ts +92 -0
- package/dist/components/semiotic-recipes-react.d.ts +7 -0
- package/dist/components/semiotic-recipes.d.ts +4 -26
- package/dist/components/semiotic-server-edge.d.ts +8 -0
- package/dist/components/semiotic-server-node.d.ts +5 -0
- package/dist/components/semiotic-server.d.ts +2 -2
- package/dist/components/semiotic-themes-core.d.ts +53 -0
- package/dist/components/semiotic-themes-react.d.ts +4 -0
- package/dist/components/semiotic-themes.d.ts +6 -74
- package/dist/components/semiotic-utils-core.d.ts +46 -0
- package/dist/components/semiotic-utils-react.d.ts +5 -0
- package/dist/components/semiotic-utils.d.ts +3 -39
- package/dist/components/semiotic-xy.d.ts +10 -0
- package/dist/components/semiotic.d.ts +39 -7
- package/dist/components/server/animatedGif.d.ts +36 -0
- package/dist/components/server/renderEvidence.d.ts +1 -1
- package/dist/components/server/renderToStaticSVG.d.ts +3 -35
- package/dist/components/server/serverChartConfigShared.d.ts +17 -0
- package/dist/components/server/serverChartConfigs.d.ts +19 -9
- package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
- package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
- package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
- package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
- package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
- package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
- package/dist/components/server/staticGeo.d.ts +4 -0
- package/dist/components/server/staticLegend.d.ts +1 -1
- package/dist/components/server/staticNetwork.d.ts +8 -0
- package/dist/components/server/staticOrdinal.d.ts +11 -0
- package/dist/components/server/staticPhysics.d.ts +3 -0
- package/dist/components/server/staticSVGChrome.d.ts +110 -0
- package/dist/components/server/staticXY.d.ts +4 -0
- package/dist/components/store/ObservationStore.d.ts +23 -3
- package/dist/components/store/SelectionStore.d.ts +1 -1
- package/dist/components/store/ThemeStore.d.ts +1 -1
- package/dist/components/store/TooltipStore.d.ts +1 -1
- package/dist/components/store/createStore.d.ts +1 -1
- package/dist/components/store/designTokens.d.ts +15 -0
- package/dist/components/store/themeSerialization.d.ts +32 -0
- package/dist/components/store/useChartInterrogation.d.ts +9 -0
- package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
- package/dist/components/stream/FocusRing.d.ts +4 -2
- package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
- package/dist/components/stream/NetworkHtmlMarksLayer.d.ts +44 -0
- package/dist/components/stream/NetworkPipelineStore.d.ts +62 -25
- package/dist/components/stream/NetworkSVGOverlay.d.ts +15 -0
- package/dist/components/stream/OrdinalPipelineStore.d.ts +64 -2
- package/dist/components/stream/PipelineStore.d.ts +100 -162
- package/dist/components/stream/SceneGraph.d.ts +14 -2
- package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
- package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
- package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
- package/dist/components/stream/StreamXYFrame.d.ts +2 -18
- package/dist/components/stream/accessibleDataRows.d.ts +33 -0
- package/dist/components/stream/accessorUtils.d.ts +23 -10
- package/dist/components/stream/brushAccessibility.d.ts +25 -0
- package/dist/components/stream/canvasBackground.d.ts +24 -0
- package/dist/components/stream/canvasSetup.d.ts +4 -1
- package/dist/components/stream/customLayout.d.ts +20 -0
- package/dist/components/stream/customLayoutDiagnostics.d.ts +11 -0
- package/dist/components/stream/customLayoutFailure.d.ts +33 -0
- package/dist/components/stream/customLayoutPalette.d.ts +19 -9
- package/dist/components/stream/customLayoutSelection.d.ts +52 -0
- package/dist/components/stream/frameThemeColors.d.ts +24 -0
- package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
- package/dist/components/stream/geoCartogram.d.ts +17 -0
- package/dist/components/stream/geoCustomLayout.d.ts +59 -0
- package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
- package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
- package/dist/components/stream/geoTypes.d.ts +56 -7
- package/dist/components/stream/glyphDef.d.ts +98 -0
- package/dist/components/stream/hitTarget.d.ts +170 -0
- package/dist/components/stream/hoverUtils.d.ts +3 -0
- package/dist/components/stream/keyboardNav.d.ts +4 -1
- package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
- package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
- package/dist/components/stream/networkBezier.d.ts +10 -0
- package/dist/components/stream/networkColorAccessors.d.ts +49 -0
- package/dist/components/stream/networkCustomLayout.d.ts +66 -1
- package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
- package/dist/components/stream/networkFramePaint.d.ts +43 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
- package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
- package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
- package/dist/components/stream/networkTypes.d.ts +104 -5
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/ordinalCustomLayout.d.ts +17 -1
- package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
- package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/ordinalDomain.d.ts +38 -0
- package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
- package/dist/components/stream/ordinalPulse.d.ts +10 -0
- package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
- package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
- package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -0
- package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +56 -8
- package/dist/components/stream/paintNeeds.d.ts +31 -0
- package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
- package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
- package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
- package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
- package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
- package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
- package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
- package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
- package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
- package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
- package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
- package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
- package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
- package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
- package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
- package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
- package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
- package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
- package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
- package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
- package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
- package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
- package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
- package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
- package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
- package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
- package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
- package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
- package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
- package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
- package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
- package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
- package/dist/components/stream/pipelineConfig.d.ts +177 -0
- package/dist/components/stream/pipelineDecay.d.ts +20 -2
- package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
- package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
- package/dist/components/stream/pipelinePulse.d.ts +16 -2
- package/dist/components/stream/pipelineRibbons.d.ts +41 -0
- package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
- package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
- package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
- package/dist/components/stream/pipelineTransitions.d.ts +2 -0
- package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
- package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
- package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
- package/dist/components/stream/renderers/networkSymbolRenderer.d.ts +2 -0
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/renderers/symbolCanvasRenderer.d.ts +2 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
- package/dist/components/stream/stalenessBands.d.ts +28 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -0
- package/dist/components/stream/symbolPath.d.ts +24 -0
- package/dist/components/stream/types.d.ts +206 -9
- package/dist/components/stream/useFrame.d.ts +21 -2
- package/dist/components/stream/useHydration.d.ts +6 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
- package/dist/components/stream/useStalenessCheck.d.ts +6 -1
- package/dist/components/stream/workerModuleUrl.d.ts +10 -0
- package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
- package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/xyCrosshair.d.ts +11 -0
- package/dist/components/stream/xyDateTicks.d.ts +9 -0
- package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/types.d.ts +9 -4
- package/dist/controls.min.js +2 -0
- package/dist/controls.module.min.js +2 -0
- package/dist/forceLayoutWorker.js +1 -0
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics-matter.min.js +1 -0
- package/dist/physics-matter.module.min.js +1 -0
- package/dist/physics-rapier.min.js +1 -0
- package/dist/physics-rapier.module.min.js +1 -0
- package/dist/physics.min.js +2 -0
- package/dist/physics.module.min.js +2 -0
- package/dist/physicsWorker.js +1 -0
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
- package/dist/semiotic-ai-core.d.ts +47 -0
- package/dist/semiotic-ai-core.min.js +1 -0
- package/dist/semiotic-ai-core.module.min.js +1 -0
- package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
- package/dist/semiotic-ai.d.ts +52 -4
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
- package/dist/semiotic-controls.d.ts +18 -0
- package/dist/semiotic-data.d.ts +2 -0
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental.d.ts +49 -0
- package/dist/semiotic-experimental.min.js +1 -0
- package/dist/semiotic-experimental.module.min.js +1 -0
- package/dist/semiotic-geo.d.ts +11 -0
- package/dist/semiotic-network.d.ts +14 -1
- package/dist/semiotic-ordinal.d.ts +10 -0
- package/dist/semiotic-physics-matter.d.ts +10 -0
- package/dist/semiotic-physics-rapier.d.ts +9 -0
- package/dist/semiotic-physics.d.ts +56 -0
- package/dist/semiotic-realtime-core.d.ts +34 -0
- package/dist/semiotic-realtime-core.min.js +1 -0
- package/dist/semiotic-realtime-core.module.min.js +1 -0
- package/dist/semiotic-realtime-react.d.ts +10 -0
- package/dist/semiotic-realtime-react.min.js +2 -0
- package/dist/semiotic-realtime-react.module.min.js +2 -0
- package/dist/semiotic-realtime.d.ts +4 -22
- package/dist/semiotic-recipes-core.d.ts +92 -0
- package/dist/semiotic-recipes-core.min.js +1 -0
- package/dist/semiotic-recipes-core.module.min.js +1 -0
- package/dist/semiotic-recipes-react.d.ts +7 -0
- package/dist/semiotic-recipes-react.min.js +2 -0
- package/dist/semiotic-recipes-react.module.min.js +2 -0
- package/dist/semiotic-recipes.d.ts +4 -26
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.d.ts +8 -0
- package/dist/semiotic-server-edge.min.js +1 -0
- package/dist/semiotic-server-edge.module.min.js +1 -0
- package/dist/semiotic-server-node.d.ts +5 -0
- package/dist/semiotic-server-node.min.js +1 -0
- package/dist/semiotic-server-node.module.min.js +1 -0
- package/dist/semiotic-server.d.ts +2 -2
- package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
- package/dist/semiotic-themes-core.d.ts +53 -0
- package/dist/semiotic-themes-core.min.js +1 -0
- package/dist/semiotic-themes-core.module.min.js +1 -0
- package/dist/semiotic-themes-react.d.ts +4 -0
- package/dist/semiotic-themes-react.min.js +2 -0
- package/dist/semiotic-themes-react.module.min.js +2 -0
- package/dist/semiotic-themes.d.ts +6 -74
- package/dist/semiotic-themes.min.js +1 -2
- package/dist/semiotic-themes.module.min.js +1 -2
- package/dist/semiotic-utils-core.d.ts +46 -0
- package/dist/semiotic-utils-core.min.js +1 -0
- package/dist/semiotic-utils-core.module.min.js +1 -0
- package/dist/semiotic-utils-react.d.ts +5 -0
- package/dist/semiotic-utils-react.min.js +2 -0
- package/dist/semiotic-utils-react.module.min.js +2 -0
- package/dist/semiotic-utils.d.ts +3 -39
- package/dist/semiotic-utils.min.js +1 -2
- package/dist/semiotic-utils.module.min.js +1 -2
- package/dist/semiotic-value.min.js +1 -1
- package/dist/semiotic-value.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +10 -0
- package/dist/semiotic.d.ts +39 -7
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
- package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +246 -86
- package/spec/README.md +152 -0
- package/spec/bindings/README.md +35 -0
- package/spec/bindings/vega-lite.mjs +112 -0
- package/spec/v0.1/annotation-provenance.schema.json +127 -0
- package/spec/v0.1/audience-profile.schema.json +67 -0
- package/spec/v0.1/chart-capability.schema.json +186 -0
- package/dist/semiotic-ai-statisticalOverlays-C2PPlmXv.js +0 -1
- package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +0 -1
- package/dist/xy-statisticalOverlays-C2PPlmXv.js +0 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import type { LegendGroup } from "../types/legendTypes";
|
|
3
|
+
import { type NetworkSymbolName } from "../stream/symbolPath";
|
|
4
|
+
/**
|
|
5
|
+
* `legendGroupsFrom` — build the `LegendGroup[]` a custom-layout recipe passes
|
|
6
|
+
* through `frameProps.legend` (`{ legendGroups }`). All four custom-chart HOCs
|
|
7
|
+
* disable the built-in legend because the *layout* owns color/shape/size; without
|
|
8
|
+
* this, authors hand-roll the `LegendGroup` shape (its `styleFn`, custom-glyph
|
|
9
|
+
* `type` render functions, swatch sizing). This closes that gap without the frame
|
|
10
|
+
* having to guess the author's encoding — the recipe declares each channel and
|
|
11
|
+
* gets back a ready-to-render array.
|
|
12
|
+
*
|
|
13
|
+
* One group is emitted per provided channel, in order: **color → symbol → size**.
|
|
14
|
+
* Pure / SSR-safe.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <NetworkCustomChart
|
|
19
|
+
* layout={packedClusterMatrix}
|
|
20
|
+
* frameProps={{ legend: { legendGroups: legendGroupsFrom({
|
|
21
|
+
* colorMap: CATEGORY_COLORS, colorLabel: "Category",
|
|
22
|
+
* symbolMap: CLASS_SHAPES, symbolLabel: "Class",
|
|
23
|
+
* sizeStops: [200, 2000, 8000], sizeRadius: r, sizeLabel: "Mass (kg)",
|
|
24
|
+
* }) } }}
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface LegendGroupsInput {
|
|
29
|
+
/** `{category → color}` map → one swatch per entry, in insertion order. */
|
|
30
|
+
colorMap?: Record<string, string>;
|
|
31
|
+
/** Or explicit category keys, with `color` resolving each to a color. */
|
|
32
|
+
keys?: string[];
|
|
33
|
+
/** Resolve a key → color (e.g. a recipe's `ctx.resolveColor`). Used with `keys`. */
|
|
34
|
+
color?: (key: string) => string;
|
|
35
|
+
/** Color-group heading. @default "" */
|
|
36
|
+
colorLabel?: string;
|
|
37
|
+
/** Color swatch glyph — a filled square or a line stroke. @default "fill" */
|
|
38
|
+
colorType?: "fill" | "line";
|
|
39
|
+
/** `{category → glyph shape}` map → one shape swatch per entry. */
|
|
40
|
+
symbolMap?: Record<string, NetworkSymbolName>;
|
|
41
|
+
/** Fill for the shape swatches (shape, not color, is the encoding here).
|
|
42
|
+
* @default "var(--semiotic-text, currentColor)" */
|
|
43
|
+
symbolColor?: string;
|
|
44
|
+
/** Symbol-group heading. @default "" */
|
|
45
|
+
symbolLabel?: string;
|
|
46
|
+
/** Reference values → circle swatches sized by the mark scale. */
|
|
47
|
+
sizeStops?: number[];
|
|
48
|
+
/** Map a value → radius (px) — pass the recipe's own radius scale so the
|
|
49
|
+
* legend circles match the marks exactly. Required to draw the size group. */
|
|
50
|
+
sizeRadius?: (v: number) => number;
|
|
51
|
+
/** Format a size stop for its label. @default `String` */
|
|
52
|
+
sizeFormat?: (v: number) => string;
|
|
53
|
+
/** Size swatch circle fill. @default "var(--semiotic-text, currentColor)" */
|
|
54
|
+
sizeColor?: string;
|
|
55
|
+
/** Size-group heading. @default "" */
|
|
56
|
+
sizeLabel?: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function legendGroupsFrom(input: LegendGroupsInput): LegendGroup[];
|
|
59
|
+
export interface LegendSwatch {
|
|
60
|
+
/** Legend entry label. */
|
|
61
|
+
label: string;
|
|
62
|
+
/** Filled-square swatch color (the categorical / fill case). */
|
|
63
|
+
color?: string;
|
|
64
|
+
/** Line-stroke swatch color (a horizontal bar — for line-series legends). */
|
|
65
|
+
line?: string;
|
|
66
|
+
/** Glyph-shape swatch (the per-datum shape channel). */
|
|
67
|
+
shape?: NetworkSymbolName;
|
|
68
|
+
/** Diagonal-hatch swatch (percentile / uncertainty bands). Line color comes
|
|
69
|
+
* from `color`, falling back to the label color. */
|
|
70
|
+
hatch?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface LegendSwatchesProps {
|
|
73
|
+
entries: LegendSwatch[];
|
|
74
|
+
/** Top-left x of the legend block, in plot coordinates. */
|
|
75
|
+
x: number;
|
|
76
|
+
/** Top-left y of the legend block, in plot coordinates. */
|
|
77
|
+
y: number;
|
|
78
|
+
/** Stack entries down (`vertical`) or flow them across (`horizontal`).
|
|
79
|
+
* @default "vertical" */
|
|
80
|
+
orientation?: "vertical" | "horizontal";
|
|
81
|
+
/** Swatch box size in px. @default 14 */
|
|
82
|
+
swatchSize?: number;
|
|
83
|
+
/** Row height (vertical) / inter-entry gap (horizontal), px. @default 8 (+ swatch) */
|
|
84
|
+
gap?: number;
|
|
85
|
+
/** Gap between a swatch and its label, px. @default 6 */
|
|
86
|
+
labelGap?: number;
|
|
87
|
+
/** @default 12 */
|
|
88
|
+
fontSize?: number;
|
|
89
|
+
/** Label color. @default "var(--semiotic-text-secondary, #888)" */
|
|
90
|
+
color?: string;
|
|
91
|
+
className?: string;
|
|
92
|
+
keyId?: string | number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* A self-contained SVG legend a custom layout draws in its `overlays` — the
|
|
96
|
+
* portable counterpart to {@link legendGroupsFrom} (which feeds the *frame's*
|
|
97
|
+
* legend via `frameProps.legend`). Custom charts disable the built-in legend,
|
|
98
|
+
* so this renders swatch + label rows directly: fill squares, line bars, glyph
|
|
99
|
+
* shapes, and diagonal-hatch swatches, stacked or flowed. `pointerEvents: none`.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* legendSwatches({
|
|
104
|
+
* x: 0, y: 0, orientation: "horizontal",
|
|
105
|
+
* entries: SPHERES.map((s) => ({ label: s, color: COLORS[s] })),
|
|
106
|
+
* })
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function legendSwatches(p: LegendSwatchesProps): ReactElement;
|
|
@@ -5,6 +5,50 @@ import type { Datum } from "../charts/shared/datumTypes";
|
|
|
5
5
|
* the boundary and lets the layout body call a single function.
|
|
6
6
|
*/
|
|
7
7
|
export declare function resolveAccessor<T = unknown>(a: string | ((d: Datum) => T)): (d: Datum) => T;
|
|
8
|
+
/**
|
|
9
|
+
* Read a field off a network-ingest wrapper (`node.data.<key>`) or the node
|
|
10
|
+
* itself, with a fallback. Network recipes receive `RealtimeNode`/`RealtimeEdge`
|
|
11
|
+
* wrappers whose user data lives under `.data`; several recipes (lineageDag,
|
|
12
|
+
* mermaidDag, packedClusterMatrix, …) each re-declared this identical reader, so
|
|
13
|
+
* it lives here once. Returns `unknown` — narrow at the call site.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readField(d: unknown, key: string, fallback: unknown): unknown;
|
|
16
|
+
/**
|
|
17
|
+
* Return the **raw user datum** from a value that may be a frame wrapper.
|
|
18
|
+
*
|
|
19
|
+
* Stream Frames and custom-layout scene nodes carry the user's object under
|
|
20
|
+
* `.data` (a `RealtimeNode` / `SceneDatum` wrapper), and some interaction
|
|
21
|
+
* payloads nest it under `.datum` (hit-test results, certain tooltip inputs) —
|
|
22
|
+
* the wrapped-vs-raw split that bites every `onObservation` consumer. This
|
|
23
|
+
* collapses all of it: `unwrapDatum(value)` always yields the object you
|
|
24
|
+
* passed in, whether the frame wrapped it (either way) or not.
|
|
25
|
+
*
|
|
26
|
+
* This is **the** unwrap path for both `onObservation` handlers and
|
|
27
|
+
* `frameProps.tooltipContent` renderers — call it once on the incoming value
|
|
28
|
+
* instead of hand-rolling `x.data ?? x` guards (and never pre-unwrap the
|
|
29
|
+
* argument yourself: `unwrapDatum(x?.data ?? x)` can double-unwrap a raw datum
|
|
30
|
+
* that legitimately carries a `data` field).
|
|
31
|
+
*
|
|
32
|
+
* Heuristic footgun: any value with a top-level `data` (or `datum`) property is
|
|
33
|
+
* treated as a wrapper. If your *raw* datum legitimately has its own such
|
|
34
|
+
* field, this returns that field instead of the datum — rename the field or
|
|
35
|
+
* read it directly.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* onObservation={(o) => {
|
|
40
|
+
* if (o.type === "hover") setActive(unwrapDatum(o.datum))
|
|
41
|
+
* }}
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function unwrapDatum<T = Datum>(value: unknown): T | null;
|
|
45
|
+
/**
|
|
46
|
+
* Group items into a `Map` keyed by a derived string. Insertion order is
|
|
47
|
+
* preserved both for keys and within each bucket — recipes rely on stable
|
|
48
|
+
* ordering for deterministic layout. Several recipes re-declared this; it lives
|
|
49
|
+
* here once.
|
|
50
|
+
*/
|
|
51
|
+
export declare function groupBy<T>(items: readonly T[], key: (item: T) => string): Map<string, T[]>;
|
|
8
52
|
/**
|
|
9
53
|
* Build a datum object whose own-properties are safe to set from
|
|
10
54
|
* user-supplied accessor names. `Object.create(null)` produces a
|
|
@@ -25,3 +69,116 @@ export declare function resolveAccessor<T = unknown>(a: string | ((d: Datum) =>
|
|
|
25
69
|
* scattered across each recipe's inner loops.
|
|
26
70
|
*/
|
|
27
71
|
export declare function createSafeDatum(populate: (set: (key: string, value: unknown) => void) => void): Datum;
|
|
72
|
+
/**
|
|
73
|
+
* A `{field, value}` highlight target — or an array of them, AND-combined (a
|
|
74
|
+
* datum must match every entry to count as a match, e.g. a region×orbit cell).
|
|
75
|
+
* `value` is coerced to a string before comparison; a nullish `value` matches
|
|
76
|
+
* anything (so `{ field, value: null }` is a no-op constraint).
|
|
77
|
+
*/
|
|
78
|
+
export type HighlightMatch = {
|
|
79
|
+
field: string;
|
|
80
|
+
value: unknown;
|
|
81
|
+
} | ReadonlyArray<{
|
|
82
|
+
field: string;
|
|
83
|
+
value: unknown;
|
|
84
|
+
}>;
|
|
85
|
+
/**
|
|
86
|
+
* Whether `datum` satisfies a `{field, value}` highlight (or every entry of an
|
|
87
|
+
* array). A nullish/empty `highlight` matches everything — the "no highlight
|
|
88
|
+
* active" case. Several recipes hand-rolled this exact field/value loop.
|
|
89
|
+
*/
|
|
90
|
+
export declare function matchesHighlight(datum: Datum, highlight: HighlightMatch | null | undefined): boolean;
|
|
91
|
+
export interface DimOptions {
|
|
92
|
+
/** A datum is lit only if this predicate passes (e.g. a shared-selection
|
|
93
|
+
* predicate, or `parallelCoordinates`'s `highlightFn`). Omit ⇒ no constraint. */
|
|
94
|
+
predicate?: ((d: Datum) => boolean) | null;
|
|
95
|
+
/** A datum is lit only if it matches this `{field, value}` (or all, for an
|
|
96
|
+
* array). Omit ⇒ no constraint. Composes with `predicate` (both must pass). */
|
|
97
|
+
highlight?: HighlightMatch | null;
|
|
98
|
+
/** Opacity used when no cue is active (nothing is dimmed). @default 1 */
|
|
99
|
+
baseOpacity?: number;
|
|
100
|
+
/** Opacity for marks that don't match an active cue. @default 0.16 */
|
|
101
|
+
dimOpacity?: number;
|
|
102
|
+
/** Additive opacity boost for matching marks when a cue is active, capped at 1
|
|
103
|
+
* (e.g. `parallelCoordinates` lifts its 0.45 line opacity by 0.4 on match). @default 0 */
|
|
104
|
+
brighten?: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The highlight/dim opacity rule, shared across custom-layout recipes. A mark is
|
|
108
|
+
* "lit" when it satisfies **every** active cue (`highlight` AND `predicate`); if
|
|
109
|
+
* no cue is active nothing is dimmed and every mark gets `baseOpacity`. Lit marks
|
|
110
|
+
* get `min(1, baseOpacity + brighten)`, dimmed marks get `dimOpacity`.
|
|
111
|
+
*
|
|
112
|
+
* This is the one rule `packedClusterMatrix` and `parallelCoordinates` each
|
|
113
|
+
* hand-rolled; centralizing it keeps the "matching marks stay lit, the rest dim"
|
|
114
|
+
* behavior identical. (Recipes whose dimming composes several cues with priority
|
|
115
|
+
* and rescue rules — e.g. `lineageDag`'s reach-set-over-selection — keep their
|
|
116
|
+
* bespoke logic; this helper is for the common AND-of-cues case.)
|
|
117
|
+
*/
|
|
118
|
+
export declare function dimFor(datum: Datum, opts?: DimOptions): number;
|
|
119
|
+
/**
|
|
120
|
+
* Join layout-affecting inputs into a stable content-signature string. Pass the
|
|
121
|
+
* primitives that change the geometry (dimensions, gaps, orders, a per-datum
|
|
122
|
+
* fingerprint) — NOT styling/interaction inputs (color, shade, highlight) — so a
|
|
123
|
+
* re-style or a returning resize reuses a cached layout instead of recomputing it.
|
|
124
|
+
* Pairs with {@link LayoutCache}.
|
|
125
|
+
*/
|
|
126
|
+
export declare function signatureKey(parts: ReadonlyArray<string | number | boolean | null | undefined>): string;
|
|
127
|
+
/**
|
|
128
|
+
* A tiny bounded geometry cache for expensive layouts (force packing, tree/DAG
|
|
129
|
+
* positioning). Key it with a {@link signatureKey} of the layout-affecting inputs
|
|
130
|
+
* so re-styling on interaction never re-runs the layout.
|
|
131
|
+
*
|
|
132
|
+
* **The sharp edge:** on `NetworkCustomChart`/`*CustomChart`, `ctx.nodes` is a
|
|
133
|
+
* *fresh array each `buildScene`* and a `layoutConfig` change re-runs the layout
|
|
134
|
+
* without re-ingesting topology — so cache by *content* (a fingerprint of the
|
|
135
|
+
* data), never by array identity. Over `maxSize` distinct keys it clears wholesale
|
|
136
|
+
* (these layouts churn a handful of signatures, not thousands).
|
|
137
|
+
*/
|
|
138
|
+
export declare class LayoutCache<V> {
|
|
139
|
+
private readonly maxSize;
|
|
140
|
+
private store;
|
|
141
|
+
constructor(maxSize?: number);
|
|
142
|
+
get(key: string): V | undefined;
|
|
143
|
+
set(key: string, value: V): void;
|
|
144
|
+
/** Return the cached value for `key`, or compute + store it on a miss. */
|
|
145
|
+
getOrCompute(key: string, compute: () => V): V;
|
|
146
|
+
clear(): void;
|
|
147
|
+
get size(): number;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* A reusable lightness shader for one base color. Interpolating in CIELAB keeps
|
|
151
|
+
* the hue and chroma roughly fixed while only lightness moves, so a categorical
|
|
152
|
+
* hue can carry a second *continuous* channel as shade (e.g. age, recency).
|
|
153
|
+
*
|
|
154
|
+
* The returned function takes `t ∈ [0,1]`: `0` lightens toward white, `1`
|
|
155
|
+
* darkens toward black, `0.5` returns the base. `strength` (0..1) caps how far
|
|
156
|
+
* each direction travels. Pure / SSR-safe — no DOM. Build once per base color
|
|
157
|
+
* (it captures two interpolators) and call per datum.
|
|
158
|
+
*/
|
|
159
|
+
export declare function makeShade(baseColor: string, strength?: number): (t: number) => string;
|
|
160
|
+
/** One-shot form of {@link makeShade}: perceptual lightness shade of `baseColor`. */
|
|
161
|
+
export declare function shade(baseColor: string, t: number, strength?: number): string;
|
|
162
|
+
/** Build a scene-node `datum` from a flat field map (a thin wrapper over
|
|
163
|
+
* {@link createSafeDatum}, used by recipes that synthesize per-glyph data). */
|
|
164
|
+
export declare function datumFromFields(fields: Record<string, unknown>): Datum;
|
|
165
|
+
/** A stable, URL/key-safe id from an arbitrary label — for keyed overlays and
|
|
166
|
+
* transition identity (`"Extra Boba" → "extra-boba"`). */
|
|
167
|
+
export declare function stableGlyphId(value: string): string;
|
|
168
|
+
/** Clamp `value` into `[min, max]`. The one-liner every layout re-declares to
|
|
169
|
+
* keep a radius, opacity, or pixel position inside its valid range. */
|
|
170
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
171
|
+
/** Coerce to a finite non-negative number. Shared by tally/token helpers so
|
|
172
|
+
* non-finite inputs fail closed instead of leaking NaN into geometry. */
|
|
173
|
+
export declare function nonNegativeFinite(value: number | undefined): number;
|
|
174
|
+
/** Arithmetic mean of a numeric list; `0` for an empty list (so it's safe to
|
|
175
|
+
* feed an unfiltered slice). Recipes average angles, positions, and weights. */
|
|
176
|
+
export declare function mean(values: readonly number[]): number;
|
|
177
|
+
/**
|
|
178
|
+
* Turn a hex color (`#rgb` or `#rrggbb`) into an `rgba(…)` string at `alpha`.
|
|
179
|
+
* The dimming-by-alpha helper a custom layout reaches for when it must express
|
|
180
|
+
* hover/selection fade as a *fill color* (e.g. inside a recipe's `resolveColor`
|
|
181
|
+
* callback, where the frame's opacity channel isn't available). Non-hex input
|
|
182
|
+
* is returned unchanged so it composes with CSS-var / `rgb()` colors.
|
|
183
|
+
*/
|
|
184
|
+
export declare function withAlpha(color: string, alpha: number): string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-length encoding for sequential/categorical series — the "collapse a
|
|
3
|
+
* per-step categorical field into drawable runs" operation that condition
|
|
4
|
+
* strips, status timelines, and calendar ribbons all need. A custom layout
|
|
5
|
+
* draws one rect per run instead of one per step.
|
|
6
|
+
*
|
|
7
|
+
* Pure / SSR-safe. Several custom charts re-derived this with three slightly
|
|
8
|
+
* different signatures (value-change by index, value-change by domain coord,
|
|
9
|
+
* boolean-present); this is the single form that covers all three.
|
|
10
|
+
*/
|
|
11
|
+
export interface Run<V> {
|
|
12
|
+
/** The constant value over the run. */
|
|
13
|
+
value: V;
|
|
14
|
+
/** Run start on the domain axis — the array index of the first item, or the
|
|
15
|
+
* `coord` of the first item when `coord` is supplied. Inclusive. */
|
|
16
|
+
start: number;
|
|
17
|
+
/** Run end on the domain axis. Half-open: the run covers `[start, end)`. With
|
|
18
|
+
* `coord`, this is the next item's coord (or the last coord + `step` for the
|
|
19
|
+
* final run / a run that precedes a gap). Without `coord`, the index after
|
|
20
|
+
* the run's last item. */
|
|
21
|
+
end: number;
|
|
22
|
+
/** Number of consecutive items in the run. */
|
|
23
|
+
count: number;
|
|
24
|
+
/** Index of the run's first item in the input array. */
|
|
25
|
+
startIndex: number;
|
|
26
|
+
/** Index of the run's last item in the input array (inclusive). */
|
|
27
|
+
endIndex: number;
|
|
28
|
+
}
|
|
29
|
+
export interface RunOptions<T, V> {
|
|
30
|
+
/** Map an item to its position on the domain axis (e.g. day-of-year). When
|
|
31
|
+
* omitted, the array index is used and runs are index-based. A gap in
|
|
32
|
+
* `coord` (a jump larger than `step`) closes the current run. */
|
|
33
|
+
coord?: (item: T, index: number) => number;
|
|
34
|
+
/** Width of one item on the domain axis — closes the final run and detects
|
|
35
|
+
* gaps when `coord` is supplied. @default 1 */
|
|
36
|
+
step?: number;
|
|
37
|
+
/** Custom equality for grouping adjacent items. @default `Object.is` */
|
|
38
|
+
equals?: (a: V, b: V) => boolean;
|
|
39
|
+
/** Presence mode: only items with a truthy value form runs; falsy items break
|
|
40
|
+
* the current run and are excluded entirely (the boolean condition-strip
|
|
41
|
+
* variant). @default false */
|
|
42
|
+
truthyOnly?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Collapse a sequential series into runs of equal adjacent values.
|
|
46
|
+
*
|
|
47
|
+
* @example value-change runs over a domain coordinate (a condition ring/strip)
|
|
48
|
+
* ```ts
|
|
49
|
+
* runs(days, (d) => d.condition, { coord: (d) => d.day, step: 1 })
|
|
50
|
+
* // → [{ value: "clear", start: 0, end: 5, count: 5, ... }, ...]
|
|
51
|
+
* ```
|
|
52
|
+
* @example boolean present/absent runs (a "freezing days" strip)
|
|
53
|
+
* ```ts
|
|
54
|
+
* runs(days, (d) => d.belowFreezing, { truthyOnly: true })
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function runs<T, V = unknown>(items: readonly T[], value: (item: T, index: number) => V, opts?: RunOptions<T, V>): Run<V>[];
|
|
58
|
+
/** Alias for {@link runs} — the textbook name for the transform. */
|
|
59
|
+
export declare const runLengthEncode: typeof runs;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export type TokenType = "dot" | "icon" | "glyph";
|
|
2
|
+
export type TokenSemantics = "observed-unit" | "unitized-measure" | "possible-outcome" | "posterior-sample" | "hypothetical-case" | "risk-case" | "topic-anchor" | "decorative";
|
|
3
|
+
export type TokenCountStrategy = "actual" | "unitized" | "fixed-denominator" | "quantile" | "sample" | "posterior-sample" | "random-sample";
|
|
4
|
+
export type TokenLayout = "row" | "column" | "grid" | "stack" | "bar-segment" | "waffle" | "beeswarm" | "dotplot" | "quantile-strip" | "small-multiple";
|
|
5
|
+
export type TokenLabelPolicy = "text-plus-token" | "text-plus-icon" | "text-only" | "token-only" | "icon-only" | "none";
|
|
6
|
+
export type TokenTaskIntent = "precise-comparison" | "frequency-reasoning" | "probability-estimation" | "risk-communication" | "memory" | "editorial-engagement" | "public-explanation" | "support-decision" | "measure" | "estimate probability" | "understand risk" | "remember" | "decide";
|
|
7
|
+
export type TokenCapabilityIntent = "compare-categories" | "distribution" | "part-to-whole" | "rank" | "outlier-detection";
|
|
8
|
+
export interface TokenEncoding {
|
|
9
|
+
tokenType: TokenType;
|
|
10
|
+
tokenSemantics: TokenSemantics;
|
|
11
|
+
countStrategy: TokenCountStrategy;
|
|
12
|
+
layout?: TokenLayout;
|
|
13
|
+
/** Named icon/glyph key in host code; Semiotic keeps this semantic, not visual. */
|
|
14
|
+
token?: string;
|
|
15
|
+
icon?: string;
|
|
16
|
+
/** Value represented by one complete token for unitized measures. */
|
|
17
|
+
unitValue?: number;
|
|
18
|
+
/** Alias for `unitValue`, matching the lower-level `unitize` helper. */
|
|
19
|
+
unit?: number;
|
|
20
|
+
/** Human-readable meaning, e.g. "one token = 1,000 commuters". */
|
|
21
|
+
unitMeaning?: string;
|
|
22
|
+
tokenCount?: number;
|
|
23
|
+
maxTokens?: number;
|
|
24
|
+
minFraction?: number;
|
|
25
|
+
numerator?: number;
|
|
26
|
+
denominator?: number;
|
|
27
|
+
labelPolicy?: TokenLabelPolicy;
|
|
28
|
+
seed?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface TokenGeneratorInput<D = unknown> {
|
|
31
|
+
value?: number;
|
|
32
|
+
/** Scenario/projection endpoint for `unitized` tallies. */
|
|
33
|
+
rangeValue?: number;
|
|
34
|
+
numerator?: number;
|
|
35
|
+
denominator?: number;
|
|
36
|
+
samples?: readonly number[];
|
|
37
|
+
data?: readonly D[];
|
|
38
|
+
valueAccessor?: keyof D | ((d: D) => number);
|
|
39
|
+
}
|
|
40
|
+
export interface VisualToken<D = unknown> {
|
|
41
|
+
index: number;
|
|
42
|
+
tokenType: TokenType;
|
|
43
|
+
tokenSemantics: TokenSemantics;
|
|
44
|
+
countStrategy: TokenCountStrategy;
|
|
45
|
+
fraction: number;
|
|
46
|
+
startFraction: number;
|
|
47
|
+
value: number;
|
|
48
|
+
start: number;
|
|
49
|
+
end: number;
|
|
50
|
+
unitValue?: number;
|
|
51
|
+
unitMeaning?: string;
|
|
52
|
+
highlighted?: boolean;
|
|
53
|
+
/** Marks a token as the projected/scenario extension of a range tally. */
|
|
54
|
+
range?: "scenario";
|
|
55
|
+
quantile?: number;
|
|
56
|
+
sample?: number;
|
|
57
|
+
datum?: D;
|
|
58
|
+
}
|
|
59
|
+
export type TokenDiagnosticCode = "TOKEN_SEMANTICS_UNCLEAR" | "MISSING_COUNT_STRATEGY" | "ICON_ONLY_LABELS" | "TOO_MANY_VISIBLE_TOKENS" | "DECORATIVE_PICTOGRAPHS" | "TOKEN_STRATEGY_MISMATCH" | "MISSING_UNIT_VALUE" | "MISSING_UNIT_MEANING";
|
|
60
|
+
export interface TokenDiagnostic {
|
|
61
|
+
code: TokenDiagnosticCode;
|
|
62
|
+
severity: "warning" | "info";
|
|
63
|
+
message: string;
|
|
64
|
+
}
|
|
65
|
+
export interface TokenDiagnosticsContext {
|
|
66
|
+
visibleTokens?: number;
|
|
67
|
+
maxRecommendedTokens?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface TokenSet<D = unknown> {
|
|
70
|
+
tokens: VisualToken<D>[];
|
|
71
|
+
encoding: TokenEncoding;
|
|
72
|
+
/**
|
|
73
|
+
* Strategy-specific source total: value-space for `unitized`/numeric `actual`,
|
|
74
|
+
* denominator for `fixed-denominator`, sample count for sample/quantile
|
|
75
|
+
* strategies, and observed datum count for data-backed `actual`.
|
|
76
|
+
*/
|
|
77
|
+
total: number;
|
|
78
|
+
/**
|
|
79
|
+
* Strategy-specific visible amount: represented value for `unitized`, visible
|
|
80
|
+
* token count for fixed-denominator/sample/quantile/data-backed actual.
|
|
81
|
+
*/
|
|
82
|
+
shown: number;
|
|
83
|
+
overflow: boolean;
|
|
84
|
+
numerator?: number;
|
|
85
|
+
denominator?: number;
|
|
86
|
+
unitValue?: number;
|
|
87
|
+
/** Projected/scenario endpoint when input.rangeValue is supplied. */
|
|
88
|
+
rangeTotal?: number;
|
|
89
|
+
/** Tokens extending a unitized tally from total to rangeTotal. */
|
|
90
|
+
rangeTokens?: VisualToken<D>[];
|
|
91
|
+
diagnostics: TokenDiagnostic[];
|
|
92
|
+
}
|
|
93
|
+
export interface TokenGridOptions {
|
|
94
|
+
x?: number;
|
|
95
|
+
y?: number;
|
|
96
|
+
columns?: number;
|
|
97
|
+
rows?: number;
|
|
98
|
+
cellWidth?: number;
|
|
99
|
+
cellHeight?: number;
|
|
100
|
+
gutter?: number;
|
|
101
|
+
flow?: "row" | "column";
|
|
102
|
+
columnDirection?: "right" | "left";
|
|
103
|
+
rowDirection?: "down" | "up";
|
|
104
|
+
/** Anchor within each cell for the returned point. `[0.5, 1]` is useful for feet-down glyphs. */
|
|
105
|
+
anchor?: [number, number];
|
|
106
|
+
}
|
|
107
|
+
export interface PositionedToken<D = unknown> extends VisualToken<D> {
|
|
108
|
+
x: number;
|
|
109
|
+
y: number;
|
|
110
|
+
row: number;
|
|
111
|
+
column: number;
|
|
112
|
+
}
|
|
113
|
+
export interface TokenEncodingSuggestion {
|
|
114
|
+
recommendedEncoding: string;
|
|
115
|
+
tokenEncoding?: TokenEncoding;
|
|
116
|
+
rationale: string;
|
|
117
|
+
warnings: TokenDiagnostic[];
|
|
118
|
+
alternatives: string[];
|
|
119
|
+
}
|
|
120
|
+
export interface SuggestTokenEncodingInput {
|
|
121
|
+
taskIntent: TokenTaskIntent;
|
|
122
|
+
dataType?: "count" | "measure" | "distribution" | "probability" | "risk" | "category";
|
|
123
|
+
audience?: "expert" | "general-public" | "internal";
|
|
124
|
+
precisionNeed?: "low" | "medium" | "high";
|
|
125
|
+
availableSpace?: "small" | "medium" | "large";
|
|
126
|
+
concreteEntity?: string;
|
|
127
|
+
}
|
|
128
|
+
export declare function normalizeTokenEncoding(encoding: TokenEncoding): TokenEncoding;
|
|
129
|
+
/**
|
|
130
|
+
* Generate visible token records from a semantic token encoding.
|
|
131
|
+
*
|
|
132
|
+
* This is the frame-agnostic bridge between the strategy layer ("each token
|
|
133
|
+
* is a case / unit / possible outcome") and today's glyph/dot/icon renderers.
|
|
134
|
+
* `unitized` delegates to `unitize`, so fractional final glyphs keep the same
|
|
135
|
+
* ISOTYPE partial-fill convention used by existing custom layouts.
|
|
136
|
+
*/
|
|
137
|
+
export declare function generateTokens<D = unknown>(input: number | readonly number[] | TokenGeneratorInput<D>, encoding: TokenEncoding): TokenSet<D>;
|
|
138
|
+
/**
|
|
139
|
+
* Position generated tokens in a deterministic row/column grid. The returned
|
|
140
|
+
* `(x, y)` is the anchor point inside each cell, so use `[0.5, 1]` for
|
|
141
|
+
* baseline-standing ISOTYPE glyphs and `[0.5, 0.5]` for centered dots/icons.
|
|
142
|
+
*/
|
|
143
|
+
export declare function layoutTokenGrid<D = unknown>(tokenSetOrTokens: TokenSet<D> | readonly VisualToken<D>[], options?: TokenGridOptions): PositionedToken<D>[];
|
|
144
|
+
export declare function diagnoseTokenEncoding(encoding: Partial<TokenEncoding>, context?: TokenDiagnosticsContext): TokenDiagnostic[];
|
|
145
|
+
/**
|
|
146
|
+
* Bridge token-task intents into the chart capability taxonomy used by
|
|
147
|
+
* `suggestCharts`. Human-friendly aliases normalize first, so callers can use
|
|
148
|
+
* either the canonical token intent (`probability-estimation`) or the UI label
|
|
149
|
+
* alias (`estimate probability`).
|
|
150
|
+
*/
|
|
151
|
+
export declare function tokenTaskIntentToCapabilityIntents(intent: TokenTaskIntent): TokenCapabilityIntent[];
|
|
152
|
+
/**
|
|
153
|
+
* Task-aware defaults for tokenized reasoning. This does not render a chart;
|
|
154
|
+
* it returns the semantic encoding Semiotic/IDID can explain, critique, or
|
|
155
|
+
* hand to `generateTokens` before a custom layout stamps dots/icons/glyphs.
|
|
156
|
+
*/
|
|
157
|
+
export declare function suggestTokenEncoding(input: SuggestTokenEncodingInput): TokenEncodingSuggestion;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { GlyphDef } from "../stream/glyphDef";
|
|
2
|
+
import type { SceneAccessibilityMetadata, SceneDatum, SceneNode, Style } from "../stream/types";
|
|
3
|
+
import type { SymbolName } from "../stream/symbolPath";
|
|
4
|
+
import { type PositionedToken, type TokenEncoding, type TokenGeneratorInput, type TokenGridOptions, type TokenLayout, type TokenSet, type VisualToken } from "./tokenEncoding";
|
|
5
|
+
export type TokenLayerInput<D> = number | readonly number[] | TokenGeneratorInput<D> | TokenSet<D>;
|
|
6
|
+
export type TokenLayerValue<T, D> = T | ((token: PositionedToken<D>) => T | undefined);
|
|
7
|
+
export interface TokenPosition {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
row?: number;
|
|
11
|
+
column?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface TokenLayerOptions<D = unknown> extends TokenGridOptions {
|
|
14
|
+
/** Override the encoding's preferred layout for this placement. */
|
|
15
|
+
layout?: TokenLayout;
|
|
16
|
+
/** Plot-space width used to infer grid columns or normalize quantile strips. */
|
|
17
|
+
width?: number;
|
|
18
|
+
/** Plot-space height used to normalize quantile strips. */
|
|
19
|
+
height?: number;
|
|
20
|
+
/** Rendered glyph height / symbol diameter / dot diameter. @default 12
|
|
21
|
+
* For user-facing ISOTYPE/icon arrays, prefer 16px+ in the final layout. */
|
|
22
|
+
tokenSize?: TokenLayerValue<number, D>;
|
|
23
|
+
/** Dot radius. Defaults to half tokenSize. */
|
|
24
|
+
radius?: TokenLayerValue<number, D>;
|
|
25
|
+
/** Primary mark paint. Prefer passing ctx.resolveColor(...) from custom layouts. */
|
|
26
|
+
color?: TokenLayerValue<string, D>;
|
|
27
|
+
/** Paint for unhighlighted fixed-denominator tokens. */
|
|
28
|
+
inactiveColor?: TokenLayerValue<string, D>;
|
|
29
|
+
/** Paint for projected/scenario range tokens when includeRange is true. */
|
|
30
|
+
rangeColor?: TokenLayerValue<string, D>;
|
|
31
|
+
/** Accent paint for glyph role fills. */
|
|
32
|
+
accent?: TokenLayerValue<string, D>;
|
|
33
|
+
/** Ghost paint for partial glyph fills. */
|
|
34
|
+
ghostColor?: TokenLayerValue<string | undefined, D>;
|
|
35
|
+
/** Symbol shape for dot/icon fallback rendering. */
|
|
36
|
+
symbolType?: TokenLayerValue<SymbolName, D>;
|
|
37
|
+
/** Custom origin-centered SVG path for symbol nodes. */
|
|
38
|
+
symbolPath?: TokenLayerValue<string | undefined, D>;
|
|
39
|
+
/** Composite pictogram definition for icon/glyph tokens. */
|
|
40
|
+
glyph?: TokenLayerValue<GlyphDef | undefined, D>;
|
|
41
|
+
/** Partial-fill axis for glyph tokens. */
|
|
42
|
+
fractionDirection?: TokenLayerValue<"horizontal" | "vertical", D>;
|
|
43
|
+
rotation?: TokenLayerValue<number | undefined, D>;
|
|
44
|
+
style?: TokenLayerValue<Style | undefined, D>;
|
|
45
|
+
datum?: TokenLayerValue<SceneDatum, D>;
|
|
46
|
+
accessibleDatum?: TokenLayerValue<SceneAccessibilityMetadata["accessibleDatum"], D>;
|
|
47
|
+
accessibility?: TokenLayerValue<SceneAccessibilityMetadata["accessibility"], D>;
|
|
48
|
+
pointId?: TokenLayerValue<string | undefined, D>;
|
|
49
|
+
idPrefix?: string;
|
|
50
|
+
include?: (token: PositionedToken<D>) => boolean;
|
|
51
|
+
/** Render `TokenSet.rangeTokens` after base tokens for unitized scenario tallies. */
|
|
52
|
+
includeRange?: boolean;
|
|
53
|
+
/** Custom placement hook for scale-driven strips, stacks, map clusters, etc. */
|
|
54
|
+
positionToken?: (token: VisualToken<D>, index: number, tokens: readonly VisualToken<D>[]) => TokenPosition;
|
|
55
|
+
/** Maps a sample/value to plot-space x for quantile/sample strips. */
|
|
56
|
+
valueToX?: (value: number, token: VisualToken<D>) => number;
|
|
57
|
+
/** Maps a sample/value to plot-space y for quantile/sample strips. */
|
|
58
|
+
valueToY?: (value: number, token: VisualToken<D>) => number;
|
|
59
|
+
}
|
|
60
|
+
export interface TokenLayerConfig<D = unknown> {
|
|
61
|
+
input: TokenLayerInput<D>;
|
|
62
|
+
encoding?: TokenEncoding;
|
|
63
|
+
options?: TokenLayerOptions<D>;
|
|
64
|
+
}
|
|
65
|
+
export interface TokenLayerResult<D = unknown> {
|
|
66
|
+
tokenSet: TokenSet<D>;
|
|
67
|
+
positionedTokens: PositionedToken<D>[];
|
|
68
|
+
nodes: SceneNode[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Frame-agnostic rendering helper for tokenized reasoning.
|
|
72
|
+
*
|
|
73
|
+
* `tokenLayer` is the scene-node bridge for ISOTYPE/icon arrays, risk grids,
|
|
74
|
+
* quantile dotplots, and hybrid bar-token layouts. It creates the semantic
|
|
75
|
+
* tokens, positions them, and returns ordinary Semiotic scene nodes so custom
|
|
76
|
+
* charts still get canvas/SVG rendering, hit testing, keyboard navigation,
|
|
77
|
+
* pointId annotations, transitions, and accessible table rows.
|
|
78
|
+
*/
|
|
79
|
+
export declare function tokenLayer<D = unknown>({ input, encoding, options, }: TokenLayerConfig<D>): TokenLayerResult<D>;
|