semiotic 3.4.2 → 3.5.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.
Files changed (163) hide show
  1. package/CLAUDE.md +114 -9
  2. package/README.md +45 -4
  3. package/ai/behaviorContracts.cjs +311 -0
  4. package/ai/chartSuggestions.cjs +291 -0
  5. package/ai/cli.js +255 -30
  6. package/ai/componentMetadata.cjs +107 -0
  7. package/ai/dist/mcp-server.js +907 -227
  8. package/ai/schema.json +3954 -2537
  9. package/ai/system-prompt.md +23 -4
  10. package/dist/components/LinkedCharts.d.ts +5 -1
  11. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  12. package/dist/components/charts/custom/NetworkCustomChart.d.ts +64 -0
  13. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +71 -0
  14. package/dist/components/charts/custom/XYCustomChart.d.ts +59 -0
  15. package/dist/components/charts/geo/ChoroplethMap.d.ts +93 -2
  16. package/dist/components/charts/geo/DistanceCartogram.d.ts +51 -4
  17. package/dist/components/charts/geo/FlowMap.d.ts +55 -0
  18. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +53 -0
  19. package/dist/components/charts/index.d.ts +6 -0
  20. package/dist/components/charts/network/ChordDiagram.d.ts +34 -2
  21. package/dist/components/charts/network/CirclePack.d.ts +36 -1
  22. package/dist/components/charts/network/ForceDirectedGraph.d.ts +130 -2
  23. package/dist/components/charts/network/OrbitDiagram.d.ts +37 -0
  24. package/dist/components/charts/network/SankeyDiagram.d.ts +51 -2
  25. package/dist/components/charts/network/TreeDiagram.d.ts +37 -2
  26. package/dist/components/charts/network/Treemap.d.ts +36 -2
  27. package/dist/components/charts/ordinal/BarChart.d.ts +113 -1
  28. package/dist/components/charts/ordinal/BoxPlot.d.ts +33 -0
  29. package/dist/components/charts/ordinal/DonutChart.d.ts +36 -0
  30. package/dist/components/charts/ordinal/DotPlot.d.ts +33 -0
  31. package/dist/components/charts/ordinal/FunnelChart.d.ts +40 -0
  32. package/dist/components/charts/ordinal/GaugeChart.d.ts +45 -0
  33. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +40 -0
  34. package/dist/components/charts/ordinal/Histogram.d.ts +97 -0
  35. package/dist/components/charts/ordinal/LikertChart.d.ts +44 -0
  36. package/dist/components/charts/ordinal/PieChart.d.ts +90 -1
  37. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +29 -0
  38. package/dist/components/charts/ordinal/StackedBarChart.d.ts +40 -0
  39. package/dist/components/charts/ordinal/SwarmPlot.d.ts +38 -0
  40. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +62 -0
  41. package/dist/components/charts/ordinal/ViolinPlot.d.ts +34 -0
  42. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +22 -4
  43. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +5 -2
  44. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +24 -3
  45. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +12 -0
  46. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +14 -0
  47. package/dist/components/charts/realtime/defaultRealtimeTooltip.d.ts +67 -0
  48. package/dist/components/charts/realtime/resolveWindowSize.d.ts +26 -0
  49. package/dist/components/charts/shared/chartSpecs.d.ts +91 -0
  50. package/dist/components/charts/shared/colorPalettes.d.ts +62 -0
  51. package/dist/components/charts/shared/colorUtils.d.ts +9 -10
  52. package/dist/components/charts/shared/numberFormat.d.ts +58 -0
  53. package/dist/components/charts/shared/sparseArray.d.ts +27 -0
  54. package/dist/components/charts/shared/streamPropsHelpers.d.ts +113 -0
  55. package/dist/components/charts/shared/timeFormat.d.ts +60 -0
  56. package/dist/components/charts/shared/useChartSetup.d.ts +8 -0
  57. package/dist/components/charts/shared/useCustomChartSetup.d.ts +84 -0
  58. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +28 -0
  59. package/dist/components/charts/shared/useOrdinalStreaming.d.ts +6 -19
  60. package/dist/components/charts/shared/useStreamingLegend.d.ts +27 -11
  61. package/dist/components/charts/shared/validateProps.d.ts +2 -2
  62. package/dist/components/charts/shared/validationMap.d.ts +2 -1
  63. package/dist/components/charts/shared/withChartWrapper.d.ts +13 -4
  64. package/dist/components/charts/xy/AreaChart.d.ts +44 -1
  65. package/dist/components/charts/xy/BubbleChart.d.ts +4 -0
  66. package/dist/components/charts/xy/CandlestickChart.d.ts +37 -6
  67. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +28 -0
  68. package/dist/components/charts/xy/Heatmap.d.ts +4 -0
  69. package/dist/components/charts/xy/LineChart.d.ts +12 -0
  70. package/dist/components/charts/xy/MinimapChart.d.ts +58 -0
  71. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +27 -0
  72. package/dist/components/charts/xy/QuadrantChart.d.ts +21 -0
  73. package/dist/components/charts/xy/Scatterplot.d.ts +38 -2
  74. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +16 -0
  75. package/dist/components/charts/xy/StackedAreaChart.d.ts +61 -1
  76. package/dist/components/realtime/types.d.ts +2 -4
  77. package/dist/components/recipes/bullet.d.ts +86 -0
  78. package/dist/components/recipes/calendar.d.ts +43 -0
  79. package/dist/components/recipes/dagre.d.ts +56 -0
  80. package/dist/components/recipes/flextree.d.ts +55 -0
  81. package/dist/components/recipes/marimekko.d.ts +55 -0
  82. package/dist/components/recipes/parallelCoordinates.d.ts +97 -0
  83. package/dist/components/recipes/recipeUtils.d.ts +27 -0
  84. package/dist/components/recipes/waffle.d.ts +46 -0
  85. package/dist/components/semiotic-ai.d.ts +4 -0
  86. package/dist/components/semiotic-network.d.ts +3 -0
  87. package/dist/components/semiotic-ordinal.d.ts +3 -0
  88. package/dist/components/semiotic-recipes.d.ts +24 -0
  89. package/dist/components/semiotic-xy.d.ts +3 -0
  90. package/dist/components/semiotic.d.ts +2 -2
  91. package/dist/components/server/renderToStaticSVG.d.ts +8 -2
  92. package/dist/components/server/serverChartConfigs.d.ts +47 -1
  93. package/dist/components/server/staticAnnotations.d.ts +6 -0
  94. package/dist/components/store/ObservationStore.d.ts +1 -3
  95. package/dist/components/store/SelectionStore.d.ts +1 -3
  96. package/dist/components/store/ThemeStore.d.ts +4 -4
  97. package/dist/components/store/TooltipStore.d.ts +1 -3
  98. package/dist/components/store/createStore.d.ts +4 -2
  99. package/dist/components/stream/CanvasHitTester.d.ts +10 -8
  100. package/dist/components/stream/DataSourceAdapter.d.ts +9 -0
  101. package/dist/components/stream/GeoPipelineStore.d.ts +9 -0
  102. package/dist/components/stream/GeoTileRenderer.d.ts +14 -0
  103. package/dist/components/stream/NetworkPipelineStore.d.ts +25 -0
  104. package/dist/components/stream/OrdinalPipelineStore.d.ts +12 -0
  105. package/dist/components/stream/PipelineStore.d.ts +51 -0
  106. package/dist/components/stream/SVGOverlay.d.ts +12 -0
  107. package/dist/components/stream/SceneGraph.d.ts +15 -1
  108. package/dist/components/stream/SceneToSVG.d.ts +1 -1
  109. package/dist/components/stream/categoryDomain.d.ts +4 -0
  110. package/dist/components/stream/composeOverlays.d.ts +15 -0
  111. package/dist/components/stream/customLayout.d.ts +76 -0
  112. package/dist/components/stream/customLayoutPalette.d.ts +29 -0
  113. package/dist/components/stream/geoTypes.d.ts +13 -0
  114. package/dist/components/stream/hoverUtils.d.ts +4 -10
  115. package/dist/components/stream/networkCustomLayout.d.ts +67 -0
  116. package/dist/components/stream/networkTypes.d.ts +45 -0
  117. package/dist/components/stream/ordinalCustomLayout.d.ts +84 -0
  118. package/dist/components/stream/ordinalTypes.d.ts +35 -1
  119. package/dist/components/stream/renderers/barFunnelCanvasRenderer.d.ts +9 -1
  120. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +92 -0
  121. package/dist/components/stream/sampleCurvePath.d.ts +9 -0
  122. package/dist/components/stream/types.d.ts +44 -1
  123. package/dist/components/stream/useHydration.d.ts +89 -0
  124. package/dist/components/stream/useStableShallow.d.ts +1 -0
  125. package/dist/components/stream/xySceneBuilders/types.d.ts +4 -0
  126. package/dist/geo.min.js +2 -1
  127. package/dist/geo.module.min.js +2 -1
  128. package/dist/network.min.js +2 -1
  129. package/dist/network.module.min.js +2 -1
  130. package/dist/ordinal.min.js +2 -1
  131. package/dist/ordinal.module.min.js +2 -1
  132. package/dist/realtime.min.js +2 -1
  133. package/dist/realtime.module.min.js +2 -1
  134. package/dist/semiotic-ai.d.ts +69 -65
  135. package/dist/semiotic-ai.min.js +2 -1
  136. package/dist/semiotic-ai.module.min.js +2 -1
  137. package/dist/semiotic-data.d.ts +4 -4
  138. package/dist/semiotic-geo.d.ts +15 -15
  139. package/dist/semiotic-network.d.ts +19 -16
  140. package/dist/semiotic-ordinal.d.ts +31 -28
  141. package/dist/semiotic-realtime.d.ts +17 -17
  142. package/dist/semiotic-recipes.d.ts +24 -0
  143. package/dist/semiotic-recipes.min.js +1 -0
  144. package/dist/semiotic-recipes.module.min.js +1 -0
  145. package/dist/semiotic-server.d.ts +6 -6
  146. package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +1 -0
  147. package/dist/semiotic-themes.d.ts +3 -3
  148. package/dist/semiotic-themes.min.js +2 -1
  149. package/dist/semiotic-themes.module.min.js +2 -1
  150. package/dist/semiotic-utils.d.ts +23 -23
  151. package/dist/semiotic-utils.min.js +2 -1
  152. package/dist/semiotic-utils.module.min.js +2 -1
  153. package/dist/semiotic-xy.d.ts +27 -24
  154. package/dist/semiotic.d.ts +63 -63
  155. package/dist/semiotic.min.js +2 -1
  156. package/dist/semiotic.module.min.js +2 -1
  157. package/dist/server.min.js +1 -1
  158. package/dist/server.module.min.js +1 -1
  159. package/dist/test-utils/canvasMock.d.ts +34 -5
  160. package/dist/xy.min.js +2 -1
  161. package/dist/xy.module.min.js +2 -1
  162. package/package.json +38 -17
  163. package/dist/semiotic-statisticalOverlays-Ckd_jM8z.js +0 -1
@@ -2,7 +2,7 @@
2
2
  * Semiotic data transform utilities.
3
3
  * Import from "semiotic/data"
4
4
  */
5
- export { bin, rollup, groupBy, pivot } from "./data/transforms";
6
- export { fromVegaLite } from "./data/fromVegaLite";
7
- export type { VegaLiteSpec, VegaLiteEncoding } from "./data/fromVegaLite";
8
- export { mergeData } from "./geo/mergeData";
5
+ export { bin, rollup, groupBy, pivot } from "./components/data/transforms";
6
+ export { fromVegaLite } from "./components/data/fromVegaLite";
7
+ export type { VegaLiteSpec, VegaLiteEncoding } from "./components/data/fromVegaLite";
8
+ export { mergeData } from "./components/geo/mergeData";
@@ -2,19 +2,19 @@
2
2
  * Geo entry point — geographic visualization: choropleth, proportional symbol, flow maps.
