semiotic 3.5.1 → 3.5.3
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 +26 -23
- package/README.md +27 -21
- package/ai/chartSuggestions.cjs +191 -3
- package/ai/componentMetadata.cjs +3 -3
- package/ai/dist/mcp-server.js +266 -48
- package/ai/examples.md +68 -0
- package/ai/schema.json +914 -1
- package/ai/system-prompt.md +4 -1
- package/dist/components/ThemeProvider.d.ts +2 -2
- package/dist/components/Tooltip/FlippingTooltip.d.ts +16 -1
- package/dist/components/charts/geo/FlowMap.d.ts +13 -4
- package/dist/components/charts/index.d.ts +6 -0
- package/dist/components/charts/network/OrbitDiagram.d.ts +5 -5
- package/dist/components/charts/network/ProcessSankey.d.ts +163 -0
- package/dist/components/charts/network/SankeyDiagram.d.ts +5 -1
- package/dist/components/charts/network/processSankey/algorithm.d.ts +193 -0
- package/dist/components/charts/network/processSankey/buildScenes.d.ts +51 -0
- package/dist/components/charts/network/processSankey/ribbonInputs.d.ts +32 -0
- package/dist/components/charts/network/processSankey/streamingLayout.d.ts +71 -0
- package/dist/components/charts/network/processSankey/tooltipUtils.d.ts +41 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +12 -0
- package/dist/components/charts/ordinal/DotPlot.d.ts +9 -0
- package/dist/components/charts/ordinal/GaugeChart.d.ts +20 -0
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +5 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +16 -11
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +2 -0
- package/dist/components/charts/realtime/defaultRealtimeTooltip.d.ts +19 -0
- package/dist/components/charts/shared/axisExtent.d.ts +59 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +75 -0
- package/dist/components/charts/shared/colorUtils.d.ts +8 -2
- package/dist/components/charts/shared/networkUtils.d.ts +3 -5
- package/dist/components/charts/shared/radialGeometry.d.ts +99 -0
- package/dist/components/charts/shared/regressionUtils.d.ts +59 -0
- package/dist/components/charts/shared/selectionUtils.d.ts +8 -1
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +5 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +11 -0
- package/dist/components/charts/shared/types.d.ts +19 -0
- package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +78 -0
- package/dist/components/charts/shared/useChartSetup.d.ts +2 -0
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +1 -0
- package/dist/components/charts/shared/useEncodingDomain.d.ts +48 -0
- package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -1
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +150 -0
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +87 -0
- package/dist/components/charts/shared/useSeriesFeatures.d.ts +57 -0
- package/dist/components/charts/shared/useStreamStatus.d.ts +33 -0
- package/dist/components/charts/shared/useXYLineStyle.d.ts +69 -0
- package/dist/components/charts/shared/useXYPointStyle.d.ts +87 -0
- package/dist/components/charts/shared/withChartWrapper.d.ts +10 -3
- package/dist/components/charts/xy/AreaChart.d.ts +36 -2
- package/dist/components/charts/xy/BubbleChart.d.ts +9 -0
- package/dist/components/charts/xy/ConnectedScatterplot.d.ts +16 -0
- package/dist/components/charts/xy/DifferenceChart.d.ts +172 -0
- package/dist/components/charts/xy/LineChart.d.ts +26 -2
- package/dist/components/charts/xy/Scatterplot.d.ts +39 -1
- package/dist/components/geometry/ribbonGeometry.d.ts +76 -0
- package/dist/components/semiotic-ai.d.ts +2 -0
- package/dist/components/semiotic-network.d.ts +4 -0
- package/dist/components/semiotic-realtime.d.ts +2 -0
- package/dist/components/semiotic-utils.d.ts +4 -0
- package/dist/components/semiotic-xy.d.ts +2 -0
- package/dist/components/semiotic.d.ts +4 -4
- package/dist/components/server/renderToStaticSVG.d.ts +2 -1
- package/dist/components/server/serverChartConfigs.d.ts +3 -0
- package/dist/components/server/staticAnnotations.d.ts +1 -1
- package/dist/components/server/themeResolver.d.ts +7 -1
- package/dist/components/store/ThemeStore.d.ts +7 -1
- package/dist/components/stream/AccessibleDataTable.d.ts +2 -2
- package/dist/components/stream/GeoPipelineStore.d.ts +21 -0
- package/dist/components/stream/OrdinalSVGOverlay.d.ts +8 -0
- package/dist/components/stream/PipelineStore.d.ts +25 -13
- package/dist/components/stream/SVGOverlay.d.ts +9 -18
- package/dist/components/stream/accessorUtils.d.ts +2 -1
- package/dist/components/stream/annotationAccessorResolver.d.ts +39 -0
- package/dist/components/stream/geoTypes.d.ts +12 -0
- package/dist/components/stream/layouts/hierarchyLayoutPlugin.d.ts +1 -1
- package/dist/components/stream/networkTypes.d.ts +11 -0
- package/dist/components/stream/ordinalTypes.d.ts +27 -1
- package/dist/components/stream/renderers/cornerRadii.d.ts +33 -0
- package/dist/components/stream/renderers/wedgePathBuilder.d.ts +56 -0
- package/dist/components/stream/types.d.ts +127 -11
- package/dist/components/stream/xySceneBuilders/areaGradient.d.ts +20 -0
- package/dist/components/stream/xySceneBuilders/barScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/candlestickScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/heatmapScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/lineScene.d.ts +4 -3
- package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/ribbonScene.d.ts +107 -0
- package/dist/components/stream/xySceneBuilders/swarmScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/types.d.ts +9 -12
- package/dist/components/stream/xySceneBuilders/waterfallScene.d.ts +2 -2
- package/dist/components/types/legendTypes.d.ts +1 -1
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai.d.ts +2 -0
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-network.d.ts +4 -0
- package/dist/semiotic-realtime.d.ts +2 -0
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-themes.min.js +1 -1
- package/dist/semiotic-themes.module.min.js +1 -1
- package/dist/semiotic-utils.d.ts +4 -0
- package/dist/semiotic-utils.min.js +1 -1
- package/dist/semiotic-utils.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +2 -0
- package/dist/semiotic.d.ts +4 -4
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +23 -10
- package/dist/components/stream/xySceneBuilders/boundsScene.d.ts +0 -9
|
@@ -11,10 +11,12 @@ export { TreeDiagram } from "./charts/network/TreeDiagram";
|
|
|
11
11
|
export { Treemap } from "./charts/network/Treemap";
|
|
12
12
|
export { CirclePack } from "./charts/network/CirclePack";
|
|
13
13
|
export { OrbitDiagram } from "./charts/network/OrbitDiagram";
|
|
14
|
+
export { ProcessSankey } from "./charts/network/ProcessSankey";
|
|
14
15
|
export { NetworkCustomChart } from "./charts/custom/NetworkCustomChart";
|
|
15
16
|
export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, ThresholdAlertConfig } from "./stream/networkTypes";
|
|
16
17
|
export type { ForceDirectedGraphProps } from "./charts/network/ForceDirectedGraph";
|
|
17
18
|
export type { SankeyDiagramProps } from "./charts/network/SankeyDiagram";
|
|
19
|
+
export type { ProcessSankeyProps, ProcessSankeyTick } from "./charts/network/ProcessSankey";
|
|
18
20
|
export type { ChordDiagramProps } from "./charts/network/ChordDiagram";
|
|
19
21
|
export type { TreeDiagramProps } from "./charts/network/TreeDiagram";
|
|
20
22
|
export type { TreemapProps } from "./charts/network/Treemap";
|
|
@@ -22,3 +24,5 @@ export type { CirclePackProps } from "./charts/network/CirclePack";
|
|
|
22
24
|
export type { OrbitDiagramProps } from "./charts/network/OrbitDiagram";
|
|
23
25
|
export type { NetworkCustomChartProps } from "./charts/custom/NetworkCustomChart";
|
|
24
26
|
export type { NetworkCustomLayout, NetworkLayoutContext, NetworkLayoutResult, } from "./stream/networkCustomLayout";
|
|
27
|
+
export { validateProcessSankey, formatProcessSankeyIssue, } from "./charts/network/processSankey/algorithm";
|
|
28
|
+
export type { ProcessSankeyNode as ProcessSankeyValidatorNode, ProcessSankeyEdge as ProcessSankeyValidatorEdge, ProcessSankeyIssue, } from "./charts/network/processSankey/algorithm";
|
|
@@ -20,3 +20,5 @@ export type { RealtimeHeatmapProps } from "./charts/realtime/RealtimeHeatmap";
|
|
|
20
20
|
export type { ArrowOfTime, WindowMode, ThresholdType, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, AnnotationContext, CrosshairStyle, HoverAnnotationConfig, HoverData } from "./realtime/types";
|
|
21
21
|
export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType } from "./stream/types";
|
|
22
22
|
export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType } from "./stream/networkTypes";
|
|
23
|
+
export { useStreamStatus } from "./charts/shared/useStreamStatus";
|
|
24
|
+
export type { StreamStatus, StreamStatusOptions, StreamStatusResult, } from "./charts/shared/useStreamStatus";
|
|
@@ -29,3 +29,7 @@ export { RingBuffer } from "./realtime/RingBuffer";
|
|
|
29
29
|
export { IncrementalExtent } from "./realtime/IncrementalExtent";
|
|
30
30
|
export { normalizeTooltip, MultiPointTooltip } from "./Tooltip/Tooltip";
|
|
31
31
|
export { useReducedMotion, useHighContrast } from "./stream/useMediaPreferences";
|
|
32
|
+
export { sweepToAngles, valueToAngle, computeArcBoundingBox, } from "./charts/shared/radialGeometry";
|
|
33
|
+
export type { SweepAngles, ArcBoundingBox } from "./charts/shared/radialGeometry";
|
|
34
|
+
export { useStreamStatus } from "./charts/shared/useStreamStatus";
|
|
35
|
+
export type { StreamStatus, StreamStatusOptions, StreamStatusResult, } from "./charts/shared/useStreamStatus";
|
|
@@ -6,6 +6,7 @@ import StreamXYFrame from "./stream/StreamXYFrame";
|
|
|
6
6
|
export { StreamXYFrame };
|
|
7
7
|
export { LineChart } from "./charts/xy/LineChart";
|
|
8
8
|
export { AreaChart } from "./charts/xy/AreaChart";
|
|
9
|
+
export { DifferenceChart } from "./charts/xy/DifferenceChart";
|
|
9
10
|
export { StackedAreaChart } from "./charts/xy/StackedAreaChart";
|
|
10
11
|
export { Scatterplot } from "./charts/xy/Scatterplot";
|
|
11
12
|
export { ConnectedScatterplot } from "./charts/xy/ConnectedScatterplot";
|
|
@@ -21,6 +22,7 @@ export type { StreamXYFrameProps, StreamXYFrameHandle } from "./stream/types";
|
|
|
21
22
|
export type { CustomLayout, LayoutContext, LayoutResult } from "./stream/customLayout";
|
|
22
23
|
export type { LineChartProps } from "./charts/xy/LineChart";
|
|
23
24
|
export type { AreaChartProps } from "./charts/xy/AreaChart";
|
|
25
|
+
export type { DifferenceChartProps } from "./charts/xy/DifferenceChart";
|
|
24
26
|
export type { StackedAreaChartProps } from "./charts/xy/StackedAreaChart";
|
|
25
27
|
export type { ScatterplotProps } from "./charts/xy/Scatterplot";
|
|
26
28
|
export type { ConnectedScatterplotProps } from "./charts/xy/ConnectedScatterplot";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import StreamXYFrame from "./stream/StreamXYFrame";
|
|
2
2
|
import StreamOrdinalFrame from "./stream/StreamOrdinalFrame";
|
|
3
3
|
import StreamNetworkFrame from "./stream/StreamNetworkFrame";
|
|
4
|
-
import { Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GaugeChart, GroupedBarChart, FunnelChart, SwimlaneChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart } from "./charts";
|
|
4
|
+
import { Scatterplot, ConnectedScatterplot, LineChart, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GaugeChart, GroupedBarChart, FunnelChart, SwimlaneChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart } from "./charts";
|
|
5
5
|
import { LinkedCharts } from "./LinkedCharts";
|
|
6
6
|
import { ThemeProvider, useTheme } from "./ThemeProvider";
|
|
7
7
|
import { exportChart } from "./export/exportChart";
|
|
@@ -23,9 +23,9 @@ import { RealtimeTemporalHistogram, RealtimeHistogram } from "./charts/realtime/
|
|
|
23
23
|
import { RealtimeSwarmChart } from "./charts/realtime/RealtimeSwarmChart";
|
|
24
24
|
import { RealtimeWaterfallChart } from "./charts/realtime/RealtimeWaterfallChart";
|
|
25
25
|
import { RealtimeHeatmap } from "./charts/realtime/RealtimeHeatmap";
|
|
26
|
-
export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, PieChart, DonutChart, GaugeChart, FunnelChart, GroupedBarChart, SwimlaneChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap, createHatchPattern };
|
|
27
|
-
export { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, AreaChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, LikertChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, GaugeChartProps, GaugeThreshold, FunnelChartProps, GroupedBarChartProps, SwimlaneChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, MultiAxisLineChartProps, MultiAxisSeriesConfig, CandlestickChartProps, QuadrantsConfig, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode } from "./charts";
|
|
28
|
-
export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType, RuntimeMode, SceneNode, Changeset, StreamScales, StreamLayout, CurveType, CanvasRendererFn } from "./stream/types";
|
|
26
|
+
export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, PieChart, DonutChart, GaugeChart, FunnelChart, GroupedBarChart, SwimlaneChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap, createHatchPattern };
|
|
27
|
+
export { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, AreaChartProps, DifferenceChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, LikertChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, GaugeChartProps, GaugeThreshold, FunnelChartProps, GroupedBarChartProps, SwimlaneChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, ProcessSankeyProps, ProcessSankeyTick, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, MultiAxisLineChartProps, MultiAxisSeriesConfig, CandlestickChartProps, QuadrantsConfig, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode } from "./charts";
|
|
28
|
+
export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType, RuntimeMode, SceneNode, Changeset, StreamScales, StreamLayout, CurveType, CanvasRendererFn, XYFrameAxisConfig, BandConfig } from "./stream/types";
|
|
29
29
|
export type { StreamRendererFn } from "./stream/renderers/types";
|
|
30
30
|
export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./stream/ordinalTypes";
|
|
31
31
|
export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, ThresholdAlertConfig } from "./stream/networkTypes";
|
|
@@ -22,6 +22,7 @@ import type { StreamGeoFrameProps } from "../stream/geoTypes";
|
|
|
22
22
|
import { type ThemeInput } from "./themeResolver";
|
|
23
23
|
import { CHART_CONFIGS } from "./serverChartConfigs";
|
|
24
24
|
type FrameType = "xy" | "ordinal" | "network" | "geo";
|
|
25
|
+
type StaticFrameProps = (StreamXYFrameProps | StreamNetworkFrameProps | StreamOrdinalFrameProps | StreamGeoFrameProps) & ThemeAwareProps;
|
|
25
26
|
interface ThemeAwareProps {
|
|
26
27
|
theme?: ThemeInput;
|
|
27
28
|
showLegend?: boolean;
|
|
@@ -35,7 +36,7 @@ interface ThemeAwareProps {
|
|
|
35
36
|
/** Prefix for SVG element IDs — used by renderDashboard to avoid collisions */
|
|
36
37
|
_idPrefix?: string;
|
|
37
38
|
}
|
|
38
|
-
export declare function renderToStaticSVG(frameType: FrameType, props:
|
|
39
|
+
export declare function renderToStaticSVG(frameType: FrameType, props: StaticFrameProps): string;
|
|
39
40
|
export declare function renderXYToStaticSVG(props: StreamXYFrameProps & ThemeAwareProps): string;
|
|
40
41
|
export declare function renderOrdinalToStaticSVG(props: StreamOrdinalFrameProps & ThemeAwareProps): string;
|
|
41
42
|
export declare function renderNetworkToStaticSVG(props: StreamNetworkFrameProps & ThemeAwareProps): string;
|
|
@@ -9,6 +9,7 @@ export declare const CHART_CONFIGS: {
|
|
|
9
9
|
Sparkline: ChartConfig;
|
|
10
10
|
LineChart: ChartConfig;
|
|
11
11
|
AreaChart: ChartConfig;
|
|
12
|
+
DifferenceChart: ChartConfig;
|
|
12
13
|
StackedAreaChart: ChartConfig;
|
|
13
14
|
Scatterplot: ChartConfig;
|
|
14
15
|
CandlestickChart: ChartConfig;
|
|
@@ -26,6 +27,7 @@ export declare const CHART_CONFIGS: {
|
|
|
26
27
|
};
|
|
27
28
|
};
|
|
28
29
|
ConnectedScatterplot: ChartConfig;
|
|
30
|
+
QuadrantChart: ChartConfig;
|
|
29
31
|
Heatmap: ChartConfig;
|
|
30
32
|
BarChart: ChartConfig;
|
|
31
33
|
StackedBarChart: ChartConfig;
|
|
@@ -44,6 +46,7 @@ export declare const CHART_CONFIGS: {
|
|
|
44
46
|
GaugeChart: ChartConfig;
|
|
45
47
|
ForceDirectedGraph: ChartConfig;
|
|
46
48
|
SankeyDiagram: ChartConfig;
|
|
49
|
+
ProcessSankey: ChartConfig;
|
|
47
50
|
ChordDiagram: ChartConfig;
|
|
48
51
|
TreeDiagram: ChartConfig;
|
|
49
52
|
Treemap: ChartConfig;
|
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
* No CSS custom properties — everything is concrete for inline SVG.
|
|
7
7
|
*/
|
|
8
8
|
import type { SemioticTheme } from "../store/ThemeStore";
|
|
9
|
-
|
|
9
|
+
type PartialThemeObject = Omit<Partial<SemioticTheme>, "colors" | "typography" | "tooltip"> & {
|
|
10
|
+
colors?: Partial<SemioticTheme["colors"]>;
|
|
11
|
+
typography?: Partial<SemioticTheme["typography"]>;
|
|
12
|
+
tooltip?: Partial<NonNullable<SemioticTheme["tooltip"]>>;
|
|
13
|
+
};
|
|
14
|
+
export type ThemeInput = string | PartialThemeObject | undefined;
|
|
10
15
|
/**
|
|
11
16
|
* Resolve a theme input to a full SemioticTheme object.
|
|
12
17
|
*
|
|
@@ -37,3 +42,4 @@ export declare function themeStyles(theme: SemioticTheme): {
|
|
|
37
42
|
titleFontSize: number;
|
|
38
43
|
tickFontFamily: string;
|
|
39
44
|
};
|
|
45
|
+
export {};
|
|
@@ -90,6 +90,12 @@ export interface ThemeStoreState {
|
|
|
90
90
|
theme: SemioticTheme;
|
|
91
91
|
setTheme: (theme: ThemeStoreUpdate) => void;
|
|
92
92
|
}
|
|
93
|
-
export type
|
|
93
|
+
export type SemioticThemeUpdate = Omit<Partial<SemioticTheme>, "colors" | "typography" | "tooltip" | "accessibility"> & {
|
|
94
|
+
colors?: Partial<SemioticTheme["colors"]>;
|
|
95
|
+
typography?: Partial<SemioticTheme["typography"]>;
|
|
96
|
+
tooltip?: Partial<NonNullable<SemioticTheme["tooltip"]>>;
|
|
97
|
+
accessibility?: Partial<NonNullable<SemioticTheme["accessibility"]>>;
|
|
98
|
+
};
|
|
99
|
+
export type ThemeStoreUpdate = SemioticThemeUpdate | "light" | "dark" | "high-contrast";
|
|
94
100
|
export declare function resolveThemeUpdate(current: SemioticTheme, theme: ThemeStoreUpdate): SemioticTheme;
|
|
95
101
|
export declare const ThemeProvider: import("react").FC<import("./createStore").StoreProviderProps<ThemeStoreState>>, useThemeSelector: <R>(selector: (state: ThemeStoreState) => R) => R;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
/** Scene node type used by the accessible data table — accepts any frame's scene nodes */
|
|
3
3
|
type AnySceneNode = {
|
|
4
|
-
type
|
|
4
|
+
type?: string;
|
|
5
5
|
[key: string]: any;
|
|
6
6
|
};
|
|
7
7
|
declare const SR_ONLY_STYLE: React.CSSProperties;
|
|
8
8
|
/**
|
|
9
9
|
* Compute an aria-label describing the chart type and data shape from the scene graph.
|
|
10
10
|
*/
|
|
11
|
-
export declare function computeCanvasAriaLabel(scene: AnySceneNode[], chartType: string): string;
|
|
11
|
+
export declare function computeCanvasAriaLabel(scene: AnySceneNode[] | null | undefined, chartType: string): string;
|
|
12
12
|
/**
|
|
13
13
|
* Compute an aria-label for network charts from scene nodes and edges.
|
|
14
14
|
*/
|
|
@@ -47,6 +47,27 @@ export declare class GeoPipelineStore {
|
|
|
47
47
|
pushPoint(datum: Datum): void;
|
|
48
48
|
/** Push multiple streaming points */
|
|
49
49
|
pushMany(data: Datum[]): void;
|
|
50
|
+
/** Append a single line/flow record (coordinates pre-resolved). Lines
|
|
51
|
+
* aren't ring-buffered — the bounded set is the geography.
|
|
52
|
+
* Mutates `lineData` in place to avoid the O(n) GC churn of an
|
|
53
|
+
* array spread per push. The mutation is invisible to callers
|
|
54
|
+
* because `setLines` defensive-copies on entry and `getLines`
|
|
55
|
+
* defensive-copies on exit. */
|
|
56
|
+
pushLine(line: Datum): void;
|
|
57
|
+
/** Append multiple line/flow records in one pass. Same in-place
|
|
58
|
+
* mutation rationale as `pushLine`. Loops instead of
|
|
59
|
+
* `Array.prototype.push(...safe)` so very large batches don't
|
|
60
|
+
* blow the engine's argument-count limit (mirrors how `pushMany`
|
|
61
|
+
* for points iterates rather than spreads). */
|
|
62
|
+
pushManyLines(lines: Datum[]): void;
|
|
63
|
+
/** Remove line records by id. Requires `lineIdAccessor`. */
|
|
64
|
+
removeLine(id: string | string[]): Datum[];
|
|
65
|
+
/** Read the current line/flow set (post-push, pre-projection).
|
|
66
|
+
* Defensive copy — `pushLine` / `pushManyLines` mutate
|
|
67
|
+
* `lineData` in place, so returning by reference would let
|
|
68
|
+
* callers observe ingest-side mutations on a snapshot they
|
|
69
|
+
* thought was stable. */
|
|
70
|
+
getLines(): Datum[];
|
|
50
71
|
/**
|
|
51
72
|
* Remove points by ID. Requires pointIdAccessor to be configured.
|
|
52
73
|
* Returns the removed items.
|
|
@@ -4,6 +4,7 @@ import type { OrdinalScales } from "./ordinalTypes";
|
|
|
4
4
|
import type { AnnotationContext } from "../realtime/types";
|
|
5
5
|
import type { ReactNode } from "react";
|
|
6
6
|
import type { LegendGroup, GradientLegendConfig } from "../types/legendTypes";
|
|
7
|
+
import { type AxisExtentMode } from "../charts/shared/axisExtent";
|
|
7
8
|
interface OrdinalSVGOverlayProps {
|
|
8
9
|
width: number;
|
|
9
10
|
height: number;
|
|
@@ -26,6 +27,12 @@ interface OrdinalSVGOverlayProps {
|
|
|
26
27
|
rTickValues?: number[];
|
|
27
28
|
/** Align first tick label to start, last to end */
|
|
28
29
|
tickLabelEdgeAlign?: boolean;
|
|
30
|
+
/** Axis extent mode. "nice" (default) uses d3-scale's rounded
|
|
31
|
+
* tick generator. "exact" pins the first and last value-axis
|
|
32
|
+
* tick to the actual data min and max with equidistant
|
|
33
|
+
* intermediate ticks. Ignored for the categorical (o) axis;
|
|
34
|
+
* applies to the value (r) axis only. */
|
|
35
|
+
axisExtent?: AxisExtentMode;
|
|
29
36
|
showGrid?: boolean;
|
|
30
37
|
title?: string | ReactNode;
|
|
31
38
|
legend?: ReactNode | {
|
|
@@ -69,6 +76,7 @@ interface OrdinalSVGUnderlayProps {
|
|
|
69
76
|
showGrid?: boolean;
|
|
70
77
|
rFormat?: (d: number) => string;
|
|
71
78
|
rTickValues?: number[];
|
|
79
|
+
axisExtent?: AxisExtentMode;
|
|
72
80
|
}
|
|
73
81
|
export declare function OrdinalSVGUnderlay(props: OrdinalSVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
74
82
|
export declare function OrdinalSVGOverlay(props: OrdinalSVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
2
|
import { type Quadtree } from "d3-quadtree";
|
|
3
3
|
import { RingBuffer } from "../realtime/RingBuffer";
|
|
4
|
-
import type { Changeset, StreamChartType, StreamScales, StreamLayout, SceneNode, PointSceneNode, CandlestickStyle, Style, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors } from "./types";
|
|
4
|
+
import type { Changeset, StreamChartType, StreamScales, StreamLayout, SceneNode, PointSceneNode, CandlestickStyle, Style, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors, BandConfig } from "./types";
|
|
5
|
+
import { type CoercibleNumber } from "./accessorUtils";
|
|
5
6
|
import type { ActiveTransition } from "./pipelineTransitionUtils";
|
|
7
|
+
import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
|
|
6
8
|
import type { CustomLayout } from "./customLayout";
|
|
7
9
|
import type { MarginType } from "../types/marginType";
|
|
8
10
|
export interface PipelineConfig {
|
|
@@ -14,13 +16,18 @@ export interface PipelineConfig {
|
|
|
14
16
|
extentPadding: number;
|
|
15
17
|
/** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
|
|
16
18
|
scalePadding?: number;
|
|
19
|
+
/** When `"exact"`, the x and y axis domains pin to the literal data
|
|
20
|
+
* min/max — `extentPadding` is skipped so the first and last ticks
|
|
21
|
+
* read as the actual data bounds. Default `"nice"` keeps the existing
|
|
22
|
+
* padded domain so glyphs at the extremes don't clip the plot edge. */
|
|
23
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
17
24
|
maxCapacity?: number;
|
|
18
|
-
xAccessor?: string | ((d: Datum) =>
|
|
19
|
-
yAccessor?: string | ((d: Datum) =>
|
|
20
|
-
timeAccessor?: string | ((d: Datum) =>
|
|
21
|
-
valueAccessor?: string | ((d: Datum) =>
|
|
25
|
+
xAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
26
|
+
yAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
27
|
+
timeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
28
|
+
valueAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
22
29
|
colorAccessor?: string | ((d: Datum) => string);
|
|
23
|
-
sizeAccessor?: string | ((d: Datum) =>
|
|
30
|
+
sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
24
31
|
groupAccessor?: string | ((d: Datum) => string);
|
|
25
32
|
categoryAccessor?: string | ((d: Datum) => string);
|
|
26
33
|
lineDataAccessor?: string;
|
|
@@ -35,16 +42,17 @@ export interface PipelineConfig {
|
|
|
35
42
|
baseline?: "zero" | "wiggle" | "silhouette";
|
|
36
43
|
/** Stack order — see StreamXYFrameProps.stackOrder. */
|
|
37
44
|
stackOrder?: "key" | "insideOut" | "asc" | "desc";
|
|
38
|
-
openAccessor?: string | ((d: Datum) =>
|
|
39
|
-
highAccessor?: string | ((d: Datum) =>
|
|
40
|
-
lowAccessor?: string | ((d: Datum) =>
|
|
41
|
-
closeAccessor?: string | ((d: Datum) =>
|
|
45
|
+
openAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
46
|
+
highAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
47
|
+
lowAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
48
|
+
closeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
42
49
|
candlestickStyle?: CandlestickStyle;
|
|
43
50
|
/** Internal: set by PipelineStore when open/close accessors are both missing */
|
|
44
51
|
candlestickRangeMode?: boolean;
|
|
45
|
-
boundsAccessor?: string | ((d: Datum) =>
|
|
52
|
+
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
46
53
|
boundsStyle?: any;
|
|
47
|
-
y0Accessor?: string | ((d: Datum) =>
|
|
54
|
+
y0Accessor?: string | ((d: Datum) => CoercibleNumber);
|
|
55
|
+
band?: BandConfig | BandConfig[];
|
|
48
56
|
gradientFill?: {
|
|
49
57
|
topOpacity: number;
|
|
50
58
|
bottomOpacity: number;
|
|
@@ -144,8 +152,12 @@ export declare class PipelineStore {
|
|
|
144
152
|
private getCategory;
|
|
145
153
|
private getSize;
|
|
146
154
|
private getColor;
|
|
147
|
-
private getBounds;
|
|
148
155
|
private getY0;
|
|
156
|
+
/** Unified ribbon list — `boundsAccessor` + `band` both compose into
|
|
157
|
+
* this single array (see `resolveRibbons`). Read by the scene
|
|
158
|
+
* builders, y-extent expansion, and tooltip enrichment (which
|
|
159
|
+
* filters on `kind === "band"`). Empty when neither prop is set. */
|
|
160
|
+
resolvedRibbons: ResolvedRibbon[];
|
|
149
161
|
private getOpen;
|
|
150
162
|
private getHigh;
|
|
151
163
|
private getLow;
|
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
|
-
import type { StreamScales, MarginalGraphicsConfig } from "./types";
|
|
2
|
+
import type { StreamScales, MarginalGraphicsConfig, XYFrameAxisConfig } from "./types";
|
|
3
3
|
import type { AnnotationContext } from "../realtime/types";
|
|
4
4
|
import type { ReactNode } from "react";
|
|
5
5
|
import type { LegendGroup, GradientLegendConfig } from "../types/legendTypes";
|
|
6
|
-
export
|
|
7
|
-
orient: "left" | "right" | "top" | "bottom";
|
|
8
|
-
label?: string;
|
|
9
|
-
ticks?: number;
|
|
10
|
-
tickFormat?: (d: any, index?: number, allTicks?: number[]) => string | ReactNode;
|
|
11
|
-
baseline?: boolean | "under";
|
|
12
|
-
jaggedBase?: boolean;
|
|
13
|
-
/** Grid line stroke style: "dashed" (6,4), "dotted" (2,4), or a custom strokeDasharray string. Applied to grid lines extending from ticks across the chart area. */
|
|
14
|
-
gridStyle?: "dashed" | "dotted" | string;
|
|
15
|
-
/** Always include the domain max as a tick, even if d3 omits it. */
|
|
16
|
-
includeMax?: boolean;
|
|
17
|
-
/** Auto-rotate labels 45° when horizontal spacing is too tight. */
|
|
18
|
-
autoRotate?: boolean;
|
|
19
|
-
/** Highlight ticks at time boundaries (new month, year, etc.) with semibold text.
|
|
20
|
-
* `true` auto-detects Date boundaries. A function receives (value, index) and returns true for landmark ticks. */
|
|
21
|
-
landmarkTicks?: boolean | ((value: any, index: number) => boolean);
|
|
22
|
-
}
|
|
6
|
+
export type AxisConfig = XYFrameAxisConfig;
|
|
23
7
|
interface SVGOverlayProps {
|
|
24
8
|
width: number;
|
|
25
9
|
height: number;
|
|
@@ -40,6 +24,12 @@ interface SVGOverlayProps {
|
|
|
40
24
|
yLabelRight?: string;
|
|
41
25
|
xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
|
|
42
26
|
yFormat?: (d: number | Date | string) => string | ReactNode;
|
|
27
|
+
/** Axis extent mode. "nice" (default) uses d3-scale's rounded
|
|
28
|
+
* tick generator — labels stay round but the first/last tick
|
|
29
|
+
* may sit inside the data domain. "exact" pins the first and
|
|
30
|
+
* last tick to the actual data min and max with equidistant
|
|
31
|
+
* intermediate ticks. Applies to both x and y axes. */
|
|
32
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
43
33
|
showGrid?: boolean;
|
|
44
34
|
title?: string | ReactNode;
|
|
45
35
|
legend?: ReactNode | {
|
|
@@ -116,6 +106,7 @@ interface SVGUnderlayProps {
|
|
|
116
106
|
showGrid?: boolean;
|
|
117
107
|
xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
|
|
118
108
|
yFormat?: (d: number | Date | string) => string | ReactNode;
|
|
109
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
119
110
|
}
|
|
120
111
|
export declare function SVGUnderlay(props: SVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
121
112
|
export declare function SVGOverlay(props: SVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* the variable in the dependency array so the reference changes when behavior changes.
|
|
13
13
|
*/
|
|
14
14
|
export declare function accessorsEquivalent(a: string | ((...args: any[]) => any) | undefined, b: string | ((...args: any[]) => any) | undefined): boolean;
|
|
15
|
-
export
|
|
15
|
+
export type CoercibleNumber = number | Date | string;
|
|
16
|
+
export declare function resolveAccessor<T extends Record<string, unknown>>(accessor: string | ((d: T) => CoercibleNumber) | undefined, fallback: string): (d: T) => number;
|
|
16
17
|
export declare function resolveRawAccessor<T extends Record<string, unknown>>(accessor: string | ((d: T) => unknown) | undefined, fallback: string): (d: T) => unknown;
|
|
17
18
|
export declare function resolveStringAccessor<T extends Record<string, unknown>>(accessor: string | ((d: T) => string) | undefined, fallback?: string): ((d: T) => string) | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annotation-context accessors must be string keys — SVG overlay
|
|
3
|
+
* rules look up coordinates with `data[xAccessor]`. When a chart's
|
|
4
|
+
* user accessor is a function, we bake the resolved value under a
|
|
5
|
+
* synthetic stable key on each annotation datum and forward the
|
|
6
|
+
* synthetic key as the annotation's xAccessor / yAccessor.
|
|
7
|
+
*
|
|
8
|
+
* Originally inline in `StreamXYFrame.tsx`; lifted here so
|
|
9
|
+
* `StreamOrdinalFrame` (and any future frame with the same need)
|
|
10
|
+
* can share the same plumbing rather than re-implementing it.
|
|
11
|
+
*/
|
|
12
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
13
|
+
export interface ResolvedAnnotationAccessor {
|
|
14
|
+
/** String key the annotation context will read on each datum. */
|
|
15
|
+
key: string | undefined;
|
|
16
|
+
/** Accessor function when the user supplied one (synthetic key
|
|
17
|
+
* gets baked from this); `null` when the user supplied a string
|
|
18
|
+
* or nothing. */
|
|
19
|
+
fn: ((d: Datum) => any) | null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve an accessor pair to the (key, fn) shape the annotation
|
|
23
|
+
* pipeline needs. Probes the primary accessor first, then the
|
|
24
|
+
* fallback (e.g. `valueAccessor` when no `yAccessor` was supplied).
|
|
25
|
+
*
|
|
26
|
+
* - String accessor → use it as the key, no enrichment needed.
|
|
27
|
+
* - Function accessor → use the synthetic resolved-key, run the fn
|
|
28
|
+
* per-datum to bake the value.
|
|
29
|
+
* - Otherwise undefined.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveAnnotationAccessor(primary: unknown, fallback: unknown, resolvedKey: string, fallbackKey: string): ResolvedAnnotationAccessor;
|
|
32
|
+
/**
|
|
33
|
+
* Build an `enrichAnnotationData(rawData)` function that walks the
|
|
34
|
+
* data array and bakes synthetic-key values for any function
|
|
35
|
+
* accessors. Returns the original array reference unchanged when no
|
|
36
|
+
* enrichment is needed (no annotations, no function accessors, or
|
|
37
|
+
* synthetic keys already present).
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildEnrichAnnotationData(xResolved: ResolvedAnnotationAccessor, yResolved: ResolvedAnnotationAccessor, hasAnnotations: boolean): (rawData: Datum[] | undefined) => Datum[] | undefined;
|
|
@@ -95,6 +95,8 @@ export interface GeoPipelineConfig {
|
|
|
95
95
|
introAnimation?: boolean;
|
|
96
96
|
annotations?: Datum[];
|
|
97
97
|
pointIdAccessor?: string | ((d: Datum) => string);
|
|
98
|
+
/** ID accessor on line data — required for `removeLine` by id. */
|
|
99
|
+
lineIdAccessor?: string | ((d: Datum) => string);
|
|
98
100
|
}
|
|
99
101
|
export interface StreamGeoFrameProps<T = Datum> {
|
|
100
102
|
projection: ProjectionProp;
|
|
@@ -108,6 +110,8 @@ export interface StreamGeoFrameProps<T = Datum> {
|
|
|
108
110
|
yAccessor?: string | ((d: T) => number);
|
|
109
111
|
lineDataAccessor?: string | ((d: T) => Datum[]);
|
|
110
112
|
pointIdAccessor?: string | ((d: T) => string);
|
|
113
|
+
/** ID accessor on line data — required for ref `removeLine` by id. */
|
|
114
|
+
lineIdAccessor?: string | ((d: T) => string);
|
|
111
115
|
lineType?: "geo" | "line";
|
|
112
116
|
/** Flow rendering style: "basic" (straight/great-circle), "offset" (bidirectional offset), "arc" (curved arcs) @default "basic" */
|
|
113
117
|
flowStyle?: "basic" | "offset" | "arc";
|
|
@@ -212,6 +216,14 @@ export interface StreamGeoFrameHandle {
|
|
|
212
216
|
pushMany(data: Datum[]): void;
|
|
213
217
|
/** Remove points by ID. Requires pointIdAccessor. */
|
|
214
218
|
removePoint(id: string | string[]): Datum[];
|
|
219
|
+
/** Append a single line/flow record. Coordinates pre-resolved per `lineDataAccessor`. */
|
|
220
|
+
pushLine(line: Datum): void;
|
|
221
|
+
/** Append multiple line/flow records in one batch. */
|
|
222
|
+
pushManyLines(lines: Datum[]): void;
|
|
223
|
+
/** Remove lines by ID. Requires `lineIdAccessor`. */
|
|
224
|
+
removeLine(id: string | string[]): Datum[];
|
|
225
|
+
/** Read the current line/flow set. */
|
|
226
|
+
getLines(): Datum[];
|
|
215
227
|
clear(): void;
|
|
216
228
|
getProjection(): GeoProjection | null;
|
|
217
229
|
getGeoPath(): GeoPath<any, GeoPermissibleObjects> | null;
|
|
@@ -5,7 +5,7 @@ import type { NetworkLayoutPlugin } from "../networkTypes";
|
|
|
5
5
|
* Uses d3-hierarchy for all layout computations. This plugin is `hierarchical: true`,
|
|
6
6
|
* meaning the input data is a single root node object rather than flat nodes+edges arrays.
|
|
7
7
|
*
|
|
8
|
-
* The hierarchy root is passed via `
|
|
8
|
+
* The hierarchy root is passed via `config.__hierarchyRoot`, set by the store
|
|
9
9
|
* before calling computeLayout. The plugin builds the d3 hierarchy internally, runs the
|
|
10
10
|
* appropriate layout algorithm, and populates the nodes/edges arrays.
|
|
11
11
|
*
|
|
@@ -262,9 +262,20 @@ export interface NetworkLineEdge {
|
|
|
262
262
|
export interface NetworkBezierEdge {
|
|
263
263
|
type: "bezier";
|
|
264
264
|
pathD: string;
|
|
265
|
+
/** When false, the hit tester skips this edge. Used for
|
|
266
|
+
* decorative scene-edges like ProcessSankey's gradient stubs —
|
|
267
|
+
* they paint visually but shouldn't intercept hover. */
|
|
268
|
+
interactive?: boolean;
|
|
265
269
|
bezierCache?: BezierCache;
|
|
266
270
|
style: Style;
|
|
267
271
|
datum: SceneDatum;
|
|
272
|
+
/** Internal gradient used by circular sankey stub bands. */
|
|
273
|
+
_gradient?: {
|
|
274
|
+
x0: number;
|
|
275
|
+
x1: number;
|
|
276
|
+
from: number;
|
|
277
|
+
to: number;
|
|
278
|
+
};
|
|
268
279
|
_pulseIntensity?: number;
|
|
269
280
|
_pulseColor?: string;
|
|
270
281
|
/** Lazily-built Path2D for hit testing; invalidated when pathD changes. */
|
|
@@ -21,8 +21,22 @@ export interface WedgeSceneNode {
|
|
|
21
21
|
startAngle: number;
|
|
22
22
|
/** End angle in radians, canvas convention */
|
|
23
23
|
endAngle: number;
|
|
24
|
-
/** Corner radius for rounded wedge arcs (d3-shape arc.cornerRadius)
|
|
24
|
+
/** Corner radius for rounded wedge arcs (d3-shape arc.cornerRadius).
|
|
25
|
+
* When set on its own, rounds ALL FOUR corners (the d3-shape default).
|
|
26
|
+
* Pair with `roundedEnds` to round only the gauge's outer endpoints —
|
|
27
|
+
* the swimlane analogue for radial sectors: first wedge's start side
|
|
28
|
+
* + last wedge's end side rounded, internal zone seams stay square. */
|
|
25
29
|
cornerRadius?: number;
|
|
30
|
+
/** Selective per-end rounding. When omitted, `cornerRadius` rounds all
|
|
31
|
+
* four corners. When provided, `cornerRadius` rounds ONLY the sides
|
|
32
|
+
* marked `true` — `{ start: true }` rounds the wedge's startAngle
|
|
33
|
+
* side (both inner and outer corners at that angle), `{ end: true }`
|
|
34
|
+
* rounds the endAngle side. The gauge scene builder uses this to
|
|
35
|
+
* paint outer endpoints rounded but internal zone seams square. */
|
|
36
|
+
roundedEnds?: {
|
|
37
|
+
start?: boolean;
|
|
38
|
+
end?: boolean;
|
|
39
|
+
};
|
|
26
40
|
style: Style;
|
|
27
41
|
datum: SceneDatum;
|
|
28
42
|
category?: string;
|
|
@@ -156,6 +170,11 @@ export interface OrdinalPipelineConfig {
|
|
|
156
170
|
windowSize: number;
|
|
157
171
|
windowMode: WindowMode;
|
|
158
172
|
extentPadding: number;
|
|
173
|
+
/** When `"exact"`, the value-axis domain is pinned to the literal data
|
|
174
|
+
* min/max — `extentPadding` is skipped so the first and last ticks
|
|
175
|
+
* land on the actual data bounds. Default `"nice"` keeps the existing
|
|
176
|
+
* padded domain so symbols at the extremes don't clip the plot edge. */
|
|
177
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
159
178
|
projection: "vertical" | "horizontal" | "radial";
|
|
160
179
|
categoryAccessor?: string | ((d: Datum) => string);
|
|
161
180
|
valueAccessor?: string | ((d: Datum) => number) | Array<string | ((d: Datum) => number)>;
|
|
@@ -315,6 +334,13 @@ export interface StreamOrdinalFrameProps<T = Datum> {
|
|
|
315
334
|
rTickValues?: number[];
|
|
316
335
|
/** Align first tick label to start and last tick label to end. Default false. */
|
|
317
336
|
tickLabelEdgeAlign?: boolean;
|
|
337
|
+
/** Axis extent mode for the value (r) axis. `"nice"` (default) uses
|
|
338
|
+
* d3-scale's rounded tick generator. `"exact"` pins the first and
|
|
339
|
+
* last tick to the actual data min and max with equidistant
|
|
340
|
+
* intermediate ticks. The categorical (o) axis is unaffected since
|
|
341
|
+
* it's a band scale, not a continuous one. Ignored when explicit
|
|
342
|
+
* `rTickValues` are provided — caller has hand-picked positions. */
|
|
343
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
318
344
|
pieceStyle?: (d: Datum, category?: string) => Style;
|
|
319
345
|
summaryStyle?: (d: Datum, category?: string) => Style;
|
|
320
346
|
colorScheme?: string | string[];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-corner radius utilities shared between the canvas (`barCanvasRenderer`)
|
|
3
|
+
* and SVG (`SceneToSVG`) paint paths.
|
|
4
|
+
*
|
|
5
|
+
* Both paths previously carried the same `hasAnyCornerRadius` predicate
|
|
6
|
+
* and the same `min(radius, w/2, h/2)` clamp inline. Splitting them by
|
|
7
|
+
* renderer left two near-identical implementations that drifted in
|
|
8
|
+
* comments more than once; centralizing here keeps the swimlane rounding
|
|
9
|
+
* contract — and any future per-corner shape (cards, tab corners,
|
|
10
|
+
* partial-stack rounding) — in one place.
|
|
11
|
+
*
|
|
12
|
+
* The actual path-tracing primitives (canvas `arcTo` vs SVG `A`) stay in
|
|
13
|
+
* each renderer because their output formats differ — this module owns
|
|
14
|
+
* the geometry, the renderers own the drawing language.
|
|
15
|
+
*/
|
|
16
|
+
import type { RectSceneNode } from "../types";
|
|
17
|
+
/** True when at least one corner has a positive radius. */
|
|
18
|
+
export declare function hasAnyCornerRadius(c: NonNullable<RectSceneNode["cornerRadii"]>): boolean;
|
|
19
|
+
export interface ClampedCornerRadii {
|
|
20
|
+
tl: number;
|
|
21
|
+
tr: number;
|
|
22
|
+
br: number;
|
|
23
|
+
bl: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Read each corner's radius and clamp to `[0, min(w, h) / 2]` so a
|
|
27
|
+
* corner never overdraws past the rect's center on thin lanes AND a
|
|
28
|
+
* negative input never leaks into the `moveTo` / `lineTo` math (where
|
|
29
|
+
* a negative radius would offset the start point into invalid space,
|
|
30
|
+
* producing visibly bent or escaping paths even though the `arcTo`
|
|
31
|
+
* is gated on `> 0`). Missing corners collapse to 0 (square).
|
|
32
|
+
*/
|
|
33
|
+
export declare function clampCornerRadii(node: RectSceneNode): ClampedCornerRadii;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annular sector path builder with selective per-end corner rounding.
|
|
3
|
+
*
|
|
4
|
+
* d3-shape's `arc().cornerRadius()` rounds ALL FOUR corners of an
|
|
5
|
+
* annular sector uniformly — there's no built-in per-corner control.
|
|
6
|
+
* For gauges with multiple zones we want the gauge's OUTER endpoints
|
|
7
|
+
* rounded (the swimlane convention applied radially) but internal zone
|
|
8
|
+
* seams to stay square. This helper builds the path manually so each
|
|
9
|
+
* end can be opted in independently.
|
|
10
|
+
*
|
|
11
|
+
* The geometry mirrors d3's algorithm: a corner circle of radius `cr`
|
|
12
|
+
* is inscribed tangent to both walls (the outer/inner arc and the
|
|
13
|
+
* radial line at the relevant angle). The angular setback from the
|
|
14
|
+
* radial line is `asin(cr / (R ± cr))` — `R - cr` for outer corners
|
|
15
|
+
* (corner centers sit `cr` inward of the outer arc), `R + cr` for
|
|
16
|
+
* inner corners.
|
|
17
|
+
*
|
|
18
|
+
* Returned shape is an SVG path `d` attribute, equivalently consumable
|
|
19
|
+
* by Path2D in canvas. Coordinates are wedge-local (centered at
|
|
20
|
+
* origin); the renderer translates to `(cx, cy)`.
|
|
21
|
+
*
|
|
22
|
+
* Inputs use the **canvas angle convention** (0 = 3 o'clock, positive
|
|
23
|
+
* clockwise) — same as `WedgeSceneNode.startAngle/endAngle`. d3-shape
|
|
24
|
+
* uses 0 = 12 o'clock, so callers that pre-rotated by `+π/2` to call
|
|
25
|
+
* d3-arc should NOT pre-rotate when calling this helper.
|
|
26
|
+
*/
|
|
27
|
+
export interface AnnularPathOptions {
|
|
28
|
+
innerRadius: number;
|
|
29
|
+
outerRadius: number;
|
|
30
|
+
startAngle: number;
|
|
31
|
+
endAngle: number;
|
|
32
|
+
cornerRadius?: number;
|
|
33
|
+
/** Round the side at startAngle (both inner + outer corners there). */
|
|
34
|
+
roundStart?: boolean;
|
|
35
|
+
/** Round the side at endAngle (both inner + outer corners there). */
|
|
36
|
+
roundEnd?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the SVG path for an annular sector with per-end rounding.
|
|
40
|
+
*
|
|
41
|
+
* When `cornerRadius` is 0 or unset, OR neither `roundStart` nor
|
|
42
|
+
* `roundEnd` is true, the result is a plain unrounded sector — same
|
|
43
|
+
* shape `drawWedgeManual` would emit. When both ends are rounded with
|
|
44
|
+
* a single cornerRadius value, the output matches what d3-arc would
|
|
45
|
+
* produce. The novel case is mixed rounding: e.g. `roundStart: true,
|
|
46
|
+
* roundEnd: false` rounds only the gauge's leading edge.
|
|
47
|
+
*
|
|
48
|
+
* Defensive clamps:
|
|
49
|
+
* - `cornerRadius` is clamped to `(outerRadius - innerRadius) / 2`
|
|
50
|
+
* so the corner circles can't cross the ring's centerline (which
|
|
51
|
+
* would invert the inner radial line).
|
|
52
|
+
* - If the angular sweep is too small to fit two corner radii
|
|
53
|
+
* end-to-end on the requested side, that side falls back to
|
|
54
|
+
* unrounded so the path stays well-formed.
|
|
55
|
+
*/
|
|
56
|
+
export declare function annularSectorPath(opts: AnnularPathOptions): string;
|