@object-ui/plugin-charts 17.3.0 → 17.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@object-ui/core"),require("react"),require("@object-ui/components"),require("react/jsx-runtime"),require("recharts"),require("@object-ui/react"),require("lucide-react"),require("@object-ui/i18n")):typeof define==`function`&&define.amd?define([`exports`,`@object-ui/core`,`react`,`@object-ui/components`,`react/jsx-runtime`,`recharts`,`@object-ui/react`,`lucide-react`,`@object-ui/i18n`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCharts={},e.ObjectUICore,e.React,e.ObjectUIComponents,e.react_jsx_runtime,e.recharts,e.ObjectUIReact,e.lucide_react,e._object_ui_i18n))})(this,function(e,t,n,r,i,a,o,s,c){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var l=Object.create,u=Object.defineProperty,d=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},g=(e,t)=>{let n={};for(var r in e)u(n,r,{get:e[r],enumerable:!0});return t||u(n,Symbol.toStringTag,{value:`Module`}),n},_=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=f(t),a=0,o=i.length,s;a<o;a++)s=i[a],!m.call(e,s)&&s!==n&&u(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=d(t,s))||r.enumerable});return e};n=((e,t,n)=>(n=e==null?{}:l(p(e)),_(t||!e||!e.__esModule||!m.call(e,`default`)?u(n,`default`,{value:e,enumerable:!0}):n,e)))(n,1);function v(e){let t=E(e);if(t)return t;if(T(e))return Object.values(e).find(e=>typeof e==`string`&&e)}function y(e){if(!T(e))return;let t={},n=E(e.field);n&&(t.field=n);let r=E(e.format);r&&(t.format=r);let i=D(e.min);i!==void 0&&(t.min=i);let a=D(e.max);a!==void 0&&(t.max=a);let o=D(e.stepSize);o!==void 0&&o>0&&(t.stepSize=o),typeof e.showGridLines==`boolean`&&(t.showGridLines=e.showGridLines),typeof e.logarithmic==`boolean`&&(t.logarithmic=e.logarithmic);let s=E(e.position);(s===`left`||s===`right`||s===`top`||s===`bottom`)&&(t.position=s);let c=v(e.title);return c&&(t.title=c),t}function b(e){if(!T(e)){let t=E(e);return t?{dataKey:t}:void 0}let t=E(e.dataKey)??E(e.name);if(!t)return;let n={dataKey:t},r=v(e.label);r&&(n.label=r);let i=E(e.chartType)??E(e.type);(i===`bar`||i===`line`||i===`area`)&&(n.chartType=i);let a=E(e.variant);(a===`comparison`||a===`current`||a===`primary`)&&(n.variant=a);let o=D(e.opacity);o!==void 0&&(n.opacity=o);let s=E(e.dashArray);s&&(n.dashArray=s);let c=E(e.stack);c&&(n.stack=c);let l=E(e.yAxis);(l===`left`||l===`right`)&&(n.yAxis=l);let u=E(e.color);return u&&(n.color=u),n}function ee(e){if(!T(e))return{};let t={},n=E(e.type),r=E(e.chartType)??E(e.specType)??(n&&ae.has(n)?n:void 0);r&&ie.has(r)&&(t.chartType=r);let i=e.xAxis,a=y(i);a&&(a.format||a.title||a.showGridLines!==void 0)&&(t.xAxis=a);let o=E(e.xAxisKey)??a?.field??E(i);o&&(t.xAxisKey=o);let s=(Array.isArray(e.yAxis)?e.yAxis:e.yAxis===void 0?[]:[e.yAxis]).map(e=>y(e)??(E(e)?{field:E(e)}:void 0)).filter(e=>!!e);s.length&&(t.yAxes=s);let c=(Array.isArray(e.series)?e.series:Array.isArray(e.categories)?e.categories:void 0)?.map(b).filter(e=>!!e);if(!c?.length){let e=s.filter(e=>e.field).map((e,t)=>({dataKey:e.field,...e.title?{label:e.title}:{},...t>0||e.position===`right`?{yAxis:`right`}:{}}));e.length&&(c=e)}c?.length&&(t.series=c),typeof e.showLegend==`boolean`&&(t.showLegend=e.showLegend),typeof e.showDataLabels==`boolean`&&(t.showDataLabels=e.showDataLabels);let l=v(e.title);l&&(t.title=l);let u=v(e.subtitle);u&&(t.subtitle=u);let d=v(e.description);d&&(t.description=d);let f=D(e.height);return f!==void 0&&f>0&&(t.height=f),Array.isArray(e.annotations)&&e.annotations.length&&(t.annotations=e.annotations.filter(T)),T(e.interaction)&&(t.interaction=e.interaction),t}function te(e){if(e===`bar`||e===`column`)return`bar`;if(e===`line`)return`line`;if(e===`area`)return`area`}function x(e,t){if(e===`combo`)return`combo`;let n=te(e);if(!n||!t||t.length<2)return e;let r=t.map(e=>e.chartType??n);return new Set(r).size>1?`combo`:e}function S(e){if(!e)return;let t=e.includes(`%`),n=/^([$£€¥₹])/.exec(e),r=e.includes(`,`),i=/\.(0+)/.exec(e)?.[1].length??0,a={$:`USD`,"£":`GBP`,"€":`EUR`,"¥":`CNY`,"₹":`INR`};if(!t&&!n&&!r&&i===0)return;let o={minimumFractionDigits:i,maximumFractionDigits:i,useGrouping:r};return t?o.style=`percent`:n&&(o.style=`currency`,o.currency=a[n[1]]??`USD`),e=>{let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))return e==null?``:String(e);try{return new Intl.NumberFormat(void 0,o).format(t)}catch{return String(t)}}}function ne(e,t){let n=e?.stepSize;if(!n||n<=0)return;let r=t.filter(e=>Number.isFinite(e)),i=r.length?Math.min(...r):void 0,a=r.length?Math.max(...r):void 0,o=e.min??Math.min(0,i??0),s=e.max??a;if(s===void 0||!Number.isFinite(o)||!Number.isFinite(s)||s<o)return;let c=Math.floor(o/n)*n,l=e.max===void 0?Math.ceil(s/n)*n:e.max,u=Math.floor((l-c)/n+1e-9)+1;if(u<1||u>O)return;let d=[];for(let e=0;e<u;e++)d.push(Number((c+e*n).toPrecision(12)));return e.max!==void 0&&d[d.length-1]<e.max&&d.push(e.max),d}function re(e){if(!e)return;let{min:t,max:n}=e;if(t!==void 0||n!==void 0)return[t??`auto`,n??`auto`]}var ie,C,w,ae,T,E,D,O,k=h((()=>{ie=new Set([`bar`,`column`,`horizontal-bar`,`line`,`area`,`pie`,`donut`,`funnel`,`radar`,`scatter`,`treemap`,`sankey`,`combo`]),C=new Set([`gauge`,`solid-gauge`,`metric`,`kpi`,`bullet`]),w=new Set([`table`,`pivot`]),ae=new Set([...ie,...C,...w]),T=e=>!!e&&typeof e==`object`&&!Array.isArray(e),E=e=>typeof e==`string`&&e?e:void 0,D=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,O=200})),A=g({default:()=>N});function j(e,t=14){return e.length>t?`${e.slice(0,t-1)}…`:e}function M({x:e,y:t,payload:n}){let r=String(n?.value??``),a=j(r);return(0,i.jsx)(`g`,{transform:`translate(${e},${t})`,children:(0,i.jsxs)(`text`,{dy:10,textAnchor:`end`,transform:`rotate(-32)`,fill:`hsl(var(--muted-foreground))`,fontSize:11,fontFamily:`monospace`,children:[r!==a&&(0,i.jsx)(`title`,{children:r}),a]})})}function N({data:e=[],dataKey:t=`value`,xAxisKey:n=`name`,height:r=400,className:o=``,color:s=`hsl(var(--primary))`}){let c=e.map(e=>String(e?.[n]??``)),l=c.length>4||c.some(e=>e.length>8);return(0,i.jsx)(`div`,{className:`p-2 sm:p-3 md:p-4 rounded-xl border border-border bg-card/40 backdrop-blur-sm shadow-lg shadow-background/5 ${o}`,children:(0,i.jsx)(a.ResponsiveContainer,{width:`100%`,height:r,children:(0,i.jsxs)(a.BarChart,{data:e,margin:{top:10,right:10,left:10,bottom:l?24:5},children:[(0,i.jsxs)(`defs`,{children:[(0,i.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,stopColor:s,stopOpacity:1}),(0,i.jsx)(`stop`,{offset:`90%`,stopColor:s,stopOpacity:.6}),(0,i.jsx)(`stop`,{offset:`100%`,stopColor:s,stopOpacity:.3})]}),(0,i.jsxs)(`filter`,{id:`glow`,height:`130%`,children:[(0,i.jsx)(`feGaussianBlur`,{in:`SourceAlpha`,stdDeviation:`3`,result:`blur`}),(0,i.jsx)(`feOffset`,{in:`blur`,dx:`0`,dy:`0`,result:`offsetBlur`}),(0,i.jsx)(`feFlood`,{floodColor:s,floodOpacity:`0.5`,result:`offsetColor`}),(0,i.jsx)(`feComposite`,{in:`offsetColor`,in2:`offsetBlur`,operator:`in`,result:`offsetBlur`}),(0,i.jsxs)(`feMerge`,{children:[(0,i.jsx)(`feMergeNode`,{in:`offsetBlur`}),(0,i.jsx)(`feMergeNode`,{in:`SourceGraphic`})]})]})]}),(0,i.jsx)(a.CartesianGrid,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,i.jsx)(a.XAxis,{dataKey:n,tick:l?(0,i.jsx)(M,{}):{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},interval:0,height:l?56:void 0,dy:l?void 0:10}),(0,i.jsx)(a.YAxis,{tick:{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:!1}),(0,i.jsx)(a.Tooltip,{cursor:{fill:`hsl(var(--muted))`,opacity:.2},contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,color:`hsl(var(--popover-foreground))`,borderRadius:`8px`,fontFamily:`monospace`,boxShadow:`0 4px 6px -1px rgb(0 0 0 / 0.1)`},itemStyle:{color:`hsl(var(--primary))`}}),(0,i.jsx)(a.Legend,{wrapperStyle:{paddingTop:`20px`,fontFamily:`monospace`}}),(0,i.jsx)(a.Bar,{dataKey:t,fill:`url(#barGradient)`,radius:[4,4,0,0],filter:`url(#glow)`,animationDuration:1500})]})})})}var P=h((()=>{}));function F(){let e=n.useContext(H);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function I({id:e,className:t,children:r,config:o,disableSettleRemount:s,...c}){let l=n.useId(),u=`chart-${e||l.replace(/:/g,``)}`,d=n.useRef(null),[f,p]=n.useState(0);return n.useEffect(()=>{if(s)return;let e=d.current;if(e==null||typeof ResizeObserver>`u`)return;let t=!1,n,r=new ResizeObserver(e=>{if(t)return;let i=e[0]?.contentRect;i==null||i.width<=0||i.height<=0||(n!=null&&clearTimeout(n),n=setTimeout(()=>{t=!0,r.disconnect(),p(e=>e+1)},80))});return r.observe(e),()=>{t=!0,n!=null&&clearTimeout(n),r.disconnect()}},[s]),(0,i.jsx)(H.Provider,{value:{config:o},children:(0,i.jsxs)(`div`,{ref:d,"data-slot":`chart`,"data-chart":u,className:B(`block w-full h-[350px] text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground`,t),style:{minHeight:280,minWidth:0,...c.style},...c,children:[(0,i.jsx)(oe,{id:u,config:o}),(0,i.jsx)(a.ResponsiveContainer,{width:`100%`,height:`100%`,children:r},f)]})})}function L({active:e,payload:t,className:r,indicator:a=`dot`,hideLabel:o=!1,hideIndicator:s=!1,label:c,labelFormatter:l,labelClassName:u,formatter:d,color:f,nameKey:p,labelKey:m}){let{config:h}=F(),g=n.useMemo(()=>{if(o||!t?.length)return null;let[e]=t,n=`${m||e?.dataKey||e?.name||`value`}`,r=z(h,e,n),a=!m&&typeof c==`string`?h[c]?.label||c:r?.label;return l?(0,i.jsx)(`div`,{className:B(`font-medium`,u),children:l(a,t)}):a?(0,i.jsx)(`div`,{className:B(`font-medium`,u),children:a}):null},[c,l,t,o,u,h,m]);if(!e||!t?.length)return null;let _=t.length===1&&a!==`dot`;return(0,i.jsxs)(`div`,{className:B(`border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl`,r),children:[_?null:g,(0,i.jsx)(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let n=`${p||e.name||e.dataKey||`value`}`,r=z(h,e,n),o=f||e.payload.fill||e.color;return(0,i.jsx)(`div`,{className:B(`[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5`,a===`dot`?`items-center`:``),children:d&&e?.value!==void 0&&e.name?d(e.value,e.name,e,t,e.payload):(0,i.jsxs)(i.Fragment,{children:[r?.icon?(0,i.jsx)(r.icon,{}):!s&&(0,i.jsx)(`div`,{className:B(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,a===`dot`?`h-2.5 w-2.5`:``,a===`line`?`w-1`:``,a===`dashed`?`w-0 border-[1.5px] border-dashed bg-transparent`:``,_&&a===`dashed`?`my-0.5`:``),style:{"--color-bg":o,"--color-border":o}}),(0,i.jsxs)(`div`,{className:B(`flex flex-1 justify-between leading-none`,_?`items-end`:`items-center`),children:[(0,i.jsxs)(`div`,{className:`grid gap-1.5`,children:[_?g:null,(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:r?.label||e.name})]}),e.value&&(0,i.jsx)(`span`,{className:`text-foreground font-mono font-medium tabular-nums`,children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})}function R({className:e,hideIcon:t=!1,payload:n,verticalAlign:r=`bottom`,nameKey:a}){let{config:o}=F();return n?.length?(0,i.jsx)(`div`,{className:B(`flex items-center justify-center gap-4`,r===`top`?`pb-3`:`pt-3`,e),children:n.filter(e=>e.type!==`none`).map(e=>{let n=`${a||e.dataKey||`value`}`,r=z(o,e,n);return(0,i.jsxs)(`div`,{className:B(`[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3`),children:[r?.icon&&!t?(0,i.jsx)(r.icon,{}):(0,i.jsx)(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),r?.label]},e.value)})}):null}function z(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return r&&n in r&&typeof r[n]==`string`?i=r[n]:n in t&&typeof t[n]==`string`&&(i=t[n]),i in e?e[i]:e[n]}var B,V,H,oe,U,W,se=h((()=>{B=(...e)=>e.filter(Boolean).join(` `),V={light:``,dark:`.dark`},H=n.createContext(null),oe=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme||e.color);return n.length?(0,i.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(V).map(([t,r])=>`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@object-ui/core"),require("react"),require("@object-ui/components"),require("react/jsx-runtime"),require("recharts"),require("@object-ui/react"),require("lucide-react"),require("@object-ui/i18n")):typeof define==`function`&&define.amd?define([`exports`,`@object-ui/core`,`react`,`@object-ui/components`,`react/jsx-runtime`,`recharts`,`@object-ui/react`,`lucide-react`,`@object-ui/i18n`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCharts={},e.ObjectUICore,e.React,e.ObjectUIComponents,e.react_jsx_runtime,e.recharts,e.ObjectUIReact,e.lucide_react,e._object_ui_i18n))})(this,function(e,t,n,r,i,a,o,s,c){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var l=Object.create,u=Object.defineProperty,d=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},g=(e,t)=>{let n={};for(var r in e)u(n,r,{get:e[r],enumerable:!0});return t||u(n,Symbol.toStringTag,{value:`Module`}),n},_=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=f(t),a=0,o=i.length,s;a<o;a++)s=i[a],!m.call(e,s)&&s!==n&&u(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=d(t,s))||r.enumerable});return e};n=((e,t,n)=>(n=e==null?{}:l(p(e)),_(t||!e||!e.__esModule||!m.call(e,`default`)?u(n,`default`,{value:e,enumerable:!0}):n,e)))(n,1);function v(e){let t=T(e);if(t)return t;if(w(e))return Object.values(e).find(e=>typeof e==`string`&&e)}function ee(e){if(!w(e))return;let t={},n=T(e.field);n&&(t.field=n);let r=T(e.format);r&&(t.format=r);let i=E(e.min);i!==void 0&&(t.min=i);let a=E(e.max);a!==void 0&&(t.max=a);let o=E(e.stepSize);o!==void 0&&o>0&&(t.stepSize=o),typeof e.showGridLines==`boolean`&&(t.showGridLines=e.showGridLines),typeof e.logarithmic==`boolean`&&(t.logarithmic=e.logarithmic);let s=T(e.position);(s===`left`||s===`right`||s===`top`||s===`bottom`)&&(t.position=s);let c=v(e.title);return c&&(t.title=c),t}function te(e){if(!w(e)){let t=T(e);return t?{dataKey:t}:void 0}let t=T(e.dataKey)??T(e.name);if(!t)return;let n={dataKey:t},r=v(e.label);r&&(n.label=r);let i=T(e.chartType)??T(e.type);(i===`bar`||i===`line`||i===`area`)&&(n.chartType=i);let a=T(e.variant);(a===`comparison`||a===`current`||a===`primary`)&&(n.variant=a);let o=E(e.opacity);o!==void 0&&(n.opacity=o);let s=T(e.dashArray);s&&(n.dashArray=s);let c=T(e.stack);c&&(n.stack=c);let l=T(e.yAxis);(l===`left`||l===`right`)&&(n.yAxis=l);let u=T(e.color);return u&&(n.color=u),n}function y(e){if(!w(e))return{};let t={},n=T(e.type),r=T(e.chartType)??T(e.specType)??(n&&C.has(n)?n:void 0);r&&x.has(r)&&(t.chartType=r);let i=e.xAxis,a=ee(i);a&&(a.format||a.title||a.showGridLines!==void 0)&&(t.xAxis=a);let o=T(e.xAxisKey)??a?.field??T(i);o&&(t.xAxisKey=o);let s=(Array.isArray(e.yAxis)?e.yAxis:e.yAxis===void 0?[]:[e.yAxis]).map(e=>ee(e)??(T(e)?{field:T(e)}:void 0)).filter(e=>!!e);s.length&&(t.yAxes=s);let c=(Array.isArray(e.series)?e.series:Array.isArray(e.categories)?e.categories:void 0)?.map(te).filter(e=>!!e);if(!c?.length){let e=s.filter(e=>e.field).map((e,t)=>({dataKey:e.field,...e.title?{label:e.title}:{},...t>0||e.position===`right`?{yAxis:`right`}:{}}));e.length&&(c=e)}c?.length&&(t.series=c),typeof e.showLegend==`boolean`&&(t.showLegend=e.showLegend),typeof e.showDataLabels==`boolean`&&(t.showDataLabels=e.showDataLabels);let l=v(e.title);l&&(t.title=l);let u=v(e.subtitle);u&&(t.subtitle=u);let d=v(e.description);d&&(t.description=d);let f=E(e.height);return f!==void 0&&f>0&&(t.height=f),Array.isArray(e.annotations)&&e.annotations.length&&(t.annotations=e.annotations.filter(w)),w(e.interaction)&&(t.interaction=e.interaction),t}function ne(e){if(e===`bar`||e===`column`)return`bar`;if(e===`line`)return`line`;if(e===`area`)return`area`}function re(e,t){if(e===`combo`)return`combo`;let n=ne(e);if(!n||!t||t.length<2)return e;let r=t.map(e=>e.chartType??n);return new Set(r).size>1?`combo`:e}function b(e){if(!e)return;let t=e.includes(`%`),n=/^([$£€¥₹])/.exec(e),r=e.includes(`,`),i=/\.(0+)/.exec(e)?.[1].length??0,a={$:`USD`,"£":`GBP`,"€":`EUR`,"¥":`CNY`,"₹":`INR`};if(!t&&!n&&!r&&i===0)return;let o={minimumFractionDigits:i,maximumFractionDigits:i,useGrouping:r};return t?o.style=`percent`:n&&(o.style=`currency`,o.currency=a[n[1]]??`USD`),e=>{let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))return e==null?``:String(e);try{return new Intl.NumberFormat(void 0,o).format(t)}catch{return String(t)}}}function ie(e,t){let n=e?.stepSize;if(!n||n<=0)return;let r=t.filter(e=>Number.isFinite(e)),i=r.length?Math.min(...r):void 0,a=r.length?Math.max(...r):void 0,o=e.min??Math.min(0,i??0),s=e.max??a;if(s===void 0||!Number.isFinite(o)||!Number.isFinite(s)||s<o)return;let c=Math.floor(o/n)*n,l=e.max===void 0?Math.ceil(s/n)*n:e.max,u=Math.floor((l-c)/n+1e-9)+1;if(u<1||u>D)return;let d=[];for(let e=0;e<u;e++)d.push(Number((c+e*n).toPrecision(12)));return e.max!==void 0&&d[d.length-1]<e.max&&d.push(e.max),d}function ae(e){if(!e)return;let{min:t,max:n}=e;if(t!==void 0||n!==void 0)return[t??`auto`,n??`auto`]}var x,S,oe,C,w,T,E,D,O=h((()=>{x=new Set([`bar`,`column`,`horizontal-bar`,`line`,`area`,`pie`,`donut`,`funnel`,`radar`,`scatter`,`treemap`,`sankey`,`combo`]),S=new Set([`gauge`,`solid-gauge`,`metric`,`kpi`,`bullet`]),oe=new Set([`table`,`pivot`]),C=new Set([...x,...S,...oe]),w=e=>!!e&&typeof e==`object`&&!Array.isArray(e),T=e=>typeof e==`string`&&e?e:void 0,E=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,D=200})),k=g({default:()=>M});function A(e,t=14){return e.length>t?`${e.slice(0,t-1)}…`:e}function j({x:e,y:t,payload:n}){let r=String(n?.value??``),a=A(r);return(0,i.jsx)(`g`,{transform:`translate(${e},${t})`,children:(0,i.jsxs)(`text`,{dy:10,textAnchor:`end`,transform:`rotate(-32)`,fill:`hsl(var(--muted-foreground))`,fontSize:11,fontFamily:`monospace`,children:[r!==a&&(0,i.jsx)(`title`,{children:r}),a]})})}function M({data:e=[],dataKey:t=`value`,xAxisKey:n=`name`,height:r=400,className:o=``,color:s=`hsl(var(--primary))`}){let c=e.map(e=>String(e?.[n]??``)),l=c.length>4||c.some(e=>e.length>8);return(0,i.jsx)(`div`,{className:`p-2 sm:p-3 md:p-4 rounded-xl border border-border bg-card/40 backdrop-blur-sm shadow-lg shadow-background/5 ${o}`,children:(0,i.jsx)(a.ResponsiveContainer,{width:`100%`,height:r,children:(0,i.jsxs)(a.BarChart,{data:e,margin:{top:10,right:10,left:10,bottom:l?24:5},children:[(0,i.jsxs)(`defs`,{children:[(0,i.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,stopColor:s,stopOpacity:1}),(0,i.jsx)(`stop`,{offset:`90%`,stopColor:s,stopOpacity:.6}),(0,i.jsx)(`stop`,{offset:`100%`,stopColor:s,stopOpacity:.3})]}),(0,i.jsxs)(`filter`,{id:`glow`,height:`130%`,children:[(0,i.jsx)(`feGaussianBlur`,{in:`SourceAlpha`,stdDeviation:`3`,result:`blur`}),(0,i.jsx)(`feOffset`,{in:`blur`,dx:`0`,dy:`0`,result:`offsetBlur`}),(0,i.jsx)(`feFlood`,{floodColor:s,floodOpacity:`0.5`,result:`offsetColor`}),(0,i.jsx)(`feComposite`,{in:`offsetColor`,in2:`offsetBlur`,operator:`in`,result:`offsetBlur`}),(0,i.jsxs)(`feMerge`,{children:[(0,i.jsx)(`feMergeNode`,{in:`offsetBlur`}),(0,i.jsx)(`feMergeNode`,{in:`SourceGraphic`})]})]})]}),(0,i.jsx)(a.CartesianGrid,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,i.jsx)(a.XAxis,{dataKey:n,tick:l?(0,i.jsx)(j,{}):{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},interval:0,height:l?56:void 0,dy:l?void 0:10}),(0,i.jsx)(a.YAxis,{tick:{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:!1}),(0,i.jsx)(a.Tooltip,{cursor:{fill:`hsl(var(--muted))`,opacity:.2},contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,color:`hsl(var(--popover-foreground))`,borderRadius:`8px`,fontFamily:`monospace`,boxShadow:`0 4px 6px -1px rgb(0 0 0 / 0.1)`},itemStyle:{color:`hsl(var(--primary))`}}),(0,i.jsx)(a.Legend,{wrapperStyle:{paddingTop:`20px`,fontFamily:`monospace`}}),(0,i.jsx)(a.Bar,{dataKey:t,fill:`url(#barGradient)`,radius:[4,4,0,0],filter:`url(#glow)`,animationDuration:1500})]})})})}var se=h((()=>{}));function N(){let e=n.useContext(B);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function P({id:e,className:t,children:r,config:o,disableSettleRemount:s,style:c,...l}){let u=n.useId(),d=`chart-${e||u.replace(/:/g,``)}`,f=n.useRef(null),[p,m]=n.useState(0);n.useEffect(()=>{if(s)return;let e=f.current;if(e==null||typeof ResizeObserver>`u`)return;let t=!1,n,r=new ResizeObserver(e=>{if(t)return;let i=e[0]?.contentRect;i==null||i.width<=0||i.height<=0||(n!=null&&clearTimeout(n),n=setTimeout(()=>{t=!0,r.disconnect(),m(e=>e+1)},80))});return r.observe(e),()=>{t=!0,n!=null&&clearTimeout(n),r.disconnect()}},[s]);let h=c?.height!=null||c?.minHeight!=null,g=c?.width!=null||c?.minWidth!=null,_={...h?{}:{minHeight:280},...g?{}:{minWidth:0},...c};return(0,i.jsx)(B.Provider,{value:{config:o},children:(0,i.jsxs)(`div`,{ref:f,"data-slot":`chart`,"data-chart":d,className:R(`block w-full h-[350px] text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground`,t),style:_,...l,children:[(0,i.jsx)(V,{id:d,config:o}),(0,i.jsx)(a.ResponsiveContainer,{width:`100%`,height:`100%`,children:r},p)]})})}function F({active:e,payload:t,className:r,indicator:a=`dot`,hideLabel:o=!1,hideIndicator:s=!1,label:c,labelFormatter:l,labelClassName:u,formatter:d,color:f,nameKey:p,labelKey:m}){let{config:h}=N(),g=n.useMemo(()=>{if(o||!t?.length)return null;let[e]=t,n=`${m||e?.dataKey||e?.name||`value`}`,r=L(h,e,n),a=!m&&typeof c==`string`?h[c]?.label||c:r?.label;return l?(0,i.jsx)(`div`,{className:R(`font-medium`,u),children:l(a,t)}):a?(0,i.jsx)(`div`,{className:R(`font-medium`,u),children:a}):null},[c,l,t,o,u,h,m]);if(!e||!t?.length)return null;let _=t.length===1&&a!==`dot`;return(0,i.jsxs)(`div`,{className:R(`border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl`,r),children:[_?null:g,(0,i.jsx)(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let n=`${p||e.name||e.dataKey||`value`}`,r=L(h,e,n),o=f||e.payload.fill||e.color;return(0,i.jsx)(`div`,{className:R(`[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5`,a===`dot`?`items-center`:``),children:d&&e?.value!==void 0&&e.name?d(e.value,e.name,e,t,e.payload):(0,i.jsxs)(i.Fragment,{children:[r?.icon?(0,i.jsx)(r.icon,{}):!s&&(0,i.jsx)(`div`,{className:R(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,a===`dot`?`h-2.5 w-2.5`:``,a===`line`?`w-1`:``,a===`dashed`?`w-0 border-[1.5px] border-dashed bg-transparent`:``,_&&a===`dashed`?`my-0.5`:``),style:{"--color-bg":o,"--color-border":o}}),(0,i.jsxs)(`div`,{className:R(`flex flex-1 justify-between leading-none`,_?`items-end`:`items-center`),children:[(0,i.jsxs)(`div`,{className:`grid gap-1.5`,children:[_?g:null,(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:r?.label||e.name})]}),e.value&&(0,i.jsx)(`span`,{className:`text-foreground font-mono font-medium tabular-nums`,children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})}function I({className:e,hideIcon:t=!1,payload:n,verticalAlign:r=`bottom`,nameKey:a}){let{config:o}=N();return n?.length?(0,i.jsx)(`div`,{className:R(`flex items-center justify-center gap-4`,r===`top`?`pb-3`:`pt-3`,e),children:n.filter(e=>e.type!==`none`).map(e=>{let n=`${a||e.dataKey||`value`}`,r=L(o,e,n);return(0,i.jsxs)(`div`,{className:R(`[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3`),children:[r?.icon&&!t?(0,i.jsx)(r.icon,{}):(0,i.jsx)(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),r?.label]},e.value)})}):null}function L(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return r&&n in r&&typeof r[n]==`string`?i=r[n]:n in t&&typeof t[n]==`string`&&(i=t[n]),i in e?e[i]:e[n]}var R,z,B,V,H,U,W=h((()=>{R=(...e)=>e.filter(Boolean).join(` `),z={light:``,dark:`.dark`},B=n.createContext(null),V=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme||e.color);return n.length?(0,i.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(z).map(([t,r])=>`
2
2
  ${r} [data-chart=${e}] {
3
3
  ${n.map(([e,n])=>{let r=n.theme?.[t]||n.color;return r?` --color-${e}: ${r};`:null}).join(`
4
4
  `)}
5
5
  }
6
6
  `).join(`
7
- `)}}):null},U=a.Tooltip,W=a.Legend}));function G(e){return e?.[0]?.dataKey||`value`}function ce(e,t,n){if(!e)return null;let r=e.payload??e,i=r?.[t];if(i==null)return null;let a=G(n);return{category:String(i),series:a,value:typeof r?.[a]==`number`?r[a]:void 0}}function le(e,t){if(!e)return null;let n=e.name??e.payload?.name??e.root?.name;if(n==null)return null;let r=e.value??e.size??e.payload?.size;return{category:String(n),series:G(t),value:typeof r==`number`?r:void 0}}function ue(e,t){if(!e)return null;let n=e.payload??e,r=n?.name;return r==null||n?.depth===0?null:{category:String(r),series:G(t),value:typeof n?.value==`number`?n.value:void 0}}var de=h((()=>{})),fe=g({default:()=>_e});function pe(e){let{x:t,y:n,width:r,height:a,name:o,fill:s}=e;return r<=0||a<=0?null:(0,i.jsxs)(`g`,{children:[(0,i.jsx)(`rect`,{x:t,y:n,width:r,height:a,fill:s,stroke:`hsl(var(--background))`,strokeWidth:2}),r>48&&a>18?(0,i.jsx)(`text`,{x:t+6,y:n+18,fill:`#fff`,fontSize:12,className:`pointer-events-none`,children:o}):null]})}function me({title:e,subtitle:t,children:n}){return!e&&!t?(0,i.jsx)(i.Fragment,{children:n}):(0,i.jsxs)(`div`,{className:`flex h-full w-full flex-col`,children:[(0,i.jsxs)(`div`,{className:`mb-2 shrink-0`,children:[e?(0,i.jsx)(`div`,{className:`text-sm font-medium leading-tight text-foreground`,children:e}):null,t?(0,i.jsx)(`div`,{className:`text-xs leading-tight text-muted-foreground`,children:t}):null]}),(0,i.jsx)(`div`,{className:`min-h-0 flex-1`,children:n})]})}function he({chartType:e=`bar`,data:r=[],config:o={},xAxisKey:s=`name`,series:c=[],className:l=``,colors:u,categoryColors:d,categoryOrder:f,onChartClick:p,isAnimationActive:m,xAxis:h,yAxes:g,showLegend:_,showDataLabels:v,title:y,subtitle:b,description:ee,height:ae,annotations:T,interaction:E}){let D=e===`column`?`bar`:e,O=x(D,c),k=te(D),A=Array.isArray(r)?r:[],j=m===!1?{isAnimationActive:!1}:{},M={...m===!1?{disableSettleRemount:!0}:{},...ae?{style:{height:ae}}:{},...ee?{role:`img`,"aria-label":ee}:{}},[N,P]=n.useState(!1),F=n.useCallback(e=>{if(!p||!e)return;let t=Array.isArray(e.activePayload)?e.activePayload[0]:void 0;p({category:e.activeLabel==null?void 0:String(e.activeLabel),series:t?.dataKey?String(t.dataKey):void 0,value:typeof t?.value==`number`?t.value:void 0})},[p]),z=n.useCallback(e=>{if(!p||!e)return;let t=e.payload?.[s],n=c[0]?.dataKey||`value`;p({category:t==null?void 0:String(t),series:n,value:typeof e.payload?.[n]==`number`?e.payload[n]:void 0})},[p,s,c]),B=p?{onClick:F,style:{cursor:`pointer`}}:{},V=p?{onClick:z,style:{cursor:`pointer`}}:{},H=n.useCallback((e,t,n)=>d&&d[e==null?``:String(e)]||n[t%n.length],[d]),oe=n.useCallback(e=>{if(!p)return;let t=ce(e,s,c);t&&p(t)},[p,s,c]),se=n.useCallback(e=>{if(!p)return;let t=le(e,c);t&&p(t)},[p,c]),G=n.useCallback(e=>{if(!p)return;let t=ue(e,c);t&&p(t)},[p,c]),de=p?{onClick:oe,cursor:`pointer`}:{},fe=p?{onClick:se,style:{cursor:`pointer`}}:{},he=p?{onClick:G,style:{cursor:`pointer`}}:{};n.useEffect(()=>{let e=()=>P(window.innerWidth<640);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let ge={bar:a.BarChart,"horizontal-bar":a.BarChart,line:a.LineChart,area:a.AreaChart,pie:a.PieChart,donut:a.PieChart,radar:a.RadarChart,scatter:a.ScatterChart,funnel:a.FunnelChart,combo:a.ComposedChart,treemap:a.BarChart,sankey:a.BarChart}[O]||a.BarChart,_e=n.useCallback(e=>{if(e==null||e===``)return``;let t=o?.[String(e)]?.label;if(t!=null)return String(t);let n=typeof e==`string`?e:String(e);if(/^\d{4}-\d{2}-\d{2}/.test(n)){let e=new Date(n);if(!Number.isNaN(e.getTime())){let t=(A.length>1?Math.abs(new Date(String(A[A.length-1][s]??``)).getTime()-new Date(String(A[0][s]??``)).getTime()):0)/864e5;try{return t<=62?e.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):e.toLocaleDateString(void 0,{month:`short`,year:`numeric`})}catch{return e.toISOString().slice(0,10)}}}return N&&n.length>8?n.slice(0,8)+`…`:n},[A,s,N,o]),ye=n.useMemo(()=>A.some(e=>String(e[s]||``).length>5),[A,s]),J=()=>Array.isArray(u)&&u.length>0?u:[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`,`hsl(var(--chart-4))`,`hsl(var(--chart-5))`],be=n.useCallback(e=>{if(e==null||e===``)return``;let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))return String(e);try{return new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(t)}catch{return String(t)}},[]),Y=g?.[0],X=g&&g.length>1?g[1]:Y?.position===`right`?Y:void 0,Z=!!g&&g.length>1,Q=n.useMemo(()=>S(h?.format)??_e,[h?.format,_e]),$=n.useMemo(()=>S(Y?.format)??be,[Y?.format,be]),xe=n.useMemo(()=>S(X?.format)??be,[X?.format,be]),Se=n.useCallback(e=>{let t=c.filter(t=>Z?(t.yAxis===`right`?`right`:`left`)===e:e===`left`).map(e=>e.dataKey),n=[];for(let e of A)for(let r of t){let t=Number(e?.[r]);Number.isFinite(t)&&n.push(t)}return n},[A,c,Z]),Ce=n.useCallback((e,t=`left`)=>{if(!e)return{};let n=re(e),r=ne(e,Se(t));return{...r?{ticks:r}:{},...n?{domain:n}:{},...n?{allowDataOverflow:!0}:{},...e.logarithmic?{scale:`log`,domain:n??[1,`auto`]}:{},...e.title?{label:{value:e.title,angle:-90,position:`insideLeft`}}:{}}},[Se]),we=Y?.showGridLines!==!1,Te={vertical:h?.showGridLines===!0,horizontal:we},Ee=_!==!1,De=n.useMemo(()=>{if(!Array.isArray(T)||T.length===0)return null;let e={solid:void 0,dashed:`4 4`,dotted:`1 4`};return T.map((t,n)=>{let r=t?.axis===`x`,o=K(String(t?.color||`hsl(var(--muted-foreground))`)),s=e[String(t?.style??`dashed`)],c=typeof t?.label==`string`?t.label:void 0,l=c?{label:{value:c,position:`insideTopRight`,fill:o,fontSize:11}}:{};if(t?.type===`region`){let e=r?{x1:t.value,x2:t.endValue}:{y1:t.value,y2:t.endValue};return(0,i.jsx)(a.ReferenceArea,{...e,...Z&&!r?{yAxisId:`left`}:{},fill:o,fillOpacity:.12,stroke:o,strokeOpacity:.35,...l},`ann-${n}`)}return(0,i.jsx)(a.ReferenceLine,{...r?{x:t?.value}:{y:t?.value},...Z&&!r?{yAxisId:`left`}:{},stroke:o,strokeDasharray:s,...l},`ann-${n}`)})},[T,Z]),Oe=E?.tooltips!==!1,ke=E?.brush===!0?(0,i.jsx)(a.Brush,{dataKey:s,height:24,travellerWidth:8,stroke:`hsl(var(--muted-foreground))`}):null,Ae=e=>v?(0,i.jsx)(a.LabelList,{position:`top`,className:`fill-foreground`,fontSize:11,...e?{formatter:e}:{}}):null,je=n.useMemo(()=>({tickLine:!1,tickMargin:10,axisLine:!1,interval:`preserveStartEnd`,minTickGap:N?32:48,tickFormatter:Q,...h?.title?{label:{value:h.title,position:`insideBottom`,offset:-4}}:{},...!N&&ye&&{angle:-35,textAnchor:`end`,height:60}}),[N,ye,Q,h?.title]);if(O&&C.has(O)){let e=c[0]?.dataKey||`value`,t=A[0]?.[e],n=typeof t==`number`?t:Number(t),r=c[0]?.label??o?.[e]?.label??e;return(0,i.jsx)(`div`,{className:l,"data-testid":`advanced-chart-single-value`,children:(0,i.jsxs)(`div`,{className:`flex flex-col gap-1 py-4`,children:[(0,i.jsx)(`span`,{className:`text-3xl font-semibold tabular-nums`,children:Number.isFinite(n)?new Intl.NumberFormat().format(n):String(t??`—`)}),(0,i.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:String(r)})]})})}if(O&&w.has(O))return(0,i.jsxs)(`div`,{className:`rounded-md border border-dashed bg-muted/20 px-3 py-2 text-xs text-muted-foreground ${l??``}`,"data-testid":`advanced-chart-tabular-notice`,role:`note`,children:[`Chart type “`,O,`” is tabular — render it with the data-table / pivot components; a chart block draws series charts.`]});if(O&&!ie.has(O))return(0,i.jsxs)(`div`,{className:`rounded-md border border-dashed bg-muted/20 px-3 py-2 text-xs text-muted-foreground ${l??``}`,"data-testid":`advanced-chart-unknown-type`,role:`note`,children:[`Chart type “`,O,`” is not a spec chart type — nothing was drawn.`]});if(O===`pie`||O===`donut`){let e=O===`donut`?`52%`:0,t=J(),n={...o};return A.forEach((e,r)=>{let i=e?.[s];if(i==null||i===``)return;let a=String(i);n[a]||(n[a]={label:a,color:H(i,r,t)})}),(0,i.jsx)(I,{config:n,className:l,...M,children:(0,i.jsxs)(a.PieChart,{children:[(0,i.jsx)(U,{cursor:!1,content:(0,i.jsx)(L,{hideLabel:!0})}),(0,i.jsx)(a.Pie,{data:A,dataKey:c[0]?.dataKey||`value`,nameKey:s||`name`,innerRadius:e,strokeWidth:5,paddingAngle:2,outerRadius:`85%`,...j,...V,children:A.map((e,n)=>{let r=H(e?.[s],n,t);return(0,i.jsx)(a.Cell,{fill:K(r)},`cell-${n}`)})}),Ee?(0,i.jsx)(W,{verticalAlign:`bottom`,wrapperStyle:{fontSize:N?`11px`:`12px`,paddingTop:`8px`},content:(0,i.jsx)(R,{nameKey:s,className:`flex-wrap`})}):null]})})}if(O===`funnel`){let e=c[0]?.dataKey||`value`,n=J(),r=p?t=>{t&&p({category:t?.payload?.[s]??t?.[s],value:t?.payload?.[e]??t?.[e]})}:void 0,u=r?{onClick:r,style:{cursor:`pointer`}}:{},d=(0,t.buildCategoryRank)(f),m=d?[...A].sort((e,t)=>(d.get(String(e?.[s]??``))??2**53-1)-(d.get(String(t?.[s]??``))??2**53-1)):[...A].sort((t,n)=>{let r=Number(t?.[e]??0);return Number(n?.[e]??0)-r});return(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsxs)(a.FunnelChart,{children:[(0,i.jsx)(U,{content:(0,i.jsx)(L,{})}),(0,i.jsxs)(a.Funnel,{dataKey:e,data:m,nameKey:s,...j,...u,children:[(0,i.jsx)(a.LabelList,{position:`right`,fill:`hsl(var(--foreground))`,stroke:`none`,dataKey:s}),m.map((e,t)=>(0,i.jsx)(a.Cell,{fill:K(n[t%n.length])},`funnel-cell-${t}`))]})]})})}if(O===`treemap`){let e=c[0]?.dataKey||`value`,t=J(),n=A.map((n,r)=>({name:String(n?.[s]??``),size:Number(n?.[e])||0,fill:K(t[r%t.length])}));return(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsx)(a.Treemap,{data:n,dataKey:`size`,nameKey:`name`,...j,content:(0,i.jsx)(pe,{}),...fe,children:(0,i.jsx)(a.Tooltip,{})})})}if(O===`sankey`){let e=c[0]?.dataKey||`value`,t=c[0]?.label||e,n=A.filter(t=>(Number(t?.[e])||0)>0),r=[{name:t},...n.map(e=>({name:String(e?.[s]??``)}))],u=n.map((t,n)=>({source:0,target:n+1,value:Number(t?.[e])||0}));return u.length===0?(0,i.jsx)(`div`,{className:l}):(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsx)(a.Sankey,{data:{nodes:r,links:u},nodePadding:24,link:{stroke:`hsl(var(--muted-foreground))`,strokeOpacity:.25},node:{fill:`hsl(var(--chart-1))`},...he,children:(0,i.jsx)(a.Tooltip,{})})})}if(O===`radar`)return(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsxs)(a.RadarChart,{data:A,children:[(0,i.jsx)(a.PolarGrid,{}),(0,i.jsx)(a.PolarAngleAxis,{dataKey:s}),(0,i.jsx)(a.PolarRadiusAxis,{}),(0,i.jsx)(U,{content:(0,i.jsx)(L,{})}),(0,i.jsx)(W,{content:(0,i.jsx)(R,{}),...N&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),c.map(e=>{let t=K(o[e.dataKey]?.color||ve);return(0,i.jsx)(a.Radar,{dataKey:e.dataKey,stroke:t,fill:t,fillOpacity:.6,...j},e.dataKey)})]})});if(O===`scatter`)return(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsxs)(a.ScatterChart,{children:[(0,i.jsx)(a.CartesianGrid,{vertical:!1}),(0,i.jsx)(a.XAxis,{type:`number`,dataKey:s,name:String(o[s]?.label||s),tickLine:!1,axisLine:!1,minTickGap:N?32:48}),(0,i.jsx)(a.YAxis,{type:`number`,dataKey:c[0]?.dataKey||`value`,name:String(o[c[0]?.dataKey]?.label||c[0]?.dataKey),tickLine:!1,axisLine:!1,tickFormatter:be,width:48}),(0,i.jsx)(a.ZAxis,{type:`number`,range:[60,400]}),(0,i.jsx)(U,{content:(0,i.jsx)(L,{})}),(0,i.jsx)(W,{content:(0,i.jsx)(R,{}),...N&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),c.map((e,t)=>{let n=J(),r=K(o[e.dataKey]?.color||n[t%n.length]),s=q(e,`scatter`);return(0,i.jsx)(a.Scatter,{name:o[e.dataKey]?.label||e.dataKey,data:A,fill:r,fillOpacity:s?.fillOpacity,...j,...de},e.dataKey)})]})});if(O===`combo`)return(0,i.jsx)(me,{title:y,subtitle:b,children:(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsxs)(a.ComposedChart,{data:A,children:[(0,i.jsx)(a.CartesianGrid,{...Te}),(0,i.jsx)(a.XAxis,{dataKey:s,...je}),(0,i.jsx)(a.YAxis,{yAxisId:`left`,tickLine:!1,axisLine:!1,tickFormatter:$,width:48,...Ce(Y)}),(0,i.jsx)(a.YAxis,{yAxisId:`right`,orientation:`right`,tickLine:!1,axisLine:!1,tickFormatter:xe,width:48,...Ce(X,`right`)}),Oe?(0,i.jsx)(U,{content:(0,i.jsx)(L,{})}):null,Ee?(0,i.jsx)(W,{content:(0,i.jsx)(R,{}),...N&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}):null,De,ke,c.map((e,t)=>{let n=K(o[e.dataKey]?.color||ve),r=e.chartType||k||(t===0?`bar`:`line`),s=e.yAxis===`right`||e.yAxis===`left`?e.yAxis:k||r===`bar`?`left`:`right`,c=q(e,r),l=e.stack?{stackId:String(e.stack)}:{},u=S((s===`right`?X:Y)?.format);return r===`line`?(0,i.jsx)(a.Line,{yAxisId:s,type:`monotone`,dataKey:e.dataKey,stroke:n,strokeWidth:2,dot:!1,strokeOpacity:c?.strokeOpacity,strokeDasharray:c?.strokeDasharray,...j,children:Ae(u)},e.dataKey):r===`area`?(0,i.jsx)(a.Area,{yAxisId:s,type:`monotone`,dataKey:e.dataKey,fill:n,stroke:n,fillOpacity:c?.fillOpacity??.4,strokeOpacity:c?.strokeOpacity,strokeDasharray:c?.strokeDasharray,...l,...j,children:Ae(u)},e.dataKey):(0,i.jsx)(a.Bar,{yAxisId:s,dataKey:e.dataKey,fill:n,radius:4,fillOpacity:c?.fillOpacity,...l,...j,children:Ae(u)},e.dataKey)})]})})});let Me=O===`horizontal-bar`,Ne=J(),Pe=d?Object.values(d).map(e=>K(String(e))):[],Fe=Array.from(new Set([...Ne,...Pe,...c.map((e,t)=>K(o[e.dataKey]?.color||Ne[t%Ne.length]||ve))])),Ie=e=>`g`+e.replace(/[^a-zA-Z0-9]/g,``);return(0,i.jsx)(me,{title:y,subtitle:b,children:(0,i.jsx)(I,{config:o,className:l,...M,children:(0,i.jsxs)(ge,{data:A,layout:Me?`vertical`:`horizontal`,...B,children:[(0,i.jsx)(`defs`,{children:Fe.map(e=>(0,i.jsxs)(n.Fragment,{children:[(0,i.jsxs)(`linearGradient`,{id:`bg-${Ie(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.95}),(0,i.jsx)(`stop`,{offset:`100%`,style:{stopColor:e},stopOpacity:.5})]}),(0,i.jsxs)(`linearGradient`,{id:`ag-${Ie(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.5}),(0,i.jsx)(`stop`,{offset:`95%`,style:{stopColor:e},stopOpacity:.05})]})]},Ie(e)))}),(0,i.jsx)(a.CartesianGrid,{...Te}),Me?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.XAxis,{type:`number`,tickLine:!1,axisLine:!1,tickFormatter:$,...Ce(Y)}),(0,i.jsx)(a.YAxis,{type:`category`,dataKey:s,tickLine:!1,axisLine:!1,width:Math.min(140,Math.max(60,Math.max(...A.map(e=>String(e[s]??``).length))*7)),tickFormatter:Q})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.XAxis,{dataKey:s,...je}),(0,i.jsx)(a.YAxis,{...Z?{yAxisId:`left`}:{},tickLine:!1,axisLine:!1,tickFormatter:$,width:48,...Ce(Y)}),Z?(0,i.jsx)(a.YAxis,{yAxisId:`right`,orientation:`right`,tickLine:!1,axisLine:!1,tickFormatter:xe,width:48,...Ce(X,`right`)}):null]}),Oe?(0,i.jsx)(U,{content:(0,i.jsx)(L,{})}):null,Ee?(0,i.jsx)(W,{content:(0,i.jsx)(R,{}),...N&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}):null,De,ke,c.map((e,t)=>{let n=J(),r=e.variant===`comparison`,l=r?c.slice(0,t).find(e=>e.variant!==`comparison`)||c[0]:e,u=r?c.indexOf(l):t,d=K(o[l.dataKey]?.color||n[u%n.length]||ve),f=Z?{yAxisId:e.yAxis===`right`?`right`:`left`}:{},p=e.stack?{stackId:String(e.stack)}:{},m=S((e.yAxis===`right`?X:Y)?.format);if(O===`bar`||O===`horizontal-bar`){let t=c.filter(e=>e.variant!==`comparison`).length===1&&!r&&c.length===1&&A.length>1,o=q(e,`bar`);return(0,i.jsxs)(a.Bar,{dataKey:e.dataKey,fill:`url(#bg-${Ie(d)})`,radius:4,fillOpacity:o?.fillOpacity,...p,...f,...j,children:[t&&A.map((e,t)=>(0,i.jsx)(a.Cell,{fill:`url(#bg-${Ie(K(H(e?.[s],t,n)))})`},`cell-${t}`)),Ae(m)]},e.dataKey)}if(O===`line`){let t=q(e,`line`);return(0,i.jsx)(a.Line,{type:`monotone`,dataKey:e.dataKey,stroke:d,strokeWidth:2,dot:!1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...f,...j,children:Ae(m)},e.dataKey)}if(O===`area`){let t=q(e,`area`);return(0,i.jsx)(a.Area,{type:`monotone`,dataKey:e.dataKey,fill:`url(#ag-${Ie(d)})`,stroke:d,strokeWidth:2,fillOpacity:t?.fillOpacity??1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...p,...f,...j,children:Ae(m)},e.dataKey)}return null})]})})})}function ge(e){let t=e.chartType===`column`?`bar`:e.chartType??`bar`,n=Array.isArray(e.data)?e.data:[],r=e.xAxisKey??`name`;return J.has(t)&&n.length>0&&!n.some(e=>typeof e==`object`&&!!e&&r in e)}function _e(e){let t=ge(e),r=e.xAxisKey??`name`,a=n.useMemo(()=>Object.keys((Array.isArray(e.data)?e.data[0]:void 0)??{}),[e.data]);return n.useEffect(()=>{t&&console.warn(`[chart] no row has the category key "${r}" — rendering an explanatory placeholder instead of an empty axis. Row keys: ${JSON.stringify(a)}. A dataset query must PROJECT the dimension it groups by (framework#4033).`)},[t,r,a]),t?(0,i.jsx)(`div`,{className:`flex h-full min-h-[120px] w-full items-center justify-center p-4 text-center text-sm text-muted-foreground ${e.className??``}`,role:`status`,"data-chart-error":`missing-category-key`,children:(0,i.jsxs)(`span`,{children:[`This chart cannot plot its category axis: no row has a`,` `,(0,i.jsx)(`code`,{className:`font-mono`,children:r}),` field.`]})}):(0,i.jsx)(he,{...e})}var ve,ye,K,q,J,be=h((()=>{se(),de(),k(),ve=`hsl(var(--primary))`,ye={slate:`#64748b`,gray:`#6b7280`,zinc:`#71717a`,neutral:`#737373`,stone:`#78716c`,red:`#ef4444`,orange:`#f97316`,amber:`#f59e0b`,yellow:`#eab308`,lime:`#84cc16`,green:`#22c55e`,emerald:`#10b981`,teal:`#14b8a6`,cyan:`#06b6d4`,sky:`#0ea5e9`,blue:`#3b82f6`,indigo:`#6366f1`,violet:`#8b5cf6`,purple:`#a855f7`,fuchsia:`#d946ef`,pink:`#ec4899`,rose:`#f43f5e`},K=e=>ye[e]||e,q=(e,t)=>e?.variant===`comparison`?{strokeOpacity:typeof e.opacity==`number`?e.opacity:t===`line`||t===`scatter`?.5:.6,fillOpacity:typeof e.opacity==`number`?e.opacity:t===`bar`?.4:t===`area`?.2:.5,strokeDasharray:e.dashArray??(t===`line`||t===`area`?`4 4`:void 0)}:null,J=new Set([`bar`,`horizontal-bar`,`line`,`area`,`pie`,`donut`,`radar`,`funnel`,`combo`])}));k();var Y=n.default.lazy(()=>Promise.resolve().then(()=>(P(),A))),X=n.default.lazy(()=>Promise.resolve().then(()=>(be(),fe))),Z=({schema:e})=>(0,i.jsx)(n.Suspense,{fallback:(0,i.jsx)(r.Skeleton,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,i.jsx)(Y,{data:e.data,dataKey:e.dataKey,xAxisKey:e.xAxisKey,height:e.height,className:e.className,color:e.color})}),Q=({schema:e,onChartClick:t})=>{let a=n.default.useMemo(()=>{let t=ee(e),n=Array.isArray(e.series)?e.series:void 0,r=(n?.length&&n.every(e=>!!e&&typeof e==`object`&&`dataKey`in e)?n:t.series)??n,i=e.xAxisKey??t.xAxisKey,a=e.config;if(i||(e.index?i=e.index:e.category&&(i=e.category)),r||(e.categories?r=e.categories.map(e=>({dataKey:e})):e.value&&(r=[{dataKey:e.value}])),!a&&r){let t=e.colors||[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`],n={};r.forEach((e,r)=>{n[e.dataKey]={label:e.label||e.dataKey,color:e.color||t[r%t.length]}}),a=n}return{chartType:e.chartType??t.chartType,data:Array.isArray(e.data)?e.data:[],config:a,xAxisKey:i,series:r,className:e.className,spec:t}},[e]);return(0,i.jsx)(n.Suspense,{fallback:(0,i.jsx)(r.Skeleton,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,i.jsx)(X,{chartType:a.chartType,data:a.data,config:a.config,xAxisKey:a.xAxisKey,series:a.series,className:a.className,colors:Array.isArray(e.colors)?e.colors:void 0,categoryColors:e.categoryColors,categoryOrder:e.categoryOrder,isAnimationActive:e.isAnimationActive,onChartClick:t,xAxis:a.spec.xAxis,yAxes:a.spec.yAxes,showLegend:a.spec.showLegend,showDataLabels:a.spec.showDataLabels,title:a.spec.title,subtitle:a.spec.subtitle,description:a.spec.description,height:a.spec.height??e.height,annotations:a.spec.annotations,interaction:a.spec.interaction})})};function $(e){return e.replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function xe(e){return e.field||e.function||`count`}var Se=`__comparison`;function Ce(e,t){let{field:n,function:r,groupBy:i}=t,a=xe(t),o={};for(let t of e){let e=String(t[i]??`Unknown`);o[e]||(o[e]=[]),o[e].push(t)}return Object.entries(o).map(([e,t])=>{let o=n?t.map(e=>Number(e[n])||0):[],s;switch(r){case`count`:s=t.length;break;case`avg`:s=o.length>0?o.reduce((e,t)=>e+t,0)/o.length:0;break;case`min`:s=o.length>0?Math.min(...o):0;break;case`max`:s=o.length>0?Math.max(...o):0;break;default:s=o.reduce((e,t)=>e+t,0)}return{[i]:e,[a]:s}})}async function we(e,n,r,i,a){if(!e.length||!n)return e;let o=a||((e,t)=>t),s=`__raw_${n}`,c=r?.fields?.[n];if(!c){let t=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let r=e[n],i=String(r??``),a=t.test(i)?i:$(i);return{...e,[n]:o(i,a),[s]:r}})}let l=c.type;if(l===`select`||l===`picklist`||l===`dropdown`){let t=c.options||[];if(t.length===0)return e.map(e=>{let t=e[n],r=String(t??``),i=$(r);return{...e,[n]:o(r,i),[s]:t}});let r={};for(let e of t)typeof e==`string`?r[e]=e:e&&typeof e==`object`&&(r[String(e.value)]=e.label||String(e.value));return e.map(e=>{let t=e[n],i=String(t??``),a=r[i]||$(i);return{...e,[n]:o(i,a),[s]:t}})}if(l===`lookup`||l===`master_detail`){let r=c.reference_to||c.reference;if(!r||!i||typeof i.find!=`function`)return e.map(e=>({...e,[s]:e[n]}));let a=[...new Set(e.map(e=>e[n]).filter(e=>e!=null))];if(a.length===0)return e.map(e=>({...e,[s]:e[n]}));let o=c.id_field||`id`;try{let l=await i.find(r,{$filter:{[o]:{$in:a}},$top:a.length}),u=(0,t.extractRecords)(l),d=c.reference_field||c.display_field||`name`,f={};for(let e of u){let t=String(e[o]??e.id??e._id??``),n=e[d]||e.name||e.label||e.title||t;t&&(f[t]=String(n))}return e.map(e=>{let t=e[n],r=String(t??``);return{...e,[n]:f[r]||r,[s]:t}})}catch(t){return console.warn(`[ObjectChart] Failed to resolve lookup labels:`,t),e.map(e=>({...e,[s]:e[n]}))}}if(l===`date`||l===`datetime`||l===`date_time`||l===`timestamp`||l===`time`)return e.map(e=>({...e,[s]:e[n]}));let u=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let t=e[n],r=String(t??``);return{...e,[n]:u.test(r)?r:$(r),[s]:t}})}var Te=e=>{let{schema:a}=e,l=e.onSegmentClick,u=(0,n.useContext)(o.SchemaRendererContext),d=e.dataSource||u?.dataSource,f=(0,o.useDataScope)(a.bind),{fieldOptionLabel:p}=(0,c.useSafeFieldLabel)(),m=(0,n.useRef)(p);(0,n.useEffect)(()=>{m.current=p},[p]);let[h,g]=(0,n.useState)([]),[_,v]=(0,n.useState)(null),[y,b]=(0,n.useState)(()=>!(Array.isArray(a.data)&&a.data.length>0)&&(!!a.objectName||!!a.dataset)),[ee,te]=(0,n.useState)(null),[x,S]=(0,n.useState)(null),[ne,re]=(0,n.useState)(null),[ie,C]=(0,n.useState)(null),{openRecordList:w}=(0,o.useDrillNavigation)(),ae=(0,c.useSafeTranslate)(),T=(0,n.useMemo)(()=>a.aggregate?JSON.stringify(a.aggregate):``,[a.aggregate]),E=(0,n.useMemo)(()=>a.filter?JSON.stringify(a.filter):``,[a.filter]),D=(0,n.useMemo)(()=>a.compareTo?JSON.stringify(a.compareTo):``,[a.compareTo]),O=(0,n.useMemo)(()=>a.dataset?JSON.stringify({d:a.dataset,dim:a.dimensions??[],val:a.values??[]}):``,[a.dataset,a.dimensions,a.values]),k=e=>e!==`pie`&&e!==`donut`&&e!==`funnel`;(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{let n={headers:{accept:`application/json`},credentials:`include`},r=a.objectName,i,o=null,s=a.aggregate?.groupBy;if(r)i=s&&typeof s==`object`&&!Array.isArray(s)?s.field:typeof s==`string`?s:a.xAxisKey;else if(a.dataset){let e=Array.isArray(a.dimensions)&&a.dimensions.length?a.dimensions[0]:void 0,t=await(await fetch(`/api/v1/meta/dataset/${encodeURIComponent(a.dataset)}`,n)).json().catch(()=>null);o=t?.item??t?.data??t,r=o?.object,i=((o?.dimensions||[]).find(t=>t?.name===e)??(o?.dimensions||[])[0])?.field??e}if(!r||!i){e||(re(null),C(null));return}let c=await(await fetch(`/api/v1/meta/object/${encodeURIComponent(r)}`,n)).json().catch(()=>null),l=c?.item??c?.data??c,u=(0,t.buildOptionColorMap)(l?.fields?.[i]?.options),d=null;if(a.dataset&&Array.isArray(a.dimensions)){let e={};for(let n of a.dimensions){let r=(o?.dimensions||[]).find(e=>e?.name===n)?.field??n,i=(0,t.buildDimensionLabelMap)(l?.fields?.[r]?.options);i&&(e[n]=i)}Object.keys(e).length>0&&(d=e)}e||(re(u),C(d))}catch{e||(re(null),C(null))}})(),()=>{e=!0}},[a.objectName,a.dataset,O,T,a.xAxisKey]);let A=(0,n.useCallback)(async(e,n)=>{if(a.aggregate&&typeof e.aggregate==`function`){let t=a.aggregate.groupBy;if(t&&typeof t==`object`&&!Array.isArray(t)){let r=a.aggregate.field,i=a.aggregate.function,o={function:i,alias:xe(a.aggregate)};i!==`count`&&r&&(o.field=r);let s=await e.aggregate(a.objectName,{groupBy:[t],aggregations:[o],where:n});return Array.isArray(s)?s:[]}let r=await e.aggregate(a.objectName,{field:a.aggregate.field,function:a.aggregate.function,groupBy:t,filter:n});return Array.isArray(r)?r:[]}if(typeof e.find==`function`){let r=await e.find(a.objectName,{$filter:n}),i=(0,t.extractRecords)(r);return a.aggregate&&i.length>0&&(i=Ce(i,a.aggregate)),i}return[]},[a.objectName,T]),j=(0,o.useFilterScope)(),M=(0,n.useCallback)(async(e,n)=>{if(!e||!a.objectName&&!a.dataset){n.current&&b(!1);return}n.current&&(b(!0),te(null));try{if(a.dataset&&typeof e.queryDataset==`function`){let r=(0,t.resolveFilterPlaceholders)(a.filter,j),i=await e.queryDataset(a.dataset,{dimensions:Array.isArray(a.dimensions)?a.dimensions:[],measures:Array.isArray(a.values)?a.values:[],...r?{runtimeFilter:r}:{}});n.current&&(g(Array.isArray(i?.rows)?i.rows:[]),v(Array.isArray(i?.fields)?i.fields:null));return}let r=(0,t.resolveFilterPlaceholders)(a.filter,j),i=a.compareTo,o=!!i&&k(a.chartType),s=o?(0,t.resolveContextTokens)((0,t.shiftFilterByCompareTo)(a.filter,i),j):null,[c,l]=await Promise.all([A(e,r),s?A(e,s):Promise.resolve([])]),u=c,d=a.aggregate?.groupBy,f=d&&typeof d==`object`&&!Array.isArray(d)?d.alias||d.field:d||a.xAxisKey;if(o&&l.length>0&&a.aggregate){let e=a.aggregate.field,t=a.aggregate.function,n=xe(a.aggregate),r=r=>{if(r==null)return null;if(e){let n=`${e}_${t}`;if(n in r)return Number(r[n]);if(t===`count`&&`${e}_count`in r)return Number(r[`${e}_count`])}return n in r?Number(r[n]):`value`in r?Number(r.value):`count`in r?Number(r.count):null},i=`${n}${Se}`,o=f;if(o&&u.some(e=>e[o]!=null)&&l.some(e=>e[o]!=null)){let e=new Map;for(let t of l){let n=String(t[o]??``);e.set(n,r(t))}u=u.map(t=>{let n=String(t[o]??``),r=e.get(n);return r==null?t:{...t,[i]:r}});let t=new Set(u.map(e=>String(e[o]??``)));for(let e of l){let n=String(e[o]??``);t.has(n)||u.push({[o]:n,[i]:r(e)})}}else{let e=Math.max(u.length,l.length),t=[];for(let n=0;n<e;n++){let e=u[n]||{},a=l[n];t.push(a?{...e,[i]:r(a)}:e)}u=t}}if(f&&typeof e.getObjectSchema==`function`)try{let t=await e.getObjectSchema(a.objectName);u=await we(u,f,t,e,(e,t)=>m.current(a.objectName,f,e,t))}catch{}n.current&&g(u)}catch(e){console.error(`[ObjectChart] Fetch error:`,e),n.current&&te(e instanceof Error?e.message:`Failed to load chart data`)}finally{n.current&&b(!1)}},[a.objectName,O,T,E,D,a.xAxisKey,a.chartType,A,j]);(0,n.useEffect)(()=>{let e={current:!0};return(a.objectName||a.dataset)&&!f&&!a.data?M(d,e):e.current&&b(!1),()=>{e.current=!1}},[a.objectName,O,d,f,a.data,E,T,D,M]);let N=f||a.data||h,P=Array.isArray(N)?N:[],F=a.drillDown,I=a.aggregate?.groupBy||a.xAxisKey,L=(0,n.useMemo)(()=>{if(!I)return new Map;let e=new Map,t=`__raw_${I}`;for(let n of P){let r=n?.[I];if(r==null)continue;let i=t in(n||{})?n[t]:r;e.set(String(r),i)}return e},[P,I]),R=(0,n.useMemo)(()=>{if(x)return{...a.filter||{},...(0,t.computeDrillFilter)(F,x,{groupByField:I})}},[x,F,I,E]),z=!l&&!!x&&!!a.objectName&&F?.target===`navigate`&&!!w;(0,n.useEffect)(()=>{z&&(w(a.objectName,R),S(null))},[z]);let B=a.compareTo,V=a.aggregate?xe(a.aggregate):void 0,H=V?`${V}${Se}`:void 0,oe=!!B&&k(a.chartType)&&!!H&&P.some(e=>e[H]!=null),U=(0,n.useMemo)(()=>{let e=Array.isArray(a.series)?a.series:null;if(!oe)return e;let n=e||[{dataKey:V}],r={vsLastWeek:`Previous week`,vsLastMonth:`Previous month`,vsLastQuarter:`Previous quarter`,vsLastYear:`Previous year`,vsYesterday:`Yesterday`,vsPreviousPeriod:`Previous period`}[(0,t.compareToTrendLabelKey)(B,a.filter)]||`Previous period`;return[...n.map(e=>({...e,variant:e.variant||`current`})),{dataKey:H,label:r,variant:`comparison`}]},[oe,a.series,V,H,a.filter,B]),W=a.dataset?(0,t.buildChartSeries)((0,t.relabelDimensions)(P,ie),a.dimensions,a.values,_):null,se=W?{...a,data:W.data,xAxisKey:W.xAxisKey,series:W.series}:{...a,data:P,...U?{series:U}:{}},G=a.colors&&!Array.isArray(a.colors)&&typeof a.colors==`object`?a.colors:null,ce=Array.isArray(a.colors)?a.colors:void 0,le=ne||G?{...ne||{},...G||{}}:void 0,ue={...se,colors:ce,...le?{categoryColors:le}:{}};if(y&&P.length===0)return(0,i.jsxs)(`div`,{className:`p-2 `+(a.className||``),"data-testid":`chart-loading`,role:`status`,"aria-busy":`true`,"aria-live":`polite`,children:[(0,i.jsx)(`span`,{className:`sr-only`,children:`Loading chart data…`}),(0,i.jsx)(r.ChartSkeleton,{className:`h-full`})]});if(ee)return(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 p-4 `+(a.className||``),"data-testid":`chart-error`,role:`alert`,children:[(0,i.jsx)(s.AlertCircle,{className:`h-6 w-6 text-destructive opacity-60`}),(0,i.jsx)(`p`,{className:`text-xs text-destructive font-medium`,children:`Failed to load chart data`}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground max-w-xs text-center`,children:ee})]});if(!d&&a.objectName&&P.length===0)return(0,i.jsxs)(`div`,{className:`flex items-center justify-center text-muted-foreground text-sm p-4 `+(a.className||``),"data-testid":`chart-no-datasource`,children:[`No data source available for “`,a.objectName,`”`]});let de=(0,t.isDrillEnabled)(F)?e=>{let t=e.category,n=t!=null&&L.has(String(t))?L.get(String(t)):t;S({...e,category:n,categoryLabel:t,scope:`cell`})}:void 0,fe=l??de,pe=!l&&x&&a.objectName&&!z?(()=>{let e=R??{},n=(0,t.resolveDrillTitle)(F,x,a.title||`Details`),c=F?.target??`drawer`,l={type:`object-data-table`,objectName:a.objectName,filter:e,pagination:!0,pageSize:F?.maxRows,columns:F?.columns?.map(e=>({accessorKey:e,header:e})),drillDown:{enabled:!0,mode:`record`,target:`dialog`}},u=(0,i.jsx)(`div`,{className:`overflow-auto`,"data-testid":`chart-drill-body`,children:(0,i.jsx)(o.SchemaRenderer,{schema:l,dataSource:d})}),f=w&&a.objectName?(0,i.jsxs)(r.Button,{type:`button`,variant:`ghost`,size:`sm`,"data-testid":`drill-open-in-list`,onClick:()=>{w(a.objectName,e),S(null)},children:[ae(`dashboard.openInList`,`Open in list`),(0,i.jsx)(s.ArrowUpRight,{className:`ml-1 h-3.5 w-3.5`})]}):null;return c===`dialog`?(0,i.jsx)(r.Dialog,{open:!0,onOpenChange:e=>!e&&S(null),children:(0,i.jsxs)(r.DialogContent,{className:`max-w-4xl`,children:[(0,i.jsxs)(r.DialogHeader,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,i.jsx)(r.DialogTitle,{children:n}),f]}),u]})}):(0,i.jsx)(r.Sheet,{open:!0,onOpenChange:e=>!e&&S(null),children:(0,i.jsxs)(r.SheetContent,{side:`right`,className:`w-full sm:max-w-2xl md:max-w-3xl lg:max-w-4xl flex flex-col`,children:[(0,i.jsxs)(r.SheetHeader,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,i.jsx)(r.SheetTitle,{children:n}),f]}),(0,i.jsx)(`div`,{className:`flex-1 overflow-hidden mt-2`,children:u})]})})})():null;return(0,i.jsxs)(`div`,{className:`relative`,children:[(0,i.jsx)(r.RefreshIndicator,{active:y&&P.length>0}),(0,i.jsx)(Q,{...e,schema:ue,onChartClick:fe}),pe]})};t.ComponentRegistry.register(`object-chart`,Te,{namespace:`plugin-charts`,label:`Object Chart`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`data`,type:`array`,label:`Data`,description:`Optional static data`},{name:`filter`,type:`array`,label:`Filter`},{name:`aggregate`,type:`object`,label:`Aggregate`,description:`Aggregation config: { field, function, groupBy }`},{name:`drillDown`,type:`object`,label:`Drill-down`,description:`Segment drill config: { enabled?, filter?, title?, target?: 'drawer' | 'dialog', columns?, maxRows? }. Present = on; {} is enough. Clicking a segment opens the underlying records filtered by the clicked category.`}]});var Ee={"bar-chart":Z,chart:Q};t.ComponentRegistry.register(`bar-chart`,Z,{namespace:`plugin-charts`,label:`Bar Chart`,category:`plugin`,inputs:[{name:`data`,type:`array`,label:`Data`,required:!0},{name:`dataKey`,type:`string`,label:`Data Key`,defaultValue:`value`},{name:`xAxisKey`,type:`string`,label:`X-Axis Key`,defaultValue:`name`},{name:`height`,type:`number`,label:`Height`,defaultValue:400},{name:`color`,type:`color`,label:`Color`,defaultValue:`#8884d8`}],defaultProps:{data:[{name:`Jan`,value:400},{name:`Feb`,value:300},{name:`Mar`,value:600},{name:`Apr`,value:800},{name:`May`,value:500}],dataKey:`value`,xAxisKey:`name`,height:400,color:`#8884d8`}}),t.ComponentRegistry.register(`chart`,Te,{namespace:`view`,category:`view`,label:`Chart`,skipFallback:!0,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`type`,type:`string`,label:`Chart Type`},{name:`categoryField`,type:`string`,label:`Category Field`},{name:`valueField`,type:`string`,label:`Value Field`}]}),t.ComponentRegistry.register(`chart`,Q,{namespace:`plugin-charts`,label:`Chart`,category:`plugin`,inputs:[{name:`chartType`,type:`enum`,label:`Chart Type`,enum:[{label:`Bar`,value:`bar`},{label:`Line`,value:`line`},{label:`Area`,value:`area`},{label:`Pie`,value:`pie`},{label:`Donut`,value:`donut`},{label:`Radar`,value:`radar`},{label:`Scatter`,value:`scatter`}],defaultValue:`bar`},{name:`data`,type:`code`,label:`Data (JSON)`,required:!0},{name:`config`,type:`code`,label:`Config (JSON)`},{name:`xAxisKey`,type:`string`,label:`X Axis Key`,defaultValue:`name`},{name:`series`,type:`code`,label:`Series (JSON Array)`,required:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{chartType:`bar`,data:[{name:`Jan`,sales:400,revenue:240},{name:`Feb`,sales:300,revenue:139},{name:`Mar`,sales:600,revenue:380},{name:`Apr`,sales:800,revenue:430},{name:`May`,sales:500,revenue:220}],config:{sales:{label:`Sales`,color:`#8884d8`},revenue:{label:`Revenue`,color:`#82ca9d`}},xAxisKey:`name`,series:[{dataKey:`sales`},{dataKey:`revenue`}]}}),t.ComponentRegistry.register(`chart:bar`,Q,{namespace:`plugin-charts`,label:`Bar Chart (Alias)`,category:`plugin`,defaultProps:{chartType:`bar`}}),t.ComponentRegistry.register(`pie-chart`,Q,{namespace:`plugin-charts`,label:`Pie Chart`,category:`plugin`,defaultProps:{chartType:`pie`}}),t.ComponentRegistry.register(`donut-chart`,Q,{namespace:`plugin-charts`,label:`Donut Chart`,category:`plugin`,defaultProps:{chartType:`donut`}}),t.ComponentRegistry.register(`radar-chart`,Q,{namespace:`plugin-charts`,label:`Radar Chart`,category:`plugin`,defaultProps:{chartType:`radar`}}),t.ComponentRegistry.register(`scatter-chart`,Q,{namespace:`plugin-charts`,label:`Scatter Chart`,category:`plugin`,defaultProps:{chartType:`scatter`}}),e.ChartBarRenderer=Z,e.ChartRenderer=Q,e.ObjectChart=Te,e.chartComponents=Ee});
7
+ `)}}):null},H=a.Tooltip,U=a.Legend}));function ce(e){return e?.[0]?.dataKey||`value`}function le(e,t,n){if(!e)return null;let r=e.payload??e,i=r?.[t];if(i==null)return null;let a=ce(n);return{category:String(i),series:a,value:typeof r?.[a]==`number`?r[a]:void 0}}function ue(e,t){if(!e)return null;let n=e.name??e.payload?.name??e.root?.name;if(n==null)return null;let r=e.value??e.size??e.payload?.size;return{category:String(n),series:ce(t),value:typeof r==`number`?r:void 0}}function de(e,t){if(!e)return null;let n=e.payload??e,r=n?.name;return r==null||n?.depth===0?null:{category:String(r),series:ce(t),value:typeof n?.value==`number`?n.value:void 0}}var fe=h((()=>{})),pe=g({default:()=>ve});function me(e){let{x:t,y:n,width:r,height:a,name:o,fill:s}=e;return r<=0||a<=0?null:(0,i.jsxs)(`g`,{children:[(0,i.jsx)(`rect`,{x:t,y:n,width:r,height:a,fill:s,stroke:`hsl(var(--background))`,strokeWidth:2}),r>48&&a>18?(0,i.jsx)(`text`,{x:t+6,y:n+18,fill:`#fff`,fontSize:12,className:`pointer-events-none`,children:o}):null]})}function he({title:e,subtitle:t,children:n}){return!e&&!t?(0,i.jsx)(i.Fragment,{children:n}):(0,i.jsxs)(`div`,{className:`flex h-full w-full flex-col`,children:[(0,i.jsxs)(`div`,{className:`mb-2 shrink-0`,children:[e?(0,i.jsx)(`div`,{className:`text-sm font-medium leading-tight text-foreground`,children:e}):null,t?(0,i.jsx)(`div`,{className:`text-xs leading-tight text-muted-foreground`,children:t}):null]}),(0,i.jsx)(`div`,{className:`min-h-0 flex-1`,children:n})]})}function ge({chartType:e=`bar`,data:r=[],config:o={},xAxisKey:s=`name`,series:c=[],className:l=``,colors:u,categoryColors:d,categoryOrder:f,onChartClick:p,isAnimationActive:m,xAxis:h,yAxes:g,showLegend:_,showDataLabels:v,title:ee,subtitle:te,description:y,height:C,annotations:w,interaction:T}){let E=e===`column`?`bar`:e,D=re(E,c),O=ne(E),k=Array.isArray(r)?r:[],A=m===!1?{isAnimationActive:!1}:{},j={...m===!1?{disableSettleRemount:!0}:{},...C?{style:{height:C}}:{},...y?{role:`img`,"aria-label":y}:{}},[M,se]=n.useState(!1),N=n.useCallback(e=>{if(!p||!e)return;let t=Array.isArray(e.activePayload)?e.activePayload[0]:void 0;p({category:e.activeLabel==null?void 0:String(e.activeLabel),series:t?.dataKey?String(t.dataKey):void 0,value:typeof t?.value==`number`?t.value:void 0})},[p]),L=n.useCallback(e=>{if(!p||!e)return;let t=e.payload?.[s],n=c[0]?.dataKey||`value`;p({category:t==null?void 0:String(t),series:n,value:typeof e.payload?.[n]==`number`?e.payload[n]:void 0})},[p,s,c]),R=p?{onClick:N,style:{cursor:`pointer`}}:{},z=p?{onClick:L,style:{cursor:`pointer`}}:{},B=n.useCallback((e,t,n)=>d&&d[e==null?``:String(e)]||n[t%n.length],[d]),V=n.useCallback(e=>{if(!p)return;let t=le(e,s,c);t&&p(t)},[p,s,c]),W=n.useCallback(e=>{if(!p)return;let t=ue(e,c);t&&p(t)},[p,c]),ce=n.useCallback(e=>{if(!p)return;let t=de(e,c);t&&p(t)},[p,c]),fe=p?{onClick:V,cursor:`pointer`}:{},pe=p?{onClick:W,style:{cursor:`pointer`}}:{},ge=p?{onClick:ce,style:{cursor:`pointer`}}:{};n.useEffect(()=>{let e=()=>se(window.innerWidth<640);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let _e={bar:a.BarChart,"horizontal-bar":a.BarChart,line:a.LineChart,area:a.AreaChart,pie:a.PieChart,donut:a.PieChart,radar:a.RadarChart,scatter:a.ScatterChart,funnel:a.FunnelChart,combo:a.ComposedChart,treemap:a.BarChart,sankey:a.BarChart}[D]||a.BarChart,ve=n.useCallback(e=>{if(e==null||e===``)return``;let t=o?.[String(e)]?.label;if(t!=null)return String(t);let n=typeof e==`string`?e:String(e);if(/^\d{4}-\d{2}-\d{2}/.test(n)){let e=new Date(n);if(!Number.isNaN(e.getTime())){let t=(k.length>1?Math.abs(new Date(String(k[k.length-1][s]??``)).getTime()-new Date(String(k[0][s]??``)).getTime()):0)/864e5;try{return t<=62?e.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):e.toLocaleDateString(void 0,{month:`short`,year:`numeric`})}catch{return e.toISOString().slice(0,10)}}}return M&&n.length>8?n.slice(0,8)+`…`:n},[k,s,M,o]),be=n.useMemo(()=>k.some(e=>String(e[s]||``).length>5),[k,s]),q=()=>Array.isArray(u)&&u.length>0?u:[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`,`hsl(var(--chart-4))`,`hsl(var(--chart-5))`],xe=n.useCallback(e=>{if(e==null||e===``)return``;let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))return String(e);try{return new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(t)}catch{return String(t)}},[]),J=g?.[0],Y=g&&g.length>1?g[1]:J?.position===`right`?J:void 0,X=!!g&&g.length>1,Z=n.useMemo(()=>b(h?.format)??ve,[h?.format,ve]),Q=n.useMemo(()=>b(J?.format)??xe,[J?.format,xe]),Se=n.useMemo(()=>b(Y?.format)??xe,[Y?.format,xe]),Ce=n.useCallback(e=>{let t=c.filter(t=>X?(t.yAxis===`right`?`right`:`left`)===e:e===`left`).map(e=>e.dataKey),n=[];for(let e of k)for(let r of t){let t=Number(e?.[r]);Number.isFinite(t)&&n.push(t)}return n},[k,c,X]),we=n.useCallback((e,t=`left`)=>{if(!e)return{};let n=ae(e),r=ie(e,Ce(t));return{...r?{ticks:r}:{},...n?{domain:n}:{},...n?{allowDataOverflow:!0}:{},...e.logarithmic?{scale:`log`,domain:n??[1,`auto`]}:{},...e.title?{label:{value:e.title,angle:-90,position:`insideLeft`}}:{}}},[Ce]),Te=J?.showGridLines!==!1,Ee={vertical:h?.showGridLines===!0,horizontal:Te},De=_!==!1,Oe=n.useMemo(()=>{if(!Array.isArray(w)||w.length===0)return null;let e={solid:void 0,dashed:`4 4`,dotted:`1 4`};return w.map((t,n)=>{let r=t?.axis===`x`,o=G(String(t?.color||`hsl(var(--muted-foreground))`)),s=e[String(t?.style??`dashed`)],c=typeof t?.label==`string`?t.label:void 0,l=c?{label:{value:c,position:`insideTopRight`,fill:o,fontSize:11}}:{};if(t?.type===`region`){let e=r?{x1:t.value,x2:t.endValue}:{y1:t.value,y2:t.endValue};return(0,i.jsx)(a.ReferenceArea,{...e,...X&&!r?{yAxisId:`left`}:{},fill:o,fillOpacity:.12,stroke:o,strokeOpacity:.35,...l},`ann-${n}`)}return(0,i.jsx)(a.ReferenceLine,{...r?{x:t?.value}:{y:t?.value},...X&&!r?{yAxisId:`left`}:{},stroke:o,strokeDasharray:s,...l},`ann-${n}`)})},[w,X]),ke=T?.tooltips!==!1,Ae=T?.brush===!0?(0,i.jsx)(a.Brush,{dataKey:s,height:24,travellerWidth:8,stroke:`hsl(var(--muted-foreground))`}):null,je=e=>v?(0,i.jsx)(a.LabelList,{position:`top`,className:`fill-foreground`,fontSize:11,...e?{formatter:e}:{}}):null,Me=n.useMemo(()=>({tickLine:!1,tickMargin:10,axisLine:!1,interval:`preserveStartEnd`,minTickGap:M?32:48,tickFormatter:Z,...h?.title?{label:{value:h.title,position:`insideBottom`,offset:-4}}:{},...!M&&be&&{angle:-35,textAnchor:`end`,height:60}}),[M,be,Z,h?.title]);if(D&&S.has(D)){let e=c[0]?.dataKey||`value`,t=k[0]?.[e],n=typeof t==`number`?t:Number(t),r=c[0]?.label??o?.[e]?.label??e;return(0,i.jsx)(`div`,{className:l,"data-testid":`advanced-chart-single-value`,children:(0,i.jsxs)(`div`,{className:`flex flex-col gap-1 py-4`,children:[(0,i.jsx)(`span`,{className:`text-3xl font-semibold tabular-nums`,children:Number.isFinite(n)?new Intl.NumberFormat().format(n):String(t??`—`)}),(0,i.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:String(r)})]})})}if(D&&oe.has(D))return(0,i.jsxs)(`div`,{className:`rounded-md border border-dashed bg-muted/20 px-3 py-2 text-xs text-muted-foreground ${l??``}`,"data-testid":`advanced-chart-tabular-notice`,role:`note`,children:[`Chart type “`,D,`” is tabular — render it with the data-table / pivot components; a chart block draws series charts.`]});if(D&&!x.has(D))return(0,i.jsxs)(`div`,{className:`rounded-md border border-dashed bg-muted/20 px-3 py-2 text-xs text-muted-foreground ${l??``}`,"data-testid":`advanced-chart-unknown-type`,role:`note`,children:[`Chart type “`,D,`” is not a spec chart type — nothing was drawn.`]});if(D===`pie`||D===`donut`){let e=D===`donut`?`52%`:0,t=q(),n={...o};return k.forEach((e,r)=>{let i=e?.[s];if(i==null||i===``)return;let a=String(i);n[a]||(n[a]={label:a,color:B(i,r,t)})}),(0,i.jsx)(P,{config:n,className:l,...j,children:(0,i.jsxs)(a.PieChart,{children:[(0,i.jsx)(H,{cursor:!1,content:(0,i.jsx)(F,{hideLabel:!0})}),(0,i.jsx)(a.Pie,{data:k,dataKey:c[0]?.dataKey||`value`,nameKey:s||`name`,innerRadius:e,strokeWidth:5,paddingAngle:2,outerRadius:`85%`,...A,...z,children:k.map((e,n)=>{let r=B(e?.[s],n,t);return(0,i.jsx)(a.Cell,{fill:G(r)},`cell-${n}`)})}),De?(0,i.jsx)(U,{verticalAlign:`bottom`,wrapperStyle:{fontSize:M?`11px`:`12px`,paddingTop:`8px`},content:(0,i.jsx)(I,{nameKey:s,className:`flex-wrap`})}):null]})})}if(D===`funnel`){let e=c[0]?.dataKey||`value`,n=q(),r=p?t=>{t&&p({category:t?.payload?.[s]??t?.[s],value:t?.payload?.[e]??t?.[e]})}:void 0,u=r?{onClick:r,style:{cursor:`pointer`}}:{},d=(0,t.buildCategoryRank)(f),m=d?[...k].sort((e,t)=>(d.get(String(e?.[s]??``))??2**53-1)-(d.get(String(t?.[s]??``))??2**53-1)):[...k].sort((t,n)=>{let r=Number(t?.[e]??0);return Number(n?.[e]??0)-r});return(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsxs)(a.FunnelChart,{children:[(0,i.jsx)(H,{content:(0,i.jsx)(F,{})}),(0,i.jsxs)(a.Funnel,{dataKey:e,data:m,nameKey:s,...A,...u,children:[(0,i.jsx)(a.LabelList,{position:`right`,fill:`hsl(var(--foreground))`,stroke:`none`,dataKey:s}),m.map((e,t)=>(0,i.jsx)(a.Cell,{fill:G(n[t%n.length])},`funnel-cell-${t}`))]})]})})}if(D===`treemap`){let e=c[0]?.dataKey||`value`,t=q(),n=k.map((n,r)=>({name:String(n?.[s]??``),size:Number(n?.[e])||0,fill:G(t[r%t.length])}));return(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsx)(a.Treemap,{data:n,dataKey:`size`,nameKey:`name`,...A,content:(0,i.jsx)(me,{}),...pe,children:(0,i.jsx)(a.Tooltip,{})})})}if(D===`sankey`){let e=c[0]?.dataKey||`value`,t=c[0]?.label||e,n=k.filter(t=>(Number(t?.[e])||0)>0),r=[{name:t},...n.map(e=>({name:String(e?.[s]??``)}))],u=n.map((t,n)=>({source:0,target:n+1,value:Number(t?.[e])||0}));return u.length===0?(0,i.jsx)(`div`,{className:l}):(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsx)(a.Sankey,{data:{nodes:r,links:u},nodePadding:24,link:{stroke:`hsl(var(--muted-foreground))`,strokeOpacity:.25},node:{fill:`hsl(var(--chart-1))`},...ge,children:(0,i.jsx)(a.Tooltip,{})})})}if(D===`radar`)return(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsxs)(a.RadarChart,{data:k,children:[(0,i.jsx)(a.PolarGrid,{}),(0,i.jsx)(a.PolarAngleAxis,{dataKey:s}),(0,i.jsx)(a.PolarRadiusAxis,{}),(0,i.jsx)(H,{content:(0,i.jsx)(F,{})}),(0,i.jsx)(U,{content:(0,i.jsx)(I,{}),...M&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),c.map(e=>{let t=G(o[e.dataKey]?.color||ye);return(0,i.jsx)(a.Radar,{dataKey:e.dataKey,stroke:t,fill:t,fillOpacity:.6,...A},e.dataKey)})]})});if(D===`scatter`)return(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsxs)(a.ScatterChart,{children:[(0,i.jsx)(a.CartesianGrid,{vertical:!1}),(0,i.jsx)(a.XAxis,{type:`number`,dataKey:s,name:String(o[s]?.label||s),tickLine:!1,axisLine:!1,minTickGap:M?32:48}),(0,i.jsx)(a.YAxis,{type:`number`,dataKey:c[0]?.dataKey||`value`,name:String(o[c[0]?.dataKey]?.label||c[0]?.dataKey),tickLine:!1,axisLine:!1,tickFormatter:xe,width:48}),(0,i.jsx)(a.ZAxis,{type:`number`,range:[60,400]}),(0,i.jsx)(H,{content:(0,i.jsx)(F,{})}),(0,i.jsx)(U,{content:(0,i.jsx)(I,{}),...M&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),c.map((e,t)=>{let n=q(),r=G(o[e.dataKey]?.color||n[t%n.length]),s=K(e,`scatter`);return(0,i.jsx)(a.Scatter,{name:o[e.dataKey]?.label||e.dataKey,data:k,fill:r,fillOpacity:s?.fillOpacity,...A,...fe},e.dataKey)})]})});if(D===`combo`)return(0,i.jsx)(he,{title:ee,subtitle:te,children:(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsxs)(a.ComposedChart,{data:k,children:[(0,i.jsx)(a.CartesianGrid,{...Ee}),(0,i.jsx)(a.XAxis,{dataKey:s,...Me}),(0,i.jsx)(a.YAxis,{yAxisId:`left`,tickLine:!1,axisLine:!1,tickFormatter:Q,width:48,...we(J)}),(0,i.jsx)(a.YAxis,{yAxisId:`right`,orientation:`right`,tickLine:!1,axisLine:!1,tickFormatter:Se,width:48,...we(Y,`right`)}),ke?(0,i.jsx)(H,{content:(0,i.jsx)(F,{})}):null,De?(0,i.jsx)(U,{content:(0,i.jsx)(I,{}),...M&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}):null,Oe,Ae,c.map((e,t)=>{let n=G(o[e.dataKey]?.color||ye),r=e.chartType||O||(t===0?`bar`:`line`),s=e.yAxis===`right`||e.yAxis===`left`?e.yAxis:O||r===`bar`?`left`:`right`,c=K(e,r),l=e.stack?{stackId:String(e.stack)}:{},u=b((s===`right`?Y:J)?.format);return r===`line`?(0,i.jsx)(a.Line,{yAxisId:s,type:`monotone`,dataKey:e.dataKey,stroke:n,strokeWidth:2,dot:!1,strokeOpacity:c?.strokeOpacity,strokeDasharray:c?.strokeDasharray,...A,children:je(u)},e.dataKey):r===`area`?(0,i.jsx)(a.Area,{yAxisId:s,type:`monotone`,dataKey:e.dataKey,fill:n,stroke:n,fillOpacity:c?.fillOpacity??.4,strokeOpacity:c?.strokeOpacity,strokeDasharray:c?.strokeDasharray,...l,...A,children:je(u)},e.dataKey):(0,i.jsx)(a.Bar,{yAxisId:s,dataKey:e.dataKey,fill:n,radius:4,fillOpacity:c?.fillOpacity,...l,...A,children:je(u)},e.dataKey)})]})})});let Ne=D===`horizontal-bar`,Pe=q(),Fe=d?Object.values(d).map(e=>G(String(e))):[],Ie=Array.from(new Set([...Pe,...Fe,...c.map((e,t)=>G(o[e.dataKey]?.color||Pe[t%Pe.length]||ye))])),$=e=>`g`+e.replace(/[^a-zA-Z0-9]/g,``);return(0,i.jsx)(he,{title:ee,subtitle:te,children:(0,i.jsx)(P,{config:o,className:l,...j,children:(0,i.jsxs)(_e,{data:k,layout:Ne?`vertical`:`horizontal`,...R,children:[(0,i.jsx)(`defs`,{children:Ie.map(e=>(0,i.jsxs)(n.Fragment,{children:[(0,i.jsxs)(`linearGradient`,{id:`bg-${$(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.95}),(0,i.jsx)(`stop`,{offset:`100%`,style:{stopColor:e},stopOpacity:.5})]}),(0,i.jsxs)(`linearGradient`,{id:`ag-${$(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,i.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.5}),(0,i.jsx)(`stop`,{offset:`95%`,style:{stopColor:e},stopOpacity:.05})]})]},$(e)))}),(0,i.jsx)(a.CartesianGrid,{...Ee}),Ne?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.XAxis,{type:`number`,tickLine:!1,axisLine:!1,tickFormatter:Q,...we(J)}),(0,i.jsx)(a.YAxis,{type:`category`,dataKey:s,tickLine:!1,axisLine:!1,width:Math.min(140,Math.max(60,Math.max(...k.map(e=>String(e[s]??``).length))*7)),tickFormatter:Z})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.XAxis,{dataKey:s,...Me}),(0,i.jsx)(a.YAxis,{...X?{yAxisId:`left`}:{},tickLine:!1,axisLine:!1,tickFormatter:Q,width:48,...we(J)}),X?(0,i.jsx)(a.YAxis,{yAxisId:`right`,orientation:`right`,tickLine:!1,axisLine:!1,tickFormatter:Se,width:48,...we(Y,`right`)}):null]}),ke?(0,i.jsx)(H,{content:(0,i.jsx)(F,{})}):null,De?(0,i.jsx)(U,{content:(0,i.jsx)(I,{}),...M&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}):null,Oe,Ae,c.map((e,t)=>{let n=q(),r=e.variant===`comparison`,l=r?c.slice(0,t).find(e=>e.variant!==`comparison`)||c[0]:e,u=r?c.indexOf(l):t,d=G(o[l.dataKey]?.color||n[u%n.length]||ye),f=X?{yAxisId:e.yAxis===`right`?`right`:`left`}:{},p=e.stack?{stackId:String(e.stack)}:{},m=b((e.yAxis===`right`?Y:J)?.format);if(D===`bar`||D===`horizontal-bar`){let t=c.filter(e=>e.variant!==`comparison`).length===1&&!r&&c.length===1&&k.length>1,o=K(e,`bar`);return(0,i.jsxs)(a.Bar,{dataKey:e.dataKey,fill:`url(#bg-${$(d)})`,radius:4,fillOpacity:o?.fillOpacity,...p,...f,...A,children:[t&&k.map((e,t)=>(0,i.jsx)(a.Cell,{fill:`url(#bg-${$(G(B(e?.[s],t,n)))})`},`cell-${t}`)),je(m)]},e.dataKey)}if(D===`line`){let t=K(e,`line`);return(0,i.jsx)(a.Line,{type:`monotone`,dataKey:e.dataKey,stroke:d,strokeWidth:2,dot:!1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...f,...A,children:je(m)},e.dataKey)}if(D===`area`){let t=K(e,`area`);return(0,i.jsx)(a.Area,{type:`monotone`,dataKey:e.dataKey,fill:`url(#ag-${$(d)})`,stroke:d,strokeWidth:2,fillOpacity:t?.fillOpacity??1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...p,...f,...A,children:je(m)},e.dataKey)}return null})]})})})}function _e(e){let t=e.chartType===`column`?`bar`:e.chartType??`bar`,n=Array.isArray(e.data)?e.data:[],r=e.xAxisKey??`name`;return q.has(t)&&n.length>0&&!n.some(e=>typeof e==`object`&&!!e&&r in e)}function ve(e){let t=_e(e),r=e.xAxisKey??`name`,a=n.useMemo(()=>Object.keys((Array.isArray(e.data)?e.data[0]:void 0)??{}),[e.data]);return n.useEffect(()=>{t&&console.warn(`[chart] no row has the category key "${r}" — rendering an explanatory placeholder instead of an empty axis. Row keys: ${JSON.stringify(a)}. A dataset query must PROJECT the dimension it groups by (framework#4033).`)},[t,r,a]),t?(0,i.jsx)(`div`,{className:`flex h-full min-h-[120px] w-full items-center justify-center p-4 text-center text-sm text-muted-foreground ${e.className??``}`,role:`status`,"data-chart-error":`missing-category-key`,children:(0,i.jsxs)(`span`,{children:[`This chart cannot plot its category axis: no row has a`,` `,(0,i.jsx)(`code`,{className:`font-mono`,children:r}),` field.`]})}):(0,i.jsx)(ge,{...e})}var ye,be,G,K,q,xe=h((()=>{W(),fe(),O(),ye=`hsl(var(--primary))`,be={slate:`#64748b`,gray:`#6b7280`,zinc:`#71717a`,neutral:`#737373`,stone:`#78716c`,red:`#ef4444`,orange:`#f97316`,amber:`#f59e0b`,yellow:`#eab308`,lime:`#84cc16`,green:`#22c55e`,emerald:`#10b981`,teal:`#14b8a6`,cyan:`#06b6d4`,sky:`#0ea5e9`,blue:`#3b82f6`,indigo:`#6366f1`,violet:`#8b5cf6`,purple:`#a855f7`,fuchsia:`#d946ef`,pink:`#ec4899`,rose:`#f43f5e`},G=e=>be[e]||e,K=(e,t)=>e?.variant===`comparison`?{strokeOpacity:typeof e.opacity==`number`?e.opacity:t===`line`||t===`scatter`?.5:.6,fillOpacity:typeof e.opacity==`number`?e.opacity:t===`bar`?.4:t===`area`?.2:.5,strokeDasharray:e.dashArray??(t===`line`||t===`area`?`4 4`:void 0)}:null,q=new Set([`bar`,`horizontal-bar`,`line`,`area`,`pie`,`donut`,`radar`,`funnel`,`combo`])}));O();var J=n.default.lazy(()=>Promise.resolve().then(()=>(se(),k))),Y=n.default.lazy(()=>Promise.resolve().then(()=>(xe(),pe))),X=({schema:e})=>(0,i.jsx)(n.Suspense,{fallback:(0,i.jsx)(r.Skeleton,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,i.jsx)(J,{data:e.data,dataKey:e.dataKey,xAxisKey:e.xAxisKey,height:e.height,className:e.className,color:e.color})}),Z=({schema:e,onChartClick:t})=>{let a=n.default.useMemo(()=>{let t=y(e),n=Array.isArray(e.series)?e.series:void 0,r=(n?.length&&n.every(e=>!!e&&typeof e==`object`&&`dataKey`in e)?n:t.series)??n,i=e.xAxisKey??t.xAxisKey,a=e.config;if(i||(e.index?i=e.index:e.category&&(i=e.category)),r||(e.categories?r=e.categories.map(e=>({dataKey:e})):e.value&&(r=[{dataKey:e.value}])),!a&&r){let t=e.colors||[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`],n={};r.forEach((e,r)=>{n[e.dataKey]={label:e.label||e.dataKey,color:e.color||t[r%t.length]}}),a=n}return{chartType:e.chartType??t.chartType,data:Array.isArray(e.data)?e.data:[],config:a,xAxisKey:i,series:r,className:e.className,spec:t}},[e]);return(0,i.jsx)(n.Suspense,{fallback:(0,i.jsx)(r.Skeleton,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,i.jsx)(Y,{chartType:a.chartType,data:a.data,config:a.config,xAxisKey:a.xAxisKey,series:a.series,className:a.className,colors:Array.isArray(e.colors)?e.colors:void 0,categoryColors:e.categoryColors,categoryOrder:e.categoryOrder,isAnimationActive:e.isAnimationActive,onChartClick:t,xAxis:a.spec.xAxis,yAxes:a.spec.yAxes,showLegend:a.spec.showLegend,showDataLabels:a.spec.showDataLabels,title:a.spec.title,subtitle:a.spec.subtitle,description:a.spec.description,height:a.spec.height??e.height,annotations:a.spec.annotations,interaction:a.spec.interaction})})};function Q(e){return e.replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Se(e){return e.field||e.function||`count`}var Ce=`__comparison`;function we(e,t){let{field:n,function:r,groupBy:i}=t,a=Se(t),o={};for(let t of e){let e=String(t[i]??`Unknown`);o[e]||(o[e]=[]),o[e].push(t)}return Object.entries(o).map(([e,t])=>{let o=n?t.map(e=>Number(e[n])||0):[],s;switch(r){case`count`:s=t.length;break;case`avg`:s=o.length>0?o.reduce((e,t)=>e+t,0)/o.length:0;break;case`min`:s=o.length>0?Math.min(...o):0;break;case`max`:s=o.length>0?Math.max(...o):0;break;default:s=o.reduce((e,t)=>e+t,0)}return{[i]:e,[a]:s}})}async function Te(e,n,r,i,a){if(!e.length||!n)return e;let o=a||((e,t)=>t),s=`__raw_${n}`,c=r?.fields?.[n];if(!c){let t=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let r=e[n],i=String(r??``),a=t.test(i)?i:Q(i);return{...e,[n]:o(i,a),[s]:r}})}let l=c.type;if(l===`select`||l===`picklist`||l===`dropdown`){let t=c.options||[];if(t.length===0)return e.map(e=>{let t=e[n],r=String(t??``),i=Q(r);return{...e,[n]:o(r,i),[s]:t}});let r={};for(let e of t)typeof e==`string`?r[e]=e:e&&typeof e==`object`&&(r[String(e.value)]=e.label||String(e.value));return e.map(e=>{let t=e[n],i=String(t??``),a=r[i]||Q(i);return{...e,[n]:o(i,a),[s]:t}})}if(l===`lookup`||l===`master_detail`){let r=c.reference_to||c.reference;if(!r||!i||typeof i.find!=`function`)return e.map(e=>({...e,[s]:e[n]}));let a=[...new Set(e.map(e=>e[n]).filter(e=>e!=null))];if(a.length===0)return e.map(e=>({...e,[s]:e[n]}));let o=c.id_field||`id`;try{let l=await i.find(r,{$filter:{[o]:{$in:a}},$top:a.length}),u=(0,t.extractRecords)(l),d=c.reference_field||c.display_field||`name`,f={};for(let e of u){let t=String(e[o]??e.id??e._id??``),n=e[d]||e.name||e.label||e.title||t;t&&(f[t]=String(n))}return e.map(e=>{let t=e[n],r=String(t??``);return{...e,[n]:f[r]||r,[s]:t}})}catch(t){return console.warn(`[ObjectChart] Failed to resolve lookup labels:`,t),e.map(e=>({...e,[s]:e[n]}))}}if(l===`date`||l===`datetime`||l===`date_time`||l===`timestamp`||l===`time`)return e.map(e=>({...e,[s]:e[n]}));let u=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let t=e[n],r=String(t??``);return{...e,[n]:u.test(r)?r:Q(r),[s]:t}})}var Ee=e=>{let{schema:a}=e,l=e.onSegmentClick,u=(0,n.useContext)(o.SchemaRendererContext),d=e.dataSource||u?.dataSource,f=u?.apiFetch,p=(0,o.useDataScope)(a.bind),{fieldOptionLabel:m}=(0,c.useSafeFieldLabel)(),h=(0,n.useRef)(m);(0,n.useEffect)(()=>{h.current=m},[m]);let[g,_]=(0,n.useState)([]),[v,ee]=(0,n.useState)(null),[te,y]=(0,n.useState)(()=>!(Array.isArray(a.data)&&a.data.length>0)&&(!!a.objectName||!!a.dataset)),[ne,re]=(0,n.useState)(null),[b,ie]=(0,n.useState)(null),[ae,x]=(0,n.useState)(null),{openRecordList:S}=(0,o.useDrillNavigation)(),oe=(0,c.useSafeTranslate)(),C=(0,n.useMemo)(()=>a.aggregate?JSON.stringify(a.aggregate):``,[a.aggregate]),w=(0,n.useMemo)(()=>a.filter?JSON.stringify(a.filter):``,[a.filter]),T=(0,n.useMemo)(()=>a.compareTo?JSON.stringify(a.compareTo):``,[a.compareTo]),E=(0,n.useMemo)(()=>a.dataset?JSON.stringify({d:a.dataset,dim:a.dimensions??[],val:a.values??[]}):``,[a.dataset,a.dimensions,a.values]),D=e=>e!==`pie`&&e!==`donut`&&e!==`funnel`;(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{let n=f??fetch,r={headers:{accept:`application/json`},credentials:`include`},i=a.objectName,o,s=null,c=a.aggregate?.groupBy;if(i)o=c&&typeof c==`object`&&!Array.isArray(c)?c.field:typeof c==`string`?c:a.xAxisKey;else if(a.dataset){let e=Array.isArray(a.dimensions)&&a.dimensions.length?a.dimensions[0]:void 0,t=await(await n(`/api/v1/meta/dataset/${encodeURIComponent(a.dataset)}`,r)).json().catch(()=>null);s=t?.item??t?.data??t,i=s?.object,o=((s?.dimensions||[]).find(t=>t?.name===e)??(s?.dimensions||[])[0])?.field??e}if(!i||!o){e||x(null);return}let l=async e=>{let t=await(await n(`/api/v1/meta/object/${encodeURIComponent(e)}`,r)).json().catch(()=>null);return t?.item??t?.data??t},u={};if(a.dataset&&Array.isArray(a.dimensions))for(let e of a.dimensions)u[e]=(s?.dimensions||[]).find(t=>t?.name===e)?.field??e;let d=await(0,t.loadDimensionFieldMeta)(l,i,[o,...Object.values(u)]);e||x({metaByPath:d,colorPath:o,fieldByDim:a.dataset&&Array.isArray(a.dimensions)?u:null})}catch{e||x(null)}})(),()=>{e=!0}},[a.objectName,a.dataset,E,C,a.xAxisKey,f]);let{fieldOptionColors:O,dimensionLabels:k}=(0,n.useMemo)(()=>{if(!ae)return{fieldOptionColors:null,dimensionLabels:null};let{metaByPath:e,colorPath:n,fieldByDim:r}=ae,i=(0,t.localizeFieldOptions)(e[n]?.options,(0,t.dimensionOptionTranslator)(e[n],m)),a=(0,t.deriveDimensionLabelMaps)(e,r?Object.entries(r).map(([e,t])=>({dim:e,path:t})):null,m);return{fieldOptionColors:(0,t.buildOptionColorMap)(i),dimensionLabels:a}},[ae,m]),A=(0,n.useCallback)(async(e,n)=>{if(a.aggregate&&typeof e.aggregate==`function`){let t=a.aggregate.groupBy;if(t&&typeof t==`object`&&!Array.isArray(t)){let r=a.aggregate.field,i=a.aggregate.function,o={function:i,alias:Se(a.aggregate)};i!==`count`&&r&&(o.field=r);let s=await e.aggregate(a.objectName,{groupBy:[t],aggregations:[o],where:n});return Array.isArray(s)?s:[]}let r=await e.aggregate(a.objectName,{field:a.aggregate.field,function:a.aggregate.function,groupBy:t,filter:n});return Array.isArray(r)?r:[]}if(typeof e.find==`function`){let r=await e.find(a.objectName,{$filter:n}),i=(0,t.extractRecords)(r);return a.aggregate&&i.length>0&&(i=we(i,a.aggregate)),i}return[]},[a.objectName,C]),j=(0,o.useFilterScope)(),M=(0,n.useCallback)(async(e,n)=>{if(!e||!a.objectName&&!a.dataset){n.current&&y(!1);return}n.current&&(y(!0),re(null));try{if(a.dataset&&typeof e.queryDataset==`function`){let r=(0,t.resolveFilterPlaceholders)(a.filter,j),i=await e.queryDataset(a.dataset,{dimensions:Array.isArray(a.dimensions)?a.dimensions:[],measures:Array.isArray(a.values)?a.values:[],...r?{runtimeFilter:r}:{}});n.current&&(_(Array.isArray(i?.rows)?i.rows:[]),ee(Array.isArray(i?.fields)?i.fields:null));return}let r=(0,t.resolveFilterPlaceholders)(a.filter,j),i=a.compareTo,o=!!i&&D(a.chartType),s=o?(0,t.resolveContextTokens)((0,t.shiftFilterByCompareTo)(a.filter,i),j):null,[c,l]=await Promise.all([A(e,r),s?A(e,s):Promise.resolve([])]),u=c,d=a.aggregate?.groupBy,f=d&&typeof d==`object`&&!Array.isArray(d)?d.alias||d.field:d||a.xAxisKey;if(o&&l.length>0&&a.aggregate){let e=a.aggregate.field,t=a.aggregate.function,n=Se(a.aggregate),r=r=>{if(r==null)return null;if(e){let n=`${e}_${t}`;if(n in r)return Number(r[n]);if(t===`count`&&`${e}_count`in r)return Number(r[`${e}_count`])}return n in r?Number(r[n]):`value`in r?Number(r.value):`count`in r?Number(r.count):null},i=`${n}${Ce}`,o=f;if(o&&u.some(e=>e[o]!=null)&&l.some(e=>e[o]!=null)){let e=new Map;for(let t of l){let n=String(t[o]??``);e.set(n,r(t))}u=u.map(t=>{let n=String(t[o]??``),r=e.get(n);return r==null?t:{...t,[i]:r}});let t=new Set(u.map(e=>String(e[o]??``)));for(let e of l){let n=String(e[o]??``);t.has(n)||u.push({[o]:n,[i]:r(e)})}}else{let e=Math.max(u.length,l.length),t=[];for(let n=0;n<e;n++){let e=u[n]||{},a=l[n];t.push(a?{...e,[i]:r(a)}:e)}u=t}}if(f&&typeof e.getObjectSchema==`function`)try{let t=await e.getObjectSchema(a.objectName);u=await Te(u,f,t,e,(e,t)=>h.current(a.objectName,f,e,t))}catch{}n.current&&_(u)}catch(e){console.error(`[ObjectChart] Fetch error:`,e),n.current&&re(e instanceof Error?e.message:`Failed to load chart data`)}finally{n.current&&y(!1)}},[a.objectName,E,C,w,T,a.xAxisKey,a.chartType,A,j]);(0,n.useEffect)(()=>{let e={current:!0};return(a.objectName||a.dataset)&&!p&&!a.data?M(d,e):e.current&&y(!1),()=>{e.current=!1}},[a.objectName,E,d,p,a.data,w,C,T,M]);let se=p||a.data||g,N=Array.isArray(se)?se:[],P=a.drillDown,F=a.aggregate?.groupBy||a.xAxisKey,I=(0,n.useMemo)(()=>{if(!F)return new Map;let e=new Map,t=`__raw_${F}`;for(let n of N){let r=n?.[F];if(r==null)continue;let i=t in(n||{})?n[t]:r;e.set(String(r),i)}return e},[N,F]),L=(0,n.useMemo)(()=>{if(b)return{...a.filter||{},...(0,t.computeDrillFilter)(P,b,{groupByField:F})}},[b,P,F,w]),R=!l&&!!b&&!!a.objectName&&P?.target===`navigate`&&!!S;(0,n.useEffect)(()=>{R&&(S(a.objectName,L),ie(null))},[R]);let z=a.compareTo,B=a.aggregate?Se(a.aggregate):void 0,V=B?`${B}${Ce}`:void 0,H=!!z&&D(a.chartType)&&!!V&&N.some(e=>e[V]!=null),U=(0,n.useMemo)(()=>{let e=Array.isArray(a.series)?a.series:null;if(!H)return e;let n=e||[{dataKey:B}],r={vsLastWeek:`Previous week`,vsLastMonth:`Previous month`,vsLastQuarter:`Previous quarter`,vsLastYear:`Previous year`,vsYesterday:`Yesterday`,vsPreviousPeriod:`Previous period`}[(0,t.compareToTrendLabelKey)(z,a.filter)]||`Previous period`;return[...n.map(e=>({...e,variant:e.variant||`current`})),{dataKey:V,label:r,variant:`comparison`}]},[H,a.series,B,V,a.filter,z]),W=a.dataset?(0,t.buildChartSeries)((0,t.relabelDimensions)(N,k),a.dimensions,a.values,v,{nullCategoryLabel:oe(`chart.nullCategory`,`(None)`)}):null,ce=W?{...a,data:W.data,xAxisKey:W.xAxisKey,series:W.series}:{...a,data:N,...U?{series:U}:{}},le=a.colors&&!Array.isArray(a.colors)&&typeof a.colors==`object`?a.colors:null,ue=Array.isArray(a.colors)?a.colors:void 0,de=O||le?{...O||{},...le||{}}:void 0,fe={...ce,colors:ue,...de?{categoryColors:de}:{}};if(te&&N.length===0)return(0,i.jsxs)(`div`,{className:`p-2 `+(a.className||``),"data-testid":`chart-loading`,role:`status`,"aria-busy":`true`,"aria-live":`polite`,children:[(0,i.jsx)(`span`,{className:`sr-only`,children:`Loading chart data…`}),(0,i.jsx)(r.ChartSkeleton,{className:`h-full`})]});if(ne)return(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 p-4 `+(a.className||``),"data-testid":`chart-error`,role:`alert`,children:[(0,i.jsx)(s.AlertCircle,{className:`h-6 w-6 text-destructive opacity-60`}),(0,i.jsx)(`p`,{className:`text-xs text-destructive font-medium`,children:`Failed to load chart data`}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground max-w-xs text-center`,children:ne})]});if(!d&&a.objectName&&N.length===0)return(0,i.jsxs)(`div`,{className:`flex items-center justify-center text-muted-foreground text-sm p-4 `+(a.className||``),"data-testid":`chart-no-datasource`,children:[`No data source available for “`,a.objectName,`”`]});let pe=(0,t.isDrillEnabled)(P)?e=>{let t=e.category,n=t!=null&&I.has(String(t))?I.get(String(t)):t;ie({...e,category:n,categoryLabel:t,scope:`cell`})}:void 0,me=l??pe,he=!l&&b&&a.objectName&&!R?(()=>{let e=L??{},n=(0,t.resolveDrillTitle)(P,b,a.title||`Details`),c=P?.target??`drawer`,l={type:`object-data-table`,objectName:a.objectName,filter:e,pagination:!0,pageSize:P?.maxRows,columns:P?.columns?.map(e=>({accessorKey:e,header:e})),drillDown:{enabled:!0,mode:`record`,target:`dialog`}},u=(0,i.jsx)(`div`,{className:`overflow-auto`,"data-testid":`chart-drill-body`,children:(0,i.jsx)(o.SchemaRenderer,{schema:l,dataSource:d})}),f=S&&a.objectName?(0,i.jsxs)(r.Button,{type:`button`,variant:`ghost`,size:`sm`,"data-testid":`drill-open-in-list`,onClick:()=>{S(a.objectName,e),ie(null)},children:[oe(`dashboard.openInList`,`Open in list`),(0,i.jsx)(s.ArrowUpRight,{className:`ml-1 h-3.5 w-3.5`})]}):null;return c===`dialog`?(0,i.jsx)(r.Dialog,{open:!0,onOpenChange:e=>!e&&ie(null),children:(0,i.jsxs)(r.DialogContent,{className:`max-w-4xl`,children:[(0,i.jsxs)(r.DialogHeader,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,i.jsx)(r.DialogTitle,{children:n}),f]}),u]})}):(0,i.jsx)(r.Sheet,{open:!0,onOpenChange:e=>!e&&ie(null),children:(0,i.jsxs)(r.SheetContent,{side:`right`,className:`w-full sm:max-w-2xl md:max-w-3xl lg:max-w-4xl flex flex-col`,children:[(0,i.jsxs)(r.SheetHeader,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,i.jsx)(r.SheetTitle,{children:n}),f]}),(0,i.jsx)(`div`,{className:`flex-1 overflow-hidden mt-2`,children:u})]})})})():null;return(0,i.jsxs)(`div`,{className:`relative`,children:[(0,i.jsx)(r.RefreshIndicator,{active:te&&N.length>0}),(0,i.jsx)(Z,{...e,schema:fe,onChartClick:me}),he]})},De={filter:!0},Oe=e=>(0,i.jsx)(o.ElementDataSourceGate,{schema:e.schema,mapping:De,dataSource:e.dataSource,testId:`object-chart`,errorTitle:`This chart’s data source could not be resolved`,children:t=>(0,i.jsx)(Ee,{...e,schema:t})});t.ComponentRegistry.register(`object-chart`,Oe,{namespace:`plugin-charts`,label:`Object Chart`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`data`,type:`array`,label:`Data`,description:`Optional static data`},{name:`filter`,type:`array`,label:`Filter`},{name:`aggregate`,type:`object`,label:`Aggregate`,description:`Aggregation config: { field, function, groupBy }`},{name:`drillDown`,type:`object`,label:`Drill-down`,description:`Segment drill config: { enabled?, filter?, title?, target?: 'drawer' | 'dialog', columns?, maxRows? }. Present = on; {} is enough. Clicking a segment opens the underlying records filtered by the clicked category.`}]}),O();var ke={"bar-chart":X,chart:Z};t.ComponentRegistry.register(`bar-chart`,X,{namespace:`plugin-charts`,label:`Bar Chart`,category:`plugin`,inputs:[{name:`data`,type:`array`,label:`Data`,required:!0},{name:`dataKey`,type:`string`,label:`Data Key`,defaultValue:`value`},{name:`xAxisKey`,type:`string`,label:`X-Axis Key`,defaultValue:`name`},{name:`height`,type:`number`,label:`Height`,defaultValue:400},{name:`color`,type:`color`,label:`Color`,defaultValue:`#8884d8`}],defaultProps:{data:[{name:`Jan`,value:400},{name:`Feb`,value:300},{name:`Mar`,value:600},{name:`Apr`,value:800},{name:`May`,value:500}],dataKey:`value`,xAxisKey:`name`,height:400,color:`#8884d8`}}),t.ComponentRegistry.register(`chart`,Oe,{namespace:`view`,category:`view`,label:`Chart`,skipFallback:!0,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`type`,type:`string`,label:`Chart Type`},{name:`categoryField`,type:`string`,label:`Category Field`},{name:`valueField`,type:`string`,label:`Value Field`}]}),t.ComponentRegistry.register(`chart`,Z,{namespace:`plugin-charts`,label:`Chart`,category:`plugin`,inputs:[{name:`chartType`,type:`enum`,label:`Chart Type`,enum:[{label:`Bar`,value:`bar`},{label:`Line`,value:`line`},{label:`Area`,value:`area`},{label:`Pie`,value:`pie`},{label:`Donut`,value:`donut`},{label:`Radar`,value:`radar`},{label:`Scatter`,value:`scatter`}],defaultValue:`bar`},{name:`data`,type:`code`,label:`Data (JSON)`,required:!0},{name:`config`,type:`code`,label:`Config (JSON)`},{name:`xAxisKey`,type:`string`,label:`X Axis Key`,defaultValue:`name`},{name:`series`,type:`code`,label:`Series (JSON Array)`,required:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{chartType:`bar`,data:[{name:`Jan`,sales:400,revenue:240},{name:`Feb`,sales:300,revenue:139},{name:`Mar`,sales:600,revenue:380},{name:`Apr`,sales:800,revenue:430},{name:`May`,sales:500,revenue:220}],config:{sales:{label:`Sales`,color:`#8884d8`},revenue:{label:`Revenue`,color:`#82ca9d`}},xAxisKey:`name`,series:[{dataKey:`sales`},{dataKey:`revenue`}]}}),t.ComponentRegistry.register(`chart:bar`,Z,{namespace:`plugin-charts`,label:`Bar Chart (Alias)`,category:`plugin`,defaultProps:{chartType:`bar`}}),t.ComponentRegistry.register(`pie-chart`,Z,{namespace:`plugin-charts`,label:`Pie Chart`,category:`plugin`,defaultProps:{chartType:`pie`}}),t.ComponentRegistry.register(`donut-chart`,Z,{namespace:`plugin-charts`,label:`Donut Chart`,category:`plugin`,defaultProps:{chartType:`donut`}}),t.ComponentRegistry.register(`radar-chart`,Z,{namespace:`plugin-charts`,label:`Radar Chart`,category:`plugin`,defaultProps:{chartType:`radar`}}),t.ComponentRegistry.register(`scatter-chart`,Z,{namespace:`plugin-charts`,label:`Scatter Chart`,category:`plugin`,defaultProps:{chartType:`scatter`}}),e.ChartBarRenderer=X,e.ChartRenderer=Z,e.ObjectChart=Ee,e.ObjectChartBlock=Oe,e.chartComponents=ke,e.normalizeChartSchema=y});