3
3
  * Import from "semiotic/geo" instead of the full bundle to reduce bundle size.
4
4
  */
5
- import StreamGeoFrame from "./stream/StreamGeoFrame";
5
+ import StreamGeoFrame from "./components/stream/StreamGeoFrame";
6
6
  export { StreamGeoFrame };
7
- export { ChoroplethMap } from "./charts/geo/ChoroplethMap";
8
- export { ProportionalSymbolMap } from "./charts/geo/ProportionalSymbolMap";
9
- export { FlowMap } from "./charts/geo/FlowMap";
10
- export { DistanceCartogram } from "./charts/geo/DistanceCartogram";
11
- export type { StreamGeoFrameProps, StreamGeoFrameHandle, GeoAreaSceneNode, GeoSceneNode, GeoScales, ProjectionProp, ProjectionName, GraticuleConfig, DistanceCartogramConfig, GeoPipelineConfig } from "./stream/geoTypes";
12
- export type { GeoParticleStyle } from "./stream/GeoParticlePool";
13
- export { mergeData } from "./geo/mergeData";
14
- export { resolveReferenceGeography } from "./geo/referenceGeography";
15
- export type { ReferenceGeography } from "./geo/referenceGeography";
16
- export type { AreasProp } from "./geo/useReferenceAreas";
17
- export type { ChoroplethMapProps } from "./charts/geo/ChoroplethMap";
18
- export type { ProportionalSymbolMapProps } from "./charts/geo/ProportionalSymbolMap";
19
- export type { FlowMapProps } from "./charts/geo/FlowMap";
20
- export type { DistanceCartogramProps } from "./charts/geo/DistanceCartogram";
7
+ export { ChoroplethMap } from "./components/charts/geo/ChoroplethMap";
8
+ export { ProportionalSymbolMap } from "./components/charts/geo/ProportionalSymbolMap";
9
+ export { FlowMap } from "./components/charts/geo/FlowMap";
10
+ export { DistanceCartogram } from "./components/charts/geo/DistanceCartogram";
11
+ export type { StreamGeoFrameProps, StreamGeoFrameHandle, GeoAreaSceneNode, GeoSceneNode, GeoScales, ProjectionProp, ProjectionName, GraticuleConfig, DistanceCartogramConfig, GeoPipelineConfig } from "./components/stream/geoTypes";
12
+ export type { GeoParticleStyle } from "./components/stream/GeoParticlePool";
13
+ export { mergeData } from "./components/geo/mergeData";
14
+ export { resolveReferenceGeography } from "./components/geo/referenceGeography";
15
+ export type { ReferenceGeography } from "./components/geo/referenceGeography";
16
+ export type { AreasProp } from "./components/geo/useReferenceAreas";
17
+ export type { ChoroplethMapProps } from "./components/charts/geo/ChoroplethMap";
18
+ export type { ProportionalSymbolMapProps } from "./components/charts/geo/ProportionalSymbolMap";
19
+ export type { FlowMapProps } from "./components/charts/geo/FlowMap";
20
+ export type { DistanceCartogramProps } from "./components/charts/geo/DistanceCartogram";
@@ -2,20 +2,23 @@
2
2
  * Network entry point — force graphs, sankey, chord, trees, treemaps, circle packing.
3
3
  * Import from "semiotic/network" instead of the full bundle to reduce bundle size.
4
4
  */
5
- import StreamNetworkFrame from "./stream/StreamNetworkFrame";
5
+ import StreamNetworkFrame from "./components/stream/StreamNetworkFrame";
6
6
  export { StreamNetworkFrame };
7
- export { ForceDirectedGraph } from "./charts/network/ForceDirectedGraph";
8
- export { SankeyDiagram } from "./charts/network/SankeyDiagram";
9
- export { ChordDiagram } from "./charts/network/ChordDiagram";
10
- export { TreeDiagram } from "./charts/network/TreeDiagram";
11
- export { Treemap } from "./charts/network/Treemap";
12
- export { CirclePack } from "./charts/network/CirclePack";
13
- export { OrbitDiagram } from "./charts/network/OrbitDiagram";
14
- export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, ThresholdAlertConfig } from "./stream/networkTypes";
15
- export type { ForceDirectedGraphProps } from "./charts/network/ForceDirectedGraph";
16
- export type { SankeyDiagramProps } from "./charts/network/SankeyDiagram";
17
- export type { ChordDiagramProps } from "./charts/network/ChordDiagram";
18
- export type { TreeDiagramProps } from "./charts/network/TreeDiagram";
19
- export type { TreemapProps } from "./charts/network/Treemap";
20
- export type { CirclePackProps } from "./charts/network/CirclePack";
21
- export type { OrbitDiagramProps } from "./charts/network/OrbitDiagram";
7
+ export { ForceDirectedGraph } from "./components/charts/network/ForceDirectedGraph";
8
+ export { SankeyDiagram } from "./components/charts/network/SankeyDiagram";
9
+ export { ChordDiagram } from "./components/charts/network/ChordDiagram";
10
+ export { TreeDiagram } from "./components/charts/network/TreeDiagram";
11
+ export { Treemap } from "./components/charts/network/Treemap";
12
+ export { CirclePack } from "./components/charts/network/CirclePack";
13
+ export { OrbitDiagram } from "./components/charts/network/OrbitDiagram";
14
+ export { NetworkCustomChart } from "./components/charts/custom/NetworkCustomChart";
15
+ export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, ThresholdAlertConfig } from "./components/stream/networkTypes";
16
+ export type { ForceDirectedGraphProps } from "./components/charts/network/ForceDirectedGraph";
17
+ export type { SankeyDiagramProps } from "./components/charts/network/SankeyDiagram";
18
+ export type { ChordDiagramProps } from "./components/charts/network/ChordDiagram";
19
+ export type { TreeDiagramProps } from "./components/charts/network/TreeDiagram";
20
+ export type { TreemapProps } from "./components/charts/network/Treemap";
21
+ export type { CirclePackProps } from "./components/charts/network/CirclePack";
22
+ export type { OrbitDiagramProps } from "./components/charts/network/OrbitDiagram";
23
+ export type { NetworkCustomChartProps } from "./components/charts/custom/NetworkCustomChart";
24
+ export type { NetworkCustomLayout, NetworkLayoutContext, NetworkLayoutResult, } from "./components/stream/networkCustomLayout";
@@ -2,32 +2,35 @@
2
2
  * Ordinal entry point — bar charts, pie charts, distribution charts.
3
3
  * Import from "semiotic/ordinal" instead of the full bundle to reduce bundle size.
4
4
  */
5
- import StreamOrdinalFrame from "./stream/StreamOrdinalFrame";
5
+ import StreamOrdinalFrame from "./components/stream/StreamOrdinalFrame";
6
6
  export { StreamOrdinalFrame };
7
- export { BarChart } from "./charts/ordinal/BarChart";
8
- export { StackedBarChart } from "./charts/ordinal/StackedBarChart";
9
- export { GroupedBarChart } from "./charts/ordinal/GroupedBarChart";
10
- export { SwimlaneChart } from "./charts/ordinal/SwimlaneChart";
11
- export { SwarmPlot } from "./charts/ordinal/SwarmPlot";
12
- export { BoxPlot } from "./charts/ordinal/BoxPlot";
13
- export { Histogram } from "./charts/ordinal/Histogram";
14
- export { ViolinPlot } from "./charts/ordinal/ViolinPlot";
15
- export { DotPlot } from "./charts/ordinal/DotPlot";
16
- export { PieChart } from "./charts/ordinal/PieChart";
17
- export { DonutChart } from "./charts/ordinal/DonutChart";
18
- export { GaugeChart } from "./charts/ordinal/GaugeChart";
19
- export type { GaugeChartProps, GaugeThreshold } from "./charts/ordinal/GaugeChart";
20
- export { RidgelinePlot } from "./charts/ordinal/RidgelinePlot";
21
- export { FunnelChart } from "./charts/ordinal/FunnelChart";
22
- export { LikertChart } from "./charts/ordinal/LikertChart";
23
- export { createHatchPattern } from "./charts/shared/hatchPattern";
24
- export type { HatchPatternOptions } from "./charts/shared/hatchPattern";
25
- export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./stream/ordinalTypes";
26
- export type { BarChartProps } from "./charts/ordinal/BarChart";
27
- export type { StackedBarChartProps } from "./charts/ordinal/StackedBarChart";
28
- export type { GroupedBarChartProps } from "./charts/ordinal/GroupedBarChart";
29
- export type { SwimlaneChartProps } from "./charts/ordinal/SwimlaneChart";
30
- export type { PieChartProps } from "./charts/ordinal/PieChart";
31
- export type { DonutChartProps } from "./charts/ordinal/DonutChart";
32
- export type { FunnelChartProps } from "./charts/ordinal/FunnelChart";
33
- export type { LikertChartProps } from "./charts/ordinal/LikertChart";
7
+ export { BarChart } from "./components/charts/ordinal/BarChart";
8
+ export { StackedBarChart } from "./components/charts/ordinal/StackedBarChart";
9
+ export { GroupedBarChart } from "./components/charts/ordinal/GroupedBarChart";
10
+ export { SwimlaneChart } from "./components/charts/ordinal/SwimlaneChart";
11
+ export { SwarmPlot } from "./components/charts/ordinal/SwarmPlot";
12
+ export { BoxPlot } from "./components/charts/ordinal/BoxPlot";
13
+ export { Histogram } from "./components/charts/ordinal/Histogram";
14
+ export { ViolinPlot } from "./components/charts/ordinal/ViolinPlot";
15
+ export { DotPlot } from "./components/charts/ordinal/DotPlot";
16
+ export { PieChart } from "./components/charts/ordinal/PieChart";
17
+ export { DonutChart } from "./components/charts/ordinal/DonutChart";
18
+ export { GaugeChart } from "./components/charts/ordinal/GaugeChart";
19
+ export type { GaugeChartProps, GaugeThreshold } from "./components/charts/ordinal/GaugeChart";
20
+ export { RidgelinePlot } from "./components/charts/ordinal/RidgelinePlot";
21
+ export { FunnelChart } from "./components/charts/ordinal/FunnelChart";
22
+ export { LikertChart } from "./components/charts/ordinal/LikertChart";
23
+ export { OrdinalCustomChart } from "./components/charts/custom/OrdinalCustomChart";
24
+ export { createHatchPattern } from "./components/charts/shared/hatchPattern";
25
+ export type { HatchPatternOptions } from "./components/charts/shared/hatchPattern";
26
+ export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./components/stream/ordinalTypes";
27
+ export type { BarChartProps } from "./components/charts/ordinal/BarChart";
28
+ export type { StackedBarChartProps } from "./components/charts/ordinal/StackedBarChart";
29
+ export type { GroupedBarChartProps } from "./components/charts/ordinal/GroupedBarChart";
30
+ export type { SwimlaneChartProps } from "./components/charts/ordinal/SwimlaneChart";
31
+ export type { PieChartProps } from "./components/charts/ordinal/PieChart";
32
+ export type { DonutChartProps } from "./components/charts/ordinal/DonutChart";
33
+ export type { FunnelChartProps } from "./components/charts/ordinal/FunnelChart";
34
+ export type { LikertChartProps } from "./components/charts/ordinal/LikertChart";
35
+ export type { OrdinalCustomChartProps } from "./components/charts/custom/OrdinalCustomChart";
36
+ export type { OrdinalCustomLayout, OrdinalLayoutContext, OrdinalLayoutResult, } from "./components/stream/ordinalCustomLayout";
@@ -2,21 +2,21 @@
2
2
  * Realtime entry point — for streaming/realtime canvas-first visualizations.
