react-semaphor 0.1.243 → 0.1.245

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/chunks/{dashboard-controls-D9q-ca8O.js → dashboard-controls-D090JMLs.js} +1 -1
  2. package/dist/chunks/{dashboard-controls-Dq5IKj7q.js → dashboard-controls-DmypgT4E.js} +4 -4
  3. package/dist/chunks/{dashboard-json-Bc3EkHxP.js → dashboard-json-CNYzXFc0.js} +1 -1
  4. package/dist/chunks/{dashboard-json-BgVfGrJx.js → dashboard-json-CfyT-1L9.js} +1 -1
  5. package/dist/chunks/{dashboard-summary-settings-dialog-DLRHOBUf.js → dashboard-summary-settings-dialog-Bom5UHYB.js} +1 -1
  6. package/dist/chunks/{dashboard-summary-settings-dialog-Bjp7y6sj.js → dashboard-summary-settings-dialog-DOCB-2KJ.js} +1 -1
  7. package/dist/chunks/{edit-dashboard-visual-41Y26RLQ.js → edit-dashboard-visual-BI05YbTU.js} +15 -17
  8. package/dist/chunks/{edit-dashboard-visual-D3RKjIJc.js → edit-dashboard-visual-L0E4n8MG.js} +2 -2
  9. package/dist/chunks/{editor-action-buttons-C34rWlNb.js → editor-action-buttons-CtAIBNnl.js} +1 -1
  10. package/dist/chunks/{editor-action-buttons-BuELeFM3.js → editor-action-buttons-fSIEiqef.js} +2 -2
  11. package/dist/chunks/{index-CzCcSZsR.js → index-BNO9yBb2.js} +231 -231
  12. package/dist/chunks/{index-CcCVbPnj.js → index-DqlbctgT.js} +25386 -25170
  13. package/dist/chunks/{notification-bell-C8s2IW-o.js → notification-bell-Clpdq1a9.js} +3 -3
  14. package/dist/chunks/{notification-bell-naFRcds6.js → notification-bell-DWbYMmDe.js} +1 -1
  15. package/dist/chunks/{resource-management-panel-n4PVPFdU.js → resource-management-panel-BFfBdzqK.js} +2 -2
  16. package/dist/chunks/{resource-management-panel-BZ8sps7t.js → resource-management-panel-DqiIBc7D.js} +1 -1
  17. package/dist/chunks/{use-visual-utils-BWY6z-k8.js → use-visual-utils-Dy19IP1A.js} +1 -1
  18. package/dist/chunks/{use-visual-utils-CgFbcH47.js → use-visual-utils-XW1UfAdf.js} +1 -1
  19. package/dist/dashboard/index.cjs +1 -1
  20. package/dist/dashboard/index.js +1 -1
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.js +5 -5
  23. package/dist/surfboard/index.cjs +1 -1
  24. package/dist/surfboard/index.js +2 -2
  25. package/dist/types/main.d.ts +1 -0
  26. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-CzCcSZsR.js"),C=require("react"),Ae=require("./editor-action-buttons-C34rWlNb.js"),nn=require("react-dom");function rn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,r.get?r:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const at=rn(C);/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-BNO9yBb2.js"),C=require("react"),Ae=require("./editor-action-buttons-CtAIBNnl.js"),nn=require("react-dom");function rn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,r.get?r:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const at=rn(C);/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -185,4 +185,4 @@ ${r}`].filter(Boolean).join(`
185
185
 
186
186
  `;o(x)}:void 0}}function Aa({className:t,...n}){var X,ne,ue,ee,Ne;const a=s.useEditorStore(q=>q.card);s.useEditorStore(q=>q.isDevMode);const r=((X=a.customCardPreferences)==null?void 0:X.showCardHeader)??!0,i=((ue=(ne=a.preferences)==null?void 0:ne.displayOptions)==null?void 0:ue.showInlineFilterBar)??!0,d=s.useEditorStore(q=>q.frame),o=s.useDashboardStore(q=>q.dashboard.filters),c=s.useDashboardStore(q=>q.selectedSheetId),[l,x]=C.useState(!1),{currentUser:p}=s.useCurrentUserInfo(),{tokenProps:h}=C.useContext(s.SemaphorContext),u=s.useEditorStore(q=>q.actions.setRunSql),{updateFilter:y}=s.useDashboardActions(),b=o==null?void 0:o.find(q=>q.id===d.filterId),m=C.useMemo(()=>s.findCustomVisualConfigCard(d,a),[d,a]),{manifest:g}=s.useCustomVisual(((ee=m==null?void 0:m.customCardPreferences)==null?void 0:ee.url)||""),w=C.useMemo(()=>{var q;return(q=g==null?void 0:g.visuals)==null?void 0:q.find(Z=>{var ce;return Z.name===((ce=m==null?void 0:m.customCardPreferences)==null?void 0:ce.componentName)})},[g,(Ne=m==null?void 0:m.customCardPreferences)==null?void 0:Ne.componentName]),E=s.resolveMultiInputType(m,w),V=C.useMemo(()=>s.getCustomVisualInputCards({frame:d,configCard:m,isMultiInputVisual:E==="multiple"}),[d,m,E]),A=C.useMemo(()=>{const q=V.findIndex(Z=>(Z==null?void 0:Z.id)===(a==null?void 0:a.id));return q<0?-1:s.getSlotIndexForCard(a,q)},[V,a]),T=C.useMemo(()=>!m||E!=="multiple"||A<0?a.type:s.getEffectiveCardTypeForSlot(a,A,w==null?void 0:w.slots)??a.type,[m,E,A,a,w==null?void 0:w.slots]),v=T??a.type,D=C.useMemo(()=>v===a.type?a:{...a,type:v},[a,v]),M=C.useMemo(()=>T!==a.type?{...a,type:T}:a,[a,T]),{data:f,isLoading:I,isFetching:j,errorMessage:k,errorSql:R,pagination:P}=s.useDashboardCardQuery(M),{handleOpenInEditor:N,handleDebugWithAssistant:L}=Da(k,R||a.sql||a.python),S=C.useMemo(()=>(f==null?void 0:f.records)||[],[f==null?void 0:f.records]),{setCard:F,updateCardInFrame:O}=s.useEditorActions(),{data:_}=s.useTopoJson(D),Q=C.useMemo(()=>{var q;return v!=="pivotTable"||!((q=f==null?void 0:f.records)!=null&&q.length)?null:{records:f.records,columnSubtotalMeta:f.columnSubtotalMeta,subtotalColumns:f.subtotalColumns||[],pivotSchema:f.pivotSchema||[],groupByColumns:f.groupByColumns}},[v,f==null?void 0:f.records,f==null?void 0:f.columnSubtotalMeta,f==null?void 0:f.subtotalColumns,f==null?void 0:f.pivotSchema,f==null?void 0:f.groupByColumns]),B=s.usePivotTableConfig(D,Q),K=()=>{x(!0)},se=C.useMemo(()=>{const q=typeof window<"u"?window.location.href:"",Z=typeof navigator<"u"?navigator.userAgent:"",ce=typeof window<"u"?`${window.innerWidth}x${window.innerHeight}`:"";return{category:s.FeedbackCategory.QUERY_GENERATION,user:p,tokenContext:h,systemState:{cardConfig:a.config,dataSource:a.dataSource,dashboardFilters:o,errorMessage:k||void 0,errorSql:R||a.sql||a.python,generatedSql:R||a.sql},metadata:{url:q,userAgent:Z,timestamp:new Date().toISOString(),viewport:ce}}},[p,h,a,o,k,R]),H=(q,Z)=>{var je,De;const ce={...a,paginationConfig:{page:q+1,pageSize:Z}};F(ce),O(ce),a.sql&&((De=(je=a.preferences)==null?void 0:je.tablePrefs)!=null&&De.enableDevModePagination)&&u(!0)},te=q=>{var je,De,Oe,Te,be;const Z=s.sortStateToSortByColumns(q,(je=a.config)==null?void 0:je.metricColumns,(De=a.config)==null?void 0:De.groupByColumns,(Oe=a.config)==null?void 0:Oe.detailColumns),ce={...a,config:{...a.config||{},sortByColumns:Z}};F(ce),O(ce),a.sql&&((be=(Te=a.preferences)==null?void 0:Te.tablePrefs)!=null&&be.enableDevModePagination)&&u(!0)},z=C.useMemo(()=>!D.id||!(f!=null&&f.records)?null:s.createChartConfig({card:D,data:f==null?void 0:f.records,cardType:v,queryConfig:D.queryConfig,customCfg:D.customCfg,preferences:D.preferences,topoJson:_}),[D,f==null?void 0:f.records,v,_]);function W(q){return e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(s.EditorCustomVisual,{card:q})})}function le(){var q;if(f!=null&&f.records&&(f==null?void 0:f.records.length)===0&&!I&&!j)return k?e.jsx("div",{className:"flex h-full flex-col items-start justify-start overflow-auto p-4",children:e.jsx(ot,{error:k,errorSql:R||a.sql||a.python,onOpenInEditor:N,onDebugWithAssistant:L,onSendFeedback:K,showFeedbackButton:!0})}):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2",children:[e.jsx(s.TreePalm,{className:"size-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No results to display"})]});if((I||j)&&(!(f!=null&&f.records)||f.records.length===0))return v==="table"||v==="detailTable"?e.jsx("div",{className:"relative mb-2 flex h-full min-h-0 w-full flex-1 grow basis-0",children:e.jsx(s.TableSkeleton,{})}):e.jsx("div",{className:"z-50 flex h-full items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})});if(!D.id)return null;if(v==="custom")return W(a);if(!["table","pivotTable","aggregateTable","detailTable","custom"].includes(v)&&z)return e.jsx("div",{className:"relative h-full min-h-0 w-full flex-1 grow basis-0",children:I||j?e.jsx(e.Fragment,{}):e.jsx(s.ChartJsVisual,{cfg:z})});if(v==="table"||v==="detailTable")return e.jsx("div",{className:"relative mb-2 flex h-full min-h-0 w-full flex-1 grow basis-0",children:e.jsx(s.TableVisual,{card:D,data:S,comparisonMetadata:(q=f==null?void 0:f.metadata)==null?void 0:q.comparisonMetadata,paginationMetadata:P,onPaginationChange:H,onSortChange:te,isLoading:I||j})});if(v==="pivotTable"&&B)return e.jsx("div",{className:"relative mb-2 flex h-full min-h-0 w-full flex-1 grow basis-0",children:e.jsx(s.PivotTableTanstack,{card:D,data:B.data,options:B.options,onAggregationChange:Z=>{const ce=s.handleAggregationChange(Z,a.config),je={...a,config:ce};F(je),O(je)},onAggregationLabelChange:Z=>{const ce=s.handleAggregationLabelChange(Z,a.config),je={...a,config:ce};F(je),O(je)}})});if(v==="aggregateTable")return e.jsx("div",{className:"relative mb-2 flex h-full min-h-0 w-full flex-1 grow basis-0",children:e.jsx(s.AggregateTable,{card:D,data:(f==null?void 0:f.records)||[],groupByColumns:f==null?void 0:f.groupByColumns,pivotSchema:f==null?void 0:f.pivotSchema,paginationMetadata:P,onPaginationChange:H,onAggregationChange:Z=>{const ce=s.handleAggregationChange(Z,a.config),je={...a,config:ce};F(je),O(je)},isLoading:I||j})})}return e.jsxs(s.Card,{role:"editor-visual-card",className:s.cn("relative flex h-full flex-col rounded-none",t),...n,children:[(I||j)&&(f==null?void 0:f.records)&&f.records.length>0&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}),r&&e.jsxs(s.CardHeader,{className:s.cn("flex flex-row items-start justify-between py-4 pr-6","pl-2"),children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.CardTitle,{className:"text-base",children:e.jsx(s.EditableText,{value:a.title,onSave:q=>F({...a,title:q}),isEditable:!0,placeholder:"Add title",displayClassName:"text-base font-semibold",inputClassName:"text-base font-semibold"})}),e.jsx(s.InfoHover,{card:a}),e.jsx(Ae.VisualBadge,{}),e.jsx("div",{className:"ml-auto",children:e.jsx(Qn,{})})]}),e.jsx("div",{className:"w-1/2",children:e.jsx(s.EditableText,{value:(a.description||"").trim(),onSave:q=>F({...a,description:q.trim()}),isEditable:!0,placeholder:"Add description",displayClassName:"text-sm text-muted-foreground",inputClassName:"text-sm"})})]}),b&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Label,{className:"my-1",children:e.jsx(s.EditableText,{value:b.title||b.column,onSave:q=>y({...b,title:q}),isEditable:!0,placeholder:"Filter",displayClassName:"text-sm",inputClassName:"text-sm"})}),e.jsx(s.FilterComponent,{filter:b})]})]}),i&&a.inlineFilters&&a.inlineFilters.length>0&&e.jsx("div",{className:s.cn("pb-3 pr-6","pl-2"),children:e.jsx(s.InlineFilterBar,{card:a,sheetId:c||""})}),e.jsxs(s.CardContent,{className:s.cn("flex min-h-0 grow flex-col pr-6","pl-2"),children:[e.jsx("div",{className:"min-h-0 flex-1 grow basis-0",children:le()}),s.isCardSummaryVisibleOnCard(D)&&e.jsx("div",{className:"pt-3",children:e.jsx(s.CardSummary,{card:D,mode:"editor"})})]}),e.jsx(s.FeedbackDialog,{open:l,onOpenChange:x,feedbackData:se,showDebugInfo:!0})]})}const Ys=({language:t,value:n,onChange:a,readonly:r})=>e.jsx(s.Ft,{className:"h-full w-full overflow-hidden text-xs",theme:"default",options:{minimap:{enabled:!1},wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:12,lineHeight:16,renderLineHighlight:"none",readOnly:r},defaultLanguage:t,value:n,onChange:a}),Yn=()=>e.jsxs(s.DialogHeader,{children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(s.DialogTitle,{children:"Customize Card"})}),e.jsxs(s.DialogDescription,{children:["See the configuration options and documentation",e.jsx("a",{target:"_blank",className:"ml-1 text-blue-500 underline",href:"https://www.chartjs.org/docs/latest/samples/bar/vertical.html",children:"here."})]})]}),Wn=({customCode:t,cardCustomCfgString:n,mergedConfig:a,onConfigChange:r,onCodeChange:i})=>e.jsxs(s.Tabs,{defaultValue:"final-config",className:"flex w-1/2 flex-col",children:[e.jsxs(s.TabsList,{className:"justify-start rounded-sm rounded-b-none border border-b-0",children:[e.jsx(s.TabsTrigger,{value:"final-config",children:"Config"}),e.jsx(s.TabsTrigger,{value:"custom-config",children:"Changes"}),e.jsx(s.TabsTrigger,{value:"custom-code",children:"Custom Code"})]}),e.jsx(s.TabsContent,{value:"final-config",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(Ys,{language:"json",value:a,onChange:r})}),e.jsx(s.TabsContent,{value:"custom-config",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(Ys,{readonly:!0,language:"json",value:n,onChange:()=>{}})}),e.jsx(s.TabsContent,{value:"custom-code",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(Ys,{language:"javascript",value:t,onChange:i})})]}),Xn=({error:t,hasCardCustomConfig:n,onReset:a,onApply:r,onClose:i})=>e.jsxs(s.DialogFooter,{className:"flex items-center",children:[e.jsx(s.Label,{className:"mr-2 text-red-500",children:t}),e.jsx(s.Button,{disabled:!n,onClick:a,variant:"outline",children:"Reset"}),e.jsx(s.Button,{onClick:r,variant:"outline",children:"Apply"}),e.jsx(s.Button,{onClick:i,variant:"outline",children:"Close"})]});function Zn({triggerVariant:t="icon",className:n,label:a="Customize Visual"}={}){const[r,i]=C.useState(!1),[d,o]=C.useState(""),[c,l]=C.useState(""),[x,p]=C.useState(""),[h,u]=C.useState(""),y=s.useEditorStore(I=>I.card),b=Ae.useEffectiveEditorCardType(),m=s.useEditorStore(I=>I.card.customCfg),g=m?JSON.stringify(m,null,2):"",w=C.useMemo(()=>b!==y.type?{...y,type:b}:y,[y,b]),{data:E}=s.useDashboardCardQuery(w),{data:V}=s.useTopoJson(y),{setCardCustomCfg:A,setCustomVisualCode:T}=s.useEditorActions(),v=I=>{var j,k;return JSON.stringify({...I,data:{...I.data,datasets:(k=(j=I.data)==null?void 0:j.datasets)==null?void 0:k.map(R=>({...R,data:[]}))}},null,2)},D=()=>{var j,k;if(!((j=E==null?void 0:E.records)!=null&&j.length))return;const I=s.createChartConfig({card:y,data:E.records,cardType:y.type,queryConfig:y.queryConfig,preferences:y.preferences,topoJson:V});if(I){o(v(I)),p(((k=y.preferences)==null?void 0:k.customVisualCode)||"");const R=s.merge(I,m);l(v(R))}},M=()=>{try{if(x&&T(x),c){const I=JSON.parse(c),j=s.getObjectDiff(JSON.parse(d),I);A(j),u("")}}catch{u("Invalid JSON configuration")}},f=Object.keys(m||{}).length===0;return e.jsxs(s.Dialog,{open:r,onOpenChange:i,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:t==="menu"?e.jsxs(s.Button,{variant:"ghost",onClick:D,className:s.cn("h-8 w-full justify-start gap-2 px-2 text-sm",f?"":"text-green-600 hover:text-green-700",n),children:[e.jsx(s.Settings,{className:"h-4 w-4"}),e.jsx("span",{children:a})]}):e.jsx(s.IconButton,{tooltip:"Customize Visual",onClick:D,className:s.cn(f?"":"text-green-600 hover:text-green-700",n),children:e.jsx(s.Settings,{className:"h-4 w-4"})})}),e.jsxs(s.DialogContent,{className:"flex h-[600px] grow flex-col overflow-auto sm:min-w-[900px] lg:min-w-[1200px]",children:[e.jsx(Yn,{}),e.jsxs("div",{className:"flex grow gap-2",children:[e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Aa,{className:"w-1/2 rounded shadow-none"})}),e.jsx(Wn,{customCode:x,cardCustomCfgString:g,mergedConfig:c,onConfigChange:I=>l(I??""),onCodeChange:I=>p(I??"")})]}),e.jsx(Xn,{error:h,hasCardCustomConfig:!!m,onReset:()=>{l(d),A(null)},onApply:M,onClose:()=>i(!1)})]})]})}function er({isStarred:t,onClick:n,className:a}){const r=i=>{i.stopPropagation(),i.preventDefault(),n(i)};return e.jsx("button",{type:"button",onClick:r,className:s.cn("flex items-center justify-center rounded-sm p-0.5 transition-all","hover:bg-muted/80",a),"aria-label":t?"Remove from favorites":"Add to favorites",children:e.jsx(s.Star,{className:s.cn("h-3.5 w-3.5 transition-colors",t?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-foreground")})})}function la({chartType:t,chartName:n,isCustom:a=!1,pluginName:r,isStarred:i,showStar:d=!0,onSelect:o,onToggleStar:c}){return e.jsxs("button",{onClick:o,className:s.cn("group relative flex flex-col items-center gap-2 rounded-lg border border-border","bg-background p-3 transition-all","hover:border-primary/50 hover:bg-muted/50 hover:shadow-sm"),children:[d&&e.jsx("div",{className:s.cn("absolute left-1 top-1 transition-opacity",i?"opacity-100":"opacity-0 group-hover:opacity-100"),children:e.jsx(er,{isStarred:i,onClick:()=>c()})}),a&&r&&e.jsx("div",{className:"absolute right-1 top-1",children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"flex items-center justify-center",children:e.jsx(s.Info,{className:"h-3 w-3 text-muted-foreground"})})}),e.jsx(s.TooltipContent,{side:"top",className:"text-xs",children:r})]})}),e.jsx(s.ChartIcon,{chartType:t,chartName:n,isCustom:a,className:"h-6 w-6"}),e.jsx("span",{title:n,className:"line-clamp-2 text-center text-xs font-medium text-foreground",children:n})]})}const oa=[{id:"table",name:"Table"},{id:"bar",name:"Bar Chart"},{id:"line",name:"Line Chart"},{id:"area",name:"Area Chart"},{id:"combo",name:"Combo Chart"},{id:"stackedBar",name:"Stacked Bar"},{id:"stackedArea",name:"Stacked Area"},{id:"stackedLine",name:"Stacked Line"},{id:"scatter",name:"Scatter"},{id:"bubble",name:"Bubble"},{id:"pie",name:"Pie Chart"},{id:"doughnut",name:"Doughnut"},{id:"funnel",name:"Funnel"},{id:"radar",name:"Radar"},{id:"polarArea",name:"Polar Area"},{id:"tornado",name:"Tornado"},{id:"range",name:"Range"},{id:"bullet",name:"Bullet Chart"},{id:"treemap",name:"Treemap"},{id:"heatmap",name:"Heatmap"},{id:"kpi",name:"KPI"},{id:"text",name:"Text"},{id:"map",name:"Map"}];function sr({onChartSelect:t,onClose:n}){const[a,r]=C.useState(""),{starredCharts:i,isStarred:d,toggleStar:o}=s.useStarredChartsStore(),{data:c=[],isLoading:l}=s.useCustomVisualsQuery(),{setCardType:x,setCardPreferences:p,setIsDevMode:h}=s.useEditorStore(f=>f.actions),u=s.useEditorStore(f=>f.card),{setCardCustomCfg:y,setCustomCardPreferences:b,setQueryConfig:m,replaceFrameCards:g,clearModeDrafts:w,initializeModeDrafts:E}=s.useEditorActions(),V=C.useMemo(()=>{if(!a)return oa;const f=a.toLowerCase();return oa.filter(I=>I.name.toLowerCase().includes(f))},[a]),A=C.useMemo(()=>{const f=c.filter(j=>j.componentType==="chart"&&j.pluginType!=="standard");if(!a)return f;const I=a.toLowerCase();return f.filter(j=>j.name.toLowerCase().includes(I))},[c,a]),T=f=>{y(null),p({}),x(f),["custom","text","map"].includes(f)&&(h(!0),m(void 0)),t==null||t(f),n==null||n()},v=f=>{y(null),p({}),m(void 0);const I=s.resolveMultiInputTypeFromVisual(f);if(I==="multiple"&&f.slots&&f.slots.length>0){w();const k=s.createCardsFromSlots(f.slots,f,u);g(k),k[0]&&E(k[0]),n==null||n();return}else x("custom"),b({type:"component",visualType:I,url:f.url,componentName:f.name,icon:f.icon,pluginChartType:f.chartType,minInputs:f.minInputs,maxInputs:f.maxInputs});t==null||t("custom",f),n==null||n()},D=f=>{const I={type:"default",id:f.id,name:f.name};o(I)},M=f=>{const I={type:"custom",id:f.name,url:f.url,icon:f.icon,name:f.name};o(I)};return e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2 rounded-sm border border-border bg-background px-3 py-2",children:[e.jsx(s.Search,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search charts...",value:a,onChange:f=>r(f.target.value),className:"h-auto border-0 p-0 text-sm focus-visible:ring-0 focus-visible:ring-offset-0"})]}),e.jsxs("div",{className:"max-h-[350px] overflow-y-auto",children:[V.length>0&&e.jsx("div",{className:"mb-3",children:e.jsx("div",{className:"grid grid-cols-3 gap-2",children:V.map(f=>e.jsx(la,{chartType:f.id,chartName:f.name,isCustom:!1,isStarred:d("default",f.id),onSelect:()=>T(f.id),onToggleStar:()=>D(f)},f.id))})}),A.length>0&&e.jsxs(e.Fragment,{children:[V.length>0?e.jsx(s.Separator,{className:"my-3"}):null,e.jsxs("div",{children:[e.jsx("span",{className:"mb-2 block text-xs font-medium text-muted-foreground",children:"Custom Charts"}),e.jsx("div",{className:"grid grid-cols-3 gap-2",children:A.map((f,I)=>e.jsx(la,{chartName:f.name,isCustom:!0,pluginName:f.pluginName,isStarred:d("custom",f.name),onSelect:()=>v(f),onToggleStar:()=>M(f)},`${f.url}-${f.name}-${I}`))})]})]}),l&&e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-3"}),e.jsx("div",{className:"py-4 text-center text-sm text-muted-foreground",children:"Loading custom charts..."})]}),V.length===0&&A.length===0&&!l&&e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:"No charts found"})]})]})}function tr({selectedChart:t,onChartChange:n}){var v,D,M,f;const a=s.useEditorStore(I=>I.card),r=s.useEditorStore(I=>I.frame),i=s.useEditorStore(I=>I.isDevMode),{replaceFrameCards:d,clearModeDrafts:o,initializeModeDrafts:c,setIsDevMode:l}=s.useEditorActions(),x=C.useMemo(()=>s.findCustomVisualConfigCard(r,a),[r,a]),{manifest:p}=s.useCustomVisual(((v=x==null?void 0:x.customCardPreferences)==null?void 0:v.url)||""),h=C.useMemo(()=>{var I;return(I=p==null?void 0:p.visuals)==null?void 0:I.find(j=>{var k;return j.name===((k=x==null?void 0:x.customCardPreferences)==null?void 0:k.componentName)})},[p,(D=x==null?void 0:x.customCardPreferences)==null?void 0:D.componentName]),u=s.resolveMultiInputType(x,h)==="multiple",y=Ae.useEffectiveEditorCardType(),b=u?y:t??a.type,m=(M=a==null?void 0:a.customCardPreferences)==null?void 0:M.componentName,g=(f=x==null?void 0:x.customCardPreferences)==null?void 0:f.componentName,w=u&&!!g,E=C.useMemo(()=>{const I=s.chartTypes.find(j=>j.id===b);return I?I.label:b==="custom"?m||"Custom Visual":"Select chart type"},[b,m]),V=C.useMemo(()=>{const I=s.chartTypes.find(j=>j.id===b);if(I){const j=I.icon;return e.jsx(j,{className:"h-4 w-4"})}if(b==="custom"&&m){const j=s.getAutoDetectedChartIcon(m);return j||e.jsx(s.ChartIcon,{chartName:m,isCustom:!0,className:"h-4 w-4"})}return e.jsx(yn,{className:"h-4 w-4"})},[b,m]);return{displayChartType:b,displayLabel:E,displayIcon:V,showBadge:w,badgeLabel:g,isMultiInputContext:u,handleChartSelect:I=>{n==null||n(I)},handleClearCustomVisual:I=>{I.stopPropagation();const j={...a,type:"bar",sql:"",python:"",config:void 0,queryConfig:void 0,customCfg:void 0,preferences:{},customCardPreferences:void 0,title:"Chart",tabTitle:"Chart",description:void 0,info:void 0};d([j]),o(),c(j),i&&l(!0),n==null||n("bar")}}}function it({selectedChart:t,onChartChange:n,variant:a="ghost",className:r}){const[i,d]=C.useState(!1),{displayLabel:o,displayIcon:c,showBadge:l,badgeLabel:x,handleChartSelect:p,handleClearCustomVisual:h}=tr({selectedChart:t,onChartChange:n});return e.jsxs("div",{className:s.cn("relative w-full",r),children:[e.jsxs(s.Popover,{open:i,onOpenChange:d,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{size:"sm",variant:a,role:"combobox","aria-expanded":i,className:s.cn("w-full justify-between gap-2",a==="ghost"&&"border border-border/70 bg-background text-foreground/90",a==="outline"&&"border-border/70 bg-background text-foreground/90",a==="secondary"&&"text-foreground"),children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[c,e.jsx("span",{className:"truncate",children:o})]}),e.jsx(s.ChevronDown,{className:"h-4 w-4 shrink-0 opacity-70"})]})}),e.jsx(s.PopoverContent,{className:"w-[360px] p-3",align:"start",onOpenAutoFocus:u=>u.preventDefault(),children:e.jsx(sr,{onChartSelect:u=>p(u),onClose:()=>d(!1)})})]}),l&&e.jsxs("div",{className:"absolute right-10 top-1/2 z-10 flex max-w-[140px] -translate-y-1/2 items-center gap-1 rounded-full border bg-background py-0.5 pl-2 pr-1 text-[10px] text-muted-foreground shadow-sm",title:x,children:[e.jsx(s.Layers,{className:"h-2.5 w-2.5 shrink-0"}),e.jsx("span",{className:"truncate",children:x}),e.jsx("button",{onClick:h,className:"rounded-full p-0.5 hover:bg-muted",title:"Clear custom visual",children:e.jsx(s.X,{className:"h-2.5 w-2.5"})})]})]})}function ar(){const t=s.useEditorStore(l=>{var x,p;return(p=(x=l.card.preferences)==null?void 0:x.chartOptions)==null?void 0:p.indexAxis}),n=s.useEditorStore(l=>l.card.type),{setChartOrientation:a,setCardPreferences:r}=s.useEditorStore(l=>l.actions),i=l=>{if(a(l),n!=="bullet")return;const x=l==="y"?"horizontal":"vertical",p=s.useEditorStore.getState().card.preferences,h={...p||{},bulletConfig:{...(p==null?void 0:p.bulletConfig)||{},orientation:x}};r(h)};function d(){const l=t??"x",x=()=>{i(l==="x"?"y":"x")};return e.jsx(s.IconButton,{onClick:x,tooltip:"Chart Orientation",children:l==="x"?e.jsx(Js,{className:"size-4"}):e.jsx(Hs,{className:"size-4"})})}function o(){const l=()=>{i(t==="y"||t===void 0?"x":"y")};return e.jsx(s.IconButton,{onClick:l,tooltip:"Chart Orientation",children:t==="y"||t===void 0?e.jsx(Js,{className:"size-4"}):e.jsx(Hs,{className:"size-4"})})}function c(){const l=t??"y",x=()=>{i(l==="y"?"x":"y")};return e.jsx(s.IconButton,{onClick:x,tooltip:"Chart Orientation",children:l==="y"?e.jsx(Hs,{className:"size-4"}):e.jsx(Js,{className:"size-4"})})}return e.jsx(e.Fragment,{children:n==="funnel"?o():n==="bullet"?c():d()})}function ct({className:t,triggerVariant:n="icon",label:a="Display Options"}){var m,g,w,E,V,A,T,v,D,M;const r=s.useEditorStore(f=>f.card),{setCardPreferences:i,updateCardInFrame:d,setCard:o}=s.useEditorActions(),[c,l]=C.useState(!1),x=((g=(m=r.preferences)==null?void 0:m.displayOptions)==null?void 0:g.showFilterInfo)??!0,p=((E=(w=r.preferences)==null?void 0:w.displayOptions)==null?void 0:E.showCardToolbar)??!0,h=((A=(V=r.preferences)==null?void 0:V.displayOptions)==null?void 0:A.showChrome)??!0,u=((v=(T=r.preferences)==null?void 0:T.displayOptions)==null?void 0:v.allowScroll)??!0,y=((M=(D=r.preferences)==null?void 0:D.displayOptions)==null?void 0:M.showInlineFilterBar)??!0,b=(f,I)=>{var R;const j={...r.preferences,displayOptions:{...(R=r.preferences)==null?void 0:R.displayOptions,[f]:I}};i(j);const k={...r,preferences:j};o(k),d(k)};return e.jsx("div",{className:s.cn("flex items-center",t),children:e.jsxs(s.DropdownMenu,{modal:!1,open:c,onOpenChange:l,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:n==="menu"?e.jsxs(s.Button,{variant:"ghost",className:"h-8 w-full justify-start gap-2 px-2 text-sm",children:[e.jsx(nt,{className:"h-4 w-4"}),e.jsx("span",{children:a})]}):e.jsx(s.IconButton,{className:"h-8 w-8 p-0",tooltip:"Display Options",children:e.jsx(nt,{className:"h-4 w-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-64",children:[e.jsx(s.DropdownMenuLabel,{children:"Display Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsx("div",{className:"px-2 py-1.5",children:e.jsx("p",{className:"mb-2 text-xs text-muted-foreground",children:"Changes apply to dashboard view only"})}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:x,onCheckedChange:f=>{b("showFilterInfo",f)},onSelect:f=>f.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Filter Info"}),e.jsx("span",{className:"ml-4 text-xs text-muted-foreground",children:"Badge"})]}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:p,onCheckedChange:f=>{b("showCardToolbar",f)},onSelect:f=>f.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Card Toolbar"}),e.jsx("span",{className:"ml-4 text-xs text-muted-foreground",children:"Hover actions"})]}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:h,onCheckedChange:f=>{b("showChrome",f)},onSelect:f=>f.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Card Chrome"}),e.jsx("span",{className:"ml-4 text-xs text-muted-foreground",children:"Frame & padding"})]}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:u,onCheckedChange:f=>{b("allowScroll",f)},onSelect:f=>f.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Allow Scroll"}),e.jsx("span",{className:"ml-4 text-xs text-muted-foreground",children:"Card content scroll"})]}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:y,onCheckedChange:f=>{b("showInlineFilterBar",f)},onSelect:f=>f.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Inline Filter Bar"}),e.jsx("span",{className:"ml-4 text-xs text-muted-foreground",children:"Card filters"})]})]})]})})}function dt({className:t,triggerVariant:n="icon",label:a="Inline Filters"}){const[r,i]=C.useState(!1),d=s.useEditorStore(m=>m.card),o=s.useEditorStore(m=>m.selectedConnectionId),{setCard:c}=s.useEditorActions(),l=s.useDashboardStore(m=>m.actions.removeCardInlineFilterValue),x=(d==null?void 0:d.inlineFilters)||[];function p(m){var I,j,k,R,P;const g=((k=(j=(I=d==null?void 0:d.dataSource)==null?void 0:I.selectedEntities)==null?void 0:j[0])==null?void 0:k.database)||"",w=m.qualifiedFieldName||m.name;if(x.find(N=>N.column===w))return;const V=m.qualifiedFieldName?m.qualifiedFieldName.split(".").slice(0,-1).join("."):m.qualifiedEntityName||m.entityName,T=s.fmt(m.name),v=s.buildFilterFieldMeta(m),D=s.buildFilterSemanticContext(d==null?void 0:d.dataSource,{connectionId:o||((R=d==null?void 0:d.dataSource)==null?void 0:R.connectionId),connectionType:(P=d==null?void 0:d.dataSource)==null?void 0:P.connectionType}),M=s.isCalculatedFilterField(v),f={id:s.v4(),column:w,title:m.label||m.name,dataType:m.dataType,table:m.entityName||"",database:g,connectionId:o||"",operation:"in",sql:M?"":s.getDefaultFilterSql(m.dataType,V,T),fieldMeta:v,semanticContext:D,width:250};c({...d,inlineFilters:[...x,f]})}function h(m){const g=x.filter(w=>w.id!==m);c({...d,inlineFilters:g}),l(d.id,m)}function u(m,g){const w=x.map(E=>E.id===m?{...E,...g}:E);c({...d,inlineFilters:w})}if(!["bar","line","pie","doughnut","table","detailTable","stackedBar","stackedLine","horizontalBar","radar","polarArea","scatter","bubble","funnel","aggregateTable","custom"].includes(d==null?void 0:d.type))return null;const b=n==="menu";return e.jsx("div",{className:s.cn("flex items-center gap-1",b&&"w-full",t),children:e.jsxs(s.Popover,{open:r,onOpenChange:i,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:b?e.jsxs(s.Button,{variant:"ghost",className:s.cn("h-8 w-full justify-start gap-2 px-2 text-sm",x.length>0&&"text-primary"),children:[e.jsx(Wt,{className:"h-4 w-4"}),e.jsx("span",{children:a}),x.length>0&&e.jsx("span",{className:"ml-auto inline-flex min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[10px] font-medium text-primary-foreground",children:x.length})]}):e.jsxs(s.IconButton,{tooltip:"Add Inline Filter",className:s.cn("relative",{"text-primary":x.length>0}),children:[e.jsx(Wt,{className:"h-4 w-4"}),x.length>0&&e.jsx("span",{className:"absolute -right-1 -top-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[10px] font-medium text-primary-foreground",children:x.length})]})}),e.jsx(s.PopoverContent,{align:"end",className:s.cn("w-80 p-0",b&&"z-[60]"),children:e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"border-b px-4 py-3",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Inline Filters"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"On-card filters for fast, focused exploration."})]}),e.jsx("div",{className:"flex max-h-[300px] flex-col overflow-hidden",children:e.jsx(s.DndContext,{collisionDetection:s.closestCenter,children:e.jsx(s.SortableContext,{items:[],strategy:s.verticalListSortingStrategy,children:e.jsx(s.FieldsList,{context:"inline-filter",onFieldSelect:p,inlineFilters:x})})})}),x.length>0&&e.jsxs("div",{className:"border-t px-4 py-3",children:[e.jsx("p",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"Active Filters"}),e.jsx("div",{className:"space-y-1",children:x.map(m=>e.jsx(nr,{filter:m,onUpdate:g=>u(m.id,g),onRemove:()=>h(m.id)},m.id))})]})]})})]})})}function nr({filter:t,onUpdate:n,onRemove:a}){return e.jsxs("div",{className:"flex items-center justify-between rounded-md bg-muted px-2 py-1.5 text-sm",children:[e.jsx("span",{className:"truncate",title:t.column,children:t.title}),e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx(s.CustomFilterPopover,{filter:t,variant:"inline",onAccept:r=>n(r),trigger:e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-5 w-5 shrink-0",title:"Configure filter",children:e.jsx(s.Settings2,{className:"h-3 w-3"})})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-5 w-5 shrink-0 hover:bg-destructive/10 hover:text-destructive",onClick:a,children:e.jsx(s.X,{className:"h-3 w-3"})})]})]})}function La({showOrientation:t=!0,showGridStyle:n=!0,showInlineFilters:a=!0,showDisplayOptions:r=!0}={}){const i=s.useEditorStore(u=>u.card),d=s.useEditorStore(u=>{var y,b;return(b=(y=u.card)==null?void 0:y.preferences)==null?void 0:b.chartOptions}),o=s.getChartGridStyle(d),{setChartGrid:c}=s.useEditorActions();function l(){const u=["xy","none","x","y"],b=(u.indexOf(o)+1)%u.length;c(u[b])}const x=t&&["line","bar","range","stackedBar","stackedLine","horizontalBar","funnel","bullet"].includes(i.type),p=n&&!["pie","doughnut","funnel","radar","polarArea","table","custom","kpi","text","map"].includes(i.type);return x||p||a||r?e.jsxs("div",{"data-info":"visual-settings",className:"flex items-center gap-2",children:[x&&e.jsx(e.Fragment,{children:e.jsx(ar,{})}),p&&e.jsxs(s.IconButton,{tooltip:"Grid Style",onClick:l,children:[(o==="xy"||!o)&&e.jsx(s.Grid3x3,{className:"size-4"}),o==="x"&&e.jsx(lt,{className:"size-4"}),o==="y"&&e.jsx(Fs,{className:"size-4"}),o==="none"&&e.jsx(s.Square,{className:"size-4"})]}),a&&e.jsx(dt,{}),r&&e.jsx(ct,{})]}):null}function rr({isPreviewMode:t,onPreviewToggle:n,configCard:a}){var P,N,L,S,F;const r=s.useEditorStore(O=>O.frame),i=s.useEditorStore(O=>O.card),{setFrame:d,setActiveTabCardId:o,setCard:c,updateCardInFrame:l,clearModeDrafts:x,initializeModeDrafts:p}=s.useEditorActions(),{manifest:h}=s.useCustomVisual(((P=a==null?void 0:a.customCardPreferences)==null?void 0:P.url)||""),u=(N=h==null?void 0:h.visuals)==null?void 0:N.find(O=>{var _;return O.name===((_=a==null?void 0:a.customCardPreferences)==null?void 0:_.componentName)}),b=s.resolveMultiInputType(a,u)==="multiple",m=(u==null?void 0:u.minInputs)??((L=a==null?void 0:a.customCardPreferences)==null?void 0:L.minInputs)??1,g=(u==null?void 0:u.maxInputs)??((S=a==null?void 0:a.customCardPreferences)==null?void 0:S.maxInputs),w=C.useMemo(()=>s.getCustomVisualInputCards({frame:r,configCard:a,isMultiInputVisual:b}),[r,a,b]),E=b?w.filter(Boolean).length:r.cards.length,V=g?E<g:!0,A=E>Math.max(m||1,1),T=!!((F=a==null?void 0:a.customCardPreferences)!=null&&F.dataInputCardIds),v=(O,_)=>{O.dataTransfer.setData("tabIndex",_.toString())},D=O=>{O.preventDefault()},M=(O,_)=>{const Q=O.dataTransfer.getData("tabIndex");if(Q===_.toString())return;const B=Array.from(r.cards),[K]=B.splice(parseInt(Q),1);B.splice(_,0,K),d({...r,cards:B})};function f(O){const _=(a==null?void 0:a.id)===O;if(!(T&&_?r.cards.length>1:A))return;let B=r.cards.filter(te=>te.id!==O);b&&!T&&(B=s.reindexSlotCards(B));const K=B[0],se={...r,cards:B,activeCardId:K.id},H=O===i.id;H&&x(),d(se),o(K.id),c(K),H&&p(K)}function I(O,_){if(!V)return;const Q={...r,cards:[...r.cards,_],activeCardId:O.id};d(Q),o(_.id)}function j(){if(b&&(a==null?void 0:a.id)===i.id){k(i);return}const O={...i,id:s.v4(),title:`${i.title} Copy`,tabTitle:`${i.tabTitle||i.title} Copy`,customCardPreferences:i.customCardPreferences?{...i.customCardPreferences,slotIndex:b?Math.max(-1,...w.map((_,Q)=>s.getSlotIndexForCard(_,Q)))+1:i.customCardPreferences.slotIndex}:void 0};I(i,O)}function k(O){var H;if(!V)return;let _=b?"table":"bar",Q="Title",B="";const K=b?Math.max(-1,...w.map((te,z)=>s.getSlotIndexForCard(te,z)))+1:E;if(b&&((H=u==null?void 0:u.slots)!=null&&H.length)){const te=s.getSlotDefinitionForIndex(u.slots,K);te&&(_=s.getSlotExpectedChartType(te),Q=te.label||`Tab ${K+1}`,B=te.description||"")}const se={dataSource:O.dataSource,connectionId:O.connectionId,lastSelectedDatabase:O.lastSelectedDatabase,lastSelectedSchema:O.lastSelectedSchema,lastSelectedTable:O.lastSelectedTable,lastSelectedDatamodelId:O.lastSelectedDatamodelId,id:s.v4(),title:Q,tabTitle:Q,description:B,preferences:{onClickFilter:[{columnIndex:0,expression:""}]},type:_,sql:"",data:[],mode:"explorer",...b&&{customCardPreferences:{slotIndex:K}}};I(O,se)}function R(O,_){return O.cards.length===1&&(_.displayTab===!0||_.displayTab===void 0)||O.activeCardId!==_.id&&(_.displayTab===!0||_.displayTab===void 0)?null:e.jsx("div",{onClick:()=>{const Q=_.displayTab===void 0?!1:!_.displayTab;c({..._,displayTab:Q}),l({..._,displayTab:Q})},children:_.displayTab===!0||_.displayTab===void 0?e.jsx(s.Eye,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"}):e.jsx(s.EyeOff,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"})})}return e.jsx(s.TabsList,{className:"group ml-2 mr-6 justify-between overflow-x-auto",children:e.jsxs("div",{className:"flex items-center",children:[r.cards.map((O,_)=>{var H,te;const Q=b?s.getSlotIndexForCard(O,_):-1,B=b&&((H=u==null?void 0:u.slots)!=null&&H.length)&&Q>=0?s.getSlotDefinitionForIndex(u.slots,Q):null,K=B?(Array.isArray(B.expectedType)?B.expectedType[0]:B.expectedType)||"table":O.type,se=b&&((te=u==null?void 0:u.slots)==null?void 0:te.length)&&u.slots.every(z=>typeof z.position=="number"||typeof z.position=="string"&&!z.position.includes("+"));return e.jsxs(s.TabsTrigger,{draggable:!b,onDragStart:b?void 0:z=>v(z,_),onDragOver:b?void 0:D,onDrop:b?void 0:z=>M(z,_),className:"",value:O.id,children:[b&&B?e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground",children:s.getChartIconByType(K,"size-3.5")}),e.jsx("span",{children:B.label||`Tab ${Q+1}`})]})}),e.jsx(s.TooltipContent,{side:"bottom",className:"w-64 p-3 text-left",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-medium",children:B.label}),B.description&&e.jsx("p",{className:"whitespace-normal break-words text-xs text-muted-foreground",children:B.description}),e.jsxs("div",{className:"flex items-center gap-2 pt-1",children:[B.expectedType&&e.jsx("span",{className:"inline-flex items-center rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground",children:Array.isArray(B.expectedType)?B.expectedType.join(" / "):B.expectedType}),B.required&&e.jsx("span",{className:"inline-flex items-center rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground",children:"Required"})]})]})})]})}):e.jsxs(e.Fragment,{children:[R(r,O),e.jsx(s.Editable,{enabled:r.activeCardId===O.id,text:O.tabTitle||O.title,onSave:z=>{c({...i,tabTitle:z}),l({...i,tabTitle:z})},children:O.tabTitle||O.title},O.id)]}),r.activeCardId===O.id&&!se&&e.jsx(s.CopyPlus,{className:"ml-2 size-3.5 text-muted-foreground hover:text-foreground",onClick:z=>{z.stopPropagation(),j()}}),r.activeCardId===O.id&&(T&&(a==null?void 0:a.id)===O.id?r.cards.length>1:A)&&e.jsx(s.X,{className:"ml-2 size-3.5 text-muted-foreground hover:text-foreground",onClick:()=>f(O.id)})]},O.id)}),e.jsx(s.IconButton,{tooltip:"Add Card",className:"ml-1 h-8 px-2 hover:bg-muted-foreground/50",onClick:()=>k(i),disabled:!V,children:e.jsx(s.Plus,{className:"h-4 w-4"})}),b&&e.jsxs(s.Toggle,{pressed:t,onPressedChange:n,size:"sm",className:"ml-2 h-8 gap-1 px-2 data-[state=on]:bg-background data-[state=on]:text-foreground","aria-label":"Toggle preview",children:[t?e.jsx(s.EyeOff,{className:"h-4 w-4"}):e.jsx(s.Eye,{className:"h-4 w-4"}),e.jsx("span",{className:"text-xs",children:"Preview"})]})]})})}function rt(){var De,Oe,Te,be,Ce;const t=s.useEditorStore(ae=>ae.frame),n=s.useEditorStore(ae=>ae.card),[a,r]=C.useState(!1),i=C.useMemo(()=>s.findCustomVisualConfigCard(t,n),[t,n]),d=s.useEditorStore(ae=>ae.isSqlRunning);s.useEditorStore(ae=>ae.isDevMode);const{setFrame:o,setActiveTabCardId:c,setCard:l,setRunSql:x,mergeDraftsIntoCard:p,clearModeDrafts:h,initializeModeDrafts:u}=s.useEditorActions(),[y,b]=C.useState({}),[m,g]=C.useState(()=>new Set),{theme:w}=s.useTheme(),E=s.useDashboardStore(ae=>ae.themeStyle),{authToken:V}=s.useSemaphorContext(),A=s.getTokenParams(V==null?void 0:V.accessToken),T={mode:w||"system",colors:((Oe=(De=E==null?void 0:E.chart)==null?void 0:De.dataset)==null?void 0:Oe.backgroundColor)||[]},{getCard:v,manifest:D,isLoading:M}=s.useCustomVisual(((Te=i==null?void 0:i.customCardPreferences)==null?void 0:Te.url)||""),f=(be=i==null?void 0:i.customCardPreferences)==null?void 0:be.componentName,I=f?v(f):null,j=(Ce=D==null?void 0:D.visuals)==null?void 0:Ce.find(ae=>ae.name===f),k=s.resolveMultiInputType(i,j),R=a&&k==="multiple"&&!!i,P=C.useMemo(()=>s.getCustomVisualInputCards({frame:t,configCard:i,isMultiInputVisual:!0}).map(fe=>(fe==null?void 0:fe.id)===n.id?n:fe),[t,i,n]),N=C.useMemo(()=>s.buildSlotOrderedCards(P),[P]),L=C.useMemo(()=>{const ae=P.findIndex(fe=>(fe==null?void 0:fe.id)===n.id);return ae<0?-1:s.getSlotIndexForCard(n,ae)},[P,n]),S=C.useMemo(()=>!i||k!=="multiple"||L<0?n.type:s.getEffectiveCardTypeForSlot(n,L,j==null?void 0:j.slots)??n.type,[i,k,L,n,j==null?void 0:j.slots]),F=C.useMemo(()=>R?{...n,connectionId:void 0,dataSource:void 0,sql:"",python:"",config:void 0,queryConfig:void 0}:S!==n.type?{...n,type:S}:n,[n,S,R]),{data:O,isLoading:_,isFetching:Q,isError:B}=s.useDashboardCardQuery(F),K=C.useCallback((ae,fe)=>{const ge=s.normalizeMultiInputPayload(fe);b(Ie=>({...Ie,[ae]:ge}))},[]),se=C.useCallback((ae,fe)=>{g(ge=>{const Ie=new Set(ge);return fe?Ie.add(ae):Ie.delete(ae),Ie})},[]),H=m.size>0,te=s.useInteractionStore(ae=>ae.interactionStates),z=s.useDashboardStore(ae=>{var fe;return(fe=ae.dashboard)==null?void 0:fe.id}),W=s.useDashboardStore(ae=>ae.dashboard.filters),le=s.useDashboardStore(ae=>ae.filterValues),X=s.useDashboardStore(ae=>ae.selectedSheetId),ne=s.useDashboardStore(ae=>ae.inlineFilterValuesMap[(i==null?void 0:i.id)||""]),ue=C.useMemo(()=>i?s.buildInlineFilterNodes({card:i,sheetId:X||"",inlineFilterValues:ne}):[],[i,X,ne]),{cardFilters:ee,cardFilterValues:Ne}=C.useMemo(()=>i?s.calculateContextAwareFilters({card:i,interactionStates:te,currentDashboardId:z,filters:W,filterValues:le,selectedSheetId:X}):{cardFilters:[],cardFilterValues:[]},[i,te,z,W,le,X]);function q(ae){const fe=t.cards.find(ge=>ge.id===ae);fe&&(p(),Z(ae),c(ae),h(),u(fe))}function Z(ae){const fe=s.useEditorStore.getState().card,ge=s.useEditorStore.getState().frame,Ie={...ge,cards:ge.cards.map(pe=>pe.id===fe.id?fe:pe),activeCardId:ae};o(Ie);const ve=Ie.cards.find(pe=>pe.id===ae);ve.sql&&x(!0),l(ve)}function ce(){if(M)return e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading manifest"})});if(!I)return e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Select a component to preview the multi-input visual."});const fe=N.map((ge,Ie)=>s.getEffectiveCardTypeForSlot(ge,Ie,j==null?void 0:j.slots));return e.jsxs("div",{className:"relative flex h-full flex-col pl-2 pr-4",children:[P.map((ge,Ie)=>{if(!ge)return null;const ve=s.getSlotIndexForCard(ge,Ie),pe=s.getEffectiveCardTypeForSlot(ge,ve,j==null?void 0:j.slots);return e.jsx(s.MultiInputEmptyRenderer,{onLoadingStatus:se,onDataChange:K,card:ge,effectiveCardType:pe},`${ge.id}-${ve}`)}),H&&e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading preview"})}),e.jsx("div",{className:s.cn("flex h-full min-h-0 flex-1 flex-col gap-2",H&&"opacity-50"),children:e.jsx(C.Suspense,{fallback:e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted"})}),children:e.jsx(I,{editing:!0,...s.buildMultiInputCustomVisualProps({configCard:i,slotOrderedCards:N,slotTypes:fe,multiInputData:y,params:A,theme:T,filters:ee,filterValues:[...Ne||[],...ne||[]],inlineFilters:ue})})})})]})}function je(){var ae;return R?ce():n.type==="kpi"?_||Q?e.jsx("div",{className:"z-50 flex h-full items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsxs("div",{className:"w-1/2 space-y-3",children:[e.jsx("div",{className:"rounded-md border border-border",children:e.jsx(s.KPICard,{card:n,data:O==null?void 0:O.records,isPending:_||Q,isError:B,comparisonMetadata:(ae=O==null?void 0:O.metadata)==null?void 0:ae.comparisonMetadata})}),s.isCardSummaryVisibleOnCard(n)&&e.jsx(s.CardSummary,{card:n,mode:"editor"})]})}):n.type==="text"?_||Q?e.jsx("div",{className:"z-50 flex h-full items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("div",{className:"w-1/2 rounded-md border",children:e.jsx(s.ScrollArea,{className:"mx-3 my-6 h-[300px] overflow-y-auto break-words px-3",children:e.jsx(s.TextCard,{isLoading:d,card:n,data:O==null?void 0:O.records})})})}):e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Aa,{className:"grow border-none shadow-none"})})}return e.jsxs(s.Tabs,{onValueChange:q,value:t.activeCardId,className:"flex grow flex-col gap-2",children:[R?e.jsx("div",{className:"mt-0 grow",children:je()}):t.cards.map(ae=>e.jsx(s.TabsContent,{className:"mt-0 grow focus-visible:ring-0 focus-visible:ring-offset-0",value:ae.id,children:je()},ae.id)),e.jsx(rr,{isPreviewMode:R,onPreviewToggle:r,configCard:i})]})}function ia({children:t,visualAsideControl:n}){var Q;const a=s.useEditorStore(B=>B.frame),r=s.useEditorStore(B=>B.card),i=r.type==="table"||r.type==="detailTable",d=s.useEditorStore(B=>B.isDevMode),o=s.useEditorStore(B=>B.isShowingVisual),c=s.useEditorStore(B=>B.actions.setIsShowingVisual),l=s.useDashboardStore(B=>B.isVisualEditing),{isConsoleMode:x}=s.useDashboardPreferences(),p=s.useEditorStore(B=>B.pythonStdOut),h=s.useEditorStore(B=>B.actions.setRunSql),u=Ae.useEffectiveEditorCardType(),{setFrame:y,setCard:b,setActiveTabCardId:m,setCardPreferences:g,mergeDraftsIntoCard:w,clearModeDrafts:E,initializeModeDrafts:V}=s.useEditorActions(),A=C.useMemo(()=>u!==r.type?{...r,type:u}:r,[r,u]),{data:T,isLoading:v,isFetching:D,errorMessage:M,errorSql:f,refetch:I,pagination:j}=s.useDashboardCardQuery(A),{handleDebugWithAssistant:k}=Da(M,f),R=C.useMemo(()=>(T==null?void 0:T.records)||[],[T==null?void 0:T.records]),[P,N]=C.useState(!1);C.useEffect(()=>{D||N(!1)},[D]),C.useEffect(()=>{i&&!o&&c(!0)},[i,o,c]);function L(B,K){var te,z;const se={...r,paginationConfig:{page:B+1,pageSize:K}};b(se);const H={...a,cards:a.cards.map(W=>W.id===r.id?se:W)};y(H),r.sql&&((z=(te=r.preferences)==null?void 0:te.tablePrefs)!=null&&z.enableDevModePagination)&&h(!0)}function S(B){var te,z,W,le,X;const K=s.sortStateToSortByColumns(B,(te=r.config)==null?void 0:te.metricColumns,(z=r.config)==null?void 0:z.groupByColumns,(W=r.config)==null?void 0:W.detailColumns),se={...r,config:{...r.config||{},sortByColumns:K}};b(se);const H={...a,cards:a.cards.map(ne=>ne.id===r.id?se:ne)};y(H),r.sql&&((X=(le=r.preferences)==null?void 0:le.tablePrefs)!=null&&X.enableDevModePagination)&&h(!0)}function F(){var K;const B=JSON.stringify(T==null?void 0:T.records,null,2);typeof navigator>"u"||!((K=navigator.clipboard)!=null&&K.writeText)||navigator.clipboard.writeText(B).catch(se=>{console.error("Failed to copy JSON",se)})}function O(){const B=JSON.stringify(T==null?void 0:T.records,null,2),K=new Blob([B],{type:"application/json"}),se=URL.createObjectURL(K),H=document.createElement("a");H.href=se,H.download=`${r.title}.json`,H.click()}function _(){const K=[Object.keys(T==null?void 0:T.records.reduce((z,W)=>({...z,...W}),{})).join(","),...((T==null?void 0:T.records)||[]).map(z=>Object.values(z).join(","))].join(`
187
187
  `),se=new Blob([K],{type:"text/csv"}),H=URL.createObjectURL(se),te=document.createElement("a");te.href=H,te.download=`${r.title}.csv`,te.click()}return r?e.jsxs("div",{className:"relative isolate flex h-full flex-col py-2 pb-3",children:[e.jsxs("div",{className:"z-10 mb-0 flex min-h-10 items-center justify-end gap-2 pl-2 pr-6",children:[o&&e.jsx("div",{className:"flex grow items-center",children:e.jsxs("div",{className:"flex items-center gap-3",children:[(n==null?void 0:n.show)&&e.jsx(s.IconButton,{tooltip:n.isOpen?"Hide Visual Aside":"Show Visual Aside",className:"h-9 w-9 px-0",buttonProps:{variant:"outline"},onClick:n.onToggle,children:n.isOpen?e.jsx(s.ChevronLeft,{className:"size-4"}):e.jsx(s.ChevronRight,{className:"size-4"})}),e.jsx("div",{className:"w-[200px]",children:e.jsx(it,{variant:d?"secondary":"ghost"})})]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[t,e.jsx(s.IconButton,{tooltip:"Refresh",disabled:v||D,onClick:()=>{N(!0),I()},children:e.jsx(s.RefreshCcw,{className:s.cn("h-4 w-4",{"animate-spin":P})})}),e.jsx(La,{showInlineFilters:!1,showDisplayOptions:!1}),(d||x)&&e.jsxs(e.Fragment,{children:[!i&&e.jsx(ir,{}),i&&e.jsx(or,{})]}),e.jsxs(s.DropdownMenu,{modal:!1,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"More Options",className:"h-8 w-8 px-0","aria-label":"More options",children:e.jsx(s.EllipsisVertical,{className:"size-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-64",children:[e.jsx(s.DropdownMenuLabel,{children:"More Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"px-1 py-1",children:[!["table","detailTable","custom"].includes(r.type)&&l&&e.jsx(Zn,{triggerVariant:"menu",className:"w-full"}),e.jsx(dt,{triggerVariant:"menu",className:"w-full"}),e.jsx(ct,{triggerVariant:"menu",className:"w-full"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.Button,{variant:"ghost",className:"h-8 w-full justify-start gap-2 px-2 text-sm",onClick:_,children:[e.jsx(s.Download,{className:"h-4 w-4"}),e.jsx("span",{children:"Download CSV"})]}),e.jsxs(s.Button,{variant:"ghost",className:"h-8 w-full justify-start gap-2 px-2 text-sm",onClick:O,children:[e.jsx(dn,{className:"h-4 w-4"}),e.jsx("span",{children:"Download JSON"})]}),e.jsxs(s.Button,{variant:"ghost",className:"h-8 w-full justify-start gap-2 px-2 text-sm",onClick:F,children:[e.jsx(s.Copy,{className:"h-4 w-4"}),e.jsx("span",{children:"Copy JSON"})]})]})]})]})]})]}),o?e.jsx(rt,{}):e.jsxs(s.ResizablePanelGroup,{className:"py-2 pl-2 pr-6",direction:"horizontal",children:[p&&e.jsxs(e.Fragment,{children:[e.jsx(s.ResizablePanel,{id:"1",order:1,defaultSize:30,minSize:10,className:"relative flex h-full min-h-0 w-full flex-1 basis-0",children:p&&e.jsx(lr,{})}),e.jsx(s.ResizableHandle,{})]}),e.jsxs(s.ResizablePanel,{id:"2",order:2,minSize:10,className:s.cn("relative flex h-full min-h-0 w-full flex-1 basis-0",{"py-2 pl-2 pr-6":p}),children:[(T==null?void 0:T.records)&&(T==null?void 0:T.records.length)>0&&e.jsx(s.TableVisual,{card:r,data:R,comparisonMetadata:(Q=T==null?void 0:T.metadata)==null?void 0:Q.comparisonMetadata,paginationMetadata:j,onPaginationChange:L,onSortChange:S,isLoading:v||D}),M&&e.jsx("div",{className:"flex h-full flex-col items-start justify-start overflow-auto p-4",children:e.jsx(ot,{error:M,errorSql:f||r.sql||r.python,onDebugWithAssistant:k,showFeedbackButton:!1})})]})]})]}):e.jsx(e.Fragment,{children:"No Active Card"})}function lr(){const t=s.useEditorStore(a=>a.pythonStdOut);if(!t)return null;const n=t.replace(/\n/g,"<br>");return e.jsxs("div",{className:"relative flex w-full flex-col",children:[e.jsx("div",{className:"sticky top-0 flex max-h-11 min-h-11 grow items-center font-mono text-xs font-semibold text-foreground/70",children:"Python Output"}),e.jsxs(s.ScrollArea,{className:"overflow-y-auto pt-1 font-mono text-xs text-foreground/90",children:[e.jsx("div",{dangerouslySetInnerHTML:{__html:n}}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function or(){var d,o,c,l,x,p;const t=s.useEditorStore(h=>h.card),n=s.useEditorStore(h=>h.actions.setCard),a=s.useEditorStore(h=>h.actions.setRunSql),r=s.useEditorStore(h=>h.actions.setCardPreferences),i=s.useEditorStore(h=>h.actions.updateCardInFrame);return t.type!=="table"&&t.type!=="detailTable"?null:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"dev-pagination",checked:((o=(d=t.preferences)==null?void 0:d.tablePrefs)==null?void 0:o.enableDevModePagination)??!1,onCheckedChange:h=>{var u;r({...t.preferences,tablePrefs:{...(u=t.preferences)==null?void 0:u.tablePrefs,enableDevModePagination:h}})}}),e.jsx(s.Label,{htmlFor:"dev-pagination",className:"cursor-pointer text-sm",children:"Paginate"}),((l=(c=t.preferences)==null?void 0:c.tablePrefs)==null?void 0:l.enableDevModePagination)&&e.jsxs(s.Select,{value:String(((p=(x=t.preferences)==null?void 0:x.tablePrefs)==null?void 0:p.pageSize)||50),onValueChange:h=>{var b,m,g;const u=Number(h),y={...t,preferences:{...t.preferences,tablePrefs:{...(b=t.preferences)==null?void 0:b.tablePrefs,pageSize:u}},paginationConfig:{page:1,pageSize:u}};n(y),i(y),t.sql&&((g=(m=t.preferences)==null?void 0:m.tablePrefs)!=null&&g.enableDevModePagination)&&a(!0)},children:[e.jsx(s.SelectTrigger,{className:"h-8 w-20",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"10",children:"10"}),e.jsx(s.SelectItem,{value:"25",children:"25"}),e.jsx(s.SelectItem,{value:"50",children:"50"}),e.jsx(s.SelectItem,{value:"100",children:"100"}),e.jsx(s.SelectItem,{value:"500",children:"500"}),e.jsx(s.SelectItem,{value:"1000",children:"1000"})]})]})]})}function ir(){const t=s.useEditorStore(a=>a.isShowingVisual),n=s.useEditorStore(a=>a.actions.setIsShowingVisual);return e.jsxs(s.Toggle,{pressed:!t,onPressedChange:a=>{n(!a)},variant:"default",size:"sm",className:"h-8 gap-2 border border-transparent text-foreground/80 hover:bg-accent hover:text-accent-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",children:[e.jsx(s.Table2,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm",children:"Results"})]})}function Pe({value:t,onCommit:n,type:a="text",placeholder:r,className:i}){const[d,o]=C.useState(t),c=C.useRef(!1);C.useEffect(()=>{o(t)},[t]);const l=()=>{if(c.current){c.current=!1;return}d!==t&&n(d)},x=p=>{if(p.key==="Enter"){p.currentTarget.blur();return}p.key==="Escape"&&(c.current=!0,o(t),p.currentTarget.blur())};return e.jsx(s.Input,{type:a,placeholder:r,value:d,onChange:p=>o(p.target.value),onBlur:l,onKeyDown:x,className:i})}function Ze({defaultValue:t,label:n,options:a,value:r,onValueChange:i,className:d,icon:o,showPlaceholderLabel:c=!0}){return e.jsxs(s.Select,{defaultValue:t,value:r,onValueChange:i,children:[e.jsx(s.SelectTrigger,{className:s.cn("w-full focus:ring-0 focus:ring-offset-0",d),children:e.jsxs("div",{className:"flex items-center gap-2",children:[o&&e.jsx("span",{children:o}),c&&e.jsx(s.SelectValue,{placeholder:n})]})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:n}),a.map(l=>e.jsx(s.SelectItem,{value:l.value,children:l.label},l.value))]})})]})}function cr(t,n){return s.getSlotDefinitionForIndex(t,n)||null}function vs(t){if(typeof t=="number")return`Tab ${t+1}`;const n=t.match(/^(\d+)-(\d+)$/);if(n){const[,r,i]=n;return`Tabs ${Number(r)+1}-${Number(i)+1}`}const a=t.match(/^(\d+)\+$/);return a?`Tabs ${Number(a[1])+1}+`:`Tab ${t}`}function dr(t){return t?Array.isArray(t)?t:[t]:[]}function Ws(t){var r,i;if(!t)return!1;if(t.type==="text")return!!((r=t.description)!=null&&r.trim());const n=!!((i=t.sql)!=null&&i.trim()),a=s.hasValidCardConfig(t.config);return n||a}function ur({slots:t,cards:n,minInputs:a}){const r=[],i=n.filter(Boolean).length;return a&&i<a&&r.push({type:"too-few-inputs",message:`This visual requires at least ${a} tab${a===1?"":"s"}.`}),!t||t.length===0||(t.forEach(d=>{if(!d.required)return;if(typeof d.position=="number"){const l=n[d.position];Ws(l)||r.push({type:"missing-required",message:`${vs(d.position)} ("${d.label}") is required but has no data configured.`});return}const o=d.position.match(/^(\d+)-(\d+)$/);if(o){const[,l,x]=o.map(Number);for(let p=l;p<=x;p+=1){const h=n[p];if(!Ws(h)){r.push({type:"missing-required",message:`${vs(p)} ("${d.label}") is required but has no data configured.`});break}}return}const c=d.position.match(/^(\d+)\+$/);if(c){const l=Number(c[1]);if(n.length<=l){r.push({type:"missing-required",message:`${vs(l)} ("${d.label}") is required but has no data configured.`});return}for(let x=l;x<n.length;x+=1){const p=n[x];if(!Ws(p)){r.push({type:"missing-required",message:`${vs(x)} ("${d.label}") is required but has no data configured.`});break}}}}),n.forEach((d,o)=>{if(!d)return;const c=cr(t,o);if(!c||!c.expectedType)return;const l=dr(c.expectedType);l.length!==0&&(l.includes(d.type)||r.push({type:"wrong-type",message:`${vs(o)} ("${c.label}") expects ${l.join(", ")}, but is configured as ${d.type}.`}))})),r}const mr={table:({children:t})=>e.jsx("table",{className:"my-3 w-full border-collapse overflow-hidden rounded-md border border-border text-sm",children:t}),thead:({children:t})=>e.jsx("thead",{className:"bg-muted",children:t}),th:({children:t})=>e.jsx("th",{className:"border border-border px-3 py-2 text-left font-medium",children:t}),td:({children:t})=>e.jsx("td",{className:"border border-border px-3 py-2",children:t}),code:({children:t,className:n})=>(n==null?void 0:n.includes("language-"))?e.jsx("pre",{className:"my-3 overflow-x-auto rounded-md bg-muted p-3 text-xs",children:e.jsx("code",{children:t})}):e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 text-xs",children:t}),pre:({children:t})=>e.jsx(e.Fragment,{children:t})};function Ma(){var k,R,P;const t=s.useEditorStore(N=>N.card.customCardPreferences),{data:n}=s.usePluginQuery(),a=(n==null?void 0:n.plugins)||[],r=s.useEditorStore(N=>N.card),i=s.useEditorStore(N=>N.frame),{setCustomCardPreferences:d}=s.useEditorActions(),o=C.useMemo(()=>s.findCustomVisualConfigCard(i,r),[i,r]),c=o==null?void 0:o.customCardPreferences,{components:l,manifest:x}=s.useCustomVisual((c==null?void 0:c.url)||(t==null?void 0:t.url)||""),p=(k=x==null?void 0:x.visuals)==null?void 0:k.find(N=>N.name===((c==null?void 0:c.componentName)||(t==null?void 0:t.componentName))),u=s.resolveMultiInputType(o||r,p)==="multiple",y=!!o&&o.id===r.id,b=(p==null?void 0:p.minInputs)??((R=o==null?void 0:o.customCardPreferences)==null?void 0:R.minInputs),m=(p==null?void 0:p.maxInputs)??((P=o==null?void 0:o.customCardPreferences)==null?void 0:P.maxInputs),g=C.useMemo(()=>s.getCustomVisualInputCards({frame:i,configCard:o||r,isMultiInputVisual:u}),[i,o,r,u]),w=C.useMemo(()=>s.buildSlotOrderedCards(g),[g]),E=C.useMemo(()=>w.map((N,L)=>{if(!N)return null;const S=s.getSlotIndexForCard(N,L),F=s.getEffectiveCardTypeForSlot(N,S,p==null?void 0:p.slots);return{...N,type:F??N.type}}),[w,p==null?void 0:p.slots]),V=C.useMemo(()=>ur({slots:p==null?void 0:p.slots,cards:E,minInputs:b}),[p==null?void 0:p.slots,E,b]),A=C.useMemo(()=>{const N=g.findIndex(L=>(L==null?void 0:L.id)===r.id);return N<0?-1:s.getSlotIndexForCard(r,N)},[g,r]);function T(N){if(typeof N=="number")return`Tab ${N+1}`;const L=N.match(/^(\d+)-(\d+)$/);if(L){const[,F,O]=L;return`Tabs ${Number(F)+1}-${Number(O)+1}`}const S=N.match(/^(\d+)\+$/);return S?`Tabs ${Number(S[1])+1}+`:`Tab ${N}`}function v(N){return N?(Array.isArray(N)?N:[N]).join(", "):null}function D(N,L,S=[],F="",O,_,Q){const B=M({key:L,defaultValue:F,settingsValue:_,sourceCard:Q});return N==="input"?e.jsx(Pe,{className:`h-8 w-full ${s.removeRing}`,value:String(B??""),onCommit:K=>{f({key:L,value:K,settingsField:O,settingsValue:_,sourceCard:Q})}},L):N==="select"?e.jsx(Ze,{className:"h-8 w-full",label:"",options:S,value:String(B!==void 0?B:F??""),onValueChange:K=>{f({key:L,value:K,settingsField:O,settingsValue:_,sourceCard:Q})}}):null}function M({key:N,defaultValue:L,settingsValue:S,sourceCard:F}){const O=S==null?void 0:S[N];return O!==void 0?O:N==="title"&&(F==null?void 0:F.title)!==void 0?F.title:N==="description"&&(F==null?void 0:F.description)!==void 0?F.description:L}function f({key:N,value:L,settingsField:S,settingsValue:F,sourceCard:O}){const _={...F||{}},Q=N==="title"&&(O==null?void 0:O.title)!==void 0,B=N==="description"&&(O==null?void 0:O.description)!==void 0;Q&&L===String((O==null?void 0:O.title)??"")||B&&L===String((O==null?void 0:O.description)??"")?delete _[N]:_[N]=L,d({...t||{},[S]:_})}function I({settingsSchema:N,settingsField:L,settingsValue:S,sourceCard:F,headerLabel:O}){const _=Object.entries(N||{});return e.jsxs("div",{className:"space-y-3",children:[O&&e.jsx(s.Label,{children:O}),_.map(([Q,B])=>{var K;return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{children:B.title}),((K=B.docs)==null?void 0:K.description)&&e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Info,{className:"h-3.5 w-3.5 cursor-help text-muted-foreground"})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-xs",children:e.jsx("p",{className:"text-xs",children:B.docs.description})})]})})]}),D(B.ui,Q,B.options,B.defaultValue,L,S,F)]},Q)})]})}function j(){return e.jsxs(e.Fragment,{children:[u&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Slot Guide"}),e.jsx("div",{className:"space-y-3 rounded-md border border-border bg-muted/40 px-3 py-2 text-xs",children:p!=null&&p.slots&&p.slots.length>0?e.jsx("div",{className:"space-y-3",children:p.slots.map((N,L)=>e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2 text-foreground",children:[e.jsx("span",{className:"font-medium",children:T(N.position)}),e.jsx("span",{className:"text-muted-foreground",children:"•"}),e.jsx("span",{className:"font-medium",children:N.label})]}),N.description&&e.jsx("p",{className:"text-muted-foreground",children:N.description}),e.jsxs("div",{className:"flex flex-wrap gap-2 text-muted-foreground",children:[v(N.expectedType)&&e.jsxs("span",{children:["Expected: ",v(N.expectedType)]}),N.required&&e.jsx("span",{children:"Required"})]})]},`${N.label}-${L}`))}):e.jsxs("div",{className:"space-y-1 text-muted-foreground",children:[e.jsx("p",{children:"This visual renders all tabs in a flexible layout. Add as many tabs as needed."}),(b||m)&&e.jsxs("p",{children:[b?`Min ${b} tabs`:"",b&&m?" • ":"",m?`Max ${m} tabs`:""]})]})})]}),u&&V.length>0&&e.jsx(s.Alert,{className:"mt-3 border-yellow-500/40 bg-yellow-500/10 text-yellow-900 dark:text-yellow-100",children:e.jsx(s.AlertDescription,{children:e.jsx("ul",{className:"list-disc space-y-1 pl-4 text-xs",children:V.map((N,L)=>e.jsx("li",{children:N.message},`${N.type}-${L}`))})})}),p&&!u&&p.settings&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"px-2",children:I({settingsSchema:p.settings,settingsField:"settings",settingsValue:t==null?void 0:t.settings,sourceCard:r})})}),p&&u&&(p.settings||p.slotSettings)&&e.jsxs("div",{className:"mt-4 space-y-4",children:[y&&p.settings&&e.jsx("div",{className:"px-2",children:I({settingsSchema:p.settings,settingsField:"settings",settingsValue:t==null?void 0:t.settings,sourceCard:o||r,headerLabel:"Global Settings"})}),p.slotSettings&&e.jsx("div",{className:"px-2",children:I({settingsSchema:p.slotSettings,settingsField:"slotSettings",settingsValue:t==null?void 0:t.slotSettings,sourceCard:r,headerLabel:(()=>{const N=r.tabTitle||r.title,L=A>=0?A:0,S=y?"Slot 0":`Slot ${L}`;return N?`${S}: ${N} Settings`:`${S} Settings`})()})})]})]})}return e.jsxs(s.Accordion,{type:"multiple",defaultValue:["component-settings"],className:"",children:[e.jsxs(s.AccordionItem,{value:"plugin-settings",children:[e.jsx(s.AccordionTrigger,{children:"Plugin"}),e.jsx(s.AccordionContent,{children:e.jsxs("div",{className:"space-y-4 text-sm",children:[e.jsx("div",{className:"space-y-2",children:e.jsxs("div",{className:"space-y-4",children:[(!u||y)&&e.jsx(Ze,{icon:e.jsx(ya,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Plugin",options:a,value:(c==null?void 0:c.url)||"",onValueChange:N=>d({...t||{url:"",componentName:""},url:N})}),u&&!y&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Switch to the config tab to change the plugin or component."})]})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&t&&(!u||y)&&e.jsx(e.Fragment,{children:l&&e.jsx(Ze,{icon:e.jsx(cn,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Component",options:(l==null?void 0:l.map(N=>({value:N.name,label:N.name})))||[],value:t.componentName||"",onValueChange:N=>{var F;const L=(F=x==null?void 0:x.visuals)==null?void 0:F.find(O=>O.name===N),S=l==null?void 0:l.find(O=>O.name===N);d({...t,componentName:N,visualType:(L==null?void 0:L.visualType)||(S==null?void 0:S.type)||"single",minInputs:L==null?void 0:L.minInputs,maxInputs:L==null?void 0:L.maxInputs,pluginChartType:L==null?void 0:L.chartType})}})})]})})]}),((c==null?void 0:c.componentName)||(t==null?void 0:t.componentName))&&e.jsxs(s.AccordionItem,{className:"border-none",value:"component-settings",children:[e.jsx(s.AccordionTrigger,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{children:(p==null?void 0:p.name)||"Settings"}),(p==null?void 0:p.docs)&&e.jsxs(s.HoverCard,{openDelay:0,closeDelay:100,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,onClick:N=>N.stopPropagation(),children:e.jsx(s.Info,{className:"h-3.5 w-3.5 cursor-help text-muted-foreground transition-colors hover:text-foreground"})}),e.jsx(s.HoverCardContent,{side:"right",align:"start",className:"max-h-[40vh] w-[500px] overflow-y-auto text-left",children:e.jsxs("div",{className:"space-y-4 text-left",children:[p.docs.description&&e.jsx("p",{className:"text-sm text-muted-foreground",children:p.docs.description}),p.docs.dataSchema&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Data Schema"}),e.jsx("div",{className:"prose prose-sm dark:prose-invert prose-pre:bg-muted prose-pre:text-xs max-w-none",children:e.jsx(s.Markdown,{remarkPlugins:[s.remarkGfm],components:mr,children:p.docs.dataSchema})})]}),(()=>{var L;const N=(L=p.docs)==null?void 0:L.useCases;return!N||N.length===0?null:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Use Cases"}),e.jsx("ul",{className:"space-y-1 text-sm",children:N.map((S,F)=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"mt-1 text-primary",children:"•"}),e.jsx("span",{children:S})]},F))})]})})()]})})]})]})}),e.jsx(s.AccordionContent,{children:j()})]})]})}function xr({colorRanges:t,setColorRanges:n}){const a={start:-1/0,end:100,color:""};function r(o,c,l){const x=[...t];x[o]={...x[o],[c]:l},n(x)}function i(o){const c=[...t];c.splice(o,1),n(c)}function d(){n([...t,a])}return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{children:"Color Range"}),e.jsx(s.Button,{onClick:d,variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.Plus,{className:"size-3"})})]}),t.map((o,c)=>e.jsxs("div",{className:"flex items-center gap-2 px-2",children:[e.jsx(s.Input,{onChange:l=>r(c,"start",l.target.value),value:o.start,className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx("span",{children:"-"}),e.jsx(s.Input,{value:o.end,onChange:l=>r(c,"end",l.target.value),className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx(s.Input,{onChange:l=>r(c,"color",l.target.value),value:o.color,className:s.cn(`h-7 min-w-14 p-0 ${s.removeRing}`),type:"color",list:"presetColors"}),e.jsxs("datalist",{id:"presetColors",children:[e.jsx("option",{children:s.colors.green[600]}),e.jsx("option",{children:s.colors.red[500]}),e.jsx("option",{children:s.colors.yellow[400]}),e.jsx("option",{children:s.colors.orange[500]})]}),e.jsx(s.Button,{onClick:()=>i(c),variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.X,{className:"size-3"})})]},c))]})}function hr(){var p,h,u,y,b;const t=s.useEditorStore(m=>m.card.preferences),n=s.useEditorStore(m=>m.actions.setCardPreferences),a=s.useEditorStore(m=>m.card),r=s.hasValidCardConfig(a.config),i=s.useEditorStore(m=>m.actions.setNumberFormat);s.useEditorStore(m=>{var g,w;return(w=(g=m.card.preferences)==null?void 0:g.formatNumber)==null?void 0:w.decimalPlaces});const d=s.useEditorStore(m=>{var g,w;return(w=(g=m.card.preferences)==null?void 0:g.formatNumber)==null?void 0:w.locale}),o=s.useEditorStore(m=>{var g,w;return(w=(g=m.card.preferences)==null?void 0:g.formatNumber)==null?void 0:w.currency});s.useEditorStore(m=>m.actions.setFilterOnClickField);const c=s.useEditorStore(m=>{var g,w;return(w=(g=m.card.preferences)==null?void 0:g.formatNumber)==null?void 0:w.colorRanges})||[],l=s.useEditorStore(m=>m.actions.setColorRanges),x=[...new Set(s.LOCALE_CURRENCY_PAIRS.map(m=>m.currency))];return e.jsxs("div",{children:[!r&&e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(s.Checkbox,{checked:!!((p=t==null?void 0:t.formatNumber)!=null&&p.enabled),onCheckedChange:m=>{n({...t,formatNumber:{...t==null?void 0:t.formatNumber,enabled:m}})}}),e.jsx(s.Label,{children:"Format Number"})]}),(((h=t==null?void 0:t.formatNumber)==null?void 0:h.enabled)===!0||r)&&e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("div",{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Locale"}),e.jsxs(s.Select,{value:d||"none",onValueChange:m=>{var g,w,E;return i(((g=t==null?void 0:t.formatNumber)==null?void 0:g.decimalPlaces)||0,((w=t==null?void 0:t.formatNumber)==null?void 0:w.currency)||"",m,((E=t==null?void 0:t.formatNumber)==null?void 0:E.suffix)||"")},children:[e.jsx(s.SelectTrigger,{className:"col-span-6 h-8 w-full focus:ring-1 focus:ring-offset-0",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:"Format"}),e.jsx(s.SelectItem,{value:"none",children:"Auto"},"none"),s.LOCALE_CURRENCY_PAIRS.map(m=>e.jsx(s.SelectItem,{value:m.locale,children:m.locale},m.locale))]})})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Currency"}),e.jsxs(s.Select,{value:o||"none",onValueChange:m=>{var g,w,E;console.log("currency",m),i(((g=t==null?void 0:t.formatNumber)==null?void 0:g.decimalPlaces)||0,m==="none"?"":m,((w=t==null?void 0:t.formatNumber)==null?void 0:w.locale)||"",((E=t==null?void 0:t.formatNumber)==null?void 0:E.suffix)||"")},children:[e.jsx(s.SelectTrigger,{className:"col-span-6 h-8 w-full focus:ring-1 focus:ring-offset-0",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:"Currency"}),e.jsx(s.SelectItem,{value:"none",children:"None"},"none"),x.map(m=>e.jsx(s.SelectItem,{value:m,children:m},m))]})})]})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Decimals"}),e.jsxs(s.Select,{value:((y=(u=t==null?void 0:t.formatNumber)==null?void 0:u.decimalPlaces)==null?void 0:y.toString())||"0",onValueChange:m=>{var g,w,E;return i(Number(m),((g=t==null?void 0:t.formatNumber)==null?void 0:g.currency)||"",((w=t==null?void 0:t.formatNumber)==null?void 0:w.locale)||"",((E=t==null?void 0:t.formatNumber)==null?void 0:E.suffix)||"")},children:[e.jsx(s.SelectTrigger,{className:"col-span-3 h-8 w-full focus:ring-1 focus:ring-offset-0",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:["0","1","2","3","4"].map(m=>e.jsx(s.SelectItem,{value:m,children:m},m))})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Suffix"}),e.jsx(s.Input,{value:((b=t==null?void 0:t.formatNumber)==null?void 0:b.suffix)||"",className:"h-8 font-mono text-xs focus-visible:ring-0 focus-visible:ring-ring focus-visible:ring-offset-0",placeholder:"K, M, B, %",onChange:m=>{var g,w,E;return i(((g=t==null?void 0:t.formatNumber)==null?void 0:g.decimalPlaces)||0,((w=t==null?void 0:t.formatNumber)==null?void 0:w.currency)||"",((E=t==null?void 0:t.formatNumber)==null?void 0:E.locale)||"",m.target.value)}})]})]})]})}),e.jsx(s.Separator,{className:"my-3"}),e.jsx(xr,{colorRanges:c,setColorRanges:l})]})]})}const pr={combo:{label:"Combo Chart",query:"SELECT x-axis, metric-1, metric-2, ... FROM table",fields:[{name:"x-axis",type:"category",description:"dimension"},{name:"metric-1, metric-2",type:"number",description:"can be bar, line, or area"}],description:"Combo charts allow mixing bar and line series with optional dual Y-axis for metrics with different scales.",docsUrl:"https://docs.semaphor.cloud/docs/charts/combo"},area:{label:"Area Chart",query:"SELECT x-axis, y-axis-1, y-axis-2, ... FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., date, city"},{name:"Y-axis",type:"number",description:"e.g., sales, population"}],description:"Area charts display quantitative data with filled areas under the line.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bar-line-area"},stackedArea:{label:"Stacked Area Chart",query:"SELECT x-axis, y-axis-1, y-axis-2, ... FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., date, city"},{name:"Y-axis",type:"number",description:"e.g., sales, population"}],description:"Stacked area charts show how multiple series contribute to a total over time.",docsUrl:"https://docs.semaphor.cloud/docs/charts/stacked"},bar:{label:"Bar Chart",query:"SELECT x-axis, y-axis-1, y-axis-2, ... FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., city, product"},{name:"Y-axis",type:"number",description:"e.g., sales, count"}],description:"Bar charts compare values across categories using horizontal or vertical bars.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bar-line-area"},line:{label:"Line Chart",query:"SELECT x-axis, y-axis-1, y-axis-2, ... FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., date, month"},{name:"Y-axis",type:"number",description:"e.g., revenue, count"}],description:"Line charts show trends over time or continuous data.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bar-line-area"},stackedBar:{label:"Stacked Bar Chart",query:"SELECT x-axis, stack-by, y-axis FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., month"},{name:"Stack-by",type:"category",description:"e.g., product type"},{name:"Y-axis",type:"number",description:"e.g., sales"}],description:"Stacked bar charts show how parts contribute to a whole across categories.",docsUrl:"https://docs.semaphor.cloud/docs/charts/stacked"},stackedLine:{label:"Stacked Line Chart",query:"SELECT x-axis, stack-by, y-axis FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., date"},{name:"Stack-by",type:"category",description:"e.g., region"},{name:"Y-axis",type:"number",description:"e.g., revenue"}],description:"Stacked line charts show cumulative trends over time.",docsUrl:"https://docs.semaphor.cloud/docs/charts/stacked"},pie:{label:"Pie Chart",query:"SELECT label, measure FROM table",fields:[{name:"Label",type:"category",description:"e.g., product, region"},{name:"Measure",type:"number",description:"e.g., sales, count"}],description:"Pie charts show proportions of a whole.",docsUrl:"https://docs.semaphor.cloud/docs/charts/pie-donut-polar"},doughnut:{label:"Doughnut Chart",query:"SELECT label, measure FROM table",fields:[{name:"Label",type:"category",description:"e.g., product, region"},{name:"Measure",type:"number",description:"e.g., sales, count"}],description:"Doughnut charts show proportions with a hollow center.",docsUrl:"https://docs.semaphor.cloud/docs/charts/pie-donut-polar"},polarArea:{label:"Polar Area Chart",query:"SELECT label, measure FROM table",fields:[{name:"Label",type:"category",description:"e.g., skill, metric"},{name:"Measure",type:"number",description:"e.g., score, value"}],description:"Polar area charts compare values using sectors of equal angle but varying radius.",docsUrl:"https://docs.semaphor.cloud/docs/charts/pie-donut-polar"},radar:{label:"Radar Chart",query:"SELECT label, measure FROM table",fields:[{name:"Label",type:"category",description:"e.g., attribute, skill"},{name:"Measure",type:"number",description:"e.g., score, rating"}],description:"Radar charts display multivariate data on axes starting from the same point.",docsUrl:"https://docs.semaphor.cloud/docs/charts/pie-donut-polar"},funnel:{label:"Funnel Chart",query:"SELECT label, measure FROM table",fields:[{name:"Label",type:"category",description:"e.g., stage name"},{name:"Measure",type:"number",description:"e.g., count, value"}],description:"Funnel charts visualize progressive reduction of data through stages.",docsUrl:"https://docs.semaphor.cloud/docs/charts/funnel"},bubble:{label:"Bubble Chart",query:"SELECT label, [group], x-axis, y-axis, radius FROM table",fields:[{name:"Label",type:"category",description:"e.g., city"},{name:"Group",type:"category",description:"e.g., region",optional:!0},{name:"X-axis",type:"number",description:"e.g., population"},{name:"Y-axis",type:"number",description:"e.g., income"},{name:"Radius",type:"number",description:"e.g., area"}],description:"Bubble charts display three dimensions of data using position and size.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bubble"},scatter:{label:"Scatter Chart",query:"SELECT label, [group], x-axis, y-axis FROM table",fields:[{name:"Label",type:"category",description:"e.g., item name"},{name:"Group",type:"category",description:"e.g., type",optional:!0},{name:"X-axis",type:"number",description:"e.g., price"},{name:"Y-axis",type:"number",description:"e.g., quantity"}],description:"Scatter charts show relationships between two numeric variables.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bubble"},tornado:{label:"Tornado Chart",query:"SELECT dimension, cohort, metric FROM table",fields:[{name:"Dimension",type:"category",description:"e.g., age group"},{name:"Cohort",type:"category",description:"e.g., gender"},{name:"Metric",type:"number",description:"e.g., population"}],description:"Tornado charts compare two groups across categories using back-to-back bars.",docsUrl:"https://docs.semaphor.cloud/docs/charts/tornado"},pyramid:{label:"Pyramid Chart",query:"SELECT dimension, cohort, metric FROM table",fields:[{name:"Dimension",type:"category",description:"e.g., age group"},{name:"Cohort",type:"category",description:"e.g., gender"},{name:"Metric",type:"number",description:"e.g., population"}],description:"Population pyramids show age and gender distribution.",docsUrl:"https://docs.semaphor.cloud/docs/charts/tornado"},range:{label:"Range Chart",query:"SELECT y-axis, label, range-from, range-to, range-value FROM table",fields:[{name:"Y-axis",type:"category",description:"e.g., category"},{name:"Label",type:"category",description:"e.g., range name"},{name:"Range-from",type:"number",description:"start value"},{name:"Range-to",type:"number",description:"end value"},{name:"Range-value",type:"number",description:"e.g., midpoint"}],description:"Range charts display data ranges with start and end values.",docsUrl:"https://docs.semaphor.cloud/docs/charts/range"},heatmap:{label:"Heatmap",query:"SELECT x-axis, y-axis, value FROM table",fields:[{name:"X-axis",type:"category",description:"e.g., day"},{name:"Y-axis",type:"category",description:"e.g., hour"},{name:"Value",type:"number",description:"e.g., count, intensity"}],description:"Heatmaps visualize data density using color intensity.",docsUrl:"https://docs.semaphor.cloud/docs/charts/heatmap"},bullet:{label:"Bullet Chart",query:"SELECT label, actual, target, [ranges] FROM table",fields:[{name:"Label",type:"category",description:"e.g., metric name"},{name:"Actual",type:"number",description:"current value"},{name:"Target",type:"number",description:"goal value"},{name:"Ranges",type:"number",description:"threshold values",optional:!0}],description:"Bullet charts compare actual performance against targets.",docsUrl:"https://docs.semaphor.cloud/docs/charts/bullet"},text:{label:"Text Visual",query:"SELECT text FROM table LIMIT 1",fields:[{name:"Text",type:"string",description:"content to display"}],description:"Text visuals display dynamic text content from your data.",docsUrl:"https://docs.semaphor.cloud/docs/charts/text"},kpi:{label:"KPI",query:"SELECT current, previous FROM table",fields:[{name:"Current",type:"number",description:"current value"},{name:"Previous",type:"number",description:"comparison value"}],description:"KPI visuals display key performance indicators with comparison values.",docsUrl:"https://docs.semaphor.cloud/docs/charts/kpi"},map:{label:"Map Chart",query:"SELECT country, value FROM table",fields:[{name:"Country/Region",type:"category",description:"geographic identifier"},{name:"Value",type:"number",description:"e.g., population, sales"}],description:"Map charts visualize geographic data using color intensity.",docsUrl:"https://docs.semaphor.cloud/docs/charts/map"},table:{label:"Table",query:"SELECT column1, column2, ... FROM table",fields:[{name:"Columns",type:"category",description:"any data columns"}],description:"Tables display data in rows and columns.",docsUrl:"https://docs.semaphor.cloud/docs/charts/table"},detailTable:{label:"Detail Table",query:"SELECT column1, column2, ... FROM table ORDER BY column1 DESC",fields:[{name:"Columns",type:"category",description:"columns to display (no aggregation)"}],description:"Detail tables display raw records without aggregation. Ideal for event logs, transaction history, and audit trails.",docsUrl:"https://docs.semaphor.cloud/docs/charts/detail-table"}};function Oa(t){return pr[t]}function fr({chartType:t,showDocsLink:n=!0}){const a=Oa(t);return a?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Query Format"}),e.jsx("code",{className:"block rounded-md bg-muted/50 px-3 py-2 font-mono text-xs text-foreground",children:a.query})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Fields"}),e.jsx("div",{className:"rounded-md border",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b bg-muted/50",children:[e.jsx("th",{className:"px-2.5 py-1.5 text-left font-medium text-muted-foreground",children:"Field"}),e.jsx("th",{className:"px-2.5 py-1.5 text-left font-medium text-muted-foreground",children:"Type"}),e.jsx("th",{className:"px-2.5 py-1.5 text-left font-medium text-muted-foreground",children:"Description"})]})}),e.jsx("tbody",{children:a.fields.map((r,i)=>e.jsxs("tr",{className:i<a.fields.length-1?"border-b":"",children:[e.jsxs("td",{className:"px-2.5 py-1.5 font-medium text-foreground",children:[r.name,r.optional&&e.jsx("span",{className:"ml-1 text-muted-foreground",children:"?"})]}),e.jsx("td",{className:"px-2.5 py-1.5 font-mono text-muted-foreground",children:r.type}),e.jsx("td",{className:"px-2.5 py-1.5 text-muted-foreground",children:r.description||"—"})]},r.name))})]})})]}),e.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:a.description}),n&&a.docsUrl&&e.jsxs("a",{href:a.docsUrl,target:"_blank",rel:"noopener noreferrer",onClick:r=>r.stopPropagation(),className:"inline-flex items-center gap-1.5 text-xs font-medium text-primary hover:underline",children:["View documentation",e.jsx(s.ExternalLink,{className:"h-3 w-3"})]})]}):null}function gr({chartType:t}){return Oa(t)?e.jsxs(s.HoverCard,{openDelay:200,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx("button",{type:"button",className:"rounded bg-muted px-2 py-0.5 font-mono text-[10px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:bg-muted/80 hover:text-foreground",children:"SQL"})}),e.jsx(s.HoverCardContent,{className:"w-80 p-4",side:"left",align:"start",sideOffset:8,children:e.jsx(fr,{chartType:t})})]}):null}function Ps({chartType:t,suffix:n="Configuration"}){return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-medium",children:n}),e.jsx(gr,{chartType:t})]})}function jr(){return e.jsxs("div",{className:"space-y-6 px-6 py-4",children:[e.jsx(Ps,{chartType:"kpi"}),e.jsx("section",{children:e.jsx(hr,{})})]})}function ca({children:t,summary:n,open:a,className:r}){return e.jsxs("details",{open:a,className:s.cn("space-y-4 [&_summary>svg]:open:-rotate-180",r),children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-4",children:[e.jsx(s.Label,{children:n}),e.jsx(s.ChevronUp,{className:"h-4 w-4"})]}),e.jsx("div",{className:"transition-all ease-in-out",children:t})]})}function Ra(){const[t,n]=C.useState([]),a=s.useEditorStore(x=>x.card.preferences),{setFilterOnClickColumnIndex:r,setCardPreferences:i}=s.useEditorStore(x=>x.actions),d=s.useEditorStore(x=>x.queryResultColumns);s.useEditorStore(x=>{var p;return(p=x.card.preferences)==null?void 0:p.filterOnClickColumnIndex}),C.useEffect(()=>{d&&n(new Array(d.length).fill(!1))},[d]);function o(x,p){var h,u;p?a!=null&&a.onClickFilter&&((h=a==null?void 0:a.onClickFilter)==null?void 0:h.length)>0?i({...a,onClickFilter:[...a.onClickFilter,{columnIndex:x,expression:""}]}):i({...a,onClickFilter:[{columnIndex:x,expression:""}]}):(i({...a,onClickFilter:(u=a==null?void 0:a.onClickFilter)==null?void 0:u.filter(y=>y.columnIndex!==x)}),n(y=>{const b=[...y];return b[x]=!1,b}))}function c(x,p){var u;const h=(u=a==null?void 0:a.onClickFilter)==null?void 0:u.map(y=>y.columnIndex===x?{...y,expression:p.target.value}:y);i({...a,onClickFilter:h})}function l(x){var p,h,u,y;if(t!=null&&t[x]||(h=(p=a==null?void 0:a.onClickFilter)==null?void 0:p.find(b=>b.columnIndex===x))!=null&&h.expression)return e.jsx(s.Input,{value:(y=(u=a==null?void 0:a.onClickFilter)==null?void 0:u.find(b=>b.columnIndex===x))==null?void 0:y.expression,onChange:b=>c(x,b),type:"text",className:"h-9 w-full font-mono text-xs focus-visible:ring-0 focus-visible:ring-ring focus-visible:ring-offset-0",placeholder:"Expression"})}return e.jsx("div",{className:"max-h-[150px] space-y-2 overflow-y-auto",children:d==null?void 0:d.map((x,p)=>{var h,u;return e.jsx("div",{className:"group flex items-center justify-between space-y-2",children:e.jsxs("div",{className:"grow",children:[e.jsxs("div",{className:"flex items-center space-x-2 py-2",children:[e.jsx(s.Checkbox,{checked:!!((h=a==null?void 0:a.onClickFilter)!=null&&h.find(y=>y.columnIndex===p)),onCheckedChange:y=>o(p,y)}),e.jsx("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:x}),e.jsx("div",{className:"flex items-center gap-2",children:((u=a==null?void 0:a.onClickFilter)==null?void 0:u.find(y=>y.columnIndex===p))&&e.jsx(s.Pencil,{onClick:()=>{n(y=>{const b=[...y];return b[p]=!y[p],b})},className:"invisible size-3 cursor-pointer text-gray-400 group-hover:visible"})})]}),l(p)]})},x)})})}const br=[{label:"Mercator",value:"mercator"},{label:"Azimuthal Equidistant",value:"azimuthalEquidistant"},{label:"Gnomonic",value:"gnomonic"},{label:"Orthographic",value:"orthographic"},{label:"Stereographic",value:"stereographic"},{label:"Equal Earth",value:"equalEarth"},{label:"Albers",value:"albers"},{label:"Albers USA",value:"albersUsa"},{label:"Conic Conformal",value:"conicConformal"},{label:"Conic Equal Area",value:"conicEqualArea"},{label:"Conic Equidistant",value:"conicEquidistant"},{label:"Equirectangular",value:"equirectangular"},{label:"Transverse Mercator",value:"transverseMercator"},{label:"Natural Earth 1",value:"naturalEarth1"}],vr=["blues","brBG","buGn","buPu","cividis","cool","cubehelixDefault","gnBu","greens","greys","inferno","magma","orRd","oranges","pRGn","piYG","plasma","puBu","puBuGn","puOr","puRd","purples","rainbow","rdBu","rdGy","rdPu","rdYlBu","rdYlGn","reds","sinebow","spectral","turbo","viridis","warm","ylGn","ylGnBu","ylOrBr","ylOrRd"],yr=vr.map(t=>({label:t,value:t}));function Nr(){var l,x,p,h,u,y,b,m,g,w,E,V,A,T,v,D,M,f;const t=s.useEditorStore(I=>I.card),n=(x=(l=t==null?void 0:t.preferences)==null?void 0:l.mapVisualOptions)==null?void 0:x.topoJsonUrl,[a,r]=C.useState(((h=(p=t==null?void 0:t.preferences)==null?void 0:p.mapVisualOptions)==null?void 0:h.customTopoJsonUrl)||""),{setCardPreferences:i}=s.useEditorActions(),{data:d}=s.useTopoJson(t),o=Object.keys((d==null?void 0:d.objects)||{}).map(I=>({label:I,value:I}))||[],c=[{label:"US States 10m",value:"https://unpkg.com/us-atlas/states-10m.json"},{label:"Countries 50m",value:"https://unpkg.com/world-atlas/countries-50m.json"},{label:"Custom",value:"custom"}];return e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx(Ps,{chartType:"map"}),e.jsx(ca,{open:!0,summary:"Settings",children:e.jsxs("div",{className:"space-y-3 px-2",children:[e.jsx(Ze,{className:"h-9",options:c,onValueChange:I=>{console.log("value",I),i({...t.preferences,mapVisualOptions:{topoJsonUrl:I}})},value:n||"",label:"Select Map"}),n==="custom"&&e.jsx(s.Input,{onChange:I=>{r(I.target.value)},onBlur:()=>{var I;console.log("onBlur",a),i({...t.preferences,mapVisualOptions:{...(I=t.preferences)==null?void 0:I.mapVisualOptions,customTopoJsonUrl:a}})},value:a,className:`h-9 w-full ${s.removeRing}`,placeholder:"Custom URL"}),d&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Map Object"}),e.jsx(Ze,{className:"h-9",options:o,value:((y=(u=t.preferences)==null?void 0:u.mapVisualOptions)==null?void 0:y.objectKey)||"",label:"Map Object",onValueChange:I=>{var j;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,objectKey:I}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Projection"}),e.jsx(Ze,{className:"h-9",options:br,value:((m=(b=t.preferences)==null?void 0:b.mapVisualOptions)==null?void 0:m.projection)||"",label:"Projection",onValueChange:I=>{var j;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,projection:I}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Colors"}),e.jsx(Ze,{className:"h-9",options:yr,value:((w=(g=t.preferences)==null?void 0:g.mapVisualOptions)==null?void 0:w.colorScale)||"",label:"Select Color Scale",onValueChange:I=>{var j;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,colorScale:I}})}})]})]})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(ca,{className:"",summary:"Scale Options",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:.1,value:((V=(E=t.preferences)==null?void 0:E.mapVisualOptions)==null?void 0:V.projectionScale)||1,onChange:I=>{var j;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,projectionScale:Number(I.target.value)}})}}),e.jsx(s.Label,{children:"X"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((v=(T=(A=t.preferences)==null?void 0:A.mapVisualOptions)==null?void 0:T.projectionOffset)==null?void 0:v[0])||0,onChange:I=>{var j,k,R,P;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,projectionOffset:[Number(I.target.value),((P=(R=(k=t.preferences)==null?void 0:k.mapVisualOptions)==null?void 0:R.projectionOffset)==null?void 0:P[1])||0]}})}}),e.jsx(s.Label,{children:"Y"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((f=(M=(D=t.preferences)==null?void 0:D.mapVisualOptions)==null?void 0:M.projectionOffset)==null?void 0:f[1])||0,onChange:I=>{var j,k,R,P;i({...t.preferences,mapVisualOptions:{...(j=t.preferences)==null?void 0:j.mapVisualOptions,projectionOffset:[((P=(R=(k=t.preferences)==null?void 0:k.mapVisualOptions)==null?void 0:R.projectionOffset)==null?void 0:P[0])||0,Number(I.target.value)]}})}})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(Ra,{})]})}function Fa({color:t,onColorChange:n,onClose:a}){const[r,i]=C.useState(0),[d,o]=C.useState(100),[c,l]=C.useState(50),[x,p]=C.useState(t);C.useEffect(()=>{const g=da(t);if(g){const w=ua(g.r,g.g,g.b);i(w.h),o(w.s),l(w.l),p(t)}},[t]);const h=g=>{i(g),y(g,d,c)},u=g=>{const w=g.currentTarget.getBoundingClientRect(),E=Math.max(0,Math.min(1,(g.clientX-w.left)/w.width)),V=Math.max(0,Math.min(1,(g.clientY-w.top)/w.height)),A=E*100,T=(1-V)*100;o(A),l(T),y(r,A,T)},y=(g,w,E)=>{const V=Sr(g,w,E),A=Cr(V.r,V.g,V.b);p(A)},b=g=>{if(p(g),/^#[0-9A-Fa-f]{6}$/.test(g)){const w=da(g);if(w){const E=ua(w.r,w.g,w.b);i(E.h),o(E.s),l(E.l)}}},m=()=>{/^#[0-9A-Fa-f]{6}$/.test(x)&&(n(x),a())};return e.jsxs("div",{className:"p-4 space-y-4 w-[320px]",children:[e.jsxs("div",{className:"relative h-[200px] rounded cursor-crosshair",style:{background:`hsl(${r}, 100%, 50%)`},onClick:u,onMouseMove:g=>{g.buttons===1&&u(g)},children:[e.jsx("div",{className:"absolute inset-0 rounded",style:{background:"linear-gradient(to right, white, transparent)"}}),e.jsx("div",{className:"absolute inset-0 rounded",style:{background:"linear-gradient(to bottom, transparent, black)"}}),e.jsx("div",{className:"absolute w-4 h-4 -ml-2 -mt-2 rounded-full border-2 border-white shadow-md",style:{left:`${d}%`,top:`${100-c}%`,backgroundColor:x}})]}),e.jsx("div",{className:"space-y-2",children:e.jsx("input",{type:"range",min:"0",max:"360",value:r,onChange:g=>h(Number(g.target.value)),className:"w-full h-4 rounded-lg appearance-none cursor-pointer",style:{background:"linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)"}})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"HEX"}),e.jsx(s.Input,{value:x,onChange:g=>b(g.target.value),placeholder:"#000000",className:"font-mono"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full border shadow-sm",style:{backgroundColor:t}}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"CURRENT"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full border shadow-sm",style:{backgroundColor:x}}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"NEW"})]})]}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx(s.Button,{variant:"outline",onClick:a,children:"Cancel"}),e.jsx(s.Button,{onClick:m,children:"OK"})]})]})}function da(t){const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null}function Cr(t,n,a){return"#"+((1<<24)+(t<<16)+(n<<8)+a).toString(16).slice(1)}function ua(t,n,a){t/=255,n/=255,a/=255;const r=Math.max(t,n,a),i=Math.min(t,n,a);let d=0,o=0;const c=(r+i)/2;if(r!==i){const l=r-i;switch(o=c>.5?l/(2-r-i):l/(r+i),r){case t:d=((n-a)/l+(n<a?6:0))/6;break;case n:d=((a-t)/l+2)/6;break;case a:d=((t-n)/l+4)/6;break}}return{h:Math.round(d*360),s:Math.round(o*100),l:Math.round(c*100)}}function Sr(t,n,a){t/=360,n/=100,a/=100;let r,i,d;if(n===0)r=i=d=a;else{const o=(x,p,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?x+(p-x)*6*h:h<.5?p:h<.6666666666666666?x+(p-x)*(.6666666666666666-h)*6:x),c=a<.5?a*(1+n):a+n-a*n,l=2*a-c;r=o(l,c,t+1/3),i=o(l,c,t),d=o(l,c,t-1/3)}return{r:Math.round(r*255),g:Math.round(i*255),b:Math.round(d*255)}}const ma=[{value:"green",color:"#16a34a",label:"Green"},{value:"red",color:"#dc2626",label:"Red"},{value:"neutral",color:"#6b7280",label:"Neutral"}],wr=["#16a34a","#dc2626","#6b7280","#2563eb","#ca8a04","#7c3aed","#0891b2","#e11d48","#ea580c"];function es({value:t,onChange:n,label:a}){const[r,i]=C.useState(!1),[d,o]=C.useState(!1),c=()=>{const l=ma.find(x=>x.value===t);return l?l.color:t.startsWith("#")?t:ma[2].color};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:r,onOpenChange:i,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx("button",{className:"size-5 rounded border-2 border-input shadow-sm transition-all hover:scale-110 hover:border-gray-400",style:{backgroundColor:c()},"aria-label":`Change color for ${a}`})}),e.jsx(s.PopoverContent,{align:"start",className:"w-auto p-2",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"grid grid-cols-3 items-center justify-items-center gap-1",children:wr.map(l=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border-2 transition-all",c()===l?"border-gray-900":"border-transparent"),style:{backgroundColor:l},onClick:()=>{n(l),i(!1)},children:e.jsx("span",{className:"sr-only",children:l})},l))}),e.jsx("button",{className:"w-full rounded border border-input px-2 py-1 text-xs hover:bg-muted",onClick:()=>{o(!0),i(!1)},children:"Custom color..."})]})})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:a})]}),d&&e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50",onClick:()=>o(!1)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(Fa,{color:c(),onColorChange:l=>{n(l),o(!1)},onClose:()=>o(!1)})})]})]})}const Tr=["auto","number","currency","percent","scientific","date"],Er=[{value:"USD",label:"USD - US Dollar"},{value:"EUR",label:"EUR - Euro"},{value:"JPY",label:"JPY - Japanese Yen"},{value:"GBP",label:"GBP - British Pound"},{value:"CNY",label:"CNY - Chinese Yuan"},{value:"CHF",label:"CHF - Swiss Franc"},{value:"CAD",label:"CAD - Canadian Dollar"},{value:"AUD",label:"AUD - Australian Dollar"},{value:"HKD",label:"HKD - Hong Kong Dollar"},{value:"SGD",label:"SGD - Singapore Dollar"},{value:"NZD",label:"NZD - New Zealand Dollar"},{value:"SEK",label:"SEK - Swedish Krona"},{value:"NOK",label:"NOK - Norwegian Krone"},{value:"DKK",label:"DKK - Danish Krone"},{value:"KRW",label:"KRW - South Korean Won"},{value:"INR",label:"INR - Indian Rupee"},{value:"RUB",label:"RUB - Russian Ruble"},{value:"BRL",label:"BRL - Brazilian Real"},{value:"MXN",label:"MXN - Mexican Peso"},{value:"TRY",label:"TRY - Turkish Lira"},{value:"ZAR",label:"ZAR - South African Rand"},{value:"SAR",label:"SAR - Saudi Riyal"},{value:"AED",label:"AED - UAE Dirham"},{value:"ARS",label:"ARS - Argentine Peso"},{value:"CLP",label:"CLP - Chilean Peso"},{value:"COP",label:"COP - Colombian Peso"},{value:"THB",label:"THB - Thai Baht"},{value:"IDR",label:"IDR - Indonesian Rupiah"},{value:"MYR",label:"MYR - Malaysian Ringgit"},{value:"PHP",label:"PHP - Philippine Peso"},{value:"PLN",label:"PLN - Polish Zloty"},{value:"NGN",label:"NGN - Nigerian Naira"},{value:"KES",label:"KES - Kenyan Shilling"},{value:"GHS",label:"GHS - Ghanaian Cedi"},{value:"ZMW",label:"ZMW - Zambian Kwacha"},{value:"ZWL",label:"ZWL - Zimbabwean Dollar"},{value:"EGP",label:"EGP - Egyptian Pound"},{value:"MAD",label:"MAD - Moroccan Dirham"},{value:"UAH",label:"UAH - Ukrainian Hryvnia"},{value:"HUF",label:"HUF - Hungarian Forint"},{value:"CZK",label:"CZK - Czech Koruna"},{value:"RON",label:"RON - Romanian Leu"},{value:"PKR",label:"PKR - Pakistani Rupee"},{value:"BDT",label:"BDT - Bangladeshi Taka"},{value:"VND",label:"VND - Vietnamese Dong"},{value:"TWD",label:"TWD - New Taiwan Dollar"},{value:"ILS",label:"ILS - Israeli New Shekel"}],Ir=[{value:"en-US",label:"English (US)"},{value:"en-GB",label:"English (UK)"},{value:"en-IN",label:"English (India)"},{value:"de-DE",label:"German"},{value:"fr-FR",label:"French"},{value:"es-ES",label:"Spanish"},{value:"it-IT",label:"Italian"},{value:"pt-BR",label:"Portuguese (Brazil)"},{value:"zh-CN",label:"Chinese (Simplified)"},{value:"ja-JP",label:"Japanese"},{value:"ko-KR",label:"Korean"},{value:"ru-RU",label:"Russian"},{value:"ar-SA",label:"Arabic"},{value:"hi-IN",label:"Hindi"},{value:"nl-NL",label:"Dutch"},{value:"sv-SE",label:"Swedish"}],kr=t=>t.charAt(0).toUpperCase()+t.slice(1);function Vs({formatOptions:t={},onFormatOptionsChange:n,showTitle:a=!0,title:r="NUMBER FORMAT"}){const i=t.type||"auto",d=(c,l)=>{n({...t,[c]:l})},o=()=>i==="currency"?2:i==="percent"?1:0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[a&&e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:r}),e.jsxs(s.Select,{value:i,onValueChange:c=>d("type",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Tr.map(c=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:c==="auto"?"Auto (Default)":kr(c)},c))})]})]}),i!=="auto"&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-4",children:[["number","currency","percent"].includes(i)&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Decimals"}),e.jsx("div",{className:"flex-1",children:e.jsx(s.Input,{type:"number",min:"0",max:"10",placeholder:"0",value:t.decimalPlaces??o(),onChange:c=>d("decimalPlaces",parseInt(c.target.value)||0),className:"h-8 text-xs"})})]}),i==="currency"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Currency"}),e.jsxs(s.Select,{value:t.currency||"USD",onValueChange:c=>d("currency",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Er.map(c=>e.jsx(s.SelectItem,{value:c.value,className:"text-xs",children:c.label},c.value))})]})]}),["number","currency"].includes(i)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Abbreviate (K, M, B)"}),e.jsx(s.SmallSwitch,{checked:t.useSuffix??!1,onCheckedChange:c=>d("useSuffix",c)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Locale"}),e.jsxs(s.Select,{value:t.locale||"en-US",onValueChange:c=>d("locale",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Ir.map(c=>e.jsx(s.SelectItem,{value:c.value,className:"text-xs",children:c.label},c.value))})]})]}),i==="number"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Prefix"}),e.jsx("div",{className:"flex-1",children:e.jsx(s.Input,{placeholder:"e.g., $",value:t.prefix||"",onChange:c=>d("prefix",c.target.value),className:"h-8 text-xs"})})]}),i==="number"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Suffix"}),e.jsx("div",{className:"flex-1",children:e.jsx(s.Input,{placeholder:"e.g., units",value:t.suffix||"",onChange:c=>d("suffix",c.target.value),className:"h-8 text-xs"})})]}),["number","currency"].includes(i)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Negative in ()"}),e.jsx(s.SmallSwitch,{checked:t.negativeInParentheses??!1,onCheckedChange:c=>d("negativeInParentheses",c)})]}),i==="percent"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Multiply By"}),e.jsx("div",{className:"flex-1",children:e.jsx(s.Input,{type:"number",placeholder:"100",value:t.multiplyBy??"",onChange:c=>d("multiplyBy",c.target.value?parseFloat(c.target.value):void 0),className:"h-8 text-xs"})})]}),i==="date"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-20 text-xs text-muted-foreground",children:"Format"}),e.jsx("div",{className:"flex-1",children:e.jsx(s.Input,{type:"text",placeholder:"MM/DD/YYYY",value:t.dateFormat||"",onChange:c=>d("dateFormat",c.target.value),className:"h-8 text-xs"})})]})]})]})}function Dr(){const t=s.useDashboardStore(c=>c.dashboard.filters),n=s.useEditorStore(c=>c.frame),{setFrame:a}=s.useEditorActions(),{columns:r}=s.useColumns(),{assignFilter:i}=s.useAssignFilter();function d(c){const l=i(c,"frame");a({...n,filterId:l})}const o=t==null?void 0:t.find(c=>c.id===n.filterId);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Card Filter"}),e.jsx(Ar,{onSelect:d,columns:r}),o&&e.jsx(s.FilterHeader,{filter:o})]})}function Ar({columns:t,onSelect:n}){var o;const[a,r]=at.useState(!1),[i,d]=at.useState("");return e.jsxs(s.Popover,{open:a,onOpenChange:r,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{size:"sm",variant:"outline",role:"combobox","aria-expanded":a,className:"w-full justify-between font-normal",children:[i?((o=t.find(c=>c.name===i))==null?void 0:o.label)||i:"Select Column...",e.jsx(s.CaretSortIcon,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"w-[200px] p-0",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search column",className:"h-9"}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No column found."}),e.jsx(s.CommandGroup,{children:t==null?void 0:t.map(c=>e.jsxs(s.CommandItem,{value:c.name,onSelect:l=>{const x=l===i?"":l;d(x),r(!1),x&&n(c)},children:[c.label||c.name,e.jsx(s.CheckIcon,{className:s.cn("ml-auto h-4 w-4",i===c.name?"opacity-100":"opacity-0")})]},c.id))})]})]})})]})}const Lr=[{value:"difference",label:"Difference"},{value:"change",label:"Change (%)"},{value:"change_difference",label:"Change + Difference"},{value:"ratio",label:"Ratio"}],Mr=[{value:"arrow_badge",label:"Arrow + Badge"},{value:"arrow",label:"Arrow Only"},{value:"badge",label:"Badge Only"},{value:"none",label:"None"}];function Or({cardType:t="table"}){var p,h,u,y,b;const n=s.useEditorStore(m=>m.card),a=s.useEditorStore(m=>{var g;return(g=m.card)==null?void 0:g.preferences}),r=s.useEditorStore(m=>m.actions.setCardPreferences),d=(((p=n.config)==null?void 0:p.metricColumns)||[]).some(m=>m.comparisonType&&m.comparisonType!=="none"),o=((h=a==null?void 0:a.tableVisualOptions)==null?void 0:h.metricComparison)||{},c=m=>{r({...a,tableVisualOptions:{...a==null?void 0:a.tableVisualOptions,metricComparison:{...o,...m}}})},l={increase:((u=o.colors)==null?void 0:u.increase)||"green",decrease:((y=o.colors)==null?void 0:y.decrease)||"red",neutral:((b=o.colors)==null?void 0:b.neutral)||"neutral"},x=m=>{r({...a,allowDownload:m})};return e.jsxs("div",{className:"space-y-6 px-6 py-2",children:[e.jsxs(s.Accordion,{defaultValue:["item-3"],type:"multiple",children:[d&&e.jsxs(s.AccordionItem,{value:"comparison",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ca,{className:"h-4 w-4"}),e.jsx("span",{children:"Comparison Settings"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Calculated As"}),e.jsxs(s.Select,{value:o.calculatedAs||"change_difference",onValueChange:m=>c({calculatedAs:m}),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Lr.map(m=>e.jsx(s.SelectItem,{value:m.value,className:"text-xs",children:m.label},m.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Number Format"}),e.jsx(Vs,{formatOptions:o.formatOptions||{},onFormatOptionsChange:m=>c({formatOptions:m}),showTitle:!1})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Indicator Style"}),e.jsxs(s.Select,{value:o.indicatorStyle||"arrow_badge",onValueChange:m=>c({indicatorStyle:m}),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Mr.map(m=>e.jsx(s.SelectItem,{value:m.value,className:"text-xs",children:m.label},m.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Colors"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(es,{value:l.increase,onChange:m=>c({colors:{...l,increase:m}}),label:"Increase"}),e.jsx(es,{value:l.decrease,onChange:m=>c({colors:{...l,decrease:m}}),label:"Decrease"}),e.jsx(es,{value:l.neutral,onChange:m=>c({colors:{...l,neutral:m}}),label:"No Change"})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Lower is Better"}),e.jsx(s.Checkbox,{checked:o.lowerIsBetter||!1,onCheckedChange:m=>c({lowerIsBetter:!!m})})]})]})]}),e.jsxs(s.AccordionItem,{value:"item-3",children:[e.jsx(s.AccordionTrigger,{children:"Click Filters"}),e.jsxs(s.AccordionContent,{className:"space-y-4 px-2",children:[e.jsx(Ra,{}),e.jsx(Dr,{})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Checkbox,{onCheckedChange:x,id:"allow-download"}),e.jsx("label",{htmlFor:"allow-download",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Allow Download"})]})]})}function Rr(){var r;const t=s.useEditorStore(i=>i.card.preferences),{setCardPreferences:n}=s.useEditorStore(i=>i.actions);function a(i){n({...t,textVisualOptions:{...t==null?void 0:t.textVisualOptions,isDynamicText:i==="dynamic"}})}return e.jsxs(s.RadioGroup,{value:(r=t==null?void 0:t.textVisualOptions)!=null&&r.isDynamicText?"dynamic":"static",onValueChange:a,className:"flex gap-3",defaultValue:"x",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.RadioGroupItem,{value:"static",id:"r1"}),e.jsx("label",{className:"text-sm",htmlFor:"r1",children:"Static"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.RadioGroupItem,{value:"dynamic",id:"r2"}),e.jsx("label",{className:"text-sm",htmlFor:"r2",children:"Dynamic"})]})]})}function Fr(){return e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx(Ps,{chartType:"text"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Text Type"}),e.jsx(Rr,{})]})]})}const Pr=["#000000","#ffffff","#6b7280","#dc2626","#ea580c","#ca8a04","#16a34a","#0891b2","#2563eb","#7c3aed","#c026d3","#e11d48","#0f172a","#f3f4f6","#fbbf24"];function Vr(){var T,v,D,M,f,I,j,k,R,P;const t=s.useEditorStore(N=>N.card),n=s.useEditorStore(N=>{var L;return(L=N.card)==null?void 0:L.preferences}),a=Ae.useEffectiveEditorCardType(),{setCardPreferences:r,updateCardInFrame:i}=s.useEditorActions(),d=C.useMemo(()=>a!==t.type?{...t,type:a}:t,[t,a]),{data:o}=s.useDashboardCardQuery(d),[c,l]=C.useState({}),[x,p]=C.useState(null),[h,u]=C.useState(null),y=C.useMemo(()=>{var F,O,_,Q,B,K,se;if(!(o!=null&&o.records)||o.records.length===0)return[];const N=a==="stackedBar"||a==="stackedLine",L=a==="bar"||a==="line"||a==="horizontalBar"||a==="bullet"||a==="combo"||a==="area"||a==="stackedArea",S=((F=t==null?void 0:t.config)==null?void 0:F.pivotByColumns)&&t.config.pivotByColumns.length>0;if((N||L)&&S){if(o.pivotSchema&&Array.isArray(o.pivotSchema)){const H=new Set;return o.pivotSchema.forEach(te=>{te.alias&&H.add(te.alias)}),Array.from(H)}if(o.records.length>0){const H=o.records[0],te=Object.keys(H),z=new Set;(O=t==null?void 0:t.config)!=null&&O.groupByColumns&&t.config.groupByColumns.forEach(X=>{z.add(X.label||X.name),z.add(X.alias||X.name)});const W=new Set;return(_=t==null?void 0:t.config)!=null&&_.metricColumns&&t.config.metricColumns.forEach(X=>{const ne=X.alias||X.name;W.add(ne),W.add(`${ne}_count`),W.add(`${ne}_sum`),W.add(`${ne}_avg`),W.add(`${ne}_min`),W.add(`${ne}_max`);const ue=X.entityName||X.qualifiedEntityName;ue&&(W.add(`${ue}_${ne}`),W.add(`${ue}_${ne}_count`))}),te.filter(X=>!z.has(X)&&!W.has(X))}}if((L||N)&&!S&&((B=(Q=t==null?void 0:t.config)==null?void 0:Q.metricColumns)!=null&&B.length))return t.config.metricColumns.map(H=>H.alias||H.label||H.name);if((se=(K=t==null?void 0:t.config)==null?void 0:K.groupByColumns)!=null&&se.length){const H=t.config.groupByColumns[0],te=H.label||H.name,z=new Set;return o.records.forEach(W=>{const le=W[te];le!=null&&z.add(String(le))}),Array.from(z)}return[]},[o,(T=t==null?void 0:t.config)==null?void 0:T.groupByColumns,(v=t==null?void 0:t.config)==null?void 0:v.pivotByColumns,(D=t==null?void 0:t.config)==null?void 0:D.metricColumns,t==null?void 0:t.type]),b=C.useMemo(()=>s.getDefaultChartColors(),[]);C.useEffect(()=>{const N={};y.forEach((L,S)=>{N[L]=s.getColorForValue(L,S,n==null?void 0:n.colorConfig)}),l(N)},[y,n==null?void 0:n.colorConfig,b]);const m=(N,L)=>{const S={...c,[N]:L};l(S);const F={...n||{},colorConfig:{segments:S}};r(F);const O={...t,preferences:F};i(O)},g=(N,L)=>{var B;const S=b[L%b.length],{[N]:F,...O}=((B=n==null?void 0:n.colorConfig)==null?void 0:B.segments)||{},_={...n||{},colorConfig:{segments:O}};r(_);const Q={...t,preferences:_};i(Q),l(K=>({...K,[N]:S}))};if(!y.length||!((t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine"?((f=(M=t==null?void 0:t.config)==null?void 0:M.groupByColumns)==null?void 0:f.length)||((j=(I=t==null?void 0:t.config)==null?void 0:I.pivotByColumns)==null?void 0:j.length):(R=(k=t==null?void 0:t.config)==null?void 0:k.groupByColumns)==null?void 0:R.length)||["table","kpi","text","custom","heatmap"].includes(a))return null;const V=()=>{const N={...n||{},colorConfig:{segments:{}}};r(N);const L={...t,preferences:N};i(L);const S={};y.forEach((F,O)=>{S[F]=s.getColorForValue(F,O,void 0)}),l(S)},A=Object.keys(((P=n==null?void 0:n.colorConfig)==null?void 0:P.segments)||{}).length>0;return e.jsxs(s.AccordionItem,{value:"colors",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(gn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Colors"})]})}),e.jsx(s.AccordionContent,{className:"",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("div",{className:"flex items-center justify-between",children:A&&e.jsxs("button",{className:"ml-auto flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:V,children:[e.jsx(Xt,{className:"h-3 w-3"}),"Reset All"]})})}),e.jsx("div",{className:"max-h-[200px] space-y-2 overflow-y-auto pr-1",children:y.map((N,L)=>{const S=s.isDefaultColor(c[N],L),F=!S;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:x===N,onOpenChange:O=>p(O?N:null),children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx("button",{className:"h-5 w-5 shrink-0 rounded border border-input shadow-sm transition-colors hover:border-gray-400 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",style:{backgroundColor:c[N]}})}),e.jsx(s.PopoverContent,{align:"start",className:"w-auto p-3",children:e.jsxs("div",{className:"space-y-2.5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Theme Colors"}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5",children:b.slice(0,10).map((O,_)=>e.jsxs("button",{className:s.cn("relative h-5 w-5 rounded border-2 transition-all hover:scale-110",c[N]===O?"border-gray-900":"border-transparent"),style:{backgroundColor:O},onClick:()=>{m(N,O),p(null)},children:[_===L%b.length&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsx("div",{className:"rounded-full bg-white/90 px-0.5 text-[8px] font-bold text-gray-900 shadow-sm",children:"D"})}),e.jsx("span",{className:"sr-only",children:O})]},`default-${_}`))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Popular Colors"}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5",children:Pr.map((O,_)=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border transition-all hover:scale-110",c[N]===O?"border-2 border-gray-900":O==="#ffffff"?"border border-gray-300":"border border-transparent"),style:{backgroundColor:O},onClick:()=>{m(N,O),p(null)},children:e.jsx("span",{className:"sr-only",children:O})},`preset-${_}`))})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2 pt-1",children:[e.jsx("button",{className:"text-sm font-medium text-blue-600 hover:text-blue-700",onClick:()=>{u({value:N,color:c[N]}),p(null)},children:"Custom color"}),!S&&e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>{g(N,L),p(null)},children:[e.jsx(Xt,{className:"h-3 w-3"}),"Reset"]})]})]})})]}),e.jsx("span",{className:"flex-1 truncate text-sm",children:N}),F&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"(custom)"})]},N)})}),h&&e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50",onClick:()=>u(null)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(Fa,{color:h.color,onColorChange:N=>{m(h.value,N),u(null)},onClose:()=>u(null)})})]})]})})]})}function qe({value:t,onSave:n,placeholder:a="",type:r="text",className:i=""}){const[d,o]=C.useState(t??""),[c,l]=C.useState(!1);C.useEffect(()=>{o(t??"")},[t]);const x=()=>{n(d),l(!1)},p=()=>{o(t??""),l(!1)};return e.jsxs("div",{className:`flex items-center gap-2 ${i}`,children:[e.jsx(s.Input$1,{placeholder:a,type:r,value:c?d:t??"",onChange:h=>{o(h.target.value),l(!0)},onFocus:()=>l(!0),onClick:h=>h.stopPropagation(),className:"h-8 text-xs",onPointerDown:h=>h.stopPropagation(),onKeyDown:h=>{h.stopPropagation(),h.key==="Enter"&&c&&d!==t?x():h.key==="Escape"&&p()},"aria-label":a||"Edit field"}),c&&d!==t&&e.jsxs(e.Fragment,{children:[e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm edit",onClick:x,children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel edit",onClick:p,children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]})]})}function Xs({axis:t,label:n,type:a,config:r,onChange:i,defaultTitle:d,hidePosition:o}){var y,b,m,g,w,E,V,A,T,v,D,M,f,I;const c=(j,k)=>{i({...r??{},[j]:k})},l=(j,k)=>{var L,S,F,O;const R=j==="enabled"&&k===!0,P=(L=r==null?void 0:r.name)==null?void 0:L.text,N=R&&!P&&d;i({...r??{},name:{...r==null?void 0:r.name,enabled:j==="enabled"?k:((S=r==null?void 0:r.name)==null?void 0:S.enabled)??!1,text:j==="text"?k:N?d:P,fontSize:j==="fontSize"?k:(F=r==null?void 0:r.name)==null?void 0:F.fontSize,fontWeight:j==="fontWeight"?k:(O=r==null?void 0:r.name)==null?void 0:O.fontWeight}})},x=(j,k)=>{var R,P;i({...r??{},labels:{enabled:j==="enabled"?k:((R=r==null?void 0:r.labels)==null?void 0:R.enabled)??!0,rotation:j==="rotation"?k:(P=r==null?void 0:r.labels)==null?void 0:P.rotation}})},p=(j,k)=>{i({...r??{},scale:{...r==null?void 0:r.scale,[j]:k===""?"auto":Number(k)}})},h=t==="x"?["auto","top","bottom"]:["auto","left","right"],u=["auto","0","45","90","-45","-90"];return e.jsxs(s.AccordionItem,{value:`${t}-axis`,className:"border-b-0",children:[e.jsxs("div",{className:"flex w-full items-center justify-between gap-2",children:[e.jsx(s.AccordionTrigger,{className:"flex grow items-center justify-between gap-3 py-2 text-sm font-medium hover:no-underline",children:e.jsx("div",{className:"flex grow items-center justify-between gap-2",children:e.jsx("span",{children:n})})}),e.jsx(s.SmallSwitch,{checked:(r==null?void 0:r.enabled)!==!1,onCheckedChange:j=>c("enabled",j),onClick:j=>j.stopPropagation()})]}),e.jsxs(s.AccordionContent,{className:"space-y-4 pt-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:`${t}-title-enabled`,checked:((y=r==null?void 0:r.name)==null?void 0:y.enabled)??!1,onCheckedChange:j=>l("enabled",j===!0)}),e.jsx(s.Label,{htmlFor:`${t}-title-enabled`,className:"text-xs font-medium cursor-pointer",children:"TITLE"})]}),((b=r==null?void 0:r.name)==null?void 0:b.enabled)&&e.jsxs("div",{className:"space-y-2 pl-6",children:[e.jsx(qe,{placeholder:`${n} title`,value:((m=r==null?void 0:r.name)==null?void 0:m.text)||"",onSave:j=>l("text",j),className:""}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Size"}),e.jsx("div",{className:"w-14",children:e.jsx(qe,{type:"number",placeholder:"12",value:String(((g=r==null?void 0:r.name)==null?void 0:g.fontSize)||12),onSave:j=>l("fontSize",Number(j)||12),className:""})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Weight"}),e.jsxs(s.Select,{value:((w=r==null?void 0:r.name)==null?void 0:w.fontWeight)||"normal",onValueChange:j=>l("fontWeight",j),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"normal",className:"text-xs",children:"Normal"}),e.jsx(s.SelectItem,{value:"bold",className:"text-xs",children:"Bold"})]})]})]})]})]})]}),!o&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"POSITION"}),e.jsxs(s.Select,{value:(r==null?void 0:r.position)||"auto",onValueChange:j=>c("position",j),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:h.map(j=>e.jsx(s.SelectItem,{value:j,className:"text-xs",children:j==="auto"?"Auto (Default)":s.titleCase(j)},j))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"LABELS"}),e.jsx(s.SmallSwitch,{checked:((E=r==null?void 0:r.labels)==null?void 0:E.enabled)!==!1,onCheckedChange:j=>x("enabled",j)})]}),((V=r==null?void 0:r.labels)==null?void 0:V.enabled)!==!1&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Rotation"}),e.jsxs(s.Select,{value:String(((A=r==null?void 0:r.labels)==null?void 0:A.rotation)||"auto"),onValueChange:j=>x("rotation",j==="auto"?"auto":Number(j)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(j=>e.jsx(s.SelectItem,{value:j,className:"text-xs",children:j==="auto"?"Auto (Default)":`${j}°`},j))})]})]})]}),a==="value"&&e.jsx(Vs,{formatOptions:(r==null?void 0:r.formatOptions)||{},onFormatOptionsChange:j=>i({...r,formatOptions:j}),showTitle:!0,title:"FORMAT"}),a==="value"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"SCALE"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-8 text-xs text-muted-foreground",children:"Min"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"auto",value:((T=r==null?void 0:r.scale)==null?void 0:T.min)==="auto"||((v=r==null?void 0:r.scale)==null?void 0:v.min)===void 0?"":String(r.scale.min),onSave:j=>p("min",j),className:""})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-8 text-xs text-muted-foreground",children:"Max"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"auto",value:((D=r==null?void 0:r.scale)==null?void 0:D.max)==="auto"||((M=r==null?void 0:r.scale)==null?void 0:M.max)===void 0?"":String(r.scale.max),onSave:j=>p("max",j),className:""})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"w-8 text-xs text-muted-foreground",children:"Step"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"auto",value:((f=r==null?void 0:r.scale)==null?void 0:f.stepSize)==="auto"||((I=r==null?void 0:r.scale)==null?void 0:I.stepSize)===void 0?"":String(r.scale.stepSize),onSave:j=>p("stepSize",j),className:""})})]})]})]})]})]})}function Zs(t,n,a){var d,o,c;if(t==="x"){const l=(o=(d=n==null?void 0:n.config)==null?void 0:d.groupByColumns)==null?void 0:o[0];return(l==null?void 0:l.label)||(l==null?void 0:l.name)||""}const r=((c=n==null?void 0:n.config)==null?void 0:c.metricColumns)||[],i=(a==null?void 0:a.datasetOptions)||[];if(t==="y"){const l=r.filter((x,p)=>{const h=i.find(u=>u.idx===p);return!h||h.yAxisId!=="y2"});return l.length===1&&(l[0].label||l[0].name)||""}if(t==="y2"){const l=r.filter((x,p)=>{const h=i.find(u=>u.idx===p);return(h==null?void 0:h.yAxisId)==="y2"});return l.length===1&&(l[0].label||l[0].name)||""}return""}function Br(){const t=s.useEditorStore(l=>l.card),n=s.useEditorStore(l=>{var x;return(x=l.card)==null?void 0:x.preferences}),{setCardPreferences:a,updateCardInFrame:r}=s.useEditorActions(),i=Ae.useEffectiveEditorCardType();if(!t||["tornado","pyramid","kpi","treemap"].includes(i))return null;const d=s.AxisConfigurator.getAxisInfo(i,n);if(!d.hasXAxis&&!d.hasYAxis)return null;const o=(l,x)=>{let p;l==="x"?p="xAxisConfig":l==="y"?p="yAxisConfig":p="secondaryYAxisConfig";const h={...n||{},[p]:x};a(h);const u={...t,preferences:h};r(u)},c=d.hasY2Axis&&i==="combo";return e.jsxs(s.AccordionItem,{value:"axes",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(nt,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Axes"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs(s.Accordion,{type:"single",collapsible:!0,className:"w-full",children:[d.hasXAxis&&e.jsx(Xs,{axis:"x",label:"X-Axis",type:d.xAxisType,config:s.mergeAxisConfig(s.getDefaultAxisConfig(i,"x"),n==null?void 0:n.xAxisConfig),onChange:l=>o("x",l),defaultTitle:Zs("x",t,n)}),d.hasYAxis&&e.jsx(Xs,{axis:"y",label:c?"Y-Axis (Left)":"Y-Axis",type:d.yAxisType,config:s.mergeAxisConfig(s.getDefaultAxisConfig(i,"y"),n==null?void 0:n.yAxisConfig),onChange:l=>o("y",l),defaultTitle:Zs("y",t,n)}),c&&e.jsx(Xs,{axis:"y2",label:"Y2-Axis (Right)",type:"value",config:s.mergeAxisConfig({enabled:!0,position:"right"},n==null?void 0:n.secondaryYAxisConfig),onChange:l=>o("y2",l),defaultTitle:Zs("y2",t,n),hidePosition:!0})]})})]})}function zr(){const t=s.useEditorStore(h=>h.card),n=Ae.useEffectiveEditorCardType(),a=s.useEditorStore(h=>{var u,y,b,m;return(m=(b=(y=(u=h.card)==null?void 0:u.preferences)==null?void 0:y.chartOptions)==null?void 0:b.plugins)==null?void 0:m.legend}),{setLegendOptions:r}=s.useEditorActions();if(!t||!s.chartSupportsLegend(n))return null;const i=s.getDefaultLegendConfig(n),d=(i==null?void 0:i.display)??!0,o=(i==null?void 0:i.position)??"top",c=(i==null?void 0:i.align)??"center",l=(h,u)=>{const y={...a,[h]:u};r(y)},x=["top","bottom","left","right"],p=["start","center","end"];return e.jsxs(s.AccordionItem,{value:"legend",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Legend"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Display"}),e.jsx(s.SmallSwitch,{checked:(a==null?void 0:a.display)??d,onCheckedChange:h=>l("display",h)})]}),((a==null?void 0:a.display)??d)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:(a==null?void 0:a.position)||o,onValueChange:h=>l("position",h),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:x.map(h=>e.jsx(s.SelectItem,{value:h,className:"text-xs",children:s.titleCase(h)},h))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Alignment"}),e.jsxs(s.Select,{value:(a==null?void 0:a.align)||c,onValueChange:h=>l("align",h),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:p.map(h=>e.jsx(s.SelectItem,{value:h,className:"text-xs",children:s.titleCase(h)},h))})]})]})]})]})})]})}function qr(){var L,S,F,O,_,Q,B,K,se,H,te;const t=s.useEditorStore(z=>z.card),n=Ae.useEffectiveEditorCardType(),a=s.useEditorStore(z=>{var W,le;return(le=(W=z.card)==null?void 0:W.preferences)==null?void 0:le.dataLabelsConfig}),r=s.useEditorStore(z=>{var W;return(W=z.card)==null?void 0:W.preferences}),{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions();if(!t||!s.chartSupportsDataLabels(n))return null;const o=n==="bullet"?((L=r==null?void 0:r.bulletConfig)==null?void 0:L.orientation)??(((S=r==null?void 0:r.chartOptions)==null?void 0:S.indexAxis)==="x"?"vertical":"horizontal"):void 0,c=o!=null?o==="horizontal":((F=r==null?void 0:r.chartOptions)==null?void 0:F.indexAxis)==="y",l=n==="stackedBar"||n==="stackedLine",x=n==="pie"||n==="doughnut"||n==="polarArea"||n==="funnel",p=!x,h=n==="bubble"||n==="scatter",u=(_=(O=r==null?void 0:r.chartOptions)==null?void 0:O.plugins)==null?void 0:_.datalabels,y=(u==null?void 0:u.display)!==!1&&((u==null?void 0:u.anchor)||(u==null?void 0:u.align)),b=s.getDefaultDataLabelsConfig(n,t.preferences),m=a??b,g=(b==null?void 0:b.enabled)??y??!1,w=(a==null?void 0:a.enabled)!==void 0?a.enabled:g,E=(z,W)=>{const ne={...b??{},...a??{},[z]:W};z==="enabled"&&(ne.display=W,W&&h&&!ne.position&&(ne.position="bottom")),z==="position"&&h&&(ne.position="bottom");const ue={...t.preferences||{},dataLabelsConfig:ne};i(ue);const ee={...t,preferences:ue};d(ee)},V=(z,W)=>{const le=a??{},ne={...b??{},...le,font:{...le.font||{},[z]:W}},ue={...t.preferences||{},dataLabelsConfig:ne};i(ue);const ee={...t,preferences:ue};d(ee)},A=(z,W)=>{const le=a??{},ne={...b??{},...le,formatOptions:{...le.formatOptions||{},[z]:W}},ue={...t.preferences||{},dataLabelsConfig:ne};i(ue);const ee={...t,preferences:ue};d(ee)},T=()=>{const z=n;return z==="stackedBar"||z==="stackedLine"||z==="pie"||z==="doughnut"?"center":c?"right":"top"},v=n!=="treemap"&&n!=="heatmap",D=n!=="treemap",M=T();let f=[];if(v)if(h)f=["bottom"];else if(l||x)f=["center"];else{const z=c?["center","left","right"]:["center","top","bottom"];f=["auto",...n==="bullet"?z:z.filter(le=>le!==M),"custom"]}const I=()=>s.titleCase(M),j=["center","start","end"],k=["center","start","end","top","bottom"],R=p?["auto","number","currency","percent","none"]:["number","currency","percent","none"],P=[{value:"USD",label:"USD - US Dollar"},{value:"EUR",label:"EUR - Euro"},{value:"GBP",label:"GBP - British Pound"},{value:"JPY",label:"JPY - Japanese Yen"},{value:"CNY",label:"CNY - Chinese Yuan"},{value:"INR",label:"INR - Indian Rupee"},{value:"CAD",label:"CAD - Canadian Dollar"},{value:"AUD",label:"AUD - Australian Dollar"}],N=[{value:"en-US",label:"English (US)"},{value:"en-GB",label:"English (UK)"},{value:"de-DE",label:"German"},{value:"fr-FR",label:"French"},{value:"es-ES",label:"Spanish"},{value:"it-IT",label:"Italian"},{value:"pt-BR",label:"Portuguese (Brazil)"},{value:"zh-CN",label:"Chinese (Simplified)"}];return e.jsxs(s.AccordionItem,{value:"data-labels",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Tn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Data Labels"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Display"}),e.jsx(s.SmallSwitch,{checked:w,onCheckedChange:z=>E("enabled",z)})]}),w&&e.jsxs(e.Fragment,{children:[v&&!l&&!x&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:h?(m==null?void 0:m.position)||"bottom":(m==null?void 0:m.position)||"auto",onValueChange:z=>E("position",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:f.map(z=>e.jsx(s.SelectItem,{value:z,className:"text-xs",children:z==="auto"?I():z==="custom"?"Custom (Advanced)":s.titleCase(z)},z))})]})]}),l&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Show Total"}),e.jsx(s.SmallSwitch,{checked:(a==null?void 0:a.showTotal)??!1,onCheckedChange:z=>E("showTotal",z)})]}),(m==null?void 0:m.position)==="custom"&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-16",children:"Anchor"}),e.jsxs(s.Select,{value:(m==null?void 0:m.anchor)||"center",onValueChange:z=>E("anchor",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:j.map(z=>e.jsx(s.SelectItem,{value:z,className:"text-xs",children:s.titleCase(z)},z))})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-16",children:"Align"}),e.jsxs(s.Select,{value:String((m==null?void 0:m.align)||"center"),onValueChange:z=>E("align",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:k.map(z=>e.jsx(s.SelectItem,{value:z,className:"text-xs",children:s.titleCase(z)},z))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Format"}),e.jsxs(s.Select,{value:(m==null?void 0:m.format)||(p?"auto":"none"),onValueChange:z=>E("format",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:R.map(z=>e.jsx(s.SelectItem,{value:z,className:"text-xs",children:z==="auto"&&p?"Auto (Use Axis)":z==="none"?"None (Raw Value)":s.titleCase(z)},z))})]})]}),(m==null?void 0:m.format)&&!["auto","none"].includes(m.format)&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[["number","currency","percent"].includes(m.format)&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Decimals"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"0",value:String(((Q=m==null?void 0:m.formatOptions)==null?void 0:Q.decimalPlaces)??(m.format==="currency"?2:m.format==="percent"?1:0)),onSave:z=>A("decimalPlaces",Number(z)),className:""})})]}),m.format==="currency"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Currency"}),e.jsxs(s.Select,{value:((B=m==null?void 0:m.formatOptions)==null?void 0:B.currency)||"USD",onValueChange:z=>A("currency",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:P.map(z=>e.jsx(s.SelectItem,{value:z.value,className:"text-xs",children:z.label},z.value))})]})]}),["number","currency"].includes(m.format)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Abbreviate (K, M, B)"}),e.jsx(s.SmallSwitch,{checked:((K=m==null?void 0:m.formatOptions)==null?void 0:K.useSuffix)??!1,onCheckedChange:z=>A("useSuffix",z)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Locale"}),e.jsxs(s.Select,{value:((se=m==null?void 0:m.formatOptions)==null?void 0:se.locale)||"en-US",onValueChange:z=>A("locale",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:N.map(z=>e.jsx(s.SelectItem,{value:z.value,className:"text-xs",children:z.label},z.value))})]})]})]}),D&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Appearance"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Size"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"12",value:String(((H=m==null?void 0:m.font)==null?void 0:H.size)||12),onSave:z=>V("size",Number(z)),className:""})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Weight"}),e.jsxs(s.Select,{value:((te=m==null?void 0:m.font)==null?void 0:te.weight)||"normal",onValueChange:z=>V("weight",z),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"normal",className:"text-xs",children:"Normal"}),e.jsx(s.SelectItem,{value:"bold",className:"text-xs",children:"Bold"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Color"}),e.jsxs(s.Select,{value:(m==null?void 0:m.color)==="auto"||!(m!=null&&m.color)?"auto":"custom",onValueChange:z=>{z==="auto"&&E("color","auto")},children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"auto",className:"text-xs",children:"Auto (Smart Contrast)"}),e.jsx(s.SelectItem,{value:"custom",disabled:!0,className:"text-xs",children:"Custom (Coming Soon)"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground w-20",children:"Rotation"}),e.jsx("div",{className:"flex-1",children:e.jsx(qe,{type:"number",placeholder:"0",value:String((m==null?void 0:m.rotation)||0),onSave:z=>E("rotation",Number(z)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"degrees"})]})]})]})]})})]})}const xa={difference:{label:"Difference",description:"Shows the exact difference between two values.",formula:"Primary - Secondary",example:"Sales increased by $5,000 compared to last year."},change:{label:"Change",description:"Shows the percentage increase or decrease between two values.",formula:"(Primary - Secondary) / Secondary × 100%",example:"Year-over-year sales change of 25%."},change_difference:{label:"Change (difference)",description:"Shows both the percentage change and the exact difference between two values.",formula:`% Change: (Primary - Secondary) / Secondary × 100%
188
- Difference: Primary - Secondary`,example:"Sales grew by 25% ($5,000) compared to last year."},ratio:{label:"Ratio",description:"Shows how much of one value is covered by another — useful for quotas and benchmarks.",formula:"Primary / Secondary × 100%",example:"You've achieved 80% of your sales quota."}};function _r(){var u,y,b,m,g,w,E,V,A,T;const t=s.useEditorStore(v=>v.card),{setCardPreferences:n}=s.useEditorActions(),a=Ae.useEffectiveEditorCardType(),r=((u=t.config)==null?void 0:u.metricColumns)||[],i=((y=t.config)==null?void 0:y.groupByColumns)||[],d=r.length===2&&i.length===0,o=r.some(v=>v.comparisonType&&v.comparisonType!=="none");if(!(a==="kpi"&&(d||o)))return null;const l=((m=(b=t.preferences)==null?void 0:b.kpiVisualOptions)==null?void 0:m.metricComparison)||{},x=v=>{var M;const D={...t.preferences,kpiVisualOptions:{...(M=t.preferences)==null?void 0:M.kpiVisualOptions,metricComparison:{...l,...v}}};n(D)},p=o||l.enabled,h=r.some(v=>v.comparisonType==="previous_period"||v.comparisonType==="same_period_last_year"||v.comparisonType==="start_vs_end");return e.jsxs(s.AccordionItem,{value:"comparison",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ca,{className:"h-4 w-4"}),e.jsx("span",{children:"Comparison"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[d&&r.length===2&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"enable-comparison",className:"text-xs",children:"Enable Metric Comparison"}),e.jsx(s.SmallSwitch,{id:"enable-comparison",checked:l.enabled||!1,onCheckedChange:v=>x({enabled:v,...v&&!l.calculationType?{calculationType:"difference"}:{}})})]}),p&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Label,{htmlFor:"calculation-type",className:"text-xs font-medium uppercase text-muted-foreground",children:"Calculated as"}),e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Info,{className:"h-3 w-3 cursor-help text-muted-foreground"})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-xs",children:(()=>{const v=l.calculationType||"difference",D=xa[v];return e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsx("div",{className:"text-sm font-semibold",children:D==null?void 0:D.label}),e.jsx("p",{children:D==null?void 0:D.description}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium",children:"Formula:"})," ",e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 text-[10px]",children:D==null?void 0:D.formula})]}),e.jsxs("div",{className:"border-t pt-1.5 italic",children:[e.jsx("span",{className:"font-medium",children:"Example:"})," ",D==null?void 0:D.example]})]})})()})]})]}),e.jsxs(s.Select,{value:l.calculationType||"difference",onValueChange:v=>x({calculationType:v}),children:[e.jsx(s.SelectTrigger,{id:"calculation-type",className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Object.entries(xa).map(([v,D])=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:D.label},v))})]})]}),e.jsx(Vs,{formatOptions:l.formatOptions||{},onFormatOptionsChange:v=>x({formatOptions:v}),showTitle:!0,title:"COMPARISON FORMAT"}),(h||d)&&e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Indicator"}),d&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:l.position||"right",onValueChange:v=>x({position:v}),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"right",className:"text-xs",children:"Right"}),e.jsx(s.SelectItem,{value:"left",className:"text-xs",children:"Left"}),e.jsx(s.SelectItem,{value:"top",className:"text-xs",children:"Top"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-arrow",checked:l.showArrow!==!1,onCheckedChange:v=>x({showArrow:v})}),e.jsx(s.Label,{htmlFor:"show-arrow",className:"cursor-pointer text-xs text-muted-foreground",children:"Arrow"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-color",checked:l.showColor!==!1,onCheckedChange:v=>x({showColor:v})}),e.jsx(s.Label,{htmlFor:"show-color",className:"cursor-pointer text-xs text-muted-foreground",children:"Color"})]}),l.showColor!==!1&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-3",children:[e.jsx(es,{value:((g=l.colorConfig)==null?void 0:g.increase)||"green",onChange:v=>x({colorConfig:{...l.colorConfig,increase:v}}),label:"Primary > Secondary"}),e.jsx(es,{value:((w=l.colorConfig)==null?void 0:w.decrease)||"red",onChange:v=>x({colorConfig:{...l.colorConfig,decrease:v}}),label:"Primary < Secondary"}),e.jsx(es,{value:((E=l.colorConfig)==null?void 0:E.noChange)||"neutral",onChange:v=>x({colorConfig:{...l.colorConfig,noChange:v}}),label:"Primary = Secondary"})]})]}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Label"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"conditional-label",checked:l.conditionalLabel||!1,onCheckedChange:v=>x({conditionalLabel:v})}),e.jsx(s.Label,{htmlFor:"conditional-label",className:"cursor-pointer text-xs text-muted-foreground",children:"Conditional"})]}),l.conditionalLabel?e.jsxs("div",{className:"space-y-3 border-l-2 border-muted pl-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-increase",className:"text-xs text-muted-foreground",children:["Primary ",">"," Secondary"]}),e.jsx(s.Input,{id:"label-increase",type:"text",value:((V=l.conditionalLabels)==null?void 0:V.increase)??"Increase",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,increase:v.target.value}}),placeholder:"Increase",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-decrease",className:"text-xs text-muted-foreground",children:["Primary ","<"," Secondary"]}),e.jsx(s.Input,{id:"label-decrease",type:"text",value:((A=l.conditionalLabels)==null?void 0:A.decrease)??"Decrease",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,decrease:v.target.value}}),placeholder:"Decrease",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-no-change",className:"text-xs text-muted-foreground",children:"Primary = Secondary"}),e.jsx(s.Input,{id:"label-no-change",type:"text",value:((T=l.conditionalLabels)==null?void 0:T.noChange)??"No change",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,noChange:v.target.value}}),placeholder:"No change",className:"h-7 text-xs"})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-name",className:"text-xs text-muted-foreground",children:"Previous Label"}),e.jsx(s.Input,{id:"label-name",type:"text",value:l.labelName??"",onChange:v=>x({labelName:v.target.value}),placeholder:"e.g. Previous, Last Period",className:"h-7 text-xs"})]})]})]})]})]})}function $r(){var d,o;const t=s.useEditorStore(c=>c.card),{setCardPreferences:n}=s.useEditorActions();if(Ae.useEffectiveEditorCardType()!=="kpi")return null;const r=((o=(d=t.preferences)==null?void 0:d.kpiVisualOptions)==null?void 0:o.formatOptions)||{},i=c=>{var x;const l={...t.preferences,kpiVisualOptions:{...(x=t.preferences)==null?void 0:x.kpiVisualOptions,formatOptions:c}};n(l)};return e.jsxs(s.AccordionItem,{value:"kpi-format",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Hash,{className:"h-4 w-4"}),e.jsx("span",{children:"Number Format"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:e.jsx(Vs,{formatOptions:r,onFormatOptionsChange:i,showTitle:!1})})]})}function Gr(){var d;const t=s.useEditorStore(o=>{var c;return(c=o.card)==null?void 0:c.type}),n=s.useEditorStore(o=>{var c;return(c=o.card)==null?void 0:c.preferences}),{setCardPreferences:a}=s.useEditorActions();if(t!=="treemap")return null;const r=((d=n==null?void 0:n.chartOptions)==null?void 0:d.treemapColorMode)??"branch",i=o=>{const c={...n||{},chartOptions:{...n==null?void 0:n.chartOptions,treemapColorMode:o}};a(c)};return e.jsxs(s.AccordionItem,{value:"treemap-color-mode",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.TbChartTreemap,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Treemap Colors"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:e.jsxs(s.RadioGroup,{value:r,onValueChange:o=>i(o??"branch"),className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:"treemap-color-branch",value:"branch"}),e.jsxs(s.Label,{htmlFor:"treemap-color-branch",className:"flex flex-col text-sm font-normal leading-tight",children:[e.jsx("span",{className:"font-medium",children:"Shade by value (default)"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Keeps parent hue and adjusts lightness based on the node's share within the branch."})]})]}),e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:"treemap-color-category",value:"category"}),e.jsxs(s.Label,{htmlFor:"treemap-color-category",className:"flex flex-col text-sm font-normal leading-tight",children:[e.jsx("span",{className:"font-medium",children:"Single color per category"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Applies the top-level color to all descendants without lightening/darkening."})]})]})]})})]})}const Kr=Object.keys(s.HEATMAP_PRESET_PALETTES);function Ur(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var y;return(y=u.card)==null?void 0:y.preferences}),{setCardPreferences:a}=s.useEditorActions(),r=(t==null?void 0:t.type)==="heatmap",i=(n==null?void 0:n.heatmapConfig)||{},d=i.colorPalette??"green",o=i.legendPosition??"bottom",c=C.useMemo(()=>i.colorRange&&i.colorRange[0]&&i.colorRange[1]?[i.colorRange[0],i.colorRange[1]]:[...s.DEFAULT_HEATMAP_CUSTOM_RANGE],[i.colorRange]),l=u=>{const y={...i,...u};y.colorPalette!=="custom"?delete y.colorRange:(!y.colorRange||!y.colorRange[0]||!y.colorRange[1])&&(y.colorRange=[...s.DEFAULT_HEATMAP_CUSTOM_RANGE]),a({...n||{},heatmapConfig:y})},x=u=>{l({colorPalette:u,colorRange:u==="custom"?i.colorRange??[...s.DEFAULT_HEATMAP_CUSTOM_RANGE]:void 0})},p=(u,y)=>{const b=[...c];b[u]=y,l({colorPalette:"custom",colorRange:b})},h=u=>{l({legendPosition:u})};return r?e.jsxs(s.AccordionItem,{value:"heatmap-color-config",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Grid3x3,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Heatmap Settings"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:[e.jsxs(s.RadioGroup,{value:d,onValueChange:u=>x(u??"blue"),className:"space-y-3",children:[Kr.map(u=>{const y=s.HEATMAP_PRESET_PALETTES[u];return e.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:`heatmap-${u}`,value:u}),e.jsxs(s.Label,{htmlFor:`heatmap-${u}`,className:"flex w-full flex-col gap-1 text-sm font-normal",children:[e.jsx("span",{className:"font-medium",children:y.label}),e.jsx("span",{className:"h-2 rounded-full",style:{background:`linear-gradient(90deg, ${y.start}, ${y.end})`}})]})]},u)}),e.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-border px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.RadioGroupItem,{id:"heatmap-custom",value:"custom"}),e.jsx(s.Label,{htmlFor:"heatmap-custom",className:"text-sm font-medium",children:"Custom colors"})]}),d==="custom"&&e.jsxs("div",{className:"flex flex-col gap-3 pl-6",children:[e.jsx(es,{value:c[0],onChange:u=>p(0,u),label:"Start color"}),e.jsx(es,{value:c[1],onChange:u=>p(1,u),label:"End color"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Color scale position"}),e.jsxs(s.Select,{value:o,onValueChange:u=>h(u??"bottom"),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:["top","bottom","left","right"].map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:u[0].toUpperCase()+u.slice(1)},u))})]})]})]})]}):null}const ha=["poor","satisfactory","good"];function pa(t){if(!t)return;const n={...t};return n.targetMetricKey||delete n.targetMetricKey,n.comparativeMetricKey||delete n.comparativeMetricKey,!n.targetValue&&n.targetValue!==0&&delete n.targetValue,(!n.rangeKeys||Object.keys(n.rangeKeys).length===0)&&delete n.rangeKeys,(!n.ranges||Object.keys(n.ranges).length===0)&&delete n.ranges,(!n.rangeLabels||Object.keys(n.rangeLabels).length===0)&&delete n.rangeLabels,n}function Hr(){var R,P;const t=s.useEditorStore(N=>N.card.preferences),n=s.useEditorStore(N=>N.card),a=s.useEditorStore(N=>N.isDevMode),{setCardPreferences:r,setChartOrientation:i}=s.useEditorActions(),d=C.useMemo(()=>(t==null?void 0:t.bulletConfig)||{},[t==null?void 0:t.bulletConfig]),c=s.hasValidCardConfig(n==null?void 0:n.config)&&!a,[l,x]=C.useState(d.showRanges??!1),[p,h]=C.useState(d.rangesArePercentages??!1),u=d.disableAutoComparative?!1:d.comparativeMetricKey!==void 0||!c,[y,b]=C.useState(u);C.useEffect(()=>{x(d.showRanges??!1)},[d.showRanges]),C.useEffect(()=>{h(d.rangesArePercentages??!1)},[d.rangesArePercentages]);const m=d.targetValue===void 0?"":String(d.targetValue);C.useEffect(()=>{const N=d.disableAutoComparative?!1:d.comparativeMetricKey!==void 0||!c;b(N)},[d.disableAutoComparative,d.comparativeMetricKey,c]);const g=C.useMemo(()=>{var N,L;return((L=(N=n==null?void 0:n.config)==null?void 0:N.metricColumns)==null?void 0:L.map(S=>{const F=S.label||S.name||S.alias||"";return{value:F,label:F}}))||[]},[(R=n==null?void 0:n.config)==null?void 0:R.metricColumns]);C.useEffect(()=>{var B,K;if(!t||g.length===0)return;const N={};let L=!1;const S=(B=g[1])==null?void 0:B.value;!d.targetMetricKey&&S&&(N.targetMetricKey=S,L=!0);const F=(K=g[2])==null?void 0:K.value;!d.comparativeMetricKey&&!d.disableAutoComparative&&F&&(N.comparativeMetricKey=F,L=!0);const O=g.slice(3),_={...d.rangeKeys||{}};let Q=!1;if(ha.forEach((se,H)=>{!_[se]&&O[H]&&(_[se]=O[H].value,Q=!0)}),Q&&(N.rangeKeys=_,L=!0,d.showRanges===void 0&&(N.showRanges=!0)),L){const se=pa({...d,...N});r({...t,bulletConfig:se})}},[g,d,t,r]);const w=N=>{const L=pa({...d,...N});r({...t,bulletConfig:L})},E=(N,L)=>{const S={...d.rangeKeys||{},[N]:L.trim()};L.trim()||delete S[N],w({rangeKeys:Object.keys(S).length>0?S:void 0})},V=(N,L)=>{const S=L===""?void 0:Number(L),F={...d.ranges||{}};S===void 0||Number.isNaN(S)?delete F[N]:F[N]=S,w({ranges:Object.keys(F).length?F:void 0})},A=N=>{if(N===""){w({targetValue:void 0});return}const L=Number(N);w({targetValue:Number.isNaN(L)?void 0:L})},T=(N,L)=>{const S=L.trim(),F={...d.rangeLabels||{}};S?F[N]=S:delete F[N],w({rangeLabels:Object.keys(F).length>0?F:void 0})},v=N=>{x(N),w({showRanges:N})},D=N=>{h(N),w({rangesArePercentages:N})},M=d.orientation||(((P=t==null?void 0:t.chartOptions)==null?void 0:P.indexAxis)==="y"?"horizontal":"vertical"),f=N=>{w({orientation:N}),i(N==="horizontal"?"y":"x")},I=[{value:"__none",label:"None"},...g.map(N=>({value:N.value,label:N.label}))],j=I,k=N=>{if(b(N),!N){w({comparativeMetricKey:void 0,disableAutoComparative:!0});return}if(!c){w({disableAutoComparative:!1});return}if(d.comparativeMetricKey)w({disableAutoComparative:!1});else{const L=g.find(S=>S.value!==d.targetMetricKey);w({comparativeMetricKey:L==null?void 0:L.value,disableAutoComparative:!1})}};return e.jsxs(s.AccordionItem,{value:"bullet-config",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.BulletChartIcon,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Bullet Chart"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-6 border-t border-border/50 py-4",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"ORIENTATION"}),e.jsxs(s.Select,{value:M,onValueChange:N=>f(N),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"horizontal",className:"text-xs",children:"Horizontal"}),e.jsx(s.SelectItem,{value:"vertical",className:"text-xs",children:"Vertical"})]})]})]}),c&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TARGET METRIC"}),e.jsxs(s.Select,{value:d.targetMetricKey||"__none",onValueChange:N=>w({targetMetricKey:N==="__none"?void 0:N}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select metric"})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"__none",className:"text-xs",children:"None"}),g.map(N=>e.jsx(s.SelectItem,{value:N.value,className:"text-xs",children:N.label},N.value))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"COMPARATIVE METRIC"}),c?e.jsxs(s.Select,{value:d.comparativeMetricKey||"__none",onValueChange:N=>w({comparativeMetricKey:N==="__none"?void 0:N,disableAutoComparative:N==="__none"}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select metric"})}),e.jsx(s.SelectContent,{children:I.map(N=>e.jsx(s.SelectItem,{value:N.value,className:"text-xs",children:N.label},N.value))})]}):e.jsxs("div",{className:"space-y-2 rounded-md border border-border/50 p-3 text-xs",children:[e.jsxs("div",{className:"flex items-center justify-between font-medium",children:[e.jsx("span",{children:"Show comparative"}),e.jsx(s.SmallSwitch,{checked:y,onCheckedChange:N=>k(N)})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Comparative values are auto-detected from the third metric in your results."})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TARGET VALUE (FALLBACK)"}),e.jsx(Pe,{type:"number",className:"h-8 text-xs",value:m,onCommit:A,placeholder:"Optional numeric fallback"})]})]}),e.jsxs("section",{className:"space-y-4 rounded-md border border-border/60 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"QUALITATIVE RANGES"}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:200,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("button",{type:"button",className:"text-muted-foreground transition-colors hover:text-foreground",children:e.jsx(s.Info,{className:"h-3.5 w-3.5"})})}),e.jsx(s.TooltipContent,{side:"top",children:"Use columns or static values for Poor / Average / Good."})]})})]}),e.jsx("div",{className:"flex items-center gap-2 text-xs font-medium",children:e.jsx(s.SmallSwitch,{checked:l,onCheckedChange:v})})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium",children:[e.jsx("input",{type:"checkbox",checked:p,disabled:!l,onChange:N=>D(N.target.checked),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"}),e.jsx("span",{children:"Use % of value"})]})]}),l&&e.jsx("div",{className:"space-y-3",children:ha.map(N=>{var L,S,F,O,_;return e.jsxs("div",{className:"space-y-2 rounded-md border border-border/60 bg-muted/40 p-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," LABEL"]}),e.jsx(Pe,{placeholder:`Display label (${N})`,value:((L=d.rangeLabels)==null?void 0:L[N])||"",onCommit:Q=>T(N,Q),className:"h-8 text-xs"})]}),c?e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," COLUMN"]}),e.jsxs(s.Select,{value:((S=d.rangeKeys)==null?void 0:S[N])||"__none",onValueChange:Q=>{Q==="__none"?E(N,""):E(N,Q)},children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select column"})}),e.jsx(s.SelectContent,{children:j.map(Q=>e.jsx(s.SelectItem,{value:Q.value,className:"text-xs",children:Q.label},Q.value))})]})]}):e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," COLUMN KEY"]}),e.jsx(Pe,{placeholder:"Column key",value:((F=d.rangeKeys)==null?void 0:F[N])||"",onCommit:Q=>E(N,Q),className:"h-8 text-xs"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," VALUE"]}),e.jsx(Pe,{type:"number",placeholder:p?"0.80":"Static value",value:((O=d.ranges)==null?void 0:O[N])===void 0?"":String((_=d.ranges)==null?void 0:_[N]),onCommit:Q=>V(N,Q),className:"h-8 text-xs"})]})]},N)})})]})]})]})}function fa(t){if(!t)return;const n={...t};if(n.xMetricKey||delete n.xMetricKey,n.yMetricKey||delete n.yMetricKey,n.radiusMetricKey||delete n.radiusMetricKey,n.labelKey||delete n.labelKey,n.groupKey||delete n.groupKey,n.enableGrouping===void 0&&delete n.enableGrouping,n.radiusScale||delete n.radiusScale,n.fixedRadius===void 0&&delete n.fixedRadius,n.minRadius===void 0&&delete n.minRadius,n.maxRadius===void 0&&delete n.maxRadius,Object.keys(n).length!==0)return n}function Jr(){var T,v,D,M,f,I,j,k,R,P,N,L;const t=s.useEditorStore(S=>S.card.preferences),n=s.useEditorStore(S=>S.card),a=Ae.useEffectiveEditorCardType(),r=s.useEditorStore(S=>S.isDevMode),{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions(),o=a==="bubble",c=a==="scatter",l=C.useMemo(()=>(t==null?void 0:t.bubbleScatterConfig)||{},[t==null?void 0:t.bubbleScatterConfig]),p=s.hasValidCardConfig(n==null?void 0:n.config)&&!r,h=C.useMemo(()=>{var S,F;return((F=(S=n==null?void 0:n.config)==null?void 0:S.metricColumns)==null?void 0:F.map(O=>{const _=O.label||O.name||O.alias||"";return{value:_,label:_}}))||[]},[(T=n==null?void 0:n.config)==null?void 0:T.metricColumns]),u=C.useMemo(()=>{var S,F;return((F=(S=n==null?void 0:n.config)==null?void 0:S.groupByColumns)==null?void 0:F.map(O=>{const _=O.label||O.name||O.alias||"";return{value:_,label:_}}))||[]},[(v=n==null?void 0:n.config)==null?void 0:v.groupByColumns]),y=C.useMemo(()=>l.enableGrouping!==void 0?l.enableGrouping:!r&&u.length>=2,[l.enableGrouping,r,u.length]),[b,m]=C.useState(y);C.useEffect(()=>{m(y)},[y]);const g=S=>{const F={...t||{},bubbleScatterConfig:S};i(F),n&&d({...n,preferences:F})},w=S=>{i(S),n&&d({...n,preferences:S})};C.useEffect(()=>{if(!t||h.length===0)return;const S={};let F=!1;if(!l.xMetricKey&&h[0]&&(S.xMetricKey=h[0].value,F=!0),!l.yMetricKey&&h[1]&&(S.yMetricKey=h[1].value,F=!0),o&&!l.radiusMetricKey&&h[2]&&(S.radiusMetricKey=h[2].value,F=!0),!l.labelKey&&u[0]&&(S.labelKey=u[0].value,F=!0),y&&!l.groupKey&&u[1]&&(S.groupKey=u[1].value,S.enableGrouping=!0,F=!0),F){const O=fa({...l,...S});g(O)}},[h,u,l,t,i,o,y]);const E=S=>{const F=fa({...l,...S});g(F)},V=S=>{m(S),E({enableGrouping:S,groupKey:S?l.groupKey:void 0})};if(!o&&!c)return null;const A=o?s.Circle:s.ChartScatter;return e.jsxs(s.AccordionItem,{value:"bubble-scatter-config",children:[e.jsx(s.AccordionTrigger,{className:"py-2 text-sm",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4"}),e.jsxs("span",{children:[o?"Bubble":"Scatter"," Configuration"]})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 px-1 pb-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-1 text-xs font-medium text-muted-foreground",children:["Dimensions",e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{children:e.jsx(s.Info,{className:"h-3 w-3"})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-xs",children:e.jsx("p",{children:"Label identifies each point. Group creates separate series in the legend."})})]})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Label Column"}),p?e.jsxs(s.Select,{value:l.labelKey||"",onValueChange:S=>E({labelKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select label column"})}),e.jsx(s.SelectContent,{children:u.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for labels",value:l.labelKey||"",onCommit:S=>E({labelKey:S})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Group points into series"}),e.jsx(s.SmallSwitch,{checked:b,onCheckedChange:V})]}),b&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Group By"}),p?e.jsxs(s.Select,{value:l.groupKey||"",onValueChange:S=>E({groupKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select group column"})}),e.jsx(s.SelectContent,{children:u.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for grouping",value:l.groupKey||"",onCommit:S=>E({groupKey:S})})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Metrics"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"X Axis"}),p?e.jsxs(s.Select,{value:l.xMetricKey||"",onValueChange:S=>E({xMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select X metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for X axis",value:l.xMetricKey||"",onCommit:S=>E({xMetricKey:S})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Y Axis"}),p?e.jsxs(s.Select,{value:l.yMetricKey||"",onValueChange:S=>E({yMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select Y metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for Y axis",value:l.yMetricKey||"",onCommit:S=>E({yMetricKey:S})})]}),o&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Radius"}),p?e.jsxs(s.Select,{value:l.radiusMetricKey||"",onValueChange:S=>E({radiusMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select radius metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for radius",value:l.radiusMetricKey||"",onCommit:S=>E({radiusMetricKey:S})})]})]}),o&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Radius Settings"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Scale Mode"}),e.jsxs(s.Select,{value:l.radiusScale||"sqrt",onValueChange:S=>E({radiusScale:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"sqrt",children:"Square Root (area-proportional)"}),e.jsx(s.SelectItem,{value:"linear",children:"Linear"}),e.jsx(s.SelectItem,{value:"fixed",children:"Fixed Size"})]})]})]}),l.radiusScale!=="fixed"&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Min Radius"}),e.jsx(Pe,{className:"h-8 text-xs",type:"number",placeholder:"5",value:((D=l.minRadius)==null?void 0:D.toString())||"",onCommit:S=>E({minRadius:S?Number(S):void 0})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Max Radius"}),e.jsx(Pe,{className:"h-8 text-xs",type:"number",placeholder:"30",value:((M=l.maxRadius)==null?void 0:M.toString())||"",onCommit:S=>E({maxRadius:S?Number(S):void 0})})]})]}),l.radiusScale==="fixed"&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs(s.Label,{className:"text-xs",children:["Fixed Radius: ",l.fixedRadius||10]}),e.jsx(s.Slider,{value:[l.fixedRadius||10],onValueChange:([S])=>E({fixedRadius:S}),min:3,max:30,step:1,className:"py-2"})]})]}),c&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Point Settings"}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs(s.Label,{className:"text-xs",children:["Point Size: ",l.fixedRadius||5]}),e.jsx(s.Slider,{value:[l.fixedRadius||5],onValueChange:([S])=>E({fixedRadius:S}),min:2,max:15,step:1,className:"py-2"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Axis Titles"}),e.jsx(s.SmallSwitch,{checked:((I=(f=t==null?void 0:t.xAxisConfig)==null?void 0:f.name)==null?void 0:I.enabled)??!1,onCheckedChange:S=>{var _,Q,B,K;const F=l.xMetricKey||"X Axis",O=l.yMetricKey||"Y Axis";w({...t??{},xAxisConfig:{...t==null?void 0:t.xAxisConfig,name:{enabled:S,text:((Q=(_=t==null?void 0:t.xAxisConfig)==null?void 0:_.name)==null?void 0:Q.text)||F}},yAxisConfig:{...t==null?void 0:t.yAxisConfig,name:{enabled:S,text:((K=(B=t==null?void 0:t.yAxisConfig)==null?void 0:B.name)==null?void 0:K.text)||O}}})}})]}),((k=(j=t==null?void 0:t.xAxisConfig)==null?void 0:j.name)==null?void 0:k.enabled)&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"X Title"}),e.jsx(Pe,{className:"h-8 text-xs",placeholder:l.xMetricKey||"X Axis",value:((P=(R=t==null?void 0:t.xAxisConfig)==null?void 0:R.name)==null?void 0:P.text)||"",onCommit:S=>{var F;w({...t??{},xAxisConfig:{...t==null?void 0:t.xAxisConfig,name:{...(F=t==null?void 0:t.xAxisConfig)==null?void 0:F.name,enabled:!0,text:S||l.xMetricKey||"X Axis"}}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Y Title"}),e.jsx(Pe,{className:"h-8 text-xs",placeholder:l.yMetricKey||"Y Axis",value:((L=(N=t==null?void 0:t.yAxisConfig)==null?void 0:N.name)==null?void 0:L.text)||"",onCommit:S=>{var F;w({...t??{},yAxisConfig:{...t==null?void 0:t.yAxisConfig,name:{...(F=t==null?void 0:t.yAxisConfig)==null?void 0:F.name,enabled:!0,text:S||l.yMetricKey||"Y Axis"}}})}})]})]})]})]})]})}const Qr=[{value:"percentOfTotal",label:"% of Total",description:"Each stage shows percentage of the sum of all values"},{value:"percentOfFirst",label:"% of Stage 1",description:"First stage = 100%, others relative to first stage"}];function Yr(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var y;return(y=u.card)==null?void 0:y.preferences}),{setCardPreferences:a}=s.useEditorActions(),r=(t==null?void 0:t.type)==="funnel",i=(n==null?void 0:n.funnelConfig)||{},d=i.percentMode??"percentOfTotal",o=i.shrinkFraction??1,c=i.labelThreshold??0,l=u=>{const y={...i,...u};a({...n||{},funnelConfig:y})},x=u=>{l({percentMode:u})},p=u=>{l({shrinkFraction:u[0]})},h=u=>{l({labelThreshold:u[0]})};return r?e.jsxs(s.AccordionItem,{value:"funnel-config",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Filter,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Funnel Settings"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"PERCENTAGE MODE"}),e.jsx(s.RadioGroup,{value:d,onValueChange:u=>x(u),className:"space-y-2",children:Qr.map(u=>e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:`funnel-${u.value}`,value:u.value,className:"mt-0.5"}),e.jsxs(s.Label,{htmlFor:`funnel-${u.value}`,className:"flex flex-col gap-0.5 text-sm font-normal",children:[e.jsx("span",{className:"font-medium",children:u.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:u.description})]})]},u.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"SEGMENT SHRINK"}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Same Width"}),e.jsx(s.Slider,{value:[o],onValueChange:p,min:0,max:1,step:.1,className:"flex-1"}),e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Full Shrink"})]}),e.jsxs("p",{className:"text-center text-xs text-muted-foreground",children:["Current: ",Math.round(o*100),"%"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"LABEL VISIBILITY THRESHOLD"}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Show All"}),e.jsx(s.Slider,{value:[c],onValueChange:h,min:0,max:25,step:1,className:"flex-1"}),e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Hide Small"})]}),e.jsx("p",{className:"text-center text-xs text-muted-foreground",children:c===0?"Showing all labels":`Hide labels below ${c}%`})]})]})]}):null}function Bs(){const t=s.useEditorStore(d=>d.card),{data:n}=s.useDashboardCardQuery(t),{keys:a}=s.getKeys((n==null?void 0:n.records)||[]),r=a.slice(1).filter(d=>!s.METADATA_KEYS.includes(d));let i=r;if(["stackedBar","stackedLine"].includes(t.type)){const d=s.pivotData({dataArray:(n==null?void 0:n.records)||[],groupKey:a[0],pivotKey:a[1],valueKey:a[2]}),{keys:o}=s.getKeys(d);i=o.slice(1)}return{transformedMetricKeys:i,dimensionKeys:a.slice(0,1),keys:a,defaultMetricKeys:r}}const Wr=[{value:"USD",label:"USD - US Dollar"},{value:"EUR",label:"EUR - Euro"},{value:"GBP",label:"GBP - British Pound"},{value:"JPY",label:"JPY - Japanese Yen"},{value:"CNY",label:"CNY - Chinese Yuan"},{value:"INR",label:"INR - Indian Rupee"},{value:"CAD",label:"CAD - Canadian Dollar"},{value:"AUD",label:"AUD - Australian Dollar"}],Xr=[{value:"en-US",label:"English (US)"},{value:"en-GB",label:"English (UK)"},{value:"de-DE",label:"German"},{value:"fr-FR",label:"French"},{value:"es-ES",label:"Spanish"},{value:"it-IT",label:"Italian"},{value:"pt-BR",label:"Portuguese (Brazil)"},{value:"zh-CN",label:"Chinese (Simplified)"}],Zr=["center","start","end"],el=["center","start","end","top","bottom"];function zs({config:t,onChange:n,isHorizontal:a=!1,showAutoFormat:r=!0,positionOptions:i,showAppearance:d=!0}){var b,m,g,w,E,V;const o=i??(a?["auto","center","left","right","custom"]:["auto","center","top","bottom","custom"]),c=r?["auto","number","currency","percent","none"]:["number","currency","percent","none"],l=(A,T)=>{const v={...t,[A]:T};n(v)},x=(A,T)=>{const v={...t,font:{...(t==null?void 0:t.font)||{},[A]:T}};n(v)},p=(A,T)=>{const v={...t,formatOptions:{...(t==null?void 0:t.formatOptions)||{},[A]:T}};n(v)},h=()=>a?"Right":"Top",u=t||{},y=u.format||(r?"auto":"number");return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:u.position||"auto",onValueChange:A=>l("position",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:o.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:A==="auto"?h():A==="custom"?"Custom (Advanced)":s.titleCase(A)},A))})]})]}),u.position==="custom"&&e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Anchor"}),e.jsxs(s.Select,{value:u.anchor||"center",onValueChange:A=>l("anchor",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Zr.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:s.titleCase(A)},A))})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Align"}),e.jsxs(s.Select,{value:String(u.align||"center"),onValueChange:A=>l("align",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:el.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:s.titleCase(A)},A))})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Format"}),e.jsxs(s.Select,{value:y,onValueChange:A=>l("format",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:c.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:A==="auto"&&r?"Auto (Use Axis)":A==="none"?"None (Raw Value)":s.titleCase(A)},A))})]})]}),!["auto","none"].includes(y)&&e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[["number","currency","percent"].includes(y)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Decimals"}),e.jsx("div",{className:"w-16",children:e.jsx(qe,{type:"number",placeholder:"0",value:String(((b=u.formatOptions)==null?void 0:b.decimalPlaces)??(y==="currency"?2:y==="percent"?1:0)),onSave:A=>p("decimalPlaces",Number(A)),className:""})})]}),y==="currency"&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Currency"}),e.jsxs(s.Select,{value:((m=u.formatOptions)==null?void 0:m.currency)||"USD",onValueChange:A=>p("currency",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Wr.map(A=>e.jsx(s.SelectItem,{value:A.value,className:"text-xs",children:A.label},A.value))})]})]}),["number","currency"].includes(y)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Abbreviate (K, M, B)"}),e.jsx(s.SmallSwitch,{checked:((g=u.formatOptions)==null?void 0:g.useSuffix)??!1,onCheckedChange:A=>p("useSuffix",A)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Locale"}),e.jsxs(s.Select,{value:((w=u.formatOptions)==null?void 0:w.locale)||"en-US",onValueChange:A=>p("locale",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Xr.map(A=>e.jsx(s.SelectItem,{value:A.value,className:"text-xs",children:A.label},A.value))})]})]})]}),d&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Appearance"}),e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Size"}),e.jsx("div",{className:"w-16",children:e.jsx(qe,{type:"number",placeholder:"12",value:String(((E=u.font)==null?void 0:E.size)||12),onSave:A=>x("size",Number(A)),className:""})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Weight"}),e.jsxs(s.Select,{value:((V=u.font)==null?void 0:V.weight)||"normal",onValueChange:A=>x("weight",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"normal",className:"text-xs",children:"Normal"}),e.jsx(s.SelectItem,{value:"bold",className:"text-xs",children:"Bold"})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Color"}),e.jsxs(s.Select,{value:u.color==="auto"||!u.color?"auto":"custom",onValueChange:A=>{A==="auto"&&l("color","auto")},children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"auto",className:"text-xs",children:"Auto (Contrast)"}),e.jsx(s.SelectItem,{value:"custom",disabled:!0,className:"text-xs",children:"Custom"})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Rotation"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{className:"w-12",children:e.jsx(qe,{type:"number",placeholder:"0",value:String(u.rotation||0),onSave:A=>l("rotation",Number(A)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"°"})]})]})]})]})]})}const sl=[{type:"bar",icon:s.ChartColumnIncreasing,label:"Bar"},{type:"line",icon:s.ChartLine,label:"Line"}],tl=[0,1,2,3,4,5,6,8,10],al=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],nl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function rl(){return s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type})!=="combo"?null:e.jsxs(s.AccordionItem,{value:"combo-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(ll,{})})]})}function ll(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(ol,{metricKey:n,idx:a},n))})}function ol({metricKey:t,idx:n}){var w;const[a,r]=C.useState(!1),i=s.useEditorStore(E=>{var V;return(V=E.card)==null?void 0:V.preferences}),d=s.useEditorStore(E=>{var V,A;return(A=(V=E.card)==null?void 0:V.preferences)==null?void 0:A.datasetOptions}),o=d==null?void 0:d.find(E=>E.idx===n),{setCardPreferences:c}=s.useEditorStore(E=>E.actions),l=(o==null?void 0:o.type)||"bar",x=(o==null?void 0:o.yAxisId)||"y",p=((w=o==null?void 0:o.dataLabels)==null?void 0:w.enabled)??!1,h=l==="line"?s.ChartLine:s.ChartColumnIncreasing;function u(E){const V={idx:n,type:l,yAxisId:x,dataLabels:o==null?void 0:o.dataLabels,...E};if(!o)c({...i||{},datasetOptions:[...d||[],V]});else{const A=d==null?void 0:d.map(T=>T.idx===n?{...T,...V}:T);c({...i||{},datasetOptions:A})}}function y(E){u({type:E})}function b(E){u({yAxisId:E})}function m(E){u({dataLabels:{...o==null?void 0:o.dataLabels,enabled:E}})}function g(E){u({dataLabels:E})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(h,{className:"h-3 w-3"}),l==="line"?"Line":"Bar"]}),e.jsx("span",{className:s.cn("rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:x==="y2"?"Y2":"Y1"})]})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"flex items-end gap-4",children:[e.jsxs("div",{className:"flex-1 space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Chart Type"}),e.jsx("div",{className:"flex gap-2",children:sl.map(({type:E,icon:V,label:A})=>{const T=l===E;return e.jsxs("button",{onClick:()=>y(E),className:s.cn("flex items-center gap-2 rounded-md border px-3 py-1.5 text-xs transition-colors",T?"border-primary bg-primary/10 text-primary":"border-border bg-background text-muted-foreground hover:bg-muted"),children:[e.jsx(V,{className:"h-4 w-4"}),e.jsx("span",{children:A})]},E)})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Axis"}),e.jsxs(s.Select,{value:x,onValueChange:E=>b(E),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"y",className:"text-xs",children:"Y1 (Left)"}),e.jsx(s.SelectItem,{value:"y2",className:"text-xs",children:"Y2 (Right)"})]})]})]})]}),l==="line"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:(o==null?void 0:o.lineStyle)||"solid",onValueChange:E=>u({lineStyle:E}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:nl.map(({value:E,label:V})=>e.jsx(s.SelectItem,{value:E,className:"text-xs",children:V},E))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String((o==null?void 0:o.pointRadius)??3),onValueChange:E=>u({pointRadius:Number(E)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:tl.map(E=>e.jsx(s.SelectItem,{value:String(E),className:"text-xs",children:E===0?"None":E},E))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:(o==null?void 0:o.pointStyle)||"circle",onValueChange:E=>u({pointStyle:E}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:al.map(({value:E,label:V})=>e.jsx(s.SelectItem,{value:E,className:"text-xs",children:V},E))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:p,onCheckedChange:m})]}),p&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:g,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const et=[{value:"origin",label:"Origin (X-axis)",description:"Fill to the X-axis (y=0)"},{value:"start",label:"Start (Top)",description:"Fill to the top of chart area"},{value:"end",label:"End (Bottom)",description:"Fill to the bottom of chart area"},{value:"-1",label:"Previous Series",description:"Fill to the series below"},{value:"+1",label:"Next Series",description:"Fill to the series above"},{value:"false",label:"No Fill (Line)",description:"Show as line without fill"}],il=[0,1,2,3,4,5,6,8,10],cl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],dl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function ul(t){return t==null?"origin":t===!1?"false":t}function ml(){const t=s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type});return t!=="area"&&t!=="stackedArea"?null:e.jsxs(s.AccordionItem,{value:"area-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(xl,{})})]})}function xl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(hl,{metricKey:n,idx:a},n))})}function hl({metricKey:t,idx:n}){var m;const[a,r]=C.useState(!1),i=s.useEditorStore(g=>{var w;return(w=g.card)==null?void 0:w.preferences}),d=s.useEditorStore(g=>{var w,E;return(E=(w=g.card)==null?void 0:w.preferences)==null?void 0:E.datasetOptions}),o=d==null?void 0:d.find(g=>g.idx===n),{setCardPreferences:c}=s.useEditorStore(g=>g.actions),l=ul(o==null?void 0:o.fill),x=((m=o==null?void 0:o.dataLabels)==null?void 0:m.enabled)??!1,p=et.find(g=>g.value===l)||et[0];function h(g){const w={idx:n,fill:l,dataLabels:o==null?void 0:o.dataLabels,...g};if(!o)c({...i||{},datasetOptions:[...d||[],w]});else{const E=d==null?void 0:d.map(V=>V.idx===n?{...V,...w}:V);c({...i||{},datasetOptions:E})}}function u(g){h({fill:g==="false"?!1:g})}function y(g){h({dataLabels:{...o==null?void 0:o.dataLabels,enabled:g}})}function b(g){h({dataLabels:g})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.ChartArea,{className:"h-3 w-3"}),p.label.split(" ")[0]]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Fill Target"}),e.jsxs(s.Select,{value:l,onValueChange:g=>u(g),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:et.map(g=>e.jsx(s.SelectItem,{value:g.value,className:"text-xs",children:e.jsx("div",{className:"flex flex-col",children:e.jsx("span",{children:g.label})})},g.value))})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:(o==null?void 0:o.lineStyle)||"solid",onValueChange:g=>h({lineStyle:g}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:dl.map(({value:g,label:w})=>e.jsx(s.SelectItem,{value:g,className:"text-xs",children:w},g))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String((o==null?void 0:o.pointRadius)??3),onValueChange:g=>h({pointRadius:Number(g)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:il.map(g=>e.jsx(s.SelectItem,{value:String(g),className:"text-xs",children:g===0?"None":g},g))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:(o==null?void 0:o.pointStyle)||"circle",onValueChange:g=>h({pointStyle:g}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:cl.map(({value:g,label:w})=>e.jsx(s.SelectItem,{value:g,className:"text-xs",children:w},g))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:x,onCheckedChange:y})]}),x&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:b,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const pl=[0,1,2,3,4,5,6,8,10],fl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],st=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function gl(){return s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type})!=="line"?null:e.jsxs(s.AccordionItem,{value:"line-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(jl,{})})]})}function jl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(bl,{metricKey:n,idx:a},n))})}function bl({metricKey:t,idx:n}){var g;const[a,r]=C.useState(!1),i=s.useEditorStore(w=>{var E;return(E=w.card)==null?void 0:E.preferences}),d=s.useEditorStore(w=>{var E,V;return(V=(E=w.card)==null?void 0:E.preferences)==null?void 0:V.datasetOptions}),o=d==null?void 0:d.find(w=>w.idx===n),{setCardPreferences:c}=s.useEditorStore(w=>w.actions),l=(o==null?void 0:o.lineStyle)||"solid",x=(o==null?void 0:o.pointRadius)??3,p=(o==null?void 0:o.pointStyle)||"circle",h=((g=o==null?void 0:o.dataLabels)==null?void 0:g.enabled)??!1,u=st.find(w=>w.value===l)||st[0];function y(w){const E={idx:n,lineStyle:l,pointRadius:x,pointStyle:p,dataLabels:o==null?void 0:o.dataLabels,...w};if(!o)c({...i||{},datasetOptions:[...d||[],E]});else{const V=d==null?void 0:d.map(A=>A.idx===n?{...A,...E}:A);c({...i||{},datasetOptions:V})}}function b(w){y({dataLabels:{...o==null?void 0:o.dataLabels,enabled:w}})}function m(w){y({dataLabels:w})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.TrendingUp,{className:"h-3 w-3"}),u.label.split(" ")[0]]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:l,onValueChange:w=>y({lineStyle:w}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:st.map(({value:w,label:E})=>e.jsx(s.SelectItem,{value:w,className:"text-xs",children:E},w))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String(x),onValueChange:w=>y({pointRadius:Number(w)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:pl.map(w=>e.jsx(s.SelectItem,{value:String(w),className:"text-xs",children:w===0?"None":w},w))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:p,onValueChange:w=>y({pointStyle:w}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:fl.map(({value:w,label:E})=>e.jsx(s.SelectItem,{value:w,className:"text-xs",children:E},w))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:h,onCheckedChange:b})]}),h&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:m,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const vl=[0,2,4,6,8,10,12,16,20];function yl(){const t=s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type});return!t||!["bar","horizontalBar","stackedBar"].includes(t)?null:e.jsxs(s.AccordionItem,{value:"bar-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(Nl,{})})]})}function Nl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(Cl,{metricKey:n,idx:a},n))})}function Cl({metricKey:t,idx:n}){var b;const[a,r]=C.useState(!1),i=s.useEditorStore(m=>{var g;return(g=m.card)==null?void 0:g.type}),d=s.useEditorStore(m=>{var g;return(g=m.card)==null?void 0:g.preferences}),o=s.useEditorStore(m=>{var g,w;return(w=(g=m.card)==null?void 0:g.preferences)==null?void 0:w.datasetOptions}),c=o==null?void 0:o.find(m=>m.idx===n),{setCardPreferences:l}=s.useEditorStore(m=>m.actions),x=(c==null?void 0:c.borderRadius)??0,p=((b=c==null?void 0:c.dataLabels)==null?void 0:b.enabled)??!1;function h(m){const g={idx:n,borderRadius:x,dataLabels:c==null?void 0:c.dataLabels,...m};if(!c)l({...d||{},datasetOptions:[...o||[],g]});else{const w=o==null?void 0:o.map(E=>E.idx===n?{...E,...g}:E);l({...d||{},datasetOptions:w})}}function u(m){h({dataLabels:{...c==null?void 0:c.dataLabels,enabled:m}})}function y(m){h({dataLabels:m})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:x>0&&e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.ChartColumn,{className:"h-3 w-3"}),"r:",x]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Bar Style"}),e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Corner Radius"}),e.jsxs(s.Select,{value:String(x),onValueChange:m=>h({borderRadius:Number(m)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:vl.map(m=>e.jsx(s.SelectItem,{value:String(m),className:"text-xs",children:m===0?"None":`${m}px`},m))})]})]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:p,onCheckedChange:u})]}),p&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:c==null?void 0:c.dataLabels,onChange:y,isHorizontal:i==="horizontalBar",showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const Sl=[0,1,2,3,4,5,6,8,10],wl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],Tl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function El(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var l;return(l=c.card)==null?void 0:l.preferences}),a=Ae.useEffectiveEditorCardType(),r=n==null?void 0:n.lineStyleConfig,{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions();if(!t||!["line","area","stackedArea"].includes(a))return null;const o=(c,l)=>{const x={...n||{},lineStyleConfig:{...r,[c]:l}};i(x),d({...t,preferences:x})};return e.jsxs(s.AccordionItem,{value:"line-style",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Cn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Line Style"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Default styles for all series. Override per-series in the Series section."}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Pattern"}),e.jsxs(s.Select,{value:(r==null?void 0:r.lineStyle)||"solid",onValueChange:c=>o("lineStyle",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Tl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Point Size"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.pointRadius)??3),onValueChange:c=>o("pointRadius",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Sl.map(c=>e.jsx(s.SelectItem,{value:String(c),className:"text-xs",children:c===0?"None":c},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Point Shape"}),e.jsxs(s.Select,{value:(r==null?void 0:r.pointStyle)||"circle",onValueChange:c=>o("pointStyle",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:wl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]})]})})]})}const Il=[0,2,4,6,8,10,12,16,20],kl=[{value:"0.5",label:"50%"},{value:"0.6",label:"60%"},{value:"0.7",label:"70%"},{value:"0.8",label:"80%"},{value:"0.9",label:"90%"},{value:"1",label:"100%"}],Dl=[{value:"0.5",label:"50%"},{value:"0.6",label:"60%"},{value:"0.7",label:"70%"},{value:"0.8",label:"80%"},{value:"0.9",label:"90%"},{value:"1",label:"100%"}];function Al(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var l;return(l=c.card)==null?void 0:l.preferences}),a=Ae.useEffectiveEditorCardType(),r=n==null?void 0:n.barStyleConfig,{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions();if(!t||!["bar","horizontalBar","stackedBar"].includes(a))return null;const o=(c,l)=>{const x={...n||{},barStyleConfig:{...r,[c]:l}};i(x),d({...t,preferences:x})};return e.jsxs(s.AccordionItem,{value:"bar-style",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.ChartColumn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Bar Style"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Default styles for all bars. Override per-series in the Series section."}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Corner Radius"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.borderRadius)??0),onValueChange:c=>o("borderRadius",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Il.map(c=>e.jsx(s.SelectItem,{value:String(c),className:"text-xs",children:c===0?"None":`${c}px`},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Bar Width"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.barPercentage)??.9),onValueChange:c=>o("barPercentage",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:kl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Category Width"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.categoryPercentage)??.8),onValueChange:c=>o("categoryPercentage",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Dl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]})]})})]})}function Ll(){const t=s.useEditorStore(a=>{var r,i;return(i=(r=a==null?void 0:a.card)==null?void 0:r.preferences)==null?void 0:i.sortChart}),{setSortChart:n}=s.useEditorActions();return e.jsxs(s.AccordionItem,{value:"stacked-sort",children:[e.jsx(s.AccordionTrigger,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.ArrowUpDown,{className:"h-4 w-4"}),"Sort"]})}),e.jsx(s.AccordionContent,{className:"space-y-4 px-1",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort Order"}),e.jsx(Ze,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"Ascending",value:"asc"},{label:"Descending",value:"desc"}],value:t||"none",onValueChange:a=>{n(a)}})]})})]})}const Ml=["kpi"],ga={none:"None",previous_period:"Previous Period",same_period_last_year:"Same Period Last Year",start_vs_end:"Start vs End",target:"Target"},tt=2;function ns(t){return typeof t=="string"?t.trim().toLowerCase():((t==null?void 0:t.id)||(t==null?void 0:t.qualifiedFieldName)||(t==null?void 0:t.name)||(t==null?void 0:t.label)||"").trim().toLowerCase()}function Ol(t){if(!(t!=null&&t.name)||!(t!=null&&t.dataType)||t.role==="metric")return!1;const n=s.getDataType(t.dataType);return["date","string","boolean"].includes(n)}function Rl(t){return{...t,role:"groupby"}}function Fl(){var E,V,A,T;const t=s.useEditorStore(v=>v.card),n=s.useEditorStore(v=>v.actions.updateCardConfig),a=Ae.useEffectiveEditorCardType(),{scopedFields:r}=s.useScopedFields(),i=((E=t.config)==null?void 0:E.metricColumns)||[],d=((V=t.config)==null?void 0:V.summary)||{},o=d.breakdownDimensions||[],c=Ml.includes(a),l=i.length>0,x=d.enabled===!0,p=c&&l,h=((A=t.config)==null?void 0:A.comparisonType)||((T=i.find(v=>v.comparisonType&&v.comparisonType!=="none"))==null?void 0:T.comparisonType)||"none",u=ga[h]||ga.none,y=Array.from(new Map(r.filter(Ol).map(v=>[ns(v),Rl(v)])).values()),b=new Set(y.map(v=>ns(v))),m=new Set(o.map(v=>ns(v)).filter(v=>v&&b.has(v)));if(!c)return null;const g=v=>{n(t.id,{summary:{...d,...v}})},w=(v,D)=>{const M=ns(v),f=y.filter(j=>m.has(ns(j))),I=D?m.has(M)?f:[...f,v].slice(0,tt):f.filter(j=>ns(j)!==M);g({breakdownDimensions:I})};return e.jsxs(s.AccordionItem,{value:"summary",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.FileText,{className:"h-4 w-4"}),e.jsx("span",{children:"Summary"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{htmlFor:"summary-enabled",className:"text-xs",children:"Enable Summary"}),!l&&e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Add at least one metric to enable summary."})]}),e.jsx(s.SmallSwitch,{id:"summary-enabled",checked:x,disabled:!p,onCheckedChange:v=>{if(!v){g({enabled:!1,showOnCard:!1,includeInDashboardSummary:!1});return}g({enabled:!0,showOnCard:d.showOnCard??!0,includeInDashboardSummary:d.includeInDashboardSummary??!0,anomalyEnabled:d.anomalyEnabled??!0})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Comparison"}),e.jsxs("p",{className:"rounded-md border border-border bg-muted/40 px-2 py-1.5 text-xs",children:["Using: ",u]}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Comparison is configured from card/metric comparison settings."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-show-on-card",className:"text-xs",children:"Show summary on card"}),e.jsx(s.SmallSwitch,{id:"summary-show-on-card",checked:d.showOnCard===!0,disabled:!x,onCheckedChange:v=>g({showOnCard:v})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-include-rollup",className:"text-xs",children:"Include in dashboard summary"}),e.jsx(s.SmallSwitch,{id:"summary-include-rollup",checked:d.includeInDashboardSummary===!0,disabled:!x,onCheckedChange:v=>g({includeInDashboardSummary:v})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Breakdown Dimensions"}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:[o.length,"/",tt]})]}),y.length===0?e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"No dimension fields available for breakdown."}):e.jsx("div",{className:"max-h-40 space-y-2 overflow-y-auto rounded-md border border-border p-2",children:y.map(v=>{const D=ns(v),M=m.has(D),f=m.size>=tt,I=!x||!M&&f;return e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx(s.Checkbox,{id:`summary-breakdown-${D}`,checked:M,disabled:I,onCheckedChange:j=>w(v,j===!0)}),e.jsx(s.Label,{htmlFor:`summary-breakdown-${D}`,className:"cursor-pointer text-xs",children:v.label||v.name})]},D)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-anomaly",className:"text-xs",children:"Detect anomalies"}),e.jsx(s.SmallSwitch,{id:"summary-anomaly",checked:d.anomalyEnabled!==!1,disabled:!x,onCheckedChange:v=>g({anomalyEnabled:v})})]})]})]})}function Pa({mode:t}){const n=s.useEditorStore(a=>{var r;return(r=a.card)==null?void 0:r.type});return e.jsxs(e.Fragment,{children:[n==="combo"&&e.jsx(rl,{}),(n==="area"||n==="stackedArea")&&e.jsx(ml,{}),n==="line"&&e.jsx(gl,{}),(n==="bar"||n==="horizontalBar"||n==="stackedBar")&&e.jsx(yl,{}),e.jsx(El,{}),e.jsx(Al,{}),e.jsx(Gr,{}),t==="config"&&e.jsx($r,{}),t==="config"&&e.jsx(_r,{}),t==="config"&&e.jsx(Fl,{}),e.jsx(Ur,{}),n==="bullet"&&e.jsx(Hr,{}),n==="funnel"&&e.jsx(Yr,{}),(n==="bubble"||n==="scatter")&&e.jsx(Jr,{}),(n==="stackedBar"||n==="stackedLine")&&e.jsx(Ll,{}),e.jsx(Vr,{}),e.jsx(Br,{}),e.jsx(zr,{}),e.jsx(qr,{})]})}function Pl(){const t=s.useEditorStore(a=>a.card),n=t==null?void 0:t.type;return n?e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx(Ps,{chartType:n}),e.jsx(s.Accordion,{type:"single",collapsible:!0,className:"w-full px-2",children:e.jsx(Pa,{mode:"dev"})})]}):null}function Vl(){const t=s.useEditorStore(a=>a.card.type);function n(){switch(t){case"kpi":return e.jsx(jr,{});case"table":return e.jsx(Or,{});case"map":return e.jsx(Nr,{});case"custom":return e.jsx("div",{className:"px-6 py-2",children:e.jsx(Ma,{})});case"text":return e.jsx(Fr,{});default:return e.jsx(Pl,{})}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[n(),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function Bl(){const t=C.useRef(null),n=C.useRef(null),a=s.useEditorStore(h=>h.isShowingVisual),r=s.useEditorStore(h=>h.isDevMode),i=s.useEditorStore(h=>h.showAIDialog),[d,o]=C.useState(!1),c=a&&!i,l=c&&(!r||d),x=r&&c,p=()=>o(h=>!h);return C.useEffect(()=>{var h,u,y,b;i?((h=t.current)==null||h.resize(0),(u=n.current)==null||u.resize(0)):((y=t.current)==null||y.resize(25),(b=n.current)==null||b.resize(25))},[i]),e.jsxs(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(Hn,{})}),e.jsx(s.ResizableHandle,{withHandle:!0,className:"data-[panel-group-direction=vertical]:ml-2 data-[panel-group-direction=vertical]:mr-6 data-[panel-group-direction=vertical]:w-auto"}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:l?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:t,className:"flex",defaultSize:25,maxSize:30,children:e.jsx(Vl,{})})}),!i&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(ia,{visualAsideControl:x?{show:!0,isOpen:d,onToggle:p}:void 0})})]}):e.jsx(ia,{visualAsideControl:x?{show:!0,isOpen:d,onToggle:p}:void 0})})]})}function zl(t){var Ne;s.useAIInteractionStore(q=>q.currentAIContext);const[n,a]=C.useState(""),[r,i]=C.useState(null),{authToken:d,tokenProps:o}=s.useSemaphorContext(),c=s.useEditorStore(q=>{var Z;return(Z=q==null?void 0:q.card)==null?void 0:Z.sql}),l=s.useEditorStore(q=>q.isDevMode),x=s.useEditorStore(q=>{var Z;return(Z=q==null?void 0:q.card)==null?void 0:Z.python}),{setCardPython:p,setCardSql:h,setRunSql:u,switchCardType:y,setQueryConfig:b}=s.useEditorActions(),m=s.useEditorStore(q=>q.currentAssitantScope)||[],g=s.useEditorStore(q=>q.userInputForAI),w=s.useEditorStore(q=>q.triggerAIRun),E=s.useEditorStore(q=>q.card),V=s.useEditorStore(q=>q.selectedDatabaseName),A=s.useEditorStore(q=>q.selectedTableName),T=s.useEditorStore(q=>q.selectedConnectionId),v=s.useEditorStore(q=>q.selectedSchemaName),D=s.useDashboardStore(q=>q.dashboard.aiScopeTables),{errorMessage:M,refetch:f,data:I}=s.useDashboardCardQuery(E),{setTriggerAIRun:j,setCurrentAssitantScope:k,setCardConfig:R}=s.useEditorActions(),{selectedDatamodelName:P,connectionType:N,selectedDatamodelId:L}=s.useEditorAside(),S=(Ne=s.useDashboardQuery().data)==null?void 0:Ne.assistantProfileId,{messages:F,setMessages:O,regenerate:_,error:Q,sendMessage:B,status:K,addToolResult:se,stop:H,clearError:te}=s.useChat({transport:new s.DefaultChatTransport({api:`${o.apiServiceUrl}/v1/assistant`,headers:()=>({Authorization:`Bearer ${d==null?void 0:d.accessToken}`}),body:()=>{const q=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",assistantProfileId:S,isDevMode:l,aiContext:q.currentAIContext,reasoningEffort:q.reasoningEffort,showReasoning:q.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:q,body:Z})=>({body:{...Z,messages:s.cleanupIncompleteMessages(q)}})}),onError:q=>{var Z;if(q.name==="AbortError"||(Z=q.message)!=null&&Z.includes("aborted")){console.log("[Editor Assistant] Stream aborted (expected)");return}console.error("[Editor Assistant] Stream error:",q)},onToolCall:z,onFinish({isAbort:q,isDisconnect:Z,isError:ce}){a(""),console.log(q?"[Editor Assistant] Stream aborted by user":Z?"[Editor Assistant] Stream disconnected (network error)":ce?"[Editor Assistant] Stream error occurred":"[Editor Assistant] Stream completed successfully")}});C.useEffect(()=>{w&&g&&(B({role:"user",parts:[{type:"text",text:g}]}),j(!1))},[w,g,B,j]);async function z({toolCall:q}){var Z,ce,je,De,Oe,Te,be,Ce,ae,fe,ge,Ie,ve,pe,Re,Qe;if(["createChartFromSql","createForecast"].includes(q.toolName)){const Ke=((Z=q.input)==null?void 0:Z.sql)??((ce=q.args)==null?void 0:ce.sql),oe=((je=q.input)==null?void 0:je.python)??((De=q.args)==null?void 0:De.python),me=((Oe=q.input)==null?void 0:Oe.chartType)??((Te=q.args)==null?void 0:Te.chartType);y(me),h(Ke),p(oe),u(!0),se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(q.toolName==="getUserSql"){if(!c){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",message:"No SQL found"}});return}se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",sql:c,python:x||""}})}else if(q.toolName==="generateQueryConfig"){a("Generating query config...");const Ke=((be=q.input)==null?void 0:be.chartType)??((Ce=q.args)==null?void 0:Ce.chartType),oe=((ae=q.input)==null?void 0:ae.queryConfig)??((fe=q.args)==null?void 0:fe.queryConfig);((ge=q.input)==null?void 0:ge.cardConfig)??((Ie=q.args)==null||Ie.cardConfig),y(Ke),R(oe),h(void 0),p(void 0);const me=await f();if((ve=me==null?void 0:me.data)!=null&&ve.error){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",queryConfig:oe,message:(pe=me==null?void 0:me.data)==null?void 0:pe.error.message}});return}if((Re=me==null?void 0:me.data)!=null&&Re.records){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:oe,message:"The data has been visualized"}});return}se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:oe,message:"The data has been visualized",records:(Qe=me==null?void 0:me.data)==null?void 0:Qe.records}})}else a("Analyzing...")}function W(q){const Z=s.removeFromScopeArray(m,q);le(Z)}function le(q){const Z=s.sanitizeAIScope(q);k(Z),O(ce=>[...ce,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify(Z)}`}]}])}function X(){const q={databaseName:V||"",schemaName:v||"",tableName:A||"",datamodelId:L||"",datamodelName:s.resolveDatamodelName(P),connectionId:T||"",connectionType:N||""},Z=s.dedup([...m,q]);le(Z)}function ne(){const q={databaseName:V||"",schemaName:v||"",tableName:A||"",datamodelName:s.resolveDatamodelName(P),connectionId:T||"",connectionType:N||"",datamodelId:L||""};if(!s.isInAiScopeArray([...D||[],...m],q)||m.length===0){const ce=s.dedup([...D||[],...m,q]).filter(je=>je.connectionId===q.connectionId);le(ce)}}const ue=!["ready","error"].includes(K),ee=s.getErrorMessage(Q);return{messages:F,setMessages:O,sendMessage:B,regenerate:_,isLoading:ue,handleSetAIScope:ne,handleAddCurrentTableToScope:X,removeFromCurrentSelections:W,currentAssitantScope:m,setCurrentAssitantScope:k,stop:H,status:K,toolStatus:n,llmUsage:r,onFinish:t,errorMessage:ee,clearError:te}}const ql=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function ja({isFullscreen:t,onFullscreenChange:n,fullscreenContainer:a}){const r=C.useRef(null),[i,d]=C.useState(!1),[o,c]=C.useState(s.isDevEnv),[l,x]=C.useState(!1),[p,h]=C.useState(!1),[u,y]=C.useState(!1),b=t??u,m=s.useCurrentAIContext(),{setCurrentAIContext:g}=s.useAIActions(),{clearQueue:w}=s.useQueueActions(),{clearFileAttachments:E}=s.useFileActions(),V=s.useFileAttachments("editor"),A=s.useDashboardStore(oe=>oe.dashboard.aiContext),T=s.useEditorStore(oe=>oe.card.dataSource),v=s.useEditorStore(oe=>oe.actions.setCardSql),D=s.useEditorStore(oe=>oe.actions.setRunSql),M=s.useEditorStore(oe=>oe.showAIDialog),f=s.useDashboardStore(oe=>oe.handleOpenAssistantProfile),{setShowAIDialog:I,setCardPython:j}=s.useEditorActions(),{setDataSource:k}=s.useEditorActions(),{assistantProfile:R}=s.useAssistantProfile(),{messages:P,setMessages:N,sendMessage:L,isLoading:S,stop:F,status:O,llmUsage:_,errorMessage:Q,clearError:B}=zl(),[K,se]=C.useState(""),H=oe=>{se(oe.target.value)},te=oe=>{oe.preventDefault();const me=K.trim();if(!me&&V.length===0)return;const ss=[];me&&ss.push({type:"text",text:me}),V.forEach(Ye=>{Ye.data&&ss.push({type:"file",mediaType:Ye.type,filename:Ye.name,url:`data:${Ye.type};base64,${Ye.data}`})}),L({role:"user",parts:ss}),se(""),E("editor"),ce({force:!0})},{visibleMessages:z,hasMoreMessages:W,totalMessageCount:le,loadMoreMessages:X,resetMessageWindow:ne}=s.useMessageWindow(P,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:ue,contentRef:ee,isAtBottom:Ne,hasNewMessages:q,newMessageCount:Z,scrollToBottom:ce,handleScroll:je,resetNewMessageCount:De}=s.useAutoScroll(z,{threshold:40,behavior:"smooth",isStreaming:S});C.useEffect(()=>{var oe;M&&((oe=r.current)==null||oe.focus(),g({selectedEntities:(T==null?void 0:T.selectedEntities)||[]}))},[M,T,g]),s.useAutoSubmitQueue({assistantType:"editor",status:O,isLoading:S,sendMessage:L});const{hasActiveTools:Oe}=s.useActiveToolStatus(P),Te=C.useCallback(oe=>{n==null||n(oe),t===void 0&&y(oe)},[t,n]);C.useEffect(()=>{if(!b)return;function oe(me){me.key==="Escape"&&Te(!1)}return window.addEventListener("keydown",oe),()=>{window.removeEventListener("keydown",oe)}},[b,Te]);const be=C.useCallback(oe=>{L({role:"user",parts:[{type:"text",text:oe}]}),ce({force:!0})},[L,ce]),Ce=C.useCallback(async()=>{const oe=JSON.stringify(P??[],null,2);try{if(typeof navigator>"u"||!navigator.clipboard)throw new Error("Clipboard API unavailable");await navigator.clipboard.writeText(oe),s.ue.success("Conversation copied")}catch(me){console.error("Failed to copy conversation",me),s.ue.error("Unable to copy conversation")}},[P]),ae=C.useCallback(()=>{Te(!b)},[b,Te]);function fe(oe,me){me==="sql"?(v(oe),D(!0)):me==="python"&&(j(oe),D(!0))}function ge(){m.selectedEntities.length===0&&g({selectedEntities:(A==null?void 0:A.selectedEntities)||[]})}function Ie(oe){ge();const me={role:"user",parts:[{type:"text",text:oe.title+" "+oe.subtitle}]};L(me)}function ve(oe){ge(),L({role:"user",parts:[{type:"text",text:oe}]})}function pe(){return e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{className:"h-7 p-2 text-muted-foreground hover:text-foreground",size:"sm",variant:"ghost",children:e.jsx(s.EllipsisVertical,{className:"size-3.5"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",children:[e.jsx(s.DropdownMenuLabel,{children:"Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsx(s.DropdownMenuCheckboxItem,{checked:i,onCheckedChange:d,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:o,onCheckedChange:c,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:l,onCheckedChange:x,children:"System Message"})]})]})}function Re(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const Qe=(K==null?void 0:K.length)===0&&(P==null?void 0:P.filter(oe=>oe.role==="user").length)===0,Ke=e.jsxs("div",{"data-role":"editor-assistant",className:s.cn("flex h-full w-full flex-col justify-between px-6 py-4",b&&"rounded-2xl border border-border/60 bg-background px-8 pb-6 pt-6 shadow-xl"),children:[e.jsxs("div",{"data-role":"header-section",className:"flex items-start justify-between gap-2",children:[Re(),f&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:f,children:(R==null?void 0:R.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[pe(),o&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-2 h-7 px-2 text-muted-foreground hover:text-foreground",onClick:Ce,children:"Copy Conversation"}),e.jsx(s.IconButton,{tooltip:b?"Exit Fullscreen":"Expand",className:"h-7 p-2 text-muted-foreground hover:text-foreground",onClick:ae,children:b?e.jsx(s.Minimize2,{className:"size-4"}):e.jsx(s.Maximize2,{className:"size-4"})}),e.jsx(s.IconButton,{className:"h-7 p-2 text-muted-foreground hover:text-foreground",tooltip:"New Chat",onClick:()=>{N([]),w("editor"),B(),ne()},children:e.jsx(s.SquarePen,{className:"size-4"})}),e.jsx(s.Button,{variant:"ghost",className:"h-7 p-2 text-muted-foreground hover:text-foreground",size:"sm",onClick:()=>{I(!1)},children:e.jsx(s.X,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:ue,className:"mt-2 flex min-w-0 w-full grow basis-0",onScroll:je,children:e.jsxs("div",{ref:ee,className:"min-w-0 space-y-4 py-2 pr-3","data-role":"messages",children:[W&&e.jsx("div",{className:"flex justify-center py-2",children:e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:X,className:"text-xs",children:["Load ",Math.min(5,le-z.length)," ","more messages (",le-z.length," ","hidden)"]})}),e.jsx(s.PrintMessages,{messages:z,showTools:o,handleRun:fe,showSystemMessage:l,onQuickReply:be,disableQuickReplies:S}),!Oe&&e.jsx(s.AssistantStatus,{status:O,errorMessage:Q})]})}),M&&!Ne&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{ce({force:!0}),De()},size:"sm",variant:"secondary",className:"rounded-full shadow-lg","aria-label":"Scroll to bottom",children:[e.jsx(s.ChevronDown,{className:"h-4 w-4"}),q&&Z>0&&e.jsx("span",{className:"ml-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-primary text-xs text-primary-foreground",children:Z>9?"9+":Z})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[Qe&&!R&&e.jsx(s.Placeholders,{onClick:Ie,placeholders:ql}),e.jsx("div",{children:Qe&&R&&e.jsx(s.SeedQuestions,{seedQuestions:R.seedQuestions||[],handleSeedQuestionClick:ve})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:r,setInput:se,stop:F,input:K,handleInputChange:H,handleSubmit:oe=>{ge(),te(oe),ce({force:!0})},isLoading:S,status:O,assistantType:"editor",onFocus:()=>{}})]}),_&&i&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",_.inputTokens," prompt tokens, ",_.outputTokens," ","completion tokens, ",_.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(T==null?void 0:T.selectedEntities)||[],open:p,onOpenChange:h,dataSource:T||s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]});return b&&a?nn.createPortal(e.jsx("div",{className:"pointer-events-auto absolute inset-0 z-50 flex bg-background px-6 pb-6 pt-[calc(var(--app-header-height,15px)+1rem)]",children:e.jsx("div",{className:"flex h-full w-full",children:Ke})}),a):Ke}function _l(t,n,a){if(!n)return!1;const r=n.qualifiedFieldName,i=n.qualifiedEntityName,d=i&&n.name?`${i}.${n.name}`:r;return t.some(o=>{if(!(s.getDataType(o.dataType||"")==="date"))return!1;const l=s.getSelectedDateFilterColumn(o,a),x=l.split("."),p=x[x.length-1]||l,h=x.length>1?x.slice(0,-1).join("."):void 0,u=o.qualifiedTableName||h,y=u?`${u}.${p}`:void 0;return r?y?y===d||y.endsWith(`.${r}`):p===n.name:y?y===d:p===n.name})}const Va=["day","week","month","quarter","year"],$l=[...Va,"hour","minute","second"],Gl=t=>/timestamp|datetime|time/i.test(t||""),Kl=t=>Gl(t)?$l:Va,ut=({dataType:t})=>s.getFieldIconComponent(t);function Ul({aliasTemplate:t,onAliasTemplateChange:n}){var l;const[a,r]=C.useState(t),[i,d]=C.useState(!1),o=(l=s.useEditorStore(x=>{var p;return(p=x.card.config)==null?void 0:p.pivotByColumns}))==null?void 0:l[0],c=o?`e.g. Min Sales in {{${o.name}}}`:"e.g. Min Sales in {{region}}";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-gray-600",children:"Pivot Alias Template"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Input$1,{placeholder:c,value:i?a:t,onChange:x=>{r(x.target.value),d(!0)},onFocus:()=>d(!0),onPointerDown:x=>x.stopPropagation(),className:"h-8 text-xs",onKeyDown:x=>{x.key==="Enter"&&i&&a!==t?(n(a),d(!1)):x.key==="Escape"&&(r(t),d(!1))},"aria-label":"Edit alias template"}),i&&a!==t&&e.jsxs(e.Fragment,{children:[e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm alias template",onClick:()=>{n(a),d(!1)},children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel alias template edit",onClick:()=>{r(t),d(!1)},children:e.jsx(s.X,{className:"h-4 w-4 text-gray-400"})})]})]})]})}function Hl({valueAliases:t,onValueAliasesChange:n}){const[a,r]=C.useState(null),[i,d]=C.useState(""),[o,c]=C.useState(""),l=()=>{n({...t,"":""})},x=h=>{const u={...t};delete u[h],n(u)},p=h=>{const u={...t};delete u[h],u[i]=o,n(u),r(null)};return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Pivot Value Aliases"}),e.jsxs("div",{className:"space-y-2",children:[Object.entries(t).map(([h,u],y)=>e.jsx("div",{className:"flex items-center gap-2",children:a===h?e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:i,onChange:b=>d(b.target.value),className:"h-8 w-24 text-xs",onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>{b.key==="Enter"?p(h):b.key==="Escape"&&r(null)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:o,onChange:b=>c(b.target.value),className:"h-8 w-24 text-xs",onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>{b.key==="Enter"?p(h):b.key==="Escape"&&r(null)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm value alias edit",onClick:()=>p(h),children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel value alias edit",onClick:()=>r(null),children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]}):e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:h,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),d(h),c(u)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:u,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),d(h),c(u)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>x(h),"aria-label":"Remove value alias",children:e.jsx(s.X,{className:"h-3 w-3"})})]})},h+y)),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"mt-1 h-8 text-xs",onClick:l,children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Value Alias"]})]})]})}function Jl({idx:t}){var c;const n=s.useEditorStore(l=>{var x;return(x=l.card)==null?void 0:x.preferences}),a=s.useEditorStore(l=>{var x;return(x=l.card.preferences)==null?void 0:x.datasetOptions}),r=s.useEditorStore(l=>l.actions.setCardPreferences),i=(c=n==null?void 0:n.chartOptions)==null?void 0:c.indexAxis,d=a==null?void 0:a.find(l=>l.idx===t);function o(l,x){(l==="end"||l==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const p={display:l!=="none",align:l,anchor:l,clamp:!0};if(!d)r({...n,datasetOptions:[...a||[],{idx:x,datalabels:p}]});else{const h={...d};h.datalabels=p;const u=a==null?void 0:a.map(y=>y.idx===x?h:y);r({...n,datasetOptions:u})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(s.Tag,{className:"size-4 rotate-[135deg] cursor-pointer text-muted-foreground hover:text-foreground"})}),e.jsx(s.PopoverContent,{className:"w-fit px-2 py-1",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("button",{onClick:()=>o("none",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(s.X,{className:"size-3.5"})}),e.jsx("button",{onClick:()=>o("start",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(hn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})}),e.jsx("button",{onClick:()=>o("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(fn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})}),e.jsx("button",{onClick:()=>o("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(pn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})})]})})]})}function mt({children:t,className:n,delayDuration:a}){return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:a,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:s.cn("overflow-hidden text-ellipsis whitespace-nowrap",n),children:t})}),e.jsx(s.TooltipContent,{children:t})]})})}function Ql(t,n=30){return t.length>n?t.slice(0,n)+"...":t}function Yl({col:t,idx:n,className:a,iconClassName:r,children:i}){const d=s.useEditorStore(p=>{var h;return(h=p.card)==null?void 0:h.preferences}),o=s.useEditorStore(p=>{var h,u;return(u=(h=p.card)==null?void 0:h.preferences)==null?void 0:u.datasetOptions}),c=o==null?void 0:o.find(p=>p.idx===n),{setCardPreferences:l}=s.useEditorStore(p=>p.actions);function x(p){if(!c)l({...d,datasetOptions:[...o||[],{idx:n,type:p==="area"?"line":p,fill:p==="area"?"origin":""}]});else{const h={...c};h.type=p==="area"?"line":p,h.fill=p==="area"?"origin":"";const u=o==null?void 0:o.map(y=>y.idx===n?h:y);l({...d,datasetOptions:u})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",a),children:[i||e.jsx(mt,{className:"max-w-[100px]",title:t,children:Ql(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>x("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>x("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>x("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(Jl,{idx:n})]})]})}function Wl(){const t=s.useEditorStore(c=>c.card.type),n=s.useEditorStore(c=>c.isDevMode),a=s.useEditorStore(c=>c.card.preferences),{setCardPreferences:r}=s.useEditorStore(c=>c.actions);function i(c){var p;const l={datalabels:{display:c!=="none",align:c,anchor:c,clamp:!0}},x={...a,chartOptions:{...a==null?void 0:a.chartOptions,plugins:{...(p=a==null?void 0:a.chartOptions)==null?void 0:p.plugins,...l}}};r(x)}function d(){var c,l,x;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((x=(l=(c=a==null?void 0:a.chartOptions)==null?void 0:c.plugins)==null?void 0:l.datalabels)==null?void 0:x.anchor)||"none",onValueChange:i,defaultValue:"none",children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full focus:ring-1 focus:ring-offset-0",children:e.jsx(s.SelectValue,{placeholder:"Select position"})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:"Data Labels"}),e.jsx(s.SelectItem,{value:"none",children:"None"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{value:"start",children:"Start"}),e.jsx(s.SelectItem,{value:"center",children:"Center"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{value:"end",children:"End"})]})})]})]})}function o(){var c,l,x;return e.jsx("div",{children:e.jsxs(s.Select,{value:((x=(l=(c=a==null?void 0:a.chartOptions)==null?void 0:c.plugins)==null?void 0:l.datalabels)==null?void 0:x.anchor)||"none",onValueChange:i,defaultValue:"none",children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select position"})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"none",children:"None"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{className:"text-xs",value:"start",children:"Start"}),e.jsx(s.SelectItem,{className:"text-xs",value:"center",children:"Center"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{className:"text-xs",value:"end",children:"End"})]})})]})})}return e.jsx(e.Fragment,{children:n?d():o()})}function Xl({column:t}){const n=s.useEditorStore(l=>l.card.type),a=s.useEditorStore(l=>{var x,p;return(p=(x=l.card)==null?void 0:x.config)==null?void 0:p.metricColumns}),r=(a==null?void 0:a.map(l=>l.label))||[],i=r==null?void 0:r.find(l=>l===t.label||l===t.name),d=i?r.indexOf(i):-1;function o(){return e.jsx("div",{className:"pr-1",children:i&&e.jsx(Yl,{idx:d,col:i,children:e.jsx("div",{className:"w-[130px] text-xs text-muted-foreground",children:"Display Series As"})})})}function c(){return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Data Labels"}),e.jsx(Wl,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(n)&&o(),["pie","doughnut"].includes(n)&&c()]})}function Zl({field:t,searchQuery:n="",limit:a=500}){const{authToken:r,tokenProps:i}=s.useSemaphorContext(),d=s.useEditorStore(x=>x.card),o=d==null?void 0:d.dataSource,c=["attribute-values",t.entityName,t.name,n,a],l=s.useQuery({queryKey:c,queryFn:async()=>{if(!(o!=null&&o.connectionId))return console.warn("No connection ID available for attribute values query"),[];try{const x={groupByColumns:[{...t,role:"groupby"}],metricColumns:[],filters:n?{id:"search-filter",logicalOperator:"AND",negate:!1,conditions:[{id:"search-condition",field:t,operator:"contains",value:n}],groups:[]}:void 0,rowLimit:a},p={connection_id:o.connectionId,cardConfig:x,cardDataSource:o,cache_config:s.getCacheConfig({card:d})};console.log("requestBody",p);const h=await s.postRequestRegular(`${i.apiServiceUrl}/v1/query`,(r==null?void 0:r.accessToken)||"",p);if(h!=null&&h.error)return console.error("Error fetching attribute values:",h.error),[];const u=t.name;return((h==null?void 0:h.records)||[]).map(b=>{const m=b[u]||b[t.alias||u]||b[t.label];return{id:m||"",value:m||"",label:String(m||"(empty)")}})}catch(x){return console.error("Error fetching attribute values:",x),[]}},enabled:!!t&&!!(o!=null&&o.connectionId),staleTime:5*60*1e3,gcTime:10*60*1e3});return{values:l.data||[],isLoading:l.isLoading,isFetching:l.isFetching,isError:l.isError,error:l.error,refetch:l.refetch}}function Ba({open:t,onOpenChange:n,availableFields:a,existingFilters:r,editingCondition:i,onSave:d}){var V,A;const o=!!i,[c,l]=C.useState(o?"values":"fields"),[x,p]=C.useState(""),[h,u]=C.useState({id:(i==null?void 0:i.id)||s.v4(),field:(i==null?void 0:i.field)||null,selectedValues:i?Array.isArray(i.value)?i.value:[i.value]:[]}),y=a.filter(T=>{var D;return o?!1:!((D=r==null?void 0:r.conditions)==null?void 0:D.some(M=>M.field.id===T.id))&&T.label.toLowerCase().includes(x.toLowerCase())}),b=T=>{u({...h,field:T}),l("values")},m=()=>{if(h.field&&h.selectedValues.length>0){const T={id:h.id,field:h.field,operator:"in",value:h.selectedValues};let v;if(o){const D=((r==null?void 0:r.conditions)||[]).map(M=>M.id===i.id?T:M);v={...r,conditions:D}}else{const D=(r==null?void 0:r.conditions)||[];v={id:(r==null?void 0:r.id)||s.v4(),logicalOperator:"AND",negate:!1,conditions:[...D,T],groups:[]}}d(v),n(!1)}},g=()=>{if(!o||!i)return;const T=((r==null?void 0:r.conditions)||[]).filter(v=>v.id!==i.id);if(T.length>0){const v={...r,conditions:T};d(v)}else d(void 0);n(!1)},w=T=>{u({...h,selectedValues:T})},E=()=>{o&&i?(u({id:i.id,field:i.field,selectedValues:Array.isArray(i.value)?i.value:[i.value]}),l("values")):(u({id:s.v4(),field:null,selectedValues:[]}),l("fields")),p("")};return C.useEffect(()=>{t&&E()},[t,o,i]),e.jsx(s.Dialog,{open:t,onOpenChange:n,children:e.jsxs(s.DialogContent,{className:"max-w-2xl",children:[e.jsx(s.DialogHeader,{children:e.jsx(s.DialogTitle,{children:o?`Edit Filter: ${(V=h.field)==null?void 0:V.label}`:c==="fields"?"Select Field to Filter":`Select Values for ${(A=h.field)==null?void 0:A.label}`})}),e.jsxs("div",{className:"space-y-4",children:[!o&&(r==null?void 0:r.conditions)&&r.conditions.length>0&&c==="fields"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Current Filters:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.conditions.map(T=>e.jsxs("div",{className:"flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[e.jsxs("span",{className:"font-medium",children:[T.field.label,":"]}),e.jsx("span",{className:"text-muted-foreground",children:Array.isArray(T.value)?`${T.value.length} values`:String(T.value)})]},T.id))})]}),c==="fields"&&!o?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search fields...",value:x,onChange:T=>p(T.target.value),className:"pl-10"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 max-h-[400px] overflow-y-auto",children:y.map(T=>e.jsxs(s.Button,{variant:"outline",className:"justify-start h-auto py-2 px-3",onClick:()=>b(T),children:[e.jsx(ut,{dataType:s.getDataType(T.dataType)}),e.jsxs("div",{className:"ml-2 text-left",children:[e.jsx("div",{className:"text-sm font-medium",children:T.label}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[T.entityName,".",T.name]})]})]},T.id))}),y.length===0&&x&&e.jsxs("div",{className:"text-center py-4 text-sm text-muted-foreground",children:['No fields found matching "',x,'"']}),y.length===0&&!x&&a.length>0&&e.jsx("div",{className:"text-center py-4 text-sm text-muted-foreground",children:"All available fields are already filtered"})]}):e.jsx(eo,{field:h.field,selectedValues:h.selectedValues,onValuesChange:w,onBack:o?void 0:()=>l("fields")}),e.jsxs("div",{className:"flex justify-between pt-4 border-t",children:[e.jsx("div",{children:o?e.jsx(s.Button,{variant:"destructive",onClick:g,children:"Delete Filter"}):e.jsx(s.Button,{variant:"outline",onClick:E,children:"Reset"})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>n(!1),children:"Cancel"}),e.jsx(s.Button,{onClick:m,disabled:!h.field||h.selectedValues.length===0,children:"Apply"})]})]})]})]})})}function eo({field:t,selectedValues:n,onValuesChange:a,onBack:r}){const[i,d]=C.useState(""),{values:o,isLoading:c,isFetching:l}=Zl({field:t,searchQuery:i,limit:500}),x=i?o.filter(u=>String(u.value).toLowerCase().includes(i.toLowerCase())):o,p=u=>{const y=n.includes(u);a(y?n.filter(b=>b!==u):[...n,u])},h=()=>{n.length===x.length&&x.length>0?a([]):a(x.map(u=>u.value))};return e.jsxs("div",{className:"space-y-4",children:[r&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:r,children:"← Back"}),e.jsxs(s.Label,{className:"text-sm font-medium",children:["Select values for ",t.label]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search values...",value:i,onChange:u=>d(u.target.value),className:"pl-10"})]}),c||l?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(s.LoaderCircle,{className:"h-6 w-6 animate-spin"})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b",children:[e.jsx(s.Checkbox,{checked:n.length===x.length&&x.length>0,onCheckedChange:h}),e.jsxs(s.Label,{className:"text-sm",children:["Select All (",x.length,")"]})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-1",children:x.map(u=>e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-muted/50 rounded cursor-pointer",onClick:()=>p(u.value),children:[e.jsx(s.Checkbox,{checked:n.includes(u.value),onCheckedChange:()=>p(u.value)}),e.jsx(mt,{className:"text-sm",children:u.label})]},u.id))})]})]})}function so({field:t,zone:n,index:a,sortDirection:r,onSortDirectionChange:i,hasPivotColumns:d=!1,cardType:o}){var gt,jt,bt,vt,yt,Nt,Ct,St,wt,Tt,Et,It,kt,Dt,At,Lt,Mt,Ot,Rt,Ft,Pt,Vt,Bt,zt,qt,_t,$t,Gt,Kt,Ut,Ht,Jt,Qt,Yt;const{attributes:c,listeners:l,setNodeRef:x,transform:p,transition:h,isDragging:u}=s.useSortable({id:t.id}),y=s.useEditorStore($=>$.card),b=s.useEditorStore($=>$.frame),{scopedFields:m,isLoading:g}=s.useScopedFields(),{userContext:w}=s.useCurrentUserInfo(),E=(w==null?void 0:w.type)==="organization",V=(gt=y.dataSource)==null?void 0:gt.semanticDomainId,{promoteMetric:A}=s.usePromoteCalculatedMetricToDomain({domainId:V}),{updateLabel:T,handleAggregationChange:v,handleDateFormatChange:D,handleGranularityChange:M,handleAliasTemplateChange:f,handleValueAliasesChange:I,removeField:j,handleMetricComparisonChange:k,handleMetricWindowTransformChange:R,handleMetricWindowOrderByChange:P,handleMetricWindowDirectionChange:N,handleMetricWindowPartitionToggle:L,handleMetricMovingAverageWindowSizeChange:S,handleMetricMovingAverageMinPeriodsChange:F,handleMetricPreviousPeriodDeltaModeChange:O,handleMetricPercentOfTotalScopeChange:_,handleMetricPercentOfTotalOutputChange:Q,handleKpiShowTrendlineChange:B,handleKpiTrendlineWindowChange:K,handleKpiTrendlineGranularityChange:se,handleMetricTargetValueChange:H}=s.useFieldManagement(y),[te,z]=C.useState(!1),[W,le]=C.useState(()=>{var $;return!!(($=t.parameters)!=null&&$.windowTransform)}),[X,ne]=C.useState(!1),[ue,ee]=C.useState(!1),[Ne,q]=C.useState(null),Z=C.useMemo(()=>{const $=re=>re!=null&&re.startsWith("card-source-")?re.replace("card-source-",""):re,U=$(t.id),de=m.find(re=>{if(t.qualifiedFieldName&&re.qualifiedFieldName&&re.qualifiedFieldName===t.qualifiedFieldName||t.qualifiedEntityName&&re.qualifiedEntityName&&re.qualifiedEntityName===t.qualifiedEntityName&&re.name===t.name)return!0;const ye=$(re.id);return!!(U&&ye&&U===ye)});return{dataType:(de==null?void 0:de.dataType)||t.dataType,resolvedFromScopedField:!!de}},[t.dataType,t.id,t.name,t.qualifiedEntityName,t.qualifiedFieldName,m]),ce=Kl(Z.dataType),[je,De]=C.useState(t.dateFormat||"YYYY-MM-DD"),[Oe,Te]=C.useState(t.customFormat||""),[be,Ce]=C.useState(!!t.customFormat),ae=C.useRef(null),[fe,ge]=C.useState(t.aliasTemplate||""),[Ie,ve]=C.useState(t.valueAliases||{}),[pe,Re]=C.useState((jt=t.parameters)==null?void 0:jt.filters),Qe=$=>{$==="custom"?Ce(!0):(Ce(!1),De($),(n==="groupBy"||gs)&&D(a,$,"",n))},Ke=$=>{Te($),(n==="groupBy"||gs)&&D(a,"custom",$,n)},oe=$=>{var re;const de=(re=s.getDateFormatOptionsForGranularity($)[0])==null?void 0:re.value;de&&!be&&(De(de),n==="groupBy"&&D(a,de,"",n)),n==="groupBy"&&M(a,$)},me=$=>{ge($),n==="metrics"&&f(a,$)},ss=$=>{ve($),n==="metrics"&&I(a,$)},Ye=$=>{T(n,a,$)},Ns=$=>$!=null&&$.startsWith("card-source-")?$.replace("card-source-",""):$,rs=($,U,de)=>{const re=Ns($.id),ye=Ns(U.id);return re&&ye&&re===ye?!0:$.name===U.name&&$.role===U.role},Ue=s.getExpressionFieldKind(t),Be=s.getFieldExpressionAnnotation(t),Se=Ue==="domain_calculated"||Ue==="user_calculated",ps=Ue==="user_calculated"?(bt=b==null?void 0:b.calculatedFields)==null?void 0:bt.find($=>rs($,t)):void 0,_e=Ue==="user_calculated"&&(t.fieldScope==="dashboard"||t.fieldScope===void 0&&!!ps),fs=Ue==="domain_calculated",ls=fs?"domain":_e?"dashboard":"card",qs=fs?t:_e&&ps?ps:t,We=$=>{var U;if(Re($),n==="metrics"){const de={...t,parameters:{...t.parameters,filters:$}},re=[...((U=y.config)==null?void 0:U.metricColumns)||[]];re[a]=de,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:re})}ne(!1)},Cs=async $=>{await A($),sn()},Ss=()=>{j(n,a)},os={transform:s.CSS.Transform.toString(p),transition:h},ws=s.getDataType(Z.dataType||t.dataType),ts=ws==="date",Ts=o==="kpi",gs=n==="detailColumns",js=(vt=y.config)==null?void 0:vt.metricColumns,ze=(yt=y.config)==null?void 0:yt.groupByColumns,bs=s.useDashboardStore($=>{var U;return(U=$.dashboard)==null?void 0:U.filters}),is=s.useDashboardStore($=>$.filterValues),Xe=t.granularity||"day",He=ce.includes(Xe)?Xe:"day",_s=n==="groupBy"&&!ce.includes(Xe),cs=s.getDateFormatOptionsForGranularity(He),$s=be?"custom":cs.some($=>$.value===je)?je:((Nt=cs[0])==null?void 0:Nt.value)??"YYYY-MM-DD";C.useEffect(()=>{var de;if(g||!_s){ae.current=null;return}const $=`${t.id}:${Xe}:${Z.dataType||t.dataType||""}:${a}`;if(ae.current===$)return;ae.current=$;const U="day";if(M(a,U),!be){const re=(de=s.getDateFormatOptionsForGranularity(U)[0])==null?void 0:de.value;re&&(De(re),D(a,re,"",n))}},[t.dataType,t.id,D,M,_s,a,be,g,Xe,Z.dataType,n]);const Es=!!o&&s.COMPARISON_SUPPORTED_CHART_TYPES.includes(o),Is=o==="kpi"||o==="table",$e=C.useMemo(()=>ze==null?void 0:ze.find($=>s.getDataType($.dataType||"")==="date"),[ze]),ks=C.useMemo(()=>(ze||[]).some($=>s.getDataType($.dataType||"")==="date"),[ze]),Gs=C.useMemo(()=>{var re;if(!$e)return!1;const $=(re=y.config)==null?void 0:re.filters;if(!$)return!1;const U=ye=>{const Ee=ye.field;return Ee?$e.id&&Ee.id===$e.id||$e.qualifiedFieldName&&Ee.qualifiedFieldName===$e.qualifiedFieldName?!0:Ee.name===$e.name:!1},de=ye=>ye.conditions.some(Ve=>s.getDataType(Ve.field.dataType||"")==="date"&&U(Ve))?!0:ye.groups.some(Ve=>de(Ve));return de($)},[(Ct=y.config)==null?void 0:Ct.filters,$e]),Ds=C.useMemo(()=>_l(bs||[],$e,is),[bs,is,$e]),As=Gs||Ds,we=t,ds=((wt=(St=we.parameters)==null?void 0:St.windowTransform)==null?void 0:wt.function)||"none",Fe=s.isMetricTransformEnabled(we),G=Fe?ds:null,Y=s.supportsMetricTransformForMetric({cardType:o||"table",cardConfig:y.config||{},metric:we,transformMode:G||"running_total"}),J=!!we.comparisonType&&we.comparisonType!=="none",xe=s.getRunningTotalOrderByCandidates(ze||[]),ie=((It=(Et=(Tt=we.parameters)==null?void 0:Tt.windowTransform)==null?void 0:Et.orderBy)==null?void 0:It.fieldId)||"",he=((At=(Dt=(kt=we.parameters)==null?void 0:kt.windowTransform)==null?void 0:Dt.orderBy)==null?void 0:At.direction)||"asc",ke=xe.find($=>$.id===ie),Le=G==="running_total"||G==="moving_average"||G==="previous_period_delta",Je=Fe&&Le&&!!ke&&s.getDataType(ke.dataType||"")!=="date",us=s.getDefaultRunningTotalPartitionByFieldIds({cardType:o||"table",cardConfig:y.config||{},orderByFieldId:ie||void 0}),ms=new Set(((Mt=(Lt=we.parameters)==null?void 0:Lt.windowTransform)==null?void 0:Mt.partitionByFieldIds)||us),Me=o==="pivotTable"||s.isSubtotalEnabledAggregateTable(o||"table",y.config||{}),as=[...(ze||[]).filter($=>$.id&&(!Le||$.id!==ie)),...Me?(((Ot=y.config)==null?void 0:Ot.pivotByColumns)||[]).filter($=>$.id):[]],Ls=((Pt=(Ft=(Rt=we.parameters)==null?void 0:Rt.windowTransform)==null?void 0:Ft.movingAverage)==null?void 0:Pt.windowSize)||7,Ks=((zt=(Bt=(Vt=we.parameters)==null?void 0:Vt.windowTransform)==null?void 0:Bt.movingAverage)==null?void 0:zt.minPeriods)||1,qa=(($t=(_t=(qt=we.parameters)==null?void 0:qt.windowTransform)==null?void 0:_t.previousPeriodDelta)==null?void 0:$t.mode)||"absolute",ht=((Ut=(Kt=(Gt=we.parameters)==null?void 0:Gt.windowTransform)==null?void 0:Kt.percentOfTotal)==null?void 0:Ut.scope)||"grand_total",_a=((Qt=(Jt=(Ht=we.parameters)==null?void 0:Ht.windowTransform)==null?void 0:Jt.percentOfTotal)==null?void 0:Qt.output)||"percent",$a=C.useMemo(()=>(js||[]).some($=>$.comparisonType==="start_vs_end"),[js]);C.useEffect(()=>{Fe&&le(!0)},[Fe]);const Ga=n!=="pivotBy",Ka=ts&&n==="groupBy"&&(!Ts||$a),Ua=!Ts&&ts&&(n==="groupBy"||gs),Ha=o==="kpi"&&ts&&n==="groupBy",Ja=n==="metrics",pt=Es&&n==="metrics",Qa=()=>{const $=t,U=n==="metrics"&&Se;return e.jsxs("div",{className:"space-y-1",children:[!U&&e.jsx("div",{title:`${t.entityName}.${t.name}`,onPointerDown:de=>{de.stopPropagation()},className:"max-w-[270px] cursor-default overflow-hidden text-ellipsis whitespace-nowrap px-0.5 text-xs text-muted-foreground/80",children:`${t.entityName}.${t.name}`}),U&&$.calculatedFormula&&e.jsxs("div",{title:s.formatDisplayFormula($.calculatedFormula),onPointerDown:de=>{de.stopPropagation()},className:"max-w-[270px] cursor-default overflow-hidden text-ellipsis whitespace-nowrap rounded bg-muted/50 px-1.5 py-0.5 font-mono text-xs text-primary",children:["= ",s.formatDisplayFormula($.calculatedFormula)]})]})},Ya=()=>Ga?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Label"}),e.jsx(qe,{value:t.label??"",onSave:Ye,placeholder:"Display label...",type:"text"})]}):null,ft=()=>Ka?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Granularity"}),e.jsxs(s.Select,{value:He,onValueChange:oe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsx(s.SelectContent,{children:ce.map($=>e.jsx(s.SelectItem,{className:"text-xs",value:$,children:s.toTitleCase($)},$))})]})]}):null,Wa=()=>Ua?e.jsxs(e.Fragment,{children:[ft(),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Date Format"}),e.jsxs(s.Select,{value:$s,onValueChange:Qe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select date format..."})}),e.jsx(s.SelectContent,{children:cs.map($=>e.jsx(s.SelectItem,{className:"text-xs",value:$.value,children:$.label},$.value))})]}),be&&e.jsxs("div",{className:"mt-2 space-y-1",children:[e.jsx(s.Input$1,{placeholder:"Enter custom format (e.g., YYYY-MM-DD HH:mm)",value:Oe,onChange:$=>{$.stopPropagation(),Ke($.target.value)},onClick:$=>$.stopPropagation(),className:"h-8 text-xs"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Examples: YYYY-MM-DD, MM/DD/YY, DD-MMM-YYYY HH:mm"})]})]})]}):null,Xa=()=>{var U,de,re,ye;const $=Ha;return $?e.jsx(e.Fragment,{children:$&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-1",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Show Trendline"}),e.jsx(s.SmallSwitch,{checked:((U=y.config)==null?void 0:U.showTrendline)||!1,onCheckedChange:B})]})}),((de=y.config)==null?void 0:de.showTrendline)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Window"}),e.jsx(s.Input$1,{type:"number",min:"1",max:"365",value:((re=y.config)==null?void 0:re.trendlineWindow)||30,onChange:Ee=>{const Ve=parseInt(Ee.target.value)||30;K(Ve)},className:"h-8 text-xs",placeholder:"30"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Granularity"}),e.jsxs(s.Select,{value:((ye=y.config)==null?void 0:ye.trendlineGranularity)||"day",onValueChange:se,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"day",children:"Day"}),e.jsx(s.SelectItem,{value:"week",children:"Week"}),e.jsx(s.SelectItem,{value:"month",children:"Month"})]})]})]})]})]})}):null},Za=()=>{if(!Ja)return null;const $=Se;return e.jsxs(e.Fragment,{children:[$&&E&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Formula"}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>ee(!0),children:[e.jsx(s.Pencil,{className:"mr-2 h-3 w-3"}),"Edit Formula"]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Aggregation"}),e.jsxs(s.Select,{value:t.aggregate,onValueChange:U=>{v(a,U)},disabled:$,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select function..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"COUNT",children:"Count"}),e.jsx(s.SelectItem,{className:"text-xs",value:"DISTINCT",children:"Count Distinct"}),s.getDataType(t.dataType)==="number"&&e.jsxs(e.Fragment,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"SUM",children:"Sum"}),e.jsx(s.SelectItem,{className:"text-xs",value:"AVG",children:"Average"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MIN",children:"Min"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MAX",children:"Max"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MEDIAN",children:"Median"})]})]})]})]}),e.jsx(s.Collapsible,{open:W,onOpenChange:le,children:e.jsxs("div",{className:"space-y-2 rounded-md border border-border/60 bg-muted/20 p-2.5",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{type:"button",className:"flex w-full items-center justify-between rounded-sm px-0.5 py-0.5 text-left",children:[e.jsx("div",{className:"text-xs font-medium text-foreground",children:"Metric Transform"}),e.jsxs("div",{className:"flex items-center text-[11px] text-muted-foreground",children:[!W&&e.jsx("span",{className:"mr-2",children:Fe?s.toTitleCase(ds.replace(/_/g," ")):"None"}),e.jsx(s.ChevronDown,{className:s.cn("h-3 w-3 transition-transform",W?"rotate-180":"")})]})]})}),e.jsxs(s.CollapsibleContent,{className:"space-y-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Transform"}),e.jsxs(s.Select,{value:Fe?ds:"none",onValueChange:U=>R(a,U),disabled:!Y.supported&&!Fe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select transform..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"None"}),e.jsx(s.SelectItem,{value:"running_total",disabled:J,children:"Running Total"}),e.jsx(s.SelectItem,{value:"moving_average",disabled:J,children:"Moving Average"}),e.jsx(s.SelectItem,{value:"previous_period_delta",disabled:J,children:"Previous Period Delta"}),e.jsx(s.SelectItem,{value:"percent_of_total",disabled:J,children:"Percent of Total"})]})]}),!Y.supported&&!Fe&&e.jsx("div",{className:"text-xs text-muted-foreground",children:Y.reason}),J&&!Fe&&e.jsx("div",{className:"text-xs text-muted-foreground",children:"Disable comparison to enable metric transforms."})]}),Fe&&e.jsxs(e.Fragment,{children:[Le&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Order By"}),e.jsxs(s.Select,{value:ie,onValueChange:U=>P(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select order field..."})}),e.jsx(s.SelectContent,{children:xe.filter(U=>!!U.id).map(U=>e.jsx(s.SelectItem,{value:U.id,className:"text-xs",children:U.label||U.name},U.id))})]}),!ie&&e.jsx("div",{className:"text-xs text-amber-700",children:"No date trend detected. Select an order field."}),Je&&e.jsx("div",{className:"text-xs text-amber-700",children:"No date trend detected. The transform will follow the selected order field."})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Direction"}),e.jsxs(s.Select,{value:he,onValueChange:U=>N(a,U),disabled:!ie,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select direction..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"asc",children:"Ascending"}),e.jsx(s.SelectItem,{className:"text-xs",value:"desc",children:"Descending"})]})]})]})]}),G==="moving_average"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Window Size"}),e.jsx(s.Input$1,{type:"number",min:1,className:"h-8 text-xs",value:Ls,onChange:U=>S(a,Number(U.target.value))}),e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Min Periods"}),e.jsx(s.Input$1,{type:"number",min:1,max:Ls,className:"h-8 text-xs",value:Ks,onChange:U=>F(a,Number(U.target.value))})]}),G==="previous_period_delta"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Output"}),e.jsxs(s.Select,{value:qa,onValueChange:U=>O(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select output..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"absolute",children:"Absolute Delta"}),e.jsx(s.SelectItem,{value:"percent",children:"Percent Delta"})]})]})]}),G==="percent_of_total"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Scope"}),e.jsxs(s.Select,{value:ht,onValueChange:U=>_(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select scope..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"grand_total",children:"Grand Total"}),e.jsx(s.SelectItem,{value:"partition_total",children:"Partition Total"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Output"}),e.jsxs(s.Select,{value:_a,onValueChange:U=>Q(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select output..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"percent",children:"Percent"}),e.jsx(s.SelectItem,{value:"fraction",children:"Fraction"})]})]})]})]}),(G==="running_total"||G==="moving_average"||G==="previous_period_delta"||G==="percent_of_total"&&ht==="partition_total")&&as.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Reset By"}),e.jsx("div",{className:"space-y-1",children:as.map(U=>{const de=!!U.id&&ms.has(U.id);return e.jsxs("button",{type:"button",onClick:()=>U.id&&L(a,U.id),className:s.cn("flex h-7 w-full items-center justify-between rounded border px-2 text-xs",de?"border-primary bg-primary/5 text-primary":"border-border text-muted-foreground"),children:[e.jsx("span",{children:U.label||U.name}),de?e.jsx(s.Check,{className:"h-3 w-3"}):null]},U.id)})})]})]})]})]})}),pt&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Comparison Type"}),e.jsxs(s.Select,{value:we.comparisonType||"none",disabled:Fe,onValueChange:U=>k(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select comparison type..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"No Comparison"}),(()=>{const U=!ks||!As,de=ks?As?void 0:"Add a date filter to enable":"Add a date groupBy to enable",re=(ye,Ee)=>e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.SelectItem,{value:ye,disabled:U,title:de,children:Ee})}),U&&de&&e.jsx(s.TooltipContent,{side:"right",children:de})]})});return e.jsxs(e.Fragment,{children:[re("previous_period","Previous Period"),re("same_period_last_year","Same Period Last Year"),re("start_vs_end","Start vs End")]})})(),Is&&e.jsx(s.SelectItem,{value:"target",children:"Target"})]})]})]}),pt&&we.comparisonType==="target"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Target Value"}),e.jsx(s.Input$1,{type:"number",value:we.targetValue!==void 0&&we.targetValue!==null?String(we.targetValue):"",onChange:U=>{const de=U.target.value;if(de===""){H(a,void 0);return}const re=Number(de);H(a,Number.isFinite(re)?re:void 0)},className:"h-8 text-xs",placeholder:"Enter target value..."})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Attribute Filters"}),(pe==null?void 0:pe.conditions)&&pe.conditions.length>0&&e.jsx("div",{className:"mb-2 space-y-1",children:pe.conditions.map(U=>e.jsxs("div",{className:"flex cursor-pointer items-center gap-2 rounded bg-muted/50 p-2 text-xs transition-colors hover:bg-muted/70",onClick:()=>{q(U),ne(!0)},children:[e.jsxs("span",{className:"font-medium",children:[U.field.label,":"]}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"cursor-help text-muted-foreground",children:Array.isArray(U.value)?U.value.length===1?String(U.value[0]):U.value.length<=2?U.value.join(", "):`${U.value.slice(0,2).join(", ")} +${U.value.length-2}`:String(U.value)})}),Array.isArray(U.value)&&U.value.length>1&&e.jsx(s.TooltipContent,{side:"top",className:"max-w-[300px]",children:e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"mb-1 font-medium",children:["Selected values (",U.value.length,"):"]}),e.jsx("div",{className:"max-h-[200px] overflow-y-auto",children:U.value.map((de,re)=>e.jsx("div",{children:String(de)},re))})]})})]})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-auto h-4 w-4 p-0",onClick:de=>{var ye;de.stopPropagation();const re=pe.conditions.filter(Ee=>Ee.id!==U.id);if(re.length>0){const Ee={...pe,conditions:re};We(Ee)}else if(Re(void 0),n==="metrics"){const Ee={...t,parameters:{...t.parameters,filters:void 0}},Ve=[...((ye=y.config)==null?void 0:ye.metricColumns)||[]];Ve[a]=Ee,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:Ve})}},children:e.jsx(s.X,{className:"h-3 w-3"})})]},U.id))}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>{q(null),ne(!0)},children:[e.jsx(s.Filter,{className:"mr-2 h-3 w-3"}),"Add attribute filter"]})]}),e.jsx(Xl,{column:t}),d&&e.jsxs(e.Fragment,{children:[e.jsx(Ul,{aliasTemplate:fe,onAliasTemplateChange:me}),e.jsx(Hl,{valueAliases:Ie,onValueAliasesChange:ss})]})]})},{columns:en=[],refetch:sn}=s.useColumns(),tn=(pe==null?void 0:pe.conditions)&&pe.conditions.length>0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:x,style:os,...c,...l,className:s.cn("group mx-auto flex w-full flex-col gap-2 rounded-md border border-border/55 bg-background p-2 transition-colors duration-150","hover:border-border/80 hover:bg-muted/20",te&&"border-border/80 bg-muted/20 shadow-[inset_0_1px_0_rgba(255,255,255,0.35)]",u&&"z-50 scale-95 opacity-50",n==="filters"?"cursor-default":"cursor-move"),children:[e.jsxs("div",{className:"flex min-w-0 grow items-center gap-2",children:[e.jsxs("div",{className:"relative shrink-0",children:[e.jsx(ut,{dataType:ws}),Be&&e.jsx("span",{className:s.cn(s.FIELD_EXPRESSION_BADGE_BASE_CLASS,Be.badgeClassName),children:Be.label})]}),e.jsx(mt,{className:s.cn("w-[140px] min-w-0 flex-1 text-sm text-foreground/95",tn&&"w-[120px] min-w-0"),children:s.getMetricDisplayLabel(t)}),n==="metrics"&&((Yt=pe==null?void 0:pe.conditions)==null?void 0:Yt.length)&&!te&&e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-1 rounded bg-primary/10 px-1.5 py-0.5 text-xs text-primary/90",children:[e.jsx(s.Filter,{className:"h-3 w-3"}),e.jsx("span",{children:pe.conditions.length})]})}),e.jsx(s.TooltipContent,{side:"top",children:e.jsx("div",{className:"text-xs",children:pe.conditions.map($=>e.jsxs("div",{children:[$.field.label,":"," ",Array.isArray($.value)?`${$.value.length} values`:String($.value)]},$.id))})})]})}),n!=="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),z(!te)},children:e.jsx(s.ChevronDown,{className:`h-3 w-3 transition-transform ${te?"rotate-180":""}`})}),n==="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),i(r==="asc"?"desc":"asc")},children:r==="asc"?e.jsx(s.ArrowUp,{className:"h-3 w-3"}):e.jsx(s.ArrowDown,{className:"h-3 w-3"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),Ss()},children:e.jsx(s.X,{className:"h-2.5 w-2.5"})})]}),te&&e.jsxs("div",{className:"space-y-3 rounded-md bg-muted/20 p-2.5",children:[Qa(),Ya(),o==="kpi"&&ft(),Wa(),Xa(),Za()]})]}),X&&e.jsx(Ba,{open:X,onOpenChange:$=>{ne($),$||q(null)},availableFields:en,existingFilters:pe,editingCondition:Ne,onSave:$=>{var U;if($)We($);else if(Re(void 0),n==="metrics"){const de={...t,parameters:{...t.parameters,filters:void 0}},re=[...((U=y.config)==null?void 0:U.metricColumns)||[]];re[a]=de,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:re})}q(null)}}),ue&&n==="metrics"&&Se&&e.jsx(s.CalculatedFieldEditor,{open:ue,onOpenChange:ee,availableFields:m,existingField:qs,existingFieldScope:ls,initialFieldType:"metric",allowedFieldTypes:["metric"],onSave:$=>{var xs;if($.role!=="metric")return;const U=[...((xs=y.config)==null?void 0:xs.metricColumns)||[]];U[a]=$;const{frame:de,actions:re}=s.useEditorStore.getState();if(re.updateCardConfig(y.id,{metricColumns:U}),!s.isCalculatedMetric($))return;const ye=de.calculatedFields||[],Ee=ye.findIndex(Ge=>Ge.name===t.name&&Ge.role===t.role);if(Ee<0)return;const Ve=ye.map((Ge,Ms)=>Ms===Ee?{...$,id:Ge.id}:Ge);re.updateFrame({calculatedFields:Ve})},onSaveToDashboard:$=>{var Ms;if($.role!=="metric")return;const{frame:U,actions:de}=s.useEditorStore.getState(),re=U.calculatedFields||[],ye=re.findIndex(Us=>rs(Us,$)),Ee=ye>=0&&re[ye].id!==$.id?{...$,id:re[ye].id}:$,Ve=ye>=0?re.map((Us,an)=>an===ye?Ee:Us):[...re,Ee];de.updateFrame({calculatedFields:Ve});const xs=[...((Ms=y.config)==null?void 0:Ms.metricColumns)||[]],Ge=t;xs[a]={...Ee,id:Ge.id,aliasTemplate:Ge.aliasTemplate,valueAliases:Ge.valueAliases,parameters:Ge.parameters,customFormat:Ge.customFormat},de.updateCardConfig(y.id,{metricColumns:xs})},onPromoteMetricToDomain:V&&E?Cs:void 0,domainId:V,cardId:y.id})]})}function to({concept:t}){const n=()=>{switch(t){case"groupBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Rows = Group By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that define how your data is grouped into rows."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-100 text-xs font-medium dark:bg-blue-200/20",children:"Product"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Sales"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Profit"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/50 text-xs font-medium dark:bg-blue-200/20",children:"Electronics"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$5,200"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$1,300"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/30 text-xs font-medium dark:bg-blue-300/20",children:"Clothing"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$3,100"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$620"})]}),e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/20 text-xs font-medium dark:bg-blue-200/20",children:"Food"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$2,400"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$480"})]})]})]});case"pivotBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Pivot Columns = Pivot By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that split your data into multiple columns or series."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Region"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"North"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"South"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"East"})]}),e.jsxs("div",{className:"flex border-b py-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$2,300"}),e.jsx("div",{className:"w-1/4 bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$1,800"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$3,400"})]}),e.jsxs("div",{className:"flex py-1",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$460"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$360"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$680"})]})]})]});case"metrics":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Metric Values (Cells)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that represent the values shown in your visualization."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"col-span-1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q2"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q3"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"rounded bg-blue-100 p-1 text-center text-xs dark:bg-blue-300/20",children:"$2,300"}),e.jsx("div",{className:"rounded bg-blue-200 p-1 text-center text-xs dark:bg-blue-400/20",children:"$3,100"}),e.jsx("div",{className:"rounded bg-blue-300 p-1 text-center text-xs dark:bg-blue-500/20",children:"$4,200"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"rounded bg-green-100 p-1 text-center text-xs dark:bg-green-300/20",children:"$460"}),e.jsx("div",{className:"rounded bg-green-200 p-1 text-center text-xs dark:bg-green-400/20",children:"$620"}),e.jsx("div",{className:"rounded bg-green-300 p-1 text-center text-xs dark:bg-green-500/20",children:"$840"})]})]})]});case"detailColumns":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Columns"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields to display as columns in the detail table. No aggregation applied - shows raw values from the database."})]});default:return null}};return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:300,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.CircleHelp,{className:"size-4 text-muted-foreground hover:text-foreground"})}),e.jsx(s.TooltipContent,{side:"right",align:"start",className:"p-3",children:n()})]})})}const ao={groupBy:Fs,pivotBy:lt,metrics:Nn,detailColumns:s.Table2,sortBy:s.ArrowUpDown};function ys({zone:t,fields:n,label:a,placeholder:r,shouldShow:i,hasPivotColumns:d=!1,activeField:o=null}){const{isOver:c,setNodeRef:l}=s.useDroppable({id:t}),{updateSortByColumn:x}=s.useEditorActions(),p=s.useEditorStore(w=>w.card),h=s.useEditorStore(w=>w.card.type),u=n.length>0,y=C.useMemo(()=>!o||!c?!0:s.validateFieldForChartType(o,t,h).isValid,[o,c,t,h]),b=(w,E)=>{var A;!((A=p.config)!=null&&A.sortByColumns)||p.config.sortByColumns.findIndex(T=>T.id===w)===-1||x(p.id,w,{direction:E})};if(t==="sortBy"&&i===!1)return null;const m=t!=="sortBy"&&h!=="kpi",g=ao[t]||s.Plus;return e.jsxs("div",{className:"mb-3 w-full",children:[e.jsxs("div",{className:"mb-1.5 flex items-center gap-2",children:[e.jsx(s.Label,{className:s.cn("block text-sm font-medium text-foreground",{}),children:a}),m&&e.jsx(to,{concept:t})]}),e.jsx("div",{ref:l,className:s.cn("rounded-lg border p-0.5 transition-colors duration-150",{"border-green-500 bg-green-50 shadow-[0_0_0_1px_rgba(34,197,94,0.18)] dark:bg-green-950":c&&y,"border-red-500 bg-red-50 shadow-[0_0_0_1px_rgba(239,68,68,0.18)] dark:bg-red-950":c&&!y,"border-solid border-border/55 bg-background":!c&&u,"min-h-[56px] border-dashed border-border/60 bg-background":!c&&!u}),children:n.length===0?e.jsxs("div",{className:"flex min-h-[56px] items-center justify-center gap-2 text-sm text-muted-foreground/85",children:[e.jsx(g,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground/80"}),e.jsx("span",{children:r})]}):e.jsx(s.SortableContext,{id:t,items:n.map(w=>w.id),strategy:s.verticalListSortingStrategy,children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:n.map((w,E)=>{const A=w.direction;return e.jsx("div",{className:"flex w-full items-center gap-2",children:e.jsx("div",{className:"flex-1",children:e.jsx(so,{field:w,zone:t,index:E,sortDirection:A,onSortDirectionChange:T=>b(w.id,T),hasPivotColumns:d,cardType:h})})},w.id)})})})})]})}function no({groupByFields:t,pivotByFields:n,metricsFields:a,sortByFields:r,detailFields:i,activeField:d}){var se,H,te,z;const[o,c]=C.useState(!1),l=s.useEditorStore(W=>{var le;return!!((le=W.card.customCardPreferences)!=null&&le.url)}),x=s.useEditorStore(W=>W.card),p=s.useEditorStore(W=>W.frame),h=s.findCustomVisualConfigCard(p,x),{manifest:u}=s.useCustomVisual(((se=h==null?void 0:h.customCardPreferences)==null?void 0:se.url)||""),y=(H=u==null?void 0:u.visuals)==null?void 0:H.find(W=>{var le;return W.name===((le=h==null?void 0:h.customCardPreferences)==null?void 0:le.componentName)}),b=s.resolveMultiInputType(h,y)==="multiple",m=b&&!!((te=h==null?void 0:h.customCardPreferences)!=null&&te.url),g=s.getConfigSlotExpectedType(y==null?void 0:y.slots),w=s.useEditorStore(W=>W.actions.updateCardConfig),E=s.useEditorStore(W=>W.actions.updateFrame),{scopedFields:V,refetch:A}=s.useScopedFields(),{userContext:T}=s.useCurrentUserInfo(),v=b&&(h==null?void 0:h.id)===x.id&&g?g:x==null?void 0:x.type,D=v==="detailTable",M=t.length>0||a.length>0||i.length>0,f=!D&&(v!=="kpi"||a.length<=2),I=!D,j=!D&&v!=="kpi",k=v!=="kpi"&&M,R=D,P="Drop sort fields here",N=(z=x.dataSource)==null?void 0:z.semanticDomainId,{promoteMetric:L}=s.usePromoteCalculatedMetricToDomain({domainId:N}),S=(T==null?void 0:T.type)==="organization",F=W=>{const le=p.calculatedFields||[],X=le.findIndex(Z=>Z.name===W.name&&Z.role===W.role),ne=X>=0?{...W,id:le[X].id}:W,ue=X>=0?le.map((Z,ce)=>ce===X?ne:Z):[...le,ne];E({calculatedFields:ue});const ee=s.getNewField(ne,"metrics",a),Ne=a.findIndex(Z=>Z.name===ee.name&&Z.role===ee.role),q=Ne>=0?a.map((Z,ce)=>ce===Ne?{...Z,...ee,id:Z.id}:Z):[...a,ee];w(x.id,{metricColumns:q})},O=async W=>{await L(W),A()},_=["pie","doughnut","polar","funnel","aggregateTable","bubble","scatter"].includes(v),Q=j&&!_,B=()=>v==="kpi"?{label:"Trend By",placeholder:"Drop trend field here"}:{label:"Rows",placeholder:"Drop dimensions here"},K=()=>v==="kpi"?{label:"Metric",placeholder:"Drop metric here"}:{label:"Metrics",placeholder:"Drop metrics here"};return e.jsxs(e.Fragment,{children:[e.jsxs(s.Accordion,{type:"single",collapsible:!0,defaultValue:"fields",className:"w-full space-y-2.5",children:[e.jsxs(s.AccordionItem,{value:"fields",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.List,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"FIELDS"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-3 pt-1.5",children:[f&&e.jsx(ys,{zone:"groupBy",fields:t,label:B().label,placeholder:B().placeholder,activeField:d}),Q&&e.jsx(ys,{zone:"pivotBy",fields:n,label:"Pivot Columns",placeholder:"Drop pivot fields here",activeField:d}),I&&e.jsx(ys,{zone:"metrics",fields:a,label:K().label,placeholder:K().placeholder,hasPivotColumns:n.length>0,activeField:d}),R&&e.jsx(ys,{zone:"detailColumns",fields:i,label:"Columns",placeholder:"Drop columns here"}),a.length>=1&&S&&e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:()=>c(!0),className:"mt-1.5 w-full justify-start border-border/60 border-dashed bg-background text-xs text-foreground/70 hover:bg-muted/40 hover:text-foreground",children:[e.jsx(s.Calculator,{className:"mr-2 h-4 w-4"}),"Create Metric"]}),k&&e.jsx(ys,{zone:"sortBy",fields:r,label:"Sort By",placeholder:P,activeField:d})]})]}),(!l||m)&&e.jsxs(s.AccordionItem,{value:"configuration",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Settings2,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"CHART SETTINGS"})]})}),e.jsx(s.AccordionContent,{className:"mb-2 rounded-md bg-muted/20 px-3 py-0.5",children:e.jsx(s.Accordion,{type:"single",collapsible:!0,className:"w-full",children:e.jsx(Pa,{mode:"config"})})})]}),(l||m)&&e.jsxs(s.AccordionItem,{value:"plugin",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 outline-none ring-0 hover:no-underline focus:outline-none focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"COMPONENT SETTINGS"})]})}),e.jsx(s.AccordionContent,{className:"mb-2 rounded-md bg-muted/20 px-3 py-0.5",children:e.jsx(Ma,{})})]})]}),e.jsx(s.CalculatedFieldEditor,{open:o,onOpenChange:c,availableFields:V,initialFieldType:"metric",allowedFieldTypes:["metric"],onSave:W=>{W.role==="metric"&&w(x.id,{metricColumns:[...a,W]})},onSaveToDashboard:W=>{W.role==="metric"&&F(W)},onPromoteMetricToDomain:N&&S?O:void 0,domainId:N,cardId:x.id})]})}function ro({onEditJoins:t}){const n=s.useEditorStore(c=>c.card),{autoJoinMetadata:a}=s.useDashboardCardQuery(n);if(!(a!=null&&a.autoResolved))return null;const{resolvedJoinPlan:r}=a,i=(r==null?void 0:r.joins)||[];if(i.length===0)return null;const d=c=>!c||c.length===0?"No conditions":c.map(l=>{var u,y,b,m;const x=`${(u=l.source)==null?void 0:u.entityName}.${(y=l.source)==null?void 0:y.name}`,p=`${(b=l.target)==null?void 0:b.entityName}.${(m=l.target)==null?void 0:m.name}`,h=l.operator||"=";return`${x} ${h} ${p}`}).join(" AND "),o=c=>!c.joinKeyGroups||c.joinKeyGroups.length===0?"No conditions defined":c.joinKeyGroups.length===1?d(c.joinKeyGroups[0].keys):c.joinKeyGroups.map((l,x)=>({id:x,operator:l.operator,condition:d(l.keys)}));return e.jsx(s.Card,{className:"border-blue-500/20 bg-blue-50/15 shadow-sm dark:bg-blue-950/10",children:e.jsxs("div",{className:"flex items-center justify-between p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(En,{className:"size-4 text-blue-600/90 dark:text-blue-400"}),e.jsx("h3",{className:"text-xs font-semibold tracking-wide text-blue-900/90 dark:text-blue-100",children:"Resolved Joins"}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Badge,{variant:"secondary",className:"cursor-help bg-blue-100/80 text-xs text-blue-700 dark:bg-blue-900/70 dark:text-blue-300",children:i.length})}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"max-w-md p-3",children:e.jsx("div",{className:"space-y-2",children:i.map((c,l)=>{const x=o(c),p=Array.isArray(x);return e.jsxs("div",{className:"rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"font-medium text-foreground",children:c.source.name}),e.jsx(s.ArrowRight,{className:"size-3 text-muted-foreground"}),e.jsx("span",{className:"font-medium text-foreground",children:c.target.name})]}),e.jsx(s.Badge,{variant:"outline",className:"border-green-500/40 bg-green-50/30 text-xs text-green-700 dark:bg-green-950/30 dark:text-green-300",children:c.joinType})]}),e.jsx("div",{className:"mt-1 space-y-1",children:p?x.map(h=>e.jsxs("div",{className:"rounded bg-muted/30 px-2 py-1",children:[e.jsx("code",{className:"block break-all text-xs text-muted-foreground",children:h.condition}),h.operator&&e.jsxs("span",{className:"ml-2 text-xs text-muted-foreground",children:["(",h.operator,")"]})]},h.id)):e.jsx("div",{className:"rounded bg-muted/30 px-2 py-1",children:e.jsx("code",{className:"block break-all text-xs text-muted-foreground",children:x})})})]},c.id||l)})})})]})})]}),t&&e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:t,className:"h-7 gap-1 p-2 text-xs text-blue-700/80 hover:text-blue-900 dark:text-blue-300 dark:hover:text-blue-100",children:e.jsx(s.SquarePen,{className:"size-3.5"})})]})})}const ba={getItem(t){if(typeof window>"u")return null;try{return localStorage.getItem(t)}catch(n){return console.warn(`Failed to read from localStorage (${t}):`,n),null}},setItem(t,n){if(!(typeof window>"u"))try{localStorage.setItem(t,n)}catch(a){console.warn(`Failed to write to localStorage (${t}):`,a)}}};function lo({selectedChart:t,onChartChange:n,groupByFields:a,pivotByFields:r,metricsFields:i,sortByFields:d,detailFields:o,activeField:c}){var f,I;const[l,x]=C.useState(()=>ba.getItem("chart-selector-expanded")==="true"),[p,h]=C.useState(!1),u=s.useEditorStore(j=>j.card),y=s.useEditorStore(j=>j.actions.updateCardConfig),b=a.length>0||r.length>0||i.length>0||o.length>0,{data:m,autoJoinMetadata:g}=s.useDashboardCardQuery(u),w=b||!!m,E=((f=u==null?void 0:u.config)==null?void 0:f.joinPlan)||(g!=null&&g.autoResolved?g.resolvedJoinPlan:{baseEntity:{type:"table",name:"",database:"",schema:"",connectionId:"",connectionType:"none",dialect:"none"},joins:[]}),V=((I=u==null?void 0:u.dataSource)==null?void 0:I.selectedEntities)||[],A=j=>{y(u.id,{...u==null?void 0:u.config,joinPlan:j}),h(!1)},T=()=>{y(u.id,{...u==null?void 0:u.config,joinPlan:void 0}),h(!1)},v=()=>{h(!1)},D=()=>{h(!0)};C.useEffect(()=>{ba.setItem("chart-selector-expanded",String(l))},[l]);const M=()=>{x(j=>!j)};return e.jsxs("div",{"data-content":"Chart Configuration Panel",className:"flex w-[350px] flex-col bg-background",children:[e.jsx("div",{className:"pl-2 pr-4 pt-4",children:e.jsxs("div",{className:"rounded-xl border border-border/60 bg-card p-3 shadow-[0_1px_2px_rgba(15,23,42,0.05)]",children:[e.jsx("div",{className:s.cn("overflow-hidden transition-all duration-300 ease-in-out",l?"max-h-[210px] opacity-100":"max-h-0 opacity-0"),children:l&&e.jsx(it,{selectedChart:t,onChartChange:n,variant:"outline"})}),e.jsx("div",{"data-content":"Chart Quick Selector",className:s.cn("flex items-center justify-center",{"mt-3":l,"mt-2":!l}),children:e.jsx(s.ChartQuickSelector,{selectedChart:t,onChartChange:n,isDropdownExpanded:l,onToggleDropdown:M})})]})}),w&&e.jsx("div",{className:"pl-2 pr-4 py-3",children:e.jsx("div",{className:"flex items-center justify-end",children:e.jsx(Ae.EditorClearButton,{label:"Reset",variant:"secondary",className:"h-7 px-2 text-xs"})})}),e.jsx(s.ScrollArea,{className:"min-h-0 w-full flex-1 basis-0",children:e.jsxs("div",{className:s.cn("space-y-3 pl-2 pr-4 pb-6",w?"pt-1":"pt-4"),children:[e.jsx(ro,{onEditJoins:D}),e.jsx(no,{groupByFields:a,pivotByFields:r,metricsFields:i,sortByFields:d,detailFields:o,activeField:c})]})}),e.jsx(wa,{open:p,onOpenChange:h,joinPlan:E,availableDataSources:V,onSave:A,onCancel:v,onRemove:T,children:e.jsx("div",{})})]})}function oo({initialFilters:t,availableFields:n}={}){const[a,r]=C.useState(t||{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[],groups:[]});s.useEditorStore(T=>T.card.dataSource);const{columns:i,isLoading:d}=s.useColumns(),c=n||i||[],l={id:"default",qualifiedFieldName:"default",name:"default",dataType:"string",label:"Default",entityId:"default",entityName:"Default",entityType:"table"},x=T=>{const v=D=>{if(D.id===T){const M=c[0]||l,f=s.getDataType(M.dataType)==="date";return{...D,conditions:[...D.conditions,{id:`condition-${Date.now()}`,field:M,operator:f?"between":"=",value:f?[]:""}]}}return{...D,groups:D.groups.map(v)}};r(v(a))},p=T=>{const v=D=>{if(D.id===T){const M=c[0]||l,f=s.getDataType(M.dataType)==="date";return{...D,groups:[...D.groups,{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[{id:`condition-${Date.now()}`,field:M,operator:f?"between":"=",value:f?[]:""}],groups:[]}]}}return{...D,groups:D.groups.map(v)}};r(v(a))},h=(T,v)=>{const D=M=>M.id===T?{...M,conditions:M.conditions.filter(f=>f.id!==v)}:{...M,groups:M.groups.map(D)};r(D(a))},u=(T,v)=>{const D=M=>M.id===T?{...M,groups:M.groups.filter(f=>f.id!==v)}:{...M,groups:M.groups.map(D)};r(D(a))},y=(T,v,D,M)=>{if(D==="field")throw new Error("Use a dedicated method to update the field property with a Field object");const f=I=>I.id===T?{...I,conditions:I.conditions.map(j=>j.id===v?{...j,[D]:M}:j)}:{...I,groups:I.groups.map(f)};r(f(a))},b=(T,v,D)=>{const M=f=>f.id===T?{...f,conditions:f.conditions.map(I=>I.id===v?{...I,...D}:I)}:{...f,groups:f.groups.map(M)};r(M(a))},m=(T,v)=>{const D=M=>M.id===T?{...M,logicalOperator:v}:{...M,groups:M.groups.map(D)};r(D(a))},g=(T,v)=>{const D=M=>M.id===T?{...M,negate:v}:{...M,groups:M.groups.map(D)};r(D(a))},w=(T,v,D)=>{const M=f=>f.id===T?{...f,conditions:s.arrayMove(f.conditions,v,D)}:{...f,groups:f.groups.map(M)};r(M(a))},E=(T,v,D)=>{const M=f=>f.id===T?{...f,groups:s.arrayMove(f.groups,v,D)}:{...f,groups:f.groups.map(M)};r(M(a))},V=T=>{if(!T||T.conditions.length===0&&T.groups.length===0)return"-- No filters defined";const v=M=>{let f="";typeof M.field=="object"?f=M.field.entityName?`${M.field.entityName}.${M.field.name}`:M.field.name:f=String(M.field);const I=M.operator;let j=M.value;if(M.field.dataType==="string"&&!["in","not in"].includes(M.operator))typeof j=="string"?j=`'${j}'`:Array.isArray(j)&&(j=`'${j.join(", ")}'`);else if(M.field.dataType==="date"||M.field.dataType==="datetime"||M.field.dataType==="timestamp")if(M.operator==="between"&&Array.isArray(j)&&j.length===2){const k=j[0]?`'${j[0]}'`:"NULL",R=j[1]?`'${j[1]}'`:"NULL";return`${f} BETWEEN ${k} AND ${R}`}else if((M.operator==="in"||M.operator==="not in")&&Array.isArray(j)){const k=j.map(R=>R?`'${R}'`:"NULL").join(", ");return`${f} ${I} (${k})`}else typeof j=="string"||j instanceof Date?j=`'${j}'`:Array.isArray(j)&&j.length>0&&(j=`'${j[0]}'`);else if(["in","not in"].includes(M.operator)){let k=[];Array.isArray(j)?k=j.map(R=>typeof R=="string"?`'${R}'`:String(R)):typeof j=="string"?k=j.split(",").map(R=>{const P=R.trim();return M.field.dataType==="string"?`'${P}'`:P}):typeof j=="number"&&(k=[String(j)]),j=`(${k.join(", ")})`}switch(I){case"contains":return typeof j=="string"?`${f} LIKE '%${j.replace(/'/g,"")}'`:`${f} LIKE '%${String(j)}'`;case"startsWith":return typeof j=="string"?`${f} LIKE '${j.replace(/'/g,"")}%'`:`${f} LIKE '${String(j)}%'`;case"endsWith":return typeof j=="string"?`${f} LIKE '%${j.replace(/'/g,"")}'`:`${f} LIKE '%${String(j)}'`;case"isNull":return`${f} IS NULL`;case"isNotNull":return`${f} IS NOT NULL`;default:return`${f} ${I} ${j}`}},D=M=>{const f=M.conditions.map(v),I=M.groups.map(P=>D(P)),j=[...f,...I].filter(Boolean);if(j.length===0)return"";const k=j.join(` ${M.logicalOperator} `),R=j.length>1?`(${k})`:k;return M.negate?`NOT ${R}`:R};return D(T)},A=a.conditions.length>0||a.groups.length>0;return{currentFilters:a,setCurrentFilters:r,availableFields:c,isLoading:d,addCondition:x,addGroup:p,removeCondition:h,removeGroup:u,updateCondition:y,updateConditionFields:b,updateGroupOperator:m,updateGroupNegate:g,reorderConditions:w,reorderGroups:E,generateSQLPreview:V,hasAnyFilters:A}}function io({children:t,className:n,delayDuration:a}){return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:a,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:s.cn("w-[200px] overflow-hidden text-ellipsis whitespace-nowrap text-sm",n),children:t})}),e.jsx(s.PortalTooltipContent,{children:t})]})})}const co=t=>{if(t.qualifiedEntityName){const n=t.qualifiedEntityName.split(".");return n.length>1?n[0]:"default"}return"default"};function uo({value:t,onValueChange:n,availableFields:a,placeholder:r="Select field",className:i="w-64"}){const[d,o]=C.useState(!1),c=C.useMemo(()=>{const l={};return a.forEach(x=>{const p=co(x);l[p]||(l[p]={}),l[p][x.entityId]||(l[p][x.entityId]=[]),l[p][x.entityId].push(x)}),l},[a]);return e.jsxs(s.Popover,{modal:!0,open:d,onOpenChange:o,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":d,className:s.cn("justify-between",!t&&"text-muted-foreground",i),children:[t?e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(io,{children:[t.entityName,".",t.name]})}):r,e.jsx(s.ChevronsUpDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-80 p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search fields...",className:"h-9"}),e.jsx(s.CommandEmpty,{children:"No fields found."}),e.jsx(s.CommandList,{className:"max-h-80",children:Object.entries(c).map(([l,x])=>e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Database,{className:"h-3 w-3"}),l]}),children:Object.entries(x).map(([p,h])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 bg-gray-50/50 px-2 py-1 text-xs font-medium text-gray-600",children:[s.getEntityIcon(h[0].entityType,{size:"h-3 w-3"}),e.jsx("span",{children:h[0].entityName})]}),h.map((u,y)=>e.jsxs(s.CommandItem,{value:u.id,onSelect:()=>{n(u),o(!1)},className:"overflow-x-auto",children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",(t==null?void 0:t.id)===u.id?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"",children:u.name})}),e.jsx("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:u.description&&e.jsx("span",{children:u.description})})]})]},u.id+y))]},`${l}-${p}`))},l))})]})})]})}function xt(t){var m;const n=s.useEditorStore(g=>g.card),{authToken:a,tokenProps:r}=s.useSemaphorContext(),i=s.useEditorStore(g=>g.card.config),d=i==null?void 0:i.joinPlan,o={...t,alias:t.name,label:"value",role:"groupby"},c={...t,role:"metric",label:"count",alias:"count",aggregate:"COUNT"},l={...o,role:"sortby",direction:"asc"},x={joinPlan:d,groupByColumns:[o],metricColumns:[c],sortByColumns:[l]},p=((m=n.dataSource)==null?void 0:m.connectionId)||n.connectionId,{data:h,isPending:u,error:y}=s.useQuery({queryKey:["filterValues",t.entityId,t.name,t.qualifiedEntityName],queryFn:async()=>{try{return await s.postRequestRegular(`${r.apiServiceUrl}/v1/query`,(a==null?void 0:a.accessToken)||"",{connection_id:p,cardConfig:x,cardDataSource:n.dataSource})}catch(g){console.log(t),console.error("error",g)}},enabled:!!p,refetchOnMount:!0,refetchOnWindowFocus:!1});return{filterValues:((h==null?void 0:h.records)||[]).map(g=>({label:g.value||"BLANK",value:g.value||"BLANK",count:(g==null?void 0:g.count)||0})),isPending:u,error:y}}function mo({field:t,selected:n,onChange:a,placeholder:r="Select items...",className:i}){const[d,o]=at.useState(!1),{filterValues:c}=xt(t),l=p=>{a(n.filter(h=>h!==p))},x=p=>{n.includes(p)?a(n.filter(h=>h!==p)):a([...n,p])};return e.jsx("div",{className:s.cn("w-full",i),children:e.jsxs(s.Popover,{open:d,onOpenChange:o,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":d,className:"h-auto min-h-10 w-full justify-between p-2",children:[e.jsx("div",{className:"flex flex-1 flex-wrap gap-1",children:n.length>0?n.map(p=>{const h=c.find(u=>u.value===p);return e.jsxs(s.Badge,{variant:"secondary",className:"text-xs",children:[h==null?void 0:h.label,e.jsx("div",{className:"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2",onKeyDown:u=>{u.key==="Enter"&&l(p)},onMouseDown:u=>{u.preventDefault(),u.stopPropagation()},onClick:u=>{u.stopPropagation(),l(p)},children:e.jsx(s.X,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},p)}):e.jsx("span",{className:"text-muted-foreground",children:r})}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-fit overflow-auto p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No results found."}),e.jsx(s.CommandGroup,{children:c.map((p,h)=>e.jsxs(s.CommandItem,{onSelect:()=>x(p.value),children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",n.includes(p.value)?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex grow items-center justify-between gap-4",children:[e.jsx("span",{children:p.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:p.count})]})]},p.value+h))})]})]})})]})})}function xo({field:t,value:n,onChange:a,placeholder:r="Select value...",className:i}){const{filterValues:d,isPending:o,error:c}=xt(t);return o?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):c?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsxs(s.Select,{value:n,onValueChange:a,children:[e.jsx(s.SelectTrigger,{className:i||"flex-1",children:e.jsx(s.SelectValue,{placeholder:r,children:n})}),e.jsx(s.SelectContent,{children:d.map((l,x)=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:l.value,children:l.label},l.value+x))})]})}function ho({value:t,operator:n,onChange:a,className:r}){var y,b,m;const{tokenProps:i}=s.useSemaphorContext(),d=((b=(y=i==null?void 0:i.params)==null?void 0:y.calendarContext)==null?void 0:b.tz)||((m=i==null?void 0:i.params)==null?void 0:m.timezone),o=d||Intl.DateTimeFormat().resolvedOptions().timeZone,c=n==="between"||n==="not between",l=C.useMemo(()=>{if(!(!t||!c)&&Array.isArray(t)&&t.length===2){const g=t[0]?new Date(t[0]):void 0,w=t[1]?new Date(t[1]):void 0;if(g&&w)return{from:g,to:w}}},[t,c]),x=C.useMemo(()=>{if(!t||c)return;const g=Array.isArray(t)?t[0]:t;if(!g)return;const w=new Date(g);if(!isNaN(w.getTime()))return w},[t,c]),p=g=>n==="<="||n===">"?s.endOfDayInTimezone(g,o):s.startOfDayInTimezone(g,o),h=g=>{if(!g){a([]);return}if(g.from&&g.to){a([g.from.toISOString(),g.to.toISOString()]);return}a([])},u=g=>{if(!g){a("");return}const w=p(g);a(w.toISOString())};return e.jsx(s.DateRangePicker,{value:c?l:void 0,selectionMode:c?"range":"single",singleValue:c?void 0:x,onChange:h,onSingleChange:u,timezone:d,showRelativeTab:c,className:r,placeholder:"Select date..."})}const po=["=","!=",">",">=","<","<=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],fo=["=","!=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],go=["=","!=",">",">=","<","<=","in","not in","isNull","isNotNull"],jo=["=","!=","isNull","isNotNull"],bo=["between","=","!=","<","<=",">",">=","isNull","isNotNull"],vo={"=":"Equals","!=":"Not Equals",">":"Greater Than",">=":"Greater Than or Equal","<":"Less Than","<=":"Less Than or Equal",contains:"Contains",startsWith:"Starts With",endsWith:"Ends With",in:"In","not in":"Not In",between:"Between",isNull:"Is Null",isNotNull:"Is Not Null","not between":"Not Between"};function va(t){return vo[t]||s.titleCase(t)}function yo(t){switch(t){case"string":return fo;case"number":return go;case"boolean":return jo;case"date":return bo;default:return po}}function za({condition:t,index:n,groupId:a,groupLogicalOperator:r,onUpdateCondition:i,onRemoveCondition:d,onUpdateGroupOperator:o,availableFields:c,updateConditionFields:l}){const{attributes:x,listeners:p,setNodeRef:h,transform:u,transition:y,isDragging:b}=s.useSortable({id:t.id}),{isPending:m,error:g}=xt(t.field),w={transform:s.CSS.Transform.toString(u),transition:y};return e.jsxs("div",{ref:h,style:w,className:`mb-2 flex items-center gap-2 rounded p-2 hover:bg-muted/50 ${b?"z-50 opacity-50":""}`,children:[e.jsx("div",{...x,...p,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 flex-shrink-0 text-gray-400"})}),n>0&&e.jsxs(s.Select,{value:r,onValueChange:E=>o(a,E),children:[e.jsx(s.SelectTrigger,{className:"w-24",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"AND",children:"AND"}),e.jsx(s.SelectItem,{value:"OR",children:"OR"})]})]}),n===0&&e.jsx("div",{className:"w-24"}),e.jsx(uo,{value:t.field,onValueChange:E=>{const V=E,A=s.getDataType(V.dataType)==="date";l(a,t.id,{field:V,value:"",operator:A?"between":"="})},availableFields:c,placeholder:"Select field",className:"w-64"}),e.jsxs(s.Select,{value:t.operator,onValueChange:E=>{E==="in"||E==="not in"?l(a,t.id,{operator:E,value:[]}):E==="isNull"||E==="isNotNull"?l(a,t.id,{operator:E,value:null}):E==="between"||E==="not between"?l(a,t.id,{operator:E,value:[]}):l(a,t.id,{operator:E,value:""})},children:[e.jsx(s.SelectTrigger,{className:"w-32",children:e.jsx(s.SelectValue,{children:t.operator?va(t.operator):""})}),e.jsx(s.SelectContent,{children:yo(s.getDataType(t.field.dataType)).map(E=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:E,children:va(E)},E))})]}),t.operator==="isNull"||t.operator==="isNotNull"?e.jsx("div",{className:"flex-1"}):s.getDataType(t.field.dataType)==="string"?t.operator==="in"||t.operator==="not in"?m?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):g?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsx(mo,{field:t.field,selected:Array.isArray(t.value)&&t.value.every(E=>typeof E=="string")?t.value:[],onChange:E=>l(a,t.id,{value:E}),placeholder:`Select values for ${t.operator}...`,className:"flex-1"}):["contains","startsWith","endsWith"].includes(t.operator)?e.jsx(s.Input$1,{value:typeof t.value=="string"?t.value:"",onChange:E=>l(a,t.id,{value:E.target.value}),className:"flex-1",placeholder:t.operator.charAt(0).toUpperCase()+t.operator.slice(1)+"..."}):e.jsx(xo,{field:t.field,value:typeof t.value=="string"?t.value:"",onChange:E=>l(a,t.id,{value:E}),placeholder:"Select value...",className:"flex-1"}):s.getDataType(t.field.dataType)==="boolean"?e.jsxs(s.Select,{value:typeof t.value=="boolean"?String(t.value):"",onValueChange:E=>l(a,t.id,{value:E==="true"}),children:[e.jsx(s.SelectTrigger,{className:"flex-1",children:e.jsx(s.SelectValue,{placeholder:"Select value..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"true",children:"True"}),e.jsx(s.SelectItem,{value:"false",children:"False"})]})]}):s.getDataType(t.field.dataType)==="date"?e.jsx(ho,{value:t.value,operator:t.operator,onChange:E=>l(a,t.id,{value:E}),className:"flex-1"}):e.jsx(s.Input$1,{value:typeof t.value=="string"||typeof t.value=="number"?t.value:"",onChange:E=>i(a,t.id,"value",E.target.value),className:"flex-1",placeholder:t.operator==="in"||t.operator==="not in"?"value1, value2, value3":"Value"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 flex-shrink-0 p-0",onClick:()=>d(a,t.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]})}function No({group:t,depth:n,parentGroupId:a,onUpdateGroupOperator:r,onUpdateGroupNegate:i,onRemoveGroup:d,onUpdateCondition:o,onUpdateField:c,onRemoveCondition:l,onReorderConditions:x,onReorderGroups:p,onAddCondition:h,onAddGroup:u,availableFields:y,renderFilterGroup:b,updateConditionFields:m}){const{attributes:g,listeners:w,setNodeRef:E,transform:V,transition:A,isDragging:T}=s.useSortable({id:t.id}),v={transform:s.CSS.Transform.toString(V),transition:A},D=f=>{const{active:I,over:j}=f;if(j&&I.id!==j.id){const k=t.conditions.findIndex(P=>P.id===I.id),R=t.conditions.findIndex(P=>P.id===j.id);k!==-1&&R!==-1&&x(t.id,k,R)}},M=f=>{const{active:I,over:j}=f;if(j&&I.id!==j.id&&a){const k=t.groups.findIndex(P=>P.id===I.id),R=t.groups.findIndex(P=>P.id===j.id);k!==-1&&R!==-1&&p(a,k,R)}};return e.jsxs("div",{ref:E,style:v,className:`rounded-lg ${n>0?"mt-2 border border-border":""} ${T?"z-50 opacity-50":""}`,children:[n>0&&e.jsxs("div",{className:"flex items-center justify-between rounded-t-lg bg-muted p-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{...g,...w,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(s.Button,{variant:t.negate?"default":"outline",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>i(t.id,!t.negate),children:"NOT"}),e.jsxs(s.Select,{value:t.logicalOperator,onValueChange:f=>r(t.id,f),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"AND",children:"AND"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"OR",children:"OR"})]})]}),e.jsx("span",{className:"text-sm font-medium",children:"Group"})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>a&&d(a,t.id),children:e.jsx(s.Trash2,{className:"h-3 w-3"})})]}),e.jsxs("div",{className:`p-3 ${n>0?"":"px-0"}`,children:[e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:D,children:e.jsx(s.SortableContext,{items:t.conditions.map(f=>f.id),strategy:s.verticalListSortingStrategy,children:t.conditions.map((f,I)=>e.jsx(za,{condition:f,index:I,groupId:t.id,groupLogicalOperator:t.logicalOperator,onUpdateCondition:o,onUpdateField:c,onRemoveCondition:l,onUpdateGroupOperator:r,availableFields:y,updateConditionFields:m},f.id))})}),e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:M,children:e.jsx(s.SortableContext,{items:t.groups.map(f=>f.id),strategy:s.verticalListSortingStrategy,children:t.groups.map(f=>b(f,n+1,t.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>h(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>u(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})]})}function Co({filters:t,availableFields:n,onSave:a,onClearAll:r,onCancel:i}){const{currentFilters:d,availableFields:o,isLoading:c,addCondition:l,addGroup:x,removeCondition:p,removeGroup:h,updateCondition:u,updateConditionFields:y,updateGroupOperator:b,updateGroupNegate:m,reorderConditions:g,reorderGroups:w,generateSQLPreview:E,hasAnyFilters:V,setCurrentFilters:A}=oo({initialFilters:t,availableFields:n}),T=s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),[v,D]=C.useState(!1),M=(j,k,R)=>{const P=N=>N.id===j?{...N,conditions:N.conditions.map(L=>L.id===k?{...L,field:R,dataType:R.dataType}:L)}:{...N,groups:N.groups.map(P)};A(P(d))},f=(j,k=0,R)=>k===0?e.jsx("div",{className:"rounded-lg",children:e.jsxs("div",{className:"p-3 px-0",children:[e.jsx(s.DndContext,{sensors:T,collisionDetection:s.closestCenter,onDragEnd:P=>{const{active:N,over:L}=P;if(L&&N.id!==L.id){const S=j.conditions.findIndex(O=>O.id===N.id),F=j.conditions.findIndex(O=>O.id===L.id);S!==-1&&F!==-1&&g(j.id,S,F)}},children:e.jsx(s.SortableContext,{items:j.conditions.map(P=>P.id),strategy:s.verticalListSortingStrategy,children:j.conditions.map((P,N)=>e.jsx(za,{condition:P,index:N,groupId:j.id,groupLogicalOperator:j.logicalOperator,onUpdateCondition:u,onUpdateField:M,onRemoveCondition:p,onUpdateGroupOperator:b,availableFields:o,updateConditionFields:y},P.id))})}),e.jsx(s.DndContext,{sensors:T,collisionDetection:s.closestCenter,onDragEnd:P=>{const{active:N,over:L}=P;if(L&&N.id!==L.id){const S=j.groups.findIndex(O=>O.id===N.id),F=j.groups.findIndex(O=>O.id===L.id);S!==-1&&F!==-1&&w(j.id,S,F)}},children:e.jsx(s.SortableContext,{items:j.groups.map(P=>P.id),strategy:s.verticalListSortingStrategy,children:j.groups.map(P=>f(P,k+1,j.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",className:"h-7 text-xs",variant:"outline",onClick:()=>l(j.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),v&&e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>x(j.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})},j.id):e.jsx(No,{group:j,depth:k,parentGroupId:R,onUpdateGroupOperator:b,onUpdateGroupNegate:m,onRemoveGroup:h,onUpdateCondition:u,onUpdateField:M,onRemoveCondition:p,onReorderConditions:g,onReorderGroups:w,onAddCondition:l,onAddGroup:x,availableFields:o,renderFilterGroup:f,updateConditionFields:y},j.id),I=s.getFilterCount(t);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Card,{children:e.jsx(s.CardContent,{className:"p-4",children:e.jsxs("div",{className:"space-y-4",children:[c?e.jsxs("div",{className:"flex items-center justify-center p-4",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600"}),e.jsx("span",{className:"ml-2 text-sm text-gray-600",children:"Loading columns..."})]}):f(d),e.jsx("div",{className:"mt-4 border-t border-border pt-4",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.SmallSwitch,{id:"advanced-mode",checked:v,onCheckedChange:j=>D(j)}),e.jsx(s.Label,{htmlFor:"advanced-mode",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Advanced mode (enable grouping)"})]})}),V&&e.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[e.jsx("div",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"SQL WHERE Clause Preview"}),e.jsx("div",{className:"overflow-x-auto rounded-md border bg-muted p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:E(d)})})]})]})})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"outline",onClick:i,children:"Cancel"}),I>0&&e.jsx(s.Button,{variant:"outline",size:"sm",onClick:r,children:"Clear All"}),e.jsx(s.Button,{size:"sm",onClick:()=>a(V?d:null),children:"Apply Filters"})]})]})}function So({cardId:t,filters:n,onFiltersChange:a,onClearFilters:r,availableFields:i,isOpen:d,onOpenChange:o}){const c=x=>{a(t,x),o(!1)},l=()=>{r(t),o(!1)};return e.jsxs(s.Dialog,{modal:!1,open:d,onOpenChange:o,children:[d&&e.jsx("div",{className:"pointer-events-none fixed inset-0 z-40 bg-background/80 backdrop-blur-sm"}),e.jsxs(s.DialogContent,{className:"max-h-[80vh] max-w-4xl overflow-y-auto",onInteractOutside:x=>{x.preventDefault()},children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Card Filters"}),e.jsx(s.DialogDescription,{children:"Add filters to the card to limit the data that is displayed."})]}),e.jsx(Co,{filters:n,availableFields:i,onSave:c,onCancel:()=>o(!1),onClearAll:l})]})]})}function wo({activeCardId:t,sourceFields:n,getFieldsForContainer:a,setFieldsForContainer:r}){var E,V;const[i,d]=C.useState(null),o=s.useEditorStore(A=>A.card),c=s.useEditorStore(A=>A.actions.updateCardConfig),l=s.useEditorStore(A=>A.actions.setCardPreferences),x=(E=o==null?void 0:o.config)==null?void 0:E.joinPlan,p=C.useCallback(A=>A.entityName===s.CALCULATED_FIELD_ENTITY_MARKER||A.entityName==="calculated_fields"||A.qualifiedEntityName==="calculated_fields",[]),h=(V=o==null?void 0:o.dataSource)==null?void 0:V.semanticDomainId,{data:u}=s.useJoinabilityMap(h),y=[...n,...a("groupBy"),...a("pivotBy"),...a("metrics"),...a("sortBy"),...a("detailColumns")],b=C.useCallback(A=>A.startsWith("card-source-")?"source":A.startsWith("card-")?null:A.startsWith("source-")||n.find(T=>T.id===A)?"source":a("groupBy").find(T=>T.id===A)?"groupBy":a("metrics").find(T=>T.id===A)?"metrics":a("pivotBy").find(T=>T.id===A)?"pivotBy":a("sortBy").find(T=>T.id===A)?"sortBy":a("detailColumns").find(T=>T.id===A)?"detailColumns":null,[n,a]),m=C.useCallback(A=>{d(A.active.id)},[]),g=C.useCallback(A=>{var j;const{active:T,over:v}=A;if(!v||!t){d(null);return}const D=T.id,M=v.id,f=b(D),I=b(M)||M;if(I==="sortBy"){if(f==="source"){const k=n.find(P=>P.id===D);if(!k){d(null);return}if(!(a("groupBy").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName)||a("metrics").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName)||a("detailColumns").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName))){d(null);return}}else if(f==="pivotBy"){d(null);return}else if(f!=="groupBy"&&f!=="metrics"&&f!=="sortBy"&&f!=="detailColumns"){d(null);return}}if(f==="source"&&I==="sortBy"){const k=[...n].find(L=>L.id===D);if(!k){d(null);return}const R=a("sortBy");if(s.fieldAlreadyExists(k,R)){d(null);return}const P=s.validateFieldForChartType(k,"sortBy",o.type);if(!P.isValid){s.ue.error("Invalid Field Type",{description:P.reason,position:"top-center",duration:3e3}),d(null);return}const N=s.getNewField(k,"sortBy",R);d(null),r("sortBy",[...R,N]);return}if(f==="source"&&I!=="source"&&I!=="sortBy"){const k=[...n].find(O=>O.id===D);if(!k){d(null);return}const R=[...a("groupBy"),...a("pivotBy"),...a("metrics"),...a("sortBy"),...a("detailColumns")],P=R.filter(O=>!p(O));if(P.length>0){const O=P[0].qualifiedEntityName;if(!O){d(null);return}if(O!==k.qualifiedEntityName&&!p(k)&&k.qualifiedEntityName)if(h&&(u!=null&&u.joinabilityMap)){if(s.calculateFieldState(k,{joinabilityMap:u.joinabilityMap,selectedFields:R,baseEntityName:(j=x==null?void 0:x.baseEntity)==null?void 0:j.name}).state==="unreachable"){s.showJoinRequiredNotification(),d(null);return}}else{if(!x){s.showJoinRequiredNotification(),d(null);return}if(!s.areEntitiesJoined(O,k.qualifiedEntityName,x)){s.showJoinRequiredNotification(),d(null);return}}}const N=a(I);if(s.fieldAlreadyExists(k,N)){d(null);return}const L=s.validateFieldForChartType(k,I,o.type);if(!L.isValid){s.ue.error("Invalid Field Type",{description:L.reason,position:"top-center",duration:3e3}),d(null);return}const S=s.getNewField(k,I,N),F=[...N,S];if(d(null),r(I,F),I==="metrics"&&t){const O=s.seedSemanticMetricFormatDefaults(o,S,o.preferences);O&&l(O),s.cleanupKpiMetricComparisonMode(o.type,o.config,c,t,F)}return}if(f&&I&&f!=="source"&&I!=="source"&&f!==I){const k=a(f),R=a(I),P=k.find(O=>O.id===D);if(!P){d(null);return}const N=s.validateFieldForChartType(P,I,o.type);if(!N.isValid){s.ue.error("Invalid Field Type",{description:N.reason,position:"top-center",duration:3e3}),d(null);return}const L=s.getNewField(P,I,R);if(d(null),I==="sortBy"){s.fieldAlreadyExists(P,R)||r(I,[...R,L]);return}const S=k.filter(O=>O.id!==D),F=[...R,L];if(r(f,S),r(I,F),I==="metrics"&&t){const O=s.seedSemanticMetricFormatDefaults(o,L,o.preferences);O&&l(O),s.cleanupKpiMetricComparisonMode(o.type,o.config,c,t,F)}return}if(f&&I&&f===I&&f!=="source"){const k=a(f),R=k.findIndex(N=>N.id===D),P=k.findIndex(N=>N.id===M);if(R!==P){const N=s.arrayMove(k,R,P);r(f,N)}}d(null)},[t,n,a,r,b,x,h,u,p,o,c,l]),w=i?y.find(A=>A.id===i):null;return{activeId:i,activeField:w,handleDragStart:m,handleDragEnd:g}}function To({activeView:t,onViewChange:n,splitViewEnabled:a}){const r=s.useEditorStore(c=>c.card),{config:i}=C.useContext(s.SemaphorContext).tokenProps,d=(i==null?void 0:i.showInfoTab)!==!1,o=()=>a?!1:!["table","pivotTable","aggregateTable","detailTable"].includes(r.type);return e.jsx(s.Tabs,{value:t,onValueChange:c=>n(c),children:e.jsxs(s.TabsList,{className:"h-9 w-fit gap-1 bg-background p-0",children:[e.jsx(s.TabsTrigger,{value:"chart",className:"rounded-md transition data-[state=active]:bg-muted",children:"Chart"}),o()&&e.jsx(s.TabsTrigger,{value:"table",className:"rounded-md transition data-[state=active]:bg-muted",children:"Results"}),r.type!=="kpi"&&d&&e.jsx(s.TabsTrigger,{value:"info",className:"rounded-md transition data-[state=active]:bg-muted",children:"Info"})]})})}const Eo=[{value:"10",label:"Top 10"},{value:"20",label:"Top 20"},{value:"50",label:"Top 50"},{value:"100",label:"Top 100"},{value:"200",label:"Top 200"},{value:"500",label:"Top 500"},{value:"1000",label:"Top 1000"}];function Io(){var l,x;const t=s.useEditorStore(p=>p.card),{updateRowLimit:n}=s.useEditorActions(),[a,r]=C.useState(!1),[i,d]=C.useState(""),o=p=>{if(p==="custom"){r(!0);return}r(!1),n(t.id,parseInt(p))},c=p=>{const h=p.target.value;d(h),h&&!isNaN(parseInt(h))&&n(t.id,parseInt(h))};return e.jsx("div",{className:"flex items-center gap-2",children:a?e.jsx(s.Input,{type:"number",value:i,onChange:c,className:"h-7 w-24",placeholder:"Enter limit",min:1}):e.jsxs(s.Select,{value:((x=(l=t.config)==null?void 0:l.rowLimit)==null?void 0:x.toString())||"100",onValueChange:o,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-24 border-none px-1 [&>svg]:hidden",children:e.jsx(s.SelectValue,{placeholder:"Select limit"})}),e.jsx(s.SelectContent,{children:Eo.map(p=>e.jsx(s.SelectItem,{value:p.value,children:p.label},p.value))})]})})}function ko({card:t,queryData:n,isLoading:a,isFetching:r,pagination:i,onPaginationChange:d,onSortChange:o,sortState:c,splitViewEnabled:l}){const x=C.useMemo(()=>(n==null?void 0:n.records)||[],[n==null?void 0:n.records]);return!l||["table","pivotTable","aggregateTable","detailTable"].includes(t.type)?e.jsx(rt,{}):e.jsxs(s.ResizablePanelGroup,{direction:"vertical",className:"h-full min-h-0 w-full",children:[e.jsx(s.ResizablePanel,{defaultSize:60,minSize:30,role:"chart-section",className:"flex flex-col pb-3",children:e.jsx(rt,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{defaultSize:40,minSize:20,role:"results-section",className:"flex flex-col",children:e.jsxs("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 py-4 pl-2 pr-4",children:[(a||r)&&(n==null?void 0:n.records)&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}),(n==null?void 0:n.records)&&e.jsx(s.TableVisual,{card:t,data:x,paginationMetadata:i,onPaginationChange:d,isLoading:a||r,onSortChange:o,sortState:c})]})})]})}const Do="semaphor-split-view-enabled";function Ao(){return Ta(Do,!0)}function Lo({activeView:t,onViewChange:n,onFiltersClick:a,activeCard:r,columns:i}){var z,W,le;const d=s.useEditorStore(X=>X.card),o=s.useDashboardStore(X=>X.filterValues),c=s.useDashboardStore(X=>X.selectedSheetId),l=s.useDashboardStore(X=>X.inlineFilterValuesMap[(r==null?void 0:r.id)||""]),{updateCardConfig:x,setCard:p,updateCardInFrame:h,setShowAIDialog:u}=s.useEditorActions(),y=s.useEditorStore(X=>X.showAIDialog),b=s.useEditorStore(X=>X.isDevMode),m=s.useDashboardStore(X=>X.isVisualEditing),[g,w]=C.useState(!1),[E,V]=C.useState(!1),[A,T]=C.useState(null),{config:v}=C.useContext(s.SemaphorContext).tokenProps,D=(v==null?void 0:v.showInfoTab)!==!1,M=(v==null?void 0:v.showQueryDebugTools)!==!1,[f,I]=Ao();s.useEditorStore(X=>{var ne;return!!((ne=X.card.customCardPreferences)!=null&&ne.url)});const{data:j,errorMessage:k,isLoading:R,isFetching:P,errorSql:N,pagination:L,refetch:S,comparisonMetadata:F,queryRequestPayload:O}=s.useDashboardCardQuery(r),_=C.useMemo(()=>(j==null?void 0:j.records)||[],[j==null?void 0:j.records]),[Q,B]=C.useState(!1);C.useEffect(()=>{P||B(!1)},[P]);const K=()=>{const X=!f;X&&t==="table"&&n("chart"),I(X)},se=(X,ne)=>{const ue={...r,paginationConfig:{page:X+1,pageSize:ne}};p(ue),h(ue)},H=X=>{if(!d.config)return;const ne=s.sortStateToSortByColumns(X,d.config.metricColumns,d.config.groupByColumns,d.config.detailColumns);x(d.id,{...d.config,sortByColumns:ne})},te=C.useMemo(()=>{var X;return s.sortByColumnsToSortState((X=d.config)==null?void 0:X.sortByColumns)},[(z=d.config)==null?void 0:z.sortByColumns]);return e.jsx("div",{className:s.cn("relative flex w-0 grow flex-col",{"border-l":y&&m}),children:e.jsxs("div",{className:"group/visualization relative flex h-full max-w-full grow flex-col pt-3",children:[e.jsxs("div",{className:"flex items-center gap-2 pl-2 pr-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t==="chart"&&y&&e.jsx("div",{className:"w-[200px]",children:e.jsx(it,{variant:b?"secondary":"ghost"})}),e.jsx(To,{activeView:t,onViewChange:n,splitViewEnabled:f}),e.jsx(s.FilterInfo,{cardId:r.id,cardFilters:(W=r.config)==null?void 0:W.filters,cardFilterCount:s.getFilterCount(((le=r.config)==null?void 0:le.filters)||null),onFiltersClick:a,inlineFilters:r.inlineFilters,inlineFilterValues:l,sheetId:c||""}),F&&d.type!=="table"&&e.jsx(s.ComparisonMetadataBadge,{metadata:F,variant:"compact"}),e.jsx("div",{className:"ml-2",children:e.jsx(Io,{})}),y&&e.jsx(Ae.EditorClearButton,{})]}),e.jsxs("div",{className:s.cn("flex grow items-center justify-end gap-2"),children:[e.jsx(s.IconButton,{tooltip:"Refresh",disabled:R||P,onClick:()=>{B(!0),S()},children:e.jsx(s.RefreshCcw,{className:s.cn("h-4 w-4",{"animate-spin":Q})})}),t==="chart"&&e.jsx(La,{showInlineFilters:!1,showDisplayOptions:!1}),!y&&e.jsx(s.IconButton,{onClick:()=>u(!y),tooltip:"AI",className:"h-8","aria-label":"AI",children:e.jsx(s.Sparkles,{className:"size-4"})}),t==="chart"&&e.jsxs(s.DropdownMenu,{modal:!1,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"More Options",className:"h-8","aria-label":"More options",children:e.jsx(s.EllipsisVertical,{className:"size-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-64",children:[e.jsx(s.DropdownMenuLabel,{children:"More Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:K,children:[f?e.jsx(un,{className:"mr-2 h-4 w-4"}):e.jsx(wn,{className:"mr-2 h-4 w-4"}),f?"Hide Results Table":"Show Results Table"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"px-1 py-1",children:[e.jsx(dt,{triggerVariant:"menu",className:"w-full"}),e.jsx(ct,{triggerVariant:"menu",className:"w-full"})]})]})]})]})]}),e.jsxs("div",{className:"mt-2 flex min-h-0 grow flex-col",children:[t==="chart"&&e.jsx("div",{className:s.cn("flex grow flex-col pb-4",{"pb-0":f&&!["table","pivotTable","aggregateTable","detailTable"].includes(r.type)}),children:e.jsx(ko,{card:r,queryData:j,isLoading:R,isFetching:P,pagination:L,onPaginationChange:se,onSortChange:H,sortState:te,splitViewEnabled:f})}),t==="table"&&(j==null?void 0:j.records)&&e.jsxs("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 py-4 pl-2 pr-4",children:[(R||P)&&(j==null?void 0:j.records)&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}),e.jsx(s.TableVisual,{card:r,data:_,comparisonMetadata:F,paginationMetadata:L,onPaginationChange:se,isLoading:R||P,onSortChange:H,sortState:te})]}),t==="info"&&D&&e.jsx("div",{className:"flex min-h-0 flex-1 flex-col pb-4",children:e.jsx("div",{className:"flex min-h-0 flex-1 flex-col rounded-md bg-background pl-2 pr-4",children:k?e.jsx(ot,{error:k,errorSql:N,onSendFeedback:()=>{const X=s.prepareFeedbackData(s.FeedbackCategory.QUERY_GENERATION,{cardConfig:d.config,dataSource:r.dataSource,dashboardFilters:o,errorMessage:k,errorSql:N,generatedSql:j==null?void 0:j.sql});T(X),V(!0)},onOpenInEditor:()=>{u(!0),setTimeout(()=>{const X=s.useEditorStore.getState().actions;X.setIsDevMode(!0),X.setCardSql(N||""),setTimeout(()=>{X.setRunSql(!0)},100)},100)}}):(j==null?void 0:j.sql)&&e.jsx(ka,{sql:j.sql,showCardDetails:!0,debugPayloads:M?{queryRequest:O,queryResponse:j,columns:i,dashboardFilters:o}:void 0})})})]}),A&&e.jsx(s.FeedbackDialog,{open:E,onOpenChange:V,feedbackData:A})]})})}function Mo({activeField:t}){const[n,a]=C.useState(!0);return C.useEffect(()=>{t&&a(!0)},[t]),t?e.jsxs("div",{className:`flex max-w-[300px] items-center gap-2 rounded-lg border border-blue-500 bg-background p-2 shadow-lg transition-all duration-200 ${n?"scale-100 opacity-100":"scale-95 opacity-0"}`,children:[e.jsx(s.GripVertical,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),e.jsx(ut,{dataType:t.dataType}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm dark:text-muted-foreground",children:t.label||t.name})]}):null}const Oo=()=>{const t=console.error;console.error=(...r)=>{r.length>0&&typeof r[0]=="string"&&r[0].includes("ResizeObserver loop completed with undelivered notifications")||t.apply(console,r)};const n=r=>{if(r.message&&(r.message.includes("ResizeObserver loop completed with undelivered notifications")||r.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),r.stopPropagation(),!1},a=r=>{var i;if((i=r.reason)!=null&&i.message&&(r.reason.message.includes("ResizeObserver loop completed with undelivered notifications")||r.reason.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),!1};return window.addEventListener("error",n,!0),window.addEventListener("unhandledrejection",a,!0),()=>{console.error=t,window.removeEventListener("error",n,!0),window.removeEventListener("unhandledrejection",a,!0)}};function Ro({column:t,isSelected:n,onSelect:a,availableFields:r,width:i,onWidthChange:d}){var O,_,Q;const o=s.useEditorStore(B=>B.card),{updateCardConfig:c,removeGroupByColumn:l,removeMetricColumn:x,updateFilters:p}=s.useEditorActions(),[h,u]=C.useState(!1),[y,b]=C.useState(!1),m=C.useRef(null),g=C.useCallback(B=>{B.preventDefault(),B.stopPropagation(),b(!0),m.current={startX:B.clientX,startWidth:i||150};const K=H=>{if(!m.current)return;const te=H.clientX-m.current.startX,z=Math.max(80,m.current.startWidth+te);d==null||d(t.id,z)},se=()=>{b(!1),m.current=null,document.removeEventListener("mousemove",K),document.removeEventListener("mouseup",se)};document.addEventListener("mousemove",K),document.addEventListener("mouseup",se)},[i,t.id,d]),w=(O=o==null?void 0:o.config)==null?void 0:O.filters,E=(_=w==null?void 0:w.conditions)==null?void 0:_.some(B=>B.field.name===t.name&&B.field.qualifiedEntityName===t.qualifiedEntityName),V=B=>{B?p(o.id,B):c(o.id,{filters:void 0})},{attributes:A,listeners:T,setNodeRef:v,transform:D,transition:M,isDragging:f}=s.useSortable({id:t.id}),I={transform:s.CSS.Transform.toString(D),transition:M},j=s.getDataType(t.dataType),k=Fo(j),R=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.sortByColumns)||[],K=B.findIndex(H=>H.name===t.name);if(K!==-1){const H=[...B];H[K]={...H[K],direction:"asc"},c(o.id,{sortByColumns:H})}else c(o.id,{sortByColumns:[...B,{...t,id:`sort-${t.id}`,role:"sortby",direction:"asc"}]})},P=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.sortByColumns)||[],K=B.findIndex(H=>H.name===t.name);if(K!==-1){const H=[...B];H[K]={...H[K],direction:"desc"},c(o.id,{sortByColumns:H})}else c(o.id,{sortByColumns:[...B,{...t,id:`sort-${t.id}`,role:"sortby",direction:"desc"}]})},N=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.groupByColumns)||[];if(!B.some(H=>H.name===t.name)){const H={...t,id:`groupby-${t.id}-${Date.now()}`,role:"groupby"};c(o.id,{groupByColumns:[...B,H]})}},L=B=>{var H;const K=((H=o==null?void 0:o.config)==null?void 0:H.metricColumns)||[];if(!K.some(te=>te.name===t.name&&te.aggregate===B)){const te={...t,id:`metric-${t.id}-${B}-${Date.now()}`,label:`${B} of ${t.label||t.name}`,role:"metric",aggregate:B};c(o.id,{metricColumns:[...K,te]})}},S=()=>{t.role==="groupby"?l(o.id,t.id):t.role==="metric"&&x(o.id,t.id)},F={...I,width:i?`${i}px`:void 0,minWidth:i?`${i}px`:"120px"};return e.jsxs("th",{ref:v,style:F,className:s.cn("group relative border-r border-border bg-background px-1 py-0",f&&"opacity-50",n&&"bg-primary/10",y&&"select-none"),children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("button",{...A,...T,className:"cursor-grab p-1 text-muted-foreground opacity-0 transition-opacity hover:text-foreground group-hover:opacity-100 active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-3 w-3"})}),e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsxs("button",{onClick:a,className:s.cn("flex flex-1 items-center justify-between gap-1 rounded px-2 py-2 text-left text-sm font-medium transition-colors hover:bg-muted/50",n&&"bg-primary/10"),children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(k,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"truncate",children:t.label||t.name}),t.role==="metric"&&t.aggregate&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",t.aggregate,")"]}),E&&e.jsx(s.Filter,{className:"h-3 w-3 text-primary"})]}),e.jsx(s.ChevronDown,{className:"h-3 w-3 text-muted-foreground"})]})}),e.jsxs(s.DropdownMenuContent,{align:"start",className:"w-48",children:[e.jsxs(s.DropdownMenuItem,{onClick:()=>u(!0),children:[e.jsx(s.Filter,{className:s.cn("mr-2 h-4 w-4",E&&"text-primary")}),E?"Edit Filter":"Filter"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:R,children:[e.jsx(on,{className:"mr-2 h-4 w-4"}),"Sort A → Z"]}),e.jsxs(s.DropdownMenuItem,{onClick:P,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),"Sort Z → A"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuSub,{children:[e.jsxs(s.DropdownMenuSubTrigger,{children:[e.jsx(s.Calculator,{className:"mr-2 h-4 w-4"}),"Summarize"]}),e.jsxs(s.DropdownMenuSubContent,{children:[e.jsx(s.DropdownMenuItem,{onClick:()=>L("SUM"),children:"Sum"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("AVG"),children:"Average"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("COUNT"),children:"Count"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("DISTINCT"),children:"Count Distinct"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("MIN"),children:"Min"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("MAX"),children:"Max"})]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:N,children:[e.jsx(Fs,{className:"mr-2 h-4 w-4"}),"Group by this column"]}),e.jsxs(s.DropdownMenuItem,{disabled:!0,children:[e.jsx(lt,{className:"mr-2 h-4 w-4"}),"Pivot by this column"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{disabled:!0,children:[e.jsx(s.EyeOff,{className:"mr-2 h-4 w-4"}),"Hide column"]}),e.jsxs(s.DropdownMenuItem,{onClick:S,className:"text-destructive focus:text-destructive",children:[e.jsx(s.Trash2,{className:"mr-2 h-4 w-4"}),"Remove column"]})]})]})]}),e.jsx("div",{onMouseDown:g,className:s.cn("absolute right-0 top-0 h-full w-1 cursor-col-resize bg-transparent hover:bg-primary/50",y&&"bg-primary")}),e.jsx(Ba,{open:h,onOpenChange:u,availableFields:r.length>0?r:[t],existingFilters:w,editingCondition:E?(Q=w==null?void 0:w.conditions)==null?void 0:Q.find(B=>B.field.name===t.name&&B.field.qualifiedEntityName===t.qualifiedEntityName):void 0,onSave:V})]})}function Fo(t){switch(t){case"number":return s.Hash;case"date":return s.Calendar;case"string":default:return s.Type}}function Po({selectedColumn:t,onColumnSelect:n,isLoading:a=!1,sourceFields:r=[]}){var M,f,I,j;const i=s.useEditorStore(k=>k.card),{updateCardConfig:d}=s.useEditorActions(),[o,c]=C.useState(null),[l,x]=C.useState({}),[p,h]=C.useState(!1),u=C.useMemo(()=>{var P,N;const k=((P=i==null?void 0:i.config)==null?void 0:P.groupByColumns)||[],R=((N=i==null?void 0:i.config)==null?void 0:N.metricColumns)||[];return[...k,...R]},[(M=i==null?void 0:i.config)==null?void 0:M.groupByColumns,(f=i==null?void 0:i.config)==null?void 0:f.metricColumns]),y=C.useMemo(()=>{const k=new Set(u.map(R=>`${R.qualifiedEntityName}.${R.name}`));return r.filter(R=>!k.has(`${R.qualifiedEntityName}.${R.name}`))},[r,u]),{data:b,isLoading:m}=s.useDashboardCardQuery(i),g=(b==null?void 0:b.records)||[],w=C.useCallback((k,R)=>{x(P=>({...P,[k]:R}))},[]),E=C.useCallback(k=>{var L,S;const R=s.getDataType(k.dataType),P=((L=i==null?void 0:i.config)==null?void 0:L.groupByColumns)||[],N=((S=i==null?void 0:i.config)==null?void 0:S.metricColumns)||[];if(R==="number"){const F={...k,id:`metric-${k.id}-${Date.now()}`,role:"metric",aggregate:"SUM"};d(i.id,{metricColumns:[...N,F]})}else{const F={...k,id:`groupby-${k.id}-${Date.now()}`,role:"groupby"};d(i.id,{groupByColumns:[...P,F]})}h(!1)},[(I=i==null?void 0:i.config)==null?void 0:I.groupByColumns,(j=i==null?void 0:i.config)==null?void 0:j.metricColumns,i.id,d]),V=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),A=k=>{c(k.active.id)},T=k=>{const{active:R,over:P}=k;if(c(null),!P||R.id===P.id)return;const N=u.findIndex(S=>S.id===R.id),L=u.findIndex(S=>S.id===P.id);if(N!==-1&&L!==-1){const S=s.arrayMove(u,N,L),F=S.filter(_=>_.role==="groupby"),O=S.filter(_=>_.role==="metric");d(i.id,{groupByColumns:F,metricColumns:O})}},v=o?u.find(k=>k.id===o):null,D=k=>{let R="";for(;k>=0;)R=String.fromCharCode(k%26+65)+R,k=Math.floor(k/26)-1;return R};return a?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(s.LoaderCircle,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):u.length===0?e.jsx("div",{className:"flex h-full flex-col items-center justify-center gap-4 p-8 text-center",children:e.jsxs("div",{className:"rounded-lg border-2 border-dashed border-muted-foreground/25 p-12",children:[e.jsx("h3",{className:"text-lg font-medium text-muted-foreground",children:"No columns selected"}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground/75",children:"Select columns from the panel on the right to build your table"})]})}):e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs(s.DndContext,{sensors:V,collisionDetection:s.closestCenter,onDragStart:A,onDragEnd:T,children:[e.jsxs("table",{className:"w-full border-collapse",children:[e.jsxs("thead",{children:[e.jsxs("tr",{className:"border-b border-border bg-muted/30",children:[e.jsx("th",{className:"sticky left-0 z-20 w-12 border-r border-border bg-muted/50 px-2 py-1 text-center text-xs font-medium text-muted-foreground"}),e.jsx(s.SortableContext,{items:u.map(k=>k.id),strategy:s.horizontalListSortingStrategy,children:u.map((k,R)=>e.jsx("th",{style:{width:l[k.id]?`${l[k.id]}px`:void 0,minWidth:l[k.id]?`${l[k.id]}px`:"120px"},className:"border-r border-border bg-muted/30 px-2 py-1 text-center text-xs font-medium text-muted-foreground",children:D(R)},`letter-${k.id}`))}),e.jsx("th",{className:"w-10 border-r border-border bg-muted/30 px-2 py-1"})]}),e.jsxs("tr",{className:"border-b-2 border-border bg-background",children:[e.jsx("th",{className:"sticky left-0 z-20 w-12 border-r border-border bg-muted/50 px-2 py-2 text-center text-xs font-medium text-muted-foreground",children:"#"}),e.jsx(s.SortableContext,{items:u.map(k=>k.id),strategy:s.horizontalListSortingStrategy,children:u.map(k=>e.jsx(Ro,{column:k,isSelected:(t==null?void 0:t.id)===k.id,onSelect:()=>n(k),availableFields:r,width:l[k.id],onWidthChange:w},k.id))}),e.jsx("th",{className:"w-10 border-r border-border bg-background px-1 py-2",children:e.jsxs(s.Popover,{open:p,onOpenChange:h,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",title:"Add column",children:e.jsx(s.Plus,{className:"h-4 w-4"})})}),e.jsx(s.PopoverContent,{className:"w-[280px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search columns..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No columns available."}),e.jsx(s.CommandGroup,{heading:"Available Columns",children:y.map(k=>{const R=s.getDataType(k.dataType),P=R==="number"?s.Hash:R==="date"?s.Calendar:s.Type;return e.jsxs(s.CommandItem,{value:k.label||k.name,onSelect:()=>E(k),children:[e.jsx(P,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm",children:k.label||k.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:k.entityName})]})]},k.id)})})]})]})})]})})]})]}),e.jsx("tbody",{children:m?e.jsx("tr",{children:e.jsx("td",{colSpan:u.length+2,className:"h-32 text-center",children:e.jsx(s.LoaderCircle,{className:"mx-auto h-6 w-6 animate-spin text-muted-foreground"})})}):g.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:u.length+2,className:"h-32 text-center text-muted-foreground",children:"No data available"})}):g.slice(0,100).map((k,R)=>e.jsxs("tr",{className:s.cn("border-b border-border transition-colors hover:bg-muted/50",R%2===0?"bg-background":"bg-muted/20"),children:[e.jsx("td",{className:"sticky left-0 z-10 w-12 border-r border-border bg-muted/50 px-2 py-2 text-center text-xs font-medium text-muted-foreground",children:R+1}),u.map(P=>{const N=k[P.name]??k[P.label??""];return e.jsx("td",{style:{width:l[P.id]?`${l[P.id]}px`:void 0,minWidth:l[P.id]?`${l[P.id]}px`:"120px"},className:s.cn("border-r border-border px-3 py-2 text-sm",(t==null?void 0:t.id)===P.id&&"bg-primary/5"),children:e.jsx("span",{className:"block truncate",children:Vo(N,P)})},`${R}-${P.id}`)}),e.jsx("td",{className:"w-10 border-r border-border"})]},R))})]}),e.jsx(s.DragOverlay,{children:v&&e.jsx("div",{className:"rounded border border-primary bg-background px-3 py-2 text-sm font-medium shadow-lg",children:v.label||v.name})})]})}),e.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-muted/30 px-4 py-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:["Showing ",Math.min(g.length,100)," of ",g.length," rows"]}),e.jsxs("span",{children:[u.length," columns"]})]})]})}function Vo(t,n){if(t==null)return"—";if(typeof t=="number")return n.role==="metric"?new Intl.NumberFormat("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}).format(t):t.toString();if(t instanceof Date||typeof t=="string"&&!isNaN(Date.parse(t))){const a=new Date(t);if(!isNaN(a.getTime()))return a.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}return String(t)}function Bo({entityGroups:t,isLoading:n=!1}){var V,A;const a=s.useEditorStore(T=>T.card),{updateCardConfig:r,removeGroupByColumn:i,removeMetricColumn:d}=s.useEditorActions(),[o,c]=C.useState(!0),[l,x]=C.useState(""),[p,h]=C.useState(new Set),u=((V=a==null?void 0:a.config)==null?void 0:V.groupByColumns)||[],y=((A=a==null?void 0:a.config)==null?void 0:A.metricColumns)||[],b=T=>{const v=new Set(p);v.has(T)?v.delete(T):v.add(T),h(v)},m=T=>u.some(v=>v.name===T.name&&v.qualifiedEntityName===T.qualifiedEntityName)||y.some(v=>v.name===T.name&&v.qualifiedEntityName===T.qualifiedEntityName),g=(T,v)=>{if(v)if(s.getDataType(T.dataType)==="number"){const M={...T,id:`metric-${T.id}-${Date.now()}`,role:"metric",aggregate:"SUM"};r(a.id,{metricColumns:[...y,M]})}else{const M={...T,id:`groupby-${T.id}-${Date.now()}`,role:"groupby"};r(a.id,{groupByColumns:[...u,M]})}else{const D=u.findIndex(f=>f.name===T.name&&f.qualifiedEntityName===T.qualifiedEntityName),M=y.findIndex(f=>f.name===T.name&&f.qualifiedEntityName===T.qualifiedEntityName);D!==-1&&i(a.id,u[D].id),M!==-1&&d(a.id,y[M].id)}},w=T=>{if(!l)return T;const v=l.toLowerCase();return T.filter(D=>D.name.toLowerCase().includes(v)||D.label&&D.label.toLowerCase().includes(v))},E=T=>{switch(s.getDataType(T)){case"number":return s.Hash;case"date":return s.Calendar;default:return s.Type}};return o?e.jsxs("div",{className:"flex h-full w-72 flex-col border-l border-border bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[e.jsx("span",{className:"text-sm font-medium",children:"Columns"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",onClick:()=>c(!1),title:"Close panel",children:e.jsx(jn,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"border-b border-border p-2",children:e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input,{placeholder:"Search columns...",value:l,onChange:T=>x(T.target.value),className:"h-8 pl-8 text-sm"})]})}),(u.length>0||y.length>0)&&e.jsxs("div",{className:"border-b border-border",children:[u.length>0&&e.jsxs(s.Collapsible,{defaultOpen:!0,children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 px-3 py-2 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:"h-3.5 w-3.5 transition-transform duration-200 [[data-state=open]>&]:rotate-90"}),e.jsx(Fs,{className:"h-3.5 w-3.5 text-blue-500"}),e.jsx("span",{children:"Groupings"}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:u.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"space-y-0.5 px-3 pb-2",children:u.map(T=>{const v=E(T.dataType);return e.jsxs("div",{className:"group flex items-center gap-2 rounded px-2 py-1.5 text-sm hover:bg-muted/50",children:[e.jsx(s.GripVertical,{className:"h-3 w-3 cursor-grab text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100"}),e.jsx(v,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:T.label||T.name}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:()=>i(a.id,T.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},T.id)})})})]}),y.length>0&&e.jsxs(s.Collapsible,{defaultOpen:!0,children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 px-3 py-2 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:"h-3.5 w-3.5 transition-transform duration-200 [[data-state=open]>&]:rotate-90"}),e.jsx(s.Calculator,{className:"h-3.5 w-3.5 text-green-500"}),e.jsx("span",{children:"Metrics"}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:y.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"space-y-0.5 px-3 pb-2",children:y.map(T=>{const v=E(T.dataType);return e.jsxs("div",{className:"group flex items-center gap-2 rounded px-2 py-1.5 text-sm hover:bg-muted/50",children:[e.jsx(s.GripVertical,{className:"h-3 w-3 cursor-grab text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100"}),e.jsx(v,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:T.label||T.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:T.aggregate}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:()=>d(a.id,T.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},T.id)})})})]})]}),e.jsx(s.ScrollArea,{className:"flex-1",children:e.jsx("div",{className:"p-2",children:n?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx("div",{className:"h-6 w-6 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"})}):t.length===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:"No columns available"}):t.map(T=>{const v=w(T.columns);if(v.length===0)return null;const D=p.has(T.entityId)||l.length>0;return e.jsxs(s.Collapsible,{open:D,onOpenChange:()=>b(T.entityId),children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 rounded px-2 py-1.5 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:s.cn("h-3.5 w-3.5 transition-transform duration-200",D&&"rotate-90")}),e.jsx(s.Table2,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate text-left",children:T.label||T.entityName}),e.jsx("span",{className:"text-xs text-muted-foreground",children:v.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"ml-4 space-y-0.5 border-l border-border pl-2",children:v.map(M=>{const f=E(M.dataType),I=m(M);return e.jsxs("label",{className:s.cn("flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm transition-colors hover:bg-muted/50",I&&"bg-primary/5"),children:[e.jsx(s.Checkbox,{checked:I,onCheckedChange:j=>g(M,j),className:"h-3.5 w-3.5"}),e.jsx(f,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:M.label||M.name})]},M.id)})})})]},T.entityId)})})})]}):e.jsx("div",{className:"flex h-full items-start border-l border-border bg-muted/30 p-2",children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>c(!0),title:"Open panel",children:e.jsx(bn,{className:"h-4 w-4"})})})}const zo=[{name:"SUM",description:"Sum of values",syntax:"SUM([column])"},{name:"AVG",description:"Average of values",syntax:"AVG([column])"},{name:"COUNT",description:"Count of rows",syntax:"COUNT([column])"},{name:"COUNTD",description:"Count distinct values",syntax:"COUNTD([column])"},{name:"MIN",description:"Minimum value",syntax:"MIN([column])"},{name:"MAX",description:"Maximum value",syntax:"MAX([column])"},{name:"IF",description:"Conditional logic",syntax:"IF(condition, then, else)"},{name:"CASE",description:"Multiple conditions",syntax:"CASE WHEN ... THEN ... END"},{name:"CONCAT",description:"Concatenate text",syntax:"CONCAT([col1], [col2])"},{name:"ROUND",description:"Round number",syntax:"ROUND([column], decimals)"},{name:"FLOOR",description:"Round down",syntax:"FLOOR([column])"},{name:"CEIL",description:"Round up",syntax:"CEIL([column])"},{name:"ABS",description:"Absolute value",syntax:"ABS([column])"},{name:"DATEPART",description:"Extract date part",syntax:"DATEPART(year, [date])"},{name:"DATEDIFF",description:"Difference between dates",syntax:"DATEDIFF(day, [date1], [date2])"}];function qo({value:t,onChange:n,onSubmit:a,onCancel:r,selectedColumn:i,availableColumns:d}){const[o,c]=C.useState(!1),[l,x]=C.useState("column"),p=C.useRef(null);C.useEffect(()=>{const b=m=>{m.key==="Escape"&&t?r():m.key==="Enter"&&t&&!o&&a(t)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[t,r,a,o]);const h=b=>{const m=`[${b.label||b.name}]`,g=p.current;if(g){const w=g.selectionStart||0,E=g.selectionEnd||0,V=t.slice(0,w)+m+t.slice(E);n(V),setTimeout(()=>{g.setSelectionRange(w+m.length,w+m.length),g.focus()},0)}else n(t+m);c(!1)},u=b=>{const m=p.current;if(m){const g=m.selectionStart||0,w=m.selectionEnd||0,E=t.slice(0,g)+b.syntax+t.slice(w);n(E),setTimeout(()=>{m.setSelectionRange(g+b.name.length+1,g+b.syntax.length-1),m.focus()},0)}else n(t+b.syntax);c(!1)},y=b=>{switch(s.getDataType(b)){case"number":return s.Hash;case"date":return s.Calendar;default:return s.Type}};return e.jsxs("div",{className:"flex items-center gap-2 border-b border-border bg-muted/30 px-3 py-1.5",children:[e.jsx("div",{className:"flex min-w-[100px] items-center justify-center rounded border border-border bg-background px-2 py-1 text-xs font-medium text-muted-foreground",children:i?e.jsx("span",{className:"truncate",children:i.label||i.name}):e.jsx("span",{children:"—"})}),e.jsxs(s.Popover,{open:o&&l==="function",onOpenChange:b=>{c(b),b&&x("function")},children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",title:"Insert function",children:e.jsx(Sn,{className:"h-4 w-4"})})}),e.jsx(s.PopoverContent,{className:"w-[300px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search functions..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No functions found."}),e.jsx(s.CommandGroup,{heading:"Functions",children:zo.map(b=>e.jsx(s.CommandItem,{value:b.name,onSelect:()=>u(b),children:e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-sm font-medium",children:b.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:b.description})]}),e.jsx("span",{className:"font-mono text-xs text-muted-foreground/75",children:b.syntax})]})},b.name))})]})]})})]}),e.jsxs(s.Popover,{open:o&&l==="column",onOpenChange:b=>{c(b),b&&x("column")},children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1 px-2 text-xs text-muted-foreground hover:text-foreground",title:"Insert column reference",children:[e.jsx("span",{children:"Columns"}),e.jsx(s.ChevronDown,{className:"h-3 w-3"})]})}),e.jsx(s.PopoverContent,{className:"w-[250px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search columns..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No columns found."}),e.jsx(s.CommandGroup,{heading:"Available Columns",children:d.map(b=>{const m=y(b.dataType);return e.jsxs(s.CommandItem,{value:b.label||b.name,onSelect:()=>h(b),children:[e.jsx(m,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"truncate",children:b.label||b.name})]},b.id)})})]})]})})]}),e.jsx("div",{className:"relative flex-1",children:e.jsx(s.Input,{ref:p,value:t,onChange:b=>n(b.target.value),placeholder:"Enter a formula or select a column...",className:"h-7 border-border bg-background font-mono text-sm"})}),t&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-destructive hover:bg-destructive/10 hover:text-destructive",onClick:r,title:"Cancel (Esc)",children:e.jsx(s.X,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-green-600 hover:bg-green-600/10 hover:text-green-600",onClick:()=>a(t),title:"Apply (Enter)",children:e.jsx(s.Check,{className:"h-4 w-4"})})]})]})}function _o({className:t}){var u,y,b,m;const n=s.useEditorStore(g=>g.card),[a,r]=C.useState(null),[i,d]=C.useState(""),{columns:o=[],columnGroups:c=[],isLoading:l}=s.useColumns();(u=n==null?void 0:n.config)!=null&&u.groupByColumns,(y=n==null?void 0:n.config)!=null&&y.metricColumns,(b=n==null?void 0:n.config)!=null&&b.groupByColumns,(m=n==null?void 0:n.config)!=null&&m.pivotByColumns;const x=g=>{r(g),d(g?`[${g.label||g.name}]`:"")},p=g=>{console.log("Formula submitted:",g),d(""),r(null)},h=()=>{d(""),r(null)};return e.jsxs("div",{className:s.cn("flex h-full w-full flex-col",t),children:[e.jsx(qo,{value:i,onChange:d,onSubmit:p,onCancel:h,selectedColumn:a,availableColumns:o}),e.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsx(Po,{selectedColumn:a,onColumnSelect:x,isLoading:l,sourceFields:o})}),e.jsx(Bo,{entityGroups:c,isLoading:l})]})]})}function $o(){var L,S;const[t,n]=C.useState("chart"),[a,r]=C.useState(!1),[i,d]=C.useState(!0),o=s.useEditorStore(F=>F.showAIDialog),c=s.useDashboardStore(F=>F.isVisualEditing),{setCardType:l}=s.useEditorActions(),x=s.useEditorStore(F=>F.card.type);C.useEffect(()=>Oo(),[]);const p=F=>{l(F)},h=s.useEditorStore(F=>F.frame),u=s.useEditorStore(F=>F.card);s.useEditorStore(F=>F.activeTabCardId),s.useEditorStore(F=>F.actions.getAvailableFields);const{addCard:y,removeCard:b,updateCard:m,setActiveCard:g,updateFilters:w}=s.useEditorActions(),{columnFields:E=[],scopedFields:V=[]}=s.useScopedFields(),A=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),T=u,{getFieldsForContainer:v,setFieldsForContainer:D}=s.useFieldManagement(T),{activeField:M,handleDragStart:f,handleDragEnd:I}=wo({activeCardId:h.activeCardId,sourceFields:V,getFieldsForContainer:v,setFieldsForContainer:D}),j=(F,O)=>{O&&w(F,O)},k=F=>{var O;m(F,{config:{...(O=h.cards.find(_=>_.id===F))==null?void 0:O.config,filters:void 0}})},R=E,P=F=>{if(!F)return 0;let O=F.conditions.length;return F.groups.forEach(_=>{O+=P(_)}),O},N=P(((L=T==null?void 0:T.config)==null?void 0:L.filters)||null);return e.jsxs(s.DndContext,{sensors:A,collisionDetection:s.closestCenter,onDragStart:f,onDragEnd:I,children:[e.jsxs("div",{className:"flex h-full grow",children:[e.jsx(Ea,{isVisible:i,onToggleVisibility:()=>d(!i)}),e.jsx("div",{className:"flex flex-1 transition-all duration-300 ease-in-out",children:x==="tableBuilder"?e.jsx(_o,{className:"flex-1"}):e.jsxs(e.Fragment,{children:[!o&&e.jsx(lo,{selectedChart:x,onChartChange:p,groupByFields:v("groupBy"),pivotByFields:v("pivotBy"),metricsFields:v("metrics"),sortByFields:v("sortBy"),detailFields:v("detailColumns"),activeField:M}),e.jsx(Lo,{selectedChart:x,activeView:t,onViewChange:n,onFiltersClick:()=>r(!0),filterCount:N,activeCard:T,columns:E,getFieldsForContainer:v,cards:h.cards,activeCardId:h.activeCardId,addCard:y,setActiveCard:g})]})}),!i&&c&&e.jsx("div",{className:"fixed left-6 top-[105px] z-50",children:e.jsx(s.Button,{size:"sm",variant:"outline",className:"h-10 w-10 rounded-full border-border bg-background p-0 shadow-lg hover:bg-muted",onClick:()=>d(!0),title:"Show Data Source Panel",children:e.jsx(s.Database,{className:"h-4 w-4"})})})]}),T&&e.jsx(So,{cardId:T.id,filters:((S=T.config)==null?void 0:S.filters)||null,onFiltersChange:j,onClearFilters:k,availableFields:R,isOpen:a,onOpenChange:r}),e.jsx(s.DragOverlay,{dropAnimation:null,children:e.jsx(Mo,{activeField:M||null})})]})}function Go({authToken:t,onSave:n,onClose:a}){const r=C.useRef(null),i=s.useEditorStore(v=>v.showAIDialog),d=s.useEditorStore(v=>v.isDevMode),o=s.useAssistantLayoutStore(v=>v.setFullscreen),c=s.useAssistantLayoutStore(v=>v.setPanelOpen),l=s.useAssistantLayoutStore(v=>v.setContainer),x=s.useAssistantPanel("editor"),p=s.useFullscreenAssistant(),h=s.useAssistantContainer("editor"),u=p==="editor",y=C.useCallback(v=>{l("editor",v)},[l]),{setAuthToken:b}=s.useDashboardActions(),{setShowAIDialog:m,setOnSave:g,setOnClose:w}=s.useEditorActions(),{setActiveAssistantType:E}=s.useAIActions();C.useEffect(()=>{n&&g(n),a&&w(a)},[n,g,a,w]),C.useEffect(()=>{t&&t.accessToken&&b(t)},[t,b]),C.useEffect(()=>{var v,D;i?((v=r.current)==null||v.resize(40),c("editor",!0),E("editor")):((D=r.current)==null||D.resize(0),c("editor",!1),p==="editor"&&o(null),E(null))},[i,c,E,o,p]);function V(v){var D;v<1?(m(!1),c("editor",!1),p==="editor"&&o(null),E(null),(D=r.current)==null||D.resize(0)):(i||(m(!0),E("editor")),x.isOpen||c("editor",!0))}function A(){return e.jsxs(e.Fragment,{children:[e.jsx(Ea,{isVisible:!0,onToggleVisibility:()=>{}}),e.jsxs("div",{className:"relative flex grow",children:[e.jsxs(s.ResizablePanelGroup,{"data-content":"editor-main",className:s.cn("grow transition-opacity",u&&"pointer-events-none opacity-0"),direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] rounded-none",children:e.jsx(Bl,{})}),e.jsx(s.ResizableHandle,{disabled:!i}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:V,defaultSize:x.isOpen?40:0,className:"flex",children:e.jsx("div",{className:"grow overflow-y-auto",children:e.jsx(ja,{isFullscreen:u,onFullscreenChange:v=>o(v?"editor":null),fullscreenContainer:h})})})]}),e.jsx("div",{ref:y,className:s.cn("absolute inset-0",!u&&"pointer-events-none")})]})]})}function T(){return e.jsxs("div",{className:"relative flex h-full grow",children:[e.jsxs(s.ResizablePanelGroup,{"data-content":"explorer",className:s.cn("flex grow transition-opacity",u&&"pointer-events-none opacity-0"),direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] grow rounded-none",children:e.jsx($o,{})}),e.jsx(s.ResizableHandle,{disabled:!i}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:V,defaultSize:x.isOpen?40:0,className:"flex",children:e.jsx("div",{className:"grow overflow-y-auto",children:e.jsx(ja,{isFullscreen:u,onFullscreenChange:v=>o(v?"editor":null),fullscreenContainer:h})})})]}),e.jsx("div",{ref:y,className:s.cn("absolute inset-0",!u&&"pointer-events-none")})]})}return e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:d?e.jsx("section",{className:"isolate flex h-full grow","data-content":"editor-panel",children:A()}):T()})}function Ko(){s.useDashboardStore(l=>l.selectedCardId);const t=s.useDashboardStore(l=>l.selectedSheetId),n=s.useDashboardStore(l=>l.dashboard),{setIsVisualEditing:a,setSelectedSheetId:r}=s.useDashboardStore(l=>l.actions),i=s.useDashboardStore(l=>l.isVisualEditing),d=s.useDashboardStore(l=>l.actions.updateFrame);function o(l){var u,y,b;const x=t?(u=n==null?void 0:n.sheets)==null?void 0:u.some(m=>{var g;return m.id===t&&((g=m.frames)==null?void 0:g.some(w=>w.id===l.id))}):!1,p=(b=(y=n==null?void 0:n.sheets)==null?void 0:y.find(m=>{var g;return(g=m.frames)==null?void 0:g.some(w=>w.id===l.id)}))==null?void 0:b.id,h=x?t:p||null;h&&(d(h,l),t!==h&&r(h),a(!1))}function c(){a(!1)}return e.jsx("div",{role:"editor-container",className:s.cn("flex-1 grow basis-0 overflow-auto",{"max-h-0 overflow-hidden":!i}),children:e.jsx(Go,{onSave:o,onClose:c})})}exports.default=Ko;
188
+ Difference: Primary - Secondary`,example:"Sales grew by 25% ($5,000) compared to last year."},ratio:{label:"Ratio",description:"Shows how much of one value is covered by another — useful for quotas and benchmarks.",formula:"Primary / Secondary × 100%",example:"You've achieved 80% of your sales quota."}};function _r(){var u,y,b,m,g,w,E,V,A,T;const t=s.useEditorStore(v=>v.card),{setCardPreferences:n}=s.useEditorActions(),a=Ae.useEffectiveEditorCardType(),r=((u=t.config)==null?void 0:u.metricColumns)||[],i=((y=t.config)==null?void 0:y.groupByColumns)||[],d=r.length===2&&i.length===0,o=r.some(v=>v.comparisonType&&v.comparisonType!=="none");if(!(a==="kpi"&&(d||o)))return null;const l=((m=(b=t.preferences)==null?void 0:b.kpiVisualOptions)==null?void 0:m.metricComparison)||{},x=v=>{var M;const D={...t.preferences,kpiVisualOptions:{...(M=t.preferences)==null?void 0:M.kpiVisualOptions,metricComparison:{...l,...v}}};n(D)},p=o||l.enabled,h=r.some(v=>v.comparisonType==="previous_period"||v.comparisonType==="same_period_last_year"||v.comparisonType==="start_vs_end");return e.jsxs(s.AccordionItem,{value:"comparison",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ca,{className:"h-4 w-4"}),e.jsx("span",{children:"Comparison"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[d&&r.length===2&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"enable-comparison",className:"text-xs",children:"Enable Metric Comparison"}),e.jsx(s.SmallSwitch,{id:"enable-comparison",checked:l.enabled||!1,onCheckedChange:v=>x({enabled:v,...v&&!l.calculationType?{calculationType:"difference"}:{}})})]}),p&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Label,{htmlFor:"calculation-type",className:"text-xs font-medium uppercase text-muted-foreground",children:"Calculated as"}),e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Info,{className:"h-3 w-3 cursor-help text-muted-foreground"})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-xs",children:(()=>{const v=l.calculationType||"difference",D=xa[v];return e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsx("div",{className:"text-sm font-semibold",children:D==null?void 0:D.label}),e.jsx("p",{children:D==null?void 0:D.description}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium",children:"Formula:"})," ",e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 text-[10px]",children:D==null?void 0:D.formula})]}),e.jsxs("div",{className:"border-t pt-1.5 italic",children:[e.jsx("span",{className:"font-medium",children:"Example:"})," ",D==null?void 0:D.example]})]})})()})]})]}),e.jsxs(s.Select,{value:l.calculationType||"difference",onValueChange:v=>x({calculationType:v}),children:[e.jsx(s.SelectTrigger,{id:"calculation-type",className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Object.entries(xa).map(([v,D])=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:D.label},v))})]})]}),e.jsx(Vs,{formatOptions:l.formatOptions||{},onFormatOptionsChange:v=>x({formatOptions:v}),showTitle:!0,title:"COMPARISON FORMAT"}),(h||d)&&e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Indicator"}),d&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:l.position||"right",onValueChange:v=>x({position:v}),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"right",className:"text-xs",children:"Right"}),e.jsx(s.SelectItem,{value:"left",className:"text-xs",children:"Left"}),e.jsx(s.SelectItem,{value:"top",className:"text-xs",children:"Top"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-arrow",checked:l.showArrow!==!1,onCheckedChange:v=>x({showArrow:v})}),e.jsx(s.Label,{htmlFor:"show-arrow",className:"cursor-pointer text-xs text-muted-foreground",children:"Arrow"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-color",checked:l.showColor!==!1,onCheckedChange:v=>x({showColor:v})}),e.jsx(s.Label,{htmlFor:"show-color",className:"cursor-pointer text-xs text-muted-foreground",children:"Color"})]}),l.showColor!==!1&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-3",children:[e.jsx(es,{value:((g=l.colorConfig)==null?void 0:g.increase)||"green",onChange:v=>x({colorConfig:{...l.colorConfig,increase:v}}),label:"Primary > Secondary"}),e.jsx(es,{value:((w=l.colorConfig)==null?void 0:w.decrease)||"red",onChange:v=>x({colorConfig:{...l.colorConfig,decrease:v}}),label:"Primary < Secondary"}),e.jsx(es,{value:((E=l.colorConfig)==null?void 0:E.noChange)||"neutral",onChange:v=>x({colorConfig:{...l.colorConfig,noChange:v}}),label:"Primary = Secondary"})]})]}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Label"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"conditional-label",checked:l.conditionalLabel||!1,onCheckedChange:v=>x({conditionalLabel:v})}),e.jsx(s.Label,{htmlFor:"conditional-label",className:"cursor-pointer text-xs text-muted-foreground",children:"Conditional"})]}),l.conditionalLabel?e.jsxs("div",{className:"space-y-3 border-l-2 border-muted pl-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-increase",className:"text-xs text-muted-foreground",children:["Primary ",">"," Secondary"]}),e.jsx(s.Input,{id:"label-increase",type:"text",value:((V=l.conditionalLabels)==null?void 0:V.increase)??"Increase",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,increase:v.target.value}}),placeholder:"Increase",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-decrease",className:"text-xs text-muted-foreground",children:["Primary ","<"," Secondary"]}),e.jsx(s.Input,{id:"label-decrease",type:"text",value:((A=l.conditionalLabels)==null?void 0:A.decrease)??"Decrease",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,decrease:v.target.value}}),placeholder:"Decrease",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-no-change",className:"text-xs text-muted-foreground",children:"Primary = Secondary"}),e.jsx(s.Input,{id:"label-no-change",type:"text",value:((T=l.conditionalLabels)==null?void 0:T.noChange)??"No change",onChange:v=>x({conditionalLabels:{...l.conditionalLabels,noChange:v.target.value}}),placeholder:"No change",className:"h-7 text-xs"})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-name",className:"text-xs text-muted-foreground",children:"Previous Label"}),e.jsx(s.Input,{id:"label-name",type:"text",value:l.labelName??"",onChange:v=>x({labelName:v.target.value}),placeholder:"e.g. Previous, Last Period",className:"h-7 text-xs"})]})]})]})]})]})}function $r(){var d,o;const t=s.useEditorStore(c=>c.card),{setCardPreferences:n}=s.useEditorActions();if(Ae.useEffectiveEditorCardType()!=="kpi")return null;const r=((o=(d=t.preferences)==null?void 0:d.kpiVisualOptions)==null?void 0:o.formatOptions)||{},i=c=>{var x;const l={...t.preferences,kpiVisualOptions:{...(x=t.preferences)==null?void 0:x.kpiVisualOptions,formatOptions:c}};n(l)};return e.jsxs(s.AccordionItem,{value:"kpi-format",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Hash,{className:"h-4 w-4"}),e.jsx("span",{children:"Number Format"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:e.jsx(Vs,{formatOptions:r,onFormatOptionsChange:i,showTitle:!1})})]})}function Gr(){var d;const t=s.useEditorStore(o=>{var c;return(c=o.card)==null?void 0:c.type}),n=s.useEditorStore(o=>{var c;return(c=o.card)==null?void 0:c.preferences}),{setCardPreferences:a}=s.useEditorActions();if(t!=="treemap")return null;const r=((d=n==null?void 0:n.chartOptions)==null?void 0:d.treemapColorMode)??"branch",i=o=>{const c={...n||{},chartOptions:{...n==null?void 0:n.chartOptions,treemapColorMode:o}};a(c)};return e.jsxs(s.AccordionItem,{value:"treemap-color-mode",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.TbChartTreemap,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Treemap Colors"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:e.jsxs(s.RadioGroup,{value:r,onValueChange:o=>i(o??"branch"),className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:"treemap-color-branch",value:"branch"}),e.jsxs(s.Label,{htmlFor:"treemap-color-branch",className:"flex flex-col text-sm font-normal leading-tight",children:[e.jsx("span",{className:"font-medium",children:"Shade by value (default)"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Keeps parent hue and adjusts lightness based on the node's share within the branch."})]})]}),e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:"treemap-color-category",value:"category"}),e.jsxs(s.Label,{htmlFor:"treemap-color-category",className:"flex flex-col text-sm font-normal leading-tight",children:[e.jsx("span",{className:"font-medium",children:"Single color per category"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Applies the top-level color to all descendants without lightening/darkening."})]})]})]})})]})}const Kr=Object.keys(s.HEATMAP_PRESET_PALETTES);function Ur(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var y;return(y=u.card)==null?void 0:y.preferences}),{setCardPreferences:a}=s.useEditorActions(),r=(t==null?void 0:t.type)==="heatmap",i=(n==null?void 0:n.heatmapConfig)||{},d=i.colorPalette??"green",o=i.legendPosition??"bottom",c=C.useMemo(()=>i.colorRange&&i.colorRange[0]&&i.colorRange[1]?[i.colorRange[0],i.colorRange[1]]:[...s.DEFAULT_HEATMAP_CUSTOM_RANGE],[i.colorRange]),l=u=>{const y={...i,...u};y.colorPalette!=="custom"?delete y.colorRange:(!y.colorRange||!y.colorRange[0]||!y.colorRange[1])&&(y.colorRange=[...s.DEFAULT_HEATMAP_CUSTOM_RANGE]),a({...n||{},heatmapConfig:y})},x=u=>{l({colorPalette:u,colorRange:u==="custom"?i.colorRange??[...s.DEFAULT_HEATMAP_CUSTOM_RANGE]:void 0})},p=(u,y)=>{const b=[...c];b[u]=y,l({colorPalette:"custom",colorRange:b})},h=u=>{l({legendPosition:u})};return r?e.jsxs(s.AccordionItem,{value:"heatmap-color-config",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Grid3x3,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Heatmap Settings"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:[e.jsxs(s.RadioGroup,{value:d,onValueChange:u=>x(u??"blue"),className:"space-y-3",children:[Kr.map(u=>{const y=s.HEATMAP_PRESET_PALETTES[u];return e.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:`heatmap-${u}`,value:u}),e.jsxs(s.Label,{htmlFor:`heatmap-${u}`,className:"flex w-full flex-col gap-1 text-sm font-normal",children:[e.jsx("span",{className:"font-medium",children:y.label}),e.jsx("span",{className:"h-2 rounded-full",style:{background:`linear-gradient(90deg, ${y.start}, ${y.end})`}})]})]},u)}),e.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-border px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.RadioGroupItem,{id:"heatmap-custom",value:"custom"}),e.jsx(s.Label,{htmlFor:"heatmap-custom",className:"text-sm font-medium",children:"Custom colors"})]}),d==="custom"&&e.jsxs("div",{className:"flex flex-col gap-3 pl-6",children:[e.jsx(es,{value:c[0],onChange:u=>p(0,u),label:"Start color"}),e.jsx(es,{value:c[1],onChange:u=>p(1,u),label:"End color"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Color scale position"}),e.jsxs(s.Select,{value:o,onValueChange:u=>h(u??"bottom"),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:["top","bottom","left","right"].map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:u[0].toUpperCase()+u.slice(1)},u))})]})]})]})]}):null}const ha=["poor","satisfactory","good"];function pa(t){if(!t)return;const n={...t};return n.targetMetricKey||delete n.targetMetricKey,n.comparativeMetricKey||delete n.comparativeMetricKey,!n.targetValue&&n.targetValue!==0&&delete n.targetValue,(!n.rangeKeys||Object.keys(n.rangeKeys).length===0)&&delete n.rangeKeys,(!n.ranges||Object.keys(n.ranges).length===0)&&delete n.ranges,(!n.rangeLabels||Object.keys(n.rangeLabels).length===0)&&delete n.rangeLabels,n}function Hr(){var R,P;const t=s.useEditorStore(N=>N.card.preferences),n=s.useEditorStore(N=>N.card),a=s.useEditorStore(N=>N.isDevMode),{setCardPreferences:r,setChartOrientation:i}=s.useEditorActions(),d=C.useMemo(()=>(t==null?void 0:t.bulletConfig)||{},[t==null?void 0:t.bulletConfig]),c=s.hasValidCardConfig(n==null?void 0:n.config)&&!a,[l,x]=C.useState(d.showRanges??!1),[p,h]=C.useState(d.rangesArePercentages??!1),u=d.disableAutoComparative?!1:d.comparativeMetricKey!==void 0||!c,[y,b]=C.useState(u);C.useEffect(()=>{x(d.showRanges??!1)},[d.showRanges]),C.useEffect(()=>{h(d.rangesArePercentages??!1)},[d.rangesArePercentages]);const m=d.targetValue===void 0?"":String(d.targetValue);C.useEffect(()=>{const N=d.disableAutoComparative?!1:d.comparativeMetricKey!==void 0||!c;b(N)},[d.disableAutoComparative,d.comparativeMetricKey,c]);const g=C.useMemo(()=>{var N,L;return((L=(N=n==null?void 0:n.config)==null?void 0:N.metricColumns)==null?void 0:L.map(S=>{const F=S.label||S.name||S.alias||"";return{value:F,label:F}}))||[]},[(R=n==null?void 0:n.config)==null?void 0:R.metricColumns]);C.useEffect(()=>{var B,K;if(!t||g.length===0)return;const N={};let L=!1;const S=(B=g[1])==null?void 0:B.value;!d.targetMetricKey&&S&&(N.targetMetricKey=S,L=!0);const F=(K=g[2])==null?void 0:K.value;!d.comparativeMetricKey&&!d.disableAutoComparative&&F&&(N.comparativeMetricKey=F,L=!0);const O=g.slice(3),_={...d.rangeKeys||{}};let Q=!1;if(ha.forEach((se,H)=>{!_[se]&&O[H]&&(_[se]=O[H].value,Q=!0)}),Q&&(N.rangeKeys=_,L=!0,d.showRanges===void 0&&(N.showRanges=!0)),L){const se=pa({...d,...N});r({...t,bulletConfig:se})}},[g,d,t,r]);const w=N=>{const L=pa({...d,...N});r({...t,bulletConfig:L})},E=(N,L)=>{const S={...d.rangeKeys||{},[N]:L.trim()};L.trim()||delete S[N],w({rangeKeys:Object.keys(S).length>0?S:void 0})},V=(N,L)=>{const S=L===""?void 0:Number(L),F={...d.ranges||{}};S===void 0||Number.isNaN(S)?delete F[N]:F[N]=S,w({ranges:Object.keys(F).length?F:void 0})},A=N=>{if(N===""){w({targetValue:void 0});return}const L=Number(N);w({targetValue:Number.isNaN(L)?void 0:L})},T=(N,L)=>{const S=L.trim(),F={...d.rangeLabels||{}};S?F[N]=S:delete F[N],w({rangeLabels:Object.keys(F).length>0?F:void 0})},v=N=>{x(N),w({showRanges:N})},D=N=>{h(N),w({rangesArePercentages:N})},M=d.orientation||(((P=t==null?void 0:t.chartOptions)==null?void 0:P.indexAxis)==="y"?"horizontal":"vertical"),f=N=>{w({orientation:N}),i(N==="horizontal"?"y":"x")},I=[{value:"__none",label:"None"},...g.map(N=>({value:N.value,label:N.label}))],j=I,k=N=>{if(b(N),!N){w({comparativeMetricKey:void 0,disableAutoComparative:!0});return}if(!c){w({disableAutoComparative:!1});return}if(d.comparativeMetricKey)w({disableAutoComparative:!1});else{const L=g.find(S=>S.value!==d.targetMetricKey);w({comparativeMetricKey:L==null?void 0:L.value,disableAutoComparative:!1})}};return e.jsxs(s.AccordionItem,{value:"bullet-config",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.BulletChartIcon,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Bullet Chart"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-6 border-t border-border/50 py-4",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"ORIENTATION"}),e.jsxs(s.Select,{value:M,onValueChange:N=>f(N),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"horizontal",className:"text-xs",children:"Horizontal"}),e.jsx(s.SelectItem,{value:"vertical",className:"text-xs",children:"Vertical"})]})]})]}),c&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TARGET METRIC"}),e.jsxs(s.Select,{value:d.targetMetricKey||"__none",onValueChange:N=>w({targetMetricKey:N==="__none"?void 0:N}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select metric"})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"__none",className:"text-xs",children:"None"}),g.map(N=>e.jsx(s.SelectItem,{value:N.value,className:"text-xs",children:N.label},N.value))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"COMPARATIVE METRIC"}),c?e.jsxs(s.Select,{value:d.comparativeMetricKey||"__none",onValueChange:N=>w({comparativeMetricKey:N==="__none"?void 0:N,disableAutoComparative:N==="__none"}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select metric"})}),e.jsx(s.SelectContent,{children:I.map(N=>e.jsx(s.SelectItem,{value:N.value,className:"text-xs",children:N.label},N.value))})]}):e.jsxs("div",{className:"space-y-2 rounded-md border border-border/50 p-3 text-xs",children:[e.jsxs("div",{className:"flex items-center justify-between font-medium",children:[e.jsx("span",{children:"Show comparative"}),e.jsx(s.SmallSwitch,{checked:y,onCheckedChange:N=>k(N)})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Comparative values are auto-detected from the third metric in your results."})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TARGET VALUE (FALLBACK)"}),e.jsx(Pe,{type:"number",className:"h-8 text-xs",value:m,onCommit:A,placeholder:"Optional numeric fallback"})]})]}),e.jsxs("section",{className:"space-y-4 rounded-md border border-border/60 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"QUALITATIVE RANGES"}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:200,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("button",{type:"button",className:"text-muted-foreground transition-colors hover:text-foreground",children:e.jsx(s.Info,{className:"h-3.5 w-3.5"})})}),e.jsx(s.TooltipContent,{side:"top",children:"Use columns or static values for Poor / Average / Good."})]})})]}),e.jsx("div",{className:"flex items-center gap-2 text-xs font-medium",children:e.jsx(s.SmallSwitch,{checked:l,onCheckedChange:v})})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium",children:[e.jsx("input",{type:"checkbox",checked:p,disabled:!l,onChange:N=>D(N.target.checked),className:"h-3.5 w-3.5 accent-primary disabled:opacity-50"}),e.jsx("span",{children:"Use % of value"})]})]}),l&&e.jsx("div",{className:"space-y-3",children:ha.map(N=>{var L,S,F,O,_;return e.jsxs("div",{className:"space-y-2 rounded-md border border-border/60 bg-muted/40 p-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," LABEL"]}),e.jsx(Pe,{placeholder:`Display label (${N})`,value:((L=d.rangeLabels)==null?void 0:L[N])||"",onCommit:Q=>T(N,Q),className:"h-8 text-xs"})]}),c?e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," COLUMN"]}),e.jsxs(s.Select,{value:((S=d.rangeKeys)==null?void 0:S[N])||"__none",onValueChange:Q=>{Q==="__none"?E(N,""):E(N,Q)},children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select column"})}),e.jsx(s.SelectContent,{children:j.map(Q=>e.jsx(s.SelectItem,{value:Q.value,className:"text-xs",children:Q.label},Q.value))})]})]}):e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," COLUMN KEY"]}),e.jsx(Pe,{placeholder:"Column key",value:((F=d.rangeKeys)==null?void 0:F[N])||"",onCommit:Q=>E(N,Q),className:"h-8 text-xs"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(s.Label,{className:"text-[11px] font-medium uppercase tracking-wide",children:[N," VALUE"]}),e.jsx(Pe,{type:"number",placeholder:p?"0.80":"Static value",value:((O=d.ranges)==null?void 0:O[N])===void 0?"":String((_=d.ranges)==null?void 0:_[N]),onCommit:Q=>V(N,Q),className:"h-8 text-xs"})]})]},N)})})]})]})]})}function fa(t){if(!t)return;const n={...t};if(n.xMetricKey||delete n.xMetricKey,n.yMetricKey||delete n.yMetricKey,n.radiusMetricKey||delete n.radiusMetricKey,n.labelKey||delete n.labelKey,n.groupKey||delete n.groupKey,n.enableGrouping===void 0&&delete n.enableGrouping,n.radiusScale||delete n.radiusScale,n.fixedRadius===void 0&&delete n.fixedRadius,n.minRadius===void 0&&delete n.minRadius,n.maxRadius===void 0&&delete n.maxRadius,Object.keys(n).length!==0)return n}function Jr(){var T,v,D,M,f,I,j,k,R,P,N,L;const t=s.useEditorStore(S=>S.card.preferences),n=s.useEditorStore(S=>S.card),a=Ae.useEffectiveEditorCardType(),r=s.useEditorStore(S=>S.isDevMode),{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions(),o=a==="bubble",c=a==="scatter",l=C.useMemo(()=>(t==null?void 0:t.bubbleScatterConfig)||{},[t==null?void 0:t.bubbleScatterConfig]),p=s.hasValidCardConfig(n==null?void 0:n.config)&&!r,h=C.useMemo(()=>{var S,F;return((F=(S=n==null?void 0:n.config)==null?void 0:S.metricColumns)==null?void 0:F.map(O=>{const _=O.label||O.name||O.alias||"";return{value:_,label:_}}))||[]},[(T=n==null?void 0:n.config)==null?void 0:T.metricColumns]),u=C.useMemo(()=>{var S,F;return((F=(S=n==null?void 0:n.config)==null?void 0:S.groupByColumns)==null?void 0:F.map(O=>{const _=O.label||O.name||O.alias||"";return{value:_,label:_}}))||[]},[(v=n==null?void 0:n.config)==null?void 0:v.groupByColumns]),y=C.useMemo(()=>l.enableGrouping!==void 0?l.enableGrouping:!r&&u.length>=2,[l.enableGrouping,r,u.length]),[b,m]=C.useState(y);C.useEffect(()=>{m(y)},[y]);const g=S=>{const F={...t||{},bubbleScatterConfig:S};i(F),n&&d({...n,preferences:F})},w=S=>{i(S),n&&d({...n,preferences:S})};C.useEffect(()=>{if(!t||h.length===0)return;const S={};let F=!1;if(!l.xMetricKey&&h[0]&&(S.xMetricKey=h[0].value,F=!0),!l.yMetricKey&&h[1]&&(S.yMetricKey=h[1].value,F=!0),o&&!l.radiusMetricKey&&h[2]&&(S.radiusMetricKey=h[2].value,F=!0),!l.labelKey&&u[0]&&(S.labelKey=u[0].value,F=!0),y&&!l.groupKey&&u[1]&&(S.groupKey=u[1].value,S.enableGrouping=!0,F=!0),F){const O=fa({...l,...S});g(O)}},[h,u,l,t,i,o,y]);const E=S=>{const F=fa({...l,...S});g(F)},V=S=>{m(S),E({enableGrouping:S,groupKey:S?l.groupKey:void 0})};if(!o&&!c)return null;const A=o?s.Circle:s.ChartScatter;return e.jsxs(s.AccordionItem,{value:"bubble-scatter-config",children:[e.jsx(s.AccordionTrigger,{className:"py-2 text-sm",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4"}),e.jsxs("span",{children:[o?"Bubble":"Scatter"," Configuration"]})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 px-1 pb-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-1 text-xs font-medium text-muted-foreground",children:["Dimensions",e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{children:e.jsx(s.Info,{className:"h-3 w-3"})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-xs",children:e.jsx("p",{children:"Label identifies each point. Group creates separate series in the legend."})})]})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Label Column"}),p?e.jsxs(s.Select,{value:l.labelKey||"",onValueChange:S=>E({labelKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select label column"})}),e.jsx(s.SelectContent,{children:u.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for labels",value:l.labelKey||"",onCommit:S=>E({labelKey:S})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Group points into series"}),e.jsx(s.SmallSwitch,{checked:b,onCheckedChange:V})]}),b&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Group By"}),p?e.jsxs(s.Select,{value:l.groupKey||"",onValueChange:S=>E({groupKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select group column"})}),e.jsx(s.SelectContent,{children:u.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for grouping",value:l.groupKey||"",onCommit:S=>E({groupKey:S})})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Metrics"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"X Axis"}),p?e.jsxs(s.Select,{value:l.xMetricKey||"",onValueChange:S=>E({xMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select X metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for X axis",value:l.xMetricKey||"",onCommit:S=>E({xMetricKey:S})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Y Axis"}),p?e.jsxs(s.Select,{value:l.yMetricKey||"",onValueChange:S=>E({yMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select Y metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for Y axis",value:l.yMetricKey||"",onCommit:S=>E({yMetricKey:S})})]}),o&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Radius"}),p?e.jsxs(s.Select,{value:l.radiusMetricKey||"",onValueChange:S=>E({radiusMetricKey:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select radius metric"})}),e.jsx(s.SelectContent,{children:h.map(S=>e.jsx(s.SelectItem,{value:S.value,children:S.label},S.value))})]}):e.jsx(Pe,{className:"h-8 text-xs",placeholder:"Column name for radius",value:l.radiusMetricKey||"",onCommit:S=>E({radiusMetricKey:S})})]})]}),o&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Radius Settings"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Scale Mode"}),e.jsxs(s.Select,{value:l.radiusScale||"sqrt",onValueChange:S=>E({radiusScale:S}),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"sqrt",children:"Square Root (area-proportional)"}),e.jsx(s.SelectItem,{value:"linear",children:"Linear"}),e.jsx(s.SelectItem,{value:"fixed",children:"Fixed Size"})]})]})]}),l.radiusScale!=="fixed"&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Min Radius"}),e.jsx(Pe,{className:"h-8 text-xs",type:"number",placeholder:"5",value:((D=l.minRadius)==null?void 0:D.toString())||"",onCommit:S=>E({minRadius:S?Number(S):void 0})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Max Radius"}),e.jsx(Pe,{className:"h-8 text-xs",type:"number",placeholder:"30",value:((M=l.maxRadius)==null?void 0:M.toString())||"",onCommit:S=>E({maxRadius:S?Number(S):void 0})})]})]}),l.radiusScale==="fixed"&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs(s.Label,{className:"text-xs",children:["Fixed Radius: ",l.fixedRadius||10]}),e.jsx(s.Slider,{value:[l.fixedRadius||10],onValueChange:([S])=>E({fixedRadius:S}),min:3,max:30,step:1,className:"py-2"})]})]}),c&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:"Point Settings"}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs(s.Label,{className:"text-xs",children:["Point Size: ",l.fixedRadius||5]}),e.jsx(s.Slider,{value:[l.fixedRadius||5],onValueChange:([S])=>E({fixedRadius:S}),min:2,max:15,step:1,className:"py-2"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Axis Titles"}),e.jsx(s.SmallSwitch,{checked:((I=(f=t==null?void 0:t.xAxisConfig)==null?void 0:f.name)==null?void 0:I.enabled)??!1,onCheckedChange:S=>{var _,Q,B,K;const F=l.xMetricKey||"X Axis",O=l.yMetricKey||"Y Axis";w({...t??{},xAxisConfig:{...t==null?void 0:t.xAxisConfig,name:{enabled:S,text:((Q=(_=t==null?void 0:t.xAxisConfig)==null?void 0:_.name)==null?void 0:Q.text)||F}},yAxisConfig:{...t==null?void 0:t.yAxisConfig,name:{enabled:S,text:((K=(B=t==null?void 0:t.yAxisConfig)==null?void 0:B.name)==null?void 0:K.text)||O}}})}})]}),((k=(j=t==null?void 0:t.xAxisConfig)==null?void 0:j.name)==null?void 0:k.enabled)&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"X Title"}),e.jsx(Pe,{className:"h-8 text-xs",placeholder:l.xMetricKey||"X Axis",value:((P=(R=t==null?void 0:t.xAxisConfig)==null?void 0:R.name)==null?void 0:P.text)||"",onCommit:S=>{var F;w({...t??{},xAxisConfig:{...t==null?void 0:t.xAxisConfig,name:{...(F=t==null?void 0:t.xAxisConfig)==null?void 0:F.name,enabled:!0,text:S||l.xMetricKey||"X Axis"}}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs",children:"Y Title"}),e.jsx(Pe,{className:"h-8 text-xs",placeholder:l.yMetricKey||"Y Axis",value:((L=(N=t==null?void 0:t.yAxisConfig)==null?void 0:N.name)==null?void 0:L.text)||"",onCommit:S=>{var F;w({...t??{},yAxisConfig:{...t==null?void 0:t.yAxisConfig,name:{...(F=t==null?void 0:t.yAxisConfig)==null?void 0:F.name,enabled:!0,text:S||l.yMetricKey||"Y Axis"}}})}})]})]})]})]})]})}const Qr=[{value:"percentOfTotal",label:"% of Total",description:"Each stage shows percentage of the sum of all values"},{value:"percentOfFirst",label:"% of Stage 1",description:"First stage = 100%, others relative to first stage"}];function Yr(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var y;return(y=u.card)==null?void 0:y.preferences}),{setCardPreferences:a}=s.useEditorActions(),r=(t==null?void 0:t.type)==="funnel",i=(n==null?void 0:n.funnelConfig)||{},d=i.percentMode??"percentOfTotal",o=i.shrinkFraction??1,c=i.labelThreshold??0,l=u=>{const y={...i,...u};a({...n||{},funnelConfig:y})},x=u=>{l({percentMode:u})},p=u=>{l({shrinkFraction:u[0]})},h=u=>{l({labelThreshold:u[0]})};return r?e.jsxs(s.AccordionItem,{value:"funnel-config",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-3 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Filter,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Funnel Settings"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 border-t border-border bg-background/50 px-3 py-4 text-sm",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"PERCENTAGE MODE"}),e.jsx(s.RadioGroup,{value:d,onValueChange:u=>x(u),className:"space-y-2",children:Qr.map(u=>e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border px-3 py-2",children:[e.jsx(s.RadioGroupItem,{id:`funnel-${u.value}`,value:u.value,className:"mt-0.5"}),e.jsxs(s.Label,{htmlFor:`funnel-${u.value}`,className:"flex flex-col gap-0.5 text-sm font-normal",children:[e.jsx("span",{className:"font-medium",children:u.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:u.description})]})]},u.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"SEGMENT SHRINK"}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Same Width"}),e.jsx(s.Slider,{value:[o],onValueChange:p,min:0,max:1,step:.1,className:"flex-1"}),e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Full Shrink"})]}),e.jsxs("p",{className:"text-center text-xs text-muted-foreground",children:["Current: ",Math.round(o*100),"%"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"LABEL VISIBILITY THRESHOLD"}),e.jsxs("div",{className:"flex items-center gap-3 pt-1",children:[e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Show All"}),e.jsx(s.Slider,{value:[c],onValueChange:h,min:0,max:25,step:1,className:"flex-1"}),e.jsx("span",{className:"whitespace-nowrap text-xs text-muted-foreground",children:"Hide Small"})]}),e.jsx("p",{className:"text-center text-xs text-muted-foreground",children:c===0?"Showing all labels":`Hide labels below ${c}%`})]})]})]}):null}function Bs(){const t=s.useEditorStore(d=>d.card),{data:n}=s.useDashboardCardQuery(t),{keys:a}=s.getKeys((n==null?void 0:n.records)||[]),r=a.slice(1).filter(d=>!s.METADATA_KEYS.includes(d));let i=r;if(["stackedBar","stackedLine"].includes(t.type)){const d=s.pivotData({dataArray:(n==null?void 0:n.records)||[],groupKey:a[0],pivotKey:a[1],valueKey:a[2]}),{keys:o}=s.getKeys(d);i=o.slice(1)}return{transformedMetricKeys:i,dimensionKeys:a.slice(0,1),keys:a,defaultMetricKeys:r}}const Wr=[{value:"USD",label:"USD - US Dollar"},{value:"EUR",label:"EUR - Euro"},{value:"GBP",label:"GBP - British Pound"},{value:"JPY",label:"JPY - Japanese Yen"},{value:"CNY",label:"CNY - Chinese Yuan"},{value:"INR",label:"INR - Indian Rupee"},{value:"CAD",label:"CAD - Canadian Dollar"},{value:"AUD",label:"AUD - Australian Dollar"}],Xr=[{value:"en-US",label:"English (US)"},{value:"en-GB",label:"English (UK)"},{value:"de-DE",label:"German"},{value:"fr-FR",label:"French"},{value:"es-ES",label:"Spanish"},{value:"it-IT",label:"Italian"},{value:"pt-BR",label:"Portuguese (Brazil)"},{value:"zh-CN",label:"Chinese (Simplified)"}],Zr=["center","start","end"],el=["center","start","end","top","bottom"];function zs({config:t,onChange:n,isHorizontal:a=!1,showAutoFormat:r=!0,positionOptions:i,showAppearance:d=!0}){var b,m,g,w,E,V;const o=i??(a?["auto","center","left","right","custom"]:["auto","center","top","bottom","custom"]),c=r?["auto","number","currency","percent","none"]:["number","currency","percent","none"],l=(A,T)=>{const v={...t,[A]:T};n(v)},x=(A,T)=>{const v={...t,font:{...(t==null?void 0:t.font)||{},[A]:T}};n(v)},p=(A,T)=>{const v={...t,formatOptions:{...(t==null?void 0:t.formatOptions)||{},[A]:T}};n(v)},h=()=>a?"Right":"Top",u=t||{},y=u.format||(r?"auto":"number");return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:u.position||"auto",onValueChange:A=>l("position",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:o.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:A==="auto"?h():A==="custom"?"Custom (Advanced)":s.titleCase(A)},A))})]})]}),u.position==="custom"&&e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Anchor"}),e.jsxs(s.Select,{value:u.anchor||"center",onValueChange:A=>l("anchor",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Zr.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:s.titleCase(A)},A))})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Align"}),e.jsxs(s.Select,{value:String(u.align||"center"),onValueChange:A=>l("align",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:el.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:s.titleCase(A)},A))})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Format"}),e.jsxs(s.Select,{value:y,onValueChange:A=>l("format",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:c.map(A=>e.jsx(s.SelectItem,{value:A,className:"text-xs",children:A==="auto"&&r?"Auto (Use Axis)":A==="none"?"None (Raw Value)":s.titleCase(A)},A))})]})]}),!["auto","none"].includes(y)&&e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[["number","currency","percent"].includes(y)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Decimals"}),e.jsx("div",{className:"w-16",children:e.jsx(qe,{type:"number",placeholder:"0",value:String(((b=u.formatOptions)==null?void 0:b.decimalPlaces)??(y==="currency"?2:y==="percent"?1:0)),onSave:A=>p("decimalPlaces",Number(A)),className:""})})]}),y==="currency"&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Currency"}),e.jsxs(s.Select,{value:((m=u.formatOptions)==null?void 0:m.currency)||"USD",onValueChange:A=>p("currency",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Wr.map(A=>e.jsx(s.SelectItem,{value:A.value,className:"text-xs",children:A.label},A.value))})]})]}),["number","currency"].includes(y)&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Abbreviate (K, M, B)"}),e.jsx(s.SmallSwitch,{checked:((g=u.formatOptions)==null?void 0:g.useSuffix)??!1,onCheckedChange:A=>p("useSuffix",A)})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Locale"}),e.jsxs(s.Select,{value:((w=u.formatOptions)==null?void 0:w.locale)||"en-US",onValueChange:A=>p("locale",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Xr.map(A=>e.jsx(s.SelectItem,{value:A.value,className:"text-xs",children:A.label},A.value))})]})]})]}),d&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Appearance"}),e.jsxs("div",{className:"space-y-2 rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Size"}),e.jsx("div",{className:"w-16",children:e.jsx(qe,{type:"number",placeholder:"12",value:String(((E=u.font)==null?void 0:E.size)||12),onSave:A=>x("size",Number(A)),className:""})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Weight"}),e.jsxs(s.Select,{value:((V=u.font)==null?void 0:V.weight)||"normal",onValueChange:A=>x("weight",A),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-24 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"normal",className:"text-xs",children:"Normal"}),e.jsx(s.SelectItem,{value:"bold",className:"text-xs",children:"Bold"})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Color"}),e.jsxs(s.Select,{value:u.color==="auto"||!u.color?"auto":"custom",onValueChange:A=>{A==="auto"&&l("color","auto")},children:[e.jsx(s.SelectTrigger,{className:"h-7 w-28 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"auto",className:"text-xs",children:"Auto (Contrast)"}),e.jsx(s.SelectItem,{value:"custom",disabled:!0,className:"text-xs",children:"Custom"})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs",children:"Rotation"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{className:"w-12",children:e.jsx(qe,{type:"number",placeholder:"0",value:String(u.rotation||0),onSave:A=>l("rotation",Number(A)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"°"})]})]})]})]})]})}const sl=[{type:"bar",icon:s.ChartColumnIncreasing,label:"Bar"},{type:"line",icon:s.ChartLine,label:"Line"}],tl=[0,1,2,3,4,5,6,8,10],al=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],nl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function rl(){return s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type})!=="combo"?null:e.jsxs(s.AccordionItem,{value:"combo-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(ll,{})})]})}function ll(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(ol,{metricKey:n,idx:a},n))})}function ol({metricKey:t,idx:n}){var w;const[a,r]=C.useState(!1),i=s.useEditorStore(E=>{var V;return(V=E.card)==null?void 0:V.preferences}),d=s.useEditorStore(E=>{var V,A;return(A=(V=E.card)==null?void 0:V.preferences)==null?void 0:A.datasetOptions}),o=d==null?void 0:d.find(E=>E.idx===n),{setCardPreferences:c}=s.useEditorStore(E=>E.actions),l=(o==null?void 0:o.type)||"bar",x=(o==null?void 0:o.yAxisId)||"y",p=((w=o==null?void 0:o.dataLabels)==null?void 0:w.enabled)??!1,h=l==="line"?s.ChartLine:s.ChartColumnIncreasing;function u(E){const V={idx:n,type:l,yAxisId:x,dataLabels:o==null?void 0:o.dataLabels,...E};if(!o)c({...i||{},datasetOptions:[...d||[],V]});else{const A=d==null?void 0:d.map(T=>T.idx===n?{...T,...V}:T);c({...i||{},datasetOptions:A})}}function y(E){u({type:E})}function b(E){u({yAxisId:E})}function m(E){u({dataLabels:{...o==null?void 0:o.dataLabels,enabled:E}})}function g(E){u({dataLabels:E})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(h,{className:"h-3 w-3"}),l==="line"?"Line":"Bar"]}),e.jsx("span",{className:s.cn("rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:x==="y2"?"Y2":"Y1"})]})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"flex items-end gap-4",children:[e.jsxs("div",{className:"flex-1 space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Chart Type"}),e.jsx("div",{className:"flex gap-2",children:sl.map(({type:E,icon:V,label:A})=>{const T=l===E;return e.jsxs("button",{onClick:()=>y(E),className:s.cn("flex items-center gap-2 rounded-md border px-3 py-1.5 text-xs transition-colors",T?"border-primary bg-primary/10 text-primary":"border-border bg-background text-muted-foreground hover:bg-muted"),children:[e.jsx(V,{className:"h-4 w-4"}),e.jsx("span",{children:A})]},E)})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Axis"}),e.jsxs(s.Select,{value:x,onValueChange:E=>b(E),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"y",className:"text-xs",children:"Y1 (Left)"}),e.jsx(s.SelectItem,{value:"y2",className:"text-xs",children:"Y2 (Right)"})]})]})]})]}),l==="line"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:(o==null?void 0:o.lineStyle)||"solid",onValueChange:E=>u({lineStyle:E}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:nl.map(({value:E,label:V})=>e.jsx(s.SelectItem,{value:E,className:"text-xs",children:V},E))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String((o==null?void 0:o.pointRadius)??3),onValueChange:E=>u({pointRadius:Number(E)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:tl.map(E=>e.jsx(s.SelectItem,{value:String(E),className:"text-xs",children:E===0?"None":E},E))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:(o==null?void 0:o.pointStyle)||"circle",onValueChange:E=>u({pointStyle:E}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:al.map(({value:E,label:V})=>e.jsx(s.SelectItem,{value:E,className:"text-xs",children:V},E))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:p,onCheckedChange:m})]}),p&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:g,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const et=[{value:"origin",label:"Origin (X-axis)",description:"Fill to the X-axis (y=0)"},{value:"start",label:"Start (Top)",description:"Fill to the top of chart area"},{value:"end",label:"End (Bottom)",description:"Fill to the bottom of chart area"},{value:"-1",label:"Previous Series",description:"Fill to the series below"},{value:"+1",label:"Next Series",description:"Fill to the series above"},{value:"false",label:"No Fill (Line)",description:"Show as line without fill"}],il=[0,1,2,3,4,5,6,8,10],cl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],dl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function ul(t){return t==null?"origin":t===!1?"false":t}function ml(){const t=s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type});return t!=="area"&&t!=="stackedArea"?null:e.jsxs(s.AccordionItem,{value:"area-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(xl,{})})]})}function xl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(hl,{metricKey:n,idx:a},n))})}function hl({metricKey:t,idx:n}){var m;const[a,r]=C.useState(!1),i=s.useEditorStore(g=>{var w;return(w=g.card)==null?void 0:w.preferences}),d=s.useEditorStore(g=>{var w,E;return(E=(w=g.card)==null?void 0:w.preferences)==null?void 0:E.datasetOptions}),o=d==null?void 0:d.find(g=>g.idx===n),{setCardPreferences:c}=s.useEditorStore(g=>g.actions),l=ul(o==null?void 0:o.fill),x=((m=o==null?void 0:o.dataLabels)==null?void 0:m.enabled)??!1,p=et.find(g=>g.value===l)||et[0];function h(g){const w={idx:n,fill:l,dataLabels:o==null?void 0:o.dataLabels,...g};if(!o)c({...i||{},datasetOptions:[...d||[],w]});else{const E=d==null?void 0:d.map(V=>V.idx===n?{...V,...w}:V);c({...i||{},datasetOptions:E})}}function u(g){h({fill:g==="false"?!1:g})}function y(g){h({dataLabels:{...o==null?void 0:o.dataLabels,enabled:g}})}function b(g){h({dataLabels:g})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.ChartArea,{className:"h-3 w-3"}),p.label.split(" ")[0]]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Fill Target"}),e.jsxs(s.Select,{value:l,onValueChange:g=>u(g),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:et.map(g=>e.jsx(s.SelectItem,{value:g.value,className:"text-xs",children:e.jsx("div",{className:"flex flex-col",children:e.jsx("span",{children:g.label})})},g.value))})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:(o==null?void 0:o.lineStyle)||"solid",onValueChange:g=>h({lineStyle:g}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:dl.map(({value:g,label:w})=>e.jsx(s.SelectItem,{value:g,className:"text-xs",children:w},g))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String((o==null?void 0:o.pointRadius)??3),onValueChange:g=>h({pointRadius:Number(g)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:il.map(g=>e.jsx(s.SelectItem,{value:String(g),className:"text-xs",children:g===0?"None":g},g))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:(o==null?void 0:o.pointStyle)||"circle",onValueChange:g=>h({pointStyle:g}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:cl.map(({value:g,label:w})=>e.jsx(s.SelectItem,{value:g,className:"text-xs",children:w},g))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:x,onCheckedChange:y})]}),x&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:b,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const pl=[0,1,2,3,4,5,6,8,10],fl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],st=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function gl(){return s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type})!=="line"?null:e.jsxs(s.AccordionItem,{value:"line-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(jl,{})})]})}function jl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(bl,{metricKey:n,idx:a},n))})}function bl({metricKey:t,idx:n}){var g;const[a,r]=C.useState(!1),i=s.useEditorStore(w=>{var E;return(E=w.card)==null?void 0:E.preferences}),d=s.useEditorStore(w=>{var E,V;return(V=(E=w.card)==null?void 0:E.preferences)==null?void 0:V.datasetOptions}),o=d==null?void 0:d.find(w=>w.idx===n),{setCardPreferences:c}=s.useEditorStore(w=>w.actions),l=(o==null?void 0:o.lineStyle)||"solid",x=(o==null?void 0:o.pointRadius)??3,p=(o==null?void 0:o.pointStyle)||"circle",h=((g=o==null?void 0:o.dataLabels)==null?void 0:g.enabled)??!1,u=st.find(w=>w.value===l)||st[0];function y(w){const E={idx:n,lineStyle:l,pointRadius:x,pointStyle:p,dataLabels:o==null?void 0:o.dataLabels,...w};if(!o)c({...i||{},datasetOptions:[...d||[],E]});else{const V=d==null?void 0:d.map(A=>A.idx===n?{...A,...E}:A);c({...i||{},datasetOptions:V})}}function b(w){y({dataLabels:{...o==null?void 0:o.dataLabels,enabled:w}})}function m(w){y({dataLabels:w})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.TrendingUp,{className:"h-3 w-3"}),u.label.split(" ")[0]]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Style"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Pattern"}),e.jsxs(s.Select,{value:l,onValueChange:w=>y({lineStyle:w}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:st.map(({value:w,label:E})=>e.jsx(s.SelectItem,{value:w,className:"text-xs",children:E},w))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Size"}),e.jsxs(s.Select,{value:String(x),onValueChange:w=>y({pointRadius:Number(w)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:pl.map(w=>e.jsx(s.SelectItem,{value:String(w),className:"text-xs",children:w===0?"None":w},w))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Point Shape"}),e.jsxs(s.Select,{value:p,onValueChange:w=>y({pointStyle:w}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:fl.map(({value:w,label:E})=>e.jsx(s.SelectItem,{value:w,className:"text-xs",children:E},w))})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:h,onCheckedChange:b})]}),h&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:o==null?void 0:o.dataLabels,onChange:m,isHorizontal:!1,showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const vl=[0,2,4,6,8,10,12,16,20];function yl(){const t=s.useEditorStore(n=>{var a;return(a=n.card)==null?void 0:a.type});return!t||!["bar","horizontalBar","stackedBar"].includes(t)?null:e.jsxs(s.AccordionItem,{value:"bar-series",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Layers,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Series"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsx(Nl,{})})]})}function Nl(){const{transformedMetricKeys:t}=Bs();return t.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"Add metrics to configure series"}):e.jsx("div",{className:"space-y-3",children:t.map((n,a)=>e.jsx(Cl,{metricKey:n,idx:a},n))})}function Cl({metricKey:t,idx:n}){var b;const[a,r]=C.useState(!1),i=s.useEditorStore(m=>{var g;return(g=m.card)==null?void 0:g.type}),d=s.useEditorStore(m=>{var g;return(g=m.card)==null?void 0:g.preferences}),o=s.useEditorStore(m=>{var g,w;return(w=(g=m.card)==null?void 0:g.preferences)==null?void 0:w.datasetOptions}),c=o==null?void 0:o.find(m=>m.idx===n),{setCardPreferences:l}=s.useEditorStore(m=>m.actions),x=(c==null?void 0:c.borderRadius)??0,p=((b=c==null?void 0:c.dataLabels)==null?void 0:b.enabled)??!1;function h(m){const g={idx:n,borderRadius:x,dataLabels:c==null?void 0:c.dataLabels,...m};if(!c)l({...d||{},datasetOptions:[...o||[],g]});else{const w=o==null?void 0:o.map(E=>E.idx===n?{...E,...g}:E);l({...d||{},datasetOptions:w})}}function u(m){h({dataLabels:{...c==null?void 0:c.dataLabels,enabled:m}})}function y(m){h({dataLabels:m})}return e.jsx(s.Collapsible,{open:a,onOpenChange:r,children:e.jsxs("div",{className:"rounded-lg border border-border bg-muted/30",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{className:"flex w-full items-center justify-between gap-3 overflow-hidden px-3 py-2 text-left hover:bg-muted/50",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[e.jsx(s.ChevronRight,{className:s.cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform",a&&"rotate-90")}),e.jsx("span",{className:"max-w-[100px] truncate text-xs font-medium",title:t,children:t})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:x>0&&e.jsxs("span",{className:s.cn("flex items-center gap-1 rounded px-1.5 py-0.5 text-xs","border border-border bg-background text-muted-foreground"),children:[e.jsx(s.ChartColumn,{className:"h-3 w-3"}),"r:",x]})})]})}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"border-t border-border",children:e.jsxs("div",{className:"space-y-4 p-3",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Bar Style"}),e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Corner Radius"}),e.jsxs(s.Select,{value:String(x),onValueChange:m=>h({borderRadius:Number(m)}),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:vl.map(m=>e.jsx(s.SelectItem,{value:String(m),className:"text-xs",children:m===0?"None":`${m}px`},m))})]})]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Data Labels"}),e.jsx(s.SmallSwitch,{checked:p,onCheckedChange:u})]}),p&&e.jsx("div",{className:"rounded-md border border-border bg-background p-2",children:e.jsx(zs,{config:c==null?void 0:c.dataLabels,onChange:y,isHorizontal:i==="horizontalBar",showAutoFormat:!0,showAppearance:!0})})]})]})})})]})})}const Sl=[0,1,2,3,4,5,6,8,10],wl=[{value:"circle",label:"Circle ●"},{value:"rect",label:"Square ■"},{value:"rectRounded",label:"Rounded ▢"},{value:"rectRot",label:"Diamond ◆"},{value:"triangle",label:"Triangle ▲"},{value:"cross",label:"Cross +"},{value:"crossRot",label:"X ×"},{value:"star",label:"Star ★"},{value:"dash",label:"Dash —"},{value:"line",label:"Line │"}],Tl=[{value:"solid",label:"Solid ───"},{value:"dashed",label:"Dashed - - -"},{value:"dotted",label:"Dotted ···"},{value:"dash-dot",label:"Dash-Dot -·-·"}];function El(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var l;return(l=c.card)==null?void 0:l.preferences}),a=Ae.useEffectiveEditorCardType(),r=n==null?void 0:n.lineStyleConfig,{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions();if(!t||!["line","area","stackedArea"].includes(a))return null;const o=(c,l)=>{const x={...n||{},lineStyleConfig:{...r,[c]:l}};i(x),d({...t,preferences:x})};return e.jsxs(s.AccordionItem,{value:"line-style",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Cn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Line Style"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Default styles for all series. Override per-series in the Series section."}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Line Pattern"}),e.jsxs(s.Select,{value:(r==null?void 0:r.lineStyle)||"solid",onValueChange:c=>o("lineStyle",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Tl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Point Size"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.pointRadius)??3),onValueChange:c=>o("pointRadius",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Sl.map(c=>e.jsx(s.SelectItem,{value:String(c),className:"text-xs",children:c===0?"None":c},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Point Shape"}),e.jsxs(s.Select,{value:(r==null?void 0:r.pointStyle)||"circle",onValueChange:c=>o("pointStyle",c),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:wl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]})]})})]})}const Il=[0,2,4,6,8,10,12,16,20],kl=[{value:"0.5",label:"50%"},{value:"0.6",label:"60%"},{value:"0.7",label:"70%"},{value:"0.8",label:"80%"},{value:"0.9",label:"90%"},{value:"1",label:"100%"}],Dl=[{value:"0.5",label:"50%"},{value:"0.6",label:"60%"},{value:"0.7",label:"70%"},{value:"0.8",label:"80%"},{value:"0.9",label:"90%"},{value:"1",label:"100%"}];function Al(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var l;return(l=c.card)==null?void 0:l.preferences}),a=Ae.useEffectiveEditorCardType(),r=n==null?void 0:n.barStyleConfig,{setCardPreferences:i,updateCardInFrame:d}=s.useEditorActions();if(!t||!["bar","horizontalBar","stackedBar"].includes(a))return null;const o=(c,l)=>{const x={...n||{},barStyleConfig:{...r,[c]:l}};i(x),d({...t,preferences:x})};return e.jsxs(s.AccordionItem,{value:"bar-style",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.ChartColumn,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Bar Style"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Default styles for all bars. Override per-series in the Series section."}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Corner Radius"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.borderRadius)??0),onValueChange:c=>o("borderRadius",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Il.map(c=>e.jsx(s.SelectItem,{value:String(c),className:"text-xs",children:c===0?"None":`${c}px`},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Bar Width"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.barPercentage)??.9),onValueChange:c=>o("barPercentage",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:kl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Category Width"}),e.jsxs(s.Select,{value:String((r==null?void 0:r.categoryPercentage)??.8),onValueChange:c=>o("categoryPercentage",Number(c)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Dl.map(({value:c,label:l})=>e.jsx(s.SelectItem,{value:c,className:"text-xs",children:l},c))})]})]})]})})]})}function Ll(){const t=s.useEditorStore(a=>{var r,i;return(i=(r=a==null?void 0:a.card)==null?void 0:r.preferences)==null?void 0:i.sortChart}),{setSortChart:n}=s.useEditorActions();return e.jsxs(s.AccordionItem,{value:"stacked-sort",children:[e.jsx(s.AccordionTrigger,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.ArrowUpDown,{className:"h-4 w-4"}),"Sort"]})}),e.jsx(s.AccordionContent,{className:"space-y-4 px-1",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort Order"}),e.jsx(Ze,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"Ascending",value:"asc"},{label:"Descending",value:"desc"}],value:t||"none",onValueChange:a=>{n(a)}})]})})]})}const Ml=["kpi"],ga={none:"None",previous_period:"Previous Period",same_period_last_year:"Same Period Last Year",start_vs_end:"Start vs End",target:"Target"},tt=2;function ns(t){return typeof t=="string"?t.trim().toLowerCase():((t==null?void 0:t.id)||(t==null?void 0:t.qualifiedFieldName)||(t==null?void 0:t.name)||(t==null?void 0:t.label)||"").trim().toLowerCase()}function Ol(t){if(!(t!=null&&t.name)||!(t!=null&&t.dataType)||t.role==="metric")return!1;const n=s.getDataType(t.dataType);return["date","string","boolean"].includes(n)}function Rl(t){return{...t,role:"groupby"}}function Fl(){var E,V,A,T;const t=s.useEditorStore(v=>v.card),n=s.useEditorStore(v=>v.actions.updateCardConfig),a=Ae.useEffectiveEditorCardType(),{scopedFields:r}=s.useScopedFields(),i=((E=t.config)==null?void 0:E.metricColumns)||[],d=((V=t.config)==null?void 0:V.summary)||{},o=d.breakdownDimensions||[],c=Ml.includes(a),l=i.length>0,x=d.enabled===!0,p=c&&l,h=((A=t.config)==null?void 0:A.comparisonType)||((T=i.find(v=>v.comparisonType&&v.comparisonType!=="none"))==null?void 0:T.comparisonType)||"none",u=ga[h]||ga.none,y=Array.from(new Map(r.filter(Ol).map(v=>[ns(v),Rl(v)])).values()),b=new Set(y.map(v=>ns(v))),m=new Set(o.map(v=>ns(v)).filter(v=>v&&b.has(v)));if(!c)return null;const g=v=>{n(t.id,{summary:{...d,...v}})},w=(v,D)=>{const M=ns(v),f=y.filter(j=>m.has(ns(j))),I=D?m.has(M)?f:[...f,v].slice(0,tt):f.filter(j=>ns(j)!==M);g({breakdownDimensions:I})};return e.jsxs(s.AccordionItem,{value:"summary",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.FileText,{className:"h-4 w-4"}),e.jsx("span",{children:"Summary"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{htmlFor:"summary-enabled",className:"text-xs",children:"Enable Summary"}),!l&&e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Add at least one metric to enable summary."})]}),e.jsx(s.SmallSwitch,{id:"summary-enabled",checked:x,disabled:!p,onCheckedChange:v=>{if(!v){g({enabled:!1,showOnCard:!1,includeInDashboardSummary:!1});return}g({enabled:!0,showOnCard:d.showOnCard??!0,includeInDashboardSummary:d.includeInDashboardSummary??!0,anomalyEnabled:d.anomalyEnabled??!0})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Comparison"}),e.jsxs("p",{className:"rounded-md border border-border bg-muted/40 px-2 py-1.5 text-xs",children:["Using: ",u]}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Comparison is configured from card/metric comparison settings."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-show-on-card",className:"text-xs",children:"Show summary on card"}),e.jsx(s.SmallSwitch,{id:"summary-show-on-card",checked:d.showOnCard===!0,disabled:!x,onCheckedChange:v=>g({showOnCard:v})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-include-rollup",className:"text-xs",children:"Include in dashboard summary"}),e.jsx(s.SmallSwitch,{id:"summary-include-rollup",checked:d.includeInDashboardSummary===!0,disabled:!x,onCheckedChange:v=>g({includeInDashboardSummary:v})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Breakdown Dimensions"}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:[o.length,"/",tt]})]}),y.length===0?e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"No dimension fields available for breakdown."}):e.jsx("div",{className:"max-h-40 space-y-2 overflow-y-auto rounded-md border border-border p-2",children:y.map(v=>{const D=ns(v),M=m.has(D),f=m.size>=tt,I=!x||!M&&f;return e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx(s.Checkbox,{id:`summary-breakdown-${D}`,checked:M,disabled:I,onCheckedChange:j=>w(v,j===!0)}),e.jsx(s.Label,{htmlFor:`summary-breakdown-${D}`,className:"cursor-pointer text-xs",children:v.label||v.name})]},D)})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"summary-anomaly",className:"text-xs",children:"Detect anomalies"}),e.jsx(s.SmallSwitch,{id:"summary-anomaly",checked:d.anomalyEnabled!==!1,disabled:!x,onCheckedChange:v=>g({anomalyEnabled:v})})]})]})]})}function Pa({mode:t}){const n=s.useEditorStore(a=>{var r;return(r=a.card)==null?void 0:r.type});return e.jsxs(e.Fragment,{children:[n==="combo"&&e.jsx(rl,{}),(n==="area"||n==="stackedArea")&&e.jsx(ml,{}),n==="line"&&e.jsx(gl,{}),(n==="bar"||n==="horizontalBar"||n==="stackedBar")&&e.jsx(yl,{}),e.jsx(El,{}),e.jsx(Al,{}),e.jsx(Gr,{}),t==="config"&&e.jsx($r,{}),t==="config"&&e.jsx(_r,{}),t==="config"&&e.jsx(Fl,{}),e.jsx(Ur,{}),n==="bullet"&&e.jsx(Hr,{}),n==="funnel"&&e.jsx(Yr,{}),(n==="bubble"||n==="scatter")&&e.jsx(Jr,{}),(n==="stackedBar"||n==="stackedLine")&&e.jsx(Ll,{}),e.jsx(Vr,{}),e.jsx(Br,{}),e.jsx(zr,{}),e.jsx(qr,{})]})}function Pl(){const t=s.useEditorStore(a=>a.card),n=t==null?void 0:t.type;return n?e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx(Ps,{chartType:n}),e.jsx(s.Accordion,{type:"single",collapsible:!0,className:"w-full px-2",children:e.jsx(Pa,{mode:"dev"})})]}):null}function Vl(){const t=s.useEditorStore(a=>a.card.type);function n(){switch(t){case"kpi":return e.jsx(jr,{});case"table":return e.jsx(Or,{});case"map":return e.jsx(Nr,{});case"custom":return e.jsx("div",{className:"px-6 py-2",children:e.jsx(Ma,{})});case"text":return e.jsx(Fr,{});default:return e.jsx(Pl,{})}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[n(),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function Bl(){const t=C.useRef(null),n=C.useRef(null),a=s.useEditorStore(h=>h.isShowingVisual),r=s.useEditorStore(h=>h.isDevMode),i=s.useEditorStore(h=>h.showAIDialog),[d,o]=C.useState(!1),c=a&&!i,l=c&&(!r||d),x=r&&c,p=()=>o(h=>!h);return C.useEffect(()=>{var h,u,y,b;i?((h=t.current)==null||h.resize(0),(u=n.current)==null||u.resize(0)):((y=t.current)==null||y.resize(25),(b=n.current)==null||b.resize(25))},[i]),e.jsxs(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(Hn,{})}),e.jsx(s.ResizableHandle,{withHandle:!0,className:"data-[panel-group-direction=vertical]:ml-2 data-[panel-group-direction=vertical]:mr-6 data-[panel-group-direction=vertical]:w-auto"}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:l?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:t,className:"flex",defaultSize:25,maxSize:30,children:e.jsx(Vl,{})})}),!i&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(ia,{visualAsideControl:x?{show:!0,isOpen:d,onToggle:p}:void 0})})]}):e.jsx(ia,{visualAsideControl:x?{show:!0,isOpen:d,onToggle:p}:void 0})})]})}function zl(t){var Ne;s.useAIInteractionStore(q=>q.currentAIContext);const[n,a]=C.useState(""),[r,i]=C.useState(null),{authToken:d,tokenProps:o}=s.useSemaphorContext(),c=s.useEditorStore(q=>{var Z;return(Z=q==null?void 0:q.card)==null?void 0:Z.sql}),l=s.useEditorStore(q=>q.isDevMode),x=s.useEditorStore(q=>{var Z;return(Z=q==null?void 0:q.card)==null?void 0:Z.python}),{setCardPython:p,setCardSql:h,setRunSql:u,switchCardType:y,setQueryConfig:b}=s.useEditorActions(),m=s.useEditorStore(q=>q.currentAssitantScope)||[],g=s.useEditorStore(q=>q.userInputForAI),w=s.useEditorStore(q=>q.triggerAIRun),E=s.useEditorStore(q=>q.card),V=s.useEditorStore(q=>q.selectedDatabaseName),A=s.useEditorStore(q=>q.selectedTableName),T=s.useEditorStore(q=>q.selectedConnectionId),v=s.useEditorStore(q=>q.selectedSchemaName),D=s.useDashboardStore(q=>q.dashboard.aiScopeTables),{errorMessage:M,refetch:f,data:I}=s.useDashboardCardQuery(E),{setTriggerAIRun:j,setCurrentAssitantScope:k,setCardConfig:R}=s.useEditorActions(),{selectedDatamodelName:P,connectionType:N,selectedDatamodelId:L}=s.useEditorAside(),S=(Ne=s.useDashboardQuery().data)==null?void 0:Ne.assistantProfileId,{messages:F,setMessages:O,regenerate:_,error:Q,sendMessage:B,status:K,addToolResult:se,stop:H,clearError:te}=s.useChat({transport:new s.DefaultChatTransport({api:`${o.apiServiceUrl}/v1/assistant`,headers:()=>({Authorization:`Bearer ${d==null?void 0:d.accessToken}`}),body:()=>{const q=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",assistantProfileId:S,isDevMode:l,aiContext:q.currentAIContext,reasoningEffort:q.reasoningEffort,showReasoning:q.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:q,body:Z})=>({body:{...Z,messages:s.cleanupIncompleteMessages(q)}})}),onError:q=>{var Z;if(q.name==="AbortError"||(Z=q.message)!=null&&Z.includes("aborted")){console.log("[Editor Assistant] Stream aborted (expected)");return}console.error("[Editor Assistant] Stream error:",q)},onToolCall:z,onFinish({isAbort:q,isDisconnect:Z,isError:ce}){a(""),console.log(q?"[Editor Assistant] Stream aborted by user":Z?"[Editor Assistant] Stream disconnected (network error)":ce?"[Editor Assistant] Stream error occurred":"[Editor Assistant] Stream completed successfully")}});C.useEffect(()=>{w&&g&&(B({role:"user",parts:[{type:"text",text:g}]}),j(!1))},[w,g,B,j]);async function z({toolCall:q}){var Z,ce,je,De,Oe,Te,be,Ce,ae,fe,ge,Ie,ve,pe,Re,Qe;if(["createChartFromSql","createForecast"].includes(q.toolName)){const Ke=((Z=q.input)==null?void 0:Z.sql)??((ce=q.args)==null?void 0:ce.sql),oe=((je=q.input)==null?void 0:je.python)??((De=q.args)==null?void 0:De.python),me=((Oe=q.input)==null?void 0:Oe.chartType)??((Te=q.args)==null?void 0:Te.chartType);y(me),h(Ke),p(oe),u(!0),se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(q.toolName==="getUserSql"){if(!c){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",message:"No SQL found"}});return}se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",sql:c,python:x||""}})}else if(q.toolName==="generateQueryConfig"){a("Generating query config...");const Ke=((be=q.input)==null?void 0:be.chartType)??((Ce=q.args)==null?void 0:Ce.chartType),oe=((ae=q.input)==null?void 0:ae.queryConfig)??((fe=q.args)==null?void 0:fe.queryConfig);((ge=q.input)==null?void 0:ge.cardConfig)??((Ie=q.args)==null||Ie.cardConfig),y(Ke),R(oe),h(void 0),p(void 0);const me=await f();if((ve=me==null?void 0:me.data)!=null&&ve.error){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",queryConfig:oe,message:(pe=me==null?void 0:me.data)==null?void 0:pe.error.message}});return}if((Re=me==null?void 0:me.data)!=null&&Re.records){se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:oe,message:"The data has been visualized"}});return}se({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:oe,message:"The data has been visualized",records:(Qe=me==null?void 0:me.data)==null?void 0:Qe.records}})}else a("Analyzing...")}function W(q){const Z=s.removeFromScopeArray(m,q);le(Z)}function le(q){const Z=s.sanitizeAIScope(q);k(Z),O(ce=>[...ce,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify(Z)}`}]}])}function X(){const q={databaseName:V||"",schemaName:v||"",tableName:A||"",datamodelId:L||"",datamodelName:s.resolveDatamodelName(P),connectionId:T||"",connectionType:N||""},Z=s.dedup([...m,q]);le(Z)}function ne(){const q={databaseName:V||"",schemaName:v||"",tableName:A||"",datamodelName:s.resolveDatamodelName(P),connectionId:T||"",connectionType:N||"",datamodelId:L||""};if(!s.isInAiScopeArray([...D||[],...m],q)||m.length===0){const ce=s.dedup([...D||[],...m,q]).filter(je=>je.connectionId===q.connectionId);le(ce)}}const ue=!["ready","error"].includes(K),ee=s.getErrorMessage(Q);return{messages:F,setMessages:O,sendMessage:B,regenerate:_,isLoading:ue,handleSetAIScope:ne,handleAddCurrentTableToScope:X,removeFromCurrentSelections:W,currentAssitantScope:m,setCurrentAssitantScope:k,stop:H,status:K,toolStatus:n,llmUsage:r,onFinish:t,errorMessage:ee,clearError:te}}const ql=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function ja({isFullscreen:t,onFullscreenChange:n,fullscreenContainer:a}){const r=C.useRef(null),[i,d]=C.useState(!1),[o,c]=C.useState(s.isDevEnv),[l,x]=C.useState(!1),[p,h]=C.useState(!1),[u,y]=C.useState(!1),b=t??u,m=s.useCurrentAIContext(),{setCurrentAIContext:g}=s.useAIActions(),{clearQueue:w}=s.useQueueActions(),{clearFileAttachments:E}=s.useFileActions(),V=s.useFileAttachments("editor"),A=s.useDashboardStore(oe=>oe.dashboard.aiContext),T=s.useEditorStore(oe=>oe.card.dataSource),v=s.useEditorStore(oe=>oe.actions.setCardSql),D=s.useEditorStore(oe=>oe.actions.setRunSql),M=s.useEditorStore(oe=>oe.showAIDialog),f=s.useDashboardStore(oe=>oe.handleOpenAssistantProfile),{setShowAIDialog:I,setCardPython:j}=s.useEditorActions(),{setDataSource:k}=s.useEditorActions(),{assistantProfile:R}=s.useAssistantProfile(),{messages:P,setMessages:N,sendMessage:L,isLoading:S,stop:F,status:O,llmUsage:_,errorMessage:Q,clearError:B}=zl(),[K,se]=C.useState(""),H=oe=>{se(oe.target.value)},te=oe=>{oe.preventDefault();const me=K.trim();if(!me&&V.length===0)return;const ss=[];me&&ss.push({type:"text",text:me}),V.forEach(Ye=>{Ye.data&&ss.push({type:"file",mediaType:Ye.type,filename:Ye.name,url:`data:${Ye.type};base64,${Ye.data}`})}),L({role:"user",parts:ss}),se(""),E("editor"),ce({force:!0})},{visibleMessages:z,hasMoreMessages:W,totalMessageCount:le,loadMoreMessages:X,resetMessageWindow:ne}=s.useMessageWindow(P,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:ue,contentRef:ee,isAtBottom:Ne,hasNewMessages:q,newMessageCount:Z,scrollToBottom:ce,handleScroll:je,resetNewMessageCount:De}=s.useAutoScroll(z,{threshold:40,behavior:"smooth",isStreaming:S});C.useEffect(()=>{var oe;M&&((oe=r.current)==null||oe.focus(),g({selectedEntities:(T==null?void 0:T.selectedEntities)||[]}))},[M,T,g]),s.useAutoSubmitQueue({assistantType:"editor",status:O,isLoading:S,sendMessage:L});const{hasActiveTools:Oe}=s.useActiveToolStatus(P),Te=C.useCallback(oe=>{n==null||n(oe),t===void 0&&y(oe)},[t,n]);C.useEffect(()=>{if(!b)return;function oe(me){me.key==="Escape"&&Te(!1)}return window.addEventListener("keydown",oe),()=>{window.removeEventListener("keydown",oe)}},[b,Te]);const be=C.useCallback(oe=>{L({role:"user",parts:[{type:"text",text:oe}]}),ce({force:!0})},[L,ce]),Ce=C.useCallback(async()=>{const oe=JSON.stringify(P??[],null,2);try{if(typeof navigator>"u"||!navigator.clipboard)throw new Error("Clipboard API unavailable");await navigator.clipboard.writeText(oe),s.ue.success("Conversation copied")}catch(me){console.error("Failed to copy conversation",me),s.ue.error("Unable to copy conversation")}},[P]),ae=C.useCallback(()=>{Te(!b)},[b,Te]);function fe(oe,me){me==="sql"?(v(oe),D(!0)):me==="python"&&(j(oe),D(!0))}function ge(){m.selectedEntities.length===0&&g({selectedEntities:(A==null?void 0:A.selectedEntities)||[]})}function Ie(oe){ge();const me={role:"user",parts:[{type:"text",text:oe.title+" "+oe.subtitle}]};L(me)}function ve(oe){ge(),L({role:"user",parts:[{type:"text",text:oe}]})}function pe(){return e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{className:"h-7 p-2 text-muted-foreground hover:text-foreground",size:"sm",variant:"ghost",children:e.jsx(s.EllipsisVertical,{className:"size-3.5"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",children:[e.jsx(s.DropdownMenuLabel,{children:"Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsx(s.DropdownMenuCheckboxItem,{checked:i,onCheckedChange:d,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:o,onCheckedChange:c,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:l,onCheckedChange:x,children:"System Message"})]})]})}function Re(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const Qe=(K==null?void 0:K.length)===0&&(P==null?void 0:P.filter(oe=>oe.role==="user").length)===0,Ke=e.jsxs("div",{"data-role":"editor-assistant",className:s.cn("flex h-full w-full flex-col justify-between px-6 py-4",b&&"rounded-2xl border border-border/60 bg-background px-8 pb-6 pt-6 shadow-xl"),children:[e.jsxs("div",{"data-role":"header-section",className:"flex items-start justify-between gap-2",children:[Re(),f&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:f,children:(R==null?void 0:R.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[pe(),o&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-2 h-7 px-2 text-muted-foreground hover:text-foreground",onClick:Ce,children:"Copy Conversation"}),e.jsx(s.IconButton,{tooltip:b?"Exit Fullscreen":"Expand",className:"h-7 p-2 text-muted-foreground hover:text-foreground",onClick:ae,children:b?e.jsx(s.Minimize2,{className:"size-4"}):e.jsx(s.Maximize2,{className:"size-4"})}),e.jsx(s.IconButton,{className:"h-7 p-2 text-muted-foreground hover:text-foreground",tooltip:"New Chat",onClick:()=>{N([]),w("editor"),B(),ne()},children:e.jsx(s.SquarePen,{className:"size-4"})}),e.jsx(s.Button,{variant:"ghost",className:"h-7 p-2 text-muted-foreground hover:text-foreground",size:"sm",onClick:()=>{I(!1)},children:e.jsx(s.X,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:ue,className:"mt-2 flex min-w-0 w-full grow basis-0",onScroll:je,children:e.jsxs("div",{ref:ee,className:"min-w-0 space-y-4 py-2 pr-3","data-role":"messages",children:[W&&e.jsx("div",{className:"flex justify-center py-2",children:e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:X,className:"text-xs",children:["Load ",Math.min(5,le-z.length)," ","more messages (",le-z.length," ","hidden)"]})}),e.jsx(s.PrintMessages,{messages:z,showTools:o,handleRun:fe,showSystemMessage:l,onQuickReply:be,disableQuickReplies:S}),!Oe&&e.jsx(s.AssistantStatus,{status:O,errorMessage:Q})]})}),M&&!Ne&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{ce({force:!0}),De()},size:"sm",variant:"secondary",className:"rounded-full shadow-lg","aria-label":"Scroll to bottom",children:[e.jsx(s.ChevronDown,{className:"h-4 w-4"}),q&&Z>0&&e.jsx("span",{className:"ml-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-primary text-xs text-primary-foreground",children:Z>9?"9+":Z})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[Qe&&!R&&e.jsx(s.Placeholders,{onClick:Ie,placeholders:ql}),e.jsx("div",{children:Qe&&R&&e.jsx(s.SeedQuestions,{seedQuestions:R.seedQuestions||[],handleSeedQuestionClick:ve})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:r,setInput:se,stop:F,input:K,handleInputChange:H,handleSubmit:oe=>{ge(),te(oe),ce({force:!0})},isLoading:S,status:O,assistantType:"editor",onFocus:()=>{}})]}),_&&i&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",_.inputTokens," prompt tokens, ",_.outputTokens," ","completion tokens, ",_.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(T==null?void 0:T.selectedEntities)||[],open:p,onOpenChange:h,dataSource:T||s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]});return b&&a?nn.createPortal(e.jsx("div",{className:"pointer-events-auto absolute inset-0 z-50 flex bg-background px-6 pb-6 pt-[calc(var(--app-header-height,15px)+1rem)]",children:e.jsx("div",{className:"flex h-full w-full",children:Ke})}),a):Ke}function _l(t,n,a){if(!n)return!1;const r=n.qualifiedFieldName,i=n.qualifiedEntityName,d=i&&n.name?`${i}.${n.name}`:r;return t.some(o=>{if(!(s.getDataType(o.dataType||"")==="date"))return!1;const l=s.getSelectedDateFilterColumn(o,a),x=l.split("."),p=x[x.length-1]||l,h=x.length>1?x.slice(0,-1).join("."):void 0,u=o.qualifiedTableName||h,y=u?`${u}.${p}`:void 0;return r?y?y===d||y.endsWith(`.${r}`):p===n.name:y?y===d:p===n.name})}const Va=["day","week","month","quarter","year"],$l=[...Va,"hour","minute","second"],Gl=t=>/timestamp|datetime|time/i.test(t||""),Kl=t=>Gl(t)?$l:Va,ut=({dataType:t})=>s.getFieldIconComponent(t);function Ul({aliasTemplate:t,onAliasTemplateChange:n}){var l;const[a,r]=C.useState(t),[i,d]=C.useState(!1),o=(l=s.useEditorStore(x=>{var p;return(p=x.card.config)==null?void 0:p.pivotByColumns}))==null?void 0:l[0],c=o?`e.g. Min Sales in {{${o.name}}}`:"e.g. Min Sales in {{region}}";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-gray-600",children:"Pivot Alias Template"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Input$1,{placeholder:c,value:i?a:t,onChange:x=>{r(x.target.value),d(!0)},onFocus:()=>d(!0),onPointerDown:x=>x.stopPropagation(),className:"h-8 text-xs",onKeyDown:x=>{x.key==="Enter"&&i&&a!==t?(n(a),d(!1)):x.key==="Escape"&&(r(t),d(!1))},"aria-label":"Edit alias template"}),i&&a!==t&&e.jsxs(e.Fragment,{children:[e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm alias template",onClick:()=>{n(a),d(!1)},children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel alias template edit",onClick:()=>{r(t),d(!1)},children:e.jsx(s.X,{className:"h-4 w-4 text-gray-400"})})]})]})]})}function Hl({valueAliases:t,onValueAliasesChange:n}){const[a,r]=C.useState(null),[i,d]=C.useState(""),[o,c]=C.useState(""),l=()=>{n({...t,"":""})},x=h=>{const u={...t};delete u[h],n(u)},p=h=>{const u={...t};delete u[h],u[i]=o,n(u),r(null)};return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Pivot Value Aliases"}),e.jsxs("div",{className:"space-y-2",children:[Object.entries(t).map(([h,u],y)=>e.jsx("div",{className:"flex items-center gap-2",children:a===h?e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:i,onChange:b=>d(b.target.value),className:"h-8 w-24 text-xs",onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>{b.key==="Enter"?p(h):b.key==="Escape"&&r(null)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:o,onChange:b=>c(b.target.value),className:"h-8 w-24 text-xs",onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>{b.key==="Enter"?p(h):b.key==="Escape"&&r(null)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm value alias edit",onClick:()=>p(h),children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel value alias edit",onClick:()=>r(null),children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]}):e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:h,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),d(h),c(u)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:u,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),d(h),c(u)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>x(h),"aria-label":"Remove value alias",children:e.jsx(s.X,{className:"h-3 w-3"})})]})},h+y)),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"mt-1 h-8 text-xs",onClick:l,children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Value Alias"]})]})]})}function Jl({idx:t}){var c;const n=s.useEditorStore(l=>{var x;return(x=l.card)==null?void 0:x.preferences}),a=s.useEditorStore(l=>{var x;return(x=l.card.preferences)==null?void 0:x.datasetOptions}),r=s.useEditorStore(l=>l.actions.setCardPreferences),i=(c=n==null?void 0:n.chartOptions)==null?void 0:c.indexAxis,d=a==null?void 0:a.find(l=>l.idx===t);function o(l,x){(l==="end"||l==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const p={display:l!=="none",align:l,anchor:l,clamp:!0};if(!d)r({...n,datasetOptions:[...a||[],{idx:x,datalabels:p}]});else{const h={...d};h.datalabels=p;const u=a==null?void 0:a.map(y=>y.idx===x?h:y);r({...n,datasetOptions:u})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(s.Tag,{className:"size-4 rotate-[135deg] cursor-pointer text-muted-foreground hover:text-foreground"})}),e.jsx(s.PopoverContent,{className:"w-fit px-2 py-1",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("button",{onClick:()=>o("none",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(s.X,{className:"size-3.5"})}),e.jsx("button",{onClick:()=>o("start",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(hn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})}),e.jsx("button",{onClick:()=>o("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(fn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})}),e.jsx("button",{onClick:()=>o("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(pn,{className:s.cn("h-4 w-4",{"rotate-90":i==="y"})})})]})})]})}function mt({children:t,className:n,delayDuration:a}){return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:a,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:s.cn("overflow-hidden text-ellipsis whitespace-nowrap",n),children:t})}),e.jsx(s.TooltipContent,{children:t})]})})}function Ql(t,n=30){return t.length>n?t.slice(0,n)+"...":t}function Yl({col:t,idx:n,className:a,iconClassName:r,children:i}){const d=s.useEditorStore(p=>{var h;return(h=p.card)==null?void 0:h.preferences}),o=s.useEditorStore(p=>{var h,u;return(u=(h=p.card)==null?void 0:h.preferences)==null?void 0:u.datasetOptions}),c=o==null?void 0:o.find(p=>p.idx===n),{setCardPreferences:l}=s.useEditorStore(p=>p.actions);function x(p){if(!c)l({...d,datasetOptions:[...o||[],{idx:n,type:p==="area"?"line":p,fill:p==="area"?"origin":""}]});else{const h={...c};h.type=p==="area"?"line":p,h.fill=p==="area"?"origin":"";const u=o==null?void 0:o.map(y=>y.idx===n?h:y);l({...d,datasetOptions:u})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",a),children:[i||e.jsx(mt,{className:"max-w-[100px]",title:t,children:Ql(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>x("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>x("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>x("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(Jl,{idx:n})]})]})}function Wl(){const t=s.useEditorStore(c=>c.card.type),n=s.useEditorStore(c=>c.isDevMode),a=s.useEditorStore(c=>c.card.preferences),{setCardPreferences:r}=s.useEditorStore(c=>c.actions);function i(c){var p;const l={datalabels:{display:c!=="none",align:c,anchor:c,clamp:!0}},x={...a,chartOptions:{...a==null?void 0:a.chartOptions,plugins:{...(p=a==null?void 0:a.chartOptions)==null?void 0:p.plugins,...l}}};r(x)}function d(){var c,l,x;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((x=(l=(c=a==null?void 0:a.chartOptions)==null?void 0:c.plugins)==null?void 0:l.datalabels)==null?void 0:x.anchor)||"none",onValueChange:i,defaultValue:"none",children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full focus:ring-1 focus:ring-offset-0",children:e.jsx(s.SelectValue,{placeholder:"Select position"})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:"Data Labels"}),e.jsx(s.SelectItem,{value:"none",children:"None"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{value:"start",children:"Start"}),e.jsx(s.SelectItem,{value:"center",children:"Center"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{value:"end",children:"End"})]})})]})]})}function o(){var c,l,x;return e.jsx("div",{children:e.jsxs(s.Select,{value:((x=(l=(c=a==null?void 0:a.chartOptions)==null?void 0:c.plugins)==null?void 0:l.datalabels)==null?void 0:x.anchor)||"none",onValueChange:i,defaultValue:"none",children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select position"})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"none",children:"None"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{className:"text-xs",value:"start",children:"Start"}),e.jsx(s.SelectItem,{className:"text-xs",value:"center",children:"Center"}),!["pyramid","funnel"].includes(t)&&e.jsx(s.SelectItem,{className:"text-xs",value:"end",children:"End"})]})})]})})}return e.jsx(e.Fragment,{children:n?d():o()})}function Xl({column:t}){const n=s.useEditorStore(l=>l.card.type),a=s.useEditorStore(l=>{var x,p;return(p=(x=l.card)==null?void 0:x.config)==null?void 0:p.metricColumns}),r=(a==null?void 0:a.map(l=>l.label))||[],i=r==null?void 0:r.find(l=>l===t.label||l===t.name),d=i?r.indexOf(i):-1;function o(){return e.jsx("div",{className:"pr-1",children:i&&e.jsx(Yl,{idx:d,col:i,children:e.jsx("div",{className:"w-[130px] text-xs text-muted-foreground",children:"Display Series As"})})})}function c(){return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Data Labels"}),e.jsx(Wl,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(n)&&o(),["pie","doughnut"].includes(n)&&c()]})}function Zl({field:t,searchQuery:n="",limit:a=500}){const{authToken:r,tokenProps:i}=s.useSemaphorContext(),d=s.useEditorStore(x=>x.card),o=d==null?void 0:d.dataSource,c=["attribute-values",t.entityName,t.name,n,a],l=s.useQuery({queryKey:c,queryFn:async()=>{if(!(o!=null&&o.connectionId))return console.warn("No connection ID available for attribute values query"),[];try{const x={groupByColumns:[{...t,role:"groupby"}],metricColumns:[],filters:n?{id:"search-filter",logicalOperator:"AND",negate:!1,conditions:[{id:"search-condition",field:t,operator:"contains",value:n}],groups:[]}:void 0,rowLimit:a},p={connection_id:o.connectionId,cardConfig:x,cardDataSource:o,cache_config:s.getCacheConfig({card:d})};console.log("requestBody",p);const h=await s.postRequestRegular(`${i.apiServiceUrl}/v1/query`,(r==null?void 0:r.accessToken)||"",p);if(h!=null&&h.error)return console.error("Error fetching attribute values:",h.error),[];const u=t.name;return((h==null?void 0:h.records)||[]).map(b=>{const m=b[u]||b[t.alias||u]||b[t.label];return{id:m||"",value:m||"",label:String(m||"(empty)")}})}catch(x){return console.error("Error fetching attribute values:",x),[]}},enabled:!!t&&!!(o!=null&&o.connectionId),staleTime:5*60*1e3,gcTime:10*60*1e3});return{values:l.data||[],isLoading:l.isLoading,isFetching:l.isFetching,isError:l.isError,error:l.error,refetch:l.refetch}}function Ba({open:t,onOpenChange:n,availableFields:a,existingFilters:r,editingCondition:i,onSave:d}){var V,A;const o=!!i,[c,l]=C.useState(o?"values":"fields"),[x,p]=C.useState(""),[h,u]=C.useState({id:(i==null?void 0:i.id)||s.v4(),field:(i==null?void 0:i.field)||null,selectedValues:i?Array.isArray(i.value)?i.value:[i.value]:[]}),y=a.filter(T=>{var D;return o?!1:!((D=r==null?void 0:r.conditions)==null?void 0:D.some(M=>M.field.id===T.id))&&T.label.toLowerCase().includes(x.toLowerCase())}),b=T=>{u({...h,field:T}),l("values")},m=()=>{if(h.field&&h.selectedValues.length>0){const T={id:h.id,field:h.field,operator:"in",value:h.selectedValues};let v;if(o){const D=((r==null?void 0:r.conditions)||[]).map(M=>M.id===i.id?T:M);v={...r,conditions:D}}else{const D=(r==null?void 0:r.conditions)||[];v={id:(r==null?void 0:r.id)||s.v4(),logicalOperator:"AND",negate:!1,conditions:[...D,T],groups:[]}}d(v),n(!1)}},g=()=>{if(!o||!i)return;const T=((r==null?void 0:r.conditions)||[]).filter(v=>v.id!==i.id);if(T.length>0){const v={...r,conditions:T};d(v)}else d(void 0);n(!1)},w=T=>{u({...h,selectedValues:T})},E=()=>{o&&i?(u({id:i.id,field:i.field,selectedValues:Array.isArray(i.value)?i.value:[i.value]}),l("values")):(u({id:s.v4(),field:null,selectedValues:[]}),l("fields")),p("")};return C.useEffect(()=>{t&&E()},[t,o,i]),e.jsx(s.Dialog,{open:t,onOpenChange:n,children:e.jsxs(s.DialogContent,{className:"max-w-2xl",children:[e.jsx(s.DialogHeader,{children:e.jsx(s.DialogTitle,{children:o?`Edit Filter: ${(V=h.field)==null?void 0:V.label}`:c==="fields"?"Select Field to Filter":`Select Values for ${(A=h.field)==null?void 0:A.label}`})}),e.jsxs("div",{className:"space-y-4",children:[!o&&(r==null?void 0:r.conditions)&&r.conditions.length>0&&c==="fields"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Current Filters:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.conditions.map(T=>e.jsxs("div",{className:"flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[e.jsxs("span",{className:"font-medium",children:[T.field.label,":"]}),e.jsx("span",{className:"text-muted-foreground",children:Array.isArray(T.value)?`${T.value.length} values`:String(T.value)})]},T.id))})]}),c==="fields"&&!o?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search fields...",value:x,onChange:T=>p(T.target.value),className:"pl-10"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 max-h-[400px] overflow-y-auto",children:y.map(T=>e.jsxs(s.Button,{variant:"outline",className:"justify-start h-auto py-2 px-3",onClick:()=>b(T),children:[e.jsx(ut,{dataType:s.getDataType(T.dataType)}),e.jsxs("div",{className:"ml-2 text-left",children:[e.jsx("div",{className:"text-sm font-medium",children:T.label}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[T.entityName,".",T.name]})]})]},T.id))}),y.length===0&&x&&e.jsxs("div",{className:"text-center py-4 text-sm text-muted-foreground",children:['No fields found matching "',x,'"']}),y.length===0&&!x&&a.length>0&&e.jsx("div",{className:"text-center py-4 text-sm text-muted-foreground",children:"All available fields are already filtered"})]}):e.jsx(eo,{field:h.field,selectedValues:h.selectedValues,onValuesChange:w,onBack:o?void 0:()=>l("fields")}),e.jsxs("div",{className:"flex justify-between pt-4 border-t",children:[e.jsx("div",{children:o?e.jsx(s.Button,{variant:"destructive",onClick:g,children:"Delete Filter"}):e.jsx(s.Button,{variant:"outline",onClick:E,children:"Reset"})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>n(!1),children:"Cancel"}),e.jsx(s.Button,{onClick:m,disabled:!h.field||h.selectedValues.length===0,children:"Apply"})]})]})]})]})})}function eo({field:t,selectedValues:n,onValuesChange:a,onBack:r}){const[i,d]=C.useState(""),{values:o,isLoading:c,isFetching:l}=Zl({field:t,searchQuery:i,limit:500}),x=i?o.filter(u=>String(u.value).toLowerCase().includes(i.toLowerCase())):o,p=u=>{const y=n.includes(u);a(y?n.filter(b=>b!==u):[...n,u])},h=()=>{n.length===x.length&&x.length>0?a([]):a(x.map(u=>u.value))};return e.jsxs("div",{className:"space-y-4",children:[r&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:r,children:"← Back"}),e.jsxs(s.Label,{className:"text-sm font-medium",children:["Select values for ",t.label]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search values...",value:i,onChange:u=>d(u.target.value),className:"pl-10"})]}),c||l?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(s.LoaderCircle,{className:"h-6 w-6 animate-spin"})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b",children:[e.jsx(s.Checkbox,{checked:n.length===x.length&&x.length>0,onCheckedChange:h}),e.jsxs(s.Label,{className:"text-sm",children:["Select All (",x.length,")"]})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-1",children:x.map(u=>e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-muted/50 rounded cursor-pointer",onClick:()=>p(u.value),children:[e.jsx(s.Checkbox,{checked:n.includes(u.value),onCheckedChange:()=>p(u.value)}),e.jsx(mt,{className:"text-sm",children:u.label})]},u.id))})]})]})}function so({field:t,zone:n,index:a,sortDirection:r,onSortDirectionChange:i,hasPivotColumns:d=!1,cardType:o}){var gt,jt,bt,vt,yt,Nt,Ct,St,wt,Tt,Et,It,kt,Dt,At,Lt,Mt,Ot,Rt,Ft,Pt,Vt,Bt,zt,qt,_t,$t,Gt,Kt,Ut,Ht,Jt,Qt,Yt;const{attributes:c,listeners:l,setNodeRef:x,transform:p,transition:h,isDragging:u}=s.useSortable({id:t.id}),y=s.useEditorStore($=>$.card),b=s.useEditorStore($=>$.frame),{scopedFields:m,isLoading:g}=s.useScopedFields(),{userContext:w}=s.useCurrentUserInfo(),E=(w==null?void 0:w.type)==="organization",V=(gt=y.dataSource)==null?void 0:gt.semanticDomainId,{promoteMetric:A}=s.usePromoteCalculatedMetricToDomain({domainId:V}),{updateLabel:T,handleAggregationChange:v,handleDateFormatChange:D,handleGranularityChange:M,handleAliasTemplateChange:f,handleValueAliasesChange:I,removeField:j,handleMetricComparisonChange:k,handleMetricWindowTransformChange:R,handleMetricWindowOrderByChange:P,handleMetricWindowDirectionChange:N,handleMetricWindowPartitionToggle:L,handleMetricMovingAverageWindowSizeChange:S,handleMetricMovingAverageMinPeriodsChange:F,handleMetricPreviousPeriodDeltaModeChange:O,handleMetricPercentOfTotalScopeChange:_,handleMetricPercentOfTotalOutputChange:Q,handleKpiShowTrendlineChange:B,handleKpiTrendlineWindowChange:K,handleKpiTrendlineGranularityChange:se,handleMetricTargetValueChange:H}=s.useFieldManagement(y),[te,z]=C.useState(!1),[W,le]=C.useState(()=>{var $;return!!(($=t.parameters)!=null&&$.windowTransform)}),[X,ne]=C.useState(!1),[ue,ee]=C.useState(!1),[Ne,q]=C.useState(null),Z=C.useMemo(()=>{const $=re=>re!=null&&re.startsWith("card-source-")?re.replace("card-source-",""):re,U=$(t.id),de=m.find(re=>{if(t.qualifiedFieldName&&re.qualifiedFieldName&&re.qualifiedFieldName===t.qualifiedFieldName||t.qualifiedEntityName&&re.qualifiedEntityName&&re.qualifiedEntityName===t.qualifiedEntityName&&re.name===t.name)return!0;const ye=$(re.id);return!!(U&&ye&&U===ye)});return{dataType:(de==null?void 0:de.dataType)||t.dataType,resolvedFromScopedField:!!de}},[t.dataType,t.id,t.name,t.qualifiedEntityName,t.qualifiedFieldName,m]),ce=Kl(Z.dataType),[je,De]=C.useState(t.dateFormat||"YYYY-MM-DD"),[Oe,Te]=C.useState(t.customFormat||""),[be,Ce]=C.useState(!!t.customFormat),ae=C.useRef(null),[fe,ge]=C.useState(t.aliasTemplate||""),[Ie,ve]=C.useState(t.valueAliases||{}),[pe,Re]=C.useState((jt=t.parameters)==null?void 0:jt.filters),Qe=$=>{$==="custom"?Ce(!0):(Ce(!1),De($),(n==="groupBy"||gs)&&D(a,$,"",n))},Ke=$=>{Te($),(n==="groupBy"||gs)&&D(a,"custom",$,n)},oe=$=>{var re;const de=(re=s.getDateFormatOptionsForGranularity($)[0])==null?void 0:re.value;de&&!be&&(De(de),n==="groupBy"&&D(a,de,"",n)),n==="groupBy"&&M(a,$)},me=$=>{ge($),n==="metrics"&&f(a,$)},ss=$=>{ve($),n==="metrics"&&I(a,$)},Ye=$=>{T(n,a,$)},Ns=$=>$!=null&&$.startsWith("card-source-")?$.replace("card-source-",""):$,rs=($,U,de)=>{const re=Ns($.id),ye=Ns(U.id);return re&&ye&&re===ye?!0:$.name===U.name&&$.role===U.role},Ue=s.getExpressionFieldKind(t),Be=s.getFieldExpressionAnnotation(t),Se=Ue==="domain_calculated"||Ue==="user_calculated",ps=Ue==="user_calculated"?(bt=b==null?void 0:b.calculatedFields)==null?void 0:bt.find($=>rs($,t)):void 0,_e=Ue==="user_calculated"&&(t.fieldScope==="dashboard"||t.fieldScope===void 0&&!!ps),fs=Ue==="domain_calculated",ls=fs?"domain":_e?"dashboard":"card",qs=fs?t:_e&&ps?ps:t,We=$=>{var U;if(Re($),n==="metrics"){const de={...t,parameters:{...t.parameters,filters:$}},re=[...((U=y.config)==null?void 0:U.metricColumns)||[]];re[a]=de,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:re})}ne(!1)},Cs=async $=>{await A($),sn()},Ss=()=>{j(n,a)},os={transform:s.CSS.Transform.toString(p),transition:h},ws=s.getDataType(Z.dataType||t.dataType),ts=ws==="date",Ts=o==="kpi",gs=n==="detailColumns",js=(vt=y.config)==null?void 0:vt.metricColumns,ze=(yt=y.config)==null?void 0:yt.groupByColumns,bs=s.useDashboardStore($=>{var U;return(U=$.dashboard)==null?void 0:U.filters}),is=s.useDashboardStore($=>$.filterValues),Xe=t.granularity||"day",He=ce.includes(Xe)?Xe:"day",_s=n==="groupBy"&&!ce.includes(Xe),cs=s.getDateFormatOptionsForGranularity(He),$s=be?"custom":cs.some($=>$.value===je)?je:((Nt=cs[0])==null?void 0:Nt.value)??"YYYY-MM-DD";C.useEffect(()=>{var de;if(g||!_s){ae.current=null;return}const $=`${t.id}:${Xe}:${Z.dataType||t.dataType||""}:${a}`;if(ae.current===$)return;ae.current=$;const U="day";if(M(a,U),!be){const re=(de=s.getDateFormatOptionsForGranularity(U)[0])==null?void 0:de.value;re&&(De(re),D(a,re,"",n))}},[t.dataType,t.id,D,M,_s,a,be,g,Xe,Z.dataType,n]);const Es=!!o&&s.COMPARISON_SUPPORTED_CHART_TYPES.includes(o),Is=o==="kpi"||o==="table",$e=C.useMemo(()=>ze==null?void 0:ze.find($=>s.getDataType($.dataType||"")==="date"),[ze]),ks=C.useMemo(()=>(ze||[]).some($=>s.getDataType($.dataType||"")==="date"),[ze]),Gs=C.useMemo(()=>{var re;if(!$e)return!1;const $=(re=y.config)==null?void 0:re.filters;if(!$)return!1;const U=ye=>{const Ee=ye.field;return Ee?$e.id&&Ee.id===$e.id||$e.qualifiedFieldName&&Ee.qualifiedFieldName===$e.qualifiedFieldName?!0:Ee.name===$e.name:!1},de=ye=>ye.conditions.some(Ve=>s.getDataType(Ve.field.dataType||"")==="date"&&U(Ve))?!0:ye.groups.some(Ve=>de(Ve));return de($)},[(Ct=y.config)==null?void 0:Ct.filters,$e]),Ds=C.useMemo(()=>_l(bs||[],$e,is),[bs,is,$e]),As=Gs||Ds,we=t,ds=((wt=(St=we.parameters)==null?void 0:St.windowTransform)==null?void 0:wt.function)||"none",Fe=s.isMetricTransformEnabled(we),G=Fe?ds:null,Y=s.supportsMetricTransformForMetric({cardType:o||"table",cardConfig:y.config||{},metric:we,transformMode:G||"running_total"}),J=!!we.comparisonType&&we.comparisonType!=="none",xe=s.getRunningTotalOrderByCandidates(ze||[]),ie=((It=(Et=(Tt=we.parameters)==null?void 0:Tt.windowTransform)==null?void 0:Et.orderBy)==null?void 0:It.fieldId)||"",he=((At=(Dt=(kt=we.parameters)==null?void 0:kt.windowTransform)==null?void 0:Dt.orderBy)==null?void 0:At.direction)||"asc",ke=xe.find($=>$.id===ie),Le=G==="running_total"||G==="moving_average"||G==="previous_period_delta",Je=Fe&&Le&&!!ke&&s.getDataType(ke.dataType||"")!=="date",us=s.getDefaultRunningTotalPartitionByFieldIds({cardType:o||"table",cardConfig:y.config||{},orderByFieldId:ie||void 0}),ms=new Set(((Mt=(Lt=we.parameters)==null?void 0:Lt.windowTransform)==null?void 0:Mt.partitionByFieldIds)||us),Me=o==="pivotTable"||s.isSubtotalEnabledAggregateTable(o||"table",y.config||{}),as=[...(ze||[]).filter($=>$.id&&(!Le||$.id!==ie)),...Me?(((Ot=y.config)==null?void 0:Ot.pivotByColumns)||[]).filter($=>$.id):[]],Ls=((Pt=(Ft=(Rt=we.parameters)==null?void 0:Rt.windowTransform)==null?void 0:Ft.movingAverage)==null?void 0:Pt.windowSize)||7,Ks=((zt=(Bt=(Vt=we.parameters)==null?void 0:Vt.windowTransform)==null?void 0:Bt.movingAverage)==null?void 0:zt.minPeriods)||1,qa=(($t=(_t=(qt=we.parameters)==null?void 0:qt.windowTransform)==null?void 0:_t.previousPeriodDelta)==null?void 0:$t.mode)||"absolute",ht=((Ut=(Kt=(Gt=we.parameters)==null?void 0:Gt.windowTransform)==null?void 0:Kt.percentOfTotal)==null?void 0:Ut.scope)||"grand_total",_a=((Qt=(Jt=(Ht=we.parameters)==null?void 0:Ht.windowTransform)==null?void 0:Jt.percentOfTotal)==null?void 0:Qt.output)||"percent",$a=C.useMemo(()=>(js||[]).some($=>$.comparisonType==="start_vs_end"),[js]);C.useEffect(()=>{Fe&&le(!0)},[Fe]);const Ga=n!=="pivotBy",Ka=ts&&n==="groupBy"&&(!Ts||$a),Ua=!Ts&&ts&&(n==="groupBy"||gs),Ha=o==="kpi"&&ts&&n==="groupBy",Ja=n==="metrics",pt=Es&&n==="metrics",Qa=()=>{const $=t,U=n==="metrics"&&Se;return e.jsxs("div",{className:"space-y-1",children:[!U&&e.jsx("div",{title:`${t.entityName}.${t.name}`,onPointerDown:de=>{de.stopPropagation()},className:"max-w-[270px] cursor-default overflow-hidden text-ellipsis whitespace-nowrap px-0.5 text-xs text-muted-foreground/80",children:`${t.entityName}.${t.name}`}),U&&$.calculatedFormula&&e.jsxs("div",{title:s.formatDisplayFormula($.calculatedFormula),onPointerDown:de=>{de.stopPropagation()},className:"max-w-[270px] cursor-default overflow-hidden text-ellipsis whitespace-nowrap rounded bg-muted/50 px-1.5 py-0.5 font-mono text-xs text-primary",children:["= ",s.formatDisplayFormula($.calculatedFormula)]})]})},Ya=()=>Ga?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Label"}),e.jsx(qe,{value:t.label??"",onSave:Ye,placeholder:"Display label...",type:"text"})]}):null,ft=()=>Ka?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Granularity"}),e.jsxs(s.Select,{value:He,onValueChange:oe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsx(s.SelectContent,{children:ce.map($=>e.jsx(s.SelectItem,{className:"text-xs",value:$,children:s.toTitleCase($)},$))})]})]}):null,Wa=()=>Ua?e.jsxs(e.Fragment,{children:[ft(),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Date Format"}),e.jsxs(s.Select,{value:$s,onValueChange:Qe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select date format..."})}),e.jsx(s.SelectContent,{children:cs.map($=>e.jsx(s.SelectItem,{className:"text-xs",value:$.value,children:$.label},$.value))})]}),be&&e.jsxs("div",{className:"mt-2 space-y-1",children:[e.jsx(s.Input$1,{placeholder:"Enter custom format (e.g., YYYY-MM-DD HH:mm)",value:Oe,onChange:$=>{$.stopPropagation(),Ke($.target.value)},onClick:$=>$.stopPropagation(),className:"h-8 text-xs"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Examples: YYYY-MM-DD, MM/DD/YY, DD-MMM-YYYY HH:mm"})]})]})]}):null,Xa=()=>{var U,de,re,ye;const $=Ha;return $?e.jsx(e.Fragment,{children:$&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-1",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Show Trendline"}),e.jsx(s.SmallSwitch,{checked:((U=y.config)==null?void 0:U.showTrendline)||!1,onCheckedChange:B})]})}),((de=y.config)==null?void 0:de.showTrendline)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Window"}),e.jsx(s.Input$1,{type:"number",min:"1",max:"365",value:((re=y.config)==null?void 0:re.trendlineWindow)||30,onChange:Ee=>{const Ve=parseInt(Ee.target.value)||30;K(Ve)},className:"h-8 text-xs",placeholder:"30"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Granularity"}),e.jsxs(s.Select,{value:((ye=y.config)==null?void 0:ye.trendlineGranularity)||"day",onValueChange:se,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"day",children:"Day"}),e.jsx(s.SelectItem,{value:"week",children:"Week"}),e.jsx(s.SelectItem,{value:"month",children:"Month"})]})]})]})]})]})}):null},Za=()=>{if(!Ja)return null;const $=Se;return e.jsxs(e.Fragment,{children:[$&&E&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Formula"}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>ee(!0),children:[e.jsx(s.Pencil,{className:"mr-2 h-3 w-3"}),"Edit Formula"]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Aggregation"}),e.jsxs(s.Select,{value:t.aggregate,onValueChange:U=>{v(a,U)},disabled:$,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select function..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"COUNT",children:"Count"}),e.jsx(s.SelectItem,{className:"text-xs",value:"DISTINCT",children:"Count Distinct"}),s.getDataType(t.dataType)==="number"&&e.jsxs(e.Fragment,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"SUM",children:"Sum"}),e.jsx(s.SelectItem,{className:"text-xs",value:"AVG",children:"Average"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MIN",children:"Min"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MAX",children:"Max"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MEDIAN",children:"Median"})]})]})]})]}),e.jsx(s.Collapsible,{open:W,onOpenChange:le,children:e.jsxs("div",{className:"space-y-2 rounded-md border border-border/60 bg-muted/20 p-2.5",children:[e.jsx(s.CollapsibleTrigger,{asChild:!0,children:e.jsxs("button",{type:"button",className:"flex w-full items-center justify-between rounded-sm px-0.5 py-0.5 text-left",children:[e.jsx("div",{className:"text-xs font-medium text-foreground",children:"Metric Transform"}),e.jsxs("div",{className:"flex items-center text-[11px] text-muted-foreground",children:[!W&&e.jsx("span",{className:"mr-2",children:Fe?s.toTitleCase(ds.replace(/_/g," ")):"None"}),e.jsx(s.ChevronDown,{className:s.cn("h-3 w-3 transition-transform",W?"rotate-180":"")})]})]})}),e.jsxs(s.CollapsibleContent,{className:"space-y-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Transform"}),e.jsxs(s.Select,{value:Fe?ds:"none",onValueChange:U=>R(a,U),disabled:!Y.supported&&!Fe,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select transform..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"None"}),e.jsx(s.SelectItem,{value:"running_total",disabled:J,children:"Running Total"}),e.jsx(s.SelectItem,{value:"moving_average",disabled:J,children:"Moving Average"}),e.jsx(s.SelectItem,{value:"previous_period_delta",disabled:J,children:"Previous Period Delta"}),e.jsx(s.SelectItem,{value:"percent_of_total",disabled:J,children:"Percent of Total"})]})]}),!Y.supported&&!Fe&&e.jsx("div",{className:"text-xs text-muted-foreground",children:Y.reason}),J&&!Fe&&e.jsx("div",{className:"text-xs text-muted-foreground",children:"Disable comparison to enable metric transforms."})]}),Fe&&e.jsxs(e.Fragment,{children:[Le&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Order By"}),e.jsxs(s.Select,{value:ie,onValueChange:U=>P(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select order field..."})}),e.jsx(s.SelectContent,{children:xe.filter(U=>!!U.id).map(U=>e.jsx(s.SelectItem,{value:U.id,className:"text-xs",children:U.label||U.name},U.id))})]}),!ie&&e.jsx("div",{className:"text-xs text-amber-700",children:"No date trend detected. Select an order field."}),Je&&e.jsx("div",{className:"text-xs text-amber-700",children:"No date trend detected. The transform will follow the selected order field."})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Direction"}),e.jsxs(s.Select,{value:he,onValueChange:U=>N(a,U),disabled:!ie,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select direction..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"asc",children:"Ascending"}),e.jsx(s.SelectItem,{className:"text-xs",value:"desc",children:"Descending"})]})]})]})]}),G==="moving_average"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Window Size"}),e.jsx(s.Input$1,{type:"number",min:1,className:"h-8 text-xs",value:Ls,onChange:U=>S(a,Number(U.target.value))}),e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Min Periods"}),e.jsx(s.Input$1,{type:"number",min:1,max:Ls,className:"h-8 text-xs",value:Ks,onChange:U=>F(a,Number(U.target.value))})]}),G==="previous_period_delta"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Output"}),e.jsxs(s.Select,{value:qa,onValueChange:U=>O(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select output..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"absolute",children:"Absolute Delta"}),e.jsx(s.SelectItem,{value:"percent",children:"Percent Delta"})]})]})]}),G==="percent_of_total"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Scope"}),e.jsxs(s.Select,{value:ht,onValueChange:U=>_(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select scope..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"grand_total",children:"Grand Total"}),e.jsx(s.SelectItem,{value:"partition_total",children:"Partition Total"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Output"}),e.jsxs(s.Select,{value:_a,onValueChange:U=>Q(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select output..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"percent",children:"Percent"}),e.jsx(s.SelectItem,{value:"fraction",children:"Fraction"})]})]})]})]}),(G==="running_total"||G==="moving_average"||G==="previous_period_delta"||G==="percent_of_total"&&ht==="partition_total")&&as.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Reset By"}),e.jsx("div",{className:"space-y-1",children:as.map(U=>{const de=!!U.id&&ms.has(U.id);return e.jsxs("button",{type:"button",onClick:()=>U.id&&L(a,U.id),className:s.cn("flex h-7 w-full items-center justify-between rounded border px-2 text-xs",de?"border-primary bg-primary/5 text-primary":"border-border text-muted-foreground"),children:[e.jsx("span",{children:U.label||U.name}),de?e.jsx(s.Check,{className:"h-3 w-3"}):null]},U.id)})})]})]})]})]})}),pt&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Comparison Type"}),e.jsxs(s.Select,{value:we.comparisonType||"none",disabled:Fe,onValueChange:U=>k(a,U),children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select comparison type..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"No Comparison"}),(()=>{const U=!ks||!As,de=ks?As?void 0:"Add a date filter to enable":"Add a date groupBy to enable",re=(ye,Ee)=>e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.SelectItem,{value:ye,disabled:U,title:de,children:Ee})}),U&&de&&e.jsx(s.TooltipContent,{side:"right",children:de})]})});return e.jsxs(e.Fragment,{children:[re("previous_period","Previous Period"),re("same_period_last_year","Same Period Last Year"),re("start_vs_end","Start vs End")]})})(),Is&&e.jsx(s.SelectItem,{value:"target",children:"Target"})]})]})]}),pt&&we.comparisonType==="target"&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Target Value"}),e.jsx(s.Input$1,{type:"number",value:we.targetValue!==void 0&&we.targetValue!==null?String(we.targetValue):"",onChange:U=>{const de=U.target.value;if(de===""){H(a,void 0);return}const re=Number(de);H(a,Number.isFinite(re)?re:void 0)},className:"h-8 text-xs",placeholder:"Enter target value..."})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Attribute Filters"}),(pe==null?void 0:pe.conditions)&&pe.conditions.length>0&&e.jsx("div",{className:"mb-2 space-y-1",children:pe.conditions.map(U=>e.jsxs("div",{className:"flex cursor-pointer items-center gap-2 rounded bg-muted/50 p-2 text-xs transition-colors hover:bg-muted/70",onClick:()=>{q(U),ne(!0)},children:[e.jsxs("span",{className:"font-medium",children:[U.field.label,":"]}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"cursor-help text-muted-foreground",children:Array.isArray(U.value)?U.value.length===1?String(U.value[0]):U.value.length<=2?U.value.join(", "):`${U.value.slice(0,2).join(", ")} +${U.value.length-2}`:String(U.value)})}),Array.isArray(U.value)&&U.value.length>1&&e.jsx(s.TooltipContent,{side:"top",className:"max-w-[300px]",children:e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"mb-1 font-medium",children:["Selected values (",U.value.length,"):"]}),e.jsx("div",{className:"max-h-[200px] overflow-y-auto",children:U.value.map((de,re)=>e.jsx("div",{children:String(de)},re))})]})})]})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-auto h-4 w-4 p-0",onClick:de=>{var ye;de.stopPropagation();const re=pe.conditions.filter(Ee=>Ee.id!==U.id);if(re.length>0){const Ee={...pe,conditions:re};We(Ee)}else if(Re(void 0),n==="metrics"){const Ee={...t,parameters:{...t.parameters,filters:void 0}},Ve=[...((ye=y.config)==null?void 0:ye.metricColumns)||[]];Ve[a]=Ee,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:Ve})}},children:e.jsx(s.X,{className:"h-3 w-3"})})]},U.id))}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>{q(null),ne(!0)},children:[e.jsx(s.Filter,{className:"mr-2 h-3 w-3"}),"Add attribute filter"]})]}),e.jsx(Xl,{column:t}),d&&e.jsxs(e.Fragment,{children:[e.jsx(Ul,{aliasTemplate:fe,onAliasTemplateChange:me}),e.jsx(Hl,{valueAliases:Ie,onValueAliasesChange:ss})]})]})},{columns:en=[],refetch:sn}=s.useColumns(),tn=(pe==null?void 0:pe.conditions)&&pe.conditions.length>0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:x,style:os,...c,...l,className:s.cn("group mx-auto flex w-full flex-col gap-2 rounded-md border border-border/55 bg-background p-2 transition-colors duration-150","hover:border-border/80 hover:bg-muted/20",te&&"border-border/80 bg-muted/20 shadow-[inset_0_1px_0_rgba(255,255,255,0.35)]",u&&"z-50 scale-95 opacity-50",n==="filters"?"cursor-default":"cursor-move"),children:[e.jsxs("div",{className:"flex min-w-0 grow items-center gap-2",children:[e.jsxs("div",{className:"relative shrink-0",children:[e.jsx(ut,{dataType:ws}),Be&&e.jsx("span",{className:s.cn(s.FIELD_EXPRESSION_BADGE_BASE_CLASS,Be.badgeClassName),children:Be.label})]}),e.jsx(mt,{className:s.cn("w-[140px] min-w-0 flex-1 text-sm text-foreground/95",tn&&"w-[120px] min-w-0"),children:s.getMetricDisplayLabel(t)}),n==="metrics"&&((Yt=pe==null?void 0:pe.conditions)==null?void 0:Yt.length)&&!te&&e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-1 rounded bg-primary/10 px-1.5 py-0.5 text-xs text-primary/90",children:[e.jsx(s.Filter,{className:"h-3 w-3"}),e.jsx("span",{children:pe.conditions.length})]})}),e.jsx(s.TooltipContent,{side:"top",children:e.jsx("div",{className:"text-xs",children:pe.conditions.map($=>e.jsxs("div",{children:[$.field.label,":"," ",Array.isArray($.value)?`${$.value.length} values`:String($.value)]},$.id))})})]})}),n!=="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),z(!te)},children:e.jsx(s.ChevronDown,{className:`h-3 w-3 transition-transform ${te?"rotate-180":""}`})}),n==="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),i(r==="asc"?"desc":"asc")},children:r==="asc"?e.jsx(s.ArrowUp,{className:"h-3 w-3"}):e.jsx(s.ArrowDown,{className:"h-3 w-3"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-foreground/55 hover:text-foreground",onClick:$=>{$.stopPropagation(),Ss()},children:e.jsx(s.X,{className:"h-2.5 w-2.5"})})]}),te&&e.jsxs("div",{className:"space-y-3 rounded-md bg-muted/20 p-2.5",children:[Qa(),Ya(),o==="kpi"&&ft(),Wa(),Xa(),Za()]})]}),X&&e.jsx(Ba,{open:X,onOpenChange:$=>{ne($),$||q(null)},availableFields:en,existingFilters:pe,editingCondition:Ne,onSave:$=>{var U;if($)We($);else if(Re(void 0),n==="metrics"){const de={...t,parameters:{...t.parameters,filters:void 0}},re=[...((U=y.config)==null?void 0:U.metricColumns)||[]];re[a]=de,s.useEditorStore.getState().actions.updateCardConfig(y.id,{metricColumns:re})}q(null)}}),ue&&n==="metrics"&&Se&&e.jsx(s.CalculatedFieldEditor,{open:ue,onOpenChange:ee,availableFields:m,existingField:qs,existingFieldScope:ls,initialFieldType:"metric",allowedFieldTypes:["metric"],onSave:$=>{var xs;if($.role!=="metric")return;const U=[...((xs=y.config)==null?void 0:xs.metricColumns)||[]];U[a]=$;const{frame:de,actions:re}=s.useEditorStore.getState();if(re.updateCardConfig(y.id,{metricColumns:U}),!s.isCalculatedMetric($))return;const ye=de.calculatedFields||[],Ee=ye.findIndex(Ge=>Ge.name===t.name&&Ge.role===t.role);if(Ee<0)return;const Ve=ye.map((Ge,Ms)=>Ms===Ee?{...$,id:Ge.id}:Ge);re.updateFrame({calculatedFields:Ve})},onSaveToDashboard:$=>{var Ms;if($.role!=="metric")return;const{frame:U,actions:de}=s.useEditorStore.getState(),re=U.calculatedFields||[],ye=re.findIndex(Us=>rs(Us,$)),Ee=ye>=0&&re[ye].id!==$.id?{...$,id:re[ye].id}:$,Ve=ye>=0?re.map((Us,an)=>an===ye?Ee:Us):[...re,Ee];de.updateFrame({calculatedFields:Ve});const xs=[...((Ms=y.config)==null?void 0:Ms.metricColumns)||[]],Ge=t;xs[a]={...Ee,id:Ge.id,aliasTemplate:Ge.aliasTemplate,valueAliases:Ge.valueAliases,parameters:Ge.parameters,customFormat:Ge.customFormat},de.updateCardConfig(y.id,{metricColumns:xs})},onPromoteMetricToDomain:V&&E?Cs:void 0,domainId:V,cardId:y.id})]})}function to({concept:t}){const n=()=>{switch(t){case"groupBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Rows = Group By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that define how your data is grouped into rows."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-100 text-xs font-medium dark:bg-blue-200/20",children:"Product"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Sales"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Profit"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/50 text-xs font-medium dark:bg-blue-200/20",children:"Electronics"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$5,200"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$1,300"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/30 text-xs font-medium dark:bg-blue-300/20",children:"Clothing"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$3,100"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$620"})]}),e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/20 text-xs font-medium dark:bg-blue-200/20",children:"Food"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$2,400"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$480"})]})]})]});case"pivotBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Pivot Columns = Pivot By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that split your data into multiple columns or series."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Region"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"North"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"South"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"East"})]}),e.jsxs("div",{className:"flex border-b py-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$2,300"}),e.jsx("div",{className:"w-1/4 bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$1,800"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$3,400"})]}),e.jsxs("div",{className:"flex py-1",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$460"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$360"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$680"})]})]})]});case"metrics":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Metric Values (Cells)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that represent the values shown in your visualization."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"col-span-1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q2"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q3"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"rounded bg-blue-100 p-1 text-center text-xs dark:bg-blue-300/20",children:"$2,300"}),e.jsx("div",{className:"rounded bg-blue-200 p-1 text-center text-xs dark:bg-blue-400/20",children:"$3,100"}),e.jsx("div",{className:"rounded bg-blue-300 p-1 text-center text-xs dark:bg-blue-500/20",children:"$4,200"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"rounded bg-green-100 p-1 text-center text-xs dark:bg-green-300/20",children:"$460"}),e.jsx("div",{className:"rounded bg-green-200 p-1 text-center text-xs dark:bg-green-400/20",children:"$620"}),e.jsx("div",{className:"rounded bg-green-300 p-1 text-center text-xs dark:bg-green-500/20",children:"$840"})]})]})]});case"detailColumns":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Columns"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields to display as columns in the detail table. No aggregation applied - shows raw values from the database."})]});default:return null}};return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:300,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.CircleHelp,{className:"size-4 text-muted-foreground hover:text-foreground"})}),e.jsx(s.TooltipContent,{side:"right",align:"start",className:"p-3",children:n()})]})})}const ao={groupBy:Fs,pivotBy:lt,metrics:Nn,detailColumns:s.Table2,sortBy:s.ArrowUpDown};function ys({zone:t,fields:n,label:a,placeholder:r,shouldShow:i,hasPivotColumns:d=!1,activeField:o=null}){const{isOver:c,setNodeRef:l}=s.useDroppable({id:t}),{updateSortByColumn:x}=s.useEditorActions(),p=s.useEditorStore(w=>w.card),h=s.useEditorStore(w=>w.card.type),u=n.length>0,y=C.useMemo(()=>!o||!c?!0:s.validateFieldForChartType(o,t,h).isValid,[o,c,t,h]),b=(w,E)=>{var A;!((A=p.config)!=null&&A.sortByColumns)||p.config.sortByColumns.findIndex(T=>T.id===w)===-1||x(p.id,w,{direction:E})};if(t==="sortBy"&&i===!1)return null;const m=t!=="sortBy"&&h!=="kpi",g=ao[t]||s.Plus;return e.jsxs("div",{className:"mb-3 w-full",children:[e.jsx("div",{className:"mb-1.5 flex items-center gap-2",children:e.jsx(s.Label,{className:s.cn("block text-sm font-medium text-foreground",{}),children:a})}),e.jsx("div",{ref:l,className:s.cn("rounded-lg border p-0.5 transition-colors duration-150",{"border-green-500 bg-green-50 shadow-[0_0_0_1px_rgba(34,197,94,0.18)] dark:bg-green-950":c&&y,"border-red-500 bg-red-50 shadow-[0_0_0_1px_rgba(239,68,68,0.18)] dark:bg-red-950":c&&!y,"border-solid border-border/55 bg-background":!c&&u,"min-h-[56px] border-dashed border-border/60 bg-background":!c&&!u}),children:n.length===0?e.jsxs("div",{className:"flex min-h-[56px] items-center justify-center gap-2 text-sm text-muted-foreground/85",children:[e.jsx(g,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground/80"}),e.jsx("span",{children:r}),m&&e.jsx(to,{concept:t})]}):e.jsx(s.SortableContext,{id:t,items:n.map(w=>w.id),strategy:s.verticalListSortingStrategy,children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:n.map((w,E)=>{const A=w.direction;return e.jsx("div",{className:"flex w-full items-center gap-2",children:e.jsx("div",{className:"flex-1",children:e.jsx(so,{field:w,zone:t,index:E,sortDirection:A,onSortDirectionChange:T=>b(w.id,T),hasPivotColumns:d,cardType:h})})},w.id)})})})})]})}function no({groupByFields:t,pivotByFields:n,metricsFields:a,sortByFields:r,detailFields:i,activeField:d}){var se,H,te,z;const[o,c]=C.useState(!1),l=s.useEditorStore(W=>{var le;return!!((le=W.card.customCardPreferences)!=null&&le.url)}),x=s.useEditorStore(W=>W.card),p=s.useEditorStore(W=>W.frame),h=s.findCustomVisualConfigCard(p,x),{manifest:u}=s.useCustomVisual(((se=h==null?void 0:h.customCardPreferences)==null?void 0:se.url)||""),y=(H=u==null?void 0:u.visuals)==null?void 0:H.find(W=>{var le;return W.name===((le=h==null?void 0:h.customCardPreferences)==null?void 0:le.componentName)}),b=s.resolveMultiInputType(h,y)==="multiple",m=b&&!!((te=h==null?void 0:h.customCardPreferences)!=null&&te.url),g=s.getConfigSlotExpectedType(y==null?void 0:y.slots),w=s.useEditorStore(W=>W.actions.updateCardConfig),E=s.useEditorStore(W=>W.actions.updateFrame),{scopedFields:V,refetch:A}=s.useScopedFields(),{userContext:T}=s.useCurrentUserInfo(),v=b&&(h==null?void 0:h.id)===x.id&&g?g:x==null?void 0:x.type,D=v==="detailTable",M=t.length>0||a.length>0||i.length>0,f=!D&&(v!=="kpi"||a.length<=2),I=!D,j=!D&&v!=="kpi",k=v!=="kpi"&&M,R=D,P="Drop sort fields here",N=(z=x.dataSource)==null?void 0:z.semanticDomainId,{promoteMetric:L}=s.usePromoteCalculatedMetricToDomain({domainId:N}),S=(T==null?void 0:T.type)==="organization",F=W=>{const le=p.calculatedFields||[],X=le.findIndex(Z=>Z.name===W.name&&Z.role===W.role),ne=X>=0?{...W,id:le[X].id}:W,ue=X>=0?le.map((Z,ce)=>ce===X?ne:Z):[...le,ne];E({calculatedFields:ue});const ee=s.getNewField(ne,"metrics",a),Ne=a.findIndex(Z=>Z.name===ee.name&&Z.role===ee.role),q=Ne>=0?a.map((Z,ce)=>ce===Ne?{...Z,...ee,id:Z.id}:Z):[...a,ee];w(x.id,{metricColumns:q})},O=async W=>{await L(W),A()},_=["pie","doughnut","polar","funnel","aggregateTable","bubble","scatter"].includes(v),Q=j&&!_,B=()=>v==="kpi"?{label:"Trend By",placeholder:"Drop trend field here"}:{label:"Rows",placeholder:"Drop dimensions here"},K=()=>v==="kpi"?{label:"Metric",placeholder:"Drop metric here"}:{label:"Metrics",placeholder:"Drop metrics here"};return e.jsxs(e.Fragment,{children:[e.jsxs(s.Accordion,{type:"single",collapsible:!0,defaultValue:"fields",className:"w-full space-y-2.5",children:[e.jsxs(s.AccordionItem,{value:"fields",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.List,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"FIELDS"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-3 pt-1.5",children:[f&&e.jsx(ys,{zone:"groupBy",fields:t,label:B().label,placeholder:B().placeholder,activeField:d}),Q&&e.jsx(ys,{zone:"pivotBy",fields:n,label:"Pivot Columns",placeholder:"Drop pivot fields here",activeField:d}),I&&e.jsx(ys,{zone:"metrics",fields:a,label:K().label,placeholder:K().placeholder,hasPivotColumns:n.length>0,activeField:d}),R&&e.jsx(ys,{zone:"detailColumns",fields:i,label:"Columns",placeholder:"Drop columns here"}),a.length>=1&&S&&e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:()=>c(!0),className:"mt-1.5 w-full justify-start border-border/60 border-dashed bg-background text-xs text-foreground/70 hover:bg-muted/40 hover:text-foreground",children:[e.jsx(s.Calculator,{className:"mr-2 h-4 w-4"}),"Create Metric"]}),k&&e.jsx(ys,{zone:"sortBy",fields:r,label:"Sort By",placeholder:P,activeField:d})]})]}),(!l||m)&&e.jsxs(s.AccordionItem,{value:"configuration",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Settings2,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"CHART SETTINGS"})]})}),e.jsx(s.AccordionContent,{className:"mb-2 rounded-md bg-muted/20 px-3 py-0.5",children:e.jsx(s.Accordion,{type:"single",collapsible:!0,className:"w-full",children:e.jsx(Pa,{mode:"config"})})})]}),(l||m)&&e.jsxs(s.AccordionItem,{value:"plugin",className:"rounded-xl border border-border/55 border-b-0 bg-card px-3 shadow-[0_1px_2px_rgba(15,23,42,0.04)]",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2.5 text-xs font-semibold tracking-wide text-foreground/70 outline-none ring-0 hover:no-underline focus:outline-none focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-foreground/60"}),e.jsx("span",{children:"COMPONENT SETTINGS"})]})}),e.jsx(s.AccordionContent,{className:"mb-2 rounded-md bg-muted/20 px-3 py-0.5",children:e.jsx(Ma,{})})]})]}),e.jsx(s.CalculatedFieldEditor,{open:o,onOpenChange:c,availableFields:V,initialFieldType:"metric",allowedFieldTypes:["metric"],onSave:W=>{W.role==="metric"&&w(x.id,{metricColumns:[...a,W]})},onSaveToDashboard:W=>{W.role==="metric"&&F(W)},onPromoteMetricToDomain:N&&S?O:void 0,domainId:N,cardId:x.id})]})}function ro({onEditJoins:t}){const n=s.useEditorStore(c=>c.card),{autoJoinMetadata:a}=s.useDashboardCardQuery(n);if(!(a!=null&&a.autoResolved))return null;const{resolvedJoinPlan:r}=a,i=(r==null?void 0:r.joins)||[];if(i.length===0)return null;const d=c=>!c||c.length===0?"No conditions":c.map(l=>{var u,y,b,m;const x=`${(u=l.source)==null?void 0:u.entityName}.${(y=l.source)==null?void 0:y.name}`,p=`${(b=l.target)==null?void 0:b.entityName}.${(m=l.target)==null?void 0:m.name}`,h=l.operator||"=";return`${x} ${h} ${p}`}).join(" AND "),o=c=>!c.joinKeyGroups||c.joinKeyGroups.length===0?"No conditions defined":c.joinKeyGroups.length===1?d(c.joinKeyGroups[0].keys):c.joinKeyGroups.map((l,x)=>({id:x,operator:l.operator,condition:d(l.keys)}));return e.jsx(s.Card,{className:"border-blue-500/20 bg-blue-50/15 shadow-sm dark:bg-blue-950/10",children:e.jsxs("div",{className:"flex items-center justify-between p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(En,{className:"size-4 text-blue-600/90 dark:text-blue-400"}),e.jsx("h3",{className:"text-xs font-semibold tracking-wide text-blue-900/90 dark:text-blue-100",children:"Resolved Joins"}),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Badge,{variant:"secondary",className:"cursor-help bg-blue-100/80 text-xs text-blue-700 dark:bg-blue-900/70 dark:text-blue-300",children:i.length})}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"max-w-md p-3",children:e.jsx("div",{className:"space-y-2",children:i.map((c,l)=>{const x=o(c),p=Array.isArray(x);return e.jsxs("div",{className:"rounded-md border border-border bg-background p-2",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"font-medium text-foreground",children:c.source.name}),e.jsx(s.ArrowRight,{className:"size-3 text-muted-foreground"}),e.jsx("span",{className:"font-medium text-foreground",children:c.target.name})]}),e.jsx(s.Badge,{variant:"outline",className:"border-green-500/40 bg-green-50/30 text-xs text-green-700 dark:bg-green-950/30 dark:text-green-300",children:c.joinType})]}),e.jsx("div",{className:"mt-1 space-y-1",children:p?x.map(h=>e.jsxs("div",{className:"rounded bg-muted/30 px-2 py-1",children:[e.jsx("code",{className:"block break-all text-xs text-muted-foreground",children:h.condition}),h.operator&&e.jsxs("span",{className:"ml-2 text-xs text-muted-foreground",children:["(",h.operator,")"]})]},h.id)):e.jsx("div",{className:"rounded bg-muted/30 px-2 py-1",children:e.jsx("code",{className:"block break-all text-xs text-muted-foreground",children:x})})})]},c.id||l)})})})]})})]}),t&&e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:t,className:"h-7 gap-1 p-2 text-xs text-blue-700/80 hover:text-blue-900 dark:text-blue-300 dark:hover:text-blue-100",children:e.jsx(s.SquarePen,{className:"size-3.5"})})]})})}const ba={getItem(t){if(typeof window>"u")return null;try{return localStorage.getItem(t)}catch(n){return console.warn(`Failed to read from localStorage (${t}):`,n),null}},setItem(t,n){if(!(typeof window>"u"))try{localStorage.setItem(t,n)}catch(a){console.warn(`Failed to write to localStorage (${t}):`,a)}}};function lo({selectedChart:t,onChartChange:n,groupByFields:a,pivotByFields:r,metricsFields:i,sortByFields:d,detailFields:o,activeField:c}){var f,I;const[l,x]=C.useState(()=>ba.getItem("chart-selector-expanded")==="true"),[p,h]=C.useState(!1),u=s.useEditorStore(j=>j.card),y=s.useEditorStore(j=>j.actions.updateCardConfig),b=a.length>0||r.length>0||i.length>0||o.length>0,{data:m,autoJoinMetadata:g}=s.useDashboardCardQuery(u),w=b||!!m,E=((f=u==null?void 0:u.config)==null?void 0:f.joinPlan)||(g!=null&&g.autoResolved?g.resolvedJoinPlan:{baseEntity:{type:"table",name:"",database:"",schema:"",connectionId:"",connectionType:"none",dialect:"none"},joins:[]}),V=((I=u==null?void 0:u.dataSource)==null?void 0:I.selectedEntities)||[],A=j=>{y(u.id,{...u==null?void 0:u.config,joinPlan:j}),h(!1)},T=()=>{y(u.id,{...u==null?void 0:u.config,joinPlan:void 0}),h(!1)},v=()=>{h(!1)},D=()=>{h(!0)};C.useEffect(()=>{ba.setItem("chart-selector-expanded",String(l))},[l]);const M=()=>{x(j=>!j)};return e.jsxs("div",{"data-content":"Chart Configuration Panel",className:"flex w-[350px] flex-col bg-background",children:[e.jsx("div",{className:"pl-2 pr-4 pt-4",children:e.jsxs("div",{className:"rounded-xl border border-border/60 bg-card p-3 shadow-[0_1px_2px_rgba(15,23,42,0.05)]",children:[e.jsx("div",{className:s.cn("overflow-hidden transition-all duration-300 ease-in-out",l?"max-h-[210px] opacity-100":"max-h-0 opacity-0"),children:l&&e.jsx(it,{selectedChart:t,onChartChange:n,variant:"outline"})}),e.jsx("div",{"data-content":"Chart Quick Selector",className:s.cn("flex items-center justify-center",{"mt-3":l,"mt-2":!l}),children:e.jsx(s.ChartQuickSelector,{selectedChart:t,onChartChange:n,isDropdownExpanded:l,onToggleDropdown:M})})]})}),w&&e.jsx("div",{className:"pl-2 pr-4 py-3",children:e.jsx("div",{className:"flex items-center justify-end",children:e.jsx(Ae.EditorClearButton,{label:"Reset",variant:"secondary",className:"h-7 px-2 text-xs"})})}),e.jsx(s.ScrollArea,{className:"min-h-0 w-full flex-1 basis-0",children:e.jsxs("div",{className:s.cn("space-y-3 pl-2 pr-4 pb-6",w?"pt-1":"pt-4"),children:[e.jsx(ro,{onEditJoins:D}),e.jsx(no,{groupByFields:a,pivotByFields:r,metricsFields:i,sortByFields:d,detailFields:o,activeField:c})]})}),e.jsx(wa,{open:p,onOpenChange:h,joinPlan:E,availableDataSources:V,onSave:A,onCancel:v,onRemove:T,children:e.jsx("div",{})})]})}function oo({initialFilters:t,availableFields:n}={}){const[a,r]=C.useState(t||{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[],groups:[]});s.useEditorStore(T=>T.card.dataSource);const{columns:i,isLoading:d}=s.useColumns(),c=n||i||[],l={id:"default",qualifiedFieldName:"default",name:"default",dataType:"string",label:"Default",entityId:"default",entityName:"Default",entityType:"table"},x=T=>{const v=D=>{if(D.id===T){const M=c[0]||l,f=s.getDataType(M.dataType)==="date";return{...D,conditions:[...D.conditions,{id:`condition-${Date.now()}`,field:M,operator:f?"between":"=",value:f?[]:""}]}}return{...D,groups:D.groups.map(v)}};r(v(a))},p=T=>{const v=D=>{if(D.id===T){const M=c[0]||l,f=s.getDataType(M.dataType)==="date";return{...D,groups:[...D.groups,{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[{id:`condition-${Date.now()}`,field:M,operator:f?"between":"=",value:f?[]:""}],groups:[]}]}}return{...D,groups:D.groups.map(v)}};r(v(a))},h=(T,v)=>{const D=M=>M.id===T?{...M,conditions:M.conditions.filter(f=>f.id!==v)}:{...M,groups:M.groups.map(D)};r(D(a))},u=(T,v)=>{const D=M=>M.id===T?{...M,groups:M.groups.filter(f=>f.id!==v)}:{...M,groups:M.groups.map(D)};r(D(a))},y=(T,v,D,M)=>{if(D==="field")throw new Error("Use a dedicated method to update the field property with a Field object");const f=I=>I.id===T?{...I,conditions:I.conditions.map(j=>j.id===v?{...j,[D]:M}:j)}:{...I,groups:I.groups.map(f)};r(f(a))},b=(T,v,D)=>{const M=f=>f.id===T?{...f,conditions:f.conditions.map(I=>I.id===v?{...I,...D}:I)}:{...f,groups:f.groups.map(M)};r(M(a))},m=(T,v)=>{const D=M=>M.id===T?{...M,logicalOperator:v}:{...M,groups:M.groups.map(D)};r(D(a))},g=(T,v)=>{const D=M=>M.id===T?{...M,negate:v}:{...M,groups:M.groups.map(D)};r(D(a))},w=(T,v,D)=>{const M=f=>f.id===T?{...f,conditions:s.arrayMove(f.conditions,v,D)}:{...f,groups:f.groups.map(M)};r(M(a))},E=(T,v,D)=>{const M=f=>f.id===T?{...f,groups:s.arrayMove(f.groups,v,D)}:{...f,groups:f.groups.map(M)};r(M(a))},V=T=>{if(!T||T.conditions.length===0&&T.groups.length===0)return"-- No filters defined";const v=M=>{let f="";typeof M.field=="object"?f=M.field.entityName?`${M.field.entityName}.${M.field.name}`:M.field.name:f=String(M.field);const I=M.operator;let j=M.value;if(M.field.dataType==="string"&&!["in","not in"].includes(M.operator))typeof j=="string"?j=`'${j}'`:Array.isArray(j)&&(j=`'${j.join(", ")}'`);else if(M.field.dataType==="date"||M.field.dataType==="datetime"||M.field.dataType==="timestamp")if(M.operator==="between"&&Array.isArray(j)&&j.length===2){const k=j[0]?`'${j[0]}'`:"NULL",R=j[1]?`'${j[1]}'`:"NULL";return`${f} BETWEEN ${k} AND ${R}`}else if((M.operator==="in"||M.operator==="not in")&&Array.isArray(j)){const k=j.map(R=>R?`'${R}'`:"NULL").join(", ");return`${f} ${I} (${k})`}else typeof j=="string"||j instanceof Date?j=`'${j}'`:Array.isArray(j)&&j.length>0&&(j=`'${j[0]}'`);else if(["in","not in"].includes(M.operator)){let k=[];Array.isArray(j)?k=j.map(R=>typeof R=="string"?`'${R}'`:String(R)):typeof j=="string"?k=j.split(",").map(R=>{const P=R.trim();return M.field.dataType==="string"?`'${P}'`:P}):typeof j=="number"&&(k=[String(j)]),j=`(${k.join(", ")})`}switch(I){case"contains":return typeof j=="string"?`${f} LIKE '%${j.replace(/'/g,"")}'`:`${f} LIKE '%${String(j)}'`;case"startsWith":return typeof j=="string"?`${f} LIKE '${j.replace(/'/g,"")}%'`:`${f} LIKE '${String(j)}%'`;case"endsWith":return typeof j=="string"?`${f} LIKE '%${j.replace(/'/g,"")}'`:`${f} LIKE '%${String(j)}'`;case"isNull":return`${f} IS NULL`;case"isNotNull":return`${f} IS NOT NULL`;default:return`${f} ${I} ${j}`}},D=M=>{const f=M.conditions.map(v),I=M.groups.map(P=>D(P)),j=[...f,...I].filter(Boolean);if(j.length===0)return"";const k=j.join(` ${M.logicalOperator} `),R=j.length>1?`(${k})`:k;return M.negate?`NOT ${R}`:R};return D(T)},A=a.conditions.length>0||a.groups.length>0;return{currentFilters:a,setCurrentFilters:r,availableFields:c,isLoading:d,addCondition:x,addGroup:p,removeCondition:h,removeGroup:u,updateCondition:y,updateConditionFields:b,updateGroupOperator:m,updateGroupNegate:g,reorderConditions:w,reorderGroups:E,generateSQLPreview:V,hasAnyFilters:A}}function io({children:t,className:n,delayDuration:a}){return e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{delayDuration:a,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:s.cn("w-[200px] overflow-hidden text-ellipsis whitespace-nowrap text-sm",n),children:t})}),e.jsx(s.PortalTooltipContent,{children:t})]})})}const co=t=>{if(t.qualifiedEntityName){const n=t.qualifiedEntityName.split(".");return n.length>1?n[0]:"default"}return"default"};function uo({value:t,onValueChange:n,availableFields:a,placeholder:r="Select field",className:i="w-64"}){const[d,o]=C.useState(!1),c=C.useMemo(()=>{const l={};return a.forEach(x=>{const p=co(x);l[p]||(l[p]={}),l[p][x.entityId]||(l[p][x.entityId]=[]),l[p][x.entityId].push(x)}),l},[a]);return e.jsxs(s.Popover,{modal:!0,open:d,onOpenChange:o,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":d,className:s.cn("justify-between",!t&&"text-muted-foreground",i),children:[t?e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(io,{children:[t.entityName,".",t.name]})}):r,e.jsx(s.ChevronsUpDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-80 p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search fields...",className:"h-9"}),e.jsx(s.CommandEmpty,{children:"No fields found."}),e.jsx(s.CommandList,{className:"max-h-80",children:Object.entries(c).map(([l,x])=>e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Database,{className:"h-3 w-3"}),l]}),children:Object.entries(x).map(([p,h])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 bg-gray-50/50 px-2 py-1 text-xs font-medium text-gray-600",children:[s.getEntityIcon(h[0].entityType,{size:"h-3 w-3"}),e.jsx("span",{children:h[0].entityName})]}),h.map((u,y)=>e.jsxs(s.CommandItem,{value:u.id,onSelect:()=>{n(u),o(!1)},className:"overflow-x-auto",children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",(t==null?void 0:t.id)===u.id?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"",children:u.name})}),e.jsx("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:u.description&&e.jsx("span",{children:u.description})})]})]},u.id+y))]},`${l}-${p}`))},l))})]})})]})}function xt(t){var m;const n=s.useEditorStore(g=>g.card),{authToken:a,tokenProps:r}=s.useSemaphorContext(),i=s.useEditorStore(g=>g.card.config),d=i==null?void 0:i.joinPlan,o={...t,alias:t.name,label:"value",role:"groupby"},c={...t,role:"metric",label:"count",alias:"count",aggregate:"COUNT"},l={...o,role:"sortby",direction:"asc"},x={joinPlan:d,groupByColumns:[o],metricColumns:[c],sortByColumns:[l]},p=((m=n.dataSource)==null?void 0:m.connectionId)||n.connectionId,{data:h,isPending:u,error:y}=s.useQuery({queryKey:["filterValues",t.entityId,t.name,t.qualifiedEntityName],queryFn:async()=>{try{return await s.postRequestRegular(`${r.apiServiceUrl}/v1/query`,(a==null?void 0:a.accessToken)||"",{connection_id:p,cardConfig:x,cardDataSource:n.dataSource})}catch(g){console.log(t),console.error("error",g)}},enabled:!!p,refetchOnMount:!0,refetchOnWindowFocus:!1});return{filterValues:((h==null?void 0:h.records)||[]).map(g=>({label:g.value||"BLANK",value:g.value||"BLANK",count:(g==null?void 0:g.count)||0})),isPending:u,error:y}}function mo({field:t,selected:n,onChange:a,placeholder:r="Select items...",className:i}){const[d,o]=at.useState(!1),{filterValues:c}=xt(t),l=p=>{a(n.filter(h=>h!==p))},x=p=>{n.includes(p)?a(n.filter(h=>h!==p)):a([...n,p])};return e.jsx("div",{className:s.cn("w-full",i),children:e.jsxs(s.Popover,{open:d,onOpenChange:o,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":d,className:"h-auto min-h-10 w-full justify-between p-2",children:[e.jsx("div",{className:"flex flex-1 flex-wrap gap-1",children:n.length>0?n.map(p=>{const h=c.find(u=>u.value===p);return e.jsxs(s.Badge,{variant:"secondary",className:"text-xs",children:[h==null?void 0:h.label,e.jsx("div",{className:"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2",onKeyDown:u=>{u.key==="Enter"&&l(p)},onMouseDown:u=>{u.preventDefault(),u.stopPropagation()},onClick:u=>{u.stopPropagation(),l(p)},children:e.jsx(s.X,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},p)}):e.jsx("span",{className:"text-muted-foreground",children:r})}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-fit overflow-auto p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No results found."}),e.jsx(s.CommandGroup,{children:c.map((p,h)=>e.jsxs(s.CommandItem,{onSelect:()=>x(p.value),children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",n.includes(p.value)?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex grow items-center justify-between gap-4",children:[e.jsx("span",{children:p.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:p.count})]})]},p.value+h))})]})]})})]})})}function xo({field:t,value:n,onChange:a,placeholder:r="Select value...",className:i}){const{filterValues:d,isPending:o,error:c}=xt(t);return o?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):c?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsxs(s.Select,{value:n,onValueChange:a,children:[e.jsx(s.SelectTrigger,{className:i||"flex-1",children:e.jsx(s.SelectValue,{placeholder:r,children:n})}),e.jsx(s.SelectContent,{children:d.map((l,x)=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:l.value,children:l.label},l.value+x))})]})}function ho({value:t,operator:n,onChange:a,className:r}){var y,b,m;const{tokenProps:i}=s.useSemaphorContext(),d=((b=(y=i==null?void 0:i.params)==null?void 0:y.calendarContext)==null?void 0:b.tz)||((m=i==null?void 0:i.params)==null?void 0:m.timezone),o=d||Intl.DateTimeFormat().resolvedOptions().timeZone,c=n==="between"||n==="not between",l=C.useMemo(()=>{if(!(!t||!c)&&Array.isArray(t)&&t.length===2){const g=t[0]?new Date(t[0]):void 0,w=t[1]?new Date(t[1]):void 0;if(g&&w)return{from:g,to:w}}},[t,c]),x=C.useMemo(()=>{if(!t||c)return;const g=Array.isArray(t)?t[0]:t;if(!g)return;const w=new Date(g);if(!isNaN(w.getTime()))return w},[t,c]),p=g=>n==="<="||n===">"?s.endOfDayInTimezone(g,o):s.startOfDayInTimezone(g,o),h=g=>{if(!g){a([]);return}if(g.from&&g.to){a([g.from.toISOString(),g.to.toISOString()]);return}a([])},u=g=>{if(!g){a("");return}const w=p(g);a(w.toISOString())};return e.jsx(s.DateRangePicker,{value:c?l:void 0,selectionMode:c?"range":"single",singleValue:c?void 0:x,onChange:h,onSingleChange:u,timezone:d,showRelativeTab:c,className:r,placeholder:"Select date..."})}const po=["=","!=",">",">=","<","<=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],fo=["=","!=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],go=["=","!=",">",">=","<","<=","in","not in","isNull","isNotNull"],jo=["=","!=","isNull","isNotNull"],bo=["between","=","!=","<","<=",">",">=","isNull","isNotNull"],vo={"=":"Equals","!=":"Not Equals",">":"Greater Than",">=":"Greater Than or Equal","<":"Less Than","<=":"Less Than or Equal",contains:"Contains",startsWith:"Starts With",endsWith:"Ends With",in:"In","not in":"Not In",between:"Between",isNull:"Is Null",isNotNull:"Is Not Null","not between":"Not Between"};function va(t){return vo[t]||s.titleCase(t)}function yo(t){switch(t){case"string":return fo;case"number":return go;case"boolean":return jo;case"date":return bo;default:return po}}function za({condition:t,index:n,groupId:a,groupLogicalOperator:r,onUpdateCondition:i,onRemoveCondition:d,onUpdateGroupOperator:o,availableFields:c,updateConditionFields:l}){const{attributes:x,listeners:p,setNodeRef:h,transform:u,transition:y,isDragging:b}=s.useSortable({id:t.id}),{isPending:m,error:g}=xt(t.field),w={transform:s.CSS.Transform.toString(u),transition:y};return e.jsxs("div",{ref:h,style:w,className:`mb-2 flex items-center gap-2 rounded p-2 hover:bg-muted/50 ${b?"z-50 opacity-50":""}`,children:[e.jsx("div",{...x,...p,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 flex-shrink-0 text-gray-400"})}),n>0&&e.jsxs(s.Select,{value:r,onValueChange:E=>o(a,E),children:[e.jsx(s.SelectTrigger,{className:"w-24",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"AND",children:"AND"}),e.jsx(s.SelectItem,{value:"OR",children:"OR"})]})]}),n===0&&e.jsx("div",{className:"w-24"}),e.jsx(uo,{value:t.field,onValueChange:E=>{const V=E,A=s.getDataType(V.dataType)==="date";l(a,t.id,{field:V,value:"",operator:A?"between":"="})},availableFields:c,placeholder:"Select field",className:"w-64"}),e.jsxs(s.Select,{value:t.operator,onValueChange:E=>{E==="in"||E==="not in"?l(a,t.id,{operator:E,value:[]}):E==="isNull"||E==="isNotNull"?l(a,t.id,{operator:E,value:null}):E==="between"||E==="not between"?l(a,t.id,{operator:E,value:[]}):l(a,t.id,{operator:E,value:""})},children:[e.jsx(s.SelectTrigger,{className:"w-32",children:e.jsx(s.SelectValue,{children:t.operator?va(t.operator):""})}),e.jsx(s.SelectContent,{children:yo(s.getDataType(t.field.dataType)).map(E=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:E,children:va(E)},E))})]}),t.operator==="isNull"||t.operator==="isNotNull"?e.jsx("div",{className:"flex-1"}):s.getDataType(t.field.dataType)==="string"?t.operator==="in"||t.operator==="not in"?m?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):g?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsx(mo,{field:t.field,selected:Array.isArray(t.value)&&t.value.every(E=>typeof E=="string")?t.value:[],onChange:E=>l(a,t.id,{value:E}),placeholder:`Select values for ${t.operator}...`,className:"flex-1"}):["contains","startsWith","endsWith"].includes(t.operator)?e.jsx(s.Input$1,{value:typeof t.value=="string"?t.value:"",onChange:E=>l(a,t.id,{value:E.target.value}),className:"flex-1",placeholder:t.operator.charAt(0).toUpperCase()+t.operator.slice(1)+"..."}):e.jsx(xo,{field:t.field,value:typeof t.value=="string"?t.value:"",onChange:E=>l(a,t.id,{value:E}),placeholder:"Select value...",className:"flex-1"}):s.getDataType(t.field.dataType)==="boolean"?e.jsxs(s.Select,{value:typeof t.value=="boolean"?String(t.value):"",onValueChange:E=>l(a,t.id,{value:E==="true"}),children:[e.jsx(s.SelectTrigger,{className:"flex-1",children:e.jsx(s.SelectValue,{placeholder:"Select value..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"true",children:"True"}),e.jsx(s.SelectItem,{value:"false",children:"False"})]})]}):s.getDataType(t.field.dataType)==="date"?e.jsx(ho,{value:t.value,operator:t.operator,onChange:E=>l(a,t.id,{value:E}),className:"flex-1"}):e.jsx(s.Input$1,{value:typeof t.value=="string"||typeof t.value=="number"?t.value:"",onChange:E=>i(a,t.id,"value",E.target.value),className:"flex-1",placeholder:t.operator==="in"||t.operator==="not in"?"value1, value2, value3":"Value"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 flex-shrink-0 p-0",onClick:()=>d(a,t.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]})}function No({group:t,depth:n,parentGroupId:a,onUpdateGroupOperator:r,onUpdateGroupNegate:i,onRemoveGroup:d,onUpdateCondition:o,onUpdateField:c,onRemoveCondition:l,onReorderConditions:x,onReorderGroups:p,onAddCondition:h,onAddGroup:u,availableFields:y,renderFilterGroup:b,updateConditionFields:m}){const{attributes:g,listeners:w,setNodeRef:E,transform:V,transition:A,isDragging:T}=s.useSortable({id:t.id}),v={transform:s.CSS.Transform.toString(V),transition:A},D=f=>{const{active:I,over:j}=f;if(j&&I.id!==j.id){const k=t.conditions.findIndex(P=>P.id===I.id),R=t.conditions.findIndex(P=>P.id===j.id);k!==-1&&R!==-1&&x(t.id,k,R)}},M=f=>{const{active:I,over:j}=f;if(j&&I.id!==j.id&&a){const k=t.groups.findIndex(P=>P.id===I.id),R=t.groups.findIndex(P=>P.id===j.id);k!==-1&&R!==-1&&p(a,k,R)}};return e.jsxs("div",{ref:E,style:v,className:`rounded-lg ${n>0?"mt-2 border border-border":""} ${T?"z-50 opacity-50":""}`,children:[n>0&&e.jsxs("div",{className:"flex items-center justify-between rounded-t-lg bg-muted p-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{...g,...w,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(s.Button,{variant:t.negate?"default":"outline",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>i(t.id,!t.negate),children:"NOT"}),e.jsxs(s.Select,{value:t.logicalOperator,onValueChange:f=>r(t.id,f),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"AND",children:"AND"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"OR",children:"OR"})]})]}),e.jsx("span",{className:"text-sm font-medium",children:"Group"})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>a&&d(a,t.id),children:e.jsx(s.Trash2,{className:"h-3 w-3"})})]}),e.jsxs("div",{className:`p-3 ${n>0?"":"px-0"}`,children:[e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:D,children:e.jsx(s.SortableContext,{items:t.conditions.map(f=>f.id),strategy:s.verticalListSortingStrategy,children:t.conditions.map((f,I)=>e.jsx(za,{condition:f,index:I,groupId:t.id,groupLogicalOperator:t.logicalOperator,onUpdateCondition:o,onUpdateField:c,onRemoveCondition:l,onUpdateGroupOperator:r,availableFields:y,updateConditionFields:m},f.id))})}),e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:M,children:e.jsx(s.SortableContext,{items:t.groups.map(f=>f.id),strategy:s.verticalListSortingStrategy,children:t.groups.map(f=>b(f,n+1,t.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>h(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>u(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})]})}function Co({filters:t,availableFields:n,onSave:a,onClearAll:r,onCancel:i}){const{currentFilters:d,availableFields:o,isLoading:c,addCondition:l,addGroup:x,removeCondition:p,removeGroup:h,updateCondition:u,updateConditionFields:y,updateGroupOperator:b,updateGroupNegate:m,reorderConditions:g,reorderGroups:w,generateSQLPreview:E,hasAnyFilters:V,setCurrentFilters:A}=oo({initialFilters:t,availableFields:n}),T=s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),[v,D]=C.useState(!1),M=(j,k,R)=>{const P=N=>N.id===j?{...N,conditions:N.conditions.map(L=>L.id===k?{...L,field:R,dataType:R.dataType}:L)}:{...N,groups:N.groups.map(P)};A(P(d))},f=(j,k=0,R)=>k===0?e.jsx("div",{className:"rounded-lg",children:e.jsxs("div",{className:"p-3 px-0",children:[e.jsx(s.DndContext,{sensors:T,collisionDetection:s.closestCenter,onDragEnd:P=>{const{active:N,over:L}=P;if(L&&N.id!==L.id){const S=j.conditions.findIndex(O=>O.id===N.id),F=j.conditions.findIndex(O=>O.id===L.id);S!==-1&&F!==-1&&g(j.id,S,F)}},children:e.jsx(s.SortableContext,{items:j.conditions.map(P=>P.id),strategy:s.verticalListSortingStrategy,children:j.conditions.map((P,N)=>e.jsx(za,{condition:P,index:N,groupId:j.id,groupLogicalOperator:j.logicalOperator,onUpdateCondition:u,onUpdateField:M,onRemoveCondition:p,onUpdateGroupOperator:b,availableFields:o,updateConditionFields:y},P.id))})}),e.jsx(s.DndContext,{sensors:T,collisionDetection:s.closestCenter,onDragEnd:P=>{const{active:N,over:L}=P;if(L&&N.id!==L.id){const S=j.groups.findIndex(O=>O.id===N.id),F=j.groups.findIndex(O=>O.id===L.id);S!==-1&&F!==-1&&w(j.id,S,F)}},children:e.jsx(s.SortableContext,{items:j.groups.map(P=>P.id),strategy:s.verticalListSortingStrategy,children:j.groups.map(P=>f(P,k+1,j.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",className:"h-7 text-xs",variant:"outline",onClick:()=>l(j.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),v&&e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>x(j.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})},j.id):e.jsx(No,{group:j,depth:k,parentGroupId:R,onUpdateGroupOperator:b,onUpdateGroupNegate:m,onRemoveGroup:h,onUpdateCondition:u,onUpdateField:M,onRemoveCondition:p,onReorderConditions:g,onReorderGroups:w,onAddCondition:l,onAddGroup:x,availableFields:o,renderFilterGroup:f,updateConditionFields:y},j.id),I=s.getFilterCount(t);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Card,{children:e.jsx(s.CardContent,{className:"p-4",children:e.jsxs("div",{className:"space-y-4",children:[c?e.jsxs("div",{className:"flex items-center justify-center p-4",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600"}),e.jsx("span",{className:"ml-2 text-sm text-gray-600",children:"Loading columns..."})]}):f(d),e.jsx("div",{className:"mt-4 border-t border-border pt-4",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.SmallSwitch,{id:"advanced-mode",checked:v,onCheckedChange:j=>D(j)}),e.jsx(s.Label,{htmlFor:"advanced-mode",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Advanced mode (enable grouping)"})]})}),V&&e.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[e.jsx("div",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"SQL WHERE Clause Preview"}),e.jsx("div",{className:"overflow-x-auto rounded-md border bg-muted p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:E(d)})})]})]})})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"outline",onClick:i,children:"Cancel"}),I>0&&e.jsx(s.Button,{variant:"outline",size:"sm",onClick:r,children:"Clear All"}),e.jsx(s.Button,{size:"sm",onClick:()=>a(V?d:null),children:"Apply Filters"})]})]})}function So({cardId:t,filters:n,onFiltersChange:a,onClearFilters:r,availableFields:i,isOpen:d,onOpenChange:o}){const c=x=>{a(t,x),o(!1)},l=()=>{r(t),o(!1)};return e.jsxs(s.Dialog,{modal:!1,open:d,onOpenChange:o,children:[d&&e.jsx("div",{className:"pointer-events-none fixed inset-0 z-40 bg-background/80 backdrop-blur-sm"}),e.jsxs(s.DialogContent,{className:"max-h-[80vh] max-w-4xl overflow-y-auto",onInteractOutside:x=>{x.preventDefault()},children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Card Filters"}),e.jsx(s.DialogDescription,{children:"Add filters to the card to limit the data that is displayed."})]}),e.jsx(Co,{filters:n,availableFields:i,onSave:c,onCancel:()=>o(!1),onClearAll:l})]})]})}function wo({activeCardId:t,sourceFields:n,getFieldsForContainer:a,setFieldsForContainer:r}){var E,V;const[i,d]=C.useState(null),o=s.useEditorStore(A=>A.card),c=s.useEditorStore(A=>A.actions.updateCardConfig),l=s.useEditorStore(A=>A.actions.setCardPreferences),x=(E=o==null?void 0:o.config)==null?void 0:E.joinPlan,p=C.useCallback(A=>A.entityName===s.CALCULATED_FIELD_ENTITY_MARKER||A.entityName==="calculated_fields"||A.qualifiedEntityName==="calculated_fields",[]),h=(V=o==null?void 0:o.dataSource)==null?void 0:V.semanticDomainId,{data:u}=s.useJoinabilityMap(h),y=[...n,...a("groupBy"),...a("pivotBy"),...a("metrics"),...a("sortBy"),...a("detailColumns")],b=C.useCallback(A=>A.startsWith("card-source-")?"source":A.startsWith("card-")?null:A.startsWith("source-")||n.find(T=>T.id===A)?"source":a("groupBy").find(T=>T.id===A)?"groupBy":a("metrics").find(T=>T.id===A)?"metrics":a("pivotBy").find(T=>T.id===A)?"pivotBy":a("sortBy").find(T=>T.id===A)?"sortBy":a("detailColumns").find(T=>T.id===A)?"detailColumns":null,[n,a]),m=C.useCallback(A=>{d(A.active.id)},[]),g=C.useCallback(A=>{var j;const{active:T,over:v}=A;if(!v||!t){d(null);return}const D=T.id,M=v.id,f=b(D),I=b(M)||M;if(I==="sortBy"){if(f==="source"){const k=n.find(P=>P.id===D);if(!k){d(null);return}if(!(a("groupBy").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName)||a("metrics").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName)||a("detailColumns").some(P=>P.name===k.name&&P.qualifiedEntityName===k.qualifiedEntityName))){d(null);return}}else if(f==="pivotBy"){d(null);return}else if(f!=="groupBy"&&f!=="metrics"&&f!=="sortBy"&&f!=="detailColumns"){d(null);return}}if(f==="source"&&I==="sortBy"){const k=[...n].find(L=>L.id===D);if(!k){d(null);return}const R=a("sortBy");if(s.fieldAlreadyExists(k,R)){d(null);return}const P=s.validateFieldForChartType(k,"sortBy",o.type);if(!P.isValid){s.ue.error("Invalid Field Type",{description:P.reason,position:"top-center",duration:3e3}),d(null);return}const N=s.getNewField(k,"sortBy",R);d(null),r("sortBy",[...R,N]);return}if(f==="source"&&I!=="source"&&I!=="sortBy"){const k=[...n].find(O=>O.id===D);if(!k){d(null);return}const R=[...a("groupBy"),...a("pivotBy"),...a("metrics"),...a("sortBy"),...a("detailColumns")],P=R.filter(O=>!p(O));if(P.length>0){const O=P[0].qualifiedEntityName;if(!O){d(null);return}if(O!==k.qualifiedEntityName&&!p(k)&&k.qualifiedEntityName)if(h&&(u!=null&&u.joinabilityMap)){if(s.calculateFieldState(k,{joinabilityMap:u.joinabilityMap,selectedFields:R,baseEntityName:(j=x==null?void 0:x.baseEntity)==null?void 0:j.name}).state==="unreachable"){s.showJoinRequiredNotification(),d(null);return}}else{if(!x){s.showJoinRequiredNotification(),d(null);return}if(!s.areEntitiesJoined(O,k.qualifiedEntityName,x)){s.showJoinRequiredNotification(),d(null);return}}}const N=a(I);if(s.fieldAlreadyExists(k,N)){d(null);return}const L=s.validateFieldForChartType(k,I,o.type);if(!L.isValid){s.ue.error("Invalid Field Type",{description:L.reason,position:"top-center",duration:3e3}),d(null);return}const S=s.getNewField(k,I,N),F=[...N,S];if(d(null),r(I,F),I==="metrics"&&t){const O=s.seedSemanticMetricFormatDefaults(o,S,o.preferences);O&&l(O),s.cleanupKpiMetricComparisonMode(o.type,o.config,c,t,F)}return}if(f&&I&&f!=="source"&&I!=="source"&&f!==I){const k=a(f),R=a(I),P=k.find(O=>O.id===D);if(!P){d(null);return}const N=s.validateFieldForChartType(P,I,o.type);if(!N.isValid){s.ue.error("Invalid Field Type",{description:N.reason,position:"top-center",duration:3e3}),d(null);return}const L=s.getNewField(P,I,R);if(d(null),I==="sortBy"){s.fieldAlreadyExists(P,R)||r(I,[...R,L]);return}const S=k.filter(O=>O.id!==D),F=[...R,L];if(r(f,S),r(I,F),I==="metrics"&&t){const O=s.seedSemanticMetricFormatDefaults(o,L,o.preferences);O&&l(O),s.cleanupKpiMetricComparisonMode(o.type,o.config,c,t,F)}return}if(f&&I&&f===I&&f!=="source"){const k=a(f),R=k.findIndex(N=>N.id===D),P=k.findIndex(N=>N.id===M);if(R!==P){const N=s.arrayMove(k,R,P);r(f,N)}}d(null)},[t,n,a,r,b,x,h,u,p,o,c,l]),w=i?y.find(A=>A.id===i):null;return{activeId:i,activeField:w,handleDragStart:m,handleDragEnd:g}}function To({activeView:t,onViewChange:n,splitViewEnabled:a}){const r=s.useEditorStore(c=>c.card),{config:i}=C.useContext(s.SemaphorContext).tokenProps,d=(i==null?void 0:i.showInfoTab)!==!1,o=()=>a?!1:!["table","pivotTable","aggregateTable","detailTable"].includes(r.type);return e.jsx(s.Tabs,{value:t,onValueChange:c=>n(c),children:e.jsxs(s.TabsList,{className:"h-9 w-fit gap-1 bg-background p-0",children:[e.jsx(s.TabsTrigger,{value:"chart",className:"rounded-md transition data-[state=active]:bg-muted",children:"Chart"}),o()&&e.jsx(s.TabsTrigger,{value:"table",className:"rounded-md transition data-[state=active]:bg-muted",children:"Results"}),r.type!=="kpi"&&d&&e.jsx(s.TabsTrigger,{value:"info",className:"rounded-md transition data-[state=active]:bg-muted",children:"Info"})]})})}const Eo=[{value:"10",label:"Top 10"},{value:"20",label:"Top 20"},{value:"50",label:"Top 50"},{value:"100",label:"Top 100"},{value:"200",label:"Top 200"},{value:"500",label:"Top 500"},{value:"1000",label:"Top 1000"}];function Io(){var l,x;const t=s.useEditorStore(p=>p.card),{updateRowLimit:n}=s.useEditorActions(),[a,r]=C.useState(!1),[i,d]=C.useState(""),o=p=>{if(p==="custom"){r(!0);return}r(!1),n(t.id,parseInt(p))},c=p=>{const h=p.target.value;d(h),h&&!isNaN(parseInt(h))&&n(t.id,parseInt(h))};return e.jsx("div",{className:"flex items-center gap-2",children:a?e.jsx(s.Input,{type:"number",value:i,onChange:c,className:"h-7 w-24",placeholder:"Enter limit",min:1}):e.jsxs(s.Select,{value:((x=(l=t.config)==null?void 0:l.rowLimit)==null?void 0:x.toString())||"100",onValueChange:o,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-24 border-none px-1 [&>svg]:hidden",children:e.jsx(s.SelectValue,{placeholder:"Select limit"})}),e.jsx(s.SelectContent,{children:Eo.map(p=>e.jsx(s.SelectItem,{value:p.value,children:p.label},p.value))})]})})}function ko({card:t,queryData:n,isLoading:a,isFetching:r,pagination:i,onPaginationChange:d,onSortChange:o,sortState:c,splitViewEnabled:l}){const x=C.useMemo(()=>(n==null?void 0:n.records)||[],[n==null?void 0:n.records]);return!l||["table","pivotTable","aggregateTable","detailTable"].includes(t.type)?e.jsx(rt,{}):e.jsxs(s.ResizablePanelGroup,{direction:"vertical",className:"h-full min-h-0 w-full",children:[e.jsx(s.ResizablePanel,{defaultSize:60,minSize:30,role:"chart-section",className:"flex flex-col pb-3",children:e.jsx(rt,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{defaultSize:40,minSize:20,role:"results-section",className:"flex flex-col",children:e.jsxs("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 py-4 pl-2 pr-4",children:[(a||r)&&(n==null?void 0:n.records)&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}),(n==null?void 0:n.records)&&e.jsx(s.TableVisual,{card:t,data:x,paginationMetadata:i,onPaginationChange:d,isLoading:a||r,onSortChange:o,sortState:c})]})})]})}const Do="semaphor-split-view-enabled";function Ao(){return Ta(Do,!0)}function Lo({activeView:t,onViewChange:n,onFiltersClick:a,activeCard:r,columns:i}){var z,W,le;const d=s.useEditorStore(X=>X.card),o=s.useDashboardStore(X=>X.filterValues),c=s.useDashboardStore(X=>X.selectedSheetId),l=s.useDashboardStore(X=>X.inlineFilterValuesMap[(r==null?void 0:r.id)||""]),{updateCardConfig:x,setCard:p,updateCardInFrame:h,setShowAIDialog:u}=s.useEditorActions(),y=s.useEditorStore(X=>X.showAIDialog),b=s.useEditorStore(X=>X.isDevMode),m=s.useDashboardStore(X=>X.isVisualEditing),[g,w]=C.useState(!1),[E,V]=C.useState(!1),[A,T]=C.useState(null),{config:v}=C.useContext(s.SemaphorContext).tokenProps,D=(v==null?void 0:v.showInfoTab)!==!1,M=(v==null?void 0:v.showQueryDebugTools)!==!1,[f,I]=Ao();s.useEditorStore(X=>{var ne;return!!((ne=X.card.customCardPreferences)!=null&&ne.url)});const{data:j,errorMessage:k,isLoading:R,isFetching:P,errorSql:N,pagination:L,refetch:S,comparisonMetadata:F,queryRequestPayload:O}=s.useDashboardCardQuery(r),_=C.useMemo(()=>(j==null?void 0:j.records)||[],[j==null?void 0:j.records]),[Q,B]=C.useState(!1);C.useEffect(()=>{P||B(!1)},[P]);const K=()=>{const X=!f;X&&t==="table"&&n("chart"),I(X)},se=(X,ne)=>{const ue={...r,paginationConfig:{page:X+1,pageSize:ne}};p(ue),h(ue)},H=X=>{if(!d.config)return;const ne=s.sortStateToSortByColumns(X,d.config.metricColumns,d.config.groupByColumns,d.config.detailColumns);x(d.id,{...d.config,sortByColumns:ne})},te=C.useMemo(()=>{var X;return s.sortByColumnsToSortState((X=d.config)==null?void 0:X.sortByColumns)},[(z=d.config)==null?void 0:z.sortByColumns]);return e.jsx("div",{className:s.cn("relative flex w-0 grow flex-col",{"border-l":y&&m}),children:e.jsxs("div",{className:"group/visualization relative flex h-full max-w-full grow flex-col pt-3",children:[e.jsxs("div",{className:"flex items-center gap-2 pl-2 pr-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t==="chart"&&y&&e.jsx("div",{className:"w-[200px]",children:e.jsx(it,{variant:b?"secondary":"ghost"})}),e.jsx(To,{activeView:t,onViewChange:n,splitViewEnabled:f}),e.jsx(s.FilterInfo,{cardId:r.id,cardFilters:(W=r.config)==null?void 0:W.filters,cardFilterCount:s.getFilterCount(((le=r.config)==null?void 0:le.filters)||null),onFiltersClick:a,inlineFilters:r.inlineFilters,inlineFilterValues:l,sheetId:c||""}),F&&d.type!=="table"&&e.jsx(s.ComparisonMetadataBadge,{metadata:F,variant:"compact"}),e.jsx("div",{className:"ml-2",children:e.jsx(Io,{})}),y&&e.jsx(Ae.EditorClearButton,{})]}),e.jsxs("div",{className:s.cn("flex grow items-center justify-end gap-2"),children:[e.jsx(s.IconButton,{tooltip:"Refresh",disabled:R||P,onClick:()=>{B(!0),S()},children:e.jsx(s.RefreshCcw,{className:s.cn("h-4 w-4",{"animate-spin":Q})})}),t==="chart"&&e.jsx(La,{showInlineFilters:!1,showDisplayOptions:!1}),!y&&e.jsx(s.IconButton,{onClick:()=>u(!y),tooltip:"AI",className:"h-8","aria-label":"AI",children:e.jsx(s.Sparkles,{className:"size-4"})}),t==="chart"&&e.jsxs(s.DropdownMenu,{modal:!1,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"More Options",className:"h-8","aria-label":"More options",children:e.jsx(s.EllipsisVertical,{className:"size-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-64",children:[e.jsx(s.DropdownMenuLabel,{children:"More Options"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:K,children:[f?e.jsx(un,{className:"mr-2 h-4 w-4"}):e.jsx(wn,{className:"mr-2 h-4 w-4"}),f?"Hide Results Table":"Show Results Table"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"px-1 py-1",children:[e.jsx(dt,{triggerVariant:"menu",className:"w-full"}),e.jsx(ct,{triggerVariant:"menu",className:"w-full"})]})]})]})]})]}),e.jsxs("div",{className:"mt-2 flex min-h-0 grow flex-col",children:[t==="chart"&&e.jsx("div",{className:s.cn("flex grow flex-col pb-4",{"pb-0":f&&!["table","pivotTable","aggregateTable","detailTable"].includes(r.type)}),children:e.jsx(ko,{card:r,queryData:j,isLoading:R,isFetching:P,pagination:L,onPaginationChange:se,onSortChange:H,sortState:te,splitViewEnabled:f})}),t==="table"&&(j==null?void 0:j.records)&&e.jsxs("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 py-4 pl-2 pr-4",children:[(R||P)&&(j==null?void 0:j.records)&&e.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-background/50",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}),e.jsx(s.TableVisual,{card:r,data:_,comparisonMetadata:F,paginationMetadata:L,onPaginationChange:se,isLoading:R||P,onSortChange:H,sortState:te})]}),t==="info"&&D&&e.jsx("div",{className:"flex min-h-0 flex-1 flex-col pb-4",children:e.jsx("div",{className:"flex min-h-0 flex-1 flex-col rounded-md bg-background pl-2 pr-4",children:k?e.jsx(ot,{error:k,errorSql:N,onSendFeedback:()=>{const X=s.prepareFeedbackData(s.FeedbackCategory.QUERY_GENERATION,{cardConfig:d.config,dataSource:r.dataSource,dashboardFilters:o,errorMessage:k,errorSql:N,generatedSql:j==null?void 0:j.sql});T(X),V(!0)},onOpenInEditor:()=>{u(!0),setTimeout(()=>{const X=s.useEditorStore.getState().actions;X.setIsDevMode(!0),X.setCardSql(N||""),setTimeout(()=>{X.setRunSql(!0)},100)},100)}}):(j==null?void 0:j.sql)&&e.jsx(ka,{sql:j.sql,showCardDetails:!0,debugPayloads:M?{queryRequest:O,queryResponse:j,columns:i,dashboardFilters:o}:void 0})})})]}),A&&e.jsx(s.FeedbackDialog,{open:E,onOpenChange:V,feedbackData:A})]})})}function Mo({activeField:t}){const[n,a]=C.useState(!0);return C.useEffect(()=>{t&&a(!0)},[t]),t?e.jsxs("div",{className:`flex max-w-[300px] items-center gap-2 rounded-lg border border-blue-500 bg-background p-2 shadow-lg transition-all duration-200 ${n?"scale-100 opacity-100":"scale-95 opacity-0"}`,children:[e.jsx(s.GripVertical,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),e.jsx(ut,{dataType:t.dataType}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm dark:text-muted-foreground",children:t.label||t.name})]}):null}const Oo=()=>{const t=console.error;console.error=(...r)=>{r.length>0&&typeof r[0]=="string"&&r[0].includes("ResizeObserver loop completed with undelivered notifications")||t.apply(console,r)};const n=r=>{if(r.message&&(r.message.includes("ResizeObserver loop completed with undelivered notifications")||r.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),r.stopPropagation(),!1},a=r=>{var i;if((i=r.reason)!=null&&i.message&&(r.reason.message.includes("ResizeObserver loop completed with undelivered notifications")||r.reason.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),!1};return window.addEventListener("error",n,!0),window.addEventListener("unhandledrejection",a,!0),()=>{console.error=t,window.removeEventListener("error",n,!0),window.removeEventListener("unhandledrejection",a,!0)}};function Ro({column:t,isSelected:n,onSelect:a,availableFields:r,width:i,onWidthChange:d}){var O,_,Q;const o=s.useEditorStore(B=>B.card),{updateCardConfig:c,removeGroupByColumn:l,removeMetricColumn:x,updateFilters:p}=s.useEditorActions(),[h,u]=C.useState(!1),[y,b]=C.useState(!1),m=C.useRef(null),g=C.useCallback(B=>{B.preventDefault(),B.stopPropagation(),b(!0),m.current={startX:B.clientX,startWidth:i||150};const K=H=>{if(!m.current)return;const te=H.clientX-m.current.startX,z=Math.max(80,m.current.startWidth+te);d==null||d(t.id,z)},se=()=>{b(!1),m.current=null,document.removeEventListener("mousemove",K),document.removeEventListener("mouseup",se)};document.addEventListener("mousemove",K),document.addEventListener("mouseup",se)},[i,t.id,d]),w=(O=o==null?void 0:o.config)==null?void 0:O.filters,E=(_=w==null?void 0:w.conditions)==null?void 0:_.some(B=>B.field.name===t.name&&B.field.qualifiedEntityName===t.qualifiedEntityName),V=B=>{B?p(o.id,B):c(o.id,{filters:void 0})},{attributes:A,listeners:T,setNodeRef:v,transform:D,transition:M,isDragging:f}=s.useSortable({id:t.id}),I={transform:s.CSS.Transform.toString(D),transition:M},j=s.getDataType(t.dataType),k=Fo(j),R=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.sortByColumns)||[],K=B.findIndex(H=>H.name===t.name);if(K!==-1){const H=[...B];H[K]={...H[K],direction:"asc"},c(o.id,{sortByColumns:H})}else c(o.id,{sortByColumns:[...B,{...t,id:`sort-${t.id}`,role:"sortby",direction:"asc"}]})},P=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.sortByColumns)||[],K=B.findIndex(H=>H.name===t.name);if(K!==-1){const H=[...B];H[K]={...H[K],direction:"desc"},c(o.id,{sortByColumns:H})}else c(o.id,{sortByColumns:[...B,{...t,id:`sort-${t.id}`,role:"sortby",direction:"desc"}]})},N=()=>{var se;const B=((se=o==null?void 0:o.config)==null?void 0:se.groupByColumns)||[];if(!B.some(H=>H.name===t.name)){const H={...t,id:`groupby-${t.id}-${Date.now()}`,role:"groupby"};c(o.id,{groupByColumns:[...B,H]})}},L=B=>{var H;const K=((H=o==null?void 0:o.config)==null?void 0:H.metricColumns)||[];if(!K.some(te=>te.name===t.name&&te.aggregate===B)){const te={...t,id:`metric-${t.id}-${B}-${Date.now()}`,label:`${B} of ${t.label||t.name}`,role:"metric",aggregate:B};c(o.id,{metricColumns:[...K,te]})}},S=()=>{t.role==="groupby"?l(o.id,t.id):t.role==="metric"&&x(o.id,t.id)},F={...I,width:i?`${i}px`:void 0,minWidth:i?`${i}px`:"120px"};return e.jsxs("th",{ref:v,style:F,className:s.cn("group relative border-r border-border bg-background px-1 py-0",f&&"opacity-50",n&&"bg-primary/10",y&&"select-none"),children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("button",{...A,...T,className:"cursor-grab p-1 text-muted-foreground opacity-0 transition-opacity hover:text-foreground group-hover:opacity-100 active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-3 w-3"})}),e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsxs("button",{onClick:a,className:s.cn("flex flex-1 items-center justify-between gap-1 rounded px-2 py-2 text-left text-sm font-medium transition-colors hover:bg-muted/50",n&&"bg-primary/10"),children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(k,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"truncate",children:t.label||t.name}),t.role==="metric"&&t.aggregate&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",t.aggregate,")"]}),E&&e.jsx(s.Filter,{className:"h-3 w-3 text-primary"})]}),e.jsx(s.ChevronDown,{className:"h-3 w-3 text-muted-foreground"})]})}),e.jsxs(s.DropdownMenuContent,{align:"start",className:"w-48",children:[e.jsxs(s.DropdownMenuItem,{onClick:()=>u(!0),children:[e.jsx(s.Filter,{className:s.cn("mr-2 h-4 w-4",E&&"text-primary")}),E?"Edit Filter":"Filter"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:R,children:[e.jsx(on,{className:"mr-2 h-4 w-4"}),"Sort A → Z"]}),e.jsxs(s.DropdownMenuItem,{onClick:P,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),"Sort Z → A"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuSub,{children:[e.jsxs(s.DropdownMenuSubTrigger,{children:[e.jsx(s.Calculator,{className:"mr-2 h-4 w-4"}),"Summarize"]}),e.jsxs(s.DropdownMenuSubContent,{children:[e.jsx(s.DropdownMenuItem,{onClick:()=>L("SUM"),children:"Sum"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("AVG"),children:"Average"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("COUNT"),children:"Count"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("DISTINCT"),children:"Count Distinct"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("MIN"),children:"Min"}),e.jsx(s.DropdownMenuItem,{onClick:()=>L("MAX"),children:"Max"})]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:N,children:[e.jsx(Fs,{className:"mr-2 h-4 w-4"}),"Group by this column"]}),e.jsxs(s.DropdownMenuItem,{disabled:!0,children:[e.jsx(lt,{className:"mr-2 h-4 w-4"}),"Pivot by this column"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{disabled:!0,children:[e.jsx(s.EyeOff,{className:"mr-2 h-4 w-4"}),"Hide column"]}),e.jsxs(s.DropdownMenuItem,{onClick:S,className:"text-destructive focus:text-destructive",children:[e.jsx(s.Trash2,{className:"mr-2 h-4 w-4"}),"Remove column"]})]})]})]}),e.jsx("div",{onMouseDown:g,className:s.cn("absolute right-0 top-0 h-full w-1 cursor-col-resize bg-transparent hover:bg-primary/50",y&&"bg-primary")}),e.jsx(Ba,{open:h,onOpenChange:u,availableFields:r.length>0?r:[t],existingFilters:w,editingCondition:E?(Q=w==null?void 0:w.conditions)==null?void 0:Q.find(B=>B.field.name===t.name&&B.field.qualifiedEntityName===t.qualifiedEntityName):void 0,onSave:V})]})}function Fo(t){switch(t){case"number":return s.Hash;case"date":return s.Calendar;case"string":default:return s.Type}}function Po({selectedColumn:t,onColumnSelect:n,isLoading:a=!1,sourceFields:r=[]}){var M,f,I,j;const i=s.useEditorStore(k=>k.card),{updateCardConfig:d}=s.useEditorActions(),[o,c]=C.useState(null),[l,x]=C.useState({}),[p,h]=C.useState(!1),u=C.useMemo(()=>{var P,N;const k=((P=i==null?void 0:i.config)==null?void 0:P.groupByColumns)||[],R=((N=i==null?void 0:i.config)==null?void 0:N.metricColumns)||[];return[...k,...R]},[(M=i==null?void 0:i.config)==null?void 0:M.groupByColumns,(f=i==null?void 0:i.config)==null?void 0:f.metricColumns]),y=C.useMemo(()=>{const k=new Set(u.map(R=>`${R.qualifiedEntityName}.${R.name}`));return r.filter(R=>!k.has(`${R.qualifiedEntityName}.${R.name}`))},[r,u]),{data:b,isLoading:m}=s.useDashboardCardQuery(i),g=(b==null?void 0:b.records)||[],w=C.useCallback((k,R)=>{x(P=>({...P,[k]:R}))},[]),E=C.useCallback(k=>{var L,S;const R=s.getDataType(k.dataType),P=((L=i==null?void 0:i.config)==null?void 0:L.groupByColumns)||[],N=((S=i==null?void 0:i.config)==null?void 0:S.metricColumns)||[];if(R==="number"){const F={...k,id:`metric-${k.id}-${Date.now()}`,role:"metric",aggregate:"SUM"};d(i.id,{metricColumns:[...N,F]})}else{const F={...k,id:`groupby-${k.id}-${Date.now()}`,role:"groupby"};d(i.id,{groupByColumns:[...P,F]})}h(!1)},[(I=i==null?void 0:i.config)==null?void 0:I.groupByColumns,(j=i==null?void 0:i.config)==null?void 0:j.metricColumns,i.id,d]),V=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),A=k=>{c(k.active.id)},T=k=>{const{active:R,over:P}=k;if(c(null),!P||R.id===P.id)return;const N=u.findIndex(S=>S.id===R.id),L=u.findIndex(S=>S.id===P.id);if(N!==-1&&L!==-1){const S=s.arrayMove(u,N,L),F=S.filter(_=>_.role==="groupby"),O=S.filter(_=>_.role==="metric");d(i.id,{groupByColumns:F,metricColumns:O})}},v=o?u.find(k=>k.id===o):null,D=k=>{let R="";for(;k>=0;)R=String.fromCharCode(k%26+65)+R,k=Math.floor(k/26)-1;return R};return a?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(s.LoaderCircle,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):u.length===0?e.jsx("div",{className:"flex h-full flex-col items-center justify-center gap-4 p-8 text-center",children:e.jsxs("div",{className:"rounded-lg border-2 border-dashed border-muted-foreground/25 p-12",children:[e.jsx("h3",{className:"text-lg font-medium text-muted-foreground",children:"No columns selected"}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground/75",children:"Select columns from the panel on the right to build your table"})]})}):e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsxs(s.DndContext,{sensors:V,collisionDetection:s.closestCenter,onDragStart:A,onDragEnd:T,children:[e.jsxs("table",{className:"w-full border-collapse",children:[e.jsxs("thead",{children:[e.jsxs("tr",{className:"border-b border-border bg-muted/30",children:[e.jsx("th",{className:"sticky left-0 z-20 w-12 border-r border-border bg-muted/50 px-2 py-1 text-center text-xs font-medium text-muted-foreground"}),e.jsx(s.SortableContext,{items:u.map(k=>k.id),strategy:s.horizontalListSortingStrategy,children:u.map((k,R)=>e.jsx("th",{style:{width:l[k.id]?`${l[k.id]}px`:void 0,minWidth:l[k.id]?`${l[k.id]}px`:"120px"},className:"border-r border-border bg-muted/30 px-2 py-1 text-center text-xs font-medium text-muted-foreground",children:D(R)},`letter-${k.id}`))}),e.jsx("th",{className:"w-10 border-r border-border bg-muted/30 px-2 py-1"})]}),e.jsxs("tr",{className:"border-b-2 border-border bg-background",children:[e.jsx("th",{className:"sticky left-0 z-20 w-12 border-r border-border bg-muted/50 px-2 py-2 text-center text-xs font-medium text-muted-foreground",children:"#"}),e.jsx(s.SortableContext,{items:u.map(k=>k.id),strategy:s.horizontalListSortingStrategy,children:u.map(k=>e.jsx(Ro,{column:k,isSelected:(t==null?void 0:t.id)===k.id,onSelect:()=>n(k),availableFields:r,width:l[k.id],onWidthChange:w},k.id))}),e.jsx("th",{className:"w-10 border-r border-border bg-background px-1 py-2",children:e.jsxs(s.Popover,{open:p,onOpenChange:h,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",title:"Add column",children:e.jsx(s.Plus,{className:"h-4 w-4"})})}),e.jsx(s.PopoverContent,{className:"w-[280px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search columns..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No columns available."}),e.jsx(s.CommandGroup,{heading:"Available Columns",children:y.map(k=>{const R=s.getDataType(k.dataType),P=R==="number"?s.Hash:R==="date"?s.Calendar:s.Type;return e.jsxs(s.CommandItem,{value:k.label||k.name,onSelect:()=>E(k),children:[e.jsx(P,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm",children:k.label||k.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:k.entityName})]})]},k.id)})})]})]})})]})})]})]}),e.jsx("tbody",{children:m?e.jsx("tr",{children:e.jsx("td",{colSpan:u.length+2,className:"h-32 text-center",children:e.jsx(s.LoaderCircle,{className:"mx-auto h-6 w-6 animate-spin text-muted-foreground"})})}):g.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:u.length+2,className:"h-32 text-center text-muted-foreground",children:"No data available"})}):g.slice(0,100).map((k,R)=>e.jsxs("tr",{className:s.cn("border-b border-border transition-colors hover:bg-muted/50",R%2===0?"bg-background":"bg-muted/20"),children:[e.jsx("td",{className:"sticky left-0 z-10 w-12 border-r border-border bg-muted/50 px-2 py-2 text-center text-xs font-medium text-muted-foreground",children:R+1}),u.map(P=>{const N=k[P.name]??k[P.label??""];return e.jsx("td",{style:{width:l[P.id]?`${l[P.id]}px`:void 0,minWidth:l[P.id]?`${l[P.id]}px`:"120px"},className:s.cn("border-r border-border px-3 py-2 text-sm",(t==null?void 0:t.id)===P.id&&"bg-primary/5"),children:e.jsx("span",{className:"block truncate",children:Vo(N,P)})},`${R}-${P.id}`)}),e.jsx("td",{className:"w-10 border-r border-border"})]},R))})]}),e.jsx(s.DragOverlay,{children:v&&e.jsx("div",{className:"rounded border border-primary bg-background px-3 py-2 text-sm font-medium shadow-lg",children:v.label||v.name})})]})}),e.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-muted/30 px-4 py-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:["Showing ",Math.min(g.length,100)," of ",g.length," rows"]}),e.jsxs("span",{children:[u.length," columns"]})]})]})}function Vo(t,n){if(t==null)return"—";if(typeof t=="number")return n.role==="metric"?new Intl.NumberFormat("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}).format(t):t.toString();if(t instanceof Date||typeof t=="string"&&!isNaN(Date.parse(t))){const a=new Date(t);if(!isNaN(a.getTime()))return a.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}return String(t)}function Bo({entityGroups:t,isLoading:n=!1}){var V,A;const a=s.useEditorStore(T=>T.card),{updateCardConfig:r,removeGroupByColumn:i,removeMetricColumn:d}=s.useEditorActions(),[o,c]=C.useState(!0),[l,x]=C.useState(""),[p,h]=C.useState(new Set),u=((V=a==null?void 0:a.config)==null?void 0:V.groupByColumns)||[],y=((A=a==null?void 0:a.config)==null?void 0:A.metricColumns)||[],b=T=>{const v=new Set(p);v.has(T)?v.delete(T):v.add(T),h(v)},m=T=>u.some(v=>v.name===T.name&&v.qualifiedEntityName===T.qualifiedEntityName)||y.some(v=>v.name===T.name&&v.qualifiedEntityName===T.qualifiedEntityName),g=(T,v)=>{if(v)if(s.getDataType(T.dataType)==="number"){const M={...T,id:`metric-${T.id}-${Date.now()}`,role:"metric",aggregate:"SUM"};r(a.id,{metricColumns:[...y,M]})}else{const M={...T,id:`groupby-${T.id}-${Date.now()}`,role:"groupby"};r(a.id,{groupByColumns:[...u,M]})}else{const D=u.findIndex(f=>f.name===T.name&&f.qualifiedEntityName===T.qualifiedEntityName),M=y.findIndex(f=>f.name===T.name&&f.qualifiedEntityName===T.qualifiedEntityName);D!==-1&&i(a.id,u[D].id),M!==-1&&d(a.id,y[M].id)}},w=T=>{if(!l)return T;const v=l.toLowerCase();return T.filter(D=>D.name.toLowerCase().includes(v)||D.label&&D.label.toLowerCase().includes(v))},E=T=>{switch(s.getDataType(T)){case"number":return s.Hash;case"date":return s.Calendar;default:return s.Type}};return o?e.jsxs("div",{className:"flex h-full w-72 flex-col border-l border-border bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[e.jsx("span",{className:"text-sm font-medium",children:"Columns"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",onClick:()=>c(!1),title:"Close panel",children:e.jsx(jn,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"border-b border-border p-2",children:e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input,{placeholder:"Search columns...",value:l,onChange:T=>x(T.target.value),className:"h-8 pl-8 text-sm"})]})}),(u.length>0||y.length>0)&&e.jsxs("div",{className:"border-b border-border",children:[u.length>0&&e.jsxs(s.Collapsible,{defaultOpen:!0,children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 px-3 py-2 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:"h-3.5 w-3.5 transition-transform duration-200 [[data-state=open]>&]:rotate-90"}),e.jsx(Fs,{className:"h-3.5 w-3.5 text-blue-500"}),e.jsx("span",{children:"Groupings"}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:u.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"space-y-0.5 px-3 pb-2",children:u.map(T=>{const v=E(T.dataType);return e.jsxs("div",{className:"group flex items-center gap-2 rounded px-2 py-1.5 text-sm hover:bg-muted/50",children:[e.jsx(s.GripVertical,{className:"h-3 w-3 cursor-grab text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100"}),e.jsx(v,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:T.label||T.name}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:()=>i(a.id,T.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},T.id)})})})]}),y.length>0&&e.jsxs(s.Collapsible,{defaultOpen:!0,children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 px-3 py-2 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:"h-3.5 w-3.5 transition-transform duration-200 [[data-state=open]>&]:rotate-90"}),e.jsx(s.Calculator,{className:"h-3.5 w-3.5 text-green-500"}),e.jsx("span",{children:"Metrics"}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:y.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"space-y-0.5 px-3 pb-2",children:y.map(T=>{const v=E(T.dataType);return e.jsxs("div",{className:"group flex items-center gap-2 rounded px-2 py-1.5 text-sm hover:bg-muted/50",children:[e.jsx(s.GripVertical,{className:"h-3 w-3 cursor-grab text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100"}),e.jsx(v,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:T.label||T.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:T.aggregate}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:()=>d(a.id,T.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},T.id)})})})]})]}),e.jsx(s.ScrollArea,{className:"flex-1",children:e.jsx("div",{className:"p-2",children:n?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx("div",{className:"h-6 w-6 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"})}):t.length===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:"No columns available"}):t.map(T=>{const v=w(T.columns);if(v.length===0)return null;const D=p.has(T.entityId)||l.length>0;return e.jsxs(s.Collapsible,{open:D,onOpenChange:()=>b(T.entityId),children:[e.jsxs(s.CollapsibleTrigger,{className:"flex w-full items-center gap-2 rounded px-2 py-1.5 text-sm font-medium hover:bg-muted/50",children:[e.jsx(s.ChevronRight,{className:s.cn("h-3.5 w-3.5 transition-transform duration-200",D&&"rotate-90")}),e.jsx(s.Table2,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate text-left",children:T.label||T.entityName}),e.jsx("span",{className:"text-xs text-muted-foreground",children:v.length})]}),e.jsx(s.CollapsibleContent,{children:e.jsx("div",{className:"ml-4 space-y-0.5 border-l border-border pl-2",children:v.map(M=>{const f=E(M.dataType),I=m(M);return e.jsxs("label",{className:s.cn("flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm transition-colors hover:bg-muted/50",I&&"bg-primary/5"),children:[e.jsx(s.Checkbox,{checked:I,onCheckedChange:j=>g(M,j),className:"h-3.5 w-3.5"}),e.jsx(f,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"flex-1 truncate",children:M.label||M.name})]},M.id)})})})]},T.entityId)})})})]}):e.jsx("div",{className:"flex h-full items-start border-l border-border bg-muted/30 p-2",children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>c(!0),title:"Open panel",children:e.jsx(bn,{className:"h-4 w-4"})})})}const zo=[{name:"SUM",description:"Sum of values",syntax:"SUM([column])"},{name:"AVG",description:"Average of values",syntax:"AVG([column])"},{name:"COUNT",description:"Count of rows",syntax:"COUNT([column])"},{name:"COUNTD",description:"Count distinct values",syntax:"COUNTD([column])"},{name:"MIN",description:"Minimum value",syntax:"MIN([column])"},{name:"MAX",description:"Maximum value",syntax:"MAX([column])"},{name:"IF",description:"Conditional logic",syntax:"IF(condition, then, else)"},{name:"CASE",description:"Multiple conditions",syntax:"CASE WHEN ... THEN ... END"},{name:"CONCAT",description:"Concatenate text",syntax:"CONCAT([col1], [col2])"},{name:"ROUND",description:"Round number",syntax:"ROUND([column], decimals)"},{name:"FLOOR",description:"Round down",syntax:"FLOOR([column])"},{name:"CEIL",description:"Round up",syntax:"CEIL([column])"},{name:"ABS",description:"Absolute value",syntax:"ABS([column])"},{name:"DATEPART",description:"Extract date part",syntax:"DATEPART(year, [date])"},{name:"DATEDIFF",description:"Difference between dates",syntax:"DATEDIFF(day, [date1], [date2])"}];function qo({value:t,onChange:n,onSubmit:a,onCancel:r,selectedColumn:i,availableColumns:d}){const[o,c]=C.useState(!1),[l,x]=C.useState("column"),p=C.useRef(null);C.useEffect(()=>{const b=m=>{m.key==="Escape"&&t?r():m.key==="Enter"&&t&&!o&&a(t)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[t,r,a,o]);const h=b=>{const m=`[${b.label||b.name}]`,g=p.current;if(g){const w=g.selectionStart||0,E=g.selectionEnd||0,V=t.slice(0,w)+m+t.slice(E);n(V),setTimeout(()=>{g.setSelectionRange(w+m.length,w+m.length),g.focus()},0)}else n(t+m);c(!1)},u=b=>{const m=p.current;if(m){const g=m.selectionStart||0,w=m.selectionEnd||0,E=t.slice(0,g)+b.syntax+t.slice(w);n(E),setTimeout(()=>{m.setSelectionRange(g+b.name.length+1,g+b.syntax.length-1),m.focus()},0)}else n(t+b.syntax);c(!1)},y=b=>{switch(s.getDataType(b)){case"number":return s.Hash;case"date":return s.Calendar;default:return s.Type}};return e.jsxs("div",{className:"flex items-center gap-2 border-b border-border bg-muted/30 px-3 py-1.5",children:[e.jsx("div",{className:"flex min-w-[100px] items-center justify-center rounded border border-border bg-background px-2 py-1 text-xs font-medium text-muted-foreground",children:i?e.jsx("span",{className:"truncate",children:i.label||i.name}):e.jsx("span",{children:"—"})}),e.jsxs(s.Popover,{open:o&&l==="function",onOpenChange:b=>{c(b),b&&x("function")},children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",title:"Insert function",children:e.jsx(Sn,{className:"h-4 w-4"})})}),e.jsx(s.PopoverContent,{className:"w-[300px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search functions..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No functions found."}),e.jsx(s.CommandGroup,{heading:"Functions",children:zo.map(b=>e.jsx(s.CommandItem,{value:b.name,onSelect:()=>u(b),children:e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-sm font-medium",children:b.name}),e.jsx("span",{className:"text-xs text-muted-foreground",children:b.description})]}),e.jsx("span",{className:"font-mono text-xs text-muted-foreground/75",children:b.syntax})]})},b.name))})]})]})})]}),e.jsxs(s.Popover,{open:o&&l==="column",onOpenChange:b=>{c(b),b&&x("column")},children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1 px-2 text-xs text-muted-foreground hover:text-foreground",title:"Insert column reference",children:[e.jsx("span",{children:"Columns"}),e.jsx(s.ChevronDown,{className:"h-3 w-3"})]})}),e.jsx(s.PopoverContent,{className:"w-[250px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search columns..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No columns found."}),e.jsx(s.CommandGroup,{heading:"Available Columns",children:d.map(b=>{const m=y(b.dataType);return e.jsxs(s.CommandItem,{value:b.label||b.name,onSelect:()=>h(b),children:[e.jsx(m,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"truncate",children:b.label||b.name})]},b.id)})})]})]})})]}),e.jsx("div",{className:"relative flex-1",children:e.jsx(s.Input,{ref:p,value:t,onChange:b=>n(b.target.value),placeholder:"Enter a formula or select a column...",className:"h-7 border-border bg-background font-mono text-sm"})}),t&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-destructive hover:bg-destructive/10 hover:text-destructive",onClick:r,title:"Cancel (Esc)",children:e.jsx(s.X,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0 text-green-600 hover:bg-green-600/10 hover:text-green-600",onClick:()=>a(t),title:"Apply (Enter)",children:e.jsx(s.Check,{className:"h-4 w-4"})})]})]})}function _o({className:t}){var u,y,b,m;const n=s.useEditorStore(g=>g.card),[a,r]=C.useState(null),[i,d]=C.useState(""),{columns:o=[],columnGroups:c=[],isLoading:l}=s.useColumns();(u=n==null?void 0:n.config)!=null&&u.groupByColumns,(y=n==null?void 0:n.config)!=null&&y.metricColumns,(b=n==null?void 0:n.config)!=null&&b.groupByColumns,(m=n==null?void 0:n.config)!=null&&m.pivotByColumns;const x=g=>{r(g),d(g?`[${g.label||g.name}]`:"")},p=g=>{console.log("Formula submitted:",g),d(""),r(null)},h=()=>{d(""),r(null)};return e.jsxs("div",{className:s.cn("flex h-full w-full flex-col",t),children:[e.jsx(qo,{value:i,onChange:d,onSubmit:p,onCancel:h,selectedColumn:a,availableColumns:o}),e.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[e.jsx("div",{className:"flex-1 overflow-auto",children:e.jsx(Po,{selectedColumn:a,onColumnSelect:x,isLoading:l,sourceFields:o})}),e.jsx(Bo,{entityGroups:c,isLoading:l})]})]})}function $o(){var L,S;const[t,n]=C.useState("chart"),[a,r]=C.useState(!1),[i,d]=C.useState(!0),o=s.useEditorStore(F=>F.showAIDialog),c=s.useDashboardStore(F=>F.isVisualEditing),{setCardType:l}=s.useEditorActions(),x=s.useEditorStore(F=>F.card.type);C.useEffect(()=>Oo(),[]);const p=F=>{l(F)},h=s.useEditorStore(F=>F.frame),u=s.useEditorStore(F=>F.card);s.useEditorStore(F=>F.activeTabCardId),s.useEditorStore(F=>F.actions.getAvailableFields);const{addCard:y,removeCard:b,updateCard:m,setActiveCard:g,updateFilters:w}=s.useEditorActions(),{columnFields:E=[],scopedFields:V=[]}=s.useScopedFields(),A=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),T=u,{getFieldsForContainer:v,setFieldsForContainer:D}=s.useFieldManagement(T),{activeField:M,handleDragStart:f,handleDragEnd:I}=wo({activeCardId:h.activeCardId,sourceFields:V,getFieldsForContainer:v,setFieldsForContainer:D}),j=(F,O)=>{O&&w(F,O)},k=F=>{var O;m(F,{config:{...(O=h.cards.find(_=>_.id===F))==null?void 0:O.config,filters:void 0}})},R=E,P=F=>{if(!F)return 0;let O=F.conditions.length;return F.groups.forEach(_=>{O+=P(_)}),O},N=P(((L=T==null?void 0:T.config)==null?void 0:L.filters)||null);return e.jsxs(s.DndContext,{sensors:A,collisionDetection:s.closestCenter,onDragStart:f,onDragEnd:I,children:[e.jsxs("div",{className:"flex h-full grow",children:[e.jsx(Ea,{isVisible:i,onToggleVisibility:()=>d(!i)}),e.jsx("div",{className:"flex flex-1 transition-all duration-300 ease-in-out",children:x==="tableBuilder"?e.jsx(_o,{className:"flex-1"}):e.jsxs(e.Fragment,{children:[!o&&e.jsx(lo,{selectedChart:x,onChartChange:p,groupByFields:v("groupBy"),pivotByFields:v("pivotBy"),metricsFields:v("metrics"),sortByFields:v("sortBy"),detailFields:v("detailColumns"),activeField:M}),e.jsx(Lo,{selectedChart:x,activeView:t,onViewChange:n,onFiltersClick:()=>r(!0),filterCount:N,activeCard:T,columns:E,getFieldsForContainer:v,cards:h.cards,activeCardId:h.activeCardId,addCard:y,setActiveCard:g})]})}),!i&&c&&e.jsx("div",{className:"fixed left-6 top-[105px] z-50",children:e.jsx(s.Button,{size:"sm",variant:"outline",className:"h-10 w-10 rounded-full border-border bg-background p-0 shadow-lg hover:bg-muted",onClick:()=>d(!0),title:"Show Data Source Panel",children:e.jsx(s.Database,{className:"h-4 w-4"})})})]}),T&&e.jsx(So,{cardId:T.id,filters:((S=T.config)==null?void 0:S.filters)||null,onFiltersChange:j,onClearFilters:k,availableFields:R,isOpen:a,onOpenChange:r}),e.jsx(s.DragOverlay,{dropAnimation:null,children:e.jsx(Mo,{activeField:M||null})})]})}function Go({authToken:t,onSave:n,onClose:a}){const r=C.useRef(null),i=s.useEditorStore(v=>v.showAIDialog),d=s.useEditorStore(v=>v.isDevMode),o=s.useAssistantLayoutStore(v=>v.setFullscreen),c=s.useAssistantLayoutStore(v=>v.setPanelOpen),l=s.useAssistantLayoutStore(v=>v.setContainer),x=s.useAssistantPanel("editor"),p=s.useFullscreenAssistant(),h=s.useAssistantContainer("editor"),u=p==="editor",y=C.useCallback(v=>{l("editor",v)},[l]),{setAuthToken:b}=s.useDashboardActions(),{setShowAIDialog:m,setOnSave:g,setOnClose:w}=s.useEditorActions(),{setActiveAssistantType:E}=s.useAIActions();C.useEffect(()=>{n&&g(n),a&&w(a)},[n,g,a,w]),C.useEffect(()=>{t&&t.accessToken&&b(t)},[t,b]),C.useEffect(()=>{var v,D;i?((v=r.current)==null||v.resize(40),c("editor",!0),E("editor")):((D=r.current)==null||D.resize(0),c("editor",!1),p==="editor"&&o(null),E(null))},[i,c,E,o,p]);function V(v){var D;v<1?(m(!1),c("editor",!1),p==="editor"&&o(null),E(null),(D=r.current)==null||D.resize(0)):(i||(m(!0),E("editor")),x.isOpen||c("editor",!0))}function A(){return e.jsxs(e.Fragment,{children:[e.jsx(Ea,{isVisible:!0,onToggleVisibility:()=>{}}),e.jsxs("div",{className:"relative flex grow",children:[e.jsxs(s.ResizablePanelGroup,{"data-content":"editor-main",className:s.cn("grow transition-opacity",u&&"pointer-events-none opacity-0"),direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] rounded-none",children:e.jsx(Bl,{})}),e.jsx(s.ResizableHandle,{disabled:!i}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:V,defaultSize:x.isOpen?40:0,className:"flex",children:e.jsx("div",{className:"grow overflow-y-auto",children:e.jsx(ja,{isFullscreen:u,onFullscreenChange:v=>o(v?"editor":null),fullscreenContainer:h})})})]}),e.jsx("div",{ref:y,className:s.cn("absolute inset-0",!u&&"pointer-events-none")})]})]})}function T(){return e.jsxs("div",{className:"relative flex h-full grow",children:[e.jsxs(s.ResizablePanelGroup,{"data-content":"explorer",className:s.cn("flex grow transition-opacity",u&&"pointer-events-none opacity-0"),direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] grow rounded-none",children:e.jsx($o,{})}),e.jsx(s.ResizableHandle,{disabled:!i}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:V,defaultSize:x.isOpen?40:0,className:"flex",children:e.jsx("div",{className:"grow overflow-y-auto",children:e.jsx(ja,{isFullscreen:u,onFullscreenChange:v=>o(v?"editor":null),fullscreenContainer:h})})})]}),e.jsx("div",{ref:y,className:s.cn("absolute inset-0",!u&&"pointer-events-none")})]})}return e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:d?e.jsx("section",{className:"isolate flex h-full grow","data-content":"editor-panel",children:A()}):T()})}function Ko(){s.useDashboardStore(l=>l.selectedCardId);const t=s.useDashboardStore(l=>l.selectedSheetId),n=s.useDashboardStore(l=>l.dashboard),{setIsVisualEditing:a,setSelectedSheetId:r}=s.useDashboardStore(l=>l.actions),i=s.useDashboardStore(l=>l.isVisualEditing),d=s.useDashboardStore(l=>l.actions.updateFrame);function o(l){var u,y,b;const x=t?(u=n==null?void 0:n.sheets)==null?void 0:u.some(m=>{var g;return m.id===t&&((g=m.frames)==null?void 0:g.some(w=>w.id===l.id))}):!1,p=(b=(y=n==null?void 0:n.sheets)==null?void 0:y.find(m=>{var g;return(g=m.frames)==null?void 0:g.some(w=>w.id===l.id)}))==null?void 0:b.id,h=x?t:p||null;h&&(d(h,l),t!==h&&r(h),a(!1))}function c(){a(!1)}return e.jsx("div",{role:"editor-container",className:s.cn("flex-1 grow basis-0 overflow-auto",{"max-h-0 overflow-hidden":!i}),children:e.jsx(Go,{onSave:o,onClose:c})})}exports.default=Ko;