semiotic 3.4.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +114 -9
- package/README.md +45 -4
- package/ai/behaviorContracts.cjs +311 -0
- package/ai/chartSuggestions.cjs +291 -0
- package/ai/cli.js +255 -30
- package/ai/componentMetadata.cjs +107 -0
- package/ai/dist/mcp-server.js +907 -227
- package/ai/schema.json +3954 -2537
- package/ai/system-prompt.md +23 -4
- package/dist/components/LinkedCharts.d.ts +5 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/charts/custom/NetworkCustomChart.d.ts +64 -0
- package/dist/components/charts/custom/OrdinalCustomChart.d.ts +71 -0
- package/dist/components/charts/custom/XYCustomChart.d.ts +59 -0
- package/dist/components/charts/geo/ChoroplethMap.d.ts +93 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +51 -4
- package/dist/components/charts/geo/FlowMap.d.ts +55 -0
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +53 -0
- package/dist/components/charts/index.d.ts +6 -0
- package/dist/components/charts/network/ChordDiagram.d.ts +34 -2
- package/dist/components/charts/network/CirclePack.d.ts +36 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +130 -2
- package/dist/components/charts/network/OrbitDiagram.d.ts +37 -0
- package/dist/components/charts/network/SankeyDiagram.d.ts +51 -2
- package/dist/components/charts/network/TreeDiagram.d.ts +37 -2
- package/dist/components/charts/network/Treemap.d.ts +36 -2
- package/dist/components/charts/ordinal/BarChart.d.ts +111 -1
- package/dist/components/charts/ordinal/BoxPlot.d.ts +31 -0
- package/dist/components/charts/ordinal/DonutChart.d.ts +36 -0
- package/dist/components/charts/ordinal/DotPlot.d.ts +31 -0
- package/dist/components/charts/ordinal/FunnelChart.d.ts +40 -0
- package/dist/components/charts/ordinal/GaugeChart.d.ts +45 -0
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +38 -0
- package/dist/components/charts/ordinal/Histogram.d.ts +95 -0
- package/dist/components/charts/ordinal/LikertChart.d.ts +42 -0
- package/dist/components/charts/ordinal/PieChart.d.ts +90 -1
- package/dist/components/charts/ordinal/RidgelinePlot.d.ts +27 -0
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +38 -0
- package/dist/components/charts/ordinal/SwarmPlot.d.ts +36 -0
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +60 -0
- package/dist/components/charts/ordinal/ViolinPlot.d.ts +32 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +22 -4
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +5 -2
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +24 -3
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +12 -0
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +14 -0
- package/dist/components/charts/realtime/defaultRealtimeTooltip.d.ts +43 -0
- package/dist/components/charts/realtime/resolveWindowSize.d.ts +26 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +91 -0
- package/dist/components/charts/shared/colorPalettes.d.ts +62 -0
- package/dist/components/charts/shared/colorUtils.d.ts +9 -10
- package/dist/components/charts/shared/numberFormat.d.ts +58 -0
- package/dist/components/charts/shared/sparseArray.d.ts +27 -0
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +113 -0
- package/dist/components/charts/shared/timeFormat.d.ts +60 -0
- package/dist/components/charts/shared/useChartSetup.d.ts +8 -0
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +84 -0
- package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +28 -0
- package/dist/components/charts/shared/useOrdinalStreaming.d.ts +6 -19
- package/dist/components/charts/shared/useStreamingLegend.d.ts +27 -11
- package/dist/components/charts/shared/validateProps.d.ts +2 -2
- package/dist/components/charts/shared/validationMap.d.ts +2 -1
- package/dist/components/charts/shared/withChartWrapper.d.ts +13 -4
- package/dist/components/charts/xy/AreaChart.d.ts +30 -1
- package/dist/components/charts/xy/CandlestickChart.d.ts +33 -6
- package/dist/components/charts/xy/ConnectedScatterplot.d.ts +24 -0
- package/dist/components/charts/xy/MinimapChart.d.ts +51 -0
- package/dist/components/charts/xy/MultiAxisLineChart.d.ts +27 -0
- package/dist/components/charts/xy/QuadrantChart.d.ts +21 -0
- package/dist/components/charts/xy/Scatterplot.d.ts +34 -2
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +16 -0
- package/dist/components/charts/xy/StackedAreaChart.d.ts +49 -1
- package/dist/components/export/selectionSerializer.d.ts +1 -1
- package/dist/components/realtime/types.d.ts +7 -9
- package/dist/components/recipes/bullet.d.ts +86 -0
- package/dist/components/recipes/calendar.d.ts +43 -0
- package/dist/components/recipes/dagre.d.ts +56 -0
- package/dist/components/recipes/flextree.d.ts +55 -0
- package/dist/components/recipes/marimekko.d.ts +55 -0
- package/dist/components/recipes/parallelCoordinates.d.ts +97 -0
- package/dist/components/recipes/recipeUtils.d.ts +27 -0
- package/dist/components/recipes/waffle.d.ts +46 -0
- package/dist/components/semiotic-ai.d.ts +4 -0
- package/dist/components/semiotic-network.d.ts +3 -0
- package/dist/components/semiotic-ordinal.d.ts +3 -0
- package/dist/components/semiotic-recipes.d.ts +24 -0
- package/dist/components/semiotic-xy.d.ts +3 -0
- package/dist/components/semiotic.d.ts +2 -2
- package/dist/components/server/renderToStaticSVG.d.ts +8 -2
- package/dist/components/server/serverChartConfigs.d.ts +47 -1
- package/dist/components/server/staticAnnotations.d.ts +6 -0
- package/dist/components/store/ObservationStore.d.ts +1 -3
- package/dist/components/store/SelectionStore.d.ts +2 -4
- package/dist/components/store/ThemeStore.d.ts +4 -4
- package/dist/components/store/TooltipStore.d.ts +5 -3
- package/dist/components/store/createStore.d.ts +4 -2
- package/dist/components/store/useSelection.d.ts +7 -4
- package/dist/components/stream/CanvasHitTester.d.ts +10 -8
- package/dist/components/stream/DataSourceAdapter.d.ts +9 -0
- package/dist/components/stream/GeoPipelineStore.d.ts +9 -0
- package/dist/components/stream/GeoTileRenderer.d.ts +14 -0
- package/dist/components/stream/NetworkPipelineStore.d.ts +25 -0
- package/dist/components/stream/NetworkSVGOverlay.d.ts +18 -12
- package/dist/components/stream/OrdinalPipelineStore.d.ts +12 -0
- package/dist/components/stream/PipelineStore.d.ts +51 -0
- package/dist/components/stream/SVGOverlay.d.ts +12 -0
- package/dist/components/stream/SceneGraph.d.ts +15 -1
- package/dist/components/stream/SceneToSVG.d.ts +1 -1
- package/dist/components/stream/categoryDomain.d.ts +4 -0
- package/dist/components/stream/composeOverlays.d.ts +15 -0
- package/dist/components/stream/customLayout.d.ts +76 -0
- package/dist/components/stream/customLayoutPalette.d.ts +29 -0
- package/dist/components/stream/geoTypes.d.ts +33 -8
- package/dist/components/stream/hoverUtils.d.ts +4 -10
- package/dist/components/stream/keyboardNav.d.ts +18 -6
- package/dist/components/stream/networkCustomLayout.d.ts +67 -0
- package/dist/components/stream/networkTypes.d.ts +87 -21
- package/dist/components/stream/ordinalCustomLayout.d.ts +84 -0
- package/dist/components/stream/ordinalTypes.d.ts +47 -13
- package/dist/components/stream/renderers/barFunnelCanvasRenderer.d.ts +9 -1
- package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +92 -0
- package/dist/components/stream/sampleCurvePath.d.ts +9 -0
- package/dist/components/stream/types.d.ts +57 -10
- package/dist/components/stream/useHydration.d.ts +89 -0
- package/dist/components/stream/useStableShallow.d.ts +1 -0
- package/dist/components/stream/xySceneBuilders/types.d.ts +4 -0
- package/dist/geo.min.js +2 -1
- package/dist/geo.module.min.js +2 -1
- package/dist/network.min.js +2 -1
- package/dist/network.module.min.js +2 -1
- package/dist/ordinal.min.js +2 -1
- package/dist/ordinal.module.min.js +2 -1
- package/dist/realtime.min.js +2 -1
- package/dist/realtime.module.min.js +2 -1
- package/dist/semiotic-ai.d.ts +69 -65
- package/dist/semiotic-ai.min.js +2 -1
- package/dist/semiotic-ai.module.min.js +2 -1
- package/dist/semiotic-data.d.ts +4 -4
- package/dist/semiotic-geo.d.ts +15 -15
- package/dist/semiotic-network.d.ts +19 -16
- package/dist/semiotic-ordinal.d.ts +31 -28
- package/dist/semiotic-realtime.d.ts +17 -17
- package/dist/semiotic-recipes.d.ts +24 -0
- package/dist/semiotic-recipes.min.js +1 -0
- package/dist/semiotic-recipes.module.min.js +1 -0
- package/dist/semiotic-server.d.ts +6 -6
- package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +1 -0
- package/dist/semiotic-themes.d.ts +3 -3
- package/dist/semiotic-themes.min.js +2 -1
- package/dist/semiotic-themes.module.min.js +2 -1
- package/dist/semiotic-utils.d.ts +23 -23
- package/dist/semiotic-utils.min.js +2 -1
- package/dist/semiotic-utils.module.min.js +2 -1
- package/dist/semiotic-xy.d.ts +27 -24
- package/dist/semiotic.d.ts +63 -63
- package/dist/semiotic.min.js +2 -1
- package/dist/semiotic.module.min.js +2 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/test-utils/canvasMock.d.ts +34 -5
- package/dist/xy.min.js +2 -1
- package/dist/xy.module.min.js +2 -1
- package/package.json +40 -20
- package/dist/semiotic-statisticalOverlays-Ckd_jM8z.js +0 -1
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{createContext as o,useMemo as n,useContext as a,useRef as i,useCallback as s,useSyncExternalStore as c,useState as l,useEffect as d}from"react";function u(e){const t=new EventTarget;let r=e(function(e){r=Object.assign(Object.assign({},r),e(r)),t.dispatchEvent(new CustomEvent("update"))});return{getState:()=>r,subscribe:function(e){return t.addEventListener("update",e),()=>t.removeEventListener("update",e)}}}function p(e){if(!e.accessibility)return e;let t=e;if(e.accessibility.colorBlindSafe&&(t=Object.assign(Object.assign({},t),{colors:Object.assign(Object.assign({},t.colors),{categorical:y})})),e.accessibility.highContrast){const e="dark"===t.mode;t=Object.assign(Object.assign({},t),{colors:Object.assign(Object.assign({},t.colors),{text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"})})}return t}const y=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],f={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}},g={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}},b={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:y,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"},[h,m]=function(t){const r=o(null),l=u(t);return[function({children:o}){const a=n(()=>u(t),[]);return e(r.Provider,{value:a,children:o})},e=>{var t;const o=null!==(t=a(r))&&void 0!==t?t:l,n=i(e);n.current=e;const d=s(()=>n.current(o.getState()),[o]),u=s(()=>n.current(o.getState()),[o]);return c(o.subscribe,d,u)}]}(e=>({theme:f,setTheme(t){e(e=>{if("light"===t)return{theme:f};if("dark"===t)return{theme:g};if("high-contrast"===t)return{theme:b};if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?g:f;return{theme:p(Object.assign(Object.assign(Object.assign({},e),t),{colors:Object.assign(Object.assign({},e.colors),t.colors||{}),typography:Object.assign(Object.assign({},e.typography),t.typography||{})}))}}return{theme:p(Object.assign(Object.assign(Object.assign({},e.theme),t),{colors:Object.assign(Object.assign({},e.theme.colors),t.colors||{}),typography:Object.assign(Object.assign({},e.theme.typography),t.typography||{})}))}})}})),v=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],A={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},x={light:f,dark:g,"high-contrast":b,pastels:{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"},"pastels-dark":{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"},"bi-tool":{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"},"bi-tool-dark":{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"},italian:{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"},"italian-dark":{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"},tufte:{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"},"tufte-dark":{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"},journalist:{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"},"journalist-dark":{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"},playful:{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"},"playful-dark":{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"},carbon:{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"},"carbon-dark":{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"}};function S(e){return x[e]}function j(e,t=":root"){var r,o,n,a,i;const s=[];return s.push(` --semiotic-bg: ${e.colors.background};`),s.push(` --semiotic-text: ${e.colors.text};`),s.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),s.push(` --semiotic-grid: ${e.colors.grid};`),s.push(` --semiotic-border: ${e.colors.border};`),s.push(` --semiotic-primary: ${e.colors.primary};`),s.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&s.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&s.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&s.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&s.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(r=e.tooltip)||void 0===r?void 0:r.background)&&s.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(o=e.tooltip)||void 0===o?void 0:o.text)&&s.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(n=e.tooltip)||void 0===n?void 0:n.borderRadius)&&s.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(a=e.tooltip)||void 0===a?void 0:a.fontSize)&&s.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(i=e.tooltip)||void 0===i?void 0:i.shadow)&&s.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&s.push(` --semiotic-border-radius: ${e.borderRadius};`),e.colors.annotation&&s.push(` --semiotic-annotation-color: ${e.colors.annotation};`),null!=e.typography.legendSize&&s.push(` --semiotic-legend-font-size: ${e.typography.legendSize}px;`),null!=e.typography.titleFontSize&&s.push(` --semiotic-title-font-size: ${e.typography.titleFontSize}px;`),null!=e.typography.tickFontFamily&&s.push(` --semiotic-tick-font-family: ${e.typography.tickFontFamily};`),s.push(` --semiotic-secondary: ${e.colors.secondary||e.colors.primary};`),s.push(` --semiotic-surface: ${e.colors.surface||e.colors.background};`),e.colors.success&&s.push(` --semiotic-success: ${e.colors.success};`),e.colors.danger&&s.push(` --semiotic-danger: ${e.colors.danger};`),e.colors.warning&&s.push(` --semiotic-warning: ${e.colors.warning};`),e.colors.error&&s.push(` --semiotic-error: ${e.colors.error};`),e.colors.info&&s.push(` --semiotic-info: ${e.colors.info};`),`${t} {\n${s.join("\n")}\n}`}function w(e){var t,r,o,n,a,i;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===(t=e.tooltip)||void 0===t?void 0:t.background)||e.colors.background,$type:"color"},text:{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.text)||e.colors.text,$type:"color"},radius:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(n=e.tooltip)||void 0===n?void 0:n.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.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!==(i=e.colors.selectionOpacity)&&void 0!==i?i:.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"}}:{})}}function O(e,t){return"function"==typeof e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))}function $(e){return!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia(e).matches}function k(){const[e,t]=l(()=>$("(prefers-reduced-motion: reduce)"));return d(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return t(e.matches),O(e,e=>t(e.matches))},[]),e}function z(){const[e,t]=l(()=>$("(forced-colors: active)"));return d(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(forced-colors: active)");return t(e.matches),O(e,e=>t(e.matches))},[]),e}const C=r.createContext(void 0);function R({theme:e}){const t=m(e=>e.setTheme),o=m(e=>e.theme),n=r.useRef(o);n.current=o;const a=r.useRef(null);return r.useEffect(()=>{if(void 0!==e)return;if("undefined"==typeof window||!window.matchMedia)return;const r=window.matchMedia("(forced-colors: active)");return r.matches&&(a.current=n.current,t(b)),O(r,e=>{var r;e.matches?(a.current=n.current,t(b)):(t(null!==(r=a.current)&&void 0!==r?r:f),a.current=null)})},[e,t]),r.useEffect(()=>{if(void 0!==e)if("string"==typeof e){const r=S(e);t(r||e)}else t(e)},[e,t]),null}function _({children:t}){var o,n,a,i,s;const c=m(e=>e.theme),l=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"relative","--semiotic-bg":c.colors.background,"--semiotic-text":c.colors.text,"--semiotic-text-secondary":c.colors.textSecondary,"--semiotic-grid":c.colors.grid,"--semiotic-border":c.colors.border,"--semiotic-primary":c.colors.primary,"--semiotic-font-family":c.typography.fontFamily},c.colors.focus?{"--semiotic-focus":c.colors.focus}:{}),(null===(o=c.tooltip)||void 0===o?void 0:o.background)?{"--semiotic-tooltip-bg":c.tooltip.background}:{}),(null===(n=c.tooltip)||void 0===n?void 0:n.text)?{"--semiotic-tooltip-text":c.tooltip.text}:{}),(null===(a=c.tooltip)||void 0===a?void 0:a.borderRadius)?{"--semiotic-tooltip-radius":c.tooltip.borderRadius}:{}),(null===(i=c.tooltip)||void 0===i?void 0:i.fontSize)?{"--semiotic-tooltip-font-size":c.tooltip.fontSize}:{}),(null===(s=c.tooltip)||void 0===s?void 0:s.shadow)?{"--semiotic-tooltip-shadow":c.tooltip.shadow}:{}),c.borderRadius?{"--semiotic-border-radius":c.borderRadius}:{}),c.colors.selection?{"--semiotic-selection-color":c.colors.selection}:{}),null!=c.colors.selectionOpacity?{"--semiotic-selection-opacity":c.colors.selectionOpacity+""}:{}),c.colors.diverging?{"--semiotic-diverging":c.colors.diverging}:{}),c.colors.annotation?{"--semiotic-annotation-color":c.colors.annotation}:{}),null!=c.typography.legendSize?{"--semiotic-legend-font-size":c.typography.legendSize+"px"}:{}),null!=c.typography.titleFontSize?{"--semiotic-title-font-size":c.typography.titleFontSize+"px"}:{}),null!=c.typography.tickFontFamily?{"--semiotic-tick-font-family":c.typography.tickFontFamily}:{}),{"--semiotic-secondary":c.colors.secondary||c.colors.primary,"--semiotic-surface":c.colors.surface||c.colors.background}),c.colors.success?{"--semiotic-success":c.colors.success}:{}),c.colors.danger?{"--semiotic-danger":c.colors.danger}:{}),c.colors.warning?{"--semiotic-warning":c.colors.warning}:{}),c.colors.error?{"--semiotic-error":c.colors.error}:{}),c.colors.info?{"--semiotic-info":c.colors.info}:{}),d=r.useContext(C),u={};return d&&(u["data-semiotic-theme"]=d),e("div",Object.assign({style:l},u,{children:t}))}function F({theme:r,children:o}){const n="string"==typeof r&&S(r)?r:void 0;return e(h,{children:t(C.Provider,{value:n,children:[e(R,{theme:r}),e(_,{children:o})]})})}function L(){return m(e=>e.theme)}function B(e){if(null==e)return"";if("number"!=typeof e)return e+"";if(!isFinite(e))return e+"";if(0===e)return"0";const t=parseFloat(e.toPrecision(12)),r=Math.abs(t);return 1e9>r?1e6>r?1e4>r?Number.isInteger(t)?t+"":parseFloat(t.toPrecision(6))+"":parseFloat((t/1e3).toPrecision(3))+"K":parseFloat((t/1e6).toPrecision(3))+"M":parseFloat((t/1e9).toPrecision(3))+"B"}const N=864e5;function T(e){return 10>e?"0"+e:e+""}const E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function P(e){let t,r=e;return(o,n,a)=>{const i=o instanceof Date?o:new Date(o);e||!a||2>a.length||a===t||(t=a,r=function(e){if(2>e.length)return"days";const t=[];for(let r=1;e.length>r;r++)t.push(e[r]-e[r-1]);t.sort((e,t)=>e-t);const r=t[Math.floor(t.length/2)];return 12e4>r?"seconds":72e5>r?"minutes":2*N>r?"hours":60*N>r?"days":400*N>r?"months":"years"}(a));const s=r||"days";return null!=n&&0!==n&&a&&0!==a.length?function(e,t,r){const o=e.getUTCFullYear()!==t.getUTCFullYear(),n=o||e.getUTCMonth()!==t.getUTCMonth(),a=n||e.getUTCDate()!==t.getUTCDate(),i=a||e.getUTCHours()!==t.getUTCHours(),s=i||e.getUTCMinutes()!==t.getUTCMinutes(),c=E[e.getUTCMonth()],l=e.getUTCDate(),d=e.getUTCFullYear(),u=T(e.getUTCHours()),p=T(e.getUTCMinutes()),y=T(e.getUTCSeconds());switch(r){case"seconds":return o?`${c} ${l}, ${d} ${u}:${p}:${y}`:a?`${c} ${l} ${u}:${p}:${y}`:i?`${u}:${p}:${y}`:s?`${p}:${y}`:":"+y;case"minutes":return o?`${c} ${l}, ${d} ${u}:${p}`:a?`${c} ${l} ${u}:${p}`:i?`${u}:${p}`:":"+p;case"hours":return o?`${c} ${l}, ${d} ${u}:00`:n?`${c} ${l} ${u}:${p}`:a?`${c} ${l} ${u}:00`:u+":00";case"days":return o?`${c} ${l}, ${d}`:n?`${c} ${l}`:""+l;case"months":return o?`${c} ${d}`:""+c;case"years":return""+d}}(i,new Date(a[n-1]),s):function(e,t){const r=E[e.getUTCMonth()],o=e.getUTCDate(),n=e.getUTCFullYear(),a=T(e.getUTCHours()),i=T(e.getUTCMinutes()),s=T(e.getUTCSeconds());switch(t){case"seconds":return`${r} ${o}, ${n} ${a}:${i}:${s}`;case"minutes":case"hours":return`${r} ${o}, ${n} ${a}:${i}`;case"days":return`${r} ${o}, ${n}`;case"months":return`${r} ${n}`;case"years":return""+n}}(i,s)}}function I(e,t=.5){const r=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!r)return e;const o=Math.round(parseInt(r[1],16)*(1-t)),n=Math.round(parseInt(r[2],16)*(1-t)),a=Math.round(parseInt(r[3],16)*(1-t));return`#${o.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function q(e,t=.5){const r=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!r)return e;const o=Math.round(parseInt(r[1],16)+(255-parseInt(r[1],16))*t),n=Math.round(parseInt(r[2],16)+(255-parseInt(r[2],16))*t),a=Math.round(parseInt(r[3],16)+(255-parseInt(r[3],16))*t);return`#${o.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}let M=null;function D(e={},t){const{background:r="transparent",stroke:o="#000",lineWidth:n=1.5,spacing:a=6,angle:i=45}=e,s=Math.max(8,Math.ceil(2*a));let c;try{c=function(e){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(e,e):(M||(M=document.createElement("canvas")),M.width=e,M.height=e,M)}(s)}catch(e){return null}const l=c.getContext("2d");if(!l)return null;r&&"transparent"!==r?(l.fillStyle=r,l.fillRect(0,0,s,s)):l.clearRect(0,0,s,s),l.strokeStyle=o,l.lineWidth=n,l.lineCap="square";const d=i*Math.PI/180;if(45===i||-45===i){const e=i>0?1:-1;for(let t=-s;2*s>=t;t+=a)l.beginPath(),l.moveTo(t,0),l.lineTo(t+e*s,s),l.stroke()}else{l.save(),l.translate(s/2,s/2),l.rotate(d);const e=2*s;for(let t=-e;e>=t;t+=a)l.beginPath(),l.moveTo(-e,t),l.lineTo(e,t),l.stroke();l.restore()}return(t||l).createPattern(c,"repeat")}function U(e,t){const r=e.length,o=t.length,n=Array(o+1);for(let e=0;o>=e;e++)n[e]=e;for(let a=1;r>=a;a++){let r=n[0];n[0]=a;for(let i=1;o>=i;i++){const o=n[i];n[i]=e[a-1]===t[i-1]?r:1+Math.min(r,n[i],n[i-1]),r=o}}return n[o]}function H(e,t,r=3){let o,n=r+1;for(const r of t){const t=U(e.toLowerCase(),r.toLowerCase());n>t&&(n=t,o=r)}return n>r?void 0:o}function G(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:e}function W(e,t){var r;if(0===t.length)return null;const o=e.toLowerCase();return t.find(e=>e.toLowerCase().includes(o)||o.includes(e.toLowerCase()))||(null!==(r=H(e,t,3))&&void 0!==r?r:null)}const V={width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},frameProps:{type:"object"},onClick:{type:"function"}},J={xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"}},Y={categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"}},X=["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"],K=["vertical","horizontal"],Q={LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:X},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},fillArea:{type:"boolean"},areaOpacity:{type:"number"}})},AreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:X},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"}})},StackedAreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:X},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},normalize:{type:"boolean"}})},Scatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}})},BubbleChart:{required:["data","sizeBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},bubbleOpacity:{type:"number"},bubbleStrokeWidth:{type:"number"},bubbleStrokeColor:{type:"string"}})},Heatmap:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},colorScheme:{type:"string",enum:["blues","reds","greens","viridis","custom"]},customColorScale:{type:["object","function"]},showValues:{type:"boolean"},valueFormat:{type:"function"},cellBorderColor:{type:"string"},cellBorderWidth:{type:"number"},showLegend:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},QuadrantChart:{required:["quadrants"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},quadrants:{type:"object"},xCenter:{type:"number"},yCenter:{type:"number"},centerlineStyle:{type:"object"},showQuadrantLabels:{type:"boolean"},quadrantLabelSize:{type:"number"},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}})},MultiAxisLineChart:{required:["series"],dataShape:"array",dataAccessors:["xAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},colorScheme:{type:["string","array"]},curve:{type:"string"},lineWidth:{type:"number"},annotations:{type:"array"}})},CandlestickChart:{required:["highAccessor","lowAccessor"],dataShape:"array",dataAccessors:["xAccessor","highAccessor","lowAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},highAccessor:{type:["string","function"]},lowAccessor:{type:["string","function"]},openAccessor:{type:["string","function"]},closeAccessor:{type:["string","function"]},candlestickStyle:{type:"object"},mode:{type:"string",enum:["primary","context","sparkline"]},annotations:{type:"array"}})},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},V),J),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},orderAccessor:{type:["string","function"]},orderLabel:{type:"string"},pointRadius:{type:"number"},pointIdAccessor:{type:["string","function"]},annotations:{type:"array"}})},BarChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},stackBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},normalize:{type:"boolean"},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},LikertChart:{required:["levels"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},levelAccessor:{type:["string","function"]},countAccessor:{type:["string","function"]},levels:{type:"array"},orientation:{type:"string",enum:K},barPadding:{type:"number"}})},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},BoxPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}})},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},relative:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},ViolinPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},bins:{type:"number"},curve:{type:"string"},showIQR:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},RidgelinePlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},amplitude:{type:"number"},categoryPadding:{type:"number"}})},DotPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:K},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"}})},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},V),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"},cornerRadius:{type:"number"}})},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},V),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"},cornerRadius:{type:"number"}})},GaugeChart:{required:["value"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},V),{value:{type:"number"},min:{type:"number"},max:{type:"number"},thresholds:{type:"array"},arcWidth:{type:"number"},sweep:{type:"number"},showNeedle:{type:"boolean"},needleColor:{type:"string"},centerContent:{type:["object","string","number","function"]},valueFormat:{type:"function"},showScaleLabels:{type:"boolean"},backgroundColor:{type:"string"}})},FunnelChart:{required:["data"],dataShape:"array",dataAccessors:["stepAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},stepAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},connectorOpacity:{type:"number"},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},SwimlaneChart:{required:["subcategoryAccessor"],dataShape:"array",dataAccessors:["categoryAccessor","subcategoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},V),Y),{data:{type:"array"},categoryAccessor:{type:["string","function"]},subcategoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},barPadding:{type:"number"},showCategoryTicks:{type:"boolean"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},ForceDirectedGraph:{required:["nodes","edges"],dataShape:"network",dataAccessors:["nodeIDAccessor","sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},V),{nodes:{type:"array"},edges:{type:"array"},nodeIDAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},nodeLabel:{type:["string","function"]},nodeSize:{type:["number","string","function"]},nodeSizeRange:{type:"array"},edgeWidth:{type:["number","string","function"]},edgeColor:{type:"string"},edgeOpacity:{type:"number"},iterations:{type:"number"},forceStrength:{type:"number"},showLabels:{type:"boolean"}})},SankeyDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},V),{nodes:{type:"array"},edges:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target","gradient"]},orientation:{type:"string",enum:K},nodeAlign:{type:"string",enum:["justify","left","right","center"]},nodePaddingRatio:{type:"number"},nodeWidth:{type:"number"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"},edgeSort:{type:"function"}})},ChordDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},V),{nodes:{type:"array"},edges:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target"]},padAngle:{type:"number"},groupWidth:{type:"number"},sortGroups:{type:"function"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"}})},TreeDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"object"},layout:{type:"string",enum:["tree","cluster","partition","treemap","circlepack"]},orientation:{type:"string",enum:["vertical","horizontal","radial"]},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},edgeStyle:{type:"string",enum:["line","curve"]},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},nodeSize:{type:"number"}})},Treemap:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]}})},CirclePack:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},circleOpacity:{type:"number"}})},OrbitDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"object"},childrenAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},orbitMode:{type:["string","array"]},speed:{type:"number"},revolution:{type:"function"},eccentricity:{type:["number","function"]},orbitSize:{type:["number","function"]},nodeRadius:{type:["number","function"]},showRings:{type:"boolean"},showLabels:{type:"boolean"},animated:{type:"boolean"},colorByDepth:{type:"boolean"},annotations:{type:"array"},foregroundGraphics:{type:"object"}})},RealtimeLineChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},stroke:{type:"string"},strokeWidth:{type:"number"},strokeDasharray:{type:"string"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeHistogram:{required:["binSize"],dataShape:"realtime",dataAccessors:[],props:{binSize:{type:"number"},size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},brush:{type:["boolean","string","object"]},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeSwarmChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},radius:{type:"number"},fill:{type:"string"},opacity:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeWaterfallChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},positiveColor:{type:"string"},negativeColor:{type:"string"},connectorStroke:{type:"string"},connectorWidth:{type:"number"},gap:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeHeatmap:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},heatmapXBins:{type:"number"},heatmapYBins:{type:"number"},aggregation:{type:"string",enum:["count","sum","mean"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"}}},ScatterplotMatrix:{required:["data","fields"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"array"},fields:{type:"array"}})},MinimapChart:{required:["data"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},V),{data:{type:"array"}})},ChoroplethMap:{required:["areas"],dataShape:"array",dataAccessors:["valueAccessor"],props:Object.assign(Object.assign({},V),{areas:{type:["array","string"]},valueAccessor:{type:["string","function"]},colorScheme:{type:["string","array"]},projection:{type:"string"}})},ProportionalSymbolMap:{required:["points"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign({},V),{points:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},areas:{type:["array","string"]}})},FlowMap:{required:["flows"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},V),{flows:{type:"array"},nodes:{type:"array"},valueAccessor:{type:["string","function"]}})},DistanceCartogram:{required:["points"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},V),{points:{type:"array"},center:{type:"array"},costAccessor:{type:["string","function"]}})}};function Z(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}function ee(e,t){const r=[],o=Q[e];if(!o)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(Q).join(", ")}`]};for(const n of o.required)null==t[n]&&r.push(`"${n}" is required for ${e}.`);for(const[e,n]of Object.entries(t)){if(null==n)continue;const t=o.props[e];if(t){if(!Z(n,t.type)){const o=Array.isArray(t.type)?t.type.join(" | "):t.type;r.push(`"${e}" should be ${o}, got ${Array.isArray(n)?"array":typeof n}.`);continue}t.enum&&"string"==typeof n&&!t.enum.includes(n)&&r.push(`"${e}" value "${n}" is not valid. Expected one of: ${t.enum.join(", ")}.`)}}const n=Object.keys(o.props),a=new Set(n);for(const o of Object.keys(t))if(void 0!==t[o]&&!a.has(o)){const t=H(o,n),a=t?`Unknown prop "${o}" for ${e}. Did you mean "${t}"?`:`Unknown prop "${o}" for ${e}. Valid props: ${n.join(", ")}.`;r.push(a)}if("array"===o.dataShape){const n=t.data,a={};for(const e of o.dataAccessors){const r=t[e];"string"==typeof r&&(a[e]=r)}const i=function({componentName:e,data:t,accessors:r,requiredProps:o}){if(o)for(const[t,r]of Object.entries(o))if(null==r)return`${e}: ${t} is required. Provide a field name or function.`;if(null==t)return null;if(!Array.isArray(t)||0===t.length)return e+": No data provided. Pass a non-empty array to the data prop.";if(!Array.isArray(t)&&"object"==typeof t)return e+": data should be an array, but received an object. If this is hierarchical data, use TreeDiagram, Treemap, or CirclePack instead.";if(r){const o=G(t).find(e=>e&&"object"==typeof e);if(o){const t=Object.keys(o);for(const[n,a]of Object.entries(r))if(a&&"string"==typeof a&&!(a in o)){const r=W(a,t),o=r?` Try ${n}="${r}".`:"";return`${e}: ${n} "${a}" not found in data. Available fields: ${t.join(", ")}.${o}`}}}return null}({componentName:e,data:n,accessors:Object.keys(a).length>0?a:void 0});i&&r.push(i)}else if("object"===o.dataShape){const o=function({componentName:e,data:t,dataLabel:r="data"}){return null==t?`${e}: No ${r} provided. Pass a hierarchical object with children: { name: "root", children: [...] }.`:Array.isArray(t)?`${e}: ${r} should be a single root object, not an array. Expected: { name: "root", children: [...] }. If you have flat data, use LineChart, BarChart, or Scatterplot instead.`:null}({componentName:e,data:t.data});o&&r.push(o)}else if("network"===o.dataShape){const n=function({componentName:e,nodes:t,edges:r,nodesRequired:o=!1,edgesRequired:n=!0,accessors:a}){if(null==t&&null==r)return null;if(n&&(!r||!Array.isArray(r)||0===r.length))return e+': No edges provided. Pass a non-empty array: edges={[{ source: "A", target: "B", value: 10 }, ...]}.';if(o&&(!t||!Array.isArray(t)||0===t.length))return e+': No nodes provided. Pass a non-empty array: nodes={[{ id: "A" }, { id: "B" }, ...]}.';if(a&&t&&t.length>0){const r=G(t).find(e=>e&&"object"==typeof e);if(r){const t=Object.keys(r);for(const[o,n]of Object.entries(a))if(n&&"string"==typeof n&&!(n in r)){const r=W(n,t),a=r?` Try ${o}="${r}".`:"";return`${e}: ${o} "${n}" not found in node data. Available fields: ${t.join(", ")}.${a}`}}}return null}({componentName:e,nodes:t.nodes,edges:t.edges,nodesRequired:o.required.includes("nodes"),edgesRequired:o.required.includes("edges")});n&&r.push(n)}return{valid:0===r.length,errors:r}}const te=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),re=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),oe=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),ne=new Set(["LineChart","AreaChart","StackedAreaChart"]),ae=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]);function ie(e){const t=e.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);if(!t)return null;const[r,o,n]=[parseInt(t[1],16)/255,parseInt(t[2],16)/255,parseInt(t[3],16)/255],a=e=>e>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92;return.2126*a(r)+.7152*a(o)+.0722*a(n)}function se(e,t){const r=ie(e),o=ie(t);return null===r||null===o?null:(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}const ce=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function le(e,t){const r=[],o=ee(e,t);for(const e of o.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return Q[e]?(function(e,t,r){const o=Q[e];if(o){if("array"===o.dataShape){const e=t.data;e&&Array.isArray(e)&&0===e.length&&r.push({severity:"error",code:"EMPTY_DATA",message:"data is an empty array — chart will render blank.",fix:"Provide at least one data point: data={[{ x: 1, y: 2 }]}."})}"network"===o.dataShape&&t.edges&&Array.isArray(t.edges)&&0===t.edges.length&&r.push({severity:"error",code:"EMPTY_EDGES",message:"edges is an empty array — network chart will render blank.",fix:'Provide at least one edge: edges={[{ source: "A", target: "B" }]}.'})}}(e,t,r),function(e,t,r){const o=t.width,n=t.height;if(void 0===o||"number"==typeof o&&o>0||r.push({severity:"error",code:"BAD_WIDTH",message:`width=${JSON.stringify(o)} — chart needs a positive number.`,fix:"Set width={600} or use responsiveWidth={true}."}),void 0===n||"number"==typeof n&&n>0||r.push({severity:"error",code:"BAD_HEIGHT",message:`height=${JSON.stringify(n)} — chart needs a positive number.`,fix:"Set height={400} or use responsiveHeight={true}."}),t.size&&Array.isArray(t.size)){const[e,o]=t.size;(null!=e&&0>=e||null!=o&&0>=o)&&r.push({severity:"error",code:"BAD_SIZE",message:`size=[${e}, ${o}] — both dimensions must be positive.`,fix:"Set size={[600, 400]}."})}}(0,t,r),function(e,t,r){const o=Q[e];if(!o||"array"!==o.dataShape)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const a=n[0];if(!a||"object"!=typeof a)return;const i=Object.keys(a);for(const e of o.dataAccessors){const o=t[e];"string"==typeof o&&(o in a||r.push({severity:"error",code:"ACCESSOR_MISSING",message:`${e}="${o}" not found in data. Available fields: ${i.join(", ")}.`,fix:`Change ${e} to one of: ${i.map(e=>`"${e}"`).join(", ")}.`}))}}(e,t,r),function(e,t,r){te.has(e)&&Array.isArray(t.data)&&r.push({severity:"error",code:"HIERARCHY_FLAT_ARRAY",message:e+" expects hierarchical data but received a flat array.",fix:'Pass a root object: data={{ name: "root", children: [...] }}. For flat data, use BarChart or LineChart.'})}(e,t,r),function(e,t,r){re.has(e)&&(t.edges||t.data||r.push({severity:"error",code:"NETWORK_NO_EDGES",message:e+" requires an edges prop.",fix:'Provide edges={[{ source: "A", target: "B", value: 10 }]}.'}))}(e,t,r),function(e,t,r){const o=Q[e];if(!o||"array"!==o.dataShape)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const a=n[0];if(!a||"object"!=typeof a)return;const i=t.xAccessor;"string"==typeof i&&a[i]instanceof Date&&!t.xFormat&&r.push({severity:"warning",code:"DATE_NO_FORMAT",message:`xAccessor "${i}" contains Date objects but no xFormat is provided. Axis ticks may display "[object Object]".`,fix:"Add xFormat={d => d.toLocaleDateString()} or use timestamps (d.getTime()) instead of Date objects."})}(e,t,r),function(e,t,r){t.linkedHover&&!t.selection&&r.push({severity:"warning",code:"LINKED_HOVER_NO_SELECTION",message:"linkedHover is set but selection is not — this chart emits hover events but won't highlight from others.",fix:`Add selection={{ name: "${"object"==typeof t.linkedHover&&t.linkedHover.name||"hl"}" }} to receive cross-highlights.`})}(0,t,r),function(e,t,r){var o;if(!oe.has(e))return;const n=t.rExtent||t.yExtent;n&&Array.isArray(n)&&n.length>=1&&null!=n[0]&&0!==n[0]&&r.push({severity:"warning",code:"NON_ZERO_BASELINE",message:`${e} has a non-zero baseline (${n[0]}). Bar and area charts should start at zero to avoid exaggerating differences.`,fix:`Remove the custom extent minimum or set it to 0: rExtent={[0, ${null!==(o=n[1])&&void 0!==o?o:"auto"}]}. For trend-focused charts, use LineChart instead.`})}(e,t,r),function(e,t,r){if(!ne.has(e))return;if(t.gapStrategy)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const n=t.yAccessor||"y";"string"==typeof n&&o.some(e=>{const t=e[n];return null==t||Number.isNaN(t)})&&r.push({severity:"warning",code:"DATA_GAPS",message:`Data contains null/undefined/NaN values in "${n}". Default behavior breaks the line at gaps.`,fix:'Set gapStrategy="break" (default), "interpolate", or "zero" to control gap handling.'})}(e,t,r),function(e,t,r){var o,n;const a=null!==(o=t.width)&&void 0!==o?o:600,i=null!==(n=t.height)&&void 0!==n?n:400,s=t.margin;if(!s||"object"!=typeof s)return;const c=(s.left||0)+(s.right||0),l=(s.top||0)+(s.bottom||0);a>c||r.push({severity:"error",code:"MARGIN_OVERFLOW_H",message:`Horizontal margins (${c}px) >= width (${a}px) — no drawing area left.`,fix:"Reduce margin.left/right or increase width."}),i>l||r.push({severity:"error",code:"MARGIN_OVERFLOW_V",message:`Vertical margins (${l}px) >= height (${i}px) — no drawing area left.`,fix:"Reduce margin.top/bottom or increase height."})}(0,t,r),function(e,t,r){var o;const n=Q[e];if(!n||"array"!==n.dataShape)return;const a=t.data;if(!a||!Array.isArray(a)||0===a.length)return;const i=[];t.xAccessor&&"string"==typeof t.xAccessor&&i.push({prop:"xAccessor",name:t.xAccessor}),t.yAccessor&&"string"==typeof t.yAccessor&&i.push({prop:"yAccessor",name:t.yAccessor}),t.valueAccessor&&"string"==typeof t.valueAccessor&&i.push({prop:"valueAccessor",name:t.valueAccessor});const s=Math.min(a.length,5);for(const e of i){let t=!0;for(let r=0;s>r;r++){const n=null===(o=a[r])||void 0===o?void 0:o[e.name];if("number"==typeof n&&Number.isFinite(n)){t=!1;break}}t&&r.push({severity:"error",code:"DEGENERATE_EXTENT",message:`${e.prop}="${e.name}" produces NaN or non-finite values for all sampled data points — chart extents will be invalid.`,fix:`Ensure data[].${e.name} contains finite numbers, or use a function accessor to transform values.`})}}(e,t,r),function(e,t,r){if(!ae.has(e))return;const o=t.barPadding;"number"==typeof o&&10>o&&r.push({severity:"warning",code:"BAR_PADDING_INVISIBLE",message:`barPadding=${o} is very small — bars may appear to have no spacing between them.`,fix:"Increase barPadding to at least 10 for visible gaps, e.g. barPadding={12}."})}(e,t,r),function(e,t,r){if("bottom"!==t.legendPosition)return;const o=t.margin;if(!o||"object"!=typeof o)return;const n=o.bottom;"number"==typeof n&&70>n&&r.push({severity:"warning",code:"BOTTOM_MARGIN_WITH_LEGEND",message:`legendPosition="bottom" with margin.bottom=${n}px — legend may overlap axis labels.`,fix:"Increase margin.bottom to at least 70, e.g. margin={{ ...margin, bottom: 80 }}."})}(0,t,r),function(e,t,r){var o;if(!t.showLegend)return;if("right"!==(null!==(o=t.legendPosition)&&void 0!==o?o:"right"))return;const n=t.margin;if(!n||"object"!=typeof n)return;const a=n.right;"number"==typeof a&&100>a&&r.push({severity:"warning",code:"LEGEND_MARGIN_TIGHT",message:`showLegend is true with legendPosition="right" but margin.right=${a}px — legend may be clipped or overlap the chart.`,fix:"Increase margin.right to at least 100, e.g. margin={{ ...margin, right: 120 }}."})}(0,t,r),function(e,t,r){if("Heatmap"!==e)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const n=o[0];if(n&&"object"==typeof n)for(const e of["xAccessor","yAccessor"]){const o=t[e];if("string"!=typeof o)continue;const a=n[o];"string"==typeof a&&r.push({severity:"warning",code:"HEATMAP_STRING_ACCESSOR",message:`${e}="${o}" resolves to string values (e.g. "${a}"). Heatmap will use categorical axis handling which may produce unexpected cell layout.`,fix:"If you intend categorical axes this is fine. Otherwise, convert values to numbers before passing data."})}}(e,t,r),function(e,t,r){const o=t.colorScheme;if(!o||!Array.isArray(o))return;const n="string"==typeof t.background?t.background:"#ffffff";if(!n.startsWith("#"))return;const a=[];for(const e of o){if("string"!=typeof e||!e.startsWith("#"))continue;const t=se(e,n);null!==t&&3>t&&a.push(`${e} (${t.toFixed(1)}:1)`)}a.length>0&&r.push({severity:"warning",code:"LOW_COLOR_CONTRAST",message:`${a.length} color(s) in colorScheme have < 3:1 contrast against background "${n}": ${a.join(", ")}. Data marks may be hard to see.`,fix:'Use darker colors on light backgrounds or lighter colors on dark backgrounds. Import COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for an accessible preset.'})}(0,t,r),function(e,t,r){const o=t.colorScheme;if(!o||!Array.isArray(o)||2>o.length)return;const n=o.filter(e=>"string"==typeof e&&e.startsWith("#"));if(2>n.length)return;const a=[];for(let e=0;n.length-1>e;e++){const t=se(n[e],n[e+1]);null!==t&&1.5>t&&a.push(`${n[e]} / ${n[e+1]} (${t.toFixed(1)}:1)`)}a.length>0&&r.push({severity:"warning",code:"LOW_ADJACENT_CONTRAST",message:`${a.length} adjacent color pair(s) in colorScheme have very similar luminance: ${a.join("; ")}. Categories may be hard to distinguish.`,fix:'Alternate light and dark colors in the scheme, or use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for a pre-tested palette.'})}(0,t,r),function(e,t,r){const o="string"==typeof t.title&&t.title.trim().length>0,n="string"==typeof t.description&&t.description.trim().length>0,a="string"==typeof t.summary&&t.summary.trim().length>0;o||n||a||r.push({severity:"warning",code:"MISSING_DESCRIPTION",message:'No title, description, or summary provided. Screen readers will use a generic label like "XY chart".',fix:'Add a title="..." prop for a brief label, or description="..." for a detailed aria-label, or summary="..." for a screen-reader-only note describing the chart\'s purpose.'})}(0,t,r),function(e,t,r){const o=[];for(const e of ce)"function"==typeof t[e]&&o.push(e);o.length>0&&r.push({severity:"warning",code:"FUNCTION_ACCESSOR",message:`Function accessor${o.length>1?"s":""} detected: ${o.join(", ")}. If defined inline (e.g. \`xAccessor={d => d.value}\`), every parent re-render creates a new reference which may trigger unnecessary scene rebuilds.`,fix:'Use string accessors when possible (e.g. xAccessor="value"), or memoize with useCallback / define outside the component.'})}(0,t,r),{ok:r.every(e=>"warning"===e.severity),diagnoses:r}):{ok:0===r.length,diagnoses:r}}function de(e,t=30){return Math.max((null!=e?e:4)+5,12,t)}function ue(e,t,r,o){return new(r||(r=Promise))(function(n,a){function i(e){try{c(o.next(e))}catch(e){a(e)}}function s(e){try{c(o.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,s)}c((o=o.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const pe=new Set(["tooltip","onObservation","xFormat","yFormat","valueFormat","svgAnnotationRules","tooltipContent","onHover","tickFormatTime","tickFormatValue","edgeSort","sortGroups","centerContent","frameProps","controls","oFormat","rFormat","oSort","pieceStyle","summaryStyle","nodeStyle","edgeStyle","customHoverBehavior","customClickBehavior","customDoubleClickBehavior","onBrush","onTopologyChange","backgroundGraphics","foregroundGraphics","legend"]),ye=new Set(["data","nodes","edges"]),fe="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function ge(e,t,r){if(!Q[e])throw Error(`Unknown component "${e}". Known components: ${Object.keys(Q).join(", ")}`);const o=!1!==(null==r?void 0:r.includeData),n={};for(const[e,r]of Object.entries(t))null!=r&&(pe.has(e)||!o&&ye.has(e)||"function"!=typeof r&&((null==r?void 0:r.$$typeof)||(n[e]=fe(r))));return Object.assign({component:e,props:n,version:"1",createdAt:(new Date).toISOString()},(null==r?void 0:r.selections)?{selections:r.selections}:{})}function be(e){if(!e.component||!e.props)throw Error("Invalid chart config: missing component or props");if(!Q[e.component])throw Error(`Unknown component "${e.component}". This config may require a newer version of semiotic.`);return{componentName:e.component,props:fe(e.props)}}function he(e){const t=JSON.stringify(e);return"sc="+btoa(unescape(encodeURIComponent(t))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function me(e){const t=new URLSearchParams(e.includes("?")?e.split("?")[1]:e).get("sc");if(!t)throw Error("No chart config found in URL (missing 'sc' parameter)");const r=t.replace(/-/g,"+").replace(/_/g,"/"),o=decodeURIComponent(escape(atob(r)));return JSON.parse(o)}function ve(e){return ue(this,arguments,void 0,function*(e,t="json"){const r="jsx"===t?Ae(e):JSON.stringify(e,null,2);if("undefined"==typeof navigator||!navigator.clipboard)throw Error("Clipboard API not available. copyConfig requires a browser environment.");yield navigator.clipboard.writeText(r)})}function Ae(e){const{component:t,props:r}=e,o=["<"+t];for(const[e,t]of Object.entries(r))if("string"==typeof t)o.push(` ${e}="${t}"`);else if("boolean"==typeof t&&!0===t)o.push(" "+e);else if("boolean"==typeof t&&!1===t)o.push(` ${e}={false}`);else if("number"==typeof t)o.push(` ${e}={${t}}`);else{const r=JSON.stringify(t);o.push(80>r.length?` ${e}={${r}}`:` ${e}={${JSON.stringify(t,null,2)}}`)}return o.push("/>"),o.join("\n")}function xe(e){const t={};for(const[r,o]of e){const e=[];for(const[,t]of o.clauses){const r={};for(const[e,o]of Object.entries(t.fields))r[e]="point"===o.type?{type:"point",values:Array.from(o.values)}:{type:"interval",range:o.range};e.push({clientId:t.clientId,type:t.type,fields:r})}t[r]={name:o.name,resolution:o.resolution,clauses:e}}return t}function Se(e){const t=new Map;for(const[r,o]of Object.entries(e)){const e=new Map;for(const t of o.clauses){const r={};for(const[e,o]of Object.entries(t.fields))r[e]="point"===o.type?{type:"point",values:new Set(o.values)}:{type:"interval",range:o.range};e.set(t.clientId,{clientId:t.clientId,type:t.type,fields:r})}t.set(r,{name:o.name,resolution:o.resolution,clauses:e})}return t}function je(e,t){return ue(this,void 0,void 0,function*(){const{format:r="png",filename:o="chart",scale:n=2,background:a="white"}=t||{},i=e.querySelector("svg");if(!i)throw Error("No SVG element found in the container");const s=i.cloneNode(!0),c=i.getBoundingClientRect();if(s.getAttribute("width")||s.setAttribute("width",c.width+""),s.getAttribute("height")||s.setAttribute("height",c.height+""),s.getAttribute("xmlns")||s.setAttribute("xmlns","http://www.w3.org/2000/svg"),we(i,s),"svg"===r){const e=(new XMLSerializer).serializeToString(s);Oe(new Blob([e],{type:"image/svg+xml;charset=utf-8"}),o+".svg")}else{const t=c.width*n,r=c.height*n,i=document.createElement("canvas");i.width=t,i.height=r;const l=i.getContext("2d");l.fillStyle=a,l.fillRect(0,0,t,r),l.scale(n,n);const d=e.querySelector("canvas");d&&l.drawImage(d,0,0,c.width,c.height);const u=(new XMLSerializer).serializeToString(s),p=new Blob([u],{type:"image/svg+xml;charset=utf-8"}),y=URL.createObjectURL(p),f=new Image;f.width=c.width,f.height=c.height,yield new Promise((e,t)=>{f.onload=()=>{l.drawImage(f,0,0),i.toBlob(r=>{r?(Oe(r,o+".png"),e()):t(Error("Failed to create PNG blob"))},"image/png"),URL.revokeObjectURL(y)},f.onerror=()=>{URL.revokeObjectURL(y),t(Error("Failed to load SVG image"))},f.src=y})}})}function we(e,t){var r;const o=e.children,n=t.children,a=window.getComputedStyle(e),i=["fill","stroke","stroke-width","stroke-dasharray","opacity","fill-opacity","stroke-opacity","font-family","font-size","font-weight","text-anchor","dominant-baseline"];for(const e of i){const o=a.getPropertyValue(e);o&&"none"!==o&&""!==o&&(null===(r=t.style)||void 0===r||r.setProperty(e,o))}for(let e=0;Math.min(o.length,n.length)>e;e++)we(o[e],n[e])}function Oe(e,t){const r=URL.createObjectURL(e),o=document.createElement("a");o.href=r,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(r)}function $e(e){return"nominal"===e||"ordinal"===e}function ke(e){return"quantitative"===e||"temporal"===e}const ze={category10:"category10",category20:"category20",category20b:"category20",category20c:"category20",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3",tableau10:"category10",tableau20:"category20"},Ce={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",monotone:"monotoneX",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},Re={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function _e(e){var t,r,o,n,a,i,s,c,l,d,u,p,y,f;const g=[],{type:b,markProps:h}=function(e){if("string"==typeof e)return{type:e,markProps:{}};const{type:t}=e;return{type:t,markProps:function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&0>t.indexOf(o)&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);o.length>n;n++)0>t.indexOf(o[n])&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}(e,["type"])}}(e.mark),m=e.encoding||{},v=m.x,A=m.y,x=m.color,S=m.size,j=m.theta,w=m.opacity;let O;(null===(t=e.data)||void 0===t?void 0:t.values)?O=e.data.values:(null===(r=e.data)||void 0===r?void 0:r.url)&&g.push("data.url is not supported — only inline data.values can be translated. Provide data manually."),e.transform&&e.transform.length>0&&g.push("Vega-Lite transforms are not supported. Pre-transform your data before passing to fromVegaLite()."),e.layer&&g.push('Layered specs ("layer") are not supported. Only single-mark specs can be translated.'),(e.hconcat||e.vconcat||e.concat)&&g.push('Concatenated views ("hconcat"/"vconcat"/"concat") are not supported. Translate each sub-spec individually.'),(e.facet||e.encoding&&e.encoding.facet||e.encoding&&(e.encoding.row||e.encoding.column))&&g.push("Faceted views are not supported. Use Semiotic's LinkedCharts or render multiple charts manually."),e.repeat&&g.push('Repeated views ("repeat") are not supported. Translate each field combination individually.'),(e.params||e.selection)&&g.push("Selections/params are not supported. Use Semiotic's LinkedCharts and selection props for interactivity.");const $={};e.width&&($.width=e.width),e.height&&($.height=e.height);const k=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if(k&&($.title=k),(null==x?void 0:x.field)&&($.colorBy=x.field,null===(o=x.scale)||void 0===o?void 0:o.scheme)){const e=ze[x.scale.scheme];e&&($.colorScheme=e)}void 0!==(null==w?void 0:w.value)&&($.pointOpacity=w.value);const z=null==v?void 0:v.aggregate,C=null==A?void 0:A.aggregate;if(O&&(z||C)){const e=C?A:v,t=C?v:A,r=Re[e.aggregate];if(r&&(null==t?void 0:t.field)&&e.field)O=function(e,t){const{groupBy:r,value:o,agg:n="sum"}=t,a=new Map;for(const t of e){const e=t[r]+"";a.has(e)||a.set(e,[]),a.get(e).push(Number(t[o]))}const i=[];for(const[e,t]of a){let o;switch(n){case"count":o=t.length;break;case"mean":o=t.reduce((e,t)=>e+t,0)/t.length;break;case"min":o=Math.min(...t);break;case"max":o=Math.max(...t);break;default:o=t.reduce((e,t)=>e+t,0)}i.push({[r]:e,value:o})}return i}(O,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&(null==t?void 0:t.field)&&O){const e=new Map;for(const r of O){const o=r[t.field]+"";e.set(o,(e.get(o)||0)+1)}O=Array.from(e,([e,r])=>({[t.field]:e,value:r}))}}if((null==v?void 0:v.bin)||(null==A?void 0:A.bin)){const e="Histogram";O&&($.data=O),(null==v?void 0:v.bin)?($.valueAccessor=v.field,(null==A?void 0:A.field)&&($.categoryAccessor=A.field),(null===(n=v.axis)||void 0===n?void 0:n.title)&&($.valueLabel=v.axis.title)):(null==A?void 0:A.bin)&&($.valueAccessor=A.field,(null==v?void 0:v.field)&&($.categoryAccessor=v.field),(null===(a=A.axis)||void 0===a?void 0:a.title)&&($.valueLabel=A.axis.title));const t="object"==typeof((null==v?void 0:v.bin)||(null==A?void 0:A.bin))?(null===(i=null==v?void 0:v.bin)||void 0===i?void 0:i.maxbins)||(null===(s=null==A?void 0:A.bin)||void 0===s?void 0:s.maxbins):void 0;return t&&($.bins=t),Le(e,$,g)}let R;switch(b){case"bar":R=function(e,t,r,o,n,a,i){var s,c,l,d,u,p;let y;return(null==r?void 0:r.field)&&!1!==(null==e?void 0:e.stack)&&!1!==(null==t?void 0:t.stack)&&null!==(null==e?void 0:e.stack)&&null!==(null==t?void 0:t.stack)?(y="StackedBarChart",o.stackBy=r.field):y="BarChart",$e(null==e?void 0:e.type)&&ke(null==t?void 0:t.type)?(o.categoryAccessor=e.field,o.valueAccessor=i?"value":t.field,(null===(s=null==e?void 0:e.axis)||void 0===s?void 0:s.title)&&(o.categoryLabel=e.axis.title),(null===(c=null==t?void 0:t.axis)||void 0===c?void 0:c.title)&&(o.valueLabel=t.axis.title)):ke(null==e?void 0:e.type)&&$e(null==t?void 0:t.type)?(o.categoryAccessor=t.field,o.valueAccessor=a?"value":e.field,o.orientation="horizontal",(null===(l=null==t?void 0:t.axis)||void 0===l?void 0:l.title)&&(o.categoryLabel=t.axis.title),(null===(d=null==e?void 0:e.axis)||void 0===d?void 0:d.title)&&(o.valueLabel=e.axis.title)):((null==e?void 0:e.field)&&(o.categoryAccessor=e.field),(null==t?void 0:t.field)&&(o.valueAccessor=i?"value":t.field),(null===(u=null==e?void 0:e.axis)||void 0===u?void 0:u.title)&&(o.categoryLabel=e.axis.title),(null===(p=null==t?void 0:t.axis)||void 0===p?void 0:p.title)&&(o.valueLabel=t.axis.title)),n&&(o.data=n),y}(v,A,x,$,O,z,C);break;case"line":if(R="LineChart",Fe(v,A,$,z,C),(null==x?void 0:x.field)&&($.lineBy=x.field),h.interpolate){const e=Ce[h.interpolate];e&&($.curve=e)}!0===h.point&&($.showPoints=!0),O&&($.data=O);break;case"area":if((null==x?void 0:x.field)?(R="StackedAreaChart",$.areaBy=x.field):R="AreaChart",Fe(v,A,$,z,C),h.interpolate){const e=Ce[h.interpolate];e&&($.curve=e)}void 0!==h.opacity&&($.areaOpacity=h.opacity),O&&($.data=O);break;case"point":case"circle":case"square":(null==S?void 0:S.field)?(R="BubbleChart",$.sizeBy=S.field,(null===(c=S.scale)||void 0===c?void 0:c.range)&&($.sizeRange=S.scale.range)):R="Scatterplot",Fe(v,A,$,z,C),O&&($.data=O);break;case"rect":R="Heatmap",(null==v?void 0:v.field)&&($.xAccessor=v.field),(null==A?void 0:A.field)&&($.yAccessor=A.field),(null==x?void 0:x.field)&&($.valueAccessor=x.field,delete $.colorBy),(null===(l=null==v?void 0:v.axis)||void 0===l?void 0:l.title)&&($.xLabel=v.axis.title),(null===(d=null==A?void 0:A.axis)||void 0===d?void 0:d.title)&&($.yLabel=A.axis.title),O&&($.data=O);break;case"arc":h.innerRadius&&h.innerRadius>0?(R="DonutChart",$.innerRadius=h.innerRadius):R="PieChart",(null==j?void 0:j.field)?$.valueAccessor=j.field:(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field),(null==x?void 0:x.field)&&($.categoryAccessor=x.field),(null==v?void 0:v.field)&&!(null==j?void 0:j.field)&&($.categoryAccessor=v.field),O&&($.data=O);break;case"tick":R="DotPlot",$e(null==v?void 0:v.type)?($.categoryAccessor=v.field,(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field),(null===(u=null==v?void 0:v.axis)||void 0===u?void 0:u.title)&&($.categoryLabel=v.axis.title),(null===(p=null==A?void 0:A.axis)||void 0===p?void 0:p.title)&&($.valueLabel=A.axis.title)):$e(null==A?void 0:A.type)?($.categoryAccessor=A.field,(null==v?void 0:v.field)&&($.valueAccessor=z?"value":v.field),$.orientation="horizontal",(null===(y=null==A?void 0:A.axis)||void 0===y?void 0:y.title)&&($.categoryLabel=A.axis.title),(null===(f=null==v?void 0:v.axis)||void 0===f?void 0:f.title)&&($.valueLabel=v.axis.title)):((null==v?void 0:v.field)&&($.categoryAccessor=v.field),(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field)),O&&($.data=O);break;default:g.push(`Unsupported mark type "${b}". Defaulting to Scatterplot.`),R="Scatterplot",Fe(v,A,$,z,C),O&&($.data=O)}return Le(R,$,g)}function Fe(e,t,r,o,n){var a,i;(null==e?void 0:e.field)&&(r.xAccessor=o?"value":e.field),(null==t?void 0:t.field)&&(r.yAccessor=n?"value":t.field),(null===(a=null==e?void 0:e.axis)||void 0===a?void 0:a.title)&&(r.xLabel=e.axis.title),(null===(i=null==t?void 0:t.axis)||void 0===i?void 0:i.title)&&(r.yLabel=t.axis.title)}function Le(e,t,r){const o={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){o.warnings=r;for(const e of r)console.warn("[semiotic/fromVegaLite] "+e)}return o}class Be{constructor(e){if(this._capacity=e,this.head=0,this._size=0,1>e)throw Error("RingBuffer capacity must be at least 1");this.buffer=Array(e)}push(e){let t;return this._size===this._capacity?t=this.buffer[this.head]:this._size++,this.buffer[this.head]=e,this.head=(this.head+1)%this._capacity,t}pushMany(e){const t=[];for(const r of e){const e=this.push(r);void 0!==e&&t.push(e)}return t}get(e){if(e>=0&&this._size>e)return this.buffer[(this.head-this._size+e+this._capacity)%this._capacity]}peek(){if(0!==this._size)return this.buffer[(this.head-1+this._capacity)%this._capacity]}peekOldest(){if(0!==this._size)return this.buffer[(this.head-this._size+this._capacity)%this._capacity]}[Symbol.iterator](){let e=0;return{next:()=>this._size>e?{done:!1,value:this.get(e++)}:{done:!0,value:void 0}}}forEach(e){const t=(this.head-this._size+this._capacity)%this._capacity;for(let r=0;this._size>r;r++)e(this.buffer[(t+r)%this._capacity],r)}toArray(){const e=Array(this._size),t=(this.head-this._size+this._capacity)%this._capacity;for(let r=0;this._size>r;r++)e[r]=this.buffer[(t+r)%this._capacity];return e}resize(e){if(1>e)throw Error("RingBuffer capacity must be at least 1");const t=this.toArray(),r=[];for(;t.length>e;)r.push(t.shift());this._capacity=e,this.buffer=Array(e),this.head=0,this._size=0;for(const e of t)this.push(e);return r}update(e,t){const r=[],o=(this.head-this._size+this._capacity)%this._capacity;for(let n=0;this._size>n;n++){const a=(o+n)%this._capacity,i=this.buffer[a];if(e(i)){let e;e="object"!=typeof i||null===i?i:Array.isArray(i)?[...i]:Object.assign({},i),r.push(e),this.buffer[a]=t(i)}}return r}remove(e){const t=[],r=[];if(this.forEach(o=>{e(o)?r.push(o):t.push(o)}),0===r.length)return r;this.buffer=Array(this._capacity),this.head=0,this._size=0;for(const e of t)this.push(e);return r}clear(){this.buffer=Array(this._capacity),this.head=0,this._size=0}get size(){return this._size}get capacity(){return this._capacity}get full(){return this._size===this._capacity}}class Ne{constructor(){this._min=1/0,this._max=-1/0,this._dirty=!1}push(e){Number.isNaN(e)||(this._min>e&&(this._min=e),e>this._max&&(this._max=e))}evict(e){e!==this._min&&e!==this._max||(this._dirty=!0)}recalculate(e,t){this._min=1/0,this._max=-1/0;for(const r of e){const e=t?t(r):r;Number.isNaN(e)||(this._min>e&&(this._min=e),e>this._max&&(this._max=e))}this._dirty=!1}clear(){this._min=1/0,this._max=-1/0,this._dirty=!1}get extent(){return[this._min,this._max]}get min(){return this._min}get max(){return this._max}get dirty(){return this._dirty}}const Te={background:"var(--semiotic-tooltip-bg, rgba(0, 0, 0, 0.85))",color:"var(--semiotic-tooltip-text, white)",padding:"8px 12px",borderRadius:"var(--semiotic-tooltip-radius, 6px)",fontSize:"var(--semiotic-tooltip-font-size, 14px)",fontFamily:"var(--semiotic-font-family, inherit)",lineHeight:"1.5",boxShadow:"var(--semiotic-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15))",pointerEvents:"none",maxWidth:"300px",wordWrap:"break-word"};function Ee(e,t){return"function"==typeof t?t(e):e[t]}function Pe(e,t){if(t)return t(e);if(null==e)return"";if("number"==typeof e){if(!Number.isFinite(e))return e+"";const t=Number.isInteger(e)?e:parseFloat(e.toPrecision(6));return Math.abs(t)>9999?t.toLocaleString():t+""}return e instanceof Date?e.toLocaleDateString():"object"==typeof e&&null!==e?void 0!==e.id?e.id+"":void 0!==e.name?e.name+"":JSON.stringify(e):e+""}function Ie(r={}){const{fields:o,title:n,format:a,style:i={},className:s=""}=r;return r=>{if(!r||"object"!=typeof r)return null;let c;const l=[];if(n){const e=Ee(r,n);c=Pe(e,a)}if(o&&o.length>0)o.forEach(e=>{let t,o,n;"string"==typeof e?(t=e,o=e,n=a):(t=e.label,o=e.accessor||e.key||"",n=e.format||a);const i=Ee(r,o);l.push({label:t,value:Pe(i,n)})});else if(!n){const e=["value","y","name","id","label"];for(const t of e)if(void 0!==r[t]){c=Pe(r[t],a);break}if(!c){const e=Object.keys(r).filter(e=>!e.startsWith("_"));e.length>0&&(c=Pe(r[e[0]],a))}}const d=Object.assign(Object.assign({},Te),i);return t("div",{className:("semiotic-tooltip "+s).trim(),style:d,children:[c&&e("div",{style:{fontWeight:l.length>0?"bold":"normal"},children:c}),l.map((e,r)=>t("div",{style:{marginTop:0===r&&c?"4px":0},children:[e.label&&t("span",{children:[e.label,": "]}),e.value]},r))]})}}function qe(){return r=>{var o,n,a,i,s,c,l,d,u,p;const y=r.allSeries;if(!y||0===y.length){const t=null!==(s=null!==(i=null!==(n=null===(o=r.data)||void 0===o?void 0:o.value)&&void 0!==n?n:null===(a=r.data)||void 0===a?void 0:a.y)&&void 0!==i?i:r.value)&&void 0!==s?s:r.y;return e("div",{className:"semiotic-tooltip",style:Te,children:e("div",{children:Pe(t)})})}const f=null!==(p=null!==(d=null!==(c=r.xValue)&&void 0!==c?c:null===(l=r.data)||void 0===l?void 0:l.time)&&void 0!==d?d:null===(u=r.data)||void 0===u?void 0:u.x)&&void 0!==p?p:r.time;return t("div",{className:"semiotic-tooltip",style:Te,children:[null!=f&&e("div",{style:{fontWeight:600,marginBottom:4,fontSize:"0.9em",borderBottom:"1px solid var(--semiotic-border, #eee)",paddingBottom:4},children:Pe(f)}),y.map((r,o)=>t("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"1px 0"},children:[e("span",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:r.color,flexShrink:0}}),e("span",{style:{flex:1,fontSize:"0.85em"},children:r.group}),e("span",{style:{fontWeight:500,fontSize:"0.85em"},children:Pe(r.value)})]},o))]})}}function Me(t){if(!0===t)return Ie();if("function"==typeof t){const r=t;return t=>{const o=r(!t||"object"!=typeof t.data||null===t.data||"node"!==t.type&&"edge"!==t.type?t:t.data);return null==o?null:e("div",{className:"semiotic-tooltip",style:Te,children:o})}}return!1!==t&&void 0!==t&&("object"==typeof t&&null!==t&&("fields"in t||"title"in t)?Ie(t):Ie())}export{A as CARBON_ALERT,v as CARBON_CATEGORICAL_14,y as COLOR_BLIND_SAFE_CATEGORICAL,g as DARK_THEME,b as HIGH_CONTRAST_THEME,Ne as IncrementalExtent,f as LIGHT_THEME,qe as MultiPointTooltip,Be as RingBuffer,x as THEME_PRESETS,F as ThemeProvider,P as adaptiveTimeTicks,Ae as configToJSX,ve as copyConfig,D as createHatchPattern,I as darkenColor,Se as deserializeSelections,le as diagnoseConfig,je as exportChart,be as fromConfig,me as fromURL,_e as fromVegaLite,de as getHitRadius,q as lightenColor,Me as normalizeTooltip,S as resolveThemePreset,xe as serializeSelections,B as smartTickFormat,j as themeToCSS,w as themeToTokens,ge as toConfig,he as toURL,z as useHighContrast,k as useReducedMotion,L as useTheme,ee as validateProps};
|
|
1
|
+
"use client";
|
|
2
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{useRef as o,useMemo as n,useContext as a,useCallback as i,useSyncExternalStore as s,createContext as c,useState as l,useEffect as d}from"react";function u(e,t){const r=new EventTarget;let o=Object.assign(Object.assign({},e(function(e){o=Object.assign(Object.assign({},o),e(o)),r.dispatchEvent(new Event("update"))})),null!=t?t:{});return{getState:()=>o,subscribe:function(e){return r.addEventListener("update",e),()=>r.removeEventListener("update",e)}}}function p(e){if(!e.accessibility)return e;let t=e;if(e.accessibility.colorBlindSafe&&(t=Object.assign(Object.assign({},t),{colors:Object.assign(Object.assign({},t.colors),{categorical:y})})),e.accessibility.highContrast){const e="dark"===t.mode;t=Object.assign(Object.assign({},t),{colors:Object.assign(Object.assign({},t.colors),{text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"})})}return t}const y=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],f={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}},g={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}},b={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:y,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 h(e,t){if("light"===t)return f;if("dark"===t)return g;if("high-contrast"===t)return b;if("string"==typeof t)return void 0!==console&&console.warn(`[ThemeStore] Unknown theme preset "${t}". Keeping current theme.`),e;if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?g:f;return p(Object.assign(Object.assign(Object.assign({},e),t),{colors:Object.assign(Object.assign({},e.colors),t.colors||{}),typography:Object.assign(Object.assign({},e.typography),t.typography||{})}))}return p(Object.assign(Object.assign(Object.assign({},e),t),{colors:Object.assign(Object.assign({},e.colors),t.colors||{}),typography:Object.assign(Object.assign({},e.typography),t.typography||{})}))}const[m,v]=function(t){let r=null;const l=()=>(r||(r=c(null)),r),d=u(t);return[function({children:r,initialState:a}){const i=o(a),s=n(()=>u(t,i.current),[]),c=l();return e(c.Provider,{value:s,children:r})},e=>{var t;const r=l(),n=null!==(t=a(r))&&void 0!==t?t:d,c=o(e);c.current=e;const u=i(()=>c.current(n.getState()),[n]),p=i(()=>c.current(n.getState()),[n]);return s(n.subscribe,u,p)}]}(e=>({theme:f,setTheme(t){e(e=>({theme:h(e.theme,t)}))}})),A=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],x={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},S={light:f,dark:g,"high-contrast":b,pastels:{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"},"pastels-dark":{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"},"bi-tool":{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"},"bi-tool-dark":{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"},italian:{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"},"italian-dark":{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"},tufte:{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"},"tufte-dark":{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"},journalist:{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"},"journalist-dark":{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"},playful:{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"},"playful-dark":{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"},carbon:{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"},"carbon-dark":{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"}};function w(e){return S[e]}function j(e,t=":root"){var r,o,n,a,i;const s=[];return s.push(` --semiotic-bg: ${e.colors.background};`),s.push(` --semiotic-text: ${e.colors.text};`),s.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),s.push(` --semiotic-grid: ${e.colors.grid};`),s.push(` --semiotic-border: ${e.colors.border};`),s.push(` --semiotic-primary: ${e.colors.primary};`),s.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&s.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&s.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&s.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&s.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(r=e.tooltip)||void 0===r?void 0:r.background)&&s.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(o=e.tooltip)||void 0===o?void 0:o.text)&&s.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(n=e.tooltip)||void 0===n?void 0:n.borderRadius)&&s.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(a=e.tooltip)||void 0===a?void 0:a.fontSize)&&s.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(i=e.tooltip)||void 0===i?void 0:i.shadow)&&s.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&s.push(` --semiotic-border-radius: ${e.borderRadius};`),e.colors.annotation&&s.push(` --semiotic-annotation-color: ${e.colors.annotation};`),null!=e.typography.legendSize&&s.push(` --semiotic-legend-font-size: ${e.typography.legendSize}px;`),null!=e.typography.titleFontSize&&s.push(` --semiotic-title-font-size: ${e.typography.titleFontSize}px;`),null!=e.typography.tickFontFamily&&s.push(` --semiotic-tick-font-family: ${e.typography.tickFontFamily};`),s.push(` --semiotic-secondary: ${e.colors.secondary||e.colors.primary};`),s.push(` --semiotic-surface: ${e.colors.surface||e.colors.background};`),e.colors.success&&s.push(` --semiotic-success: ${e.colors.success};`),e.colors.danger&&s.push(` --semiotic-danger: ${e.colors.danger};`),e.colors.warning&&s.push(` --semiotic-warning: ${e.colors.warning};`),e.colors.error&&s.push(` --semiotic-error: ${e.colors.error};`),e.colors.info&&s.push(` --semiotic-info: ${e.colors.info};`),`${t} {\n${s.join("\n")}\n}`}function O(e){var t,r,o,n,a,i;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===(t=e.tooltip)||void 0===t?void 0:t.background)||e.colors.background,$type:"color"},text:{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.text)||e.colors.text,$type:"color"},radius:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(n=e.tooltip)||void 0===n?void 0:n.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.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!==(i=e.colors.selectionOpacity)&&void 0!==i?i:.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"}}:{})}}function $(e,t){return"function"==typeof e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))}function k(e){return!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia(e).matches}function z(){const[e,t]=l(()=>k("(prefers-reduced-motion: reduce)"));return d(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return t(e.matches),$(e,e=>t(e.matches))},[]),e}function C(){const[e,t]=l(()=>k("(forced-colors: active)"));return d(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(forced-colors: active)");return t(e.matches),$(e,e=>t(e.matches))},[]),e}const R=r.createContext(void 0),_="undefined"==typeof window?r.useEffect:r.useLayoutEffect;function F(e){if("string"!=typeof e)return e;if("light"===e||"dark"===e||"high-contrast"===e)return e;return w(e)||(void 0!==console&&console.warn(`[ThemeProvider] Unknown theme preset "${e}". Falling back to light theme.`),"light")}function L({theme:e}){const t=v(e=>e.setTheme),o=v(e=>e.theme),n=r.useRef(o);n.current=o;const a=r.useRef(null);r.useEffect(()=>{if(void 0!==e)return;if("undefined"==typeof window||!window.matchMedia)return;const r=window.matchMedia("(forced-colors: active)");return r.matches&&(a.current=n.current===b?f:n.current,t("high-contrast")),$(r,e=>{var r,o;e.matches?(a.current=n.current===b?null!==(r=a.current)&&void 0!==r?r:f:n.current,t("high-contrast")):(function(e,t){e(t===f?"light":t===g?"dark":t===b?"high-contrast":t)}(t,null!==(o=a.current)&&void 0!==o?o:f),a.current=null)})},[e,t]);const i=r.useRef(!1);return _(()=>{i.current?void 0!==e&&t(F(e)):i.current=!0},[e,t]),null}function B({children:t}){var o,n,a,i,s;const c=v(e=>e.theme),l=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"relative","--semiotic-bg":c.colors.background,"--semiotic-text":c.colors.text,"--semiotic-text-secondary":c.colors.textSecondary,"--semiotic-grid":c.colors.grid,"--semiotic-border":c.colors.border,"--semiotic-primary":c.colors.primary,"--semiotic-font-family":c.typography.fontFamily},c.colors.focus?{"--semiotic-focus":c.colors.focus}:{}),(null===(o=c.tooltip)||void 0===o?void 0:o.background)?{"--semiotic-tooltip-bg":c.tooltip.background}:{}),(null===(n=c.tooltip)||void 0===n?void 0:n.text)?{"--semiotic-tooltip-text":c.tooltip.text}:{}),(null===(a=c.tooltip)||void 0===a?void 0:a.borderRadius)?{"--semiotic-tooltip-radius":c.tooltip.borderRadius}:{}),(null===(i=c.tooltip)||void 0===i?void 0:i.fontSize)?{"--semiotic-tooltip-font-size":c.tooltip.fontSize}:{}),(null===(s=c.tooltip)||void 0===s?void 0:s.shadow)?{"--semiotic-tooltip-shadow":c.tooltip.shadow}:{}),c.borderRadius?{"--semiotic-border-radius":c.borderRadius}:{}),c.colors.selection?{"--semiotic-selection-color":c.colors.selection}:{}),null!=c.colors.selectionOpacity?{"--semiotic-selection-opacity":c.colors.selectionOpacity+""}:{}),c.colors.diverging?{"--semiotic-diverging":c.colors.diverging}:{}),c.colors.annotation?{"--semiotic-annotation-color":c.colors.annotation}:{}),null!=c.typography.legendSize?{"--semiotic-legend-font-size":c.typography.legendSize+"px"}:{}),null!=c.typography.titleFontSize?{"--semiotic-title-font-size":c.typography.titleFontSize+"px"}:{}),null!=c.typography.tickFontFamily?{"--semiotic-tick-font-family":c.typography.tickFontFamily}:{}),{"--semiotic-secondary":c.colors.secondary||c.colors.primary,"--semiotic-surface":c.colors.surface||c.colors.background}),c.colors.success?{"--semiotic-success":c.colors.success}:{}),c.colors.danger?{"--semiotic-danger":c.colors.danger}:{}),c.colors.warning?{"--semiotic-warning":c.colors.warning}:{}),c.colors.error?{"--semiotic-error":c.colors.error}:{}),c.colors.info?{"--semiotic-info":c.colors.info}:{}),d=r.useContext(R),u={};return d&&(u["data-semiotic-theme"]=d),e("div",Object.assign({style:l},u,{children:t}))}function T({theme:o,children:n}){const a="string"==typeof o&&w(o)?o:void 0,i=r.useMemo(()=>function(e){return void 0!==e?h(f,F(e)):"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(forced-colors: active)").matches?b:f}(o),[o]);return e(m,{initialState:{theme:i},children:t(R.Provider,{value:a,children:[e(L,{theme:o}),e(B,{children:n})]})})}function E(){return v(e=>e.theme)}function N(e){if(null==e)return"";if("number"!=typeof e)return e+"";if(!isFinite(e))return e+"";if(0===e)return"0";const t=parseFloat(e.toPrecision(12)),r=Math.abs(t);return 1e9>r?1e6>r?1e4>r?Number.isInteger(t)?t+"":parseFloat(t.toPrecision(6))+"":parseFloat((t/1e3).toPrecision(3))+"K":parseFloat((t/1e6).toPrecision(3))+"M":parseFloat((t/1e9).toPrecision(3))+"B"}const P=864e5;function I(e){return 10>e?"0"+e:e+""}const q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(e){let t,r=e;return(o,n,a)=>{const i=o instanceof Date?o:new Date(o);e||!a||2>a.length||a===t||(t=a,r=function(e){if(2>e.length)return"days";const t=[];for(let r=1;e.length>r;r++)t.push(e[r]-e[r-1]);t.sort((e,t)=>e-t);const r=t[Math.floor(t.length/2)];return 12e4>r?"seconds":72e5>r?"minutes":2*P>r?"hours":60*P>r?"days":400*P>r?"months":"years"}(a));const s=r||"days";return null!=n&&0!==n&&a&&0!==a.length?function(e,t,r){const o=e.getUTCFullYear()!==t.getUTCFullYear(),n=o||e.getUTCMonth()!==t.getUTCMonth(),a=n||e.getUTCDate()!==t.getUTCDate(),i=a||e.getUTCHours()!==t.getUTCHours(),s=i||e.getUTCMinutes()!==t.getUTCMinutes(),c=q[e.getUTCMonth()],l=e.getUTCDate(),d=e.getUTCFullYear(),u=I(e.getUTCHours()),p=I(e.getUTCMinutes()),y=I(e.getUTCSeconds());switch(r){case"seconds":return o?`${c} ${l}, ${d} ${u}:${p}:${y}`:a?`${c} ${l} ${u}:${p}:${y}`:i?`${u}:${p}:${y}`:s?`${p}:${y}`:":"+y;case"minutes":return o?`${c} ${l}, ${d} ${u}:${p}`:a?`${c} ${l} ${u}:${p}`:i?`${u}:${p}`:":"+p;case"hours":return o?`${c} ${l}, ${d} ${u}:00`:n?`${c} ${l} ${u}:${p}`:a?`${c} ${l} ${u}:00`:u+":00";case"days":return o?`${c} ${l}, ${d}`:n?`${c} ${l}`:""+l;case"months":return o?`${c} ${d}`:""+c;case"years":return""+d}}(i,new Date(a[n-1]),s):function(e,t){const r=q[e.getUTCMonth()],o=e.getUTCDate(),n=e.getUTCFullYear(),a=I(e.getUTCHours()),i=I(e.getUTCMinutes()),s=I(e.getUTCSeconds());switch(t){case"seconds":return`${r} ${o}, ${n} ${a}:${i}:${s}`;case"minutes":case"hours":return`${r} ${o}, ${n} ${a}:${i}`;case"days":return`${r} ${o}, ${n}`;case"months":return`${r} ${n}`;case"years":return""+n}}(i,s)}}function D(e,t=.5){const r=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!r)return e;const o=Math.round(parseInt(r[1],16)*(1-t)),n=Math.round(parseInt(r[2],16)*(1-t)),a=Math.round(parseInt(r[3],16)*(1-t));return`#${o.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function U(e,t=.5){const r=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!r)return e;const o=Math.round(parseInt(r[1],16)+(255-parseInt(r[1],16))*t),n=Math.round(parseInt(r[2],16)+(255-parseInt(r[2],16))*t),a=Math.round(parseInt(r[3],16)+(255-parseInt(r[3],16))*t);return`#${o.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}let H=null;function G(e={},t){const{background:r="transparent",stroke:o="#000",lineWidth:n=1.5,spacing:a=6,angle:i=45}=e,s=Math.max(8,Math.ceil(2*a));let c;try{c=function(e){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(e,e):(H||(H=document.createElement("canvas")),H.width=e,H.height=e,H)}(s)}catch(e){return null}const l=c.getContext("2d");if(!l)return null;r&&"transparent"!==r?(l.fillStyle=r,l.fillRect(0,0,s,s)):l.clearRect(0,0,s,s),l.strokeStyle=o,l.lineWidth=n,l.lineCap="square";const d=i*Math.PI/180;if(45===i||-45===i){const e=i>0?1:-1;for(let t=-s;2*s>=t;t+=a)l.beginPath(),l.moveTo(t,0),l.lineTo(t+e*s,s),l.stroke()}else{l.save(),l.translate(s/2,s/2),l.rotate(d);const e=2*s;for(let t=-e;e>=t;t+=a)l.beginPath(),l.moveTo(-e,t),l.lineTo(e,t),l.stroke();l.restore()}return(t||l).createPattern(c,"repeat")}function W(e,t){const r=e.length,o=t.length,n=Array(o+1);for(let e=0;o>=e;e++)n[e]=e;for(let a=1;r>=a;a++){let r=n[0];n[0]=a;for(let i=1;o>=i;i++){const o=n[i];n[i]=e[a-1]===t[i-1]?r:1+Math.min(r,n[i],n[i-1]),r=o}}return n[o]}function V(e,t,r=3){let o,n=r+1;for(const r of t){const t=W(e.toLowerCase(),r.toLowerCase());n>t&&(n=t,o=r)}return n>r?void 0:o}function J(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:e}function Y(e,t){var r;if(0===t.length)return null;const o=e.toLowerCase();return t.find(e=>e.toLowerCase().includes(o)||o.includes(e.toLowerCase()))||(null!==(r=V(e,t,3))&&void 0!==r?r:null)}const X={width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},frameProps:{type:"object"},onClick:{type:"function"}},K={xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"}},Q={categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"}},Z=["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"],ee=["vertical","horizontal"],te={LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:Z},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},fillArea:{type:"boolean"},areaOpacity:{type:"number"}})},AreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:Z},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"}})},StackedAreaChart:{required:["data","areaBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:Z},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},normalize:{type:"boolean"}})},Scatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}})},BubbleChart:{required:["data","sizeBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},bubbleOpacity:{type:"number"},bubbleStrokeWidth:{type:"number"},bubbleStrokeColor:{type:"string"}})},Heatmap:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},colorScheme:{type:"string",enum:["blues","reds","greens","viridis","custom"]},customColorScale:{type:["object","function"]},showValues:{type:"boolean"},valueFormat:{type:"function"},cellBorderColor:{type:"string"},cellBorderWidth:{type:"number"},showLegend:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},QuadrantChart:{required:["quadrants"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},quadrants:{type:"object"},xCenter:{type:"number"},yCenter:{type:"number"},centerlineStyle:{type:"object"},showQuadrantLabels:{type:"boolean"},quadrantLabelSize:{type:"number"},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}})},MultiAxisLineChart:{required:["series"],dataShape:"array",dataAccessors:["xAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},colorScheme:{type:["string","array"]},curve:{type:"string"},lineWidth:{type:"number"},annotations:{type:"array"}})},CandlestickChart:{required:["highAccessor","lowAccessor"],dataShape:"array",dataAccessors:["xAccessor","highAccessor","lowAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},highAccessor:{type:["string","function"]},lowAccessor:{type:["string","function"]},openAccessor:{type:["string","function"]},closeAccessor:{type:["string","function"]},candlestickStyle:{type:"object"},mode:{type:"string",enum:["primary","context","sparkline"]},annotations:{type:"array"}})},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},X),K),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},orderAccessor:{type:["string","function"]},orderLabel:{type:"string"},pointRadius:{type:"number"},pointIdAccessor:{type:["string","function"]},annotations:{type:"array"}})},BarChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},stackBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},normalize:{type:"boolean"},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},LikertChart:{required:["levels"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},levelAccessor:{type:["string","function"]},countAccessor:{type:["string","function"]},levels:{type:"array"},orientation:{type:"string",enum:ee},barPadding:{type:"number"}})},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"}})},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},BoxPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}})},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},relative:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},ViolinPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},bins:{type:"number"},curve:{type:"string"},showIQR:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}})},RidgelinePlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},amplitude:{type:"number"},categoryPadding:{type:"number"}})},DotPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:ee},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"}})},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},X),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"},cornerRadius:{type:"number"}})},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},X),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"},cornerRadius:{type:"number"}})},GaugeChart:{required:["value"],dataShape:"none",dataAccessors:[],props:Object.assign(Object.assign({},X),{value:{type:"number"},min:{type:"number"},max:{type:"number"},thresholds:{type:"array"},arcWidth:{type:"number"},sweep:{type:"number"},showNeedle:{type:"boolean"},needleColor:{type:"string"},centerContent:{type:["object","string","number","function"]},valueFormat:{type:"function"},showScaleLabels:{type:"boolean"},backgroundColor:{type:"string"}})},FunnelChart:{required:["data"],dataShape:"array",dataAccessors:["stepAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},stepAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},connectorOpacity:{type:"number"},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},SwimlaneChart:{required:["subcategoryAccessor"],dataShape:"array",dataAccessors:["categoryAccessor","subcategoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},X),Q),{data:{type:"array"},categoryAccessor:{type:["string","function"]},subcategoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},barPadding:{type:"number"},showCategoryTicks:{type:"boolean"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}})},ForceDirectedGraph:{required:["nodes","edges"],dataShape:"network",dataAccessors:["nodeIDAccessor","sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},X),{nodes:{type:"array"},edges:{type:"array"},nodeIDAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},nodeLabel:{type:["string","function"]},nodeSize:{type:["number","string","function"]},nodeSizeRange:{type:"array"},edgeWidth:{type:["number","string","function"]},edgeColor:{type:"string"},edgeOpacity:{type:"number"},iterations:{type:"number"},forceStrength:{type:"number"},showLabels:{type:"boolean"}})},SankeyDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},X),{nodes:{type:"array"},edges:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target","gradient"]},orientation:{type:"string",enum:ee},nodeAlign:{type:"string",enum:["justify","left","right","center"]},nodePaddingRatio:{type:"number"},nodeWidth:{type:"number"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"},edgeSort:{type:"function"}})},ChordDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:Object.assign(Object.assign({},X),{nodes:{type:"array"},edges:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target"]},padAngle:{type:"number"},groupWidth:{type:"number"},sortGroups:{type:"function"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"}})},TreeDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"object"},layout:{type:"string",enum:["tree","cluster","partition","treemap","circlepack"]},orientation:{type:"string",enum:["vertical","horizontal","radial"]},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},edgeStyle:{type:"string",enum:["line","curve"]},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},nodeSize:{type:"number"}})},Treemap:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]}})},CirclePack:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},circleOpacity:{type:"number"}})},OrbitDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"object"},childrenAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},orbitMode:{type:["string","array"]},speed:{type:"number"},revolution:{type:"function"},eccentricity:{type:["number","function"]},orbitSize:{type:["number","function"]},nodeRadius:{type:["number","function"]},showRings:{type:"boolean"},showLabels:{type:"boolean"},animated:{type:"boolean"},colorByDepth:{type:"boolean"},annotations:{type:"array"},foregroundGraphics:{type:"object"}})},RealtimeLineChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},stroke:{type:"string"},strokeWidth:{type:"number"},strokeDasharray:{type:"string"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeHistogram:{required:["binSize"],dataShape:"realtime",dataAccessors:[],props:{binSize:{type:"number"},size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},brush:{type:["boolean","string","object"]},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeSwarmChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},radius:{type:"number"},fill:{type:"string"},opacity:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeWaterfallChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},positiveColor:{type:"string"},negativeColor:{type:"string"},connectorStroke:{type:"string"},connectorWidth:{type:"number"},gap:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},transition:{type:"object"}}},RealtimeHeatmap:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},heatmapXBins:{type:"number"},heatmapYBins:{type:"number"},aggregation:{type:"string",enum:["count","sum","mean"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltipContent:{type:"function"},tooltip:{type:["function","object"]},onHover:{type:"function"},annotations:{type:"array"},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},width:{type:"number"},height:{type:"number"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"}}},ScatterplotMatrix:{required:["data","fields"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"array"},fields:{type:"array"}})},MinimapChart:{required:["data"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},X),{data:{type:"array"}})},ChoroplethMap:{required:["areas"],dataShape:"array",dataAccessors:["valueAccessor"],props:Object.assign(Object.assign({},X),{areas:{type:["array","string"]},valueAccessor:{type:["string","function"]},colorScheme:{type:["string","array"]},projection:{type:"string"}})},ProportionalSymbolMap:{required:["points"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign({},X),{points:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},areas:{type:["array","string"]}})},FlowMap:{required:["flows"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},X),{flows:{type:"array"},nodes:{type:"array"},valueAccessor:{type:["string","function"]}})},DistanceCartogram:{required:["points"],dataShape:"array",dataAccessors:[],props:Object.assign(Object.assign({},X),{points:{type:"array"},center:{type:"array"},costAccessor:{type:["string","function"]}})}};function re(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}function oe(e,t){const r=[],o=te[e];if(!o)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(te).join(", ")}`]};for(const n of o.required)null==t[n]&&r.push(`"${n}" is required for ${e}.`);for(const[e,n]of Object.entries(t)){if(null==n)continue;const t=o.props[e];if(t){if(!re(n,t.type)){const o=Array.isArray(t.type)?t.type.join(" | "):t.type;r.push(`"${e}" should be ${o}, got ${Array.isArray(n)?"array":typeof n}.`);continue}t.enum&&"string"==typeof n&&!t.enum.includes(n)&&r.push(`"${e}" value "${n}" is not valid. Expected one of: ${t.enum.join(", ")}.`)}}const n=Object.keys(o.props),a=new Set(n);for(const o of Object.keys(t))if(void 0!==t[o]&&!a.has(o)){const t=V(o,n),a=t?`Unknown prop "${o}" for ${e}. Did you mean "${t}"?`:`Unknown prop "${o}" for ${e}. Valid props: ${n.join(", ")}.`;r.push(a)}if("array"===o.dataShape){const n=t.data,a={};for(const e of o.dataAccessors){const r=t[e];"string"==typeof r&&(a[e]=r)}const i=function({componentName:e,data:t,accessors:r,requiredProps:o}){if(o)for(const[t,r]of Object.entries(o))if(null==r)return`${e}: ${t} is required. Provide a field name or function.`;if(null==t)return null;if(!Array.isArray(t)||0===t.length)return e+": No data provided. Pass a non-empty array to the data prop.";if(!Array.isArray(t)&&"object"==typeof t)return e+": data should be an array, but received an object. If this is hierarchical data, use TreeDiagram, Treemap, or CirclePack instead.";if(r){const o=J(t).find(e=>e&&"object"==typeof e);if(o){const t=Object.keys(o);for(const[n,a]of Object.entries(r))if(a&&"string"==typeof a&&!(a in o)){const r=Y(a,t),o=r?` Try ${n}="${r}".`:"";return`${e}: ${n} "${a}" not found in data. Available fields: ${t.join(", ")}.${o}`}}}return null}({componentName:e,data:n,accessors:Object.keys(a).length>0?a:void 0});i&&r.push(i)}else if("object"===o.dataShape){const o=function({componentName:e,data:t,dataLabel:r="data"}){return null==t?`${e}: No ${r} provided. Pass a hierarchical object with children: { name: "root", children: [...] }.`:Array.isArray(t)?`${e}: ${r} should be a single root object, not an array. Expected: { name: "root", children: [...] }. If you have flat data, use LineChart, BarChart, or Scatterplot instead.`:null}({componentName:e,data:t.data});o&&r.push(o)}else if("network"===o.dataShape){const n=function({componentName:e,nodes:t,edges:r,nodesRequired:o=!1,edgesRequired:n=!0,accessors:a}){if(null==t&&null==r)return null;if(n&&(!r||!Array.isArray(r)||0===r.length))return e+': No edges provided. Pass a non-empty array: edges={[{ source: "A", target: "B", value: 10 }, ...]}.';if(o&&(!t||!Array.isArray(t)||0===t.length))return e+': No nodes provided. Pass a non-empty array: nodes={[{ id: "A" }, { id: "B" }, ...]}.';if(a&&t&&t.length>0){const r=J(t).find(e=>e&&"object"==typeof e);if(r){const t=Object.keys(r);for(const[o,n]of Object.entries(a))if(n&&"string"==typeof n&&!(n in r)){const r=Y(n,t),a=r?` Try ${o}="${r}".`:"";return`${e}: ${o} "${n}" not found in node data. Available fields: ${t.join(", ")}.${a}`}}}return null}({componentName:e,nodes:t.nodes,edges:t.edges,nodesRequired:o.required.includes("nodes"),edgesRequired:o.required.includes("edges")});n&&r.push(n)}return{valid:0===r.length,errors:r}}const ne=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),ae=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),ie=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),se=new Set(["LineChart","AreaChart","StackedAreaChart"]),ce=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]);function le(e){const t=e.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);if(!t)return null;const[r,o,n]=[parseInt(t[1],16)/255,parseInt(t[2],16)/255,parseInt(t[3],16)/255],a=e=>e>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92;return.2126*a(r)+.7152*a(o)+.0722*a(n)}function de(e,t){const r=le(e),o=le(t);return null===r||null===o?null:(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}const ue=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function pe(e,t){const r=[],o=oe(e,t);for(const e of o.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return te[e]?(function(e,t,r){const o=te[e];if(o){if("array"===o.dataShape){const e=t.data;e&&Array.isArray(e)&&0===e.length&&r.push({severity:"error",code:"EMPTY_DATA",message:"data is an empty array — chart will render blank.",fix:"Provide at least one data point: data={[{ x: 1, y: 2 }]}."})}"network"===o.dataShape&&t.edges&&Array.isArray(t.edges)&&0===t.edges.length&&r.push({severity:"error",code:"EMPTY_EDGES",message:"edges is an empty array — network chart will render blank.",fix:'Provide at least one edge: edges={[{ source: "A", target: "B" }]}.'})}}(e,t,r),function(e,t,r){const o=t.width,n=t.height;if(void 0===o||"number"==typeof o&&o>0||r.push({severity:"error",code:"BAD_WIDTH",message:`width=${JSON.stringify(o)} — chart needs a positive number.`,fix:"Set width={600} or use responsiveWidth={true}."}),void 0===n||"number"==typeof n&&n>0||r.push({severity:"error",code:"BAD_HEIGHT",message:`height=${JSON.stringify(n)} — chart needs a positive number.`,fix:"Set height={400} or use responsiveHeight={true}."}),t.size&&Array.isArray(t.size)){const[e,o]=t.size;(null!=e&&0>=e||null!=o&&0>=o)&&r.push({severity:"error",code:"BAD_SIZE",message:`size=[${e}, ${o}] — both dimensions must be positive.`,fix:"Set size={[600, 400]}."})}}(0,t,r),function(e,t,r){const o=te[e];if(!o||"array"!==o.dataShape)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const a=n[0];if(!a||"object"!=typeof a)return;const i=Object.keys(a);for(const e of o.dataAccessors){const o=t[e];"string"==typeof o&&(o in a||r.push({severity:"error",code:"ACCESSOR_MISSING",message:`${e}="${o}" not found in data. Available fields: ${i.join(", ")}.`,fix:`Change ${e} to one of: ${i.map(e=>`"${e}"`).join(", ")}.`}))}}(e,t,r),function(e,t,r){ne.has(e)&&Array.isArray(t.data)&&r.push({severity:"error",code:"HIERARCHY_FLAT_ARRAY",message:e+" expects hierarchical data but received a flat array.",fix:'Pass a root object: data={{ name: "root", children: [...] }}. For flat data, use BarChart or LineChart.'})}(e,t,r),function(e,t,r){ae.has(e)&&(t.edges||t.data||r.push({severity:"error",code:"NETWORK_NO_EDGES",message:e+" requires an edges prop.",fix:'Provide edges={[{ source: "A", target: "B", value: 10 }]}.'}))}(e,t,r),function(e,t,r){const o=te[e];if(!o||"array"!==o.dataShape)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const a=n[0];if(!a||"object"!=typeof a)return;const i=t.xAccessor;"string"==typeof i&&a[i]instanceof Date&&!t.xFormat&&r.push({severity:"warning",code:"DATE_NO_FORMAT",message:`xAccessor "${i}" contains Date objects but no xFormat is provided. Axis ticks may display "[object Object]".`,fix:"Add xFormat={d => d.toLocaleDateString()} or use timestamps (d.getTime()) instead of Date objects."})}(e,t,r),function(e,t,r){t.linkedHover&&!t.selection&&r.push({severity:"warning",code:"LINKED_HOVER_NO_SELECTION",message:"linkedHover is set but selection is not — this chart emits hover events but won't highlight from others.",fix:`Add selection={{ name: "${"object"==typeof t.linkedHover&&t.linkedHover.name||"hl"}" }} to receive cross-highlights.`})}(0,t,r),function(e,t,r){var o;if(!ie.has(e))return;const n=t.rExtent||t.yExtent;n&&Array.isArray(n)&&n.length>=1&&null!=n[0]&&0!==n[0]&&r.push({severity:"warning",code:"NON_ZERO_BASELINE",message:`${e} has a non-zero baseline (${n[0]}). Bar and area charts should start at zero to avoid exaggerating differences.`,fix:`Remove the custom extent minimum or set it to 0: rExtent={[0, ${null!==(o=n[1])&&void 0!==o?o:"auto"}]}. For trend-focused charts, use LineChart instead.`})}(e,t,r),function(e,t,r){if(!se.has(e))return;if(t.gapStrategy)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const n=t.yAccessor||"y";"string"==typeof n&&o.some(e=>{const t=e[n];return null==t||Number.isNaN(t)})&&r.push({severity:"warning",code:"DATA_GAPS",message:`Data contains null/undefined/NaN values in "${n}". Default behavior breaks the line at gaps.`,fix:'Set gapStrategy="break" (default), "interpolate", or "zero" to control gap handling.'})}(e,t,r),function(e,t,r){var o,n;const a=null!==(o=t.width)&&void 0!==o?o:600,i=null!==(n=t.height)&&void 0!==n?n:400,s=t.margin;if(!s||"object"!=typeof s)return;const c=(s.left||0)+(s.right||0),l=(s.top||0)+(s.bottom||0);a>c||r.push({severity:"error",code:"MARGIN_OVERFLOW_H",message:`Horizontal margins (${c}px) >= width (${a}px) — no drawing area left.`,fix:"Reduce margin.left/right or increase width."}),i>l||r.push({severity:"error",code:"MARGIN_OVERFLOW_V",message:`Vertical margins (${l}px) >= height (${i}px) — no drawing area left.`,fix:"Reduce margin.top/bottom or increase height."})}(0,t,r),function(e,t,r){var o;const n=te[e];if(!n||"array"!==n.dataShape)return;const a=t.data;if(!a||!Array.isArray(a)||0===a.length)return;const i=[];t.xAccessor&&"string"==typeof t.xAccessor&&i.push({prop:"xAccessor",name:t.xAccessor}),t.yAccessor&&"string"==typeof t.yAccessor&&i.push({prop:"yAccessor",name:t.yAccessor}),t.valueAccessor&&"string"==typeof t.valueAccessor&&i.push({prop:"valueAccessor",name:t.valueAccessor});const s=Math.min(a.length,5);for(const e of i){let t=!0;for(let r=0;s>r;r++){const n=null===(o=a[r])||void 0===o?void 0:o[e.name];if("number"==typeof n&&Number.isFinite(n)){t=!1;break}}t&&r.push({severity:"error",code:"DEGENERATE_EXTENT",message:`${e.prop}="${e.name}" produces NaN or non-finite values for all sampled data points — chart extents will be invalid.`,fix:`Ensure data[].${e.name} contains finite numbers, or use a function accessor to transform values.`})}}(e,t,r),function(e,t,r){if(!ce.has(e))return;const o=t.barPadding;"number"==typeof o&&10>o&&r.push({severity:"warning",code:"BAR_PADDING_INVISIBLE",message:`barPadding=${o} is very small — bars may appear to have no spacing between them.`,fix:"Increase barPadding to at least 10 for visible gaps, e.g. barPadding={12}."})}(e,t,r),function(e,t,r){if("bottom"!==t.legendPosition)return;const o=t.margin;if(!o||"object"!=typeof o)return;const n=o.bottom;"number"==typeof n&&70>n&&r.push({severity:"warning",code:"BOTTOM_MARGIN_WITH_LEGEND",message:`legendPosition="bottom" with margin.bottom=${n}px — legend may overlap axis labels.`,fix:"Increase margin.bottom to at least 70, e.g. margin={{ ...margin, bottom: 80 }}."})}(0,t,r),function(e,t,r){var o;if(!t.showLegend)return;if("right"!==(null!==(o=t.legendPosition)&&void 0!==o?o:"right"))return;const n=t.margin;if(!n||"object"!=typeof n)return;const a=n.right;"number"==typeof a&&100>a&&r.push({severity:"warning",code:"LEGEND_MARGIN_TIGHT",message:`showLegend is true with legendPosition="right" but margin.right=${a}px — legend may be clipped or overlap the chart.`,fix:"Increase margin.right to at least 100, e.g. margin={{ ...margin, right: 120 }}."})}(0,t,r),function(e,t,r){if("Heatmap"!==e)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const n=o[0];if(n&&"object"==typeof n)for(const e of["xAccessor","yAccessor"]){const o=t[e];if("string"!=typeof o)continue;const a=n[o];"string"==typeof a&&r.push({severity:"warning",code:"HEATMAP_STRING_ACCESSOR",message:`${e}="${o}" resolves to string values (e.g. "${a}"). Heatmap will use categorical axis handling which may produce unexpected cell layout.`,fix:"If you intend categorical axes this is fine. Otherwise, convert values to numbers before passing data."})}}(e,t,r),function(e,t,r){const o=t.colorScheme;if(!o||!Array.isArray(o))return;const n="string"==typeof t.background?t.background:"#ffffff";if(!n.startsWith("#"))return;const a=[];for(const e of o){if("string"!=typeof e||!e.startsWith("#"))continue;const t=de(e,n);null!==t&&3>t&&a.push(`${e} (${t.toFixed(1)}:1)`)}a.length>0&&r.push({severity:"warning",code:"LOW_COLOR_CONTRAST",message:`${a.length} color(s) in colorScheme have < 3:1 contrast against background "${n}": ${a.join(", ")}. Data marks may be hard to see.`,fix:'Use darker colors on light backgrounds or lighter colors on dark backgrounds. Import COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for an accessible preset.'})}(0,t,r),function(e,t,r){const o=t.colorScheme;if(!o||!Array.isArray(o)||2>o.length)return;const n=o.filter(e=>"string"==typeof e&&e.startsWith("#"));if(2>n.length)return;const a=[];for(let e=0;n.length-1>e;e++){const t=de(n[e],n[e+1]);null!==t&&1.5>t&&a.push(`${n[e]} / ${n[e+1]} (${t.toFixed(1)}:1)`)}a.length>0&&r.push({severity:"warning",code:"LOW_ADJACENT_CONTRAST",message:`${a.length} adjacent color pair(s) in colorScheme have very similar luminance: ${a.join("; ")}. Categories may be hard to distinguish.`,fix:'Alternate light and dark colors in the scheme, or use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for a pre-tested palette.'})}(0,t,r),function(e,t,r){const o="string"==typeof t.title&&t.title.trim().length>0,n="string"==typeof t.description&&t.description.trim().length>0,a="string"==typeof t.summary&&t.summary.trim().length>0;o||n||a||r.push({severity:"warning",code:"MISSING_DESCRIPTION",message:'No title, description, or summary provided. Screen readers will use a generic label like "XY chart".',fix:'Add a title="..." prop for a brief label, or description="..." for a detailed aria-label, or summary="..." for a screen-reader-only note describing the chart\'s purpose.'})}(0,t,r),function(e,t,r){const o=[];for(const e of ue)"function"==typeof t[e]&&o.push(e);o.length>0&&r.push({severity:"warning",code:"FUNCTION_ACCESSOR",message:`Function accessor${o.length>1?"s":""} detected: ${o.join(", ")}. If defined inline (e.g. \`xAccessor={d => d.value}\`), every parent re-render creates a new reference which may trigger unnecessary scene rebuilds.`,fix:'Use string accessors when possible (e.g. xAccessor="value"), or memoize with useCallback / define outside the component.'})}(0,t,r),{ok:r.every(e=>"warning"===e.severity),diagnoses:r}):{ok:0===r.length,diagnoses:r}}function ye(e,t=30){return Math.max((null!=e?e:4)+5,12,t)}function fe(e,t,r,o){return new(r||(r=Promise))(function(n,a){function i(e){try{c(o.next(e))}catch(e){a(e)}}function s(e){try{c(o.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,s)}c((o=o.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const ge=new Set(["tooltip","onObservation","xFormat","yFormat","valueFormat","svgAnnotationRules","tooltipContent","onHover","tickFormatTime","tickFormatValue","edgeSort","sortGroups","centerContent","frameProps","controls","oFormat","rFormat","oSort","pieceStyle","summaryStyle","nodeStyle","edgeStyle","customHoverBehavior","customClickBehavior","customDoubleClickBehavior","onBrush","onTopologyChange","backgroundGraphics","foregroundGraphics","legend"]),be=new Set(["data","nodes","edges"]),he="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function me(e,t,r){if(!te[e])throw Error(`Unknown component "${e}". Known components: ${Object.keys(te).join(", ")}`);const o=!1!==(null==r?void 0:r.includeData),n={};for(const[e,r]of Object.entries(t))null!=r&&(ge.has(e)||!o&&be.has(e)||"function"!=typeof r&&((null==r?void 0:r.$$typeof)||(n[e]=he(r))));return Object.assign({component:e,props:n,version:"1",createdAt:(new Date).toISOString()},(null==r?void 0:r.selections)?{selections:r.selections}:{})}function ve(e){if(!e.component||!e.props)throw Error("Invalid chart config: missing component or props");if(!te[e.component])throw Error(`Unknown component "${e.component}". This config may require a newer version of semiotic.`);return{componentName:e.component,props:he(e.props)}}function Ae(e){const t=JSON.stringify(e);return"sc="+btoa(unescape(encodeURIComponent(t))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function xe(e){const t=new URLSearchParams(e.includes("?")?e.split("?")[1]:e).get("sc");if(!t)throw Error("No chart config found in URL (missing 'sc' parameter)");const r=t.replace(/-/g,"+").replace(/_/g,"/"),o=decodeURIComponent(escape(atob(r)));return JSON.parse(o)}function Se(e){return fe(this,arguments,void 0,function*(e,t="json"){const r="jsx"===t?we(e):JSON.stringify(e,null,2);if("undefined"==typeof navigator||!navigator.clipboard)throw Error("Clipboard API not available. copyConfig requires a browser environment.");yield navigator.clipboard.writeText(r)})}function we(e){const{component:t,props:r}=e,o=["<"+t];for(const[e,t]of Object.entries(r))if("string"==typeof t)o.push(` ${e}="${t}"`);else if("boolean"==typeof t&&!0===t)o.push(" "+e);else if("boolean"==typeof t&&!1===t)o.push(` ${e}={false}`);else if("number"==typeof t)o.push(` ${e}={${t}}`);else{const r=JSON.stringify(t);o.push(80>r.length?` ${e}={${r}}`:` ${e}={${JSON.stringify(t,null,2)}}`)}return o.push("/>"),o.join("\n")}function je(e){const t={};for(const[r,o]of e){const e=[];for(const[,t]of o.clauses){const r={};for(const[e,o]of Object.entries(t.fields))r[e]="point"===o.type?{type:"point",values:Array.from(o.values)}:{type:"interval",range:o.range};e.push({clientId:t.clientId,type:t.type,fields:r})}t[r]={name:o.name,resolution:o.resolution,clauses:e}}return t}function Oe(e){const t=new Map;for(const[r,o]of Object.entries(e)){const e=new Map;for(const t of o.clauses){const r={};for(const[e,o]of Object.entries(t.fields))r[e]="point"===o.type?{type:"point",values:new Set(o.values)}:{type:"interval",range:o.range};e.set(t.clientId,{clientId:t.clientId,type:t.type,fields:r})}t.set(r,{name:o.name,resolution:o.resolution,clauses:e})}return t}function $e(e,t){return fe(this,void 0,void 0,function*(){const{format:r="png",filename:o="chart",scale:n=2,background:a="white"}=t||{},i=e.querySelector("svg");if(!i)throw Error("No SVG element found in the container");const s=i.cloneNode(!0),c=i.getBoundingClientRect();if(s.getAttribute("width")||s.setAttribute("width",c.width+""),s.getAttribute("height")||s.setAttribute("height",c.height+""),s.getAttribute("xmlns")||s.setAttribute("xmlns","http://www.w3.org/2000/svg"),ke(i,s),"svg"===r){const e=(new XMLSerializer).serializeToString(s);ze(new Blob([e],{type:"image/svg+xml;charset=utf-8"}),o+".svg")}else{const t=c.width*n,r=c.height*n,i=document.createElement("canvas");i.width=t,i.height=r;const l=i.getContext("2d");l.fillStyle=a,l.fillRect(0,0,t,r),l.scale(n,n);const d=e.querySelector("canvas");d&&l.drawImage(d,0,0,c.width,c.height);const u=(new XMLSerializer).serializeToString(s),p=new Blob([u],{type:"image/svg+xml;charset=utf-8"}),y=URL.createObjectURL(p),f=new Image;f.width=c.width,f.height=c.height,yield new Promise((e,t)=>{f.onload=()=>{l.drawImage(f,0,0),i.toBlob(r=>{r?(ze(r,o+".png"),e()):t(Error("Failed to create PNG blob"))},"image/png"),URL.revokeObjectURL(y)},f.onerror=()=>{URL.revokeObjectURL(y),t(Error("Failed to load SVG image"))},f.src=y})}})}function ke(e,t){var r;const o=e.children,n=t.children,a=window.getComputedStyle(e),i=["fill","stroke","stroke-width","stroke-dasharray","opacity","fill-opacity","stroke-opacity","font-family","font-size","font-weight","text-anchor","dominant-baseline"];for(const e of i){const o=a.getPropertyValue(e);o&&"none"!==o&&""!==o&&(null===(r=t.style)||void 0===r||r.setProperty(e,o))}for(let e=0;Math.min(o.length,n.length)>e;e++)ke(o[e],n[e])}function ze(e,t){const r=URL.createObjectURL(e),o=document.createElement("a");o.href=r,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(r)}function Ce(e){return"nominal"===e||"ordinal"===e}function Re(e){return"quantitative"===e||"temporal"===e}const _e={category10:"category10",category20:"category20",category20b:"category20",category20c:"category20",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3",tableau10:"category10",tableau20:"category20"},Fe={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",monotone:"monotoneX",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},Le={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function Be(e){var t,r,o,n,a,i,s,c,l,d,u,p,y,f;const g=[],{type:b,markProps:h}=function(e){if("string"==typeof e)return{type:e,markProps:{}};const{type:t}=e;return{type:t,markProps:function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&0>t.indexOf(o)&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);o.length>n;n++)0>t.indexOf(o[n])&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}(e,["type"])}}(e.mark),m=e.encoding||{},v=m.x,A=m.y,x=m.color,S=m.size,w=m.theta,j=m.opacity;let O;(null===(t=e.data)||void 0===t?void 0:t.values)?O=e.data.values:(null===(r=e.data)||void 0===r?void 0:r.url)&&g.push("data.url is not supported — only inline data.values can be translated. Provide data manually."),e.transform&&e.transform.length>0&&g.push("Vega-Lite transforms are not supported. Pre-transform your data before passing to fromVegaLite()."),e.layer&&g.push('Layered specs ("layer") are not supported. Only single-mark specs can be translated.'),(e.hconcat||e.vconcat||e.concat)&&g.push('Concatenated views ("hconcat"/"vconcat"/"concat") are not supported. Translate each sub-spec individually.'),(e.facet||e.encoding&&e.encoding.facet||e.encoding&&(e.encoding.row||e.encoding.column))&&g.push("Faceted views are not supported. Use Semiotic's LinkedCharts or render multiple charts manually."),e.repeat&&g.push('Repeated views ("repeat") are not supported. Translate each field combination individually.'),(e.params||e.selection)&&g.push("Selections/params are not supported. Use Semiotic's LinkedCharts and selection props for interactivity.");const $={};e.width&&($.width=e.width),e.height&&($.height=e.height);const k=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if(k&&($.title=k),(null==x?void 0:x.field)&&($.colorBy=x.field,null===(o=x.scale)||void 0===o?void 0:o.scheme)){const e=_e[x.scale.scheme];e&&($.colorScheme=e)}void 0!==(null==j?void 0:j.value)&&($.pointOpacity=j.value);const z=null==v?void 0:v.aggregate,C=null==A?void 0:A.aggregate;if(O&&(z||C)){const e=C?A:v,t=C?v:A,r=Le[e.aggregate];if(r&&(null==t?void 0:t.field)&&e.field)O=function(e,t){const{groupBy:r,value:o,agg:n="sum"}=t,a=new Map;for(const t of e){const e=t[r]+"";a.has(e)||a.set(e,[]),a.get(e).push(Number(t[o]))}const i=[];for(const[e,t]of a){let o;switch(n){case"count":o=t.length;break;case"mean":o=t.reduce((e,t)=>e+t,0)/t.length;break;case"min":o=Math.min(...t);break;case"max":o=Math.max(...t);break;default:o=t.reduce((e,t)=>e+t,0)}i.push({[r]:e,value:o})}return i}(O,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&(null==t?void 0:t.field)&&O){const e=new Map;for(const r of O){const o=r[t.field]+"";e.set(o,(e.get(o)||0)+1)}O=Array.from(e,([e,r])=>({[t.field]:e,value:r}))}}if((null==v?void 0:v.bin)||(null==A?void 0:A.bin)){const e="Histogram";O&&($.data=O),(null==v?void 0:v.bin)?($.valueAccessor=v.field,(null==A?void 0:A.field)&&($.categoryAccessor=A.field),(null===(n=v.axis)||void 0===n?void 0:n.title)&&($.valueLabel=v.axis.title)):(null==A?void 0:A.bin)&&($.valueAccessor=A.field,(null==v?void 0:v.field)&&($.categoryAccessor=v.field),(null===(a=A.axis)||void 0===a?void 0:a.title)&&($.valueLabel=A.axis.title));const t="object"==typeof((null==v?void 0:v.bin)||(null==A?void 0:A.bin))?(null===(i=null==v?void 0:v.bin)||void 0===i?void 0:i.maxbins)||(null===(s=null==A?void 0:A.bin)||void 0===s?void 0:s.maxbins):void 0;return t&&($.bins=t),Ee(e,$,g)}let R;switch(b){case"bar":R=function(e,t,r,o,n,a,i){var s,c,l,d,u,p;let y;return(null==r?void 0:r.field)&&!1!==(null==e?void 0:e.stack)&&!1!==(null==t?void 0:t.stack)&&null!==(null==e?void 0:e.stack)&&null!==(null==t?void 0:t.stack)?(y="StackedBarChart",o.stackBy=r.field):y="BarChart",Ce(null==e?void 0:e.type)&&Re(null==t?void 0:t.type)?(o.categoryAccessor=e.field,o.valueAccessor=i?"value":t.field,(null===(s=null==e?void 0:e.axis)||void 0===s?void 0:s.title)&&(o.categoryLabel=e.axis.title),(null===(c=null==t?void 0:t.axis)||void 0===c?void 0:c.title)&&(o.valueLabel=t.axis.title)):Re(null==e?void 0:e.type)&&Ce(null==t?void 0:t.type)?(o.categoryAccessor=t.field,o.valueAccessor=a?"value":e.field,o.orientation="horizontal",(null===(l=null==t?void 0:t.axis)||void 0===l?void 0:l.title)&&(o.categoryLabel=t.axis.title),(null===(d=null==e?void 0:e.axis)||void 0===d?void 0:d.title)&&(o.valueLabel=e.axis.title)):((null==e?void 0:e.field)&&(o.categoryAccessor=e.field),(null==t?void 0:t.field)&&(o.valueAccessor=i?"value":t.field),(null===(u=null==e?void 0:e.axis)||void 0===u?void 0:u.title)&&(o.categoryLabel=e.axis.title),(null===(p=null==t?void 0:t.axis)||void 0===p?void 0:p.title)&&(o.valueLabel=t.axis.title)),n&&(o.data=n),y}(v,A,x,$,O,z,C);break;case"line":if(R="LineChart",Te(v,A,$,z,C),(null==x?void 0:x.field)&&($.lineBy=x.field),h.interpolate){const e=Fe[h.interpolate];e&&($.curve=e)}!0===h.point&&($.showPoints=!0),O&&($.data=O);break;case"area":if((null==x?void 0:x.field)?(R="StackedAreaChart",$.areaBy=x.field):R="AreaChart",Te(v,A,$,z,C),h.interpolate){const e=Fe[h.interpolate];e&&($.curve=e)}void 0!==h.opacity&&($.areaOpacity=h.opacity),O&&($.data=O);break;case"point":case"circle":case"square":(null==S?void 0:S.field)?(R="BubbleChart",$.sizeBy=S.field,(null===(c=S.scale)||void 0===c?void 0:c.range)&&($.sizeRange=S.scale.range)):R="Scatterplot",Te(v,A,$,z,C),O&&($.data=O);break;case"rect":R="Heatmap",(null==v?void 0:v.field)&&($.xAccessor=v.field),(null==A?void 0:A.field)&&($.yAccessor=A.field),(null==x?void 0:x.field)&&($.valueAccessor=x.field,delete $.colorBy),(null===(l=null==v?void 0:v.axis)||void 0===l?void 0:l.title)&&($.xLabel=v.axis.title),(null===(d=null==A?void 0:A.axis)||void 0===d?void 0:d.title)&&($.yLabel=A.axis.title),O&&($.data=O);break;case"arc":h.innerRadius&&h.innerRadius>0?(R="DonutChart",$.innerRadius=h.innerRadius):R="PieChart",(null==w?void 0:w.field)?$.valueAccessor=w.field:(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field),(null==x?void 0:x.field)&&($.categoryAccessor=x.field),(null==v?void 0:v.field)&&!(null==w?void 0:w.field)&&($.categoryAccessor=v.field),O&&($.data=O);break;case"tick":R="DotPlot",Ce(null==v?void 0:v.type)?($.categoryAccessor=v.field,(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field),(null===(u=null==v?void 0:v.axis)||void 0===u?void 0:u.title)&&($.categoryLabel=v.axis.title),(null===(p=null==A?void 0:A.axis)||void 0===p?void 0:p.title)&&($.valueLabel=A.axis.title)):Ce(null==A?void 0:A.type)?($.categoryAccessor=A.field,(null==v?void 0:v.field)&&($.valueAccessor=z?"value":v.field),$.orientation="horizontal",(null===(y=null==A?void 0:A.axis)||void 0===y?void 0:y.title)&&($.categoryLabel=A.axis.title),(null===(f=null==v?void 0:v.axis)||void 0===f?void 0:f.title)&&($.valueLabel=v.axis.title)):((null==v?void 0:v.field)&&($.categoryAccessor=v.field),(null==A?void 0:A.field)&&($.valueAccessor=C?"value":A.field)),O&&($.data=O);break;default:g.push(`Unsupported mark type "${b}". Defaulting to Scatterplot.`),R="Scatterplot",Te(v,A,$,z,C),O&&($.data=O)}return Ee(R,$,g)}function Te(e,t,r,o,n){var a,i;(null==e?void 0:e.field)&&(r.xAccessor=o?"value":e.field),(null==t?void 0:t.field)&&(r.yAccessor=n?"value":t.field),(null===(a=null==e?void 0:e.axis)||void 0===a?void 0:a.title)&&(r.xLabel=e.axis.title),(null===(i=null==t?void 0:t.axis)||void 0===i?void 0:i.title)&&(r.yLabel=t.axis.title)}function Ee(e,t,r){const o={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){o.warnings=r;for(const e of r)console.warn("[semiotic/fromVegaLite] "+e)}return o}class Ne{constructor(e){if(this._capacity=e,this.head=0,this._size=0,1>e)throw Error("RingBuffer capacity must be at least 1");this.buffer=Array(e)}push(e){let t;return this._size===this._capacity?t=this.buffer[this.head]:this._size++,this.buffer[this.head]=e,this.head=(this.head+1)%this._capacity,t}pushMany(e){const t=[];for(const r of e){const e=this.push(r);void 0!==e&&t.push(e)}return t}get(e){if(e>=0&&this._size>e)return this.buffer[(this.head-this._size+e+this._capacity)%this._capacity]}peek(){if(0!==this._size)return this.buffer[(this.head-1+this._capacity)%this._capacity]}peekOldest(){if(0!==this._size)return this.buffer[(this.head-this._size+this._capacity)%this._capacity]}[Symbol.iterator](){let e=0;return{next:()=>this._size>e?{done:!1,value:this.get(e++)}:{done:!0,value:void 0}}}forEach(e){const t=(this.head-this._size+this._capacity)%this._capacity;for(let r=0;this._size>r;r++)e(this.buffer[(t+r)%this._capacity],r)}toArray(){const e=Array(this._size),t=(this.head-this._size+this._capacity)%this._capacity;for(let r=0;this._size>r;r++)e[r]=this.buffer[(t+r)%this._capacity];return e}resize(e){if(1>e)throw Error("RingBuffer capacity must be at least 1");const t=this.toArray(),r=[];for(;t.length>e;)r.push(t.shift());this._capacity=e,this.buffer=Array(e),this.head=0,this._size=0;for(const e of t)this.push(e);return r}update(e,t){const r=[],o=(this.head-this._size+this._capacity)%this._capacity;for(let n=0;this._size>n;n++){const a=(o+n)%this._capacity,i=this.buffer[a];if(e(i)){let e;e="object"!=typeof i||null===i?i:Array.isArray(i)?[...i]:Object.assign({},i),r.push(e),this.buffer[a]=t(i)}}return r}remove(e){const t=[],r=[];if(this.forEach(o=>{e(o)?r.push(o):t.push(o)}),0===r.length)return r;this.buffer=Array(this._capacity),this.head=0,this._size=0;for(const e of t)this.push(e);return r}clear(){this.buffer=Array(this._capacity),this.head=0,this._size=0}get size(){return this._size}get capacity(){return this._capacity}get full(){return this._size===this._capacity}}class Pe{constructor(){this._min=1/0,this._max=-1/0,this._dirty=!1}push(e){Number.isFinite(e)&&(this._min>e&&(this._min=e),e>this._max&&(this._max=e))}evict(e){e!==this._min&&e!==this._max||(this._dirty=!0)}recalculate(e,t){this._min=1/0,this._max=-1/0;for(const r of e){const e=t?t(r):r;Number.isFinite(e)&&(this._min>e&&(this._min=e),e>this._max&&(this._max=e))}this._dirty=!1}clear(){this._min=1/0,this._max=-1/0,this._dirty=!1}get extent(){return[this._min,this._max]}get min(){return this._min}get max(){return this._max}get dirty(){return this._dirty}}const Ie={background:"var(--semiotic-tooltip-bg, rgba(0, 0, 0, 0.85))",color:"var(--semiotic-tooltip-text, white)",padding:"8px 12px",borderRadius:"var(--semiotic-tooltip-radius, 6px)",fontSize:"var(--semiotic-tooltip-font-size, 14px)",fontFamily:"var(--semiotic-font-family, inherit)",lineHeight:"1.5",boxShadow:"var(--semiotic-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15))",pointerEvents:"none",maxWidth:"300px",wordWrap:"break-word"};function qe(e,t){return"function"==typeof t?t(e):e[t]}function Me(e,t){if(t)return t(e);if(null==e)return"";if("number"==typeof e){if(!Number.isFinite(e))return e+"";const t=Number.isInteger(e)?e:parseFloat(e.toPrecision(6));return Math.abs(t)>9999?t.toLocaleString():t+""}return e instanceof Date?e.toLocaleDateString():"object"==typeof e&&null!==e?void 0!==e.id?e.id+"":void 0!==e.name?e.name+"":JSON.stringify(e):e+""}function De(r={}){const{fields:o,title:n,format:a,style:i={},className:s=""}=r;return r=>{if(!r||"object"!=typeof r)return null;let c;const l=[];if(n){const e=qe(r,n);c=Me(e,a)}if(o&&o.length>0)o.forEach(e=>{let t,o,n;"string"==typeof e?(t=e,o=e,n=a):(t=e.label,o=e.accessor||e.key||"",n=e.format||a);const i=qe(r,o);l.push({label:t,value:Me(i,n)})});else if(!n){const e=["value","y","name","id","label"];for(const t of e)if(void 0!==r[t]){c=Me(r[t],a);break}if(!c){const e=Object.keys(r).filter(e=>!e.startsWith("_"));e.length>0&&(c=Me(r[e[0]],a))}}const d=Object.assign(Object.assign({},Ie),i);return t("div",{className:("semiotic-tooltip "+s).trim(),style:d,children:[c&&e("div",{style:{fontWeight:l.length>0?"bold":"normal"},children:c}),l.map((e,r)=>t("div",{style:{marginTop:0===r&&c?"4px":0},children:[e.label&&t("span",{children:[e.label,": "]}),e.value]},r))]})}}function Ue(){return r=>{var o,n,a,i,s,c,l;const d=r.allSeries;if(!d||0===d.length){const t=null!==(n=null===(o=r.data)||void 0===o?void 0:o.value)&&void 0!==n?n:null===(a=r.data)||void 0===a?void 0:a.y;return e("div",{className:"semiotic-tooltip",style:Ie,children:e("div",{children:Me(t)})})}const u=null!==(c=null!==(i=r.xValue)&&void 0!==i?i:null===(s=r.data)||void 0===s?void 0:s.time)&&void 0!==c?c:null===(l=r.data)||void 0===l?void 0:l.x;return t("div",{className:"semiotic-tooltip",style:Ie,children:[null!=u&&e("div",{style:{fontWeight:600,marginBottom:4,fontSize:"0.9em",borderBottom:"1px solid var(--semiotic-border, #eee)",paddingBottom:4},children:Me(u)}),d.map((r,o)=>t("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"1px 0"},children:[e("span",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:r.color,flexShrink:0}}),e("span",{style:{flex:1,fontSize:"0.85em"},children:r.group}),e("span",{style:{fontWeight:500,fontSize:"0.85em"},children:Me(r.value)})]},o))]})}}function He(t){if(!0!==t){if("function"==typeof t){const r=t;return t=>{var o;const n=!0===(null==t?void 0:t.__semioticHoverData)||t&&void 0!==t.data&&"number"==typeof t.x&&"number"==typeof t.y&&t&&("node"===t.type||"edge"===t.type||void 0!==t.nodeOrEdge||void 0!==t.allSeries||void 0!==t.stats||void 0!==t.__chartType)?null!==(o=t.data)&&void 0!==o?o:{}:t,a=r(n);return null==a?null:e("div",{className:"semiotic-tooltip",style:Ie,children:a})}}return!1!==t&&void 0!==t&&("object"==typeof t&&null!==t&&("fields"in t||"title"in t)?De(t):De())}}export{x as CARBON_ALERT,A as CARBON_CATEGORICAL_14,y as COLOR_BLIND_SAFE_CATEGORICAL,g as DARK_THEME,b as HIGH_CONTRAST_THEME,Pe as IncrementalExtent,f as LIGHT_THEME,Ue as MultiPointTooltip,Ne as RingBuffer,S as THEME_PRESETS,T as ThemeProvider,M as adaptiveTimeTicks,we as configToJSX,Se as copyConfig,G as createHatchPattern,D as darkenColor,Oe as deserializeSelections,pe as diagnoseConfig,$e as exportChart,ve as fromConfig,xe as fromURL,Be as fromVegaLite,ye as getHitRadius,U as lightenColor,He as normalizeTooltip,w as resolveThemePreset,je as serializeSelections,N as smartTickFormat,j as themeToCSS,O as themeToTokens,me as toConfig,Ae as toURL,C as useHighContrast,z as useReducedMotion,E as useTheme,oe as validateProps};
|
package/dist/semiotic-xy.d.ts
CHANGED
|
@@ -2,28 +2,31 @@
|
|
|
2
2
|
* XY entry point — line, area, scatter, heatmap, and bubble charts.
|
|
3
3
|
* Import from "semiotic/xy" instead of the full bundle to reduce bundle size.
|
|
4
4
|
*/
|
|
5
|
-
import StreamXYFrame from "./stream/StreamXYFrame";
|
|
5
|
+
import StreamXYFrame from "./components/stream/StreamXYFrame";
|
|
6
6
|
export { StreamXYFrame };
|
|
7
|
-
export { LineChart } from "./charts/xy/LineChart";
|
|
8
|
-
export { AreaChart } from "./charts/xy/AreaChart";
|
|
9
|
-
export { StackedAreaChart } from "./charts/xy/StackedAreaChart";
|
|
10
|
-
export { Scatterplot } from "./charts/xy/Scatterplot";
|
|
11
|
-
export { ConnectedScatterplot } from "./charts/xy/ConnectedScatterplot";
|
|
12
|
-
export { BubbleChart } from "./charts/xy/BubbleChart";
|
|
13
|
-
export { Heatmap } from "./charts/xy/Heatmap";
|
|
14
|
-
export { ScatterplotMatrix } from "./charts/xy/ScatterplotMatrix";
|
|
15
|
-
export { MinimapChart } from "./charts/xy/MinimapChart";
|
|
16
|
-
export { QuadrantChart } from "./charts/xy/QuadrantChart";
|
|
17
|
-
export { MultiAxisLineChart } from "./charts/xy/MultiAxisLineChart";
|
|
18
|
-
export { CandlestickChart } from "./charts/xy/CandlestickChart";
|
|
19
|
-
export
|
|
20
|
-
export type {
|
|
21
|
-
export type {
|
|
22
|
-
export type {
|
|
23
|
-
export type {
|
|
24
|
-
export type {
|
|
25
|
-
export type {
|
|
26
|
-
export type {
|
|
27
|
-
export type {
|
|
28
|
-
export type {
|
|
29
|
-
export type {
|
|
7
|
+
export { LineChart } from "./components/charts/xy/LineChart";
|
|
8
|
+
export { AreaChart } from "./components/charts/xy/AreaChart";
|
|
9
|
+
export { StackedAreaChart } from "./components/charts/xy/StackedAreaChart";
|
|
10
|
+
export { Scatterplot } from "./components/charts/xy/Scatterplot";
|
|
11
|
+
export { ConnectedScatterplot } from "./components/charts/xy/ConnectedScatterplot";
|
|
12
|
+
export { BubbleChart } from "./components/charts/xy/BubbleChart";
|
|
13
|
+
export { Heatmap } from "./components/charts/xy/Heatmap";
|
|
14
|
+
export { ScatterplotMatrix } from "./components/charts/xy/ScatterplotMatrix";
|
|
15
|
+
export { MinimapChart } from "./components/charts/xy/MinimapChart";
|
|
16
|
+
export { QuadrantChart } from "./components/charts/xy/QuadrantChart";
|
|
17
|
+
export { MultiAxisLineChart } from "./components/charts/xy/MultiAxisLineChart";
|
|
18
|
+
export { CandlestickChart } from "./components/charts/xy/CandlestickChart";
|
|
19
|
+
export { XYCustomChart } from "./components/charts/custom/XYCustomChart";
|
|
20
|
+
export type { StreamXYFrameProps, StreamXYFrameHandle } from "./components/stream/types";
|
|
21
|
+
export type { CustomLayout, LayoutContext, LayoutResult } from "./components/stream/customLayout";
|
|
22
|
+
export type { LineChartProps } from "./components/charts/xy/LineChart";
|
|
23
|
+
export type { AreaChartProps } from "./components/charts/xy/AreaChart";
|
|
24
|
+
export type { StackedAreaChartProps } from "./components/charts/xy/StackedAreaChart";
|
|
25
|
+
export type { ScatterplotProps } from "./components/charts/xy/Scatterplot";
|
|
26
|
+
export type { ConnectedScatterplotProps } from "./components/charts/xy/ConnectedScatterplot";
|
|
27
|
+
export type { BubbleChartProps } from "./components/charts/xy/BubbleChart";
|
|
28
|
+
export type { HeatmapProps } from "./components/charts/xy/Heatmap";
|
|
29
|
+
export type { QuadrantChartProps } from "./components/charts/xy/QuadrantChart";
|
|
30
|
+
export type { MultiAxisLineChartProps } from "./components/charts/xy/MultiAxisLineChart";
|
|
31
|
+
export type { CandlestickChartProps } from "./components/charts/xy/CandlestickChart";
|
|
32
|
+
export type { XYCustomChartProps } from "./components/charts/custom/XYCustomChart";
|