semiotic 2.0.3 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +530 -0
- package/README.md +190 -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 +373 -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/DividedLine.js +65 -0
- package/ai/dist/src/components/FacetController.js +259 -0
- package/ai/dist/src/components/Frame.js +139 -0
- package/ai/dist/src/components/InteractionLayer.js +328 -0
- package/ai/dist/src/components/Legend.js +140 -0
- package/ai/dist/src/components/MiniMap.js +75 -0
- package/ai/dist/src/components/MinimapXYFrame.js +99 -0
- package/ai/dist/src/components/NetworkFrame.js +335 -0
- package/ai/dist/src/components/OrdinalFrame.js +437 -0
- package/ai/dist/src/components/ResponsiveFrame.js +68 -0
- package/ai/dist/src/components/ResponsiveMinimapXYFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveNetworkFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveOrdinalFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveXYFrame.js +10 -0
- package/ai/dist/src/components/SparkFrame.js +113 -0
- package/ai/dist/src/components/SparkNetworkFrame.js +11 -0
- package/ai/dist/src/components/SparkOrdinalFrame.js +11 -0
- package/ai/dist/src/components/SparkXYFrame.js +11 -0
- package/ai/dist/src/components/Tooltip/Tooltip.js +304 -0
- package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
- package/ai/dist/src/components/VisualizationLayer.js +395 -0
- package/ai/dist/src/components/XYFrame.js +524 -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 +198 -0
- package/ai/dist/src/components/annotationRules/orframeRules.js +695 -0
- package/ai/dist/src/components/annotationRules/xyframeRules.js +299 -0
- package/ai/dist/src/components/batchWork.js +35 -0
- package/ai/dist/src/components/charts/index.js +96 -0
- package/ai/dist/src/components/charts/network/ChordDiagram.js +245 -0
- package/ai/dist/src/components/charts/network/CirclePack.js +177 -0
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +248 -0
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +305 -0
- package/ai/dist/src/components/charts/network/TreeDiagram.js +268 -0
- package/ai/dist/src/components/charts/network/Treemap.js +177 -0
- package/ai/dist/src/components/charts/ordinal/BarChart.js +191 -0
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +235 -0
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +178 -0
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +194 -0
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +194 -0
- package/ai/dist/src/components/charts/ordinal/PieChart.js +155 -0
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +213 -0
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +219 -0
- package/ai/dist/src/components/charts/realtime/RealtimeBarChart.js +91 -0
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +73 -0
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +85 -0
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +86 -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 +176 -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/types.js +2 -0
- package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
- package/ai/dist/src/components/charts/shared/validateProps.js +640 -0
- package/ai/dist/src/components/charts/xy/AreaChart.js +220 -0
- package/ai/dist/src/components/charts/xy/BubbleChart.js +222 -0
- package/ai/dist/src/components/charts/xy/Heatmap.js +230 -0
- package/ai/dist/src/components/charts/xy/LineChart.js +302 -0
- package/ai/dist/src/components/charts/xy/Scatterplot.js +136 -0
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +220 -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/constants/jsx.js +71 -0
- package/ai/dist/src/components/data/dataFunctions.js +473 -0
- package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
- package/ai/dist/src/components/data/networkPipelineCache.js +43 -0
- package/ai/dist/src/components/data/ordinalPipelineCache.js +53 -0
- package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
- package/ai/dist/src/components/data/xyPipelineCache.js +49 -0
- package/ai/dist/src/components/generic_utilities/functions.js +5 -0
- package/ai/dist/src/components/index.js +145 -0
- package/ai/dist/src/components/interactionLayerBehavior/InteractionCanvas.js +128 -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/network.js +771 -0
- package/ai/dist/src/components/processing/networkDefaults.js +39 -0
- package/ai/dist/src/components/processing/networkLayoutHelpers.js +98 -0
- package/ai/dist/src/components/processing/ordinal.js +889 -0
- package/ai/dist/src/components/processing/ordinalConstants.js +23 -0
- package/ai/dist/src/components/processing/ordinalOverlays.js +88 -0
- package/ai/dist/src/components/processing/ordinalRenderPipeline.js +196 -0
- package/ai/dist/src/components/processing/xyDrawing.js +484 -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/RealtimeFrame.js +710 -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 +66 -0
- package/ai/dist/src/components/semiotic-network.js +30 -0
- package/ai/dist/src/components/semiotic-ordinal.js +28 -0
- package/ai/dist/src/components/semiotic-realtime.js +37 -0
- package/ai/dist/src/components/semiotic-server.js +8 -0
- package/ai/dist/src/components/semiotic-xy.js +41 -0
- package/ai/dist/src/components/semiotic.js +101 -0
- package/ai/dist/src/components/server/renderToStaticSVG.js +392 -0
- package/ai/dist/src/components/store/TooltipStore.js +13 -0
- package/ai/dist/src/components/store/createStore.js +77 -0
- package/ai/dist/src/components/svg/SvgHelper.js +308 -0
- package/ai/dist/src/components/svg/areaDrawing.js +312 -0
- package/ai/dist/src/components/svg/boxplotRenderer.js +441 -0
- package/ai/dist/src/components/svg/bucketizedRenderer.js +677 -0
- package/ai/dist/src/components/svg/ckbinsRenderer.js +92 -0
- package/ai/dist/src/components/svg/ckmeans.js +238 -0
- package/ai/dist/src/components/svg/contourLayout.js +73 -0
- package/ai/dist/src/components/svg/contourRenderer.js +53 -0
- package/ai/dist/src/components/svg/edgeGenerators.js +181 -0
- package/ai/dist/src/components/svg/frameFunctions.js +579 -0
- package/ai/dist/src/components/svg/graphAlgorithms.js +138 -0
- package/ai/dist/src/components/svg/hexbinLayout.js +163 -0
- package/ai/dist/src/components/svg/lineDrawing.js +427 -0
- package/ai/dist/src/components/svg/networkDrawing.js +207 -0
- package/ai/dist/src/components/svg/nodeGenerators.js +131 -0
- package/ai/dist/src/components/svg/pieceDrawing.js +110 -0
- package/ai/dist/src/components/svg/pieceLayouts.js +588 -0
- package/ai/dist/src/components/svg/sankeyLinks.js +143 -0
- package/ai/dist/src/components/svg/summaryAxis.js +48 -0
- package/ai/dist/src/components/svg/summaryLayouts.js +202 -0
- package/ai/dist/src/components/svg/swarmLayout.js +128 -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/useDerivedStateFromProps.js +25 -0
- package/ai/dist/src/components/useLegacyUnmountCallback.js +21 -0
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +249 -0
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
- package/ai/dist/src/setupTests.js +4 -0
- package/ai/examples.md +394 -0
- package/ai/schema.json +1178 -0
- package/ai/system-prompt.md +38 -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/FacetController.d.ts +1 -1
- package/dist/MinimapXYFrame.d.ts +2 -2
- package/dist/NetworkFrame.d.ts +5 -1
- package/dist/OrdinalFrame.d.ts +5 -1
- package/dist/ResponsiveFrame.d.ts +2 -2
- package/dist/ResponsiveMinimapXYFrame.d.ts +3 -6
- package/dist/ResponsiveNetworkFrame.d.ts +3 -6
- package/dist/ResponsiveOrdinalFrame.d.ts +3 -6
- package/dist/ResponsiveXYFrame.d.ts +3 -6
- package/dist/SparkFrame.d.ts +1 -1
- package/dist/SparkNetworkFrame.d.ts +3 -3
- package/dist/SparkOrdinalFrame.d.ts +3 -3
- package/dist/SparkXYFrame.d.ts +3 -3
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +1 -1
- package/dist/VisualizationLayer.d.ts +3 -3
- package/dist/XYFrame.d.ts +5 -1
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
- package/dist/annotationRules/networkframeRules.d.ts +2 -2
- package/dist/annotationRules/orframeRules.d.ts +2 -4
- package/dist/annotationRules/xyframeRules.d.ts +2 -2
- package/dist/batchWork.d.ts +1 -1
- package/dist/charts/index.d.ts +62 -0
- package/dist/charts/network/ChordDiagram.d.ts +181 -0
- package/dist/charts/network/CirclePack.d.ts +103 -0
- package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
- package/dist/charts/network/SankeyDiagram.d.ts +195 -0
- package/dist/charts/network/TreeDiagram.d.ts +200 -0
- package/dist/charts/network/Treemap.d.ts +98 -0
- package/dist/charts/ordinal/BarChart.d.ts +119 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
- package/dist/charts/ordinal/DonutChart.d.ts +95 -0
- package/dist/charts/ordinal/DotPlot.d.ts +128 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
- package/dist/charts/ordinal/PieChart.d.ts +83 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
- package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
- package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -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 +82 -0
- package/dist/charts/shared/hooks.d.ts +20 -0
- package/dist/charts/shared/legendUtils.d.ts +32 -0
- package/dist/charts/shared/types.d.ts +58 -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 +127 -0
- package/dist/charts/xy/BubbleChart.d.ts +157 -0
- package/dist/charts/xy/Heatmap.d.ts +153 -0
- package/dist/charts/xy/LineChart.d.ts +193 -0
- package/dist/charts/xy/Scatterplot.d.ts +50 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
- package/dist/constants/frame_props.d.ts +9 -0
- package/dist/constants/jsx.d.ts +2 -2
- package/dist/data/dataFunctions.d.ts +11 -12
- package/dist/data/networkPipelineCache.d.ts +27 -0
- package/dist/data/ordinalPipelineCache.d.ts +33 -0
- package/dist/data/xyPipelineCache.d.ts +35 -0
- package/dist/index.d.ts +70 -62
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +1 -1
- package/dist/network.js +8520 -0
- package/dist/network.js.map +1 -0
- package/dist/network.min.js +1 -0
- package/dist/network.module.js +8484 -0
- package/dist/network.module.js.map +1 -0
- package/dist/network.module.min.js +1 -0
- package/dist/ordinal.js +9276 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/ordinal.min.js +1 -0
- package/dist/ordinal.module.js +9242 -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/network.d.ts +25 -28
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/processing/networkLayoutHelpers.d.ts +54 -0
- package/dist/processing/ordinal.d.ts +43 -43
- package/dist/processing/ordinalConstants.d.ts +33 -0
- package/dist/processing/ordinalOverlays.d.ts +33 -0
- package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
- package/dist/processing/xyDrawing.d.ts +46 -41
- package/dist/realtime/BinAccumulator.d.ts +8 -0
- package/dist/realtime/IncrementalExtent.d.ts +13 -0
- package/dist/realtime/RealtimeFrame.d.ts +4 -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 +1598 -0
- package/dist/realtime.js.map +1 -0
- package/dist/realtime.min.js +1 -0
- package/dist/realtime.module.js +1566 -0
- package/dist/realtime.module.js.map +1 -0
- package/dist/realtime.module.min.js +1 -0
- package/dist/semiotic-ai.d.ts +28 -0
- package/dist/semiotic-ai.js +18722 -0
- package/dist/semiotic-ai.js.map +1 -0
- package/dist/semiotic-ai.min.js +1 -0
- package/dist/semiotic-ai.module.js +18668 -0
- package/dist/semiotic-ai.module.js.map +1 -0
- package/dist/semiotic-ai.module.min.js +1 -0
- package/dist/semiotic-network.d.ts +19 -0
- package/dist/semiotic-ordinal.d.ts +18 -0
- package/dist/semiotic-realtime.d.ts +23 -0
- package/dist/semiotic-server.d.ts +1 -0
- package/dist/semiotic-xy.d.ts +24 -0
- package/dist/semiotic.d.ts +19 -3
- package/dist/semiotic.js +18707 -12983
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +18651 -12953
- 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 +8360 -0
- package/dist/server.js.map +1 -0
- package/dist/server.min.js +1 -0
- package/dist/server.module.js +8331 -0
- package/dist/server.module.js.map +1 -0
- package/dist/server.module.min.js +1 -0
- package/dist/svg/SvgHelper.d.ts +1 -5
- package/dist/svg/areaDrawing.d.ts +3 -13
- package/dist/svg/boxplotRenderer.d.ts +15 -0
- package/dist/svg/bucketizedRenderer.d.ts +16 -0
- package/dist/svg/ckbinsRenderer.d.ts +20 -0
- package/dist/svg/contourLayout.d.ts +6 -0
- package/dist/svg/contourRenderer.d.ts +12 -0
- package/dist/svg/edgeGenerators.d.ts +51 -0
- package/dist/svg/frameFunctions.d.ts +17 -28
- package/dist/svg/graphAlgorithms.d.ts +14 -0
- package/dist/svg/hexbinLayout.d.ts +7 -0
- package/dist/svg/lineDrawing.d.ts +8 -8
- package/dist/svg/networkDrawing.d.ts +5 -123
- package/dist/svg/nodeGenerators.d.ts +58 -0
- package/dist/svg/pieceDrawing.d.ts +1 -2
- package/dist/svg/pieceLayouts.d.ts +5 -23
- package/dist/svg/sankeyLinks.d.ts +3 -0
- package/dist/svg/summaryAxis.d.ts +6 -0
- package/dist/svg/summaryLayouts.d.ts +36 -57
- package/dist/svg/swarmLayout.d.ts +13 -0
- package/dist/types/annotationTypes.d.ts +13 -18
- package/dist/types/canvasTypes.d.ts +1 -1
- package/dist/types/generalTypes.d.ts +37 -35
- 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 +13 -16
- package/dist/useLegacyUnmountCallback.d.ts +2 -1
- package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
- package/dist/visualizationLayerBehavior/general.d.ts +8 -12
- package/dist/xy.js +7944 -0
- package/dist/xy.js.map +1 -0
- package/dist/xy.min.js +1 -0
- package/dist/xy.module.js +7903 -0
- package/dist/xy.module.js.map +1 -0
- package/dist/xy.module.min.js +1 -0
- package/package.json +116 -66
- package/dist/AnnotationLayer/helpers.d.ts +0 -6
- package/dist/AnnotationLayer/index.d.ts +0 -2
- 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/SpanOrDiv.d.ts +0 -10
- 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/setupTests.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,70 +1,223 @@
|
|
|
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
|
+
**Start simple, go deep.** Semiotic has three layers of abstraction:
|
|
8
25
|
|
|
9
|
-
|
|
26
|
+
| Layer | For | Example |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| **Charts** | Common visualizations with sensible defaults | `<LineChart data={d} xAccessor="x" yAccessor="y" />` |
|
|
29
|
+
| **Frames** | Full control over rendering, interaction, and layout | `<XYFrame lines={d} customLineMark={...} />` |
|
|
30
|
+
| **Utilities** | Standalone axes, legends, annotations, brushes | `<Annotation type="react" />` |
|
|
10
31
|
|
|
11
|
-
|
|
32
|
+
Every Chart component accepts a `frameProps` prop to access the underlying
|
|
33
|
+
Frame API without giving up the simpler interface.
|
|
12
34
|
|
|
13
|
-
|
|
35
|
+
**Network visualization as a first-class citizen.** Force-directed graphs,
|
|
36
|
+
Sankey diagrams, chord diagrams, tree layouts, treemaps, and circle packing
|
|
37
|
+
are all React components with the same clean prop API as LineChart.
|
|
14
38
|
|
|
15
|
-
|
|
39
|
+
**What Semiotic does that other libraries don't:**
|
|
40
|
+
- Force-directed graphs, Sankey diagrams, chord diagrams, treemaps, and circle packing — as React components with the same clean API as LineChart
|
|
41
|
+
- Real-time streaming charts rendered on canvas at 60fps
|
|
42
|
+
- Built-in annotation system with hover, click, and custom annotation types
|
|
43
|
+
- Server-side SVG rendering for email, OG images, and PDFs
|
|
16
44
|
|
|
17
|
-
|
|
45
|
+
**When to use something else.** Need a standard line or bar chart for a dashboard?
|
|
46
|
+
[Recharts](https://recharts.org) has a larger ecosystem and more community examples.
|
|
47
|
+
Semiotic is built for projects that need network visualization, statistical summaries,
|
|
48
|
+
or custom mark rendering — capabilities that general-purpose charting libraries don't offer.
|
|
49
|
+
|
|
50
|
+
**AI-ready.** Semiotic ships with structured schemas (`ai/schema.json`), an
|
|
51
|
+
`import from "semiotic/ai"` entry point, and an MCP server — all designed for
|
|
52
|
+
LLM code generation. AI coding assistants can generate correct Semiotic code on
|
|
53
|
+
the first try. Run `npx semiotic-ai --help` for CLI options or add `semiotic-mcp`
|
|
54
|
+
to your MCP client config for tool-based chart rendering.
|
|
55
|
+
|
|
56
|
+
## Install
|
|
18
57
|
|
|
19
58
|
```bash
|
|
20
|
-
|
|
59
|
+
npm install semiotic
|
|
21
60
|
```
|
|
22
61
|
|
|
23
|
-
|
|
62
|
+
Requires React 18.1 or later.
|
|
24
63
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
64
|
+
## Quick Examples
|
|
65
|
+
|
|
66
|
+
### Line Chart
|
|
67
|
+
|
|
68
|
+
```jsx
|
|
69
|
+
import { LineChart } from "semiotic"
|
|
70
|
+
|
|
71
|
+
<LineChart
|
|
72
|
+
data={salesData}
|
|
73
|
+
xAccessor="month"
|
|
74
|
+
yAccessor="revenue"
|
|
75
|
+
curve="monotoneX"
|
|
76
|
+
showPoints={true}
|
|
77
|
+
xLabel="Month"
|
|
78
|
+
yLabel="Revenue"
|
|
79
|
+
/>
|
|
28
80
|
```
|
|
29
81
|
|
|
30
|
-
|
|
82
|
+
### Bar Chart
|
|
31
83
|
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
84
|
+
```jsx
|
|
85
|
+
import { BarChart } from "semiotic"
|
|
86
|
+
|
|
87
|
+
<BarChart
|
|
88
|
+
data={categoryData}
|
|
89
|
+
categoryAccessor="department"
|
|
90
|
+
valueAccessor="sales"
|
|
91
|
+
orientation="horizontal"
|
|
92
|
+
colorBy="region"
|
|
93
|
+
/>
|
|
36
94
|
```
|
|
37
95
|
|
|
38
|
-
|
|
96
|
+
### Force-Directed Graph
|
|
97
|
+
|
|
98
|
+
```jsx
|
|
99
|
+
import { ForceDirectedGraph } from "semiotic"
|
|
39
100
|
|
|
40
|
-
|
|
101
|
+
<ForceDirectedGraph
|
|
102
|
+
nodes={teamMembers}
|
|
103
|
+
edges={connections}
|
|
104
|
+
colorBy="department"
|
|
105
|
+
nodeSize={8}
|
|
106
|
+
showLabels={true}
|
|
107
|
+
/>
|
|
108
|
+
```
|
|
41
109
|
|
|
42
|
-
|
|
110
|
+
### Sankey Diagram
|
|
43
111
|
|
|
44
|
-
|
|
112
|
+
```jsx
|
|
113
|
+
import { SankeyDiagram } from "semiotic"
|
|
45
114
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
115
|
+
<SankeyDiagram
|
|
116
|
+
nodes={entities}
|
|
117
|
+
edges={flows}
|
|
118
|
+
colorBy="category"
|
|
119
|
+
nodeLabel="name"
|
|
120
|
+
/>
|
|
121
|
+
```
|
|
52
122
|
|
|
53
|
-
|
|
123
|
+
### Streaming Data
|
|
54
124
|
|
|
55
|
-
|
|
56
|
-
|
|
125
|
+
```jsx
|
|
126
|
+
import { RealtimeLineChart } from "semiotic"
|
|
57
127
|
|
|
58
|
-
|
|
128
|
+
const chartRef = useRef()
|
|
59
129
|
|
|
60
|
-
|
|
130
|
+
// Push data at any frequency
|
|
131
|
+
chartRef.current.push({ time: Date.now(), value: reading })
|
|
61
132
|
|
|
62
|
-
|
|
133
|
+
<RealtimeLineChart
|
|
134
|
+
ref={chartRef}
|
|
135
|
+
timeAccessor="time"
|
|
136
|
+
valueAccessor="value"
|
|
137
|
+
windowSize={200}
|
|
138
|
+
/>
|
|
139
|
+
```
|
|
63
140
|
|
|
64
|
-
|
|
141
|
+
## All Chart Components
|
|
142
|
+
|
|
143
|
+
| Category | Components |
|
|
144
|
+
|---|---|
|
|
145
|
+
| **XY** | `LineChart` `AreaChart` `StackedAreaChart` `Scatterplot` `BubbleChart` `Heatmap` |
|
|
146
|
+
| **Categorical** | `BarChart` `StackedBarChart` `GroupedBarChart` `SwarmPlot` `BoxPlot` `DotPlot` `PieChart` `DonutChart` |
|
|
147
|
+
| **Network** | `ForceDirectedGraph` `ChordDiagram` `SankeyDiagram` `TreeDiagram` `Treemap` `CirclePack` |
|
|
148
|
+
| **Realtime** | `RealtimeLineChart` `RealtimeBarChart` `RealtimeSwarmChart` `RealtimeWaterfallChart` |
|
|
149
|
+
| **Frames** | `XYFrame` `OrdinalFrame` `NetworkFrame` `RealtimeFrame` |
|
|
150
|
+
|
|
151
|
+
## Smaller Bundles
|
|
152
|
+
|
|
153
|
+
Import only what you need:
|
|
154
|
+
|
|
155
|
+
```jsx
|
|
156
|
+
import { LineChart } from "semiotic/xy" // 125 KB (vs 218 KB full)
|
|
157
|
+
import { BarChart } from "semiotic/ordinal" // 140 KB
|
|
158
|
+
import { ForceDirectedGraph } from "semiotic/network" // 133 KB
|
|
159
|
+
import { LineChart } from "semiotic/ai" // HOC-only surface for AI generation
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## TypeScript
|
|
163
|
+
|
|
164
|
+
Full type definitions ship with the package. Generics for type-safe accessors:
|
|
165
|
+
|
|
166
|
+
```tsx
|
|
167
|
+
interface Sale { month: number; revenue: number }
|
|
168
|
+
|
|
169
|
+
<LineChart<Sale>
|
|
170
|
+
data={sales}
|
|
171
|
+
xAccessor="month" // TS validates this is keyof Sale
|
|
172
|
+
yAccessor="revenue"
|
|
173
|
+
/>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Server-Side Rendering
|
|
177
|
+
|
|
178
|
+
Static SVG generation for Node.js (email, OG images, PDF):
|
|
179
|
+
|
|
180
|
+
```js
|
|
181
|
+
import { renderToStaticSVG } from "semiotic/server"
|
|
182
|
+
|
|
183
|
+
const svg = renderToStaticSVG("xy", {
|
|
184
|
+
lines: [{ coordinates: data }],
|
|
185
|
+
xAccessor: "date",
|
|
186
|
+
yAccessor: "value",
|
|
187
|
+
size: [600, 400],
|
|
188
|
+
})
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Works with Next.js App Router, Remix, and Astro via `"use client"` directives.
|
|
192
|
+
|
|
193
|
+
## Documentation
|
|
194
|
+
|
|
195
|
+
[Interactive docs and examples](https://semiotic.nteract.io)
|
|
196
|
+
|
|
197
|
+
- [Getting Started](https://semiotic.nteract.io/getting-started)
|
|
198
|
+
- [Charts](https://semiotic.nteract.io/charts) — all 24 chart types with live examples
|
|
199
|
+
- [Frames](https://semiotic.nteract.io/frames) — full Frame API reference
|
|
200
|
+
- [Features](https://semiotic.nteract.io/features) — axes, annotations, tooltips, styling
|
|
201
|
+
- [Cookbook](https://semiotic.nteract.io/cookbook) — advanced patterns and recipes
|
|
202
|
+
- [Playground](https://semiotic.nteract.io/playground) — interactive prop exploration
|
|
203
|
+
|
|
204
|
+
## Upgrading
|
|
205
|
+
|
|
206
|
+
- [Migration Guide](./MIGRATION.md) — upgrading from v1.x or v2.x
|
|
207
|
+
- [Changelog](./CHANGELOG.md) — full release history
|
|
65
208
|
|
|
66
209
|
## Contributing
|
|
67
210
|
|
|
68
|
-
Our community follows the nteract
|
|
211
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). Our community follows the nteract
|
|
212
|
+
[Code of Conduct](https://github.com/nteract/nteract/blob/main/CODE_OF_CONDUCT.md).
|
|
213
|
+
|
|
214
|
+
## Acknowledgments
|
|
215
|
+
|
|
216
|
+
Development of this library owes a lot to Susie Lu, Jason Reid, James Womack,
|
|
217
|
+
Matt Herman, Shelby Sturgis, and Tristan Reid.
|
|
218
|
+
|
|
219
|
+
_Semiotic icon based on an icon by Andre Schauer._
|
|
220
|
+
|
|
221
|
+
## License
|
|
69
222
|
|
|
70
|
-
|
|
223
|
+
[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
|
+
}
|