semiotic 2.0.3 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +828 -0
- package/README.md +215 -37
- package/ai/cli.js +48 -0
- package/ai/dist/ai/componentRegistry.js +45 -0
- package/ai/dist/ai/mcp-server.js +99 -0
- package/ai/dist/ai/renderHOCToSVG.js +77 -0
- package/ai/dist/src/components/Annotation.js +358 -0
- package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
- package/ai/dist/src/components/Axis/Axis.js +374 -0
- package/ai/dist/src/components/Axis/axisTitle.js +14 -0
- package/ai/dist/src/components/Axis/index.js +7 -0
- package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
- package/ai/dist/src/components/Brush.js +84 -0
- package/ai/dist/src/components/ChartErrorBoundary.js +91 -0
- package/ai/dist/src/components/DividedLine.js +65 -0
- package/ai/dist/src/components/Legend.js +140 -0
- package/ai/dist/src/components/LinkedCharts.js +95 -0
- package/ai/dist/src/components/ThemeProvider.js +79 -0
- package/ai/dist/src/components/Tooltip/Tooltip.js +309 -0
- package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
- package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
- package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
- package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
- package/ai/dist/src/components/annotationRules/networkframeRules.js +196 -0
- package/ai/dist/src/components/annotationRules/xyframeRules.js +297 -0
- package/ai/dist/src/components/batchWork.js +35 -0
- package/ai/dist/src/components/charts/index.js +109 -0
- package/ai/dist/src/components/charts/network/ChordDiagram.js +142 -0
- package/ai/dist/src/components/charts/network/CirclePack.js +108 -0
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +121 -0
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +155 -0
- package/ai/dist/src/components/charts/network/TreeDiagram.js +110 -0
- package/ai/dist/src/components/charts/network/Treemap.js +106 -0
- package/ai/dist/src/components/charts/ordinal/BarChart.js +156 -0
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +139 -0
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +130 -0
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +126 -0
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +129 -0
- package/ai/dist/src/components/charts/ordinal/Histogram.js +132 -0
- package/ai/dist/src/components/charts/ordinal/PieChart.js +128 -0
- package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +130 -0
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +130 -0
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +147 -0
- package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +138 -0
- package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +79 -0
- package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +114 -0
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +93 -0
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +105 -0
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +106 -0
- package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
- package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
- package/ai/dist/src/components/charts/shared/formatUtils.js +213 -0
- package/ai/dist/src/components/charts/shared/hooks.js +49 -0
- package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
- package/ai/dist/src/components/charts/shared/selectionUtils.js +67 -0
- package/ai/dist/src/components/charts/shared/tooltipUtils.js +79 -0
- package/ai/dist/src/components/charts/shared/types.js +2 -0
- package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
- package/ai/dist/src/components/charts/shared/validateProps.js +736 -0
- package/ai/dist/src/components/charts/xy/AreaChart.js +230 -0
- package/ai/dist/src/components/charts/xy/BubbleChart.js +251 -0
- package/ai/dist/src/components/charts/xy/Heatmap.js +235 -0
- package/ai/dist/src/components/charts/xy/LineChart.js +307 -0
- package/ai/dist/src/components/charts/xy/MinimapChart.js +298 -0
- package/ai/dist/src/components/charts/xy/Scatterplot.js +172 -0
- package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +426 -0
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +231 -0
- package/ai/dist/src/components/constants/coordinateNames.js +11 -0
- package/ai/dist/src/components/constants/frame_props.js +251 -0
- package/ai/dist/src/components/data/dataFunctions.js +487 -0
- package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
- package/ai/dist/src/components/data/transforms.js +143 -0
- package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
- package/ai/dist/src/components/export/exportChart.js +121 -0
- package/ai/dist/src/components/generic_utilities/functions.js +5 -0
- package/ai/dist/src/components/geometry/areaDrawing.js +312 -0
- package/ai/dist/src/components/geometry/contourLayout.js +73 -0
- package/ai/dist/src/components/geometry/hexbinLayout.js +163 -0
- package/ai/dist/src/components/geometry/lineDrawing.js +356 -0
- package/ai/dist/src/components/geometry/sankeyLinks.js +331 -0
- package/ai/dist/src/components/geometry/summaryLayouts.js +136 -0
- package/ai/dist/src/components/index.js +18 -0
- package/ai/dist/src/components/processing/InteractionItems.js +223 -0
- package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
- package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
- package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
- package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
- package/ai/dist/src/components/processing/layouts/index.js +32 -0
- package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
- package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
- package/ai/dist/src/components/processing/layouts/types.js +2 -0
- package/ai/dist/src/components/processing/networkDefaults.js +39 -0
- package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
- package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
- package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
- package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
- package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
- package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
- package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
- package/ai/dist/src/components/realtime/renderers/types.js +2 -0
- package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
- package/ai/dist/src/components/realtime/types.js +2 -0
- package/ai/dist/src/components/semiotic-ai.js +89 -0
- package/ai/dist/src/components/semiotic-data.js +12 -0
- package/ai/dist/src/components/semiotic-network.js +38 -0
- package/ai/dist/src/components/semiotic-ordinal.js +28 -0
- package/ai/dist/src/components/semiotic-realtime.js +30 -0
- package/ai/dist/src/components/semiotic-server.js +8 -0
- package/ai/dist/src/components/semiotic-xy.js +35 -0
- package/ai/dist/src/components/semiotic.js +109 -0
- package/ai/dist/src/components/server/renderToStaticSVG.js +594 -0
- package/ai/dist/src/components/store/SelectionStore.js +91 -0
- package/ai/dist/src/components/store/ThemeStore.js +78 -0
- package/ai/dist/src/components/store/TooltipStore.js +13 -0
- package/ai/dist/src/components/store/createStore.js +81 -0
- package/ai/dist/src/components/store/useSelection.js +133 -0
- package/ai/dist/src/components/stream/CanvasHitTester.js +164 -0
- package/ai/dist/src/components/stream/DataSourceAdapter.js +99 -0
- package/ai/dist/src/components/stream/MarginalGraphics.js +266 -0
- package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +228 -0
- package/ai/dist/src/components/stream/NetworkPipelineStore.js +498 -0
- package/ai/dist/src/components/stream/NetworkSVGOverlay.js +70 -0
- package/ai/dist/src/components/stream/NetworkSceneGraph.js +38 -0
- package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +146 -0
- package/ai/dist/src/components/stream/OrdinalPipelineStore.js +786 -0
- package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +130 -0
- package/ai/dist/src/components/stream/ParticlePool.js +174 -0
- package/ai/dist/src/components/stream/PipelineStore.js +1243 -0
- package/ai/dist/src/components/stream/SVGOverlay.js +129 -0
- package/ai/dist/src/components/stream/SceneGraph.js +132 -0
- package/ai/dist/src/components/stream/StreamNetworkFrame.js +561 -0
- package/ai/dist/src/components/stream/StreamOrdinalFrame.js +492 -0
- package/ai/dist/src/components/stream/StreamXYFrame.js +590 -0
- package/ai/dist/src/components/stream/accessorUtils.js +20 -0
- package/ai/dist/src/components/stream/index.js +32 -0
- package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +352 -0
- package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +230 -0
- package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +568 -0
- package/ai/dist/src/components/stream/layouts/index.js +28 -0
- package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +245 -0
- package/ai/dist/src/components/stream/networkTypes.js +17 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +126 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +62 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +33 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +63 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +278 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +30 -0
- package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +2 -0
- package/ai/dist/src/components/stream/ordinalTypes.js +2 -0
- package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +48 -0
- package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +70 -0
- package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +75 -0
- package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +28 -0
- package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +47 -0
- package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +31 -0
- package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +140 -0
- package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +37 -0
- package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +102 -0
- package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +63 -0
- package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +35 -0
- package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +10 -0
- package/ai/dist/src/components/stream/renderers/types.js +2 -0
- package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +47 -0
- package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +38 -0
- package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +33 -0
- package/ai/dist/src/components/stream/types.js +2 -0
- package/ai/dist/src/components/types/annotationTypes.js +2 -0
- package/ai/dist/src/components/types/canvasTypes.js +2 -0
- package/ai/dist/src/components/types/generalTypes.js +2 -0
- package/ai/dist/src/components/types/interactionTypes.js +2 -0
- package/ai/dist/src/components/types/legendTypes.js +2 -0
- package/ai/dist/src/components/types/networkTypes.js +2 -0
- package/ai/dist/src/components/types/ordinalTypes.js +2 -0
- package/ai/dist/src/components/types/xyTypes.js +2 -0
- package/ai/dist/src/components/useBoundingRect.js +24 -0
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +301 -0
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
- package/ai/dist/src/setupTests.js +4 -0
- package/ai/examples.md +489 -0
- package/ai/schema.json +1338 -0
- package/ai/system-prompt.md +41 -0
- package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
- package/dist/Axis/axisTitle.d.ts +3 -3
- package/dist/Axis/summaryGraphic.d.ts +1 -1
- package/dist/ChartErrorBoundary.d.ts +39 -0
- package/dist/LinkedCharts.d.ts +42 -0
- package/dist/ThemeProvider.d.ts +12 -0
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +1 -1
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
- package/dist/annotationRules/networkframeRules.d.ts +2 -2
- package/dist/annotationRules/xyframeRules.d.ts +2 -2
- package/dist/batchWork.d.ts +1 -1
- package/dist/charts/index.d.ts +74 -0
- package/dist/charts/network/ChordDiagram.d.ts +36 -0
- package/dist/charts/network/CirclePack.d.ts +32 -0
- package/dist/charts/network/ForceDirectedGraph.d.ts +38 -0
- package/dist/charts/network/SankeyDiagram.d.ts +38 -0
- package/dist/charts/network/TreeDiagram.d.ts +34 -0
- package/dist/charts/network/Treemap.d.ts +33 -0
- package/dist/charts/ordinal/BarChart.d.ts +32 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +27 -0
- package/dist/charts/ordinal/DonutChart.d.ts +23 -0
- package/dist/charts/ordinal/DotPlot.d.ts +27 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +26 -0
- package/dist/charts/ordinal/Histogram.d.ts +26 -0
- package/dist/charts/ordinal/PieChart.d.ts +21 -0
- package/dist/charts/ordinal/RidgelinePlot.d.ts +34 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +27 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +29 -0
- package/dist/charts/ordinal/ViolinPlot.d.ts +28 -0
- package/dist/charts/realtime/RealtimeHeatmap.d.ts +95 -0
- package/dist/charts/realtime/RealtimeHistogram.d.ts +119 -0
- package/dist/charts/realtime/RealtimeLineChart.d.ts +98 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +100 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +97 -0
- package/dist/charts/shared/ChartError.d.ts +19 -0
- package/dist/charts/shared/colorUtils.d.ts +62 -0
- package/dist/charts/shared/formatUtils.d.ts +94 -0
- package/dist/charts/shared/hooks.d.ts +20 -0
- package/dist/charts/shared/legendUtils.d.ts +32 -0
- package/dist/charts/shared/selectionUtils.d.ts +51 -0
- package/dist/charts/shared/tooltipUtils.d.ts +18 -0
- package/dist/charts/shared/types.d.ts +97 -0
- package/dist/charts/shared/validateChartData.d.ts +41 -0
- package/dist/charts/shared/validateProps.d.ts +18 -0
- package/dist/charts/xy/AreaChart.d.ts +130 -0
- package/dist/charts/xy/BubbleChart.d.ts +164 -0
- package/dist/charts/xy/Heatmap.d.ts +156 -0
- package/dist/charts/xy/LineChart.d.ts +196 -0
- package/dist/charts/xy/MinimapChart.d.ts +73 -0
- package/dist/charts/xy/Scatterplot.d.ts +55 -0
- package/dist/charts/xy/ScatterplotMatrix.d.ts +71 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +134 -0
- package/dist/constants/frame_props.d.ts +9 -0
- package/dist/data/dataFunctions.d.ts +10 -11
- package/dist/data/transforms.d.ts +45 -0
- package/dist/export/exportChart.d.ts +16 -0
- package/dist/{svg → geometry}/areaDrawing.d.ts +3 -13
- package/dist/geometry/contourLayout.d.ts +6 -0
- package/dist/geometry/hexbinLayout.d.ts +7 -0
- package/dist/{svg → geometry}/lineDrawing.d.ts +7 -35
- package/dist/geometry/sankeyLinks.d.ts +2 -0
- package/dist/geometry/summaryLayouts.d.ts +45 -0
- package/dist/index.d.ts +1 -125
- package/dist/network.js +7495 -0
- package/dist/network.js.map +1 -0
- package/dist/network.min.js +1 -0
- package/dist/network.module.js +7458 -0
- package/dist/network.module.js.map +1 -0
- package/dist/network.module.min.js +1 -0
- package/dist/ordinal.js +6497 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/ordinal.min.js +1 -0
- package/dist/ordinal.module.js +6465 -0
- package/dist/ordinal.module.js.map +1 -0
- package/dist/ordinal.module.min.js +1 -0
- package/dist/processing/InteractionItems.d.ts +5 -4
- package/dist/processing/hierarchyUtils.d.ts +16 -0
- package/dist/processing/layouts/chordLayout.d.ts +2 -0
- package/dist/processing/layouts/forceLayout.d.ts +3 -0
- package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
- package/dist/processing/layouts/index.d.ts +8 -0
- package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
- package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
- package/dist/processing/layouts/types.d.ts +17 -0
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/realtime/BinAccumulator.d.ts +8 -0
- package/dist/realtime/IncrementalExtent.d.ts +13 -0
- package/dist/realtime/RingBuffer.d.ts +19 -0
- package/dist/realtime/renderers/barRenderer.d.ts +2 -0
- package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
- package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
- package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
- package/dist/realtime/renderers/types.d.ts +9 -0
- package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
- package/dist/realtime/types.d.ts +113 -0
- package/dist/realtime.js +7072 -0
- package/dist/realtime.js.map +1 -0
- package/dist/realtime.min.js +1 -0
- package/dist/realtime.module.js +7043 -0
- package/dist/realtime.module.js.map +1 -0
- package/dist/realtime.module.min.js +1 -0
- package/dist/semiotic-ai.d.ts +36 -0
- package/dist/semiotic-ai.js +13323 -0
- package/dist/semiotic-ai.js.map +1 -0
- package/dist/semiotic-ai.min.js +1 -0
- package/dist/semiotic-ai.module.js +13264 -0
- package/dist/semiotic-ai.module.js.map +1 -0
- package/dist/semiotic-ai.module.min.js +1 -0
- package/dist/semiotic-data.d.ts +5 -0
- package/dist/semiotic-data.js +141 -0
- package/dist/semiotic-data.js.map +1 -0
- package/dist/semiotic-data.min.js +1 -0
- package/dist/semiotic-data.module.js +136 -0
- package/dist/semiotic-data.module.js.map +1 -0
- package/dist/semiotic-data.module.min.js +1 -0
- package/dist/semiotic-network.d.ts +23 -0
- package/dist/semiotic-ordinal.d.ts +19 -0
- package/dist/semiotic-realtime.d.ts +22 -0
- package/dist/semiotic-server.d.ts +1 -0
- package/dist/semiotic-xy.d.ts +21 -0
- package/dist/semiotic.d.ts +41 -28
- package/dist/semiotic.js +16257 -13130
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +16198 -13100
- package/dist/semiotic.module.js.map +1 -0
- package/dist/semiotic.module.min.js +1 -0
- package/dist/server/renderToStaticSVG.d.ts +9 -0
- package/dist/server.js +5191 -0
- package/dist/server.js.map +1 -0
- package/dist/server.min.js +1 -0
- package/dist/server.module.js +5166 -0
- package/dist/server.module.js.map +1 -0
- package/dist/server.module.min.js +1 -0
- package/dist/store/SelectionStore.d.ts +29 -0
- package/dist/store/ThemeStore.d.ts +26 -0
- package/dist/store/useSelection.d.ts +66 -0
- package/dist/stream/CanvasHitTester.d.ts +18 -0
- package/dist/stream/DataSourceAdapter.d.ts +32 -0
- package/dist/stream/MarginalGraphics.d.ts +19 -0
- package/dist/stream/NetworkCanvasHitTester.d.ts +14 -0
- package/dist/stream/NetworkPipelineStore.d.ts +74 -0
- package/dist/stream/NetworkSVGOverlay.d.ts +40 -0
- package/dist/stream/NetworkSceneGraph.d.ts +14 -0
- package/dist/stream/OrdinalCanvasHitTester.d.ts +9 -0
- package/dist/stream/OrdinalPipelineStore.d.ts +65 -0
- package/dist/stream/OrdinalSVGOverlay.d.ts +34 -0
- package/dist/stream/ParticlePool.d.ts +28 -0
- package/dist/stream/PipelineStore.d.ts +161 -0
- package/dist/stream/SVGOverlay.d.ts +37 -0
- package/dist/stream/SceneGraph.d.ts +16 -0
- package/dist/stream/StreamNetworkFrame.d.ts +4 -0
- package/dist/stream/StreamOrdinalFrame.d.ts +4 -0
- package/dist/stream/StreamXYFrame.d.ts +4 -0
- package/dist/stream/accessorUtils.d.ts +2 -0
- package/dist/stream/index.d.ts +16 -0
- package/dist/stream/layouts/chordLayoutPlugin.d.ts +8 -0
- package/dist/stream/layouts/forceLayoutPlugin.d.ts +9 -0
- package/dist/stream/layouts/hierarchyLayoutPlugin.d.ts +17 -0
- package/dist/stream/layouts/index.d.ts +11 -0
- package/dist/stream/layouts/sankeyLayoutPlugin.d.ts +8 -0
- package/dist/stream/networkTypes.d.ts +346 -0
- package/dist/stream/ordinalSceneBuilders/barScene.d.ts +4 -0
- package/dist/stream/ordinalSceneBuilders/connectorScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/pieScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/pointScene.d.ts +4 -0
- package/dist/stream/ordinalSceneBuilders/statisticalScene.d.ts +6 -0
- package/dist/stream/ordinalSceneBuilders/timelineScene.d.ts +3 -0
- package/dist/stream/ordinalSceneBuilders/types.d.ts +21 -0
- package/dist/stream/ordinalTypes.d.ts +225 -0
- package/dist/stream/renderers/areaCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/barCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/boxplotCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/candlestickCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/connectorCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/heatmapCanvasRenderer.d.ts +6 -0
- package/dist/stream/renderers/lineCanvasRenderer.d.ts +8 -0
- package/dist/stream/renderers/networkArcRenderer.d.ts +5 -0
- package/dist/stream/renderers/networkCircleRenderer.d.ts +5 -0
- package/dist/stream/renderers/networkEdgeRenderer.d.ts +10 -0
- package/dist/stream/renderers/networkParticleRenderer.d.ts +11 -0
- package/dist/stream/renderers/networkRectRenderer.d.ts +5 -0
- package/dist/stream/renderers/pointCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/swarmCanvasRenderer.d.ts +7 -0
- package/dist/stream/renderers/types.d.ts +7 -0
- package/dist/stream/renderers/violinCanvasRenderer.d.ts +2 -0
- package/dist/stream/renderers/waterfallCanvasRenderer.d.ts +8 -0
- package/dist/stream/renderers/wedgeCanvasRenderer.d.ts +2 -0
- package/dist/stream/types.d.ts +307 -0
- package/dist/types/annotationTypes.d.ts +13 -18
- package/dist/types/canvasTypes.d.ts +1 -1
- package/dist/types/generalTypes.d.ts +41 -36
- package/dist/types/interactionTypes.d.ts +7 -9
- package/dist/types/legendTypes.d.ts +2 -2
- package/dist/types/networkTypes.d.ts +40 -30
- package/dist/types/ordinalTypes.d.ts +27 -18
- package/dist/types/xyTypes.d.ts +1 -95
- package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
- package/dist/visualizationLayerBehavior/general.d.ts +8 -12
- package/dist/xy.js +6993 -0
- package/dist/xy.js.map +1 -0
- package/dist/xy.min.js +1 -0
- package/dist/xy.module.js +6957 -0
- package/dist/xy.module.js.map +1 -0
- package/dist/xy.module.min.js +1 -0
- package/package.json +123 -67
- package/dist/AnnotationLayer/helpers.d.ts +0 -6
- package/dist/AnnotationLayer/index.d.ts +0 -2
- package/dist/FacetController.d.ts +0 -12
- package/dist/Frame.d.ts +0 -2
- package/dist/InteractionLayer.d.ts +0 -3
- package/dist/Mark/Mark.d.ts +0 -3
- package/dist/Mark/Mark.types.d.ts +0 -10
- package/dist/Mark/constants/markTransition.d.ts +0 -10
- package/dist/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/MiniMap.d.ts +0 -14
- package/dist/MinimapXYFrame.d.ts +0 -10
- package/dist/NetworkFrame.d.ts +0 -4
- package/dist/OrdinalFrame.d.ts +0 -4
- package/dist/ResponsiveFrame.d.ts +0 -22
- package/dist/ResponsiveMinimapXYFrame.d.ts +0 -6
- package/dist/ResponsiveNetworkFrame.d.ts +0 -6
- package/dist/ResponsiveOrdinalFrame.d.ts +0 -6
- package/dist/ResponsiveXYFrame.d.ts +0 -6
- package/dist/SpanOrDiv.d.ts +0 -10
- package/dist/SparkFrame.d.ts +0 -14
- package/dist/SparkNetworkFrame.d.ts +0 -5
- package/dist/SparkOrdinalFrame.d.ts +0 -5
- package/dist/SparkXYFrame.d.ts +0 -5
- package/dist/VisualizationLayer.d.ts +0 -33
- package/dist/XYFrame.d.ts +0 -4
- package/dist/annotationRules/orframeRules.d.ts +0 -105
- package/dist/components/Annotation.d.ts +0 -3
- package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
- package/dist/components/Axis/Axis.d.ts +0 -7
- package/dist/components/Axis/axisTitle.d.ts +0 -10
- package/dist/components/Axis/index.d.ts +0 -2
- package/dist/components/Axis/summaryGraphic.d.ts +0 -17
- package/dist/components/Brush.d.ts +0 -12
- package/dist/components/DividedLine.d.ts +0 -16
- package/dist/components/FacetController.d.ts +0 -12
- package/dist/components/Frame.d.ts +0 -2
- package/dist/components/InteractionLayer.d.ts +0 -3
- package/dist/components/Legend.d.ts +0 -3
- package/dist/components/Mark/Mark.d.ts +0 -3
- package/dist/components/Mark/Mark.types.d.ts +0 -10
- package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
- package/dist/components/MiniMap.d.ts +0 -14
- package/dist/components/MinimapXYFrame.d.ts +0 -10
- package/dist/components/NetworkFrame.d.ts +0 -4
- package/dist/components/OrdinalFrame.d.ts +0 -4
- package/dist/components/ResponsiveFrame.d.ts +0 -22
- package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
- package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
- package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
- package/dist/components/ResponsiveXYFrame.d.ts +0 -6
- package/dist/components/SpanOrDiv.d.ts +0 -10
- package/dist/components/SparkFrame.d.ts +0 -14
- package/dist/components/SparkNetworkFrame.d.ts +0 -5
- package/dist/components/SparkOrdinalFrame.d.ts +0 -5
- package/dist/components/SparkXYFrame.d.ts +0 -5
- package/dist/components/TooltipPositioner/index.d.ts +0 -7
- package/dist/components/VisualizationLayer.d.ts +0 -33
- package/dist/components/XYFrame.d.ts +0 -4
- package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
- package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
- package/dist/components/annotationRules/baseRules.d.ts +0 -25
- package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
- package/dist/components/annotationRules/orframeRules.d.ts +0 -105
- package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
- package/dist/components/batchWork.d.ts +0 -6
- package/dist/components/constants/coordinateNames.d.ts +0 -8
- package/dist/components/constants/frame_props.d.ts +0 -4
- package/dist/components/constants/jsx.d.ts +0 -19
- package/dist/components/data/dataFunctions.d.ts +0 -46
- package/dist/components/data/multiAccessorUtils.d.ts +0 -1
- package/dist/components/data/unflowedFunctions.d.ts +0 -1
- package/dist/components/generic_utilities/functions.d.ts +0 -1
- package/dist/components/index.d.ts +0 -125
- package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
- package/dist/components/processing/InteractionItems.d.ts +0 -12
- package/dist/components/processing/network.d.ts +0 -114
- package/dist/components/processing/ordinal.d.ts +0 -102
- package/dist/components/processing/xyDrawing.d.ts +0 -135
- package/dist/components/semiotic.d.ts +0 -35
- package/dist/components/store/TooltipStore.d.ts +0 -2
- package/dist/components/store/createStore.d.ts +0 -1
- package/dist/components/svg/SvgHelper.d.ts +0 -37
- package/dist/components/svg/areaDrawing.d.ts +0 -31
- package/dist/components/svg/ckmeans.d.ts +0 -69
- package/dist/components/svg/frameFunctions.d.ts +0 -119
- package/dist/components/svg/lineDrawing.d.ts +0 -99
- package/dist/components/svg/networkDrawing.d.ts +0 -134
- package/dist/components/svg/pieceDrawing.d.ts +0 -13
- package/dist/components/svg/pieceLayouts.d.ts +0 -71
- package/dist/components/svg/summaryLayouts.d.ts +0 -74
- package/dist/components/types/annotationTypes.d.ts +0 -140
- package/dist/components/types/canvasTypes.d.ts +0 -9
- package/dist/components/types/generalTypes.d.ts +0 -236
- package/dist/components/types/interactionTypes.d.ts +0 -74
- package/dist/components/types/legendTypes.d.ts +0 -20
- package/dist/components/types/networkTypes.d.ts +0 -165
- package/dist/components/types/ordinalTypes.d.ts +0 -103
- package/dist/components/types/xyTypes.d.ts +0 -118
- package/dist/components/useBoundingRect.d.ts +0 -2
- package/dist/components/useDerivedStateFromProps.d.ts +0 -1
- package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
- package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
- package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
- package/dist/constants/jsx.d.ts +0 -19
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
- package/dist/processing/network.d.ts +0 -114
- package/dist/processing/ordinal.d.ts +0 -102
- package/dist/processing/xyDrawing.d.ts +0 -135
- package/dist/setupTests.d.ts +0 -1
- package/dist/svg/SvgHelper.d.ts +0 -37
- package/dist/svg/ckmeans.d.ts +0 -69
- package/dist/svg/frameFunctions.d.ts +0 -119
- package/dist/svg/networkDrawing.d.ts +0 -134
- package/dist/svg/pieceDrawing.d.ts +0 -13
- package/dist/svg/pieceLayouts.d.ts +0 -71
- package/dist/svg/summaryLayouts.d.ts +0 -74
- package/dist/useDerivedStateFromProps.d.ts +0 -1
- package/dist/useLegacyUnmountCallback.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,70 +1,248 @@
|
|
|
1
1
|
[](https://semiotic.nteract.io)
|
|
2
2
|
|
|
3
|
-
[](https://github.com/nteract/semiotic/actions/workflows/node.js.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/semiotic)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
A React data visualization library for charts, networks, and beyond.
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Simple charts in 5 lines. Force-directed graphs, Sankey diagrams, treemaps,
|
|
10
|
+
and chord diagrams when you need them. Full D3-level control when you want it.
|
|
11
|
+
|
|
12
|
+
```jsx
|
|
13
|
+
import { LineChart } from "semiotic"
|
|
14
|
+
|
|
15
|
+
<LineChart
|
|
16
|
+
data={salesData}
|
|
17
|
+
xAccessor="month"
|
|
18
|
+
yAccessor="revenue"
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Why Semiotic
|
|
23
|
+
|
|
24
|
+
Most React charting libraries give you bar charts, line charts, and pie charts.
|
|
25
|
+
Semiotic gives you those too — but it's built for the projects where those
|
|
26
|
+
aren't enough.
|
|
27
|
+
|
|
28
|
+
### When you need more than standard charts
|
|
29
|
+
|
|
30
|
+
**Network visualization.** Show how things connect — org charts,
|
|
31
|
+
dependency graphs, budget flows, taxonomies. Semiotic has force-directed
|
|
32
|
+
graphs, Sankey diagrams, chord diagrams, tree layouts, treemaps, and circle
|
|
33
|
+
packing as React components with the same prop API as LineChart.
|
|
34
|
+
|
|
35
|
+
**Streaming data.** Monitor live systems — server metrics, sensor feeds,
|
|
36
|
+
financial tickers. Semiotic's realtime charts render on canvas at 60fps with
|
|
37
|
+
a ref-based push API. Old data fades out (decay), new data flashes in
|
|
38
|
+
(pulse), and stale feeds are flagged automatically.
|
|
39
|
+
|
|
40
|
+
**Coordinated dashboards.** Hover one chart, highlight matching data in
|
|
41
|
+
others. Brush a scatterplot, filter a bar chart. Semiotic's `LinkedCharts`
|
|
42
|
+
and `ScatterplotMatrix` provide crossfilter coordination that other libraries
|
|
43
|
+
leave you to build from scratch.
|
|
44
|
+
|
|
45
|
+
**Statistical summaries.** Box plots, violin plots, swarm plots, ridgeline
|
|
46
|
+
plots, histograms — the distribution charts that data scientists need and
|
|
47
|
+
most charting libraries skip. Add marginal distribution graphics (histogram,
|
|
48
|
+
violin, ridgeline, boxplot) to scatterplot margins with a single prop.
|
|
49
|
+
|
|
50
|
+
### Start simple, go deep
|
|
51
|
+
|
|
52
|
+
| Layer | For | Example |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| **Charts** | Common visualizations with sensible defaults | `<LineChart data={d} xAccessor="x" yAccessor="y" />` |
|
|
55
|
+
| **Frames** | Full control over rendering, interaction, and layout | `<StreamXYFrame chartType="line" lineStyle={...} />` |
|
|
8
56
|
|
|
9
|
-
|
|
57
|
+
Every Chart component accepts a `frameProps` prop to access the underlying
|
|
58
|
+
Frame API without leaving the simpler interface.
|
|
10
59
|
|
|
11
|
-
|
|
60
|
+
### When to use something else
|
|
12
61
|
|
|
13
|
-
|
|
62
|
+
Need a standard bar or line chart for a dashboard you'll never need to
|
|
63
|
+
customize beyond colors and labels? [Recharts](https://recharts.org) has a
|
|
64
|
+
larger ecosystem and more community examples. Need GPU-accelerated rendering
|
|
65
|
+
for millions of data points? [Apache ECharts](https://echarts.apache.org)
|
|
66
|
+
handles that scale.
|
|
14
67
|
|
|
15
|
-
|
|
68
|
+
Semiotic is for projects that outgrow those libraries — when you need
|
|
69
|
+
network graphs alongside time series, streaming data alongside static
|
|
70
|
+
snapshots, or coordinated views across chart types.
|
|
16
71
|
|
|
17
|
-
|
|
72
|
+
**AI-ready.** Semiotic ships with structured schemas (`ai/schema.json`), an
|
|
73
|
+
`import from "semiotic/ai"` entry point, and an MCP server — all designed for
|
|
74
|
+
LLM code generation. AI coding assistants can generate correct Semiotic code on
|
|
75
|
+
the first try. Run `npx semiotic-ai --help` for CLI options or add `semiotic-mcp`
|
|
76
|
+
to your MCP client config for tool-based chart rendering.
|
|
77
|
+
|
|
78
|
+
## Install
|
|
18
79
|
|
|
19
80
|
```bash
|
|
20
|
-
|
|
81
|
+
npm install semiotic
|
|
21
82
|
```
|
|
22
83
|
|
|
23
|
-
|
|
84
|
+
Requires React 18.1 or later.
|
|
24
85
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
86
|
+
## Quick Examples
|
|
87
|
+
|
|
88
|
+
### Coordinated Dashboard
|
|
89
|
+
|
|
90
|
+
Hover one chart, highlight the same data in another — zero wiring:
|
|
91
|
+
|
|
92
|
+
```jsx
|
|
93
|
+
import { LinkedCharts, Scatterplot, BarChart } from "semiotic"
|
|
94
|
+
|
|
95
|
+
<LinkedCharts>
|
|
96
|
+
<Scatterplot
|
|
97
|
+
data={data} xAccessor="age" yAccessor="income" colorBy="region"
|
|
98
|
+
linkedHover={{ name: "hl", fields: ["region"] }}
|
|
99
|
+
selection={{ name: "hl" }}
|
|
100
|
+
/>
|
|
101
|
+
<BarChart
|
|
102
|
+
data={summary} categoryAccessor="region" valueAccessor="total"
|
|
103
|
+
selection={{ name: "hl" }}
|
|
104
|
+
/>
|
|
105
|
+
</LinkedCharts>
|
|
28
106
|
```
|
|
29
107
|
|
|
30
|
-
|
|
108
|
+
### Streaming Metrics with Decay
|
|
109
|
+
|
|
110
|
+
Live data fades old points, flashes new ones, flags stale feeds:
|
|
31
111
|
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
112
|
+
```jsx
|
|
113
|
+
import { RealtimeLineChart } from "semiotic"
|
|
114
|
+
|
|
115
|
+
const chartRef = useRef()
|
|
116
|
+
chartRef.current.push({ time: Date.now(), value: cpuLoad })
|
|
117
|
+
|
|
118
|
+
<RealtimeLineChart
|
|
119
|
+
ref={chartRef}
|
|
120
|
+
timeAccessor="time"
|
|
121
|
+
valueAccessor="value"
|
|
122
|
+
decay={{ type: "exponential", halfLife: 100 }}
|
|
123
|
+
staleness={{ threshold: 5000, showBadge: true }}
|
|
124
|
+
/>
|
|
36
125
|
```
|
|
37
126
|
|
|
38
|
-
|
|
127
|
+
### Network Graphs
|
|
128
|
+
|
|
129
|
+
Force-directed graphs and Sankey diagrams — same API as LineChart:
|
|
39
130
|
|
|
40
|
-
|
|
131
|
+
```jsx
|
|
132
|
+
import { ForceDirectedGraph, SankeyDiagram } from "semiotic"
|
|
41
133
|
|
|
42
|
-
|
|
134
|
+
<ForceDirectedGraph
|
|
135
|
+
nodes={people} edges={friendships}
|
|
136
|
+
colorBy="team" nodeSize={8} showLabels
|
|
137
|
+
/>
|
|
43
138
|
|
|
44
|
-
|
|
139
|
+
<SankeyDiagram
|
|
140
|
+
edges={budgetFlows}
|
|
141
|
+
sourceAccessor="from" targetAccessor="to" valueAccessor="amount"
|
|
142
|
+
/>
|
|
143
|
+
```
|
|
45
144
|
|
|
46
|
-
|
|
47
|
-
* Jason Reid
|
|
48
|
-
* James Womack
|
|
49
|
-
* Matt Herman
|
|
50
|
-
* Shelby Sturgis
|
|
51
|
-
* Tristan Reid
|
|
145
|
+
### Standard Charts
|
|
52
146
|
|
|
53
|
-
|
|
147
|
+
Line, bar, scatter, area — all the basics, with sensible defaults:
|
|
54
148
|
|
|
55
|
-
|
|
56
|
-
|
|
149
|
+
```jsx
|
|
150
|
+
import { LineChart, BarChart } from "semiotic"
|
|
57
151
|
|
|
58
|
-
|
|
152
|
+
<LineChart
|
|
153
|
+
data={salesData}
|
|
154
|
+
xAccessor="month" yAccessor="revenue"
|
|
155
|
+
curve="monotoneX" showPoints
|
|
156
|
+
/>
|
|
59
157
|
|
|
60
|
-
|
|
158
|
+
<BarChart
|
|
159
|
+
data={categoryData}
|
|
160
|
+
categoryAccessor="department" valueAccessor="sales"
|
|
161
|
+
orientation="horizontal" colorBy="region"
|
|
162
|
+
/>
|
|
163
|
+
```
|
|
61
164
|
|
|
62
|
-
##
|
|
165
|
+
## All Chart Components
|
|
63
166
|
|
|
64
|
-
|
|
167
|
+
| Category | Components |
|
|
168
|
+
|---|---|
|
|
169
|
+
| **XY** | `LineChart` `AreaChart` `StackedAreaChart` `Scatterplot` `BubbleChart` `Heatmap` |
|
|
170
|
+
| **Categorical** | `BarChart` `StackedBarChart` `GroupedBarChart` `SwarmPlot` `BoxPlot` `Histogram` `ViolinPlot` `DotPlot` `PieChart` `DonutChart` |
|
|
171
|
+
| **Network** | `ForceDirectedGraph` `ChordDiagram` `SankeyDiagram` `TreeDiagram` `Treemap` `CirclePack` |
|
|
172
|
+
| **Realtime** | `RealtimeLineChart` `RealtimeHistogram` `RealtimeSwarmChart` `RealtimeWaterfallChart` `RealtimeHeatmap` |
|
|
173
|
+
| **Coordination** | `LinkedCharts` `ScatterplotMatrix` |
|
|
174
|
+
| **Frames** | `StreamXYFrame` `StreamOrdinalFrame` `StreamNetworkFrame` |
|
|
175
|
+
|
|
176
|
+
## Smaller Bundles
|
|
177
|
+
|
|
178
|
+
Import only what you need:
|
|
179
|
+
|
|
180
|
+
```jsx
|
|
181
|
+
import { LineChart } from "semiotic/xy" // 125 KB (vs 218 KB full)
|
|
182
|
+
import { BarChart } from "semiotic/ordinal" // 140 KB
|
|
183
|
+
import { ForceDirectedGraph } from "semiotic/network" // 133 KB
|
|
184
|
+
import { LineChart } from "semiotic/ai" // HOC-only surface for AI generation
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## TypeScript
|
|
188
|
+
|
|
189
|
+
Full type definitions ship with the package. Generics for type-safe accessors:
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
interface Sale { month: number; revenue: number }
|
|
193
|
+
|
|
194
|
+
<LineChart<Sale>
|
|
195
|
+
data={sales}
|
|
196
|
+
xAccessor="month" // TS validates this is keyof Sale
|
|
197
|
+
yAccessor="revenue"
|
|
198
|
+
/>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Server-Side Rendering
|
|
202
|
+
|
|
203
|
+
Static SVG generation for Node.js (email, OG images, PDF):
|
|
204
|
+
|
|
205
|
+
```js
|
|
206
|
+
import { renderToStaticSVG } from "semiotic/server"
|
|
207
|
+
|
|
208
|
+
const svg = renderToStaticSVG("xy", {
|
|
209
|
+
lines: [{ coordinates: data }],
|
|
210
|
+
xAccessor: "date",
|
|
211
|
+
yAccessor: "value",
|
|
212
|
+
size: [600, 400],
|
|
213
|
+
})
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Works with Next.js App Router, Remix, and Astro via `"use client"` directives.
|
|
217
|
+
|
|
218
|
+
## Documentation
|
|
219
|
+
|
|
220
|
+
[Interactive docs and examples](https://semiotic.nteract.io)
|
|
221
|
+
|
|
222
|
+
- [Getting Started](https://semiotic.nteract.io/getting-started)
|
|
223
|
+
- [Charts](https://semiotic.nteract.io/charts) — all 27 chart types with live examples
|
|
224
|
+
- [Frames](https://semiotic.nteract.io/frames) — full Frame API reference
|
|
225
|
+
- [Features](https://semiotic.nteract.io/features) — axes, annotations, tooltips, styling
|
|
226
|
+
- [Cookbook](https://semiotic.nteract.io/cookbook) — advanced patterns and recipes
|
|
227
|
+
- [Playground](https://semiotic.nteract.io/playground) — interactive prop exploration
|
|
228
|
+
|
|
229
|
+
## Upgrading
|
|
230
|
+
|
|
231
|
+
- [Migration Guide](./MIGRATION.md) — upgrading from v1.x or v2.x
|
|
232
|
+
- [Changelog](./CHANGELOG.md) — full release history
|
|
65
233
|
|
|
66
234
|
## Contributing
|
|
67
235
|
|
|
68
|
-
Our community follows the nteract
|
|
236
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). Our community follows the nteract
|
|
237
|
+
[Code of Conduct](https://github.com/nteract/nteract/blob/main/CODE_OF_CONDUCT.md).
|
|
238
|
+
|
|
239
|
+
## Acknowledgments
|
|
240
|
+
|
|
241
|
+
Development of this library owes a lot to Susie Lu, Jason Reid, James Womack,
|
|
242
|
+
Matt Herman, Shelby Sturgis, and Tristan Reid.
|
|
243
|
+
|
|
244
|
+
_Semiotic icon based on an icon by Andre Schauer._
|
|
245
|
+
|
|
246
|
+
## License
|
|
69
247
|
|
|
70
|
-
|
|
248
|
+
[Apache 2.0](./LICENSE)
|
package/ai/cli.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict"
|
|
3
|
+
|
|
4
|
+
const fs = require("fs")
|
|
5
|
+
const path = require("path")
|
|
6
|
+
|
|
7
|
+
const pkgRoot = path.resolve(__dirname, "..")
|
|
8
|
+
|
|
9
|
+
const FILES = {
|
|
10
|
+
default: path.join(pkgRoot, "CLAUDE.md"),
|
|
11
|
+
"--schema": path.join(__dirname, "schema.json"),
|
|
12
|
+
"--compact": path.join(__dirname, "system-prompt.md"),
|
|
13
|
+
"--examples": path.join(__dirname, "examples.md"),
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const HELP = `
|
|
17
|
+
semiotic-ai — Dump Semiotic AI context to stdout
|
|
18
|
+
|
|
19
|
+
Usage:
|
|
20
|
+
npx semiotic-ai Print CLAUDE.md (full reference)
|
|
21
|
+
npx semiotic-ai --schema Print ai/schema.json (tool definitions)
|
|
22
|
+
npx semiotic-ai --compact Print ai/system-prompt.md (compact prompt)
|
|
23
|
+
npx semiotic-ai --examples Print ai/examples.md (copy-paste examples)
|
|
24
|
+
npx semiotic-ai --help Show this help message
|
|
25
|
+
`.trim()
|
|
26
|
+
|
|
27
|
+
const flag = process.argv[2]
|
|
28
|
+
|
|
29
|
+
if (flag === "--help" || flag === "-h") {
|
|
30
|
+
console.log(HELP)
|
|
31
|
+
process.exit(0)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const filePath = flag ? FILES[flag] : FILES.default
|
|
35
|
+
|
|
36
|
+
if (!filePath) {
|
|
37
|
+
console.error(`Unknown flag: ${flag}\n`)
|
|
38
|
+
console.error(HELP)
|
|
39
|
+
process.exit(1)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const content = fs.readFileSync(filePath, "utf-8")
|
|
44
|
+
process.stdout.write(content)
|
|
45
|
+
} catch (err) {
|
|
46
|
+
console.error(`Error reading ${filePath}: ${err.message}`)
|
|
47
|
+
process.exit(1)
|
|
48
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMPONENT_REGISTRY = void 0;
|
|
4
|
+
const LineChart_1 = require("../src/components/charts/xy/LineChart");
|
|
5
|
+
const AreaChart_1 = require("../src/components/charts/xy/AreaChart");
|
|
6
|
+
const StackedAreaChart_1 = require("../src/components/charts/xy/StackedAreaChart");
|
|
7
|
+
const Scatterplot_1 = require("../src/components/charts/xy/Scatterplot");
|
|
8
|
+
const BubbleChart_1 = require("../src/components/charts/xy/BubbleChart");
|
|
9
|
+
const Heatmap_1 = require("../src/components/charts/xy/Heatmap");
|
|
10
|
+
const BarChart_1 = require("../src/components/charts/ordinal/BarChart");
|
|
11
|
+
const StackedBarChart_1 = require("../src/components/charts/ordinal/StackedBarChart");
|
|
12
|
+
const GroupedBarChart_1 = require("../src/components/charts/ordinal/GroupedBarChart");
|
|
13
|
+
const SwarmPlot_1 = require("../src/components/charts/ordinal/SwarmPlot");
|
|
14
|
+
const BoxPlot_1 = require("../src/components/charts/ordinal/BoxPlot");
|
|
15
|
+
const DotPlot_1 = require("../src/components/charts/ordinal/DotPlot");
|
|
16
|
+
const PieChart_1 = require("../src/components/charts/ordinal/PieChart");
|
|
17
|
+
const DonutChart_1 = require("../src/components/charts/ordinal/DonutChart");
|
|
18
|
+
const ForceDirectedGraph_1 = require("../src/components/charts/network/ForceDirectedGraph");
|
|
19
|
+
const ChordDiagram_1 = require("../src/components/charts/network/ChordDiagram");
|
|
20
|
+
const SankeyDiagram_1 = require("../src/components/charts/network/SankeyDiagram");
|
|
21
|
+
const TreeDiagram_1 = require("../src/components/charts/network/TreeDiagram");
|
|
22
|
+
const Treemap_1 = require("../src/components/charts/network/Treemap");
|
|
23
|
+
const CirclePack_1 = require("../src/components/charts/network/CirclePack");
|
|
24
|
+
exports.COMPONENT_REGISTRY = {
|
|
25
|
+
LineChart: { component: LineChart_1.LineChart, category: "xy" },
|
|
26
|
+
AreaChart: { component: AreaChart_1.AreaChart, category: "xy" },
|
|
27
|
+
StackedAreaChart: { component: StackedAreaChart_1.StackedAreaChart, category: "xy" },
|
|
28
|
+
Scatterplot: { component: Scatterplot_1.Scatterplot, category: "xy" },
|
|
29
|
+
BubbleChart: { component: BubbleChart_1.BubbleChart, category: "xy" },
|
|
30
|
+
Heatmap: { component: Heatmap_1.Heatmap, category: "xy" },
|
|
31
|
+
BarChart: { component: BarChart_1.BarChart, category: "ordinal" },
|
|
32
|
+
StackedBarChart: { component: StackedBarChart_1.StackedBarChart, category: "ordinal" },
|
|
33
|
+
GroupedBarChart: { component: GroupedBarChart_1.GroupedBarChart, category: "ordinal" },
|
|
34
|
+
SwarmPlot: { component: SwarmPlot_1.SwarmPlot, category: "ordinal" },
|
|
35
|
+
BoxPlot: { component: BoxPlot_1.BoxPlot, category: "ordinal" },
|
|
36
|
+
DotPlot: { component: DotPlot_1.DotPlot, category: "ordinal" },
|
|
37
|
+
PieChart: { component: PieChart_1.PieChart, category: "ordinal" },
|
|
38
|
+
DonutChart: { component: DonutChart_1.DonutChart, category: "ordinal" },
|
|
39
|
+
ForceDirectedGraph: { component: ForceDirectedGraph_1.ForceDirectedGraph, category: "network" },
|
|
40
|
+
ChordDiagram: { component: ChordDiagram_1.ChordDiagram, category: "network" },
|
|
41
|
+
SankeyDiagram: { component: SankeyDiagram_1.SankeyDiagram, category: "network" },
|
|
42
|
+
TreeDiagram: { component: TreeDiagram_1.TreeDiagram, category: "network" },
|
|
43
|
+
Treemap: { component: Treemap_1.Treemap, category: "network" },
|
|
44
|
+
CirclePack: { component: CirclePack_1.CirclePack, category: "network" },
|
|
45
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Semiotic MCP Server
|
|
5
|
+
*
|
|
6
|
+
* Exposes every HOC chart component as an MCP tool.
|
|
7
|
+
* Accepts component props as tool arguments, renders to static SVG,
|
|
8
|
+
* and returns the SVG string.
|
|
9
|
+
*
|
|
10
|
+
* Usage (Claude Desktop / claude_desktop_config.json):
|
|
11
|
+
* {
|
|
12
|
+
* "mcpServers": {
|
|
13
|
+
* "semiotic": {
|
|
14
|
+
* "command": "npx",
|
|
15
|
+
* "args": ["semiotic-mcp"]
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
55
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
56
|
+
const fs = __importStar(require("fs"));
|
|
57
|
+
const path = __importStar(require("path"));
|
|
58
|
+
const renderHOCToSVG_1 = require("./renderHOCToSVG");
|
|
59
|
+
const componentRegistry_1 = require("./componentRegistry");
|
|
60
|
+
// Load schema.json for tool definitions
|
|
61
|
+
const schemaPath = path.resolve(__dirname, "schema.json");
|
|
62
|
+
const schema = JSON.parse(fs.readFileSync(schemaPath, "utf-8"));
|
|
63
|
+
// Build MCP server
|
|
64
|
+
const server = new mcp_js_1.McpServer({
|
|
65
|
+
name: "semiotic",
|
|
66
|
+
version: schema.version || "3.0.0",
|
|
67
|
+
});
|
|
68
|
+
// Register each chart component as a tool
|
|
69
|
+
for (const toolDef of schema.tools) {
|
|
70
|
+
const { name, description, parameters } = toolDef.function;
|
|
71
|
+
// Skip realtime charts (ref-based, can't render to static SVG)
|
|
72
|
+
if (name.startsWith("Realtime"))
|
|
73
|
+
continue;
|
|
74
|
+
// Skip components not in registry
|
|
75
|
+
if (!componentRegistry_1.COMPONENT_REGISTRY[name])
|
|
76
|
+
continue;
|
|
77
|
+
// Register the tool — use raw z.any() style since we have our own validation
|
|
78
|
+
server.tool(name, description, {}, async (args) => {
|
|
79
|
+
const result = (0, renderHOCToSVG_1.renderHOCToSVG)(name, args);
|
|
80
|
+
if (result.error) {
|
|
81
|
+
return {
|
|
82
|
+
content: [{ type: "text", text: result.error }],
|
|
83
|
+
isError: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
content: [{ type: "text", text: result.svg }],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Start the server
|
|
92
|
+
async function main() {
|
|
93
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
94
|
+
await server.connect(transport);
|
|
95
|
+
}
|
|
96
|
+
main().catch((err) => {
|
|
97
|
+
console.error("MCP server error:", err);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.renderHOCToSVG = renderHOCToSVG;
|
|
37
|
+
/**
|
|
38
|
+
* Render a Semiotic HOC chart component to static SVG markup.
|
|
39
|
+
*
|
|
40
|
+
* Uses ReactDOMServer.renderToStaticMarkup which supports hooks
|
|
41
|
+
* (useMemo, custom hooks) used by the HOC components.
|
|
42
|
+
*/
|
|
43
|
+
const React = __importStar(require("react"));
|
|
44
|
+
const ReactDOMServer = __importStar(require("react-dom/server"));
|
|
45
|
+
const componentRegistry_1 = require("./componentRegistry");
|
|
46
|
+
const validateProps_1 = require("../src/components/charts/shared/validateProps");
|
|
47
|
+
function renderHOCToSVG(componentName, props) {
|
|
48
|
+
// Look up component
|
|
49
|
+
const entry = componentRegistry_1.COMPONENT_REGISTRY[componentName];
|
|
50
|
+
if (!entry) {
|
|
51
|
+
return {
|
|
52
|
+
svg: null,
|
|
53
|
+
error: `Unknown component "${componentName}". Available: ${Object.keys(componentRegistry_1.COMPONENT_REGISTRY).join(", ")}`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Validate props
|
|
57
|
+
const validation = (0, validateProps_1.validateProps)(componentName, props);
|
|
58
|
+
if (!validation.valid) {
|
|
59
|
+
return {
|
|
60
|
+
svg: null,
|
|
61
|
+
error: `Validation errors:\n${validation.errors.join("\n")}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Disable hover (not useful in static SVG)
|
|
65
|
+
const renderProps = { ...props, enableHover: false };
|
|
66
|
+
try {
|
|
67
|
+
const element = React.createElement(entry.component, renderProps);
|
|
68
|
+
const svg = ReactDOMServer.renderToStaticMarkup(element);
|
|
69
|
+
return { svg, error: null };
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return {
|
|
73
|
+
svg: null,
|
|
74
|
+
error: `Render error: ${err.message || String(err)}`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|