3
3
  * Import from "semiotic/realtime" instead of the full bundle to reduce bundle size.
4
4
  */
5
- import StreamXYFrame from "./stream/StreamXYFrame";
6
- import StreamNetworkFrame from "./stream/StreamNetworkFrame";
7
- import { RingBuffer } from "./realtime/RingBuffer";
8
- import { IncrementalExtent } from "./realtime/IncrementalExtent";
9
- import { RealtimeLineChart } from "./charts/realtime/RealtimeLineChart";
10
- import { RealtimeHistogram } from "./charts/realtime/RealtimeHistogram";
11
- import { RealtimeSwarmChart } from "./charts/realtime/RealtimeSwarmChart";
12
- import { RealtimeWaterfallChart } from "./charts/realtime/RealtimeWaterfallChart";
13
- import { RealtimeHeatmap } from "./charts/realtime/RealtimeHeatmap";
5
+ import StreamXYFrame from "./components/stream/StreamXYFrame";
6
+ import StreamNetworkFrame from "./components/stream/StreamNetworkFrame";
7
+ import { RingBuffer } from "./components/realtime/RingBuffer";
8
+ import { IncrementalExtent } from "./components/realtime/IncrementalExtent";
9
+ import { RealtimeLineChart } from "./components/charts/realtime/RealtimeLineChart";
10
+ import { RealtimeHistogram } from "./components/charts/realtime/RealtimeHistogram";
11
+ import { RealtimeSwarmChart } from "./components/charts/realtime/RealtimeSwarmChart";
12
+ import { RealtimeWaterfallChart } from "./components/charts/realtime/RealtimeWaterfallChart";
13
+ import { RealtimeHeatmap } from "./components/charts/realtime/RealtimeHeatmap";
14
14
  export { StreamXYFrame, StreamNetworkFrame, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap };
