semiotic 3.2.2 → 3.3.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 +118 -222
- package/README.md +37 -17
- package/ai/schema.json +64 -1
- package/ai/system-prompt.md +3 -3
- package/dist/components/Tooltip/Tooltip.d.ts +6 -1
- package/dist/components/charts/index.d.ts +2 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +2 -0
- package/dist/components/charts/ordinal/GaugeChart.d.ts +55 -0
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -0
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -0
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +2 -0
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +2 -0
- package/dist/components/charts/shared/hooks.d.ts +5 -1
- package/dist/components/charts/shared/types.d.ts +14 -5
- package/dist/components/charts/shared/useChartSetup.d.ts +2 -0
- package/dist/components/charts/xy/AreaChart.d.ts +17 -2
- package/dist/components/charts/xy/LineChart.d.ts +14 -3
- package/dist/components/realtime/RingBuffer.d.ts +11 -0
- package/dist/components/realtime/types.d.ts +4 -0
- package/dist/components/semiotic-ordinal.d.ts +2 -0
- package/dist/components/semiotic-server.d.ts +6 -1
- package/dist/components/semiotic-utils.d.ts +2 -1
- package/dist/components/semiotic.d.ts +3 -3
- package/dist/components/server/animatedGif.d.ts +78 -0
- package/dist/components/server/renderToStaticSVG.d.ts +85 -5
- package/dist/components/server/staticAnnotations.d.ts +40 -0
- package/dist/components/server/staticLegend.d.ts +39 -0
- package/dist/components/server/svgHatchPattern.d.ts +26 -0
- package/dist/components/server/themeResolver.d.ts +35 -0
- package/dist/components/store/LinkedCrosshairStore.d.ts +6 -2
- package/dist/components/stream/CanvasHitTester.d.ts +13 -0
- package/dist/components/stream/GeoPipelineStore.d.ts +6 -1
- package/dist/components/stream/NetworkPipelineStore.d.ts +20 -0
- package/dist/components/stream/OrdinalPipelineStore.d.ts +11 -0
- package/dist/components/stream/OrdinalSVGOverlay.d.ts +6 -1
- package/dist/components/stream/PipelineStore.d.ts +28 -1
- package/dist/components/stream/SVGOverlay.d.ts +11 -5
- package/dist/components/stream/accessorUtils.d.ts +3 -3
- package/dist/components/stream/geoTypes.d.ts +2 -0
- package/dist/components/stream/hitTestUtils.d.ts +15 -0
- package/dist/components/stream/networkTypes.d.ts +33 -0
- package/dist/components/stream/ordinalTypes.d.ts +37 -4
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +17 -0
- package/dist/components/stream/types.d.ts +58 -5
- package/dist/components/stream/xySceneBuilders/mixedScene.d.ts +12 -0
- package/dist/components/stream/xySceneBuilders/types.d.ts +15 -0
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-ordinal.d.ts +2 -0
- package/dist/semiotic-server.d.ts +6 -1
- package/dist/semiotic-utils.d.ts +2 -1
- package/dist/semiotic-utils.min.js +1 -1
- package/dist/semiotic-utils.module.min.js +1 -1
- package/dist/semiotic.d.ts +3 -3
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +21 -7
|
@@ -15,6 +15,8 @@ export { ViolinPlot } from "./charts/ordinal/ViolinPlot";
|
|
|
15
15
|
export { DotPlot } from "./charts/ordinal/DotPlot";
|
|
16
16
|
export { PieChart } from "./charts/ordinal/PieChart";
|
|
17
17
|
export { DonutChart } from "./charts/ordinal/DonutChart";
|
|
18
|
+
export { GaugeChart } from "./charts/ordinal/GaugeChart";
|
|
19
|
+
export type { GaugeChartProps, GaugeThreshold } from "./charts/ordinal/GaugeChart";
|
|
18
20
|
export { RidgelinePlot } from "./charts/ordinal/RidgelinePlot";
|
|
19
21
|
export { FunnelChart } from "./charts/ordinal/FunnelChart";
|
|
20
22
|
export { LikertChart } from "./charts/ordinal/LikertChart";
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
export { renderToStaticSVG, renderXYToStaticSVG, renderOrdinalToStaticSVG, renderNetworkToStaticSVG, renderGeoToStaticSVG } from "./server/renderToStaticSVG";
|
|
1
|
+
export { renderToStaticSVG, renderXYToStaticSVG, renderOrdinalToStaticSVG, renderNetworkToStaticSVG, renderGeoToStaticSVG, renderChart, renderToImage, renderDashboard, } from "./server/renderToStaticSVG";
|
|
2
|
+
export type { RenderToImageOptions, DashboardChart, DashboardLayout, RenderDashboardOptions, } from "./server/renderToStaticSVG";
|
|
3
|
+
export { renderToAnimatedGif, generateFrameSVGs, generateFrameSequence } from "./server/animatedGif";
|
|
4
|
+
export type { AnimatedGifOptions } from "./server/animatedGif";
|
|
5
|
+
export { resolveTheme, themeStyles } from "./server/themeResolver";
|
|
6
|
+
export type { ThemeInput } from "./server/themeResolver";
|
package/dist/semiotic-utils.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export { createHatchPattern } from "./charts/shared/hatchPattern";
|
|
|
17
17
|
export type { HatchPatternOptions } from "./charts/shared/hatchPattern";
|
|
18
18
|
export { validateProps } from "./charts/shared/validateProps";
|
|
19
19
|
export { diagnoseConfig } from "./charts/shared/diagnoseConfig";
|
|
20
|
+
export { getHitRadius } from "./stream/hitTestUtils";
|
|
20
21
|
export { toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX } from "./export/chartConfig";
|
|
21
22
|
export type { ChartConfig, ToConfigOptions, CopyFormat } from "./export/chartConfig";
|
|
22
23
|
export { serializeSelections, deserializeSelections } from "./export/selectionSerializer";
|
|
@@ -26,5 +27,5 @@ export { fromVegaLite } from "./data/fromVegaLite";
|
|
|
26
27
|
export type { VegaLiteSpec, VegaLiteEncoding } from "./data/fromVegaLite";
|
|
27
28
|
export { RingBuffer } from "./realtime/RingBuffer";
|
|
28
29
|
export { IncrementalExtent } from "./realtime/IncrementalExtent";
|
|
29
|
-
export { normalizeTooltip } from "./Tooltip/Tooltip";
|
|
30
|
+
export { normalizeTooltip, MultiPointTooltip } from "./Tooltip/Tooltip";
|
|
30
31
|
export { useReducedMotion, useHighContrast } from "./stream/useMediaPreferences";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("react");function t(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const r in e)if("default"!==r){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}return t.default=e,Object.freeze(t)}const r=t(e);function o(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)}}}const n=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],a={mode:"light",colors:{primary:"#00a2ce",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",background:"transparent",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},i={mode:"dark",colors:{primary:"#4fc3f7",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",background:"#1a1a2e",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},s={mode:"light",colors:{primary:"#0000cc",categorical:n,sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1},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"},[c,l]=function(t){const n=e.createContext(null),a=o(t);return[function({children:a}){const i=e.useMemo(()=>o(t),[]);return r.createElement(n.Provider,{value:i,children:a})},t=>{var r;const o=null!==(r=e.useContext(n))&&void 0!==r?r:a,i=e.useRef(t);i.current=t;const s=e.useCallback(()=>i.current(o.getState()),[o]),c=e.useCallback(()=>i.current(o.getState()),[o]);return e.useSyncExternalStore(o.subscribe,s,c)}]}(e=>({theme:a,setTheme(t){e(e=>{if("light"===t)return{theme:a};if("dark"===t)return{theme:i};if("high-contrast"===t)return{theme:s};if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?i:a;return{theme: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: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||{})})}})}})),u={light:a,dark:i,"high-contrast":s,pastels:{mode:"light",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc"},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",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc"},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",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#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",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6"},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",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000"},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",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333"},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",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},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",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050"},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",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},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",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b"},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",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6"},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",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa"},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",categorical:["#6929c4","#1192e8","#005d5d","#9f1853"],sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#161616",textSecondary:"#525252",grid:"#e0e0e0",border:"#e0e0e0",focus:"#0f62fe"},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",categorical:["#a56eff","#33b1ff","#08bdba","#ff7eb6"],sequential:"blues",diverging:"RdBu",background:"#161616",text:"#f4f4f4",textSecondary:"#a8a8a8",grid:"#393939",border:"#393939",focus:"#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 d(e){return u[e]}function p(e,t){return"function"==typeof e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))}function y(e){return!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia(e).matches}const f=r.createContext(void 0);function g({theme:e}){const t=l(e=>e.setTheme),o=l(e=>e.theme),n=r.useRef(o);n.current=o;const i=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&&(i.current=n.current,t(s)),p(r,e=>{var r;e.matches?(i.current=n.current,t(s)):(t(null!==(r=i.current)&&void 0!==r?r:a),i.current=null)})},[e,t]),r.useEffect(()=>{if(void 0!==e)if("string"==typeof e){const r=d(e);t(r||e)}else t(e)},[e,t]),null}function b({children:e}){var t,o,n,a,i;const s=l(e=>e.theme),c=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"relative","--semiotic-bg":s.colors.background,"--semiotic-text":s.colors.text,"--semiotic-text-secondary":s.colors.textSecondary,"--semiotic-grid":s.colors.grid,"--semiotic-border":s.colors.border,"--semiotic-primary":s.colors.primary,"--semiotic-font-family":s.typography.fontFamily},s.colors.focus?{"--semiotic-focus":s.colors.focus}:{}),(null===(t=s.tooltip)||void 0===t?void 0:t.background)?{"--semiotic-tooltip-bg":s.tooltip.background}:{}),(null===(o=s.tooltip)||void 0===o?void 0:o.text)?{"--semiotic-tooltip-text":s.tooltip.text}:{}),(null===(n=s.tooltip)||void 0===n?void 0:n.borderRadius)?{"--semiotic-tooltip-radius":s.tooltip.borderRadius}:{}),(null===(a=s.tooltip)||void 0===a?void 0:a.fontSize)?{"--semiotic-tooltip-font-size":s.tooltip.fontSize}:{}),(null===(i=s.tooltip)||void 0===i?void 0:i.shadow)?{"--semiotic-tooltip-shadow":s.tooltip.shadow}:{}),s.borderRadius?{"--semiotic-border-radius":s.borderRadius}:{}),s.colors.selection?{"--semiotic-selection-color":s.colors.selection}:{}),null!=s.colors.selectionOpacity?{"--semiotic-selection-opacity":s.colors.selectionOpacity+""}:{}),s.colors.diverging?{"--semiotic-diverging":s.colors.diverging}:{}),u=r.useContext(f),d={};return u&&(d["data-semiotic-theme"]=u),r.createElement("div",Object.assign({style:c},d),e)}const h=864e5;function m(e){return 10>e?"0"+e:e+""}const v=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];let A=null;function x(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 S(e,t,r=3){let o,n=r+1;for(const r of t){const t=x(e.toLowerCase(),r.toLowerCase());n>t&&(n=t,o=r)}return n>r?void 0:o}function w(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:e}function j(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=S(e,t,3))&&void 0!==r?r:null)}const k={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"}},O={xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"}},$={categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"}},C=["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"],R=["vertical","horizontal"],z={LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},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({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"}})},StackedAreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},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({},k),O),{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({},k),O),{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({},k),O),{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({},k),O),{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({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},colorScheme:{type:["string","array"]},curve:{type:"string"},lineWidth:{type:"number"},annotations:{type:"array"}})},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},sort:{type:["boolean","string","function"]},barPadding:{type:"number"}})},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},stackBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},normalize:{type:"boolean"},barPadding:{type:"number"}})},LikertChart:{required:["levels"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{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:R},barPadding:{type:"number"}})},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},barPadding:{type:"number"}})},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}})},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},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({},k),$),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"}})},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},k),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"}})},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},k),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"}})},FunnelChart:{required:["data"],dataShape:"array",dataAccessors:["stepAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{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({},k),$),{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({},k),{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({},k),{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:R},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({},k),{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({},k),{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({},k),{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({},k),{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({},k),{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"}}}};function _(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}function E(e,t){const r=[],o=z[e];if(!o)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(z).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(!_(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=S(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=w(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=j(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=w(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=j(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 L=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),T=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),B=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),P=new Set(["LineChart","AreaChart","StackedAreaChart"]),N=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]);function I(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 F(e,t){const r=I(e),o=I(t);return null===r||null===o?null:(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}const M=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function q(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 D=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"]),H=new Set(["data","nodes","edges"]),U="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function G(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 W(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++)W(o[e],n[e])}function V(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 J(e){return"nominal"===e||"ordinal"===e}function Y(e){return"quantitative"===e||"temporal"===e}const X={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"},K={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"},Q={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function Z(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 te{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;const t=this;return{next:()=>t._size>e?{done:!1,value:t.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}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}}const re={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 oe(e,t){return"function"==typeof t?t(e):e[t]}function ne(e,t){return t?t(e):null==e?"":"number"==typeof e?Math.abs(e)>9999?e.toLocaleString():e+"":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 ae(e={}){const{fields:t,title:o,format:n,style:a={},className:i=""}=e;return e=>{if(!e||"object"!=typeof e)return null;let s;const c=[];if(o){const t=oe(e,o);s=ne(t,n)}if(t&&t.length>0)t.forEach(t=>{let r,o,a;"string"==typeof t?(r=t,o=t,a=n):(r=t.label,o=t.accessor||t.key||"",a=t.format||n);const i=oe(e,o);c.push({label:r,value:ne(i,a)})});else if(!o){const t=["value","y","name","id","label"];for(const r of t)if(void 0!==e[r]){s=ne(e[r],n);break}if(!s){const t=Object.keys(e).filter(e=>!e.startsWith("_"));t.length>0&&(s=ne(e[t[0]],n))}}const l=Object.assign(Object.assign({},re),a);return r.createElement("div",{className:("semiotic-tooltip "+i).trim(),style:l},s&&r.createElement("div",{style:{fontWeight:c.length>0?"bold":"normal"}},s),c.map((e,t)=>r.createElement("div",{key:t,style:{marginTop:0===t&&s?"4px":0}},e.label&&r.createElement("span",null,e.label,": "),e.value)))}}exports.CARBON_ALERT={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},exports.CARBON_CATEGORICAL_14=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],exports.COLOR_BLIND_SAFE_CATEGORICAL=n,exports.DARK_THEME=i,exports.HIGH_CONTRAST_THEME=s,exports.IncrementalExtent=class{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}},exports.LIGHT_THEME=a,exports.RingBuffer=te,exports.THEME_PRESETS=u,exports.ThemeProvider=function({theme:e,children:t}){const o="string"==typeof e&&d(e)?e:void 0;return r.createElement(c,null,r.createElement(f.Provider,{value:o},r.createElement(g,{theme:e}),r.createElement(b,null,t)))},exports.adaptiveTimeTicks=function(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*h>r?"hours":60*h>r?"days":400*h>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=v[e.getUTCMonth()],l=e.getUTCDate(),u=e.getUTCFullYear(),d=m(e.getUTCHours()),p=m(e.getUTCMinutes()),y=m(e.getUTCSeconds());switch(r){case"seconds":return o?`${c} ${l}, ${u} ${d}:${p}:${y}`:a?`${c} ${l} ${d}:${p}:${y}`:i?`${d}:${p}:${y}`:s?`${p}:${y}`:":"+y;case"minutes":return o?`${c} ${l}, ${u} ${d}:${p}`:a?`${c} ${l} ${d}:${p}`:i?`${d}:${p}`:":"+p;case"hours":return o?`${c} ${l}, ${u} ${d}:00`:n?`${c} ${l} ${d}:${p}`:a?`${c} ${l} ${d}:00`:d+":00";case"days":return o?`${c} ${l}, ${u}`:n?`${c} ${l}`:""+l;case"months":return o?`${c} ${u}`:""+c;case"years":return""+u}}(i,new Date(a[n-1]),s):function(e,t){const r=v[e.getUTCMonth()],o=e.getUTCDate(),n=e.getUTCFullYear(),a=m(e.getUTCHours()),i=m(e.getUTCMinutes()),s=m(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)}},exports.configToJSX=G,exports.copyConfig=function(e){return q(this,arguments,void 0,function*(e,t="json"){const r="jsx"===t?G(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)})},exports.createHatchPattern=function(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):(A||(A=document.createElement("canvas")),A.width=e,A.height=e,A)}(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 u=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(u);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")},exports.darkenColor=function(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")}`},exports.deserializeSelections=function(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},exports.diagnoseConfig=function(e,t){const r=[],o=E(e,t);for(const e of o.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return z[e]?(function(e,t,r){const o=z[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=z[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){L.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){T.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=z[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(!B.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(!P.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=z[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(!N.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=F(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=F(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 M)"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}},exports.exportChart=function(e,t){return q(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"),W(i,s),"svg"===r){const e=(new XMLSerializer).serializeToString(s);V(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 u=e.querySelector("canvas");u&&l.drawImage(u,0,0,c.width,c.height);const d=(new XMLSerializer).serializeToString(s),p=new Blob([d],{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?(V(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})}})},exports.fromConfig=function(e){if(!e.component||!e.props)throw Error("Invalid chart config: missing component or props");if(!z[e.component])throw Error(`Unknown component "${e.component}". This config may require a newer version of semiotic.`);return{componentName:e.component,props:U(e.props)}},exports.fromURL=function(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)},exports.fromVegaLite=function(e){var t,r,o,n,a,i,s,c,l,u,d,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 k;(null===(t=e.data)||void 0===t?void 0:t.values)?k=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 O={};e.width&&(O.width=e.width),e.height&&(O.height=e.height);const $=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if($&&(O.title=$),(null==x?void 0:x.field)&&(O.colorBy=x.field,null===(o=x.scale)||void 0===o?void 0:o.scheme)){const e=X[x.scale.scheme];e&&(O.colorScheme=e)}void 0!==(null==j?void 0:j.value)&&(O.pointOpacity=j.value);const C=null==v?void 0:v.aggregate,R=null==A?void 0:A.aggregate;if(k&&(C||R)){const e=R?A:v,t=R?v:A,r=Q[e.aggregate];if(r&&(null==t?void 0:t.field)&&e.field)k=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}(k,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&(null==t?void 0:t.field)&&k){const e=new Map;for(const r of k){const o=r[t.field]+"";e.set(o,(e.get(o)||0)+1)}k=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";k&&(O.data=k),(null==v?void 0:v.bin)?(O.valueAccessor=v.field,(null==A?void 0:A.field)&&(O.categoryAccessor=A.field),(null===(n=v.axis)||void 0===n?void 0:n.title)&&(O.valueLabel=v.axis.title)):(null==A?void 0:A.bin)&&(O.valueAccessor=A.field,(null==v?void 0:v.field)&&(O.categoryAccessor=v.field),(null===(a=A.axis)||void 0===a?void 0:a.title)&&(O.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&&(O.bins=t),ee(e,O,g)}let z;switch(b){case"bar":z=function(e,t,r,o,n,a,i){var s,c,l,u,d,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",J(null==e?void 0:e.type)&&Y(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)):Y(null==e?void 0:e.type)&&J(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===(u=null==e?void 0:e.axis)||void 0===u?void 0:u.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===(d=null==e?void 0:e.axis)||void 0===d?void 0:d.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,k,C,R);break;case"line":if(z="LineChart",Z(v,A,O,C,R),(null==x?void 0:x.field)&&(O.lineBy=x.field),h.interpolate){const e=K[h.interpolate];e&&(O.curve=e)}!0===h.point&&(O.showPoints=!0),k&&(O.data=k);break;case"area":if((null==x?void 0:x.field)?(z="StackedAreaChart",O.areaBy=x.field):z="AreaChart",Z(v,A,O,C,R),h.interpolate){const e=K[h.interpolate];e&&(O.curve=e)}void 0!==h.opacity&&(O.areaOpacity=h.opacity),k&&(O.data=k);break;case"point":case"circle":case"square":(null==S?void 0:S.field)?(z="BubbleChart",O.sizeBy=S.field,(null===(c=S.scale)||void 0===c?void 0:c.range)&&(O.sizeRange=S.scale.range)):z="Scatterplot",Z(v,A,O,C,R),k&&(O.data=k);break;case"rect":z="Heatmap",(null==v?void 0:v.field)&&(O.xAccessor=v.field),(null==A?void 0:A.field)&&(O.yAccessor=A.field),(null==x?void 0:x.field)&&(O.valueAccessor=x.field,delete O.colorBy),(null===(l=null==v?void 0:v.axis)||void 0===l?void 0:l.title)&&(O.xLabel=v.axis.title),(null===(u=null==A?void 0:A.axis)||void 0===u?void 0:u.title)&&(O.yLabel=A.axis.title),k&&(O.data=k);break;case"arc":h.innerRadius&&h.innerRadius>0?(z="DonutChart",O.innerRadius=h.innerRadius):z="PieChart",(null==w?void 0:w.field)?O.valueAccessor=w.field:(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field),(null==x?void 0:x.field)&&(O.categoryAccessor=x.field),(null==v?void 0:v.field)&&!(null==w?void 0:w.field)&&(O.categoryAccessor=v.field),k&&(O.data=k);break;case"tick":z="DotPlot",J(null==v?void 0:v.type)?(O.categoryAccessor=v.field,(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field),(null===(d=null==v?void 0:v.axis)||void 0===d?void 0:d.title)&&(O.categoryLabel=v.axis.title),(null===(p=null==A?void 0:A.axis)||void 0===p?void 0:p.title)&&(O.valueLabel=A.axis.title)):J(null==A?void 0:A.type)?(O.categoryAccessor=A.field,(null==v?void 0:v.field)&&(O.valueAccessor=C?"value":v.field),O.orientation="horizontal",(null===(y=null==A?void 0:A.axis)||void 0===y?void 0:y.title)&&(O.categoryLabel=A.axis.title),(null===(f=null==v?void 0:v.axis)||void 0===f?void 0:f.title)&&(O.valueLabel=v.axis.title)):((null==v?void 0:v.field)&&(O.categoryAccessor=v.field),(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field)),k&&(O.data=k);break;default:g.push(`Unsupported mark type "${b}". Defaulting to Scatterplot.`),z="Scatterplot",Z(v,A,O,C,R),k&&(O.data=k)}return ee(z,O,g)},exports.lightenColor=function(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")}`},exports.normalizeTooltip=function(e){if(!0===e)return ae();if("function"==typeof e){const t=e;return e=>{const o=t(!e||"object"!=typeof e.data||null===e.data||"node"!==e.type&&"edge"!==e.type?e:e.data);return null==o?null:r.createElement("div",{className:"semiotic-tooltip",style:re},o)}}return!1!==e&&void 0!==e&&("object"==typeof e&&null!==e&&("fields"in e||"title"in e)?ae(e):ae())},exports.resolveThemePreset=d,exports.serializeSelections=function(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},exports.smartTickFormat=function(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"},exports.themeToCSS=function(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};`),`${t} {\n${s.join("\n")}\n}`},exports.themeToTokens=function(e){var t,r,o,n,a,i;return{semiotic: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"}}:{})}},exports.toConfig=function(e,t,r){if(!z[e])throw Error(`Unknown component "${e}". Known components: ${Object.keys(z).join(", ")}`);const o=!1!==(null==r?void 0:r.includeData),n={};for(const[e,r]of Object.entries(t))null!=r&&(D.has(e)||!o&&H.has(e)||"function"!=typeof r&&((null==r?void 0:r.$$typeof)||(n[e]=U(r))));return Object.assign({component:e,props:n,version:"1",createdAt:(new Date).toISOString()},(null==r?void 0:r.selections)?{selections:r.selections}:{})},exports.toURL=function(e){const t=JSON.stringify(e);return"sc="+btoa(unescape(encodeURIComponent(t))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},exports.useHighContrast=function(){const[t,r]=e.useState(()=>y("(forced-colors: active)"));return e.useEffect(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(forced-colors: active)");return r(e.matches),p(e,e=>r(e.matches))},[]),t},exports.useReducedMotion=function(){const[t,r]=e.useState(()=>y("(prefers-reduced-motion: reduce)"));return e.useEffect(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return r(e.matches),p(e,e=>r(e.matches))},[]),t},exports.useTheme=function(){return l(e=>e.theme)},exports.validateProps=E;
|
|
1
|
+
"use strict";const e=require("react");function t(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const r in e)if("default"!==r){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}return t.default=e,Object.freeze(t)}const r=t(e);function o(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)}}}const n=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],a={mode:"light",colors:{primary:"#00a2ce",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",background:"transparent",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},i={mode:"dark",colors:{primary:"#4fc3f7",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",background:"#1a1a2e",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},s={mode:"light",colors:{primary:"#0000cc",categorical:n,sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1},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"},[c,l]=function(t){const n=e.createContext(null),a=o(t);return[function({children:a}){const i=e.useMemo(()=>o(t),[]);return r.createElement(n.Provider,{value:i,children:a})},t=>{var r;const o=null!==(r=e.useContext(n))&&void 0!==r?r:a,i=e.useRef(t);i.current=t;const s=e.useCallback(()=>i.current(o.getState()),[o]),c=e.useCallback(()=>i.current(o.getState()),[o]);return e.useSyncExternalStore(o.subscribe,s,c)}]}(e=>({theme:a,setTheme(t){e(e=>{if("light"===t)return{theme:a};if("dark"===t)return{theme:i};if("high-contrast"===t)return{theme:s};if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?i:a;return{theme: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: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||{})})}})}})),u={light:a,dark:i,"high-contrast":s,pastels:{mode:"light",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc"},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",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc"},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",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#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",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6"},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",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000"},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",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333"},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",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},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",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050"},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",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},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",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b"},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",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6"},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",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa"},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",categorical:["#6929c4","#1192e8","#005d5d","#9f1853"],sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#161616",textSecondary:"#525252",grid:"#e0e0e0",border:"#e0e0e0",focus:"#0f62fe"},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",categorical:["#a56eff","#33b1ff","#08bdba","#ff7eb6"],sequential:"blues",diverging:"RdBu",background:"#161616",text:"#f4f4f4",textSecondary:"#a8a8a8",grid:"#393939",border:"#393939",focus:"#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 d(e){return u[e]}function p(e,t){return"function"==typeof e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))}function y(e){return!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia(e).matches}const f=r.createContext(void 0);function g({theme:e}){const t=l(e=>e.setTheme),o=l(e=>e.theme),n=r.useRef(o);n.current=o;const i=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&&(i.current=n.current,t(s)),p(r,e=>{var r;e.matches?(i.current=n.current,t(s)):(t(null!==(r=i.current)&&void 0!==r?r:a),i.current=null)})},[e,t]),r.useEffect(()=>{if(void 0!==e)if("string"==typeof e){const r=d(e);t(r||e)}else t(e)},[e,t]),null}function b({children:e}){var t,o,n,a,i;const s=l(e=>e.theme),c=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({position:"relative","--semiotic-bg":s.colors.background,"--semiotic-text":s.colors.text,"--semiotic-text-secondary":s.colors.textSecondary,"--semiotic-grid":s.colors.grid,"--semiotic-border":s.colors.border,"--semiotic-primary":s.colors.primary,"--semiotic-font-family":s.typography.fontFamily},s.colors.focus?{"--semiotic-focus":s.colors.focus}:{}),(null===(t=s.tooltip)||void 0===t?void 0:t.background)?{"--semiotic-tooltip-bg":s.tooltip.background}:{}),(null===(o=s.tooltip)||void 0===o?void 0:o.text)?{"--semiotic-tooltip-text":s.tooltip.text}:{}),(null===(n=s.tooltip)||void 0===n?void 0:n.borderRadius)?{"--semiotic-tooltip-radius":s.tooltip.borderRadius}:{}),(null===(a=s.tooltip)||void 0===a?void 0:a.fontSize)?{"--semiotic-tooltip-font-size":s.tooltip.fontSize}:{}),(null===(i=s.tooltip)||void 0===i?void 0:i.shadow)?{"--semiotic-tooltip-shadow":s.tooltip.shadow}:{}),s.borderRadius?{"--semiotic-border-radius":s.borderRadius}:{}),s.colors.selection?{"--semiotic-selection-color":s.colors.selection}:{}),null!=s.colors.selectionOpacity?{"--semiotic-selection-opacity":s.colors.selectionOpacity+""}:{}),s.colors.diverging?{"--semiotic-diverging":s.colors.diverging}:{}),u=r.useContext(f),d={};return u&&(d["data-semiotic-theme"]=u),r.createElement("div",Object.assign({style:c},d),e)}const h=864e5;function m(e){return 10>e?"0"+e:e+""}const v=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];let A=null;function x(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 S(e,t,r=3){let o,n=r+1;for(const r of t){const t=x(e.toLowerCase(),r.toLowerCase());n>t&&(n=t,o=r)}return n>r?void 0:o}function w(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:e}function j(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=S(e,t,3))&&void 0!==r?r:null)}const k={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"}},O={xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"}},$={categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"}},C=["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"],R=["vertical","horizontal"],z={LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},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({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"}})},StackedAreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:C},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({},k),O),{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({},k),O),{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({},k),O),{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({},k),O),{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({},k),O),{data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},colorScheme:{type:["string","array"]},curve:{type:"string"},lineWidth:{type:"number"},annotations:{type:"array"}})},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:Object.assign(Object.assign(Object.assign({},k),O),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},sort:{type:["boolean","string","function"]},barPadding:{type:"number"}})},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},stackBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},normalize:{type:"boolean"},barPadding:{type:"number"}})},LikertChart:{required:["levels"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{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:R},barPadding:{type:"number"}})},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},barPadding:{type:"number"}})},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}})},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign(Object.assign({},k),$),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},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({},k),$),{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({},k),$),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:R},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"}})},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},k),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"}})},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:Object.assign(Object.assign({},k),{data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"}})},GaugeChart:{required:["value"],dataShape:"object",dataAccessors:[],props:Object.assign(Object.assign({},k),{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({},k),$),{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({},k),$),{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({},k),{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({},k),{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:R},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({},k),{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({},k),{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({},k),{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({},k),{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({},k),{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"}}}};function E(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}function _(e,t){const r=[],o=z[e];if(!o)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(z).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(!E(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=S(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=w(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=j(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=w(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=j(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 L=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),T=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),B=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),N=new Set(["LineChart","AreaChart","StackedAreaChart"]),P=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]);function I(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 F(e,t){const r=I(e),o=I(t);return null===r||null===o?null:(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}const M=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function q(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 D=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"]),H=new Set(["data","nodes","edges"]),U="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function G(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 W(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++)W(o[e],n[e])}function V(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 J(e){return"nominal"===e||"ordinal"===e}function Y(e){return"quantitative"===e||"temporal"===e}const X={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"},K={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"},Q={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function Z(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 te{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;const t=this;return{next:()=>t._size>e?{done:!1,value:t.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}}const re={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 oe(e,t){return"function"==typeof t?t(e):e[t]}function ne(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 ae(e={}){const{fields:t,title:o,format:n,style:a={},className:i=""}=e;return e=>{if(!e||"object"!=typeof e)return null;let s;const c=[];if(o){const t=oe(e,o);s=ne(t,n)}if(t&&t.length>0)t.forEach(t=>{let r,o,a;"string"==typeof t?(r=t,o=t,a=n):(r=t.label,o=t.accessor||t.key||"",a=t.format||n);const i=oe(e,o);c.push({label:r,value:ne(i,a)})});else if(!o){const t=["value","y","name","id","label"];for(const r of t)if(void 0!==e[r]){s=ne(e[r],n);break}if(!s){const t=Object.keys(e).filter(e=>!e.startsWith("_"));t.length>0&&(s=ne(e[t[0]],n))}}const l=Object.assign(Object.assign({},re),a);return r.createElement("div",{className:("semiotic-tooltip "+i).trim(),style:l},s&&r.createElement("div",{style:{fontWeight:c.length>0?"bold":"normal"}},s),c.map((e,t)=>r.createElement("div",{key:t,style:{marginTop:0===t&&s?"4px":0}},e.label&&r.createElement("span",null,e.label,": "),e.value)))}}exports.CARBON_ALERT={danger:"#da1e28",warning:"#f1c21b",success:"#24a148",info:"#0043ce"},exports.CARBON_CATEGORICAL_14=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"],exports.COLOR_BLIND_SAFE_CATEGORICAL=n,exports.DARK_THEME=i,exports.HIGH_CONTRAST_THEME=s,exports.IncrementalExtent=class{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}},exports.LIGHT_THEME=a,exports.MultiPointTooltip=function(){return e=>{var t,o,n,a,i,s,c,l,u,d;const p=e.allSeries;if(!p||0===p.length){const s=null!==(i=null!==(a=null!==(o=null===(t=e.data)||void 0===t?void 0:t.value)&&void 0!==o?o:null===(n=e.data)||void 0===n?void 0:n.y)&&void 0!==a?a:e.value)&&void 0!==i?i:e.y;return r.createElement("div",{className:"semiotic-tooltip",style:re},r.createElement("div",null,ne(s)))}const y=null!==(d=null!==(l=null!==(s=e.xValue)&&void 0!==s?s:null===(c=e.data)||void 0===c?void 0:c.time)&&void 0!==l?l:null===(u=e.data)||void 0===u?void 0:u.x)&&void 0!==d?d:e.time;return r.createElement("div",{className:"semiotic-tooltip",style:re},null!=y&&r.createElement("div",{style:{fontWeight:600,marginBottom:4,fontSize:"0.9em",borderBottom:"1px solid var(--semiotic-border, #eee)",paddingBottom:4}},ne(y)),p.map((e,t)=>r.createElement("div",{key:t,style:{display:"flex",alignItems:"center",gap:6,padding:"1px 0"}},r.createElement("span",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:e.color,flexShrink:0}}),r.createElement("span",{style:{flex:1,fontSize:"0.85em"}},e.group),r.createElement("span",{style:{fontWeight:500,fontSize:"0.85em"}},ne(e.value)))))}},exports.RingBuffer=te,exports.THEME_PRESETS=u,exports.ThemeProvider=function({theme:e,children:t}){const o="string"==typeof e&&d(e)?e:void 0;return r.createElement(c,null,r.createElement(f.Provider,{value:o},r.createElement(g,{theme:e}),r.createElement(b,null,t)))},exports.adaptiveTimeTicks=function(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*h>r?"hours":60*h>r?"days":400*h>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=v[e.getUTCMonth()],l=e.getUTCDate(),u=e.getUTCFullYear(),d=m(e.getUTCHours()),p=m(e.getUTCMinutes()),y=m(e.getUTCSeconds());switch(r){case"seconds":return o?`${c} ${l}, ${u} ${d}:${p}:${y}`:a?`${c} ${l} ${d}:${p}:${y}`:i?`${d}:${p}:${y}`:s?`${p}:${y}`:":"+y;case"minutes":return o?`${c} ${l}, ${u} ${d}:${p}`:a?`${c} ${l} ${d}:${p}`:i?`${d}:${p}`:":"+p;case"hours":return o?`${c} ${l}, ${u} ${d}:00`:n?`${c} ${l} ${d}:${p}`:a?`${c} ${l} ${d}:00`:d+":00";case"days":return o?`${c} ${l}, ${u}`:n?`${c} ${l}`:""+l;case"months":return o?`${c} ${u}`:""+c;case"years":return""+u}}(i,new Date(a[n-1]),s):function(e,t){const r=v[e.getUTCMonth()],o=e.getUTCDate(),n=e.getUTCFullYear(),a=m(e.getUTCHours()),i=m(e.getUTCMinutes()),s=m(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)}},exports.configToJSX=G,exports.copyConfig=function(e){return q(this,arguments,void 0,function*(e,t="json"){const r="jsx"===t?G(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)})},exports.createHatchPattern=function(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):(A||(A=document.createElement("canvas")),A.width=e,A.height=e,A)}(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 u=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(u);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")},exports.darkenColor=function(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")}`},exports.deserializeSelections=function(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},exports.diagnoseConfig=function(e,t){const r=[],o=_(e,t);for(const e of o.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return z[e]?(function(e,t,r){const o=z[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=z[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){L.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){T.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=z[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(!B.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(!N.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=z[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(!P.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=F(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=F(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 M)"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}},exports.exportChart=function(e,t){return q(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"),W(i,s),"svg"===r){const e=(new XMLSerializer).serializeToString(s);V(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 u=e.querySelector("canvas");u&&l.drawImage(u,0,0,c.width,c.height);const d=(new XMLSerializer).serializeToString(s),p=new Blob([d],{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?(V(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})}})},exports.fromConfig=function(e){if(!e.component||!e.props)throw Error("Invalid chart config: missing component or props");if(!z[e.component])throw Error(`Unknown component "${e.component}". This config may require a newer version of semiotic.`);return{componentName:e.component,props:U(e.props)}},exports.fromURL=function(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)},exports.fromVegaLite=function(e){var t,r,o,n,a,i,s,c,l,u,d,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 k;(null===(t=e.data)||void 0===t?void 0:t.values)?k=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 O={};e.width&&(O.width=e.width),e.height&&(O.height=e.height);const $=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if($&&(O.title=$),(null==x?void 0:x.field)&&(O.colorBy=x.field,null===(o=x.scale)||void 0===o?void 0:o.scheme)){const e=X[x.scale.scheme];e&&(O.colorScheme=e)}void 0!==(null==j?void 0:j.value)&&(O.pointOpacity=j.value);const C=null==v?void 0:v.aggregate,R=null==A?void 0:A.aggregate;if(k&&(C||R)){const e=R?A:v,t=R?v:A,r=Q[e.aggregate];if(r&&(null==t?void 0:t.field)&&e.field)k=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}(k,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&(null==t?void 0:t.field)&&k){const e=new Map;for(const r of k){const o=r[t.field]+"";e.set(o,(e.get(o)||0)+1)}k=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";k&&(O.data=k),(null==v?void 0:v.bin)?(O.valueAccessor=v.field,(null==A?void 0:A.field)&&(O.categoryAccessor=A.field),(null===(n=v.axis)||void 0===n?void 0:n.title)&&(O.valueLabel=v.axis.title)):(null==A?void 0:A.bin)&&(O.valueAccessor=A.field,(null==v?void 0:v.field)&&(O.categoryAccessor=v.field),(null===(a=A.axis)||void 0===a?void 0:a.title)&&(O.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&&(O.bins=t),ee(e,O,g)}let z;switch(b){case"bar":z=function(e,t,r,o,n,a,i){var s,c,l,u,d,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",J(null==e?void 0:e.type)&&Y(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)):Y(null==e?void 0:e.type)&&J(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===(u=null==e?void 0:e.axis)||void 0===u?void 0:u.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===(d=null==e?void 0:e.axis)||void 0===d?void 0:d.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,k,C,R);break;case"line":if(z="LineChart",Z(v,A,O,C,R),(null==x?void 0:x.field)&&(O.lineBy=x.field),h.interpolate){const e=K[h.interpolate];e&&(O.curve=e)}!0===h.point&&(O.showPoints=!0),k&&(O.data=k);break;case"area":if((null==x?void 0:x.field)?(z="StackedAreaChart",O.areaBy=x.field):z="AreaChart",Z(v,A,O,C,R),h.interpolate){const e=K[h.interpolate];e&&(O.curve=e)}void 0!==h.opacity&&(O.areaOpacity=h.opacity),k&&(O.data=k);break;case"point":case"circle":case"square":(null==S?void 0:S.field)?(z="BubbleChart",O.sizeBy=S.field,(null===(c=S.scale)||void 0===c?void 0:c.range)&&(O.sizeRange=S.scale.range)):z="Scatterplot",Z(v,A,O,C,R),k&&(O.data=k);break;case"rect":z="Heatmap",(null==v?void 0:v.field)&&(O.xAccessor=v.field),(null==A?void 0:A.field)&&(O.yAccessor=A.field),(null==x?void 0:x.field)&&(O.valueAccessor=x.field,delete O.colorBy),(null===(l=null==v?void 0:v.axis)||void 0===l?void 0:l.title)&&(O.xLabel=v.axis.title),(null===(u=null==A?void 0:A.axis)||void 0===u?void 0:u.title)&&(O.yLabel=A.axis.title),k&&(O.data=k);break;case"arc":h.innerRadius&&h.innerRadius>0?(z="DonutChart",O.innerRadius=h.innerRadius):z="PieChart",(null==w?void 0:w.field)?O.valueAccessor=w.field:(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field),(null==x?void 0:x.field)&&(O.categoryAccessor=x.field),(null==v?void 0:v.field)&&!(null==w?void 0:w.field)&&(O.categoryAccessor=v.field),k&&(O.data=k);break;case"tick":z="DotPlot",J(null==v?void 0:v.type)?(O.categoryAccessor=v.field,(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field),(null===(d=null==v?void 0:v.axis)||void 0===d?void 0:d.title)&&(O.categoryLabel=v.axis.title),(null===(p=null==A?void 0:A.axis)||void 0===p?void 0:p.title)&&(O.valueLabel=A.axis.title)):J(null==A?void 0:A.type)?(O.categoryAccessor=A.field,(null==v?void 0:v.field)&&(O.valueAccessor=C?"value":v.field),O.orientation="horizontal",(null===(y=null==A?void 0:A.axis)||void 0===y?void 0:y.title)&&(O.categoryLabel=A.axis.title),(null===(f=null==v?void 0:v.axis)||void 0===f?void 0:f.title)&&(O.valueLabel=v.axis.title)):((null==v?void 0:v.field)&&(O.categoryAccessor=v.field),(null==A?void 0:A.field)&&(O.valueAccessor=R?"value":A.field)),k&&(O.data=k);break;default:g.push(`Unsupported mark type "${b}". Defaulting to Scatterplot.`),z="Scatterplot",Z(v,A,O,C,R),k&&(O.data=k)}return ee(z,O,g)},exports.getHitRadius=function(e,t=30){return Math.max((null!=e?e:4)+5,12,t)},exports.lightenColor=function(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")}`},exports.normalizeTooltip=function(e){if(!0===e)return ae();if("function"==typeof e){const t=e;return e=>{const o=t(!e||"object"!=typeof e.data||null===e.data||"node"!==e.type&&"edge"!==e.type?e:e.data);return null==o?null:r.createElement("div",{className:"semiotic-tooltip",style:re},o)}}return!1!==e&&void 0!==e&&("object"==typeof e&&null!==e&&("fields"in e||"title"in e)?ae(e):ae())},exports.resolveThemePreset=d,exports.serializeSelections=function(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},exports.smartTickFormat=function(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"},exports.themeToCSS=function(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};`),`${t} {\n${s.join("\n")}\n}`},exports.themeToTokens=function(e){var t,r,o,n,a,i;return{semiotic: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"}}:{})}},exports.toConfig=function(e,t,r){if(!z[e])throw Error(`Unknown component "${e}". Known components: ${Object.keys(z).join(", ")}`);const o=!1!==(null==r?void 0:r.includeData),n={};for(const[e,r]of Object.entries(t))null!=r&&(D.has(e)||!o&&H.has(e)||"function"!=typeof r&&((null==r?void 0:r.$$typeof)||(n[e]=U(r))));return Object.assign({component:e,props:n,version:"1",createdAt:(new Date).toISOString()},(null==r?void 0:r.selections)?{selections:r.selections}:{})},exports.toURL=function(e){const t=JSON.stringify(e);return"sc="+btoa(unescape(encodeURIComponent(t))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")},exports.useHighContrast=function(){const[t,r]=e.useState(()=>y("(forced-colors: active)"));return e.useEffect(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(forced-colors: active)");return r(e.matches),p(e,e=>r(e.matches))},[]),t},exports.useReducedMotion=function(){const[t,r]=e.useState(()=>y("(prefers-reduced-motion: reduce)"));return e.useEffect(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return r(e.matches),p(e,e=>r(e.matches))},[]),t},exports.useTheme=function(){return l(e=>e.theme)},exports.validateProps=_;
|