semiotic 3.7.5 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +54 -12
- package/README.md +121 -27
- package/agent-skill/semiotic-charts/SKILL.md +146 -0
- package/ai/cli.js +133 -45
- package/ai/componentMetadata.cjs +6 -1
- package/ai/dist/mcp-server.js +1651 -154
- package/ai/examples.md +174 -0
- package/ai/schema.json +2733 -536
- package/ai/surface-manifest.json +200 -0
- package/ai/system-prompt.md +18 -3
- package/dist/components/CategoryColors.d.ts +1 -1
- package/dist/components/ChartContainer.d.ts +91 -0
- package/dist/components/ChartGrid.d.ts +11 -1
- package/dist/components/CircularBrush.d.ts +61 -0
- package/dist/components/ContextLayout.d.ts +5 -1
- package/dist/components/DirectManipulationControl.d.ts +63 -0
- package/dist/components/LinkedCharts.d.ts +3 -1
- package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
- package/dist/components/MobileChartContainer.d.ts +51 -0
- package/dist/components/MobileStandardControls.d.ts +68 -0
- package/dist/components/SmallMultipleChart.d.ts +84 -0
- package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
- package/dist/components/ai/ChartRecipe.d.ts +16 -0
- package/dist/components/ai/IntentMark.d.ts +15 -0
- package/dist/components/ai/chartCapabilities.d.ts +8 -1
- package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
- package/dist/components/ai/chartClinic.d.ts +91 -0
- package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
- package/dist/components/ai/chartRecipes.d.ts +278 -0
- package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
- package/dist/components/ai/describeChart.d.ts +7 -0
- package/dist/components/ai/describeRecipeChart.d.ts +16 -0
- package/dist/components/ai/generativeChart.d.ts +28 -3
- package/dist/components/ai/intentManifest.d.ts +62 -0
- package/dist/components/ai/navigationTree.d.ts +3 -0
- package/dist/components/ai/observedSceneAudit.d.ts +72 -0
- package/dist/components/ai/readerGrounding.d.ts +83 -0
- package/dist/components/ai/recipeCapability.d.ts +8 -0
- package/dist/components/ai/recipeNavigation.d.ts +13 -0
- package/dist/components/ai/recipeSemantics.d.ts +11 -0
- package/dist/components/ai/repairChartConfig.d.ts +9 -0
- package/dist/components/ai/suggestCharts.d.ts +11 -1
- package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
- package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
- package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
- package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
- package/dist/components/charts/geo/FlowMap.d.ts +1 -1
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
- package/dist/components/charts/geo/index.d.ts +2 -0
- package/dist/components/charts/index.d.ts +29 -1
- package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
- package/dist/components/charts/network/CirclePack.d.ts +1 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
- package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
- package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
- package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
- package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
- package/dist/components/charts/network/Treemap.d.ts +1 -1
- package/dist/components/charts/network/useForceLayout.d.ts +17 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
- package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
- package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
- package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
- package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
- package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
- package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
- package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
- package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
- package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
- package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
- package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
- package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
- package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
- package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
- package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
- package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
- package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
- package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
- package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
- package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
- package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
- package/dist/components/charts/physics/gauntletController.d.ts +73 -0
- package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
- package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
- package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
- package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
- package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
- package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
- package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
- package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
- package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
- package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
- package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
- package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
- package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
- package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
- package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
- package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
- package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
- package/dist/components/charts/shared/colorContrast.d.ts +3 -0
- package/dist/components/charts/shared/colorUtils.d.ts +16 -1
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
- package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
- package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
- package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
- package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
- package/dist/components/charts/shared/hooks.d.ts +28 -5
- package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
- package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
- package/dist/components/charts/shared/types.d.ts +49 -1
- package/dist/components/charts/shared/useChartSetup.d.ts +9 -2
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +14 -5
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
- package/dist/components/charts/shared/validationMap.d.ts +0 -11
- package/dist/components/charts/xy/AreaChart.d.ts +1 -1
- package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
- package/dist/components/charts/xy/LineChart.d.ts +1 -1
- package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
- package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
- package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
- package/dist/components/charts/xy/Scatterplot.d.ts +1 -1
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
- package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
- package/dist/components/controls/controlAudit.d.ts +24 -0
- package/dist/components/controls/controlContract.d.ts +57 -0
- package/dist/components/data/fromFlintChart.d.ts +74 -0
- package/dist/components/data/fromVegaLite.d.ts +27 -0
- package/dist/components/data/portability/index.d.ts +6 -3
- package/dist/components/data/portability/result.d.ts +52 -0
- package/dist/components/data/portability/spec.d.ts +31 -0
- package/dist/components/data/portability/vegaLite.d.ts +24 -6
- package/dist/components/export/chartConfig.d.ts +11 -0
- package/dist/components/realtime/types.d.ts +11 -0
- package/dist/components/recipes/annotationLayout.d.ts +29 -0
- package/dist/components/recipes/axisFixedForce.d.ts +119 -0
- package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
- package/dist/components/recipes/cyclical.d.ts +39 -0
- package/dist/components/recipes/edgeRouter.d.ts +103 -0
- package/dist/components/recipes/forceLayout.d.ts +48 -0
- package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
- package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
- package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
- package/dist/components/recipes/gofishIR.d.ts +178 -132
- package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
- package/dist/components/recipes/intervalLanes.d.ts +87 -0
- package/dist/components/recipes/intervals.d.ts +80 -0
- package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
- package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
- package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
- package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
- package/dist/components/recipes/networkAnalysis.d.ts +102 -0
- package/dist/components/recipes/networkLayouts.d.ts +83 -0
- package/dist/components/recipes/physics.d.ts +122 -0
- package/dist/components/recipes/physicsReference.d.ts +102 -0
- package/dist/components/recipes/processAggregates.d.ts +32 -0
- package/dist/components/recipes/processChrome.d.ts +67 -0
- package/dist/components/recipes/processJourney.d.ts +54 -0
- package/dist/components/recipes/processPhysics.d.ts +300 -0
- package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
- package/dist/components/recipes/radialCoords.d.ts +69 -0
- package/dist/components/recipes/random.d.ts +2 -0
- package/dist/components/recipes/recipeChrome.d.ts +91 -0
- package/dist/components/recipes/recipeGlyph.d.ts +42 -0
- package/dist/components/recipes/recipeLegend.d.ts +53 -1
- package/dist/components/recipes/recipeUtils.d.ts +52 -0
- package/dist/components/recipes/runs.d.ts +59 -0
- package/dist/components/recipes/tokenEncoding.d.ts +157 -0
- package/dist/components/recipes/tokenLayer.d.ts +79 -0
- package/dist/components/recipes/unitize.d.ts +108 -0
- package/dist/components/recipes/vector.d.ts +28 -0
- package/dist/components/recipes/waffle.d.ts +43 -0
- package/dist/components/semiotic-ai-core.d.ts +47 -0
- package/dist/components/semiotic-ai.d.ts +50 -8
- package/dist/components/semiotic-controls.d.ts +18 -0
- package/dist/components/semiotic-experimental.d.ts +38 -9
- package/dist/components/semiotic-geo.d.ts +11 -0
- package/dist/components/semiotic-network.d.ts +11 -0
- package/dist/components/semiotic-ordinal.d.ts +8 -0
- package/dist/components/semiotic-physics-matter.d.ts +10 -0
- package/dist/components/semiotic-physics-rapier.d.ts +9 -0
- package/dist/components/semiotic-physics.d.ts +56 -0
- package/dist/components/semiotic-realtime-core.d.ts +34 -0
- package/dist/components/semiotic-realtime-react.d.ts +10 -0
- package/dist/components/semiotic-realtime.d.ts +4 -30
- package/dist/components/semiotic-recipes-core.d.ts +92 -0
- package/dist/components/semiotic-recipes-react.d.ts +7 -0
- package/dist/components/semiotic-recipes.d.ts +4 -43
- package/dist/components/semiotic-server-edge.d.ts +8 -0
- package/dist/components/semiotic-server-node.d.ts +5 -0
- package/dist/components/semiotic-server.d.ts +2 -2
- package/dist/components/semiotic-themes-core.d.ts +53 -0
- package/dist/components/semiotic-themes-react.d.ts +4 -0
- package/dist/components/semiotic-themes.d.ts +6 -76
- package/dist/components/semiotic-utils-core.d.ts +46 -0
- package/dist/components/semiotic-utils-react.d.ts +5 -0
- package/dist/components/semiotic-utils.d.ts +3 -39
- package/dist/components/semiotic-xy.d.ts +8 -0
- package/dist/components/semiotic.d.ts +35 -7
- package/dist/components/server/animatedGif.d.ts +36 -0
- package/dist/components/server/renderEvidence.d.ts +1 -1
- package/dist/components/server/renderToStaticSVG.d.ts +3 -35
- package/dist/components/server/serverChartConfigShared.d.ts +17 -0
- package/dist/components/server/serverChartConfigs.d.ts +19 -9
- package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
- package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
- package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
- package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
- package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
- package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
- package/dist/components/server/staticGeo.d.ts +4 -0
- package/dist/components/server/staticLegend.d.ts +1 -1
- package/dist/components/server/staticNetwork.d.ts +8 -0
- package/dist/components/server/staticOrdinal.d.ts +11 -0
- package/dist/components/server/staticPhysics.d.ts +3 -0
- package/dist/components/server/staticSVGChrome.d.ts +110 -0
- package/dist/components/server/staticXY.d.ts +4 -0
- package/dist/components/store/ObservationStore.d.ts +3 -2
- package/dist/components/store/themeSerialization.d.ts +32 -0
- package/dist/components/store/useChartInterrogation.d.ts +9 -0
- package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
- package/dist/components/stream/FocusRing.d.ts +4 -2
- package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
- package/dist/components/stream/NetworkPipelineStore.d.ts +31 -26
- package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -1
- package/dist/components/stream/OrdinalPipelineStore.d.ts +46 -2
- package/dist/components/stream/PipelineStore.d.ts +81 -170
- package/dist/components/stream/SceneGraph.d.ts +9 -1
- package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
- package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
- package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
- package/dist/components/stream/StreamXYFrame.d.ts +2 -18
- package/dist/components/stream/accessibleDataRows.d.ts +33 -0
- package/dist/components/stream/accessorUtils.d.ts +23 -10
- package/dist/components/stream/brushAccessibility.d.ts +25 -0
- package/dist/components/stream/canvasBackground.d.ts +24 -0
- package/dist/components/stream/canvasSetup.d.ts +4 -1
- package/dist/components/stream/customLayoutFailure.d.ts +33 -0
- package/dist/components/stream/customLayoutPalette.d.ts +19 -9
- package/dist/components/stream/frameThemeColors.d.ts +24 -0
- package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
- package/dist/components/stream/geoCartogram.d.ts +17 -0
- package/dist/components/stream/geoCustomLayout.d.ts +59 -0
- package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
- package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
- package/dist/components/stream/geoTypes.d.ts +56 -7
- package/dist/components/stream/glyphDef.d.ts +98 -0
- package/dist/components/stream/hitTarget.d.ts +170 -0
- package/dist/components/stream/hoverUtils.d.ts +3 -0
- package/dist/components/stream/keyboardNav.d.ts +4 -1
- package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
- package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
- package/dist/components/stream/networkBezier.d.ts +10 -0
- package/dist/components/stream/networkColorAccessors.d.ts +49 -0
- package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
- package/dist/components/stream/networkFramePaint.d.ts +43 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
- package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
- package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
- package/dist/components/stream/networkTypes.d.ts +76 -5
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
- package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/ordinalDomain.d.ts +38 -0
- package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
- package/dist/components/stream/ordinalPulse.d.ts +10 -0
- package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
- package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
- package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +40 -8
- package/dist/components/stream/paintNeeds.d.ts +31 -0
- package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
- package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
- package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
- package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
- package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
- package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
- package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
- package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
- package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
- package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
- package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
- package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
- package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
- package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
- package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
- package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
- package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
- package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
- package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
- package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
- package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
- package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
- package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
- package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
- package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
- package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
- package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
- package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
- package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
- package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
- package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
- package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
- package/dist/components/stream/pipelineConfig.d.ts +177 -0
- package/dist/components/stream/pipelineDecay.d.ts +20 -2
- package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
- package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
- package/dist/components/stream/pipelinePulse.d.ts +16 -2
- package/dist/components/stream/pipelineRibbons.d.ts +41 -0
- package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
- package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
- package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
- package/dist/components/stream/pipelineTransitions.d.ts +2 -0
- package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
- package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
- package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -0
- package/dist/components/stream/types.d.ts +135 -7
- package/dist/components/stream/useFrame.d.ts +21 -2
- package/dist/components/stream/useHydration.d.ts +6 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
- package/dist/components/stream/workerModuleUrl.d.ts +10 -0
- package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
- package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/xyCrosshair.d.ts +11 -0
- package/dist/components/stream/xyDateTicks.d.ts +9 -0
- package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/xySceneBuilders/types.d.ts +4 -4
- package/dist/controls.min.js +2 -0
- package/dist/controls.module.min.js +2 -0
- package/dist/forceLayoutWorker.js +1 -0
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics-matter.min.js +1 -0
- package/dist/physics-matter.module.min.js +1 -0
- package/dist/physics-rapier.min.js +1 -0
- package/dist/physics-rapier.module.min.js +1 -0
- package/dist/physics.min.js +2 -0
- package/dist/physics.module.min.js +2 -0
- package/dist/physicsWorker.js +1 -0
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
- package/dist/semiotic-ai-core.d.ts +47 -0
- package/dist/semiotic-ai-core.min.js +1 -0
- package/dist/semiotic-ai-core.module.min.js +1 -0
- package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
- package/dist/semiotic-ai.d.ts +50 -8
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
- package/dist/semiotic-controls.d.ts +18 -0
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental.d.ts +38 -9
- package/dist/semiotic-experimental.min.js +1 -1
- package/dist/semiotic-experimental.module.min.js +1 -1
- package/dist/semiotic-geo.d.ts +11 -0
- package/dist/semiotic-network.d.ts +11 -0
- package/dist/semiotic-ordinal.d.ts +8 -0
- package/dist/semiotic-physics-matter.d.ts +10 -0
- package/dist/semiotic-physics-rapier.d.ts +9 -0
- package/dist/semiotic-physics.d.ts +56 -0
- package/dist/semiotic-realtime-core.d.ts +34 -0
- package/dist/semiotic-realtime-core.min.js +1 -0
- package/dist/semiotic-realtime-core.module.min.js +1 -0
- package/dist/semiotic-realtime-react.d.ts +10 -0
- package/dist/semiotic-realtime-react.min.js +2 -0
- package/dist/semiotic-realtime-react.module.min.js +2 -0
- package/dist/semiotic-realtime.d.ts +4 -30
- package/dist/semiotic-recipes-core.d.ts +92 -0
- package/dist/semiotic-recipes-core.min.js +1 -0
- package/dist/semiotic-recipes-core.module.min.js +1 -0
- package/dist/semiotic-recipes-react.d.ts +7 -0
- package/dist/semiotic-recipes-react.min.js +2 -0
- package/dist/semiotic-recipes-react.module.min.js +2 -0
- package/dist/semiotic-recipes.d.ts +4 -43
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.d.ts +8 -0
- package/dist/semiotic-server-edge.min.js +1 -0
- package/dist/semiotic-server-edge.module.min.js +1 -0
- package/dist/semiotic-server-node.d.ts +5 -0
- package/dist/semiotic-server-node.min.js +1 -0
- package/dist/semiotic-server-node.module.min.js +1 -0
- package/dist/semiotic-server.d.ts +2 -2
- package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
- package/dist/semiotic-themes-core.d.ts +53 -0
- package/dist/semiotic-themes-core.min.js +1 -0
- package/dist/semiotic-themes-core.module.min.js +1 -0
- package/dist/semiotic-themes-react.d.ts +4 -0
- package/dist/semiotic-themes-react.min.js +2 -0
- package/dist/semiotic-themes-react.module.min.js +2 -0
- package/dist/semiotic-themes.d.ts +6 -76
- package/dist/semiotic-themes.min.js +1 -2
- package/dist/semiotic-themes.module.min.js +1 -2
- package/dist/semiotic-utils-core.d.ts +46 -0
- package/dist/semiotic-utils-core.min.js +1 -0
- package/dist/semiotic-utils-core.module.min.js +1 -0
- package/dist/semiotic-utils-react.d.ts +5 -0
- package/dist/semiotic-utils-react.min.js +2 -0
- package/dist/semiotic-utils-react.module.min.js +2 -0
- package/dist/semiotic-utils.d.ts +3 -39
- package/dist/semiotic-utils.min.js +1 -2
- package/dist/semiotic-utils.module.min.js +1 -2
- package/dist/semiotic-value.min.js +1 -1
- package/dist/semiotic-value.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +8 -0
- package/dist/semiotic.d.ts +35 -7
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
- package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +239 -87
- package/spec/README.md +152 -0
- package/spec/bindings/README.md +35 -0
- package/spec/bindings/vega-lite.mjs +112 -0
- package/spec/v0.1/annotation-provenance.schema.json +127 -0
- package/spec/v0.1/audience-profile.schema.json +67 -0
- package/spec/v0.1/chart-capability.schema.json +186 -0
- package/dist/components/recipes/gofish.d.ts +0 -207
- package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
- package/dist/components/recipes/gofishLambdas.d.ts +0 -145
- package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
- package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
- package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
- package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
- package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
- package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { NetworkCustomLayout } from "../stream/networkCustomLayout";
|
|
2
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Axis-fixed force layout — "one axis is data, relax the other." Pins each
|
|
5
|
+
* node's position on one axis from a data field (e.g. year → y) and settles the
|
|
6
|
+
* free axis with edge attraction, an anchor spring, and **rectangular**
|
|
7
|
+
* (label-box-aware) collision. The distinct, reusable layout family none of the
|
|
8
|
+
* hierarchical recipes (`flextree`, `dagre`, `lineageDag`, `mermaidDag`) cover —
|
|
9
|
+
* a chronological influence/genealogy network where time is structural and the
|
|
10
|
+
* graph determines the cross-axis arrangement.
|
|
11
|
+
*
|
|
12
|
+
* Rectangular collision ({@link rectCollide}) is the differentiator over plain
|
|
13
|
+
* d3-force, whose `forceCollide` only separates circles — text labels are boxes.
|
|
14
|
+
*
|
|
15
|
+
* Two entry points:
|
|
16
|
+
* - {@link axisFixedForcePositions} — the pure positioner. Returns positioned
|
|
17
|
+
* boxes; pair with art-directed `overlays` + `networkHitTarget` for full
|
|
18
|
+
* control over how nodes/edges look.
|
|
19
|
+
* - {@link axisFixedForceLayout} — a ready `NetworkCustomLayout` that emits
|
|
20
|
+
* default rect nodes, curved edges, and labels (sibling to `dagreLayout`).
|
|
21
|
+
*/
|
|
22
|
+
export interface CollisionBox {
|
|
23
|
+
id: string;
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
}
|
|
29
|
+
export interface RectCollideOptions {
|
|
30
|
+
/** Free axis to separate boxes along. @default "x" */
|
|
31
|
+
axis?: "x" | "y";
|
|
32
|
+
/** Minimum gap to maintain between box edges, px. @default 0 */
|
|
33
|
+
padding?: number;
|
|
34
|
+
/** Fraction of each overlap resolved in this pass (0..1). @default 0.5 */
|
|
35
|
+
strength?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One pass of rectangular collision separation. Returns the per-box displacement
|
|
39
|
+
* along the free axis — add it to a force accumulator (as the axis-fixed settle
|
|
40
|
+
* does) or apply it directly. Two boxes interact only when they overlap on the
|
|
41
|
+
* cross axis *and* the free axis, so distant rows never push each other. The
|
|
42
|
+
* box-aware separation every text-heavy network needs (labels are rectangles,
|
|
43
|
+
* not points). Pure / deterministic (symmetric ties broken by id order).
|
|
44
|
+
*/
|
|
45
|
+
export declare function rectCollide(boxes: readonly CollisionBox[], opts?: RectCollideOptions): Map<string, number>;
|
|
46
|
+
export interface AxisFixedForceConfig {
|
|
47
|
+
/** Field (or fn) giving the fixed-axis data value, e.g. a year. */
|
|
48
|
+
fixedAccessor: string | ((d: Datum) => number);
|
|
49
|
+
/** `[min, max]` of the fixed value, mapped to the pinned pixel axis. */
|
|
50
|
+
fixedDomain: [number, number];
|
|
51
|
+
/** Which axis is pinned from data. @default "y" (year → y, relax x). */
|
|
52
|
+
fixedAxis?: "x" | "y";
|
|
53
|
+
/** Node id accessor. @default "id" */
|
|
54
|
+
idAccessor?: string | ((d: Datum) => string);
|
|
55
|
+
/** Edge source-id accessor. @default "source" */
|
|
56
|
+
sourceAccessor?: string | ((e: Datum) => string);
|
|
57
|
+
/** Edge target-id accessor. @default "target" */
|
|
58
|
+
targetAccessor?: string | ((e: Datum) => string);
|
|
59
|
+
/** Box size per node (label-aware). @default `{ width: 60, height: 34 }` */
|
|
60
|
+
size?: (d: Datum) => {
|
|
61
|
+
width: number;
|
|
62
|
+
height: number;
|
|
63
|
+
};
|
|
64
|
+
/** Settle iterations. @default 180 */
|
|
65
|
+
iterations?: number;
|
|
66
|
+
/** Edge attraction along the free axis. @default 0.012 */
|
|
67
|
+
attraction?: number;
|
|
68
|
+
/** Spring strength pulling each node back to its initial spread. @default 0.003 */
|
|
69
|
+
anchorStrength?: number;
|
|
70
|
+
/** Collision separation strength. @default 0.12 */
|
|
71
|
+
collisionStrength?: number;
|
|
72
|
+
/** Gap maintained between boxes, px. @default 15 */
|
|
73
|
+
collisionPadding?: number;
|
|
74
|
+
/** Inset from the plot edges on the free axis, px. @default 42 */
|
|
75
|
+
edgePadding?: number;
|
|
76
|
+
/** Inset from the plot edges on the fixed axis, px. @default 16 */
|
|
77
|
+
fixedPadding?: number;
|
|
78
|
+
/** Per-iteration force damping. @default 0.72 */
|
|
79
|
+
damping?: number;
|
|
80
|
+
/** Widen the settled solution about its center (1 = leave as-is). @default 1 */
|
|
81
|
+
spread?: number;
|
|
82
|
+
}
|
|
83
|
+
export interface PositionedNode {
|
|
84
|
+
/** The raw user datum (unwrapped from any frame node wrapper). */
|
|
85
|
+
data: Datum;
|
|
86
|
+
id: string;
|
|
87
|
+
/** Center x in plot coordinates. */
|
|
88
|
+
x: number;
|
|
89
|
+
/** Center y in plot coordinates. */
|
|
90
|
+
y: number;
|
|
91
|
+
width: number;
|
|
92
|
+
height: number;
|
|
93
|
+
/** The fixed-axis data value used (e.g. the year). */
|
|
94
|
+
fixedValue: number;
|
|
95
|
+
}
|
|
96
|
+
export interface AxisFixedForceResult {
|
|
97
|
+
positioned: PositionedNode[];
|
|
98
|
+
byId: Map<string, PositionedNode>;
|
|
99
|
+
}
|
|
100
|
+
interface PlotRect {
|
|
101
|
+
x: number;
|
|
102
|
+
y: number;
|
|
103
|
+
width: number;
|
|
104
|
+
height: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The pure positioner. Settles `nodes` against `edges` with one axis pinned from
|
|
108
|
+
* data, returning centered boxes. Deterministic for a given input + config.
|
|
109
|
+
*/
|
|
110
|
+
export declare function axisFixedForcePositions(nodes: readonly Datum[], edges: readonly Datum[], plot: PlotRect, config: AxisFixedForceConfig): AxisFixedForceResult;
|
|
111
|
+
/**
|
|
112
|
+
* A ready-to-use `NetworkCustomLayout` wrapping {@link axisFixedForcePositions}:
|
|
113
|
+
* emits a rect node per node, a curved edge per edge ({@link curvedEdgePath},
|
|
114
|
+
* fanned by index), and a centered label. Hand it straight to a
|
|
115
|
+
* `NetworkCustomChart`'s `layout` for a quick chronological force graph; reach
|
|
116
|
+
* for the positioner directly when you want art-directed overlays.
|
|
117
|
+
*/
|
|
118
|
+
export declare const axisFixedForceLayout: NetworkCustomLayout<AxisFixedForceConfig>;
|
|
119
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { OrdinalCustomLayout } from "../stream/ordinalCustomLayout";
|
|
2
2
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
3
|
-
export interface
|
|
3
|
+
export interface BobaConfig {
|
|
4
4
|
/** Category — one cup per distinct value. @default "name" */
|
|
5
5
|
categoryAccessor?: string | ((d: Datum) => string);
|
|
6
6
|
/** Tea volume (cm³). @default field "teaVolume" → 450 */
|
|
@@ -20,4 +20,4 @@ export interface GofishBobaConfig {
|
|
|
20
20
|
/** Fraction of each band the cup glyph may occupy. @default 0.82 */
|
|
21
21
|
cupWidthRatio?: number;
|
|
22
22
|
}
|
|
23
|
-
export declare const
|
|
23
|
+
export declare const bobaLayout: OrdinalCustomLayout<BobaConfig>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cyclical (wrap-around) interval math for any periodic axis — day-of-year,
|
|
3
|
+
* hour-of-day, compass bearing, phase. A radial/circular brush, a clock chart,
|
|
4
|
+
* or a seasonal ribbon re-derives this; it lives here once.
|
|
5
|
+
*
|
|
6
|
+
* Pure / SSR-safe. All functions are domain-agnostic: pass the period of the
|
|
7
|
+
* cycle (365 for day-of-year, 24 for hour-of-day, 360 for degrees, `2π` for
|
|
8
|
+
* radians).
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Wrap a value into the half-open cycle `[min, min + period)`. Handles negatives
|
|
12
|
+
* and multiple wraps. `wrapValue(370, 365) → 5`, `wrapValue(-1, 365) → 364`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function wrapValue(value: number, period: number, min?: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* The signed shortest step from `from` to `to` around the cycle. Result is in
|
|
17
|
+
* `(-period/2, period/2]`: positive goes forward (increasing), negative
|
|
18
|
+
* backward, taking whichever way around is shorter. The delta a drag handler
|
|
19
|
+
* applies so dragging a circular range never "unwinds" the long way round.
|
|
20
|
+
*/
|
|
21
|
+
export declare function shortestArcDelta(from: number, to: number, period: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Whether `value` falls within the inclusive cyclic range `[start, end]`. When
|
|
24
|
+
* `start <= end` it's a normal interval; when `start > end` the range wraps past
|
|
25
|
+
* the period boundary (e.g. a Dec→Feb winter window), so membership is
|
|
26
|
+
* `value >= start || value <= end`. Values are compared as given — wrap them
|
|
27
|
+
* with {@link wrapValue} first if they may be out of range.
|
|
28
|
+
*/
|
|
29
|
+
export declare function cyclicRangeContains(value: number, start: number, end: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Filter items whose accessor value falls in the cyclic range `[start, end]`
|
|
32
|
+
* (inclusive), handling the wrap-around case. The generic replacement for the
|
|
33
|
+
* hand-rolled "if start<=end filter once, else union two filters" pattern.
|
|
34
|
+
*
|
|
35
|
+
* When the range wraps, items are returned in two contiguous arcs (the
|
|
36
|
+
* `[start, period)` arc first, then the `[min, end]` arc) so a downstream
|
|
37
|
+
* consumer reading them in order walks the selection the way the eye does.
|
|
38
|
+
*/
|
|
39
|
+
export declare function selectCyclicRange<T>(items: readonly T[], accessor: (item: T) => number, start: number, end: number): T[];
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge-router kit — shared SVG-path builders for custom **network** layouts that
|
|
3
|
+
* draw their own edges in `overlays` (or emit `sceneEdges` of type `curved`).
|
|
4
|
+
* Every hand-built influence/lineage diagram re-derives bezier control points,
|
|
5
|
+
* box exit/entry anchors, and a fan-out bend to keep parallel edges from
|
|
6
|
+
* overlapping; this centralizes that geometry.
|
|
7
|
+
*
|
|
8
|
+
* Pure / SSR-safe. Complements the network `sceneEdges` `bezier` / `curved`
|
|
9
|
+
* types and the annotation `connector: { type: "curve" }` option.
|
|
10
|
+
*/
|
|
11
|
+
export interface Point {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
}
|
|
15
|
+
/** A box positioned by its **center** (what force/constraint layouts produce). */
|
|
16
|
+
export interface CenteredBox {
|
|
17
|
+
cx: number;
|
|
18
|
+
cy: number;
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
}
|
|
22
|
+
export type EdgeOrientation = "vertical" | "horizontal";
|
|
23
|
+
export interface CurvedEdgeOptions {
|
|
24
|
+
/** Which axis the edge mainly travels along. `"vertical"` flows top↔bottom
|
|
25
|
+
* (control points share x); `"horizontal"` flows left↔right. @default "vertical" */
|
|
26
|
+
orientation?: EdgeOrientation;
|
|
27
|
+
/** Cross-axis offset of the curve's midpoint, in px — fan parallel edges apart.
|
|
28
|
+
* Feed it {@link fanOutBend}. @default 0 */
|
|
29
|
+
bend?: number;
|
|
30
|
+
/** Below this along-axis distance the endpoints are nearly side-by-side, so a
|
|
31
|
+
* straight S-curve would collapse; the router draws a sideways bow instead.
|
|
32
|
+
* @default 18 */
|
|
33
|
+
minAlong?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A smooth cubic-bezier edge between two points. For a top-to-bottom flow the
|
|
37
|
+
* control points sit at the vertical midpoint (offset by `bend`), giving the
|
|
38
|
+
* familiar S-curve; when the two ends are nearly level it falls back to a
|
|
39
|
+
* quadratic side-bow so the edge stays visible. Generalizes the bespoke
|
|
40
|
+
* "S-curve, with a short-hop side-bow for near-parallel pairs" router.
|
|
41
|
+
*/
|
|
42
|
+
export declare function curvedEdgePath(from: Point, to: Point, opts?: CurvedEdgeOptions): string;
|
|
43
|
+
/**
|
|
44
|
+
* An orthogonal "elbow" edge — two right-angle bends through the midpoint of the
|
|
45
|
+
* travel axis. The step-router alternative to {@link curvedEdgePath} for
|
|
46
|
+
* dataflow/lineage diagrams that prefer rectilinear edges.
|
|
47
|
+
*/
|
|
48
|
+
export declare function orthogonalEdgePath(from: Point, to: Point, opts?: {
|
|
49
|
+
orientation?: EdgeOrientation;
|
|
50
|
+
}): string;
|
|
51
|
+
export interface BoxEdgeAnchorOptions {
|
|
52
|
+
orientation?: EdgeOrientation;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve where an edge leaves the source box and meets the target box. For a
|
|
56
|
+
* vertical flow it exits the bottom-center and enters the top-center when the
|
|
57
|
+
* target is below (and vice-versa); horizontal uses right/left centers. Removes
|
|
58
|
+
* the per-recipe "compute startY/endY from half-heights and direction" block.
|
|
59
|
+
*/
|
|
60
|
+
export declare function boxEdgeAnchors(source: CenteredBox, target: CenteredBox, opts?: BoxEdgeAnchorOptions): {
|
|
61
|
+
from: Point;
|
|
62
|
+
to: Point;
|
|
63
|
+
};
|
|
64
|
+
export interface FanOutBendOptions {
|
|
65
|
+
/** Total number of parallel edges, for a centered fan: edge `(count-1)/2`
|
|
66
|
+
* gets bend 0. Ignored when `modulo` is set. */
|
|
67
|
+
count?: number;
|
|
68
|
+
/** Cross-axis spacing between adjacent fanned edges, in px. @default 5 */
|
|
69
|
+
spread?: number;
|
|
70
|
+
/** Cycle bends through `modulo` evenly-spaced offsets centered on 0 — useful
|
|
71
|
+
* when you don't know the per-pair count and just want global variety. */
|
|
72
|
+
modulo?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A cross-axis bend offset that fans parallel edges apart so they don't overlap.
|
|
76
|
+
* Pass an edge's index; with `count` it centers a fan (`0` at the middle edge),
|
|
77
|
+
* with `modulo` it cycles through a fixed set of offsets. Feed the result to
|
|
78
|
+
* {@link curvedEdgePath}'s `bend`.
|
|
79
|
+
*/
|
|
80
|
+
export declare function fanOutBend(index: number, opts?: FanOutBendOptions): number;
|
|
81
|
+
/** A cubic Bézier as its four control points (start, two handles, end). */
|
|
82
|
+
export interface CubicCurve {
|
|
83
|
+
p0: Point;
|
|
84
|
+
p1: Point;
|
|
85
|
+
p2: Point;
|
|
86
|
+
p3: Point;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Evaluate the point on a cubic Bézier at parameter `t ∈ [0, 1]`. The companion
|
|
90
|
+
* to {@link curvedEdgePath} / {@link cubicPath} for the case the path string
|
|
91
|
+
* can't cover: *placing a mark along the curve* — a station node at `t = 0.5`,
|
|
92
|
+
* an arrowhead at the end, a label at the third. `t = 0` is `p0`, `t = 1` is `p3`.
|
|
93
|
+
*/
|
|
94
|
+
export declare function cubicPoint(curve: CubicCurve, t: number): Point;
|
|
95
|
+
/**
|
|
96
|
+
* The (unnormalized) tangent vector of a cubic Bézier at `t` — the curve's
|
|
97
|
+
* derivative. Normalize it (e.g. with `normalizePoint` from the vector kit) to
|
|
98
|
+
* orient an arrowhead or grow a branch normal to the curve. Points in the
|
|
99
|
+
* direction of increasing `t`.
|
|
100
|
+
*/
|
|
101
|
+
export declare function cubicTangent(curve: CubicCurve, t: number): Point;
|
|
102
|
+
/** Serialize a {@link CubicCurve} to an SVG `M…C…` path string. */
|
|
103
|
+
export declare function cubicPath(curve: CubicCurve): string;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeded, deterministic force layout for custom network charts.
|
|
3
|
+
*
|
|
4
|
+
* `ForceDirectedGraph` runs a force simulation internally, but `NetworkCustomChart`
|
|
5
|
+
* expects pre-computed positions — and there was no reproducible positioner to
|
|
6
|
+
* feed it. This is a compact spring/repulsion/gravity sim with a seeded PRNG, so
|
|
7
|
+
* the same graph + seed always produces the same layout (change the seed to get a
|
|
8
|
+
* different one — useful for "re-run the layout" interactions). Positions are
|
|
9
|
+
* returned normalized to [0, 1], so you map them into the plot yourself.
|
|
10
|
+
*
|
|
11
|
+
* Synchronous and deterministic: it settles before returning, so consumers get
|
|
12
|
+
* stable coordinates without running an interactive simulation.
|
|
13
|
+
*/
|
|
14
|
+
import type { GraphNode, GraphEdge, Point } from "./networkAnalysis";
|
|
15
|
+
export { mulberry32 } from "./random";
|
|
16
|
+
export interface ForceLayoutOptions {
|
|
17
|
+
/** PRNG seed — same seed ⇒ same layout. @default 1 */
|
|
18
|
+
seed?: number;
|
|
19
|
+
/** Simulation iterations. @default 260 */
|
|
20
|
+
iterations?: number;
|
|
21
|
+
/** Repulsion strength between every pair of nodes. @default 5200 */
|
|
22
|
+
repulsion?: number;
|
|
23
|
+
/** Target edge length in the virtual (pre-normalization) space. @default 165 */
|
|
24
|
+
linkDistance?: number;
|
|
25
|
+
/** Spring stiffness pulling connected nodes to `linkDistance`. @default 0.045 */
|
|
26
|
+
linkStrength?: number;
|
|
27
|
+
/** Gravity toward the center (keeps disconnected pieces on screen). @default 0.018 */
|
|
28
|
+
centerStrength?: number;
|
|
29
|
+
/** Per-step velocity damping. @default 0.84 */
|
|
30
|
+
damping?: number;
|
|
31
|
+
/** Node collision radius in virtual layout units. @default 12 */
|
|
32
|
+
nodeRadius?: number | ((node: GraphNode) => number);
|
|
33
|
+
/** Extra collision spacing in virtual layout units. @default 3 */
|
|
34
|
+
nodePadding?: number;
|
|
35
|
+
/** Inset kept clear at the edges of the normalized box. @default 0.06 */
|
|
36
|
+
inset?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Lay a graph out with a seeded force simulation. Returns node id → {x, y} with
|
|
40
|
+
* both in [0, 1].
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const pos = forceLayout(nodes, edges, { seed: 7 })
|
|
45
|
+
* // in a NetworkCustomChart layout: cx = plot.x + pos[node.id].x * plot.width
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function forceLayout(nodes: ReadonlyArray<GraphNode>, edges: ReadonlyArray<GraphEdge>, options?: ForceLayoutOptions): Record<string, Point>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ForceLayoutOptions } from "./forceLayout";
|
|
2
|
+
import type { GraphEdge, GraphNode, Point } from "./networkAnalysis";
|
|
3
|
+
import { type ForceLayoutExecution } from "../stream/layouts/forceLayoutWorkerClient";
|
|
4
|
+
export interface ForceLayoutAsyncOptions extends ForceLayoutOptions {
|
|
5
|
+
/** Choose worker execution, synchronous execution, or an automatic cost threshold. */
|
|
6
|
+
execution?: ForceLayoutExecution;
|
|
7
|
+
/** Abort pending worker execution. */
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
/** Override the automatic `iterations × (nodes + edges)` worker threshold. */
|
|
10
|
+
workerThreshold?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Asynchronous counterpart to {@link forceLayout}. Large layouts run in a
|
|
14
|
+
* short-lived module worker; small, server-side, or unsupported environments
|
|
15
|
+
* fall back to the same deterministic synchronous implementation.
|
|
16
|
+
*/
|
|
17
|
+
export declare function forceLayoutAsync(nodes: ReadonlyArray<GraphNode>, edges: ReadonlyArray<GraphEdge>, options?: ForceLayoutAsyncOptions): Promise<Record<string, Point>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DisplayList } from "gofish-ir";
|
|
2
|
+
type DisplayListDocument = DisplayList.DisplayListDocument;
|
|
3
|
+
/**
|
|
4
|
+
* Flower meadow — GoFish's real flower chart, verbatim: a meadow where each lake is a green stem (a bar whose height is the lake's total catch) topped by a polar fan of petals, one per species, sized by count. It is layer([stems, flowers]) — the flowers selectAll the stems and stack a polar petal fan on each. The composition's root is a combinator (no ChartBuilder.toDisplayList), so it is baked through GoFish's mark-resolution contract; see gofish-displaylist-findings.md.
|
|
5
|
+
* Source: https://gofish.graphics/js/examples/flower-chart.html
|
|
6
|
+
*/
|
|
7
|
+
export declare const flowerDisplayList: DisplayListDocument;
|
|
8
|
+
/**
|
|
9
|
+
* Polar ribbon chart — GoFish's polar ribbon chart, verbatim: the catch stacked radially per lake under a clock() projection, then a smooth area ribbon drawn across the lakes for each species (selectAll the bars, group by species). The wrap, the open gap, and the bumped ribbons are all baked into absolute-pixel paths; the radial bars keep their datum (hit targets), the ribbons are area chrome. Root is a layer({ coord: clock() }) combinator, baked through GoFish's mark-resolution contract — see gofish-displaylist-findings.md.
|
|
10
|
+
* Source: https://gofish.graphics/js/examples/polar-ribbon-chart.html
|
|
11
|
+
*/
|
|
12
|
+
export declare const polarribbonDisplayList: DisplayListDocument;
|
|
13
|
+
/**
|
|
14
|
+
* Fare circle treemap — GoFish's titanic fare circle treemap, verbatim: faceted by passenger class (facet by pclass, dir x), then a squarify-circle treemap per facet sizing each passenger by fare (sort desc, so fares run large→small) and colouring by survival. Three blocks — big first-class circles, then a field of tiny third-class ones. Every circle is a data node carrying its passenger; the facet labels/legend are chrome.
|
|
15
|
+
* Source: https://gofish.graphics/js/examples/titanic-fare-circle-treemap.html
|
|
16
|
+
*/
|
|
17
|
+
export declare const treemapDisplayList: DisplayListDocument;
|
|
18
|
+
/**
|
|
19
|
+
* Bottle fill pictorial — GoFish's real bottle-fill technique: a fill rect sized by amount is color-composited *inside* the bottle silhouette via paint({ blendMode: 'color' }), so the liquid reads as rising within the bottle (not a bar behind a picture). Bakes to a composite item; the adapter harvests the composite's datum so each bottle keeps hit-testing and tooltips.
|
|
20
|
+
* Source: https://gofish.graphics/js/examples/bottle-fill-chart.html
|
|
21
|
+
*/
|
|
22
|
+
export declare const bottleDisplayList: DisplayListDocument;
|
|
23
|
+
/**
|
|
24
|
+
* Python memory diagram — A Python Tutor runtime memory diagram: a Global Frame of variables (c, d → pointers; x = 5) whose arrows fan into a heap of tuples, with tuple cells pointing on to further tuples. NOTE: GoFish's own example is not a portable spec — it relies on ~250 lines of unpublished story helpers (globalFrame/heap/tuple/Arrow). This is a best-effort reconstruction from GoFish primitives only (rect/text/Arrow/ref + .name()). It is also vertically flipped vs the live example: a free-space Layer baked through toDisplayList orients y-down differently than .render() (GoFish issue #143/#16). See gofish-displaylist-findings.md §6.
|
|
25
|
+
* Source: https://gofish.graphics/js/examples/python-tutor-memory-diagram.html
|
|
26
|
+
*/
|
|
27
|
+
export declare const pythonDisplayList: DisplayListDocument;
|
|
28
|
+
export interface GofishDisplayListExample {
|
|
29
|
+
key: "bars" | "flower" | "polarribbon" | "treemap" | "bottle" | "python";
|
|
30
|
+
label: string;
|
|
31
|
+
source: string;
|
|
32
|
+
blurb: string;
|
|
33
|
+
doc: DisplayListDocument;
|
|
34
|
+
}
|
|
35
|
+
/** All baked gallery fixtures, in display order. */
|
|
36
|
+
export declare const gofishDisplayListExamples: readonly GofishDisplayListExample[];
|
|
37
|
+
export {};
|