15
- export type { RealtimeLineChartProps } from "./charts/realtime/RealtimeLineChart";
16
- export type { RealtimeHistogramProps } from "./charts/realtime/RealtimeHistogram";
17
- export type { RealtimeSwarmChartProps } from "./charts/realtime/RealtimeSwarmChart";
18
- export type { RealtimeWaterfallChartProps } from "./charts/realtime/RealtimeWaterfallChart";
19
- export type { RealtimeHeatmapProps } from "./charts/realtime/RealtimeHeatmap";
20
- export type { ArrowOfTime, WindowMode, ThresholdType, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, AnnotationContext, CrosshairStyle, HoverAnnotationConfig, HoverData } from "./realtime/types";
21
- export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType } from "./stream/types";
22
- export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType } from "./stream/networkTypes";
15
+ export type { RealtimeLineChartProps } from "./components/charts/realtime/RealtimeLineChart";
16
+ export type { RealtimeHistogramProps } from "./components/charts/realtime/RealtimeHistogram";
17
+ export type { RealtimeSwarmChartProps } from "./components/charts/realtime/RealtimeSwarmChart";
18
+ export type { RealtimeWaterfallChartProps } from "./components/charts/realtime/RealtimeWaterfallChart";
19
+ export type { RealtimeHeatmapProps } from "./components/charts/realtime/RealtimeHeatmap";
20
+ export type { ArrowOfTime, WindowMode, ThresholdType, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, AnnotationContext, CrosshairStyle, HoverAnnotationConfig, HoverData } from "./components/realtime/types";
21
+ export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType } from "./components/stream/types";
22
+ export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType } from "./components/stream/networkTypes";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Recipes entry point — curated layout functions for use with `XYCustomChart`.
3
+ *
4
+ * Import from "semiotic/recipes" instead of the full bundle. Recipes are
5
+ * pure CustomLayout functions that emit standard SceneNodes; they get hit
6
+ * testing, transitions, decay, theme cascade, and SSR for free.
7
+ */
8
+ export { waffleLayout } from "./components/recipes/waffle";
9
+ export type { WaffleConfig } from "./components/recipes/waffle";
10
+ export { calendarLayout } from "./components/recipes/calendar";
11
+ export type { CalendarConfig } from "./components/recipes/calendar";
12
+ export { flextreeLayout } from "./components/recipes/flextree";
13
+ export type { FlextreeConfig } from "./components/recipes/flextree";
14
+ export { dagreLayout } from "./components/recipes/dagre";
15
+ export type { DagreConfig } from "./components/recipes/dagre";
16
+ export { marimekkoLayout } from "./components/recipes/marimekko";
17
+ export type { MarimekkoConfig } from "./components/recipes/marimekko";
18
+ export { bulletLayout } from "./components/recipes/bullet";
19
+ export type { BulletConfig } from "./components/recipes/bullet";
20
+ export { parallelCoordinatesLayout } from "./components/recipes/parallelCoordinates";
21
+ export type { ParallelCoordinatesConfig } from "./components/recipes/parallelCoordinates";
22
+ export type { CustomLayout, LayoutContext, LayoutResult, } from "./components/stream/customLayout";
23
+ export type { NetworkCustomLayout, NetworkLayoutContext, NetworkLayoutResult, } from "./components/stream/networkCustomLayout";
24
+ export type { OrdinalCustomLayout, OrdinalLayoutContext, OrdinalLayoutResult, } from "./components/stream/ordinalCustomLayout";
@@ -0,0 +1 @@
1
+ "use strict";const e=require("d3-interpolate"),t=require("react"),o=require("d3-scale");function n(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}return t.default=e,Object.freeze(t)}const r=n(t),l=864e5;function s(e){return`${e.getUTCFullYear()}-${i(e.getUTCMonth()+1)}-${i(e.getUTCDate())}`}function i(e){return 10>e?"0"+e:e+""}function c(e){return"function"==typeof e?e:t=>t[e]}function a(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}function u(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}exports.bulletLayout=e=>{var t,o,n,l,s,i,u,d,h,y,f,m;const g=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(t=g.rowHeight)&&void 0!==t?t:28,x=null!==(o=g.rowGap)&&void 0!==o?o:12,b=!1!==g.showLabels,w=b?null!==(n=g.labelWidth)&&void 0!==n?n:120:0,k=!1!==g.showTicks,$=k?14:0,A=null!==(l=g.tickFormat)&&void 0!==l?l:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=c(g.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof g.valueAccessor?g.valueAccessor(e):e[g.valueAccessor]),L=e=>N("function"==typeof g.targetAccessor?g.targetAccessor(e):e[g.targetAccessor]),O=e=>{const t="function"==typeof g.rangesAccessor?g.rangesAccessor(e):e[g.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},S="string"==typeof g.categoryAccessor?g.categoryAccessor:"metric",T="string"==typeof g.valueAccessor?g.valueAccessor:"value",D="string"==typeof g.targetAccessor?g.targetAccessor:"target",E=null!==(i=null!==(s=g.actualColor)&&void 0!==s?s:e.theme.semantic.primary)&&void 0!==i?i:"#3b6cb1",j=null!==(u=e.theme.semantic.text)&&void 0!==u?u:"currentColor",z=null!==(d=e.theme.semantic.textSecondary)&&void 0!==d?d:"#888",B=null!==(h=e.theme.semantic.surface)&&void 0!==h?h:"#e8eaed",U=null!==(y=e.theme.semantic.grid)&&void 0!==y?y:"#cdd1d6",P=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",_=null!==(m=g.targetColor)&&void 0!==m?m:`var(--semiotic-text, ${j})`,V=[`var(--semiotic-surface, ${B})`,`var(--semiotic-grid, ${U})`,`var(--semiotic-border, ${P})`],Y=`var(--semiotic-text, ${j})`,q=`var(--semiotic-text-secondary, ${z})`,H=[],I=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=O(o),r=W(o),l=L(o),s=Math.max(r,l,...n.length?n:[0]);if(0>=s)continue;const i=v.y+t*(p+x+$);if(i+p+$>v.y+v.height)break;I.push({yTop:i,label:F(o),actual:r,target:l,maxVal:s});const c=e=>M+e/s*C,u=F(o),d=e=>a(t=>{t("metric",u),"metric"!==S&&t(S,u),e(t)});let h=M;for(let e=0;n.length>e;e++){const t=c(n[e]),o=t-h;o>0&&H.push({type:"rect",x:h,y:i,w:o,h:p,style:{fill:V[Math.min(e,V.length-1)],stroke:"none"},datum:d(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),h=t}const y=Math.max(6,Math.floor(.45*p));H.push({type:"rect",x:M,y:i+(p-y)/2,w:c(r)-M,h:y,style:{fill:E,stroke:"none"},datum:d(e=>{e("value",r),e("kind","actual"),"value"!==T&&e(T,r)}),group:"actual"});const f=3,m=Math.floor(.8*p);H.push({type:"rect",x:c(l)-f/2,y:i+(p-m)/2,w:f,h:m,style:{fill:_,stroke:"none"},datum:d(e=>{e("target",l),e("kind","target"),"target"!==D&&e(D,l)}),group:"target"})}const R=[];for(let e=0;I.length>e;e++){const t=I[e];if(b&&R.push(r.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:t.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:Y},t.label)),k){const o=5,n=t.yTop+p+2;for(let l=0;o>l;l++){const s=t.maxVal*l/(o-1),i=M+s/t.maxVal*C;R.push(r.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:n,y2:n+3,stroke:q,strokeWidth:1}),r.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:n+12,textAnchor:0===l?"start":l===o-1?"end":"middle",fontSize:10,fill:q},A(s)))}}}return{nodes:H,overlays:R.length>0?r.createElement(r.Fragment,null,...R):null}},exports.calendarLayout=t=>{var o,n,r,i,c,a,u,d;const h=t.config,{plot:y}=t.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=e=>{const t="function"==typeof h.dateAccessor?h.dateAccessor(e):e[h.dateAccessor];return t instanceof Date?t:new Date(t)},m=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor];return Number(t)},g=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=s(t),r=m(e);g.set(n,(null!==(o=g.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(r=null!==(n=h.year)&&void 0!==n?n:v)&&void 0!==r?r:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of g.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(i=h.colorRamp)&&void 0!==i?i:[null!==(c=t.theme.semantic.surface)&&void 0!==c?c:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e.interpolateRgb(w,k)(o)},A=null!==(u=h.gutter)&&void 0!==u?u:2,M=null!==(d=h.labelInset)&&void 0!==d?d:0,C=Math.min((y.width-M-53*A)/54,(y.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*l),L=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*l);if(o.getUTCFullYear()!==p)continue;const n=s(o),r=g.get(n),i=null==r?w:$(r);L.push({type:"rect",x:y.x+M+e*(C+A),y:y.y+t*(C+A),w:C,h:C,style:{fill:i,stroke:"none"},datum:{date:o,value:null!=r?r:0}})}return{nodes:L}},exports.dagreLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,h=null!==(o=u.nodeHeight)&&void 0!==o?o:36,y=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,m=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",g="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:g(t)+""}),f&&x.push({x:o,y:n,text:g(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==y||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}},exports.flextreeLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,h=null!==(o=u.nodeHeight)&&void 0!==o?o:30,y=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",m=!1!==u.showLabels,g=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),m&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===y?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===y?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===y?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},exports.marimekkoLayout=e=>{var t,o,n,l,s,i,d;const h=e.config,{plot:y}=e.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=c(h.categoryAccessor),m=c(h.stackBy),g=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(t=h.gutter)&&void 0!==t?t:2,p="string"==typeof h.categoryAccessor?h.categoryAccessor:"category",x="string"==typeof h.stackBy?h.stackBy:"stack",b="string"==typeof h.valueAccessor?h.valueAccessor:"value",w=(e,t,o)=>a(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==h.showCategoryLabels,$=null!==(o=h.labelPadding)&&void 0!==o?o:k?22:0,A=Math.max(0,y.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=m(t)+"",r=g(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(n=C.get(e))&&void 0!==n?n:0)+r);const s=W.get(e);s.set(o,(null!==(l=s.get(o))&&void 0!==l?l:0)+r)}const L=h.categoryOrder?u(h.categoryOrder,M,e=>C.has(e)):M,O=h.stackOrder?u(h.stackOrder,F,()=>!0):F,S=L.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=S)return{nodes:[]};const T=Math.max(0,y.width-v*Math.max(0,L.length-1)),D=[],E=[];let j=y.x;for(const t of L){const o=null!==(s=C.get(t))&&void 0!==s?s:0,n=o/S*T;if(0>=n)continue;E.push({cat:t,x:j,w:n});const r=W.get(t);let l=y.y;for(const s of O){const c=null!==(i=r.get(s))&&void 0!==i?i:0;if(0>=c)continue;const a=c/o*A;D.push({type:"rect",x:j,y:l,w:n,h:a,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,c),group:s}),l+=a}j+=n+v}return{nodes:D,overlays:k&&E.length>0?function(e,t,o){const n=e.map((e,n)=>6.5*e.cat.length>e.w-4?null:r.createElement("text",{key:"marimekko-label-"+n,x:e.x+e.w/2,y:t+12,textAnchor:"middle",fontSize:12,fill:o},e.cat));return r.createElement(r.Fragment,null,...n)}(E,y.y+A+4,`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`):null}},exports.parallelCoordinatesLayout=e=>{var t,n,l,s,i,c,a,u,d,h,y,f;const m=e.config,{plot:g}=e.dimensions,v=null!==(t=m.fields)&&void 0!==t?t:[];if(2>v.length||0>=g.width||0>=g.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(n=m.domains)||void 0===n?void 0:n[t]){p[t]=m.domains[t];continue}let o=1/0,r=-1/0;for(const n of e.data){const e=Number(n[t]);Number.isFinite(e)&&(o>e&&(o=e),e>r&&(r=e))}p[t]=Number.isFinite(o)&&Number.isFinite(r)&&o!==r?[o,r]:[0,1]}const x=!1!==m.showAxes,b=x?null!==(l=m.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o.scaleLinear().domain(p[e]).range([g.y+g.height-w,g.y+b])),$=v.map((e,t)=>1===v.length?g.x+g.width/2:g.x+t/(v.length-1)*g.width),A=m.colorBy?"function"==typeof m.colorBy?m.colorBy:e=>{var t;return(null!==(t=e[m.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=m.opacity)&&void 0!==s?s:.45,C=null!==(i=m.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=m.dimmedOpacity)&&void 0!==a?a:.08,W=m.highlightFn,L=[],O=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?O:L;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(m.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let S=null;if(x){const t=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,o=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,n=`var(--semiotic-text-secondary, ${null!==(h=e.theme.semantic.textSecondary)&&void 0!==h?h:"#888"})`,l=g.y+b,s=g.y+g.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(y=m.tickFormat)||void 0===y?void 0:y[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(r.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:t,strokeWidth:1})),i.push(r.createElement("text",{key:"pc-axis-label-"+e,x:a,y:g.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:o},c));const[d,h]=p[c],x=5;for(let o=0;x>o;o++){const l=d+(h-d)*o/(x-1),s=k[e](l);i.push(r.createElement("line",{key:`pc-tick-${e}-${o}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:t,strokeWidth:1}),r.createElement("text",{key:`pc-ticktext-${e}-${o}`,x:a+6,y:s+3,fontSize:10,fill:n},u(l)))}}S=r.createElement(r.Fragment,null,...i)}return{nodes:L.concat(O),overlays:S}},exports.waffleLayout=e=>{var t,o,n,r,l,s;const i=e.config,c=null!==(t=i.rows)&&void 0!==t?t:10,a=null!==(o=i.columns)&&void 0!==o?o:10,u=null!==(n=i.gutter)&&void 0!==n?n:2,d=c*a;if(0>=c||0>=a||0>=d)return{nodes:[]};const{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const y=(h.width-u*(a-1))/a,f=(h.height-u*(c-1))/c;if(0>=y||0>=f)return{nodes:[]};const m=null!==(r=null==(g=i.categoryAccessor)?null:"function"==typeof g?g:e=>e[g])&&void 0!==r?r:()=>"_default";var g;const v=null!==(l=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(i.valueAccessor))&&void 0!==l?l:()=>1,p=new Map,x=[];for(const t of e.data){const e=m(t)+"",o=Number(v(t)),n=Number.isFinite(o)?Math.max(0,o):0;p.has(e)||x.push(e),p.set(e,(null!==(s=p.get(e))&&void 0!==s?s:0)+n)}const b=Array.from(p.values()).reduce((e,t)=>e+t,0);if(0>=b)return{nodes:[]};let w;if(i.categoryOrder&&i.categoryOrder.length>0){const e=new Set,t=[];for(const o of i.categoryOrder)p.has(o)&&!e.has(o)&&(e.add(o),t.push(o));w=[...t,...x.filter(t=>!e.has(t))]}else w=x;if(0===w.length)return{nodes:[]};const k=w.map(e=>{var t;return{cat:e,exact:(null!==(t=p.get(e))&&void 0!==t?t:0)/b*d}}),$=k.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),A=$.reduce((e,t)=>e+t.count,0),M=$.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;d-A>e;e++)$[M[e%M.length].i].count+=1;const C=[];let F=0;for(const t of $){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)C.push({type:"rect",x:h.x+F%a*(y+u),y:h.y+(c-1-Math.floor(F/a))*(f+u),w:y,h:f,style:{fill:o,stroke:"none"},datum:{_waffleCategory:t.cat,_waffleIndex:F},group:t.cat}),F++}return{nodes:C}};
@@ -0,0 +1 @@
1
+ import{interpolateRgb as e}from"d3-interpolate";import*as t from"react";import{scaleLinear as o}from"d3-scale";const n=e=>{var t,o,n,r,l,s;const i=e.config,c=null!==(t=i.rows)&&void 0!==t?t:10,a=null!==(o=i.columns)&&void 0!==o?o:10,u=null!==(n=i.gutter)&&void 0!==n?n:2,d=c*a;if(0>=c||0>=a||0>=d)return{nodes:[]};const{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const y=(h.width-u*(a-1))/a,f=(h.height-u*(c-1))/c;if(0>=y||0>=f)return{nodes:[]};const m=null!==(r=null==(g=i.categoryAccessor)?null:"function"==typeof g?g:e=>e[g])&&void 0!==r?r:()=>"_default";var g;const v=null!==(l=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(i.valueAccessor))&&void 0!==l?l:()=>1,p=new Map,x=[];for(const t of e.data){const e=m(t)+"",o=Number(v(t)),n=Number.isFinite(o)?Math.max(0,o):0;p.has(e)||x.push(e),p.set(e,(null!==(s=p.get(e))&&void 0!==s?s:0)+n)}const b=Array.from(p.values()).reduce((e,t)=>e+t,0);if(0>=b)return{nodes:[]};let w;if(i.categoryOrder&&i.categoryOrder.length>0){const e=new Set,t=[];for(const o of i.categoryOrder)p.has(o)&&!e.has(o)&&(e.add(o),t.push(o));w=[...t,...x.filter(t=>!e.has(t))]}else w=x;if(0===w.length)return{nodes:[]};const k=w.map(e=>{var t;return{cat:e,exact:(null!==(t=p.get(e))&&void 0!==t?t:0)/b*d}}),$=k.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),A=$.reduce((e,t)=>e+t.count,0),M=$.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;d-A>e;e++)$[M[e%M.length].i].count+=1;const C=[];let F=0;for(const t of $){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)C.push({type:"rect",x:h.x+F%a*(y+u),y:h.y+(c-1-Math.floor(F/a))*(f+u),w:y,h:f,style:{fill:o,stroke:"none"},datum:{_waffleCategory:t.cat,_waffleIndex:F},group:t.cat}),F++}return{nodes:C}},r=864e5,l=t=>{var o,n,l,i,c,a,u,d;const h=t.config,{plot:y}=t.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=e=>{const t="function"==typeof h.dateAccessor?h.dateAccessor(e):e[h.dateAccessor];return t instanceof Date?t:new Date(t)},m=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor];return Number(t)},g=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=s(t),r=m(e);g.set(n,(null!==(o=g.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(l=null!==(n=h.year)&&void 0!==n?n:v)&&void 0!==l?l:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of g.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(i=h.colorRamp)&&void 0!==i?i:[null!==(c=t.theme.semantic.surface)&&void 0!==c?c:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e(w,k)(o)},A=null!==(u=h.gutter)&&void 0!==u?u:2,M=null!==(d=h.labelInset)&&void 0!==d?d:0,C=Math.min((y.width-M-53*A)/54,(y.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*r),S=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*r);if(o.getUTCFullYear()!==p)continue;const n=s(o),l=g.get(n),i=null==l?w:$(l);S.push({type:"rect",x:y.x+M+e*(C+A),y:y.y+t*(C+A),w:C,h:C,style:{fill:i,stroke:"none"},datum:{date:o,value:null!=l?l:0}})}return{nodes:S}};function s(e){return`${e.getUTCFullYear()}-${i(e.getUTCMonth()+1)}-${i(e.getUTCDate())}`}function i(e){return 10>e?"0"+e:e+""}const c=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,h=null!==(o=u.nodeHeight)&&void 0!==o?o:30,y=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",m=!1!==u.showLabels,g=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),m&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===y?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===y?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===y?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},a=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,h=null!==(o=u.nodeHeight)&&void 0!==o?o:36,y=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,m=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",g="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:g(t)+""}),f&&x.push({x:o,y:n,text:g(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==y||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}};function u(e){return"function"==typeof e?e:t=>t[e]}function d(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}const h=e=>{var o,n,r,l,s,i,c;const a=e.config,{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=u(a.categoryAccessor),m=u(a.stackBy),g=e=>{const t="function"==typeof a.valueAccessor?a.valueAccessor(e):e[a.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(o=a.gutter)&&void 0!==o?o:2,p="string"==typeof a.categoryAccessor?a.categoryAccessor:"category",x="string"==typeof a.stackBy?a.stackBy:"stack",b="string"==typeof a.valueAccessor?a.valueAccessor:"value",w=(e,t,o)=>d(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==a.showCategoryLabels,$=null!==(n=a.labelPadding)&&void 0!==n?n:k?22:0,A=Math.max(0,h.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=m(t)+"",n=g(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(r=C.get(e))&&void 0!==r?r:0)+n);const s=W.get(e);s.set(o,(null!==(l=s.get(o))&&void 0!==l?l:0)+n)}const S=a.categoryOrder?y(a.categoryOrder,M,e=>C.has(e)):M,T=a.stackOrder?y(a.stackOrder,F,()=>!0):F,E=S.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=E)return{nodes:[]};const D=Math.max(0,h.width-v*Math.max(0,S.length-1)),O=[],B=[];let L=h.x;for(const t of S){const o=null!==(s=C.get(t))&&void 0!==s?s:0,n=o/E*D;if(0>=n)continue;B.push({cat:t,x:L,w:n});const r=W.get(t);let l=h.y;for(const s of T){const c=null!==(i=r.get(s))&&void 0!==i?i:0;if(0>=c)continue;const a=c/o*A;O.push({type:"rect",x:L,y:l,w:n,h:a,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,c),group:s}),l+=a}L+=n+v}return{nodes:O,overlays:k&&B.length>0?function(e,o,n){const r=e.map((e,r)=>6.5*e.cat.length>e.w-4?null:t.createElement("text",{key:"marimekko-label-"+r,x:e.x+e.w/2,y:o+12,textAnchor:"middle",fontSize:12,fill:n},e.cat));return t.createElement(t.Fragment,null,...r)}(B,h.y+A+4,`var(--semiotic-text, ${null!==(c=e.theme.semantic.text)&&void 0!==c?c:"currentColor"})`):null}};function y(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}const f=e=>{var o,n,r,l,s,i,c,a,h,y,f,m;const g=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(o=g.rowHeight)&&void 0!==o?o:28,x=null!==(n=g.rowGap)&&void 0!==n?n:12,b=!1!==g.showLabels,w=b?null!==(r=g.labelWidth)&&void 0!==r?r:120:0,k=!1!==g.showTicks,$=k?14:0,A=null!==(l=g.tickFormat)&&void 0!==l?l:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=u(g.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof g.valueAccessor?g.valueAccessor(e):e[g.valueAccessor]),S=e=>N("function"==typeof g.targetAccessor?g.targetAccessor(e):e[g.targetAccessor]),T=e=>{const t="function"==typeof g.rangesAccessor?g.rangesAccessor(e):e[g.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},E="string"==typeof g.categoryAccessor?g.categoryAccessor:"metric",D="string"==typeof g.valueAccessor?g.valueAccessor:"value",O="string"==typeof g.targetAccessor?g.targetAccessor:"target",B=null!==(i=null!==(s=g.actualColor)&&void 0!==s?s:e.theme.semantic.primary)&&void 0!==i?i:"#3b6cb1",L=null!==(c=e.theme.semantic.text)&&void 0!==c?c:"currentColor",U=null!==(a=e.theme.semantic.textSecondary)&&void 0!==a?a:"#888",z=null!==(h=e.theme.semantic.surface)&&void 0!==h?h:"#e8eaed",j=null!==(y=e.theme.semantic.grid)&&void 0!==y?y:"#cdd1d6",V=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",Y=null!==(m=g.targetColor)&&void 0!==m?m:`var(--semiotic-text, ${L})`,H=[`var(--semiotic-surface, ${z})`,`var(--semiotic-grid, ${j})`,`var(--semiotic-border, ${V})`],P=`var(--semiotic-text, ${L})`,_=`var(--semiotic-text-secondary, ${U})`,I=[],G=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=T(o),r=W(o),l=S(o),s=Math.max(r,l,...n.length?n:[0]);if(0>=s)continue;const i=v.y+t*(p+x+$);if(i+p+$>v.y+v.height)break;G.push({yTop:i,label:F(o),actual:r,target:l,maxVal:s});const c=e=>M+e/s*C,a=F(o),u=e=>d(t=>{t("metric",a),"metric"!==E&&t(E,a),e(t)});let h=M;for(let e=0;n.length>e;e++){const t=c(n[e]),o=t-h;o>0&&I.push({type:"rect",x:h,y:i,w:o,h:p,style:{fill:H[Math.min(e,H.length-1)],stroke:"none"},datum:u(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),h=t}const y=Math.max(6,Math.floor(.45*p));I.push({type:"rect",x:M,y:i+(p-y)/2,w:c(r)-M,h:y,style:{fill:B,stroke:"none"},datum:u(e=>{e("value",r),e("kind","actual"),"value"!==D&&e(D,r)}),group:"actual"});const f=3,m=Math.floor(.8*p);I.push({type:"rect",x:c(l)-f/2,y:i+(p-m)/2,w:f,h:m,style:{fill:Y,stroke:"none"},datum:u(e=>{e("target",l),e("kind","target"),"target"!==O&&e(O,l)}),group:"target"})}const Q=[];for(let e=0;G.length>e;e++){const o=G[e];if(b&&Q.push(t.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:o.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:P},o.label)),k){const n=5,r=o.yTop+p+2;for(let l=0;n>l;l++){const s=o.maxVal*l/(n-1),i=M+s/o.maxVal*C;Q.push(t.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:r,y2:r+3,stroke:_,strokeWidth:1}),t.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:r+12,textAnchor:0===l?"start":l===n-1?"end":"middle",fontSize:10,fill:_},A(s)))}}}return{nodes:I,overlays:Q.length>0?t.createElement(t.Fragment,null,...Q):null}},m=e=>{var n,r,l,s,i,c,a,u,d,h,y,f;const m=e.config,{plot:g}=e.dimensions,v=null!==(n=m.fields)&&void 0!==n?n:[];if(2>v.length||0>=g.width||0>=g.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(r=m.domains)||void 0===r?void 0:r[t]){p[t]=m.domains[t];continue}let o=1/0,n=-1/0;for(const r of e.data){const e=Number(r[t]);Number.isFinite(e)&&(o>e&&(o=e),e>n&&(n=e))}p[t]=Number.isFinite(o)&&Number.isFinite(n)&&o!==n?[o,n]:[0,1]}const x=!1!==m.showAxes,b=x?null!==(l=m.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o().domain(p[e]).range([g.y+g.height-w,g.y+b])),$=v.map((e,t)=>1===v.length?g.x+g.width/2:g.x+t/(v.length-1)*g.width),A=m.colorBy?"function"==typeof m.colorBy?m.colorBy:e=>{var t;return(null!==(t=e[m.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=m.opacity)&&void 0!==s?s:.45,C=null!==(i=m.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=m.dimmedOpacity)&&void 0!==a?a:.08,W=m.highlightFn,S=[],T=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?T:S;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(m.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let E=null;if(x){const o=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,n=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,r=`var(--semiotic-text-secondary, ${null!==(h=e.theme.semantic.textSecondary)&&void 0!==h?h:"#888"})`,l=g.y+b,s=g.y+g.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(y=m.tickFormat)||void 0===y?void 0:y[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(t.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:o,strokeWidth:1})),i.push(t.createElement("text",{key:"pc-axis-label-"+e,x:a,y:g.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:n},c));const[d,h]=p[c],x=5;for(let n=0;x>n;n++){const l=d+(h-d)*n/(x-1),s=k[e](l);i.push(t.createElement("line",{key:`pc-tick-${e}-${n}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:o,strokeWidth:1}),t.createElement("text",{key:`pc-ticktext-${e}-${n}`,x:a+6,y:s+3,fontSize:10,fill:r},u(l)))}}E=t.createElement(t.Fragment,null,...i)}return{nodes:S.concat(T),overlays:E}};export{f as bulletLayout,l as calendarLayout,a as dagreLayout,c as flextreeLayout,h as marimekkoLayout,m as parallelCoordinatesLayout,n as waffleLayout};
@@ -1,6 +1,6 @@
1
- export { renderToStaticSVG, renderXYToStaticSVG, renderOrdinalToStaticSVG, renderNetworkToStaticSVG, renderGeoToStaticSVG, renderChart, renderToImage, renderDashboard, } from "./server/renderToStaticSVG";
2
- export type { RenderToImageOptions, DashboardChart, DashboardLayout, RenderDashboardOptions, } from "./server/renderToStaticSVG";
3
- export { renderToAnimatedGif, generateFrameSVGs, generateFrameSequence } from "./server/animatedGif";
4
- export type { AnimatedGifOptions } from "./server/animatedGif";
5
- export { resolveTheme, themeStyles } from "./server/themeResolver";
6
- export type { ThemeInput } from "./server/themeResolver";
1
+ export { renderToStaticSVG, renderXYToStaticSVG, renderOrdinalToStaticSVG, renderNetworkToStaticSVG, renderGeoToStaticSVG, renderChart, renderToImage, renderDashboard, } from "./components/server/renderToStaticSVG";
2
+ export type { RenderToImageOptions, DashboardChart, DashboardLayout, RenderDashboardOptions, } from "./components/server/renderToStaticSVG";
3
+ export { renderToAnimatedGif, generateFrameSVGs, generateFrameSequence } from "./components/server/animatedGif";
4
+ export type { AnimatedGifOptions } from "./components/server/animatedGif";
5
+ export { resolveTheme, themeStyles } from "./components/server/themeResolver";
6
+ export type { ThemeInput } from "./components/server/themeResolver";
@@ -0,0 +1 @@
1
+ import{darkenColor as t,lightenColor as o}from"./semiotic.module.min.js";import"react/jsx-runtime";import"react";import"d3-selection";import"d3-brush";import"d3-scale";import"d3-quadtree";import"d3-shape";import"d3-array";import"d3-hierarchy";import"regression";import"d3-interpolate";import"d3-force";import"d3-chord";const e="__forecastSegment";function n(t,o){return"function"==typeof o?o(t):!!t[o]}function s(t){var o,e,n;return[{type:"anomaly-band",threshold:null!==(o=t.threshold)&&void 0!==o?o:2,showBand:!1!==t.showBand,fill:t.bandColor||"#6366f1",fillOpacity:null!==(e=t.bandOpacity)&&void 0!==e?e:.1,anomalyColor:t.anomalyColor||"#ef4444",anomalyRadius:null!==(n=t.anomalyRadius)&&void 0!==n?n:6,label:t.label}]}function a(t,o,s,a,r){return(i=a).isTraining||i.isForecast||i.isAnomaly||i.upperBounds||i.lowerBounds?function(t,o,s,a,r){var i,l,c,p;const{isTraining:f,isForecast:u,isAnomaly:h,upperBounds:d,lowerBounds:y,color:b="#6366f1",bandOpacity:g=.15,anomalyColor:m="#ef4444",anomalyRadius:O=6,label:j}=a,v=t.map(t=>{let o="observed";return u&&n(t,u)?o="forecast":f&&n(t,f)&&(o="training"),Object.assign(Object.assign({},t),{[e]:o})}),k=a._groupBy,_=[];if(k){const t=new Map;for(const o of v){const e=null!==(i=o[k])&&void 0!==i?i:"__default";t.has(e)||t.set(e,[]),t.get(e).push(o)}const o=[];for(const[,n]of t)for(let t=0;n.length-1>t;t++)n[t][e]!==n[t+1][e]&&(o.push(Object.assign(Object.assign({},n[t+1]),{[e]:n[t][e]})),o.push(Object.assign(Object.assign({},n[t]),{[e]:n[t+1][e]})));_.push(...v,...o)}else for(let t=0;v.length>t;t++)_.push(v[t]),v.length-1>t&&v[t][e]!==v[t+1][e]&&(_.push(Object.assign(Object.assign({},v[t+1]),{[e]:v[t][e]})),_.push(Object.assign(Object.assign({},v[t]),{[e]:v[t+1][e]})));if(a.trainUnderline){const t=[];for(const o of _)"training"===o[e]&&t.push(Object.assign(Object.assign({},o),{[e]:"training-base"}));_.unshift(...t)}const w=[];if(d&&y){const t="string"==typeof d?d:"__envUpper",o="string"==typeof y?y:"__envLower";if("function"==typeof d||"function"==typeof y)for(const e of _)"function"==typeof d&&(e[t]=d(e)),"function"==typeof y&&(e[o]=y(e));w.push({type:"envelope",upperAccessor:t,lowerAccessor:o,fill:b,fillOpacity:g,label:j})}if(h){const t=a.anomalyStyle,o={type:"highlight",filter:t=>n(t,h)};t?(o.style=t,o.r=O):"function"==typeof m?(o.style=t=>{const o=m(t);return{stroke:o,strokeWidth:1.5,fill:o,fillOpacity:.7}},o.r=O):(o.color=m,o.r=O,o.style={stroke:m,strokeWidth:1.5,fill:m,fillOpacity:.7}),w.push(o)}return r&&w.push({type:"anomaly-band",threshold:null!==(l=r.threshold)&&void 0!==l?l:2,showBand:!1!==r.showBand,fill:r.bandColor||"#6366f1",fillOpacity:null!==(c=r.bandOpacity)&&void 0!==c?c:.1,anomalyColor:r.anomalyColor||"#ef4444",anomalyRadius:null!==(p=r.anomalyRadius)&&void 0!==p?p:6,label:r.label}),{processedData:_,annotations:w}}(t,0,0,a,r):function(t,o,n,s,a){var r,i,l;const{trainEnd:c,steps:p=10,confidence:f=.95,color:u="#6366f1",bandOpacity:h=.15,label:d}=s;if(null==c)return{processedData:t,annotations:[]};const y=[],b=[];for(const n of t)n[o]>c?b.push(Object.assign(Object.assign({},n),{[e]:"observed"})):y.push(Object.assign(Object.assign({},n),{[e]:"training"}));const g=y.map(t=>[t[o],t[n]]).filter(t=>null!=t[0]&&null!=t[1]&&isFinite(t[0])&&isFinite(t[1])).sort((t,o)=>t[0]-o[0]),m=[],O=[];if(g.length>=3){const s=g.length;let a=0,r=0,i=0,l=0;for(const[t,o]of g)a+=t,r+=o,i+=t*t,l+=t*o;const c=s*i-a*a;if(Math.abs(c)>1e-12){const i=(s*l-a*r)/c,y=(r-i*a)/s,b=t=>y+i*t,j=g.map(([t,o])=>o-b(t)).reduce((t,o)=>t+o*o,0),v=Math.sqrt(j/Math.max(s-2,1)),k=g.reduce((t,o)=>t+o[0],0)/s,_=g.reduce((t,o)=>t+Math.pow(o[0]-k,2),0),w=.99>f?.95>f?.9>f?1:1.645:1.96:2.576,B=t.map(t=>t[o]).filter(t=>null!=t&&isFinite(t)),C=Math.max(...B),D=g.length>1?(g[s-1][0]-g[0][0])/(s-1):1;for(let t=1;p>=t;t++){const a=C+t*D,r=b(a),i=v*Math.sqrt(1+1/s+(_>0?Math.pow(a-k,2)/_:0))*w;O.push({[o]:a,[n]:r,[e]:"forecast",__forecastUpper:r+i,__forecastLower:r-i})}m.push({type:"envelope",upperAccessor:"__forecastUpper",lowerAccessor:"__forecastLower",fill:u,fillOpacity:h,label:d})}}m.push({type:"x-threshold",x:c,color:"#94a3b8",strokeWidth:1,strokeDasharray:"4,2",label:"Train / Forecast"}),a&&m.push({type:"anomaly-band",threshold:null!==(r=a.threshold)&&void 0!==r?r:2,showBand:!1!==a.showBand,fill:a.bandColor||"#6366f1",fillOpacity:null!==(i=a.bandOpacity)&&void 0!==i?i:.1,anomalyColor:a.anomalyColor||"#ef4444",anomalyRadius:null!==(l=a.anomalyRadius)&&void 0!==l?l:6,label:a.label});const j=[];if(j.push(...y),y.length>0&&b.length>0&&j.push(Object.assign(Object.assign({},y[y.length-1]),{[e]:"observed"})),j.push(...b),O.length>0){const t=b.length>0?b[b.length-1]:y[y.length-1];t&&j.push(Object.assign(Object.assign({},t),{[e]:"forecast"})),j.push(...O)}return{processedData:j,annotations:m}}(t,o,s,a,r);var i}function r(n,s){var a,r;const i=null!==(a=s.trainDasharray)&&void 0!==a?a:"8,4",l=null!==(r=s.forecastDasharray)&&void 0!==r?r:"4,4",c=s.color||"#6366f1",p=s.trainOpacity,f=s.forecastOpacity,u=s.trainStroke,h=s.trainLinecap,d=s.trainUnderline;return s=>{const a=n(s),r=s[e];if("training"===r){let o=a.stroke;return"darken"===u?o=t(a.stroke||"#666",.5):u&&(o=u),Object.assign(Object.assign(Object.assign(Object.assign({},a),{stroke:o,strokeDasharray:i}),h&&{strokeLinecap:h}),null!=p&&{strokeOpacity:p})}if("training-base"===r){let t=a.stroke||"#666";return"lighten"===d&&(t=o(t,.4)),Object.assign(Object.assign({},a),{stroke:t,strokeDasharray:void 0})}return"forecast"===r?Object.assign(Object.assign(Object.assign({},a),{stroke:c,strokeDasharray:l}),null!=f&&{strokeOpacity:f}):a}}export{e as SEGMENT_FIELD,s as buildAnomalyAnnotations,a as buildForecast,r as createSegmentLineStyle,t as darkenColor,o as lightenColor};
@@ -1,4 +1,4 @@
1
- import type { Datum } from "./charts/shared/datumTypes";
1
+ import type { Datum } from "./components/charts/shared/datumTypes";
2
2
  /**
3
3
  * semiotic/themes — Named theme presets for Semiotic charts.
4
4
  *
@@ -8,8 +8,8 @@ import type { Datum } from "./charts/shared/datumTypes";
8
8
  *
9
9
  * Also exports `themeToCSS()` and `themeToTokens()` for serialization.
10
10
  */
11
- import type { SemioticTheme } from "./store/ThemeStore";
12
- import { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME, COLOR_BLIND_SAFE_CATEGORICAL } from "./store/ThemeStore";
11
+ import type { SemioticTheme } from "./components/store/ThemeStore";
12
+ import { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME, COLOR_BLIND_SAFE_CATEGORICAL } from "./components/store/ThemeStore";
13
13
  export { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME, COLOR_BLIND_SAFE_CATEGORICAL };
14
14
  export type { SemioticTheme };
15
15
  export declare const PASTELS_LIGHT: SemioticTheme;
@@ -1 +1,2 @@
1
- "use strict";require("react/jsx-runtime");const e=require("react");function o(e){if(!e.accessibility)return e;let o=e;if(e.accessibility.colorBlindSafe&&(o=Object.assign(Object.assign({},o),{colors:Object.assign(Object.assign({},o.colors),{categorical:a})})),e.accessibility.highContrast){const e="dark"===o.mode;o=Object.assign(Object.assign({},o),{colors:Object.assign(Object.assign({},o.colors),{text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"})})}return o}const a=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],r={mode:"light",colors:{primary:"#00a2ce",secondary:"#6c757d",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",diverging:"RdBu",background:"transparent",surface:"#ffffff",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc",selection:"#00a2ce",selectionOpacity:.15,success:"#2ca02c",danger:"#d62728",warning:"#f0ad4e",error:"#b4181b",info:"#00a2ce"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},t={mode:"dark",colors:{primary:"#4fc3f7",secondary:"#90a4ae",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",diverging:"RdBu",background:"#1a1a2e",surface:"#252540",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555",selection:"#4fc3f7",selectionOpacity:.15,success:"#81c784",danger:"#ef5350",warning:"#ffb74d",error:"#d84848",info:"#4fc3f7"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},i={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:a,sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1,success:"#006400",danger:"#cc0000",warning:"#b15a00",error:"#8b0000",info:"#0000cc"},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};e.createContext(null),function(e){const o=new EventTarget;let a=e(function(e){a=Object.assign(Object.assign({},a),e(a)),o.dispatchEvent(new CustomEvent("update"))})}(e=>({theme:r,setTheme(a){e(e=>{if("light"===a)return{theme:r};if("dark"===a)return{theme:t};if("high-contrast"===a)return{theme:i};if(a.mode&&"auto"!==a.mode){const e="dark"===a.mode?t:r;return{theme:o(Object.assign(Object.assign(Object.assign({},e),a),{colors:Object.assign(Object.assign({},e.colors),a.colors||{}),typography:Object.assign(Object.assign({},e.typography),a.typography||{})}))}}return{theme:o(Object.assign(Object.assign(Object.assign({},e.theme),a),{colors:Object.assign(Object.assign({},e.theme.colors),a.colors||{}),typography:Object.assign(Object.assign({},e.theme.typography),a.typography||{})}))}})}}));const s={mode:"light",colors:{primary:"#c9a0dc",secondary:"#b8a8c8",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",surface:"#fff5ee",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc",annotation:"#c9a0dc",success:"#9ad4a3",danger:"#e8869a",warning:"#f0c888",error:"#c86070",info:"#9cb8e0"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fff5ee",text:"#4a3728",borderRadius:"8px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"10px"},c={mode:"dark",colors:{primary:"#c9a0dc",secondary:"#a899c0",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",surface:"#251e35",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc",annotation:"#c9a0dc",success:"#88d4ab",danger:"#f0a0c0",warning:"#f0c888",error:"#e87690",info:"#9cb8e0"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#251e35",text:"#e8ddf0",borderRadius:"8px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"10px"},n={mode:"light",colors:{primary:"#2563eb",secondary:"#6b7280",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",surface:"#ffffff",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#2563eb",annotation:"#2563eb",success:"#10b981",danger:"#ef4444",warning:"#f59e0b",error:"#dc2626",info:"#2563eb"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2c3e50",borderRadius:"6px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"8px"},d={mode:"dark",colors:{primary:"#3b82f6",secondary:"#9ca3af",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",surface:"#1f2937",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6",annotation:"#3b82f6",success:"#34d399",danger:"#f87171",warning:"#fbbf24",error:"#ef4444",info:"#60a5fa"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f2937",text:"#f3f4f6",borderRadius:"6px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"8px"},l={mode:"light",colors:{primary:"#cc0000",secondary:"#666666",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",surface:"#ffffff",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000",annotation:"#cc0000",success:"#556b2f",danger:"#cc0000",warning:"#c8a415",error:"#8b0000",info:"#4682b4"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#1a1a1a",borderRadius:"2px",shadow:"0 2px 4px rgba(0, 0, 0, 0.15)"},borderRadius:"2px"},f={mode:"dark",colors:{primary:"#ff3333",secondary:"#aaaaaa",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",surface:"#1a1a1a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333",annotation:"#ff3333",success:"#7a8b5a",danger:"#ff3333",warning:"#d4a843",error:"#cc0000",info:"#6aa4d4"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1a1a1a",text:"#f5f5f5",borderRadius:"2px",shadow:"0 2px 8px rgba(0, 0, 0, 0.5)"},borderRadius:"2px"},p={mode:"light",colors:{primary:"#8b0000",secondary:"#555555",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",surface:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000",annotation:"#8b0000",success:"#556b2f",danger:"#8b0000",warning:"#b88700",error:"#6b0000",info:"#4a5568"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10,tickFontFamily:"'Courier New', Courier, monospace",legendSize:11},tooltip:{background:"#fffff8",text:"#111111",borderRadius:"2px",shadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},borderRadius:"0px"},u={mode:"dark",colors:{primary:"#c05050",secondary:"#a09880",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",surface:"#262520",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050",annotation:"#c05050",success:"#7a8b5a",danger:"#c05050",warning:"#c8a060",error:"#a04040",info:"#8090a0"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262520",text:"#e8e4d8",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.4)"},borderRadius:"0px"},b={mode:"light",colors:{primary:"#e45050",secondary:"#666666",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",surface:"#f8f8f8",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050",annotation:"#e45050",success:"#2d7a3d",danger:"#c8303a",warning:"#d4a843",error:"#a02028",info:"#3a86c8"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:18,labelSize:12,tickSize:10,tickFontFamily:"'Courier New', Courier, monospace",legendSize:11},tooltip:{background:"#f8f8f8",text:"#222222",borderRadius:"4px",shadow:"0 2px 6px rgba(0, 0, 0, 0.12)"},borderRadius:"4px"},g={mode:"dark",colors:{primary:"#ff6b6b",secondary:"#a0a0a0",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",surface:"#1e1e1e",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b",annotation:"#ff6b6b",success:"#6fba78",danger:"#ff6b6b",warning:"#e0c060",error:"#d04040",info:"#5a9fd8"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1e1e1e",text:"#ededed",borderRadius:"4px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"4px"},y={mode:"light",colors:{primary:"#8b5cf6",secondary:"#7c5a9e",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",surface:"#ffffff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6",annotation:"#8b5cf6",success:"#10d870",danger:"#ff4b6e",warning:"#ffaa33",error:"#e11d48",info:"#06b6d4"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2d1b4e",borderRadius:"12px",shadow:"0 4px 12px rgba(139, 92, 246, 0.15)"},borderRadius:"12px"},x={mode:"dark",colors:{primary:"#a78bfa",secondary:"#b8a0d8",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",surface:"#1f1138",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa",annotation:"#a78bfa",success:"#4ade80",danger:"#fb7185",warning:"#fbbf24",error:"#f43f5e",info:"#22d3ee"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f1138",text:"#f0e8ff",borderRadius:"12px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"12px"},m={mode:"light",colors:{primary:"#0f62fe",secondary:"#525252",categorical:["#6929c4","#1192e8","#005d5d","#9f1853"],sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#161616",textSecondary:"#525252",grid:"#e0e0e0",border:"#e0e0e0",focus:"#0f62fe",annotation:"#0f62fe",success:"#24a148",danger:"#da1e28",warning:"#f1c21b",error:"#a2191f",info:"#0043ce"},typography:{fontFamily:"'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#161616",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.2)"},borderRadius:"0px"},h={mode:"dark",colors:{primary:"#4589ff",secondary:"#a8a8a8",categorical:["#a56eff","#33b1ff","#08bdba","#ff7eb6"],sequential:"blues",diverging:"RdBu",background:"#161616",surface:"#262626",text:"#f4f4f4",textSecondary:"#a8a8a8",grid:"#393939",border:"#393939",focus:"#4589ff",annotation:"#4589ff",success:"#42be65",danger:"#fa4d56",warning:"#f1c21b",error:"#da1e28",info:"#4589ff"},typography:{fontFamily:"'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262626",text:"#f4f4f4",borderRadius:"2px",shadow:"0 4px 12px rgba(0, 0, 0, 0.5)"},borderRadius:"0px"},S={light:r,dark:t,"high-contrast":i,pastels:s,"pastels-dark":c,"bi-tool":n,"bi-tool-dark":d,italian:l,"italian-dark":f,tufte:p,"tufte-dark":u,journalist:b,"journalist-dark":g,playful:y,"playful-dark":x,carbon:m,"carbon-dark":h};exports.BI_TOOL_DARK=d,exports.BI_TOOL_LIGHT=n,exports.CARBON_ALERT={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},exports.CARBON_CATEGORICAL_14=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],exports.CARBON_DARK=h,exports.CARBON_LIGHT=m,exports.COLOR_BLIND_SAFE_CATEGORICAL=a,exports.DARK_THEME=t,exports.HIGH_CONTRAST_THEME=i,exports.ITALIAN_DARK=f,exports.ITALIAN_LIGHT=l,exports.JOURNALIST_DARK=g,exports.JOURNALIST_LIGHT=b,exports.LIGHT_THEME=r,exports.PASTELS_DARK=c,exports.PASTELS_LIGHT=s,exports.PLAYFUL_DARK=x,exports.PLAYFUL_LIGHT=y,exports.THEME_PRESETS=S,exports.TUFTE_DARK=u,exports.TUFTE_LIGHT=p,exports.resolveThemePreset=function(e){return S[e]},exports.themeToCSS=function(e,o=":root"){var a,r,t,i,s;const c=[];return c.push(` --semiotic-bg: ${e.colors.background};`),c.push(` --semiotic-text: ${e.colors.text};`),c.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),c.push(` --semiotic-grid: ${e.colors.grid};`),c.push(` --semiotic-border: ${e.colors.border};`),c.push(` --semiotic-primary: ${e.colors.primary};`),c.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&c.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&c.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&c.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&c.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(a=e.tooltip)||void 0===a?void 0:a.background)&&c.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(r=e.tooltip)||void 0===r?void 0:r.text)&&c.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(t=e.tooltip)||void 0===t?void 0:t.borderRadius)&&c.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(i=e.tooltip)||void 0===i?void 0:i.fontSize)&&c.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(s=e.tooltip)||void 0===s?void 0:s.shadow)&&c.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&c.push(` --semiotic-border-radius: ${e.borderRadius};`),e.colors.annotation&&c.push(` --semiotic-annotation-color: ${e.colors.annotation};`),null!=e.typography.legendSize&&c.push(` --semiotic-legend-font-size: ${e.typography.legendSize}px;`),null!=e.typography.titleFontSize&&c.push(` --semiotic-title-font-size: ${e.typography.titleFontSize}px;`),null!=e.typography.tickFontFamily&&c.push(` --semiotic-tick-font-family: ${e.typography.tickFontFamily};`),c.push(` --semiotic-secondary: ${e.colors.secondary||e.colors.primary};`),c.push(` --semiotic-surface: ${e.colors.surface||e.colors.background};`),e.colors.success&&c.push(` --semiotic-success: ${e.colors.success};`),e.colors.danger&&c.push(` --semiotic-danger: ${e.colors.danger};`),e.colors.warning&&c.push(` --semiotic-warning: ${e.colors.warning};`),e.colors.error&&c.push(` --semiotic-error: ${e.colors.error};`),e.colors.info&&c.push(` --semiotic-info: ${e.colors.info};`),`${o} {\n${c.join("\n")}\n}`},exports.themeToTokens=function(e){var o,a,r,t,i,s;return{semiotic:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({bg:{$value:e.colors.background,$type:"color"},text:{$value:e.colors.text,$type:"color"},"text-secondary":{$value:e.colors.textSecondary,$type:"color"},grid:{$value:e.colors.grid,$type:"color"},border:{$value:e.colors.border,$type:"color"},primary:{$value:e.colors.primary,$type:"color"},focus:{$value:e.colors.focus||e.colors.primary,$type:"color"},"font-family":{$value:e.typography.fontFamily,$type:"fontFamily"},"border-radius":{$value:e.borderRadius||"8px",$type:"dimension"},tooltip:{bg:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.background)||e.colors.background,$type:"color"},text:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.text)||e.colors.text,$type:"color"},radius:{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(t=e.tooltip)||void 0===t?void 0:t.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(i=e.tooltip)||void 0===i?void 0:i.shadow)||"0 2px 8px rgba(0,0,0,0.15)",$type:"shadow"}},selection:{color:{$value:e.colors.selection||e.colors.primary,$type:"color"},opacity:{$value:null!==(s=e.colors.selectionOpacity)&&void 0!==s?s:.2,$type:"number"}},categorical:{$value:e.colors.categorical,$type:"color",$description:"Categorical color palette"},sequential:{$value:e.colors.sequential,$type:"string",$description:"d3-scale-chromatic sequential scheme name"}},e.colors.diverging?{diverging:{$value:e.colors.diverging,$type:"string",$description:"d3-scale-chromatic diverging scheme name"}}:{}),e.colors.annotation?{"annotation-color":{$value:e.colors.annotation,$type:"color"}}:{}),null!=e.typography.legendSize?{"legend-font-size":{$value:e.typography.legendSize+"px",$type:"dimension"}}:{}),null!=e.typography.titleFontSize?{"title-font-size":{$value:e.typography.titleFontSize+"px",$type:"dimension"}}:{}),null!=e.typography.tickFontFamily?{"tick-font-family":{$value:e.typography.tickFontFamily,$type:"fontFamily"}}:{}),{secondary:{$value:e.colors.secondary||e.colors.primary,$type:"color"},surface:{$value:e.colors.surface||e.colors.background,$type:"color"}}),e.colors.success?{success:{$value:e.colors.success,$type:"color"}}:{}),e.colors.danger?{danger:{$value:e.colors.danger,$type:"color"}}:{}),e.colors.warning?{warning:{$value:e.colors.warning,$type:"color"}}:{}),e.colors.error?{error:{$value:e.colors.error,$type:"color"}}:{}),e.colors.info?{info:{$value:e.colors.info,$type:"color"}}:{})}};
1
+ "use client";
2
+ "use strict";require("react/jsx-runtime");require("react");function e(e){if(!e.accessibility)return e;let a=e;if(e.accessibility.colorBlindSafe&&(a=Object.assign(Object.assign({},a),{colors:Object.assign(Object.assign({},a.colors),{categorical:o})})),e.accessibility.highContrast){const e="dark"===a.mode;a=Object.assign(Object.assign({},a),{colors:Object.assign(Object.assign({},a.colors),{text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"})})}return a}const o=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],a={mode:"light",colors:{primary:"#00a2ce",secondary:"#6c757d",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",diverging:"RdBu",background:"transparent",surface:"#ffffff",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc",selection:"#00a2ce",selectionOpacity:.15,success:"#2ca02c",danger:"#d62728",warning:"#f0ad4e",error:"#b4181b",info:"#00a2ce"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},r={mode:"dark",colors:{primary:"#4fc3f7",secondary:"#90a4ae",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",diverging:"RdBu",background:"#1a1a2e",surface:"#252540",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555",selection:"#4fc3f7",selectionOpacity:.15,success:"#81c784",danger:"#ef5350",warning:"#ffb74d",error:"#d84848",info:"#4fc3f7"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},t={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:o,sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1,success:"#006400",danger:"#cc0000",warning:"#b15a00",error:"#8b0000",info:"#0000cc"},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};function i(o,i){if("light"===i)return a;if("dark"===i)return r;if("high-contrast"===i)return t;if("string"==typeof i)return void 0!==console&&console.warn(`[ThemeStore] Unknown theme preset "${i}". Keeping current theme.`),o;if(i.mode&&"auto"!==i.mode){const o="dark"===i.mode?r:a;return e(Object.assign(Object.assign(Object.assign({},o),i),{colors:Object.assign(Object.assign({},o.colors),i.colors||{}),typography:Object.assign(Object.assign({},o.typography),i.typography||{})}))}return e(Object.assign(Object.assign(Object.assign({},o),i),{colors:Object.assign(Object.assign({},o.colors),i.colors||{}),typography:Object.assign(Object.assign({},o.typography),i.typography||{})}))}!function(e,o){const a=new EventTarget;let r=Object.assign(Object.assign({},e(function(e){r=Object.assign(Object.assign({},r),e(r)),a.dispatchEvent(new Event("update"))})),null!=o?o:{})}(e=>({theme:a,setTheme(o){e(e=>({theme:i(e.theme,o)}))}}));const s={mode:"light",colors:{primary:"#c9a0dc",secondary:"#b8a8c8",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",surface:"#fff5ee",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc",annotation:"#c9a0dc",success:"#9ad4a3",danger:"#e8869a",warning:"#f0c888",error:"#c86070",info:"#9cb8e0"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fff5ee",text:"#4a3728",borderRadius:"8px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"10px"},c={mode:"dark",colors:{primary:"#c9a0dc",secondary:"#a899c0",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",surface:"#251e35",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc",annotation:"#c9a0dc",success:"#88d4ab",danger:"#f0a0c0",warning:"#f0c888",error:"#e87690",info:"#9cb8e0"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#251e35",text:"#e8ddf0",borderRadius:"8px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"10px"},n={mode:"light",colors:{primary:"#2563eb",secondary:"#6b7280",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",surface:"#ffffff",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#2563eb",annotation:"#2563eb",success:"#10b981",danger:"#ef4444",warning:"#f59e0b",error:"#dc2626",info:"#2563eb"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2c3e50",borderRadius:"6px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"8px"},d={mode:"dark",colors:{primary:"#3b82f6",secondary:"#9ca3af",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",surface:"#1f2937",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6",annotation:"#3b82f6",success:"#34d399",danger:"#f87171",warning:"#fbbf24",error:"#ef4444",info:"#60a5fa"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f2937",text:"#f3f4f6",borderRadius:"6px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"8px"},l={mode:"light",colors:{primary:"#cc0000",secondary:"#666666",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",surface:"#ffffff",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000",annotation:"#cc0000",success:"#556b2f",danger:"#cc0000",warning:"#c8a415",error:"#8b0000",info:"#4682b4"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#1a1a1a",borderRadius:"2px",shadow:"0 2px 4px rgba(0, 0, 0, 0.15)"},borderRadius:"2px"},f={mode:"dark",colors:{primary:"#ff3333",secondary:"#aaaaaa",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",surface:"#1a1a1a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333",annotation:"#ff3333",success:"#7a8b5a",danger:"#ff3333",warning:"#d4a843",error:"#cc0000",info:"#6aa4d4"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1a1a1a",text:"#f5f5f5",borderRadius:"2px",shadow:"0 2px 8px rgba(0, 0, 0, 0.5)"},borderRadius:"2px"},p={mode:"light",colors:{primary:"#8b0000",secondary:"#555555",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",surface:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000",annotation:"#8b0000",success:"#556b2f",danger:"#8b0000",warning:"#b88700",error:"#6b0000",info:"#4a5568"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10,tickFontFamily:"'Courier New', Courier, monospace",legendSize:11},tooltip:{background:"#fffff8",text:"#111111",borderRadius:"2px",shadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},borderRadius:"0px"},u={mode:"dark",colors:{primary:"#c05050",secondary:"#a09880",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",surface:"#262520",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050",annotation:"#c05050",success:"#7a8b5a",danger:"#c05050",warning:"#c8a060",error:"#a04040",info:"#8090a0"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262520",text:"#e8e4d8",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.4)"},borderRadius:"0px"},b={mode:"light",colors:{primary:"#e45050",secondary:"#666666",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",surface:"#f8f8f8",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050",annotation:"#e45050",success:"#2d7a3d",danger:"#c8303a",warning:"#d4a843",error:"#a02028",info:"#3a86c8"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:18,labelSize:12,tickSize:10,tickFontFamily:"'Courier New', Courier, monospace",legendSize:11},tooltip:{background:"#f8f8f8",text:"#222222",borderRadius:"4px",shadow:"0 2px 6px rgba(0, 0, 0, 0.12)"},borderRadius:"4px"},g={mode:"dark",colors:{primary:"#ff6b6b",secondary:"#a0a0a0",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",surface:"#1e1e1e",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b",annotation:"#ff6b6b",success:"#6fba78",danger:"#ff6b6b",warning:"#e0c060",error:"#d04040",info:"#5a9fd8"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1e1e1e",text:"#ededed",borderRadius:"4px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"4px"},y={mode:"light",colors:{primary:"#8b5cf6",secondary:"#7c5a9e",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",surface:"#ffffff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6",annotation:"#8b5cf6",success:"#10d870",danger:"#ff4b6e",warning:"#ffaa33",error:"#e11d48",info:"#06b6d4"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2d1b4e",borderRadius:"12px",shadow:"0 4px 12px rgba(139, 92, 246, 0.15)"},borderRadius:"12px"},x={mode:"dark",colors:{primary:"#a78bfa",secondary:"#b8a0d8",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",surface:"#1f1138",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa",annotation:"#a78bfa",success:"#4ade80",danger:"#fb7185",warning:"#fbbf24",error:"#f43f5e",info:"#22d3ee"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f1138",text:"#f0e8ff",borderRadius:"12px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"12px"},m={mode:"light",colors:{primary:"#0f62fe",secondary:"#525252",categorical:["#6929c4","#1192e8","#005d5d","#9f1853"],sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#161616",textSecondary:"#525252",grid:"#e0e0e0",border:"#e0e0e0",focus:"#0f62fe",annotation:"#0f62fe",success:"#24a148",danger:"#da1e28",warning:"#f1c21b",error:"#a2191f",info:"#0043ce"},typography:{fontFamily:"'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#161616",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.2)"},borderRadius:"0px"},h={mode:"dark",colors:{primary:"#4589ff",secondary:"#a8a8a8",categorical:["#a56eff","#33b1ff","#08bdba","#ff7eb6"],sequential:"blues",diverging:"RdBu",background:"#161616",surface:"#262626",text:"#f4f4f4",textSecondary:"#a8a8a8",grid:"#393939",border:"#393939",focus:"#4589ff",annotation:"#4589ff",success:"#42be65",danger:"#fa4d56",warning:"#f1c21b",error:"#da1e28",info:"#4589ff"},typography:{fontFamily:"'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262626",text:"#f4f4f4",borderRadius:"2px",shadow:"0 4px 12px rgba(0, 0, 0, 0.5)"},borderRadius:"0px"},S={light:a,dark:r,"high-contrast":t,pastels:s,"pastels-dark":c,"bi-tool":n,"bi-tool-dark":d,italian:l,"italian-dark":f,tufte:p,"tufte-dark":u,journalist:b,"journalist-dark":g,playful:y,"playful-dark":x,carbon:m,"carbon-dark":h};exports.BI_TOOL_DARK=d,exports.BI_TOOL_LIGHT=n,exports.CARBON_ALERT={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},exports.CARBON_CATEGORICAL_14=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],exports.CARBON_DARK=h,exports.CARBON_LIGHT=m,exports.COLOR_BLIND_SAFE_CATEGORICAL=o,exports.DARK_THEME=r,exports.HIGH_CONTRAST_THEME=t,exports.ITALIAN_DARK=f,exports.ITALIAN_LIGHT=l,exports.JOURNALIST_DARK=g,exports.JOURNALIST_LIGHT=b,exports.LIGHT_THEME=a,exports.PASTELS_DARK=c,exports.PASTELS_LIGHT=s,exports.PLAYFUL_DARK=x,exports.PLAYFUL_LIGHT=y,exports.THEME_PRESETS=S,exports.TUFTE_DARK=u,exports.TUFTE_LIGHT=p,exports.resolveThemePreset=function(e){return S[e]},exports.themeToCSS=function(e,o=":root"){var a,r,t,i,s;const c=[];return c.push(` --semiotic-bg: ${e.colors.background};`),c.push(` --semiotic-text: ${e.colors.text};`),c.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),c.push(` --semiotic-grid: ${e.colors.grid};`),c.push(` --semiotic-border: ${e.colors.border};`),c.push(` --semiotic-primary: ${e.colors.primary};`),c.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&c.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&c.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&c.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&c.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(a=e.tooltip)||void 0===a?void 0:a.background)&&c.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(r=e.tooltip)||void 0===r?void 0:r.text)&&c.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(t=e.tooltip)||void 0===t?void 0:t.borderRadius)&&c.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(i=e.tooltip)||void 0===i?void 0:i.fontSize)&&c.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(s=e.tooltip)||void 0===s?void 0:s.shadow)&&c.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&c.push(` --semiotic-border-radius: ${e.borderRadius};`),e.colors.annotation&&c.push(` --semiotic-annotation-color: ${e.colors.annotation};`),null!=e.typography.legendSize&&c.push(` --semiotic-legend-font-size: ${e.typography.legendSize}px;`),null!=e.typography.titleFontSize&&c.push(` --semiotic-title-font-size: ${e.typography.titleFontSize}px;`),null!=e.typography.tickFontFamily&&c.push(` --semiotic-tick-font-family: ${e.typography.tickFontFamily};`),c.push(` --semiotic-secondary: ${e.colors.secondary||e.colors.primary};`),c.push(` --semiotic-surface: ${e.colors.surface||e.colors.background};`),e.colors.success&&c.push(` --semiotic-success: ${e.colors.success};`),e.colors.danger&&c.push(` --semiotic-danger: ${e.colors.danger};`),e.colors.warning&&c.push(` --semiotic-warning: ${e.colors.warning};`),e.colors.error&&c.push(` --semiotic-error: ${e.colors.error};`),e.colors.info&&c.push(` --semiotic-info: ${e.colors.info};`),`${o} {\n${c.join("\n")}\n}`},exports.themeToTokens=function(e){var o,a,r,t,i,s;return{semiotic:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({bg:{$value:e.colors.background,$type:"color"},text:{$value:e.colors.text,$type:"color"},"text-secondary":{$value:e.colors.textSecondary,$type:"color"},grid:{$value:e.colors.grid,$type:"color"},border:{$value:e.colors.border,$type:"color"},primary:{$value:e.colors.primary,$type:"color"},focus:{$value:e.colors.focus||e.colors.primary,$type:"color"},"font-family":{$value:e.typography.fontFamily,$type:"fontFamily"},"border-radius":{$value:e.borderRadius||"8px",$type:"dimension"},tooltip:{bg:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.background)||e.colors.background,$type:"color"},text:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.text)||e.colors.text,$type:"color"},radius:{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(t=e.tooltip)||void 0===t?void 0:t.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(i=e.tooltip)||void 0===i?void 0:i.shadow)||"0 2px 8px rgba(0,0,0,0.15)",$type:"shadow"}},selection:{color:{$value:e.colors.selection||e.colors.primary,$type:"color"},opacity:{$value:null!==(s=e.colors.selectionOpacity)&&void 0!==s?s:.2,$type:"number"}},categorical:{$value:e.colors.categorical,$type:"color",$description:"Categorical color palette"},sequential:{$value:e.colors.sequential,$type:"string",$description:"d3-scale-chromatic sequential scheme name"}},e.colors.diverging?{diverging:{$value:e.colors.diverging,$type:"string",$description:"d3-scale-chromatic diverging scheme name"}}:{}),e.colors.annotation?{"annotation-color":{$value:e.colors.annotation,$type:"color"}}:{}),null!=e.typography.legendSize?{"legend-font-size":{$value:e.typography.legendSize+"px",$type:"dimension"}}:{}),null!=e.typography.titleFontSize?{"title-font-size":{$value:e.typography.titleFontSize+"px",$type:"dimension"}}:{}),null!=e.typography.tickFontFamily?{"tick-font-family":{$value:e.typography.tickFontFamily,$type:"fontFamily"}}:{}),{secondary:{$value:e.colors.secondary||e.colors.primary,$type:"color"},surface:{$value:e.colors.surface||e.colors.background,$type:"color"}}),e.colors.success?{success:{$value:e.colors.success,$type:"color"}}:{}),e.colors.danger?{danger:{$value:e.colors.danger,$type:"color"}}:{}),e.colors.warning?{warning:{$value:e.colors.warning,$type:"color"}}:{}),e.colors.error?{error:{$value:e.colors.error,$type:"color"}}:{}),e.colors.info?{info:{$value:e.colors.info,$type:"color"}}:{})}};