react-semaphor 0.0.641 → 0.0.643
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{dashboard-plus-WAU6uC9K.js → dashboard-plus-DjSRFLxT.js} +87 -89
- package/dist/chunks/{dashboard-plus-nNjDdQ-Z.js → dashboard-plus-vbGng1b1.js} +3 -3
- package/dist/chunks/{index-C3UqoMX_.js → index-BAIyJYbl.js} +5159 -5155
- package/dist/chunks/{index-D9K5qlK0.js → index-BspFa3YU.js} +64 -64
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),s=require("./index-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),s=require("./index-BspFa3YU.js"),M=require("react");require("react-dom");function Zt(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 Ie=Zt(M);/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -329,8 +329,8 @@
|
|
|
329
329
|
|
|
330
330
|
${d?`Python:
|
|
331
331
|
${d}`:""}
|
|
332
|
-
`;N(z)}function A(){return e.jsxs(e.Fragment,{children:[r&&e.jsx("div",{className:"relative flex w-1/3 min-w-0 grow overflow-hidden text-xs",role:"editor-filter-container",children:e.jsx("div",{className:"mt-2 w-[99%]",children:e.jsx(Zn,{jsonString:JSON.stringify(u,null,2)})})}),u&&u.length>0&&e.jsx(s.Button,{variant:"ghost",onClick:()=>o(!r),className:"absolute bottom-0 right-6 size-7 p-1",children:r?e.jsx(s.X,{className:"size-3.5 text-muted-foreground"}):e.jsx(s.Filter,{className:"size-3.5 text-muted-foreground"})})]})}function P(){return e.jsxs(s.ResizablePanelGroup,{className:"flex grow pb-1",direction:"vertical",role:"editor-resizable-group",children:[e.jsxs(s.ResizablePanel,{id:"1",order:1,defaultSize:n?20:100,className:"relative flex grow",children:[e.jsx("div",{id:"sql-container",className:"relative flex w-[99%]",children:e.jsx(Jn,{})}),n&&e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"sql"})]}),n&&e.jsxs(e.Fragment,{children:[e.jsx(s.ResizableHandle,{withHandle:!0,className:"border"}),e.jsxs(s.ResizablePanel,{id:"2",order:2,defaultSize:80,className:"relative flex grow",children:[e.jsx("div",{id:"python-container",className:"relative flex w-[99%] pt-0",children:e.jsx(Xn,{})}),e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"python"})]})]})]})}function Y(){return e.jsxs("div",{role:"editor-controls",className:"item-center flex flex-wrap justify-between gap-2 px-6 py-4",children:[e.jsxs("div",{className:"flex grow items-center gap-2",children:[e.jsxs(s.Button,{title:"Shift + Enter",disabled:T||y,onClick:()=>{L()},className:"h-8 shrink-0",size:"sm",children:[T||y?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(s.Play,{className:"mr-2 h-4 w-4"}),"Run"]}),e.jsx(Ct,{errorSql:D,sql:v==null?void 0:v.sql,error:F,onDebugWithAssistant:R}),e.jsx(ls,{}),e.jsx(s.Toggle,{pressed:n,onPressedChange:z=>a(z),className:"h-8",size:"sm",variant:"outline",children:e.jsx(Qn,{className:"size-4 text-foreground/70"})}),e.jsx("button",{disabled:c,onClick:()=>{k(!0)},className:"h-9 w-full cursor-text px-3 text-left text-sm text-muted-foreground",children:c?"":"Type your question..."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{}),e.jsx(Ts,{})]})]})}return e.jsxs("section",{role:"editor-section",className:"flex grow flex-col justify-end",children:[e.jsxs("div",{className:"relative flex grow justify-between overflow-y-scroll",children:[P(),A()]}),Y()]})}const tr=[{value:"table",label:"Table",icon:s.Table2},{value:"aggregateTable",label:"Aggregate",icon:s.Layers},{value:"pivotTable",label:"Pivot",icon:ns}];function ar({className:t}){const n=s.useEditorStore(d=>d.card),{setCardType:a,setCard:r,updateCardInFrame:o}=s.useEditorActions(),l=["table","aggregateTable","pivotTable"].includes(n.type),c=s.hasValidCardConfig(n.config);if(!l||!c)return null;const i=d=>{var m;const u=d;if(u==="aggregateTable"&&((m=n.config)!=null&&m.pivotByColumns)&&n.config.pivotByColumns.length>0){const h={...n,type:u,config:{...n.config,pivotByColumns:[]}};r(h),o(h)}else{a(u);const h={...n,type:u};o(h)}};return e.jsx("div",{className:s.cn("flex items-center",t),children:e.jsx(s.RadioGroup,{value:n.type,onValueChange:i,className:"flex flex-row items-center justify-between gap-1 rounded-lg border p-1",children:tr.map(d=>{const u=d.icon,m=n.type===d.value;return e.jsxs("div",{className:"flex items-center",children:[e.jsx(s.RadioGroupItem,{value:d.value,id:`table-type-${d.value}`,className:"peer sr-only"}),e.jsxs(s.Label,{htmlFor:`table-type-${d.value}`,className:s.cn("flex cursor-pointer items-center gap-1.5 rounded-md px-3 py-1 text-sm font-medium transition-all",m?"bg-muted text-foreground shadow-sm":"text-muted-foreground hover:bg-muted/50"),children:[e.jsx(u,{className:"h-3.5 w-3.5"}),d.label]})]},d.value)})})})}function nr({className:t}){var m,h,p,g;const n=s.useEditorStore(j=>j.card),{setCardPreferences:a,updateCardInFrame:r,setCard:o}=s.useEditorActions(),[l,c]=M.useState(!1),i=((h=(m=n.preferences)==null?void 0:m.displayOptions)==null?void 0:h.showFilterInfo)??!0,d=((g=(p=n.preferences)==null?void 0:p.displayOptions)==null?void 0:g.showCardToolbar)??!0,u=(j,x)=>{var N;const b={...n.preferences,displayOptions:{...(N=n.preferences)==null?void 0:N.displayOptions,[j]:x}};a(b);const f={...n,preferences:b};o(f),r(f)};return e.jsx("div",{className:s.cn("flex items-center",t),children:e.jsxs(s.DropdownMenu,{modal:!1,open:l,onOpenChange:c,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-8 w-8 p-0",title:"Dashboard Card Display Options",children:e.jsx(at,{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:"text-xs text-muted-foreground mb-2",children:"Changes apply to dashboard view only"})}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:i,onCheckedChange:j=>{u("showFilterInfo",j)},onSelect:j=>j.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Filter Info"}),e.jsx("span",{className:"text-xs text-muted-foreground ml-4",children:"Badge"})]}),e.jsxs(s.DropdownMenuCheckboxItem,{checked:d,onCheckedChange:j=>{u("showCardToolbar",j)},onSelect:j=>j.preventDefault(),className:"pr-2",children:[e.jsx("span",{className:"flex-1",children:"Card Toolbar"}),e.jsx("span",{className:"text-xs text-muted-foreground ml-4",children:"Hover actions"})]})]})]})})}function rr({card:t}){var k,I,w,C,v,T,y,O,E,B,D;const[n,a]=M.useState(!1),[r,o]=M.useState([]),{authToken:l}=s.useSemaphorContext(),{theme:c}=s.useTheme(),i=s.getTokenParams(l==null?void 0:l.accessToken),d=s.useDashboardStore(S=>S.themeStyle),u={mode:c||"system",colors:((I=(k=d==null?void 0:d.chart)==null?void 0:k.dataset)==null?void 0:I.backgroundColor)||[]};(w=t.customCardPreferences)!=null&&w.inputData;const{getCard:m}=s.useCustomVisual(((C=t.customCardPreferences)==null?void 0:C.url)||""),h=((v=t.customCardPreferences)==null?void 0:v.visualType)||"single",p=s.useEditorStore(S=>S.frame),{setCustomCardPreferences:g}=s.useEditorActions(),{data:j}=s.useDashboardCardQuery(t),x=M.useCallback((S,L)=>{o(F=>({...F,[S]:L}))},[]);if(!((T=t.customCardPreferences)!=null&&T.componentName))return null;const b=m((y=t.customCardPreferences)==null?void 0:y.componentName);function f(S){a(S)}const N=Object.keys(((O=t.customCardPreferences)==null?void 0:O.dataInputCardIds)||{}).map(S=>{var R,A,P;const L=(A=(R=t.customCardPreferences)==null?void 0:R.dataInputCardIds)==null?void 0:A[S].cardId,F=(P=p==null?void 0:p.cards)==null?void 0:P.find(Y=>Y.id===L);return F||null});return e.jsx("div",{className:"semaphor-custom mb-3 flex grow basis-0 flex-col space-y-2 overflow-y-auto",children:e.jsxs(M.Suspense,{fallback:e.jsx(e.Fragment,{}),children:[b&&h==="single"&&e.jsx(b,{editing:!0,params:i,theme:u,settings:(E=t.customCardPreferences)==null?void 0:E.settings,onDataChange:x,data:(j==null?void 0:j.records)||[]}),b&&h==="multiple"&&e.jsxs(e.Fragment,{children:[Object.keys(((B=t.customCardPreferences)==null?void 0:B.dataInputCardIds)||{}).map(S=>{var R,A,P;const L=(A=(R=t.customCardPreferences)==null?void 0:R.dataInputCardIds)==null?void 0:A[S].cardId,F=(P=p==null?void 0:p.cards)==null?void 0:P.find(Y=>Y.id===L);if(F)return e.jsx(s.MultiInputEmptyRenderer,{onLoadingStatus:f,onDataChange:x,dataInputIndex:S,card:F},F.id+S)}),e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(b,{theme:u,onDataChange:x,settings:N.map(S=>{var L;return(L=S==null?void 0:S.customCardPreferences)==null?void 0:L.settings}),data:N.map(S=>S!=null&&S.id?r==null?void 0:r[S.id]:[])})})]})]},(D=t.customCardPreferences)==null?void 0:D.componentName)})}function wt({className:t,...n}){var T;const a=s.useEditorStore(y=>y.card),r=s.isExplorerCard(a),o=((T=a.customCardPreferences)==null?void 0:T.showCardHeader)??!0,l=s.useEditorStore(y=>y.frame),c=s.useDashboardStore(y=>y.dashboard.filters),i=s.useEditorStore(y=>y.actions.setRunSql),{updateFilter:d}=s.useDashboardActions(),u=c==null?void 0:c.find(y=>y.id===l.filterId),{data:m,isLoading:h,isFetching:p,errorMessage:g,pagination:j}=s.useDashboardCardQuery(a),{setCard:x,updateCardInFrame:b}=s.useEditorActions(),{data:f}=s.useTopoJson(a),N=M.useMemo(()=>{var y;return a.type!=="pivotTable"||!((y=m==null?void 0:m.records)!=null&&y.length)?null:{records:m.records,columnSubtotalMeta:m.columnSubtotalMeta,subtotalColumns:m.subtotalColumns||[],pivotSchema:m.pivotSchema||[],groupByColumns:m.groupByColumns}},[a.type,m==null?void 0:m.records,m==null?void 0:m.columnSubtotalMeta,m==null?void 0:m.subtotalColumns,m==null?void 0:m.pivotSchema,m==null?void 0:m.groupByColumns]),k=s.usePivotTableConfig(a,N),I=(y,O)=>{var B,D;const E={...a,paginationConfig:{page:y+1,pageSize:O}};x(E),b(E),a.sql&&((D=(B=a.preferences)==null?void 0:B.tablePrefs)!=null&&D.enableDevModePagination)&&i(!0)},w=M.useMemo(()=>!a.id||!(m!=null&&m.records)?null:s.createChartConfig({card:a,data:m==null?void 0:m.records,cardType:a.type,queryConfig:a.queryConfig,customCfg:a.customCfg,preferences:a.preferences,topoJson:f}),[a.id,m==null?void 0:m.records,a.type,a.queryConfig,a.customCfg,a.preferences,f]);function C(y){return e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(rr,{card:y})})}function v(){if(m!=null&&m.records&&(m==null?void 0:m.records.length)===0&&!h&&!p)return g?e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2",children:[e.jsx(s.SearchX,{className:"size-8 text-destructive"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r?"Error fetching data. Please check your chart configuration":"Error fetching data. Please check your SQL or Python code."})]}):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((h||p)&&a.type!=="table")return 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(!a.id)return null;if(a.type==="custom")return C(a);if(!["table","pivotTable","aggregateTable","custom"].includes(a.type)&&w)return e.jsx("div",{className:"relative h-full min-h-0 w-full flex-1 grow basis-0",children:h||p?e.jsx(e.Fragment,{}):e.jsx(s.ChartJsVisual,{cfg:w})});if(a.type==="table")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:a,data:(m==null?void 0:m.records)||[],paginationMetadata:j,onPaginationChange:I,isLoading:h||p})});if(a.type==="pivotTable"&&k)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:a,data:k.data,options:k.options,onAggregationChange:y=>{const O=s.handleAggregationChange(y,a.config),E={...a,config:O};x(E),b(E)},onAggregationLabelChange:y=>{const O=s.handleAggregationLabelChange(y,a.config),E={...a,config:O};x(E),b(E)}})});if(a.type==="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:a,data:(m==null?void 0:m.records)||[],groupByColumns:m==null?void 0:m.groupByColumns,pivotSchema:m==null?void 0:m.pivotSchema,paginationMetadata:j,onPaginationChange:I,onAggregationChange:y=>{const O=s.handleAggregationChange(y,a.config),E={...a,config:O};x(E),b(E)},isLoading:h||p})})}return e.jsxs(s.Card,{role:"editor-visual-card",className:s.cn("relative flex h-full flex-col rounded-none",t),...n,children:[o&&e.jsxs(s.CardHeader,{className:"flex flex-row items-start justify-between py-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between gap-5",children:[e.jsx(s.CardTitle,{className:"text-base",children:e.jsx(s.EditableText,{value:a.title,onSave:y=>x({...a,title:y}),isEditable:!0,placeholder:"Add title",displayClassName:"text-base font-semibold",inputClassName:"text-base font-semibold"})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ar,{}),e.jsx(nr,{})]})]}),e.jsx("div",{className:"w-1/2",children:e.jsx(s.EditableText,{value:a.description||"",onSave:y=>x({...a,description:y}),isEditable:!0,placeholder:"Add description",displayClassName:"text-sm text-muted-foreground",inputClassName:"text-sm"})})]}),u&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Label,{className:"my-1",children:e.jsx(s.EditableText,{value:u.title||u.column,onSave:y=>d({...u,title:y}),isEditable:!0,placeholder:"Filter",displayClassName:"text-sm",inputClassName:"text-sm"})}),e.jsx(s.FilterComponent,{filter:u})]})]}),e.jsx(s.CardContent,{className:"flex grow flex-col",children:v()})]})}const xs=({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}),lr=()=>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."})]})]}),or=({customCode:t,cardCustomCfgString:n,mergedConfig:a,onConfigChange:r,onCodeChange:o})=>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(xs,{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(xs,{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(xs,{language:"javascript",value:t,onChange:o})})]}),ir=({error:t,hasCardCustomConfig:n,onReset:a,onApply:r,onClose:o})=>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:o,variant:"outline",children:"Close"})]});function cr(){const[t,n]=M.useState(!1),[a,r]=M.useState(""),[o,l]=M.useState(""),[c,i]=M.useState(""),[d,u]=M.useState(""),m=s.useEditorStore(w=>w.card),h=s.useEditorStore(w=>w.card.customCfg),p=h?JSON.stringify(h,null,2):"",{data:g}=s.useDashboardCardQuery(m),{data:j}=s.useTopoJson(m),{setCardCustomCfg:x,setCustomVisualCode:b}=s.useEditorActions(),f=w=>{var C,v;return JSON.stringify({...w,data:{...w.data,datasets:(v=(C=w.data)==null?void 0:C.datasets)==null?void 0:v.map(T=>({...T,data:[]}))}},null,2)},N=()=>{var C,v;if(!((C=g==null?void 0:g.records)!=null&&C.length))return;const w=s.createChartConfig({card:m,data:g.records,cardType:m.type,queryConfig:m.queryConfig,preferences:m.preferences,topoJson:j});if(w){r(f(w)),i(((v=m.preferences)==null?void 0:v.customVisualCode)||"");const T=s.merge(w,h);l(f(T))}},k=()=>{try{if(c&&b(c),o){const w=JSON.parse(o),C=s.getObjectDiff(JSON.parse(a),w);x(C),u("")}}catch{u("Invalid JSON configuration")}},I=Object.keys(h||{}).length===0;return e.jsxs(s.Dialog,{open:t,onOpenChange:n,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Customize Visual",onClick:N,className:I?"":"text-green-600 hover:text-green-700",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(lr,{}),e.jsxs("div",{className:"flex grow gap-2",children:[e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(wt,{className:"w-1/2 rounded shadow-none"})}),e.jsx(or,{customCode:c,cardCustomCfgString:p,mergedConfig:o,onConfigChange:w=>l(w??""),onCodeChange:w=>i(w??"")})]}),e.jsx(ir,{error:d,hasCardCustomConfig:!!h,onReset:()=>{l(a),x(null)},onApply:k,onClose:()=>n(!1)})]})]})}function os(t){const[n,a]=M.useState(null);return n}function Dt(){const{authToken:t}=s.useSemaphorContext(),{data:n,isLoading:a,isFetching:r,isError:o}=s.useQuery({queryKey:["plugins",t==null?void 0:t.accessToken],queryFn:()=>s.getPlugins(t==null?void 0:t.accessToken)});return{data:n,isLoading:a,isFetching:r,isError:o}}function Tt(){const{data:t,isLoading:n,isError:a}=Dt(),r=s.useQueries({queries:((t==null?void 0:t.plugins)||[]).map(i=>({queryKey:["manifest",i.value],queryFn:()=>s.loadManifest(i.value),enabled:!!i.value,staleTime:5*60*1e3,gcTime:10*60*1e3,retry:2,retryDelay:d=>Math.min(1e3*2**d,3e4)}))}),o=[];let l=n,c=a;return r.forEach((i,d)=>{var u;if(i.isLoading&&(l=!0),i.isError&&(c=!0),i.data&&((u=t==null?void 0:t.plugins)!=null&&u[d])){const m=t.plugins[d],h=i.data.visuals.map(p=>({name:p.name,pluginName:m.label,componentType:p.componentType,pluginType:m.type,icon:p.icon,chartType:p.chartType,url:m.value}));o.push(...h)}}),{data:o,isLoading:l,isError:c}}function dr({onChartTypeChange:t}){const{setCardCustomCfg:n,setCardPreferences:a,setCardType:r,setCustomCardPreferences:o}=s.useEditorActions(),{data:l,isLoading:c,isError:i}=Tt(),d=M.useCallback((u,m)=>{n(null),a({}),r(u),m&&o({type:"component",visualType:"single",url:m.url,componentName:m.name,icon:m.icon}),t==null||t()},[n,a,r,o,t]);return c?e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:e.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading custom visuals..."})})]}):i?e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:e.jsx("div",{className:"text-sm text-destructive",children:"Failed to load custom visuals"})})]}):!l||l.length===0?null:e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:l.map((u,m)=>e.jsx(ur,{text:u.name,onClick:()=>d("custom",u),icon:u.icon},`${u.url}-${u.name}-${m}`))})]})}const ur=({text:t,icon:n,onClick:a})=>{const r=os(),o=t.charAt(0).toUpperCase();return e.jsx(s.IconButton,{onClick:a,tooltip:t,children:r?e.jsx(r,{className:"h-4 w-4"}):o})};function kt({onChartTypeChange:t,iconClassName:n}){const{setCardType:a,setCardPreferences:r,setIsDevMode:o}=s.useEditorStore(m=>m.actions),{setCardCustomCfg:l,setCustomCardPreferences:c,setQueryConfig:i}=s.useEditorActions();function d(m,h){l(null),r({}),a(m),["custom","text","map"].includes(m)&&(o(!0),i(void 0)),t==null||t()}const u=1e3;return e.jsxs("div",{className:"grid grid-cols-5 place-items-center",children:[e.jsx(s.IconButton,{openDelay:u,tooltip:"Table",onClick:()=>d("table"),className:"h-10 p-4",children:e.jsx(s.Table2,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Bar Chart",onClick:()=>d("bar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnIncreasing,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Line Chart",onClick:()=>d("line"),className:"h-10 p-4",children:e.jsx(s.ChartLine,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Stacked Bar Chart",onClick:()=>d("stackedBar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnStacked,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Stacked Line Chart",onClick:()=>d("stackedLine"),className:"h-10 p-4",children:e.jsx(s.MdStackedLineChart,{className:s.cn("size-5",n),strokeWidth:0})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Scatter Chart",onClick:()=>d("scatter"),className:"h-10 p-4",children:e.jsx(s.ChartScatter,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Bubble Chart",onClick:()=>d("bubble"),className:"h-10 p-4",children:e.jsx(s.TbChartBubble,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Pie Chart",onClick:()=>d("pie"),className:"h-10 p-4",children:e.jsx(s.ChartPie,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Doughnut Chart",onClick:()=>d("doughnut"),className:"h-10 p-4",children:e.jsx(s.Donut,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Funnel Chart",onClick:()=>d("funnel"),className:"h-10 p-4",children:e.jsx(s.TbChartFunnel,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Radar Chart",onClick:()=>d("radar"),className:"h-10 p-4",children:e.jsx(s.Radar,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Polar Area Chart",onClick:()=>d("polarArea"),className:"h-10 p-4",children:e.jsx(s.PiChartPolar,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Tornado Chart",onClick:()=>d("tornado"),className:"h-10 p-4",children:e.jsx(s.Tornado,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{tooltip:"Range Chart",onClick:()=>d("range"),className:"h-10 p-4",children:e.jsx(s.ChartNoAxesGantt,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"KPI",onClick:()=>d("kpi"),className:"h-10 p-4",children:e.jsx(s.TiSortNumerically,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Text",onClick:()=>d("text"),className:"h-10 p-4",children:e.jsx(s.BookType,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{tooltip:"Map",onClick:()=>d("map"),className:"h-10 p-4",children:e.jsx(s.Map,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Custom",onClick:()=>d("custom"),className:"h-10 p-4",children:e.jsx(qe,{className:s.cn("size-5",n)})})]})}function mr({chartType:t,className:n,customIcon:a,componentName:r}){const o=os();switch(t){case"bar":return e.jsx(s.ChartColumnIncreasing,{className:n});case"line":return e.jsx(s.ChartLine,{className:n});case"pie":return e.jsx(s.ChartPie,{className:n});case"radar":return e.jsx(s.Radar,{className:n});case"scatter":return e.jsx(s.ChartScatter,{className:n});case"bubble":return e.jsx(s.TbChartBubble,{className:n});case"doughnut":return e.jsx(s.Donut,{className:n});case"stackedBar":return e.jsx(s.ChartColumnStacked,{className:n});case"stackedLine":return e.jsx(s.MdStackedLineChart,{className:n});case"polarArea":return e.jsx(s.PiChartPolar,{className:n});case"funnel":return e.jsx(s.TbChartFunnel,{className:n});case"tornado":case"pyramid":return e.jsx(s.Tornado,{className:n});case"range":return e.jsx(s.ChartNoAxesGantt,{className:n});case"kpi":return e.jsx(s.TiSortNumerically,{className:n});case"text":return e.jsx(ve,{className:n});case"map":return e.jsx(s.Map,{className:n});case"custom":return a&&o?e.jsx(o,{className:n}):r?r==null?void 0:r.charAt(0).toUpperCase():e.jsx(qe,{className:n});default:return e.jsx(s.Table2,{className:n})}}function Et({variant:t="ghost"}){var l,c;const[n,a]=M.useState(!1),r=s.useEditorStore(i=>i.card),o=r.type;return s.useDashboardStore(i=>i.isVisualEditing),e.jsxs(s.Popover,{open:n,onOpenChange:a,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:t||"ghost",children:e.jsx(mr,{className:"size-4",chartType:o,customIcon:(l=r.customCardPreferences)==null?void 0:l.icon,componentName:(c=r.customCardPreferences)==null?void 0:c.componentName})})}),e.jsxs(s.PopoverContentCustom,{onOpenAutoFocus:i=>i.preventDefault(),className:"w-72 p-1",children:[e.jsx(kt,{onChartTypeChange:()=>a(!1)}),e.jsx(dr,{onChartTypeChange:()=>a(!1)})]})]})}function hr({error:t,className:n="",textClassName:a="",copyButtonClassName:r=""}){const[o,l]=M.useState(!1),c=M.useRef(null),i=M.useRef(!1);function d(){t&&!i.current&&navigator.clipboard.writeText(t)}function u(p){(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),d())}function m(){const p=window.getSelection();if(p&&p.toString().trim()!==""){const g=p.toString();navigator.clipboard.writeText(g),l(!0),i.current=!0,setTimeout(()=>{l(!1),i.current=!1},1e3)}else i.current=!1}function h(){l(!1),i.current=!1}return e.jsxs("div",{className:`relative rounded-md border border-red-200 bg-red-50 p-3 dark:border-red-800 dark:bg-red-950/20 ${n}`,children:[e.jsx("div",{className:"float-right mb-2 ml-2",children:e.jsx(s.CopyButton,{text:t,className:`h-6 w-6 p-0 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 ${r}`})}),e.jsx("div",{ref:c,className:`cursor-pointer select-text break-all font-mono text-xs text-red-700 dark:text-red-300 ${a}`,onClick:d,onKeyDown:u,onMouseUp:m,onMouseDown:h,tabIndex:0,role:"button","aria-label":"Click to copy error message or select text to copy",children:t}),o&&e.jsx("div",{className:"absolute bottom-1 right-1 rounded bg-green-100 px-2 py-1 text-xs text-green-600 dark:bg-green-900/30 dark:text-green-400",children:"Copied!"}),e.jsx("div",{className:"clear-both"})]})}function xr(){const t=s.useEditorStore(l=>{var c,i;return(i=(c=l.card.preferences)==null?void 0:c.chartOptions)==null?void 0:i.indexAxis}),n=s.useEditorStore(l=>l.card.type),{setChartOrientation:a}=s.useEditorStore(l=>l.actions);function r(){return e.jsx(s.IconButton,{onClick:()=>{a(t==="x"||t===void 0?"y":"x")},tooltip:"Chart Orientation",children:t==="x"||t===void 0?e.jsx(Vs,{className:"size-4"}):e.jsx(_s,{className:"size-4"})})}function o(){return e.jsx(s.IconButton,{onClick:()=>{a(t==="y"||t===void 0?"x":"y")},tooltip:"Chart Orientation",children:t==="y"||t===void 0?e.jsx(Vs,{className:"size-4"}):e.jsx(_s,{className:"size-4"})})}return e.jsx(e.Fragment,{children:n==="funnel"?o():r()})}function It(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>c.isShowingVisual),a=s.useEditorStore(c=>{var i,d;return(d=(i=c.card)==null?void 0:i.preferences)==null?void 0:d.chartOptions}),r=s.getChartGridStyle(a),{setChartGrid:o}=s.useEditorActions();function l(){const c=["xy","none","x","y"],d=(c.indexOf(r)+1)%c.length;o(c[d])}return n?e.jsxs("div",{"data-info":"visual-settings",className:"flex items-center",children:[["line","bar","range","stackedBar","stackedLine","horizontalBar","funnel"].includes(t.type)&&e.jsx(e.Fragment,{children:e.jsx(xr,{})}),!["kpi","text","custom","table"].includes(t.type)&&e.jsx(e.Fragment,{}),!["pie","doughnut","funnel","radar","polarArea","table","custom","kpi","text","map"].includes(t.type)&&e.jsxs(s.IconButton,{tooltip:"Grid Style",onClick:l,children:[(r==="xy"||!r)&&e.jsx(ns,{className:"size-4"}),r==="x"&&e.jsx(ua,{className:"size-4"}),r==="y"&&e.jsx(Fa,{className:"size-4"}),r==="none"&&e.jsx(_a,{className:"size-4"})]})]}):null}function pr(){const t=s.useEditorStore(j=>j.frame),n=s.useEditorStore(j=>j.card),{setFrame:a,setActiveTabCardId:r,setCard:o,updateCardInFrame:l}=s.useEditorActions(),c=(j,x)=>{j.dataTransfer.setData("tabIndex",x.toString())},i=j=>{j.preventDefault()},d=(j,x)=>{const b=j.dataTransfer.getData("tabIndex");if(b===x.toString())return;const f=Array.from(t.cards),[N]=f.splice(parseInt(b),1);f.splice(x,0,N),a({...t,cards:f})};function u(j){const x=t.cards.filter(N=>N.id!==j),b=x[0],f={...t,cards:x,activeCardId:b.id};a(f),r(b.id),o(b)}function m(j,x){const b={...t,cards:[...t.cards,x],activeCardId:j.id};a(b),r(x.id)}function h(){const j={...n,id:s.v4(),title:`${n.title} Copy`,tabTitle:`${n.tabTitle||n.title} Copy`};m(n,j)}function p(j){const x={dataSource:j.dataSource,connectionId:j.connectionId,lastSelectedDatabase:j.lastSelectedDatabase,lastSelectedSchema:j.lastSelectedSchema,lastSelectedTable:j.lastSelectedTable,lastSelectedDatamodelId:j.lastSelectedDatamodelId,id:s.v4(),title:"Title",description:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},type:"bar",sql:"",data:[],mode:"explorer"};m(j,x)}function g(j,x){return j.cards.length===1&&(x.displayTab===!0||x.displayTab===void 0)||j.activeCardId!==x.id&&(x.displayTab===!0||x.displayTab===void 0)?null:e.jsx("div",{onClick:()=>{const b=x.displayTab===void 0?!1:!x.displayTab;o({...x,displayTab:b}),l({...x,displayTab:b})},children:x.displayTab===!0||x.displayTab===void 0?e.jsx(s.Eye,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"}):e.jsx(pa,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"})})}return e.jsx(s.TabsList,{className:"group mx-4 justify-between overflow-x-auto",children:e.jsxs("div",{className:"flex items-center",children:[t.cards.map((j,x)=>e.jsxs(s.TabsTrigger,{draggable:!0,onDragStart:b=>c(b,x),onDragOver:i,onDrop:b=>d(b,x),className:"",value:j.id,children:[g(t,j),e.jsx(s.Editable,{enabled:t.activeCardId===j.id,text:j.tabTitle||j.title,onSave:b=>{o({...n,tabTitle:b}),l({...n,tabTitle:b})},children:j.tabTitle||j.title},j.id),t.activeCardId===j.id&&t.cards.length>1&&e.jsx(s.X,{className:"ml-2 size-3.5 text-muted-foreground hover:text-foreground",onClick:()=>u(j.id)})]},j.id)),e.jsx(s.Button,{className:"ml-1 h-8 px-2 hover:bg-muted-foreground/50",variant:"outline",onClick:()=>p(n),children:e.jsx(s.Plus,{className:"h-4 w-4"})}),e.jsx(s.Button,{className:"invisible ml-1 h-8 px-2 hover:bg-muted-foreground/50 group-hover:visible",variant:"outline",onClick:h,children:e.jsx(ha,{className:"h-4 w-4"})})]})})}function At(){const t=s.useEditorStore(x=>x.frame),n=s.useEditorStore(x=>x.card),a=s.useEditorStore(x=>x.isSqlRunning),r=s.useEditorStore(x=>x.isDevMode),{setFrame:o,setActiveTabCardId:l,setCard:c,setIsDevMode:i,setRunSql:d}=s.useEditorActions(),{data:u,isLoading:m,isFetching:h}=s.useDashboardCardQuery(n);function p(x){const b=t.cards.find(f=>f.id===x);if(b!=null&&b.sql){r||i(!0),l(x);return}if(b!=null&&b.queryConfig){r&&i(!1),g(x),l(x);return}r||g(x),l(x)}function g(x){const b={...t,cards:t.cards.map(N=>N.id===n.id?n:N),activeCardId:x};o(b);const f=b.cards.find(N=>N.id===x);f.sql&&d(!0),c(f)}function j(){return n.type==="kpi"?m||h?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 border-border",children:e.jsx(s.KPICard,{card:n,data:u==null?void 0:u.records,isPending:m||h})})}):n.type==="text"?m||h?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:a,card:n,data:u==null?void 0:u.records})})})}):e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(wt,{className:"grow border-none shadow-none"})})}return e.jsxs(s.Tabs,{onValueChange:p,value:t.activeCardId,className:"flex grow flex-col",children:[t.cards.map(x=>e.jsx(s.TabsContent,{className:"mt-0 grow",value:x.id,children:j()},x.id)),e.jsx(pr,{})]})}function Qe({children:t}){var I,w;s.useEditorStore(C=>C.frame);const n=s.useEditorStore(C=>C.card),a=s.useEditorStore(C=>C.isDevMode),r=s.useEditorStore(C=>C.isShowingVisual),o=s.useDashboardStore(C=>C.isVisualEditing),l=s.useEditorStore(C=>C.pythonStdOut);s.useEditorStore(C=>C.actions.setRunSql);const{setFrame:c,setCard:i,setActiveTabCardId:d,runAssistant:u,setIsDevMode:m,setCardPreferences:h}=s.useEditorActions(),{data:p,isLoading:g,isFetching:j,errorMessage:x,refetch:b}=s.useDashboardCardQuery(n);function f(){const C=JSON.stringify(p==null?void 0:p.records,null,2),v=new Blob([C],{type:"application/json"}),T=URL.createObjectURL(v),y=document.createElement("a");y.href=T,y.download=`${n.title}.json`,y.click()}function N(){const v=[Object.keys(p==null?void 0:p.records.reduce((E,B)=>({...E,...B}),{})).join(","),...((p==null?void 0:p.records)||[]).map(E=>Object.values(E).join(","))].join(`
|
|
333
|
-
`),T=new Blob([v],{type:"text/csv"}),y=URL.createObjectURL(T),O=document.createElement("a");O.href=y,O.download=`${n.title}.csv`,O.click()}function k(){const C=`Can you get the documentation for ${n.type} chart?`;u(C)}return n?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 px-6",children:[r&&e.jsxs("div",{className:"flex grow items-center",children:[e.jsx(Et,{}),o&&e.jsx(s.IconButton,{tooltip:"Visual Docs",onClick:k,children:e.jsx(la,{className:"size-4"})}),!["table","custom"].includes(n.type)&&o&&e.jsx(cr,{})]}),!r&&e.jsxs("div",{className:"flex grow items-center gap-1",children:[e.jsx(s.Button,{className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70",variant:"ghost",size:"icon",onClick:N,children:e.jsx(s.PiFileCsv,{className:"size-4"})}),e.jsx(s.Button,{className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70",variant:"ghost",size:"icon",onClick:f,children:e.jsx(ga,{strokeWidth:1.5,className:"size-4"})}),e.jsx(s.CopyButton,{text:JSON.stringify(p==null?void 0:p.records,null,2),className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t,e.jsx(It,{})]}),n.type==="table"&&n.sql&&!s.hasValidCardConfig(n.config)&&e.jsxs("div",{className:"mr-2 flex items-center gap-3",children:[e.jsx(s.Checkbox,{id:"pagination",checked:((w=(I=n.preferences)==null?void 0:I.tablePrefs)==null?void 0:w.enableDevModePagination)??!1,onCheckedChange:C=>{var v;h({...n.preferences,tablePrefs:{...(v=n.preferences)==null?void 0:v.tablePrefs,enableDevModePagination:C}}),b()}}),e.jsx(s.Label,{htmlFor:"pagination",children:"Paginate Results"})]}),a&&e.jsx(gr,{})]}),r?e.jsx(At,{}):e.jsxs(s.ResizablePanelGroup,{className:"px-6",direction:"horizontal",children:[l&&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:l&&e.jsx(fr,{})}),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",{"px-6":l}),children:[(p==null?void 0:p.records)&&(p==null?void 0:p.records.length)>0&&e.jsx(s.TableVisual,{card:n,data:(p==null?void 0:p.records)||[]}),x&&e.jsx(hr,{error:x})]})]})]}):e.jsx(e.Fragment,{children:"No Active Card"})}function fr(){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 gr(){const t=s.useEditorStore(a=>a.isShowingVisual),n=s.useEditorStore(a=>a.actions.setIsShowingVisual);return e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Label,{htmlFor:"visualize",children:"Chart"}),e.jsx(s.SmallSwitch,{checked:t,onCheckedChange:()=>n(!t),id:"visualize",className:"data-[state=checked]:bg-foreground/50"})]})}function Ce({defaultValue:t,label:n,options:a,value:r,onValueChange:o,className:l,icon:c,showPlaceholderLabel:i=!0}){return e.jsxs(s.Select,{defaultValue:t,value:r,onValueChange:o,children:[e.jsx(s.SelectTrigger,{className:s.cn("w-full focus:ring-0 focus:ring-offset-0",l),children:e.jsxs("div",{className:"flex items-center gap-2",children:[c&&e.jsx("span",{children:c}),i&&e.jsx(s.SelectValue,{placeholder:n})]})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:n}),a.map(d=>e.jsx(s.SelectItem,{value:d.value,children:d.label},d.value))]})})]})}function jr(){var x,b;const t=s.useEditorStore(f=>f.card.customCardPreferences),{data:n}=Dt(),a=(n==null?void 0:n.plugins)||[],r=s.useEditorStore(f=>f.card),o=s.useEditorStore(f=>f.frame),l=(t==null?void 0:t.visualType)||"single",{setCustomCardPreferences:c}=s.useEditorActions(),{components:i,manifest:d}=s.useCustomVisual((t==null?void 0:t.url)||""),u=(x=d==null?void 0:d.visuals)==null?void 0:x.find(f=>f.name===(t==null?void 0:t.componentName));function m(f,N){if(!t)return;const I={...(t==null?void 0:t.dataInputCardIds)||{},[f]:{cardId:N,hookRef:null}};c({...t,dataInputCardIds:I})}function h(f){var k,I;const N=(k=o==null?void 0:o.cards)==null?void 0:k.filter(w=>{var C;return((C=w==null?void 0:w.customCardPreferences)==null?void 0:C.visualType)!=="multiple"}).map(w=>({value:w.id,label:w.tabTitle||w.title}));return e.jsx("div",{className:"space-y-2",children:(I=f==null?void 0:f.dataInputs)==null?void 0:I.map((w,C)=>{var v,T;return e.jsxs("div",{className:"grid grid-cols-10 gap-2",children:[e.jsx("div",{className:"col-span-4 flex items-center",children:w}),e.jsx(Ce,{className:"col-span-6 h-8 w-full justify-between",label:"",options:N||[],value:((T=(v=t==null?void 0:t.dataInputCardIds)==null?void 0:v[C])==null?void 0:T.cardId)||"",onValueChange:y=>m(C,y)})]},C+Math.random())})})}function p(f,N,k=[],I=""){var w,C;return t?f==="input"?e.jsx(s.Input,{className:`h-8 w-full ${s.removeRing}`,value:((w=t==null?void 0:t.settings)==null?void 0:w[N])||I,onChange:v=>{c({...t,settings:{...t==null?void 0:t.settings,[N]:v.target.value}})}},N):f==="select"?e.jsx(Ce,{className:"h-8 w-full",label:"",options:k,value:((C=t==null?void 0:t.settings)==null?void 0:C[N])||I,onValueChange:v=>{c({...t,settings:{...t==null?void 0:t.settings,[N]:v}})}}):null:null}function g(f){const N=Object.entries((f==null?void 0:f.settings)||{});return e.jsx("div",{className:"space-y-3",children:N.map(([k,I])=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:I.title}),p(I.ui,k,I.options,I.defaultValue)]},k))})}function j(f){t&&c({...t,visualType:f,componentName:""})}return e.jsxs(s.Accordion,{type:"multiple",defaultValue:["component-settings"],className:"px-6 py-2",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:[e.jsx(Ce,{icon:e.jsx(ra,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Plugin",options:a,value:(t==null?void 0:t.url)||"",onValueChange:f=>c({...t||{url:"",componentName:""},url:f})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&e.jsx(s.Tabs,{value:l,onValueChange:j,children:e.jsxs(s.TabsList,{className:"h-9 w-full",children:[e.jsx(s.TabsTrigger,{className:"h-7 w-full",value:"single",children:"Single Visual"}),e.jsx(s.TabsTrigger,{className:"h-7 w-full",value:"multiple",children:"Multi-Visual"})]})})]})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&t&&e.jsx(e.Fragment,{children:i&&e.jsx(Ce,{icon:e.jsx(ma,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Component",options:(i==null?void 0:i.filter(f=>f.type===l).map(f=>({value:f.name,label:f.name})))||[],value:t.componentName,onValueChange:f=>{console.log("changing value",f),c({...t,componentName:f})}})})]})})]}),((b=r==null?void 0:r.customCardPreferences)==null?void 0:b.componentName)&&e.jsxs(s.AccordionItem,{className:"border-none",value:"component-settings",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsxs(s.AccordionContent,{children:[u&&u.dataInputs&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Input Mapping"}),e.jsx("div",{className:"px-2",children:h(u)})]}),u&&u.settings&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"px-2",children:g(u)})})]})]})]})}function Fe(){const[t,n]=M.useState([]),a=s.useEditorStore(u=>u.card.preferences),{setFilterOnClickColumnIndex:r,setCardPreferences:o}=s.useEditorStore(u=>u.actions),l=s.useEditorStore(u=>u.queryResultColumns);s.useEditorStore(u=>{var m;return(m=u.card.preferences)==null?void 0:m.filterOnClickColumnIndex}),M.useEffect(()=>{l&&n(new Array(l.length).fill(!1))},[l]);function c(u,m){var h,p;m?a!=null&&a.onClickFilter&&((h=a==null?void 0:a.onClickFilter)==null?void 0:h.length)>0?o({...a,onClickFilter:[...a.onClickFilter,{columnIndex:u,expression:""}]}):o({...a,onClickFilter:[{columnIndex:u,expression:""}]}):(o({...a,onClickFilter:(p=a==null?void 0:a.onClickFilter)==null?void 0:p.filter(g=>g.columnIndex!==u)}),n(g=>{const j=[...g];return j[u]=!1,j}))}function i(u,m){var p;const h=(p=a==null?void 0:a.onClickFilter)==null?void 0:p.map(g=>g.columnIndex===u?{...g,expression:m.target.value}:g);o({...a,onClickFilter:h})}function d(u){var m,h,p,g;if(t!=null&&t[u]||(h=(m=a==null?void 0:a.onClickFilter)==null?void 0:m.find(j=>j.columnIndex===u))!=null&&h.expression)return e.jsx(s.Input,{value:(g=(p=a==null?void 0:a.onClickFilter)==null?void 0:p.find(j=>j.columnIndex===u))==null?void 0:g.expression,onChange:j=>i(u,j),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:l==null?void 0:l.map((u,m)=>{var h,p;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(g=>g.columnIndex===m)),onCheckedChange:g=>c(m,g)}),e.jsx("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:u}),e.jsx("div",{className:"flex items-center gap-2",children:((p=a==null?void 0:a.onClickFilter)==null?void 0:p.find(g=>g.columnIndex===m))&&e.jsx(s.Pencil,{onClick:()=>{n(g=>{const j=[...g];return j[m]=!g[m],j})},className:"invisible size-3 cursor-pointer text-gray-400 group-hover:visible"})})]}),d(m)]})},u)})})}function br({idx:t}){var i;const n=s.useEditorStore(d=>{var u;return(u=d.card)==null?void 0:u.preferences}),a=s.useEditorStore(d=>{var u;return(u=d.card.preferences)==null?void 0:u.datasetOptions}),r=s.useEditorStore(d=>d.actions.setCardPreferences),o=(i=n==null?void 0:n.chartOptions)==null?void 0:i.indexAxis,l=a==null?void 0:a.find(d=>d.idx===t);function c(d,u){(d==="end"||d==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const m={display:d!=="none",align:d,anchor:d,clamp:!0};if(!l)r({...n,datasetOptions:[...a||[],{idx:u,datalabels:m}]});else{const h={...l};h.datalabels=m;const p=a==null?void 0:a.map(g=>g.idx===u?h:g);r({...n,datasetOptions:p})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(nt,{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:()=>c("none",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(s.X,{className:"size-3.5"})}),e.jsx("button",{onClick:()=>c("start",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Ca,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})}),e.jsx("button",{onClick:()=>c("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(wa,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})}),e.jsx("button",{onClick:()=>c("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Sa,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})})]})})]})}function vr(){const t=s.useEditorStore(l=>l.card),{data:n}=s.useDashboardCardQuery(t),{keys:a}=s.getKeys((n==null?void 0:n.records)||[]),r=a.slice(1).filter(l=>!s.METADATA_KEYS.includes(l));let o=r;if(["stackedBar","stackedLine"].includes(t.type)){const l=s.pivotData({dataArray:(n==null?void 0:n.records)||[],groupKey:a[0],pivotKey:a[1],valueKey:a[2]}),{keys:c}=s.getKeys(l);o=c.slice(1)}return{transformedMetricKeys:o,dimensionKeys:a.slice(0,1),keys:a,defaultMetricKeys:r}}function is({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 Mt(){const t=s.useEditorStore(d=>d.card),n=s.useEditorStore(d=>{var u,m,h;return(h=(m=(u=d==null?void 0:d.card)==null?void 0:u.preferences)==null?void 0:m.chartOptions)==null?void 0:h.indexAxis}),{data:a}=s.useDashboardCardQuery(t),r=n==="y"?"Metric":"Dimension",o=n==="y"?"Dimension":"Metric",{dimensionKeys:l,transformedMetricKeys:c,keys:i}=vr();return i.length===0?null:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:r}),e.jsx("div",{className:"max-h-[125px] space-y-1 overflow-y-auto",children:l.map(d=>e.jsx("p",{className:"flex h-8 items-center rounded-md bg-muted/70 px-3 hover:bg-muted",title:d,children:Lt(d)},d))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:o}),e.jsx("div",{className:"my-1 max-h-[125px] space-y-1 overflow-y-auto",children:c.map((d,u)=>e.jsx(Rt,{className:"flex h-8 items-center bg-muted/70 px-3 hover:bg-muted",iconClassName:"invisible group-hover:visible",col:d,idx:u},d))})]})]})}function Lt(t,n=30){return t.length>n?t.slice(0,n)+"...":t}function Rt({col:t,idx:n,className:a,iconClassName:r,children:o}){const l=s.useEditorStore(m=>{var h;return(h=m.card)==null?void 0:h.preferences}),c=s.useEditorStore(m=>{var h,p;return(p=(h=m.card)==null?void 0:h.preferences)==null?void 0:p.datasetOptions}),i=c==null?void 0:c.find(m=>m.idx===n),{setCardPreferences:d}=s.useEditorStore(m=>m.actions);function u(m){if(!i)d({...l,datasetOptions:[...c||[],{idx:n,type:m==="area"?"line":m,fill:m==="area"?"origin":""}]});else{const h={...i};h.type=m==="area"?"line":m,h.fill=m==="area"?"origin":"";const p=c==null?void 0:c.map(g=>g.idx===n?h:g);d({...l,datasetOptions:p})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",a),children:[o||e.jsx(is,{className:"max-w-[100px]",title:t,children:Lt(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>u("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>u("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>u("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(br,{idx:n})]})]})}function Es(){const t=s.useEditorStore(g=>g.selectedConnectionId),n=s.useEditorStore(g=>g.selectedDatamodelId),a=s.useEditorStore(g=>g.selectedDatabaseName),r=s.useEditorStore(g=>g.selectedSchemaName),o=s.useEditorStore(g=>g.selectedTableName),l=s.useDashboardStore(g=>g.dashboard.filters)||[],c=s.useDashboardStore(g=>g.actions.addFilter),i=s.useDashboardStore(g=>g.actions.removeFilter),{removeFilterValues:d}=s.useDashboardActions(),{modelItems:u,tableName:m,connectionType:h}=s.useEditorAside();function p(g,j="dashboard",x){var T;const b=s.fmt(g.column_name),f=s.fmt(a||""),N=s.fmt(r||""),k=s.fmt(m);let I=s.getQualifiedTableName({schemaName:N,tableName:k,connectionType:h,databaseName:f}),w=`${I}.${b}`;const C=(T=u==null?void 0:u.find(y=>y.id===n))==null?void 0:T.name;n&&n!=="none"&&(w=`${s.DATAMODEL_NAMESPCACE}.${C}.${b}`,I=`${s.DATAMODEL_NAMESPCACE}.${C}`),x!=null&&x.qualifiedFieldName&&(w=x.qualifiedFieldName),x!=null&&x.entityName&&(I=x.entityName);const v=l==null?void 0:l.find(y=>y.column===w&&y.table===k&&(y.database===f||y.database===a));if(v)d(v.id),i(v.id);else{const y=s.v4();return m==="api"&&t?(c({location:j,id:y,column:w,title:g.column_name,dataType:g.data_type,table:"api",database:"",connectionId:t,operation:"in",sql:s.getDefaultFilterSql(g.data_type,I,b)}),y):(c({id:y,location:j,column:w,title:g.column_name,dataType:g.data_type,table:o||"",database:a||"",connectionId:t||"",operation:"in",sql:s.getDefaultFilterSql(g.data_type,I,b)}),y)}}return{assignFilter:p}}function Ge(){const t=s.useDashboardStore(i=>i.dashboard.filters),n=s.useEditorStore(i=>i.frame),{setFrame:a}=s.useEditorActions(),{columns:r}=s.useEditorAside(),{assignFilter:o}=Es();function l(i){const d=o(i,"frame");a({...n,filterId:d})}const c=t==null?void 0:t.find(i=>i.id===n.filterId);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Card Filter"}),e.jsx(yr,{onSelect:l,columns:r}),c&&e.jsx(s.FilterHeader,{filter:c})]})}function yr({columns:t,onSelect:n}){var c;const[a,r]=Ie.useState(!1),[o,l]=Ie.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:[o?(c=t.find(i=>i.column_name===o))==null?void 0:c.column_name:"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 framework found."}),e.jsx(s.CommandGroup,{children:t==null?void 0:t.map(i=>e.jsxs(s.CommandItem,{value:i.column_name,onSelect:d=>{const u=d===o?"":d;l(u),r(!1),u&&n(i)},children:[i.column_name,e.jsx(s.CheckIcon,{className:s.cn("ml-auto h-4 w-4",o===i.column_name?"opacity-100":"opacity-0")})]},i.column_name))})]})]})})]})}function Nr({cardType:t}){return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} Chart`}),e.jsxs(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT x-axis, y-axis-1, y-axis-2,... FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"x-axis - category"}),e.jsx("li",{children:"y-axis1 - number"}),e.jsx("li",{children:"y-axis2 - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:n=>n.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/bar-line-area",children:"example"})," in the docs."]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsx(s.AccordionContent,{className:"space-y-4 px-2",children:e.jsx(Mt,{})})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Cr({cardType:t}){function n(a){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:a==="bubble"?"SELECT label, [group], x-axis, y-axis, radius FROM table":"SELECT label, [group], x-axis, y-axis FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"label - category"}),e.jsx("li",{children:"group (optional) - category"}),e.jsx("li",{children:"x-axis - number"}),e.jsx("li",{children:"y-axis - number"}),a==="bubble"&&e.jsx("li",{children:"radius - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:l=>l.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/bubble",children:"example"})," in the docs."]})]})}return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} Chart`}),e.jsx(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:n(t)})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Ot(){const t=s.useEditorStore(i=>i.card.type),n=s.useEditorStore(i=>i.isDevMode),a=s.useEditorStore(i=>i.card.preferences),{setCardPreferences:r}=s.useEditorStore(i=>i.actions);function o(i){var m;const d={datalabels:{display:i!=="none",align:i,anchor:i,clamp:!0}},u={...a,chartOptions:{...a==null?void 0:a.chartOptions,plugins:{...(m=a==null?void 0:a.chartOptions)==null?void 0:m.plugins,...d}}};r(u)}function l(){var i,d,u;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((u=(d=(i=a==null?void 0:a.chartOptions)==null?void 0:i.plugins)==null?void 0:d.datalabels)==null?void 0:u.anchor)||"none",onValueChange:o,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 c(){var i,d,u;return e.jsx("div",{children:e.jsxs(s.Select,{value:((u=(d=(i=a==null?void 0:a.chartOptions)==null?void 0:i.plugins)==null?void 0:d.datalabels)==null?void 0:u.anchor)||"none",onValueChange:o,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?l():c()})}const Sr={datasets:[{type:"line",label:"Sum_sales",data:[]},{type:"bar",label:"Sum_profit",data:[]}]},wr={datasets:[{fill:"origin",type:"line",label:"Sum_sales",data:[]}]};function Dr(){const t=s.useEditorStore(n=>n.card.type);return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsx(s.Accordion,{className:" ",type:"single",collapsible:!0,children:Tr(t)}),!["kpi"].includes(t)&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(Ot,{}),e.jsx(Fe,{}),e.jsx(Ge,{})]})]})}function Tr(t){if(["line","bar"].includes(t))return e.jsxs(e.Fragment,{children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsx("p",{children:"Chart Query"})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT x-axis, y-axis-1, y-axis-2, y-axis-3,... FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"X-axis - Category (ex. city)"}),e.jsx("li",{children:"Y-axis - Number (ex. population)"})]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:"Mixed Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-2 text-xs",children:[e.jsxs("p",{children:["Click ",e.jsx("b",{children:"Customize"})," and change the `type` property in the dataset."]}),e.jsx("pre",{children:JSON.stringify(Sr,null,2)})]})]}),e.jsxs(s.AccordionItem,{value:"item-3",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:"Area Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-2 text-xs",children:[e.jsxs("p",{children:["Click ",e.jsx("b",{children:"Customize"})," and add `fill` property to the dataset. See",e.jsx("a",{className:"mx-1 text-blue-500 hover:underline",href:"https://www.chartjs.org/docs/latest/samples/area/line-boundaries.html",target:"_blank",children:"docs"}),"for more options."]}),e.jsx("pre",{children:JSON.stringify(wr,null,2)})]})]})]});if(t==="bubble")return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:["How to create a ",e.jsx("span",{children:t})," chart query?"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, x-axis, y-axis, radius FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Bubble Group (opt) - Category (ex. state)"}),e.jsx("li",{children:"X-axis - Number (ex. avg. age)"}),e.jsx("li",{children:"Y-axis - Number (ex. avg. weight)"}),e.jsx("li",{children:"Radius - Number (ex. population)"})]})]})]})});if(t==="scatter")return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:["How to create a ",e.jsx("span",{children:t})," chart query?"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, x-axis, y-axis FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Group (opt) - Category (ex. state)"}),e.jsx("li",{children:"X-axis - Number (ex. avg. age)"}),e.jsx("li",{children:"Y-axis - Number (ex. avg. weight)"})]})]})]})});if(["pie","doughnut","polarArea","funnel"].includes(t))return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:[e.jsx("span",{children:t==="polarArea"?"Polar":t.charAt(0).toUpperCase()+t.slice(1)})," ","chart query"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, measure FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Measure - Number (ex. population)"})]})]})]})})}function kr({colorRanges:t,setColorRanges:n}){const a={start:-1/0,end:100,color:""};function r(c,i,d){const u=[...t];u[c]={...u[c],[i]:d},n(u)}function o(c){const i=[...t];i.splice(c,1),n(i)}function l(){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:l,variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.Plus,{className:"size-3"})})]}),t.map((c,i)=>e.jsxs("div",{className:"flex items-center gap-2 px-2",children:[e.jsx(s.Input,{onChange:d=>r(i,"start",d.target.value),value:c.start,className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx("span",{children:"-"}),e.jsx(s.Input,{value:c.end,onChange:d=>r(i,"end",d.target.value),className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx(s.Input,{onChange:d=>r(i,"color",d.target.value),value:c.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:()=>o(i),variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.X,{className:"size-3"})})]},i))]})}function Er(){var m,h,p,g,j;const t=s.useEditorStore(x=>x.card.preferences),n=s.useEditorStore(x=>x.actions.setCardPreferences),a=s.useEditorStore(x=>x.card),r=s.isExplorerCard(a),o=s.useEditorStore(x=>x.actions.setNumberFormat);s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.decimalPlaces});const l=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.locale}),c=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.currency});s.useEditorStore(x=>x.actions.setFilterOnClickField);const i=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.colorRanges})||[],d=s.useEditorStore(x=>x.actions.setColorRanges),u=[...new Set(s.LOCALE_CURRENCY_PAIRS.map(x=>x.currency))];return e.jsxs("div",{children:[!r&&e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(s.Checkbox,{checked:!!((m=t==null?void 0:t.formatNumber)!=null&&m.enabled),onCheckedChange:x=>{n({...t,formatNumber:{...t==null?void 0:t.formatNumber,enabled:x}})}}),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:l||"none",onValueChange:x=>{var b,f,N;return o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((f=t==null?void 0:t.formatNumber)==null?void 0:f.currency)||"",x,((N=t==null?void 0:t.formatNumber)==null?void 0:N.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(x=>e.jsx(s.SelectItem,{value:x.locale,children:x.locale},x.locale))]})})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Currency"}),e.jsxs(s.Select,{value:c||"none",onValueChange:x=>{var b,f,N;console.log("currency",x),o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,x==="none"?"":x,((f=t==null?void 0:t.formatNumber)==null?void 0:f.locale)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.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"),u.map(x=>e.jsx(s.SelectItem,{value:x,children:x},x))]})})]})]})]}),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:((g=(p=t==null?void 0:t.formatNumber)==null?void 0:p.decimalPlaces)==null?void 0:g.toString())||"0",onValueChange:x=>{var b,f,N;return o(Number(x),((b=t==null?void 0:t.formatNumber)==null?void 0:b.currency)||"",((f=t==null?void 0:t.formatNumber)==null?void 0:f.locale)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.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(x=>e.jsx(s.SelectItem,{value:x,children:x},x))})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Suffix"}),e.jsx(s.Input,{value:((j=t==null?void 0:t.formatNumber)==null?void 0:j.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:x=>{var b,f,N;return o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((f=t==null?void 0:t.formatNumber)==null?void 0:f.currency)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.locale)||"",x.target.value)}})]})]})]})}),e.jsx(s.Separator,{className:"my-3"}),e.jsx(kr,{colorRanges:i,setColorRanges:d})]})]})}function Ir(){return e.jsxs("div",{className:"space-y-6 px-6 py-2",children:[e.jsx(s.Accordion,{type:"single",collapsible:!0,children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"",children:"KPI Query"}),e.jsxs(s.AccordionContent,{className:"font-mono",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs",children:"SELECT current, previous FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"current - number"}),e.jsx("li",{children:"previous - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/kpi",children:"example"})," in the docs."]})]})]})}),e.jsx("section",{className:"",children:e.jsx(Er,{})}),e.jsx("div",{}),e.jsx("div",{})]})}function ps({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})]})}const Ar=[{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"}],Mr=["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"],Lr=Mr.map(t=>({label:t,value:t}));function Rr(){var d,u,m,h,p,g,j,x,b,f,N,k,I,w,C,v,T,y;const t=s.useEditorStore(O=>O.card),n=(u=(d=t==null?void 0:t.preferences)==null?void 0:d.mapVisualOptions)==null?void 0:u.topoJsonUrl,[a,r]=M.useState(((h=(m=t==null?void 0:t.preferences)==null?void 0:m.mapVisualOptions)==null?void 0:h.customTopoJsonUrl)||""),{setCardPreferences:o}=s.useEditorActions(),{data:l}=s.useTopoJson(t),c=Object.keys((l==null?void 0:l.objects)||{}).map(O=>({label:O,value:O}))||[],i=[{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:"p-6",children:[e.jsx(ps,{summary:"Map Chart",children:e.jsx("p",{className:"rounded-md bg-muted p-2 font-mono text-xs",children:"SELECT country, value FROM table"})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(ps,{open:!0,summary:"Settings",children:e.jsxs("div",{className:"space-y-3 px-2",children:[e.jsx(Ce,{className:"h-9",options:i,onValueChange:O=>{console.log("value",O),o({...t.preferences,mapVisualOptions:{topoJsonUrl:O}})},value:n||"",label:"Select Map"}),n==="custom"&&e.jsx(s.Input,{onChange:O=>{r(O.target.value)},onBlur:()=>{var O;console.log("onBlur",a),o({...t.preferences,mapVisualOptions:{...(O=t.preferences)==null?void 0:O.mapVisualOptions,customTopoJsonUrl:a}})},value:a,className:`h-9 w-full ${s.removeRing}`,placeholder:"Custom URL"}),l&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Map Object"}),e.jsx(Ce,{className:"h-9",options:c,value:((g=(p=t.preferences)==null?void 0:p.mapVisualOptions)==null?void 0:g.objectKey)||"",label:"Map Object",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,objectKey:O}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Projection"}),e.jsx(Ce,{className:"h-9",options:Ar,value:((x=(j=t.preferences)==null?void 0:j.mapVisualOptions)==null?void 0:x.projection)||"",label:"Projection",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projection:O}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Colors"}),e.jsx(Ce,{className:"h-9",options:Lr,value:((f=(b=t.preferences)==null?void 0:b.mapVisualOptions)==null?void 0:f.colorScale)||"",label:"Select Color Scale",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,colorScale:O}})}})]})]})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(ps,{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:((k=(N=t.preferences)==null?void 0:N.mapVisualOptions)==null?void 0:k.projectionScale)||1,onChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionScale:Number(O.target.value)}})}}),e.jsx(s.Label,{children:"X"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((C=(w=(I=t.preferences)==null?void 0:I.mapVisualOptions)==null?void 0:w.projectionOffset)==null?void 0:C[0])||0,onChange:O=>{var E,B,D,S;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionOffset:[Number(O.target.value),((S=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:S[1])||0]}})}}),e.jsx(s.Label,{children:"Y"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((y=(T=(v=t.preferences)==null?void 0:v.mapVisualOptions)==null?void 0:T.projectionOffset)==null?void 0:y[1])||0,onChange:O=>{var E,B,D,S;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionOffset:[((S=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:S[0])||0,Number(O.target.value)]}})}})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(Fe,{})]})}function Or(){var r;const t=s.useEditorStore(o=>o.card.preferences),{setCardPreferences:n}=s.useEditorStore(o=>o.actions);function a(o){n({...t,textVisualOptions:{...t==null?void 0:t.textVisualOptions,isDynamicText:o==="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 Je({cardType:t,docContent:n,suffix:a="Chart"}){let r="pie-donut-polar";return t==="funnel"&&(r="funnel"),e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} ${a}`}),e.jsx(s.AccordionContent,{children:n||e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT label, measure FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"label - category"}),e.jsx("li",{children:"measure - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:o=>o.stopPropagation(),className:"text-blue-700",href:`https://docs.semaphor.cloud/docs/charts/${r}`,children:"example"})," in the docs."]})]})})]}),t==="text"&&e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsx(s.AccordionContent,{className:"space-y-4 px-2 py-4",children:e.jsx(Or,{})})]}),!["range","text"].includes(t)&&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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Fr(){const t=s.useEditorStore(r=>{var o,l;return(l=(o=r==null?void 0:r.card)==null?void 0:o.preferences)==null?void 0:l.sortChart}),{setSortChart:n}=s.useEditorActions();function a(){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort"}),e.jsx(Ce,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"ASC",value:"asc"},{label:"DESC",value:"desc"}],value:t||"none",onValueChange:r=>{n(r)}})]})}return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:"Stacked Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT x-axis, stack-by, y-axis FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"x-axis - category"}),e.jsx("li",{children:"stack by - category"}),e.jsx("li",{children:"y-axis - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:r=>r.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/stacked",children:"example"})," in the docs."]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsxs(s.AccordionContent,{className:"space-y-4 px-2",children:[a(),e.jsx(Mt,{})]})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Br({cardType:t="table"}){console.log("cardType",t);const n=s.useEditorStore(o=>{var l;return(l=o.card)==null?void 0:l.preferences}),a=s.useEditorStore(o=>o.actions.setCardPreferences),r=o=>{a({...n,allowDownload:o})};return e.jsxs("div",{className:"space-y-6 px-6 py-2",children:[e.jsx(s.Accordion,{defaultValue:["item-3"],type:"multiple",children: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(Fe,{}),e.jsx(Ge,{})]})]})}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Checkbox,{onCheckedChange:r,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 Ft({color:t,onColorChange:n,onClose:a}){const[r,o]=M.useState(0),[l,c]=M.useState(100),[i,d]=M.useState(50),[u,m]=M.useState(t);M.useEffect(()=>{const b=$s(t);if(b){const f=qs(b.r,b.g,b.b);o(f.h),c(f.s),d(f.l),m(t)}},[t]);const h=b=>{o(b),g(b,l,i)},p=b=>{const f=b.currentTarget.getBoundingClientRect(),N=Math.max(0,Math.min(1,(b.clientX-f.left)/f.width)),k=Math.max(0,Math.min(1,(b.clientY-f.top)/f.height)),I=N*100,w=(1-k)*100;c(I),d(w),g(r,I,w)},g=(b,f,N)=>{const k=zr(b,f,N),I=Pr(k.r,k.g,k.b);m(I)},j=b=>{if(m(b),/^#[0-9A-Fa-f]{6}$/.test(b)){const f=$s(b);if(f){const N=qs(f.r,f.g,f.b);o(N.h),c(N.s),d(N.l)}}},x=()=>{/^#[0-9A-Fa-f]{6}$/.test(u)&&(n(u),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:p,onMouseMove:b=>{b.buttons===1&&p(b)},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:`${l}%`,top:`${100-i}%`,backgroundColor:u}})]}),e.jsx("div",{className:"space-y-2",children:e.jsx("input",{type:"range",min:"0",max:"360",value:r,onChange:b=>h(Number(b.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:u,onChange:b=>j(b.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:u}}),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:x,children:"OK"})]})]})}function $s(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 Pr(t,n,a){return"#"+((1<<24)+(t<<16)+(n<<8)+a).toString(16).slice(1)}function qs(t,n,a){t/=255,n/=255,a/=255;const r=Math.max(t,n,a),o=Math.min(t,n,a);let l=0,c=0;const i=(r+o)/2;if(r!==o){const d=r-o;switch(c=i>.5?d/(2-r-o):d/(r+o),r){case t:l=((n-a)/d+(n<a?6:0))/6;break;case n:l=((a-t)/d+2)/6;break;case a:l=((t-n)/d+4)/6;break}}return{h:Math.round(l*360),s:Math.round(c*100),l:Math.round(i*100)}}function zr(t,n,a){t/=360,n/=100,a/=100;let r,o,l;if(n===0)r=o=l=a;else{const c=(u,m,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?u+(m-u)*6*h:h<.5?m:h<.6666666666666666?u+(m-u)*(.6666666666666666-h)*6:u),i=a<.5?a*(1+n):a+n-a*n,d=2*a-i;r=c(d,i,t+1/3),o=c(d,i,t),l=c(d,i,t-1/3)}return{r:Math.round(r*255),g:Math.round(o*255),b:Math.round(l*255)}}const _r=["#000000","#ffffff","#6b7280","#dc2626","#ea580c","#ca8a04","#16a34a","#0891b2","#2563eb","#7c3aed","#c026d3","#e11d48","#0f172a","#f3f4f6","#fbbf24"];function Bt(){var k,I,w,C,v,T,y,O,E,B;const t=s.useEditorStore(D=>D.card),n=s.useEditorStore(D=>{var S;return(S=D.card)==null?void 0:S.preferences}),{setCardPreferences:a,updateCardInFrame:r}=s.useEditorActions(),{data:o}=s.useDashboardCardQuery(t),[l,c]=M.useState({}),[i,d]=M.useState(null),[u,m]=M.useState(null),h=M.useMemo(()=>{var F,R,A,P,Y,z,X;if(!(o!=null&&o.records)||o.records.length===0)return[];const D=(t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine",S=(t==null?void 0:t.type)==="bar"||(t==null?void 0:t.type)==="line",L=((F=t==null?void 0:t.config)==null?void 0:F.pivotByColumns)&&t.config.pivotByColumns.length>0;if((D||S)&&L){if(o.pivotSchema&&Array.isArray(o.pivotSchema)){const te=new Set;return o.pivotSchema.forEach(K=>{K.alias&&te.add(K.alias)}),Array.from(te)}if(o.records.length>0){const te=o.records[0],K=Object.keys(te),W=new Set;(R=t==null?void 0:t.config)!=null&&R.groupByColumns&&t.config.groupByColumns.forEach(_=>{W.add(_.label||_.name),W.add(_.alias||_.name)});const G=new Set;return(A=t==null?void 0:t.config)!=null&&A.metricColumns&&t.config.metricColumns.forEach(_=>{const V=_.alias||_.name;G.add(V),G.add(`${V}_count`),G.add(`${V}_sum`),G.add(`${V}_avg`),G.add(`${V}_min`),G.add(`${V}_max`);const se=_.entityName||_.qualifiedEntityName;se&&(G.add(`${se}_${V}`),G.add(`${se}_${V}_count`))}),K.filter(_=>!W.has(_)&&!G.has(_))}}if((S||D)&&!L&&((Y=(P=t==null?void 0:t.config)==null?void 0:P.metricColumns)!=null&&Y.length))return t.config.metricColumns.map(te=>te.alias||te.label||te.name);if((X=(z=t==null?void 0:t.config)==null?void 0:z.groupByColumns)!=null&&X.length){const te=t.config.groupByColumns[0],K=te.label||te.name,W=new Set;return o.records.forEach(G=>{const ee=G[K];ee!=null&&W.add(String(ee))}),Array.from(W)}return[]},[o,(k=t==null?void 0:t.config)==null?void 0:k.groupByColumns,(I=t==null?void 0:t.config)==null?void 0:I.pivotByColumns,(w=t==null?void 0:t.config)==null?void 0:w.metricColumns,t==null?void 0:t.type]),p=M.useMemo(()=>s.getDefaultChartColors(),[]);M.useEffect(()=>{const D={};h.forEach((S,L)=>{D[S]=s.getColorForValue(S,L,n==null?void 0:n.colorConfig)}),c(D)},[h,n==null?void 0:n.colorConfig,p]);const g=(D,S)=>{const L={...l,[D]:S};c(L);const F={...n||{},colorConfig:{segments:L}};a(F);const R={...t,preferences:F};r(R)},j=(D,S)=>{var Y;const L=p[S%p.length],{[D]:F,...R}=((Y=n==null?void 0:n.colorConfig)==null?void 0:Y.segments)||{},A={...n||{},colorConfig:{segments:R}};a(A);const P={...t,preferences:A};r(P),c(z=>({...z,[D]:L}))};if(!h.length||!((t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine"?((v=(C=t==null?void 0:t.config)==null?void 0:C.groupByColumns)==null?void 0:v.length)||((y=(T=t==null?void 0:t.config)==null?void 0:T.pivotByColumns)==null?void 0:y.length):(E=(O=t==null?void 0:t.config)==null?void 0:O.groupByColumns)==null?void 0:E.length)||["table","kpi","text","custom"].includes(t.type))return null;const f=()=>{const D={...n||{},colorConfig:{segments:{}}};a(D);const S={...t,preferences:D};r(S);const L={};h.forEach((F,R)=>{L[F]=s.getColorForValue(F,R,void 0)}),c(L)},N=Object.keys(((B=n==null?void 0:n.colorConfig)==null?void 0:B.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(La,{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:N&&e.jsxs("button",{className:"ml-auto flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:f,children:[e.jsx(s.RotateCcw,{className:"h-3 w-3"}),"Reset All"]})})}),e.jsx("div",{className:"max-h-[200px] space-y-2 overflow-y-auto pr-1",children:h.map((D,S)=>{const L=s.isDefaultColor(l[D],S),F=!L;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:i===D,onOpenChange:R=>d(R?D: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:l[D]}})}),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:p.slice(0,10).map((R,A)=>e.jsxs("button",{className:s.cn("relative h-5 w-5 rounded border-2 transition-all hover:scale-110",l[D]===R?"border-gray-900":"border-transparent"),style:{backgroundColor:R},onClick:()=>{g(D,R),d(null)},children:[A===S%p.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:R})]},`default-${A}`))})]}),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:_r.map((R,A)=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border transition-all hover:scale-110",l[D]===R?"border-2 border-gray-900":R==="#ffffff"?"border border-gray-300":"border border-transparent"),style:{backgroundColor:R},onClick:()=>{g(D,R),d(null)},children:e.jsx("span",{className:"sr-only",children:R})},`preset-${A}`))})]}),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:()=>{m({value:D,color:l[D]}),d(null)},children:"Custom color"}),!L&&e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>{j(D,S),d(null)},children:[e.jsx(s.RotateCcw,{className:"h-3 w-3"}),"Reset"]})]})]})})]}),e.jsx("span",{className:"flex-1 truncate text-sm",children:D}),F&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"(custom)"})]},D)})}),u&&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:()=>m(null)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(Ft,{color:u.color,onColorChange:D=>{g(u.value,D),m(null)},onClose:()=>m(null)})})]})]})})]})}function we({value:t,onSave:n,placeholder:a="",type:r="text",className:o=""}){const[l,c]=M.useState(t??""),[i,d]=M.useState(!1);M.useEffect(()=>{c(t??"")},[t]);const u=()=>{n(l),d(!1)},m=()=>{c(t??""),d(!1)};return e.jsxs("div",{className:`flex items-center gap-2 ${o}`,children:[e.jsx(s.Input$1,{placeholder:a,type:r,value:i?l:t??"",onChange:h=>{c(h.target.value),d(!0)},onFocus:()=>d(!0),onClick:h=>h.stopPropagation(),className:"h-8 text-xs",onPointerDown:h=>h.stopPropagation(),onKeyDown:h=>{h.stopPropagation(),h.key==="Enter"&&i&&l!==t?u():h.key==="Escape"&&m()},"aria-label":a||"Edit field"}),i&&l!==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:u,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:m,children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]})]})}const Vr=["auto","number","currency","percent","scientific","date"],Ur=[{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"}],Gr=[{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"}],Yr=t=>t.charAt(0).toUpperCase()+t.slice(1);function Is({formatOptions:t={},onFormatOptionsChange:n,showTitle:a=!0,title:r="NUMBER FORMAT"}){const o=t.type||"auto",l=(i,d)=>{n({...t,[i]:d})},c=()=>o==="currency"?2:o==="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:o,onValueChange:i=>l("type",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Vr.map(i=>e.jsx(s.SelectItem,{value:i,className:"text-xs",children:i==="auto"?"Auto (Default)":Yr(i)},i))})]})]}),o!=="auto"&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-4",children:[["number","currency","percent"].includes(o)&&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??c(),onChange:i=>l("decimalPlaces",parseInt(i.target.value)||0),className:"h-8 text-xs"})})]}),o==="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:i=>l("currency",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Ur.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),["number","currency"].includes(o)&&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:i=>l("useSuffix",i)})]}),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:i=>l("locale",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Gr.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),o==="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:i=>l("prefix",i.target.value),className:"h-8 text-xs"})})]}),o==="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:i=>l("suffix",i.target.value),className:"h-8 text-xs"})})]}),["number","currency"].includes(o)&&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:i=>l("negativeInParentheses",i)})]}),o==="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:i=>l("multiplyBy",i.target.value?parseFloat(i.target.value):void 0),className:"h-8 text-xs"})})]}),o==="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:i=>l("dateFormat",i.target.value),className:"h-8 text-xs"})})]})]})]})}function Hs({axis:t,label:n,type:a,config:r,onChange:o}){var h,p,g,j,x,b,f,N,k,I,w,C;const l=(v,T)=>{o({...r,[v]:T})},c=(v,T)=>{var y,O;o({...r,name:{enabled:v==="enabled"?T:((y=r==null?void 0:r.name)==null?void 0:y.enabled)??!1,text:v==="text"?T:(O=r==null?void 0:r.name)==null?void 0:O.text}})},i=(v,T)=>{var y,O;o({...r,labels:{enabled:v==="enabled"?T:((y=r==null?void 0:r.labels)==null?void 0:y.enabled)??!0,rotation:v==="rotation"?T:(O=r==null?void 0:r.labels)==null?void 0:O.rotation}})},d=(v,T)=>{o({...r,scale:{...r==null?void 0:r.scale,[v]:T===""?"auto":Number(T)}})},u=t==="x"?["auto","top","bottom"]:["auto","left","right"],m=["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:v=>l("enabled",v),onClick:v=>v.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 justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TITLE"}),e.jsx(s.SmallSwitch,{checked:((h=r==null?void 0:r.name)==null?void 0:h.enabled)??!1,onCheckedChange:v=>c("enabled",v)})]}),((p=r==null?void 0:r.name)==null?void 0:p.enabled)&&e.jsx(we,{placeholder:`${n} title`,value:((g=r==null?void 0:r.name)==null?void 0:g.text)||"",onSave:v=>c("text",v),className:""})]}),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:v=>l("position",v),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(v=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:v==="auto"?"Auto (Default)":s.titleCase(v)},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",children:"LABELS"}),e.jsx(s.SmallSwitch,{checked:((j=r==null?void 0:r.labels)==null?void 0:j.enabled)!==!1,onCheckedChange:v=>i("enabled",v)})]}),((x=r==null?void 0:r.labels)==null?void 0:x.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(((b=r==null?void 0:r.labels)==null?void 0:b.rotation)||"auto"),onValueChange:v=>i("rotation",v==="auto"?"auto":Number(v)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:m.map(v=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:v==="auto"?"Auto (Default)":`${v}°`},v))})]})]})]}),a==="value"&&e.jsx(Is,{formatOptions:(r==null?void 0:r.formatOptions)||{},onFormatOptionsChange:v=>o({...r,formatOptions:v}),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(we,{type:"number",placeholder:"auto",value:((f=r==null?void 0:r.scale)==null?void 0:f.min)==="auto"||((N=r==null?void 0:r.scale)==null?void 0:N.min)===void 0?"":String(r.scale.min),onSave:v=>d("min",v),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(we,{type:"number",placeholder:"auto",value:((k=r==null?void 0:r.scale)==null?void 0:k.max)==="auto"||((I=r==null?void 0:r.scale)==null?void 0:I.max)===void 0?"":String(r.scale.max),onSave:v=>d("max",v),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(we,{type:"number",placeholder:"auto",value:((w=r==null?void 0:r.scale)==null?void 0:w.stepSize)==="auto"||((C=r==null?void 0:r.scale)==null?void 0:C.stepSize)===void 0?"":String(r.scale.stepSize),onSave:v=>d("stepSize",v),className:""})})]})]})]})]})]})}function Pt(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var i;return(i=c.card)==null?void 0:i.preferences}),{setCardPreferences:a,updateCardInFrame:r}=s.useEditorActions();if(!t||["tornado","pyramid","kpi"].includes(t.type))return null;const o=s.AxisConfigurator.getAxisInfo(t.type,n);if(!o.hasXAxis&&!o.hasYAxis)return null;const l=(c,i)=>{const u={...n||{},[c==="x"?"xAxisConfig":"yAxisConfig"]:i};a(u);const m={...t,preferences:u};r(m)};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(at,{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:[o.hasXAxis&&e.jsx(Hs,{axis:"x",label:"X-Axis",type:o.xAxisType,config:n==null?void 0:n.xAxisConfig,onChange:c=>l("x",c)}),o.hasYAxis&&e.jsx(Hs,{axis:"y",label:"Y-Axis",type:o.yAxisType,config:n==null?void 0:n.yAxisConfig,onChange:c=>l("y",c)})]})})]})}function zt(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var m,h,p,g;return(g=(p=(h=(m=u.card)==null?void 0:m.preferences)==null?void 0:h.chartOptions)==null?void 0:p.plugins)==null?void 0:g.legend}),{setLegendOptions:a}=s.useEditorActions();if(!t||!s.chartSupportsLegend(t.type))return null;const r="bottom",o="center",l=!(t.type==="stackedBar"||t.type==="stackedLine"),c=(u,m)=>{const h={...n,[u]:m};a(h)},i=["top","bottom","left","right"],d=["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(Na,{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:(n==null?void 0:n.display)??l,onCheckedChange:u=>c("display",u)})]}),((n==null?void 0:n.display)??l)&&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:(n==null?void 0:n.position)||r,onValueChange:u=>c("position",u),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:i.map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:s.titleCase(u)},u))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Alignment"}),e.jsxs(s.Select,{value:(n==null?void 0:n.align)||o,onValueChange:u=>c("align",u),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:d.map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:s.titleCase(u)},u))})]})]})]})]})})]})}function _t(){var T,y,O,E,B,D,S,L,F;const t=s.useEditorStore(R=>R.card),n=s.useEditorStore(R=>{var A,P;return(P=(A=R.card)==null?void 0:A.preferences)==null?void 0:P.dataLabelsConfig}),a=s.useEditorStore(R=>{var A;return(A=R.card)==null?void 0:A.preferences}),{setCardPreferences:r,updateCardInFrame:o}=s.useEditorActions();if(!t||!s.chartSupportsDataLabels(t.type))return null;const l=((T=a==null?void 0:a.chartOptions)==null?void 0:T.indexAxis)==="y",c=t.type==="stackedBar"||t.type==="stackedLine",i=t.type==="pie"||t.type==="doughnut"||t.type==="polarArea"||t.type==="funnel",d=!i,u=(O=(y=a==null?void 0:a.chartOptions)==null?void 0:y.plugins)==null?void 0:O.datalabels,m=(u==null?void 0:u.display)!==!1&&((u==null?void 0:u.anchor)||(u==null?void 0:u.align)),h=(n==null?void 0:n.enabled)!==void 0?n.enabled:m,p=(R,A)=>{const P={...n,[R]:A},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},g=(R,A)=>{const P={...n,font:{...n==null?void 0:n.font,[R]:A}},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},j=(R,A)=>{const P={...n,formatOptions:{...n==null?void 0:n.formatOptions,[R]:A}},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},b=(()=>{const R=t.type;return R==="stackedBar"||R==="stackedLine"||R==="pie"||R==="doughnut"?"center":l?"right":"top"})();let f=[];c||i?f=["center"]:f=["auto",...(l?["center","left","right"]:["center","top","bottom"]).filter(A=>A!==b),"custom"];const N=()=>s.titleCase(b),k=["center","start","end"],I=["center","start","end","top","bottom"],w=d?["auto","number","currency","percent","none"]:["number","currency","percent","none"],C=[{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"}],v=[{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(Ua,{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:h,onCheckedChange:R=>p("enabled",R)})]}),h&&e.jsxs(e.Fragment,{children:[!c&&!i&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:(n==null?void 0:n.position)||"auto",onValueChange:R=>p("position",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:f.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:R==="auto"?N():R==="custom"?"Custom (Advanced)":s.titleCase(R)},R))})]})]}),c&&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:(n==null?void 0:n.showTotal)??!1,onCheckedChange:R=>p("showTotal",R)})]}),(n==null?void 0:n.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:(n==null?void 0:n.anchor)||"center",onValueChange:R=>p("anchor",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:k.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:s.titleCase(R)},R))})]})]}),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((n==null?void 0:n.align)||"center"),onValueChange:R=>p("align",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:I.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:s.titleCase(R)},R))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Format"}),e.jsxs(s.Select,{value:(n==null?void 0:n.format)||(d?"auto":"none"),onValueChange:R=>p("format",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:w.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:R==="auto"&&d?"Auto (Use Axis)":R==="none"?"None (Raw Value)":s.titleCase(R)},R))})]})]}),(n==null?void 0:n.format)&&!["auto","none"].includes(n.format)&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[["number","currency","percent"].includes(n.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(we,{type:"number",placeholder:"0",value:String(((E=n==null?void 0:n.formatOptions)==null?void 0:E.decimalPlaces)??(n.format==="currency"?2:n.format==="percent"?1:0)),onSave:R=>j("decimalPlaces",Number(R)),className:""})})]}),n.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=n==null?void 0:n.formatOptions)==null?void 0:B.currency)||"USD",onValueChange:R=>j("currency",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:C.map(R=>e.jsx(s.SelectItem,{value:R.value,className:"text-xs",children:R.label},R.value))})]})]}),["number","currency"].includes(n.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:((D=n==null?void 0:n.formatOptions)==null?void 0:D.useSuffix)??!1,onCheckedChange:R=>j("useSuffix",R)})]}),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:((S=n==null?void 0:n.formatOptions)==null?void 0:S.locale)||"en-US",onValueChange:R=>j("locale",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:v.map(R=>e.jsx(s.SelectItem,{value:R.value,className:"text-xs",children:R.label},R.value))})]})]})]}),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(we,{type:"number",placeholder:"12",value:String(((L=n==null?void 0:n.font)==null?void 0:L.size)||12),onSave:R=>g("size",Number(R)),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:((F=n==null?void 0:n.font)==null?void 0:F.weight)||"normal",onValueChange:R=>g("weight",R),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:(n==null?void 0:n.color)==="auto"||!(n!=null&&n.color)?"auto":"custom",onValueChange:R=>{R==="auto"&&p("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(we,{type:"number",placeholder:"0",value:String((n==null?void 0:n.rotation)||0),onSave:R=>p("rotation",Number(R)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"degrees"})]})]})]})]})})]})}function $r(){return e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx("h3",{className:"text-sm font-medium",children:"Chart Configuration"}),e.jsxs(s.Accordion,{type:"single",collapsible:!0,className:"w-full px-2",children:[e.jsx(Bt,{}),e.jsx(Pt,{}),e.jsx(zt,{}),e.jsx(_t,{})]})]})}const qr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT dimension, cohort, metric FROM table"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/tornado",children:"example"})," in the docs."]})]}),Hr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT y-axis, label, range-from, range-to, range-value FROM table"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/range",children:"example"})," in the docs."]})]}),Wr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT text FROM table limit 1"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/text",children:"example"})," in the docs."]})]});function Kr(){const t=s.useEditorStore(a=>a.card.type);function n(a){const r=["kpi","table","text","map","custom"],o=l=>r.includes(a)?l:e.jsxs(e.Fragment,{children:[l,e.jsx($r,{})]});switch(a){case"stackedBar":case"stackedLine":return o(e.jsx(Fr,{}));case"tornado":case"pyramid":return o(e.jsx(Je,{docContent:qr,cardType:a}));case"kpi":return e.jsx(Ir,{});case"line":case"bar":return o(e.jsx(Nr,{cardType:a}));case"range":return o(e.jsx(Je,{docContent:Hr,cardType:a}));case"pie":case"doughnut":case"polarArea":case"radar":case"funnel":return o(e.jsx(Je,{cardType:a}));case"bubble":case"scatter":return o(e.jsx(Cr,{cardType:a}));case"table":return e.jsx(Br,{cardType:a});case"text":return e.jsx(Je,{docContent:Wr,cardType:a,suffix:"Visual"});case"map":return e.jsx(Rr,{});case"custom":return e.jsx(jr,{});default:return o(e.jsx(Dr,{}))}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[n(t),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function Vt({label:t,column:n,functions:a,onFunctionChange:r}){let o=a[0];"aggregate"in n?o=a.find(c=>c.value===n.aggregate)||a[0]:"granularity"in n&&(o=a.find(c=>c.value===n.granularity)||a[0]);function l(c){r(c)}return e.jsx(Ce,{className:"flex h-8 w-8 justify-center overflow-clip rounded-none border-none bg-muted px-0 [&>svg]:hidden",icon:o.logo,options:a,value:o.value,onValueChange:c=>l(c),label:t,showPlaceholderLabel:!1})}const Qr=[{label:"Sum",value:"SUM",logo:e.jsx(tt,{className:"size-3.5"})},{label:"Count",value:"COUNT",logo:e.jsx(De,{className:"size-3.5"})},{label:"Unique",value:"DISTINCT",logo:e.jsx(ja,{className:"size-3.5"})},{label:"Average",value:"AVG",logo:e.jsx(ta,{className:"size-3.5"})},{label:"Min",value:"MIN",logo:e.jsx(s.ArrowDown,{className:"size-3.5"})},{label:"Max",value:"MAX",logo:e.jsx(s.ArrowUp,{className:"size-3.5"})}];function Jr({column:t}){const{updateMetricColumnOld:n}=s.useEditorActions();let a=Qr;s.isTextDataType(t.type)&&(a=a.filter(o=>["COUNT","DISTINCT"].includes(o.value))),s.isNumberDataType(t.type)&&(a=a.filter(o=>!["DISTINCT"].includes(o.value)));function r(o){const l={...t,aggregate:o,label:He(t.name,o)};n(t.id,l)}return e.jsx(Vt,{column:t,functions:a,onFunctionChange:o=>r(o),label:"Aggregation"})}const Xr=[{label:"Day (D)",value:"day",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"D"})},{label:"Week (W)",value:"week",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"W"})},{label:"Month (M)",value:"month",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"M"})},{label:"Year (Y)",value:"year",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"Y"})}];function Zr({column:t}){const{updateGroupByColumnOld:n}=s.useEditorActions();function a(r){const o={...t,granularity:r,label:Ue(t.name,r)};n(t.id,o)}return e.jsx(Vt,{column:t,functions:Xr,onFunctionChange:r=>a(r),label:"Granularity"})}function el({col:t,onChange:n,droppableId:a}){const{columns:r}=s.useDataColumns(),o=M.useMemo(()=>{let i=[];(a===Ae||a===Me||a===Le)&&(i=r);const d=i==null?void 0:i.filter(u=>u.column_name!==t.name);return d==null?void 0:d.map(u=>({id:u.column_name,value:u.column_name}))},[r,a,t.name]),l=[{id:t.name,value:t.name}];function c(i){const d=r==null?void 0:r.find(u=>{var m;return u.column_name===((m=i[0])==null?void 0:m.id)});d&&n(d)}return o!=null&&o.length?e.jsx(s.ComboBox2,{multiple:!1,options:o,selectedOptions:l,onChange:c,selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"border-none bg-muted pl-0 pr-8"}):e.jsx("input",{disabled:!0,type:"text",className:"overflow-hidden truncate text-ellipsis whitespace-nowrap bg-muted text-sm",value:t.name})}function Ut({column:t}){const n=s.useEditorStore(d=>d.card.type),a=s.useEditorStore(d=>{var u,m;return(m=(u=d.card)==null?void 0:u.config)==null?void 0:m.metricColumns}),r=(a==null?void 0:a.map(d=>d.label))||[],o=r==null?void 0:r.find(d=>d===t.label||d===t.name),l=o?r.indexOf(o):-1;function c(){return e.jsx("div",{className:"pr-1",children:o&&e.jsx(Rt,{idx:l,col:o,children:e.jsx("div",{className:"w-[130px] text-xs text-muted-foreground",children:"Display Series As"})})})}function i(){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(Ot,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(n)&&c(),["pie","doughnut"].includes(n)&&i()]})}function sl({column:t,type:n,onRemoveColumn:a,droppableId:r}){const[o,l]=M.useState(!1),{updateGroupByColumnOld:c,updateMetricColumnOld:i,updatePivotByColumnOld:d}=s.useEditorActions(),{attributes:u,listeners:m,setNodeRef:h,transform:p,transition:g,isDragging:j}=s.useSortable({id:t.id,data:{type:n}}),x=p?{opacity:j?.5:void 0,transform:s.CSS.Translate.toString(p),transition:g}:void 0,b=s.isTextDataType(t.type);function f(C){const v=s.isNumberDataType(C.data_type),T=s.isTextDataType(C.data_type),y=s.isDateDataType(C.data_type),O=v?"number":T?"string":y?"date":"string";if(r===Ae){if(T){const E={id:t.id,name:C.column_name,type:O,role:"groupby"};c(t.id,E)}if(y){const E={id:t.id,name:C.column_name,type:O,role:"groupby",label:Ue(C.column_name,"month"),granularity:"month"};c(t.id,E)}}if(r===Le){if(T){const E={id:t.id,name:C.column_name,type:O,role:"groupby"};d(t.id,E)}if(y){const E={id:t.id,name:C.column_name,type:O,label:Ue(C.column_name,"month"),granularity:"month",role:"groupby"};d(t.id,E)}}if(r===Me){const E={id:t.id,name:C.column_name,type:O,role:"metric",label:He(C.column_name,"SUM"),aggregate:v?"SUM":"COUNT"};i(t.id,E)}}function N(){if(r===Me)return e.jsx("div",{"data-setting-container":"",className:"mt-1.5 max-h-32 overflow-y-auto rounded-md border border-border p-3 text-sm",children:e.jsx(Ut,{column:t})})}function k(){const C=s.isDateDataType(t.type);if(r===Me)return e.jsx(Jr,{column:t});if((r===Ae||r===Le)&&C)return e.jsx(Zr,{column:t})}function I(){return e.jsx("div",{className:s.cn("grow",{"pl-3":(r===Ae||r===Le)&&b}),children:e.jsx(el,{col:t,onChange:f,droppableId:r})})}function w(){return e.jsx("div",{"data-setting-actions":"",className:"flex h-full items-center gap-2",children:e.jsx("button",{className:"h-full pl-2",onClick:()=>l(!o),children:o?e.jsx(za,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")}):e.jsx(et,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")})})})}return e.jsx("div",{...m,...u,ref:h,style:x,children:e.jsxs("div",{className:"group flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"grow",children:[e.jsxs("div",{className:"flex h-8 grow items-center justify-between rounded-md bg-muted",children:[w(),k(),I()]}),o&&N()]}),e.jsx("div",{className:s.cn("opacity-0 transition-opacity duration-200 group-hover:opacity-100",{hidden:o}),children:e.jsx("button",{onClick:()=>a(t.id),children:e.jsx(s.X,{className:"size-3 cursor-pointer text-muted-foreground"})})})]})})}function fs({id:t,label:n,columns:a,previewColumns:r,sortableType:o,onRemoveColumn:l}){var x,b;const{setNodeRef:c,isOver:i,over:d}=s.useDroppable({id:t}),u=s.useDndStore(f=>f.activeId),m=s.useEditorStore(f=>{var N;return(N=f.card)==null?void 0:N.type}),h=i||((b=(x=d==null?void 0:d.data)==null?void 0:x.current)==null?void 0:b.type)===o,p=u?r:a,g=o===ts?"Rows":o===as?"Pivot Columns":"Columns";function j(){if(!p||p.length===0)return e.jsx("div",{className:"mr-5 flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground/80 bg-background px-2 py-1 text-sm text-muted-foreground",children:e.jsx("span",{className:"invisible text-muted-foreground/70 group-hover:visible",children:"Drag here"})})}return e.jsx(s.SortableContext,{items:a==null?void 0:a.map(f=>f.id),children:e.jsxs("div",{className:s.cn("group space-y-2 rounded-md p-4",h&&"border border-muted-foreground/20"),ref:c,children:[e.jsxs("div",{className:"flex items-center justify-between pr-5",children:[e.jsx(s.Label,{className:"text-sm",children:n}),m!=="table"&&e.jsx("span",{className:"text-xs text-muted-foreground/50",children:g})]}),j(),e.jsx("div",{className:"space-y-2",children:p==null?void 0:p.map(f=>f.id===bt.id?e.jsx(tl,{},f.id):e.jsx(sl,{droppableId:t,type:o,column:f,onRemoveColumn:l},f.id))})]})})}function tl(){return e.jsx("div",{className:"mr-5 flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground bg-background px-2 py-1 text-sm",children:e.jsx("span",{className:"text-muted-foreground/70",children:"Drop here"})})}function Gt({children:t,id:n,type:a}){const{attributes:r,listeners:o,setNodeRef:l,transform:c,transition:i,isDragging:d}=s.useSortable({id:n,data:{type:a}}),u=c?{opacity:d?.5:void 0,transform:s.CSS.Translate.toString(c),transition:i}:void 0;return e.jsx("div",{...o,...r,ref:l,style:u,children:t})}function al(){const t=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.orderBy})||[],n=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.groupByColumns})||[],a=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.metricColumns})||[],{addOrderByColumn:r,removeOrderByColumn:o,updateOrderByColumn:l}=s.useEditorActions(),c=[...n,...a];if(c.length===0)return e.jsx(e.Fragment,{});const i=e.jsx(na,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),d=e.jsx(sa,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),u=e.jsx(aa,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),m=e.jsx(ea,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),h=c==null?void 0:c.filter(f=>!t.some(N=>N.columnId===f.id)).map(f=>({id:f.id,value:f.label||f.name}));function p(f,N){const k=g(f);return k?k.role==="metric"?N==="asc"?u:m:N==="asc"?i:d:null}function g(f){return c.find(N=>N.id===f)}function j(f){const N=t.find(k=>k.columnId===f);if(N){const k={...N,direction:N.direction==="asc"?"desc":"asc"};l(k)}}const x=f=>{r({columnId:f.id,direction:"asc"})};function b(f){const N=t.find(k=>k.columnId===f);N&&o(N)}return e.jsx(s.SortableContext,{items:t.map(f=>Ye(f.columnId)),children:e.jsxs("div",{className:"space-y-2 rounded-md p-4 text-sm",children:[e.jsx(s.Label,{className:"text-sm",children:"Sort By"}),h.length>0&&e.jsx("div",{className:"mr-5",children:e.jsx(s.ComboBox2,{multiple:!1,options:h,selectedOptions:[],onChange:f=>x(f[0]),selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"h-8 bg-muted border-none"})}),t.map(f=>{var N,k;return e.jsx(Gt,{id:Ye(f.columnId),type:Ds,children:e.jsx("div",{className:"group flex h-8 items-center gap-2 rounded-sm p-0",children:e.jsxs("div",{className:"flex h-full grow items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex h-full grow items-center justify-between gap-2 rounded-sm bg-muted px-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(et,{className:"size-3 cursor-move text-muted-foreground hover:text-foreground"}),e.jsx(is,{className:"w-[175px] text-sm",children:((N=g(f.columnId))==null?void 0:N.label)||((k=g(f.columnId))==null?void 0:k.name)})]}),e.jsx("button",{title:f.direction==="asc"?"Ascending":"Descending",onClick:()=>j(f.columnId),className:"rounded-sm p-0",children:p(f.columnId,f.direction)})]}),e.jsx("div",{children:e.jsx("button",{onClick:()=>b(f.columnId),className:"rounded-sm p-0",children:e.jsx(s.X,{className:"size-3 text-muted-foreground opacity-0 transition-opacity duration-200 hover:text-foreground group-hover:opacity-100"})})})]})},f.columnId)},Ye(f.columnId))})]})})}function nl(){const t=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.groupByColumns)||[]}),n=s.useEditorStore(b=>b.card.type),a=s.useDndStore(b=>b.previewGroupByColumns),r=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.metricColumns)||[]}),o=s.useDndStore(b=>b.previewMetricColumns),l=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.pivotColumns)||[]}),c=s.useDndStore(b=>b.previewPivotColumns),{removeColumnFromGroupBy:i,removeColumnFromMetricColumns:d,removeColumnFromPivotBy:u}=s.useEditorActions();function m(b){i(b)}function h(b){d(b)}function p(b){u(b)}let g="Group By",j="Metrics",x="Stack By";return n==="table"&&(g="Rows",j="Metrics",x="Columns"),e.jsxs("div",{className:"flex h-full w-full flex-col gap-3 py-4",children:[e.jsx(kt,{iconClassName:"size-[19px]"}),e.jsxs(s.CustomScrollArea,{className:"flex min-h-0 grow basis-0 flex-col gap-4 overflow-y-auto",children:[e.jsxs("div",{className:"flex flex-col gap-4 p-4",children:[e.jsx(fs,{onRemoveColumn:m,sortableType:ts,id:Ae,label:g,columns:t,previewColumns:a}),e.jsx(fs,{onRemoveColumn:p,sortableType:as,id:Le,label:x,columns:l,previewColumns:c}),e.jsx(fs,{onRemoveColumn:h,sortableType:vs,id:Me,label:j,columns:r,previewColumns:o}),e.jsx(al,{})]}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function As({children:t,column:n,id:a,sortableType:r,className:o}){const[l,c]=M.useState(!1),{removeEditorFilter:i,clearEditorFilter:d}=s.useEditorActions(),u=s.useEditorStore(h=>{var p,g;return(g=(p=h.card.queryConfig)==null?void 0:p.filters)==null?void 0:g.some(j=>j.filterColumnName===n.name)});function m(h){i(h)}return e.jsx(Gt,{id:a,type:r,children:e.jsxs("div",{className:s.cn("group space-y-1 rounded-md bg-muted px-3 py-2",{"border-border":l}),children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-sm",children:n.name}),u&&e.jsx("button",{onClick:()=>d(n),children:e.jsx(s.FilterX,{className:"size-3 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground"})})]}),e.jsx("div",{"data-setting-actions":"",className:"invisible flex h-full items-center gap-2 group-hover:visible",children:e.jsx("button",{onClick:()=>m(n),children:e.jsx(s.X,{className:"size-3.5 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground"})})})]}),e.jsxs("div",{className:s.cn("group flex items-center rounded-t-md text-sm",!l&&"rounded-b-md",l&&"border border-border"),children:[e.jsx("div",{children:e.jsx(s.GripVertical,{className:"mr-2 size-3.5 cursor-move items-center justify-center p-0 text-muted-foreground/60 hover:text-foreground"})}),e.jsx("div",{className:s.cn("grow cursor-pointer overflow-hidden truncate text-ellipsis whitespace-nowrap",o),children:t})]})]})})}function rl({column:t,sortableType:n}){const a=s.useDashboardStore(k=>k.themeStyle),r=s.useEditorStore(k=>{var I,w;return(w=(I=k.card)==null?void 0:I.queryConfig)==null?void 0:w.filters}),o=s.useEditorStore(k=>{var I,w;return(w=(I=k.card.queryConfig)==null?void 0:I.filterColumns)==null?void 0:w.find(C=>C.name===t.name)}),{selectedConnectionId:l,selectedDatabaseName:c,selectedTableName:i}=s.useEditorAside(),d=M.useMemo(()=>{var k;return(k=r==null?void 0:r.find(I=>I.filterColumnName===t.name))==null?void 0:k.filterValue},[r,t.name]),u=M.useMemo(()=>Array.isArray(d)?d.map(k=>({id:k,value:k})):[],[d]),{updateEditorFilterValue:m}=s.useEditorActions(),h={column:t.name,sql:t.sql,id:t.name,connectionId:l,dataType:t.type},{data:p,isLoading:g,isFetching:j,isError:x}=s.useFilterQuery(h),b=M.useMemo(()=>{var I;return h.column?(I=p==null?void 0:p.records)==null?void 0:I.map(w=>{let C=h.column.split(".").slice(-1)[0].replace(/"/g,"");return w[C]===void 0&&(C=C.toLowerCase()),{id:w[C],value:w[C]}}):[]},[p,h.column]);function f(k){const I=k.map(w=>w.id);m(t.name,I)}function N(){return g||j?e.jsx(s.Skeleton,{style:{borderRadius:a==null?void 0:a.controlInputRadius},className:"h-8 min-w-60 bg-foreground/10"}):x?e.jsx("div",{className:"flex h-8 min-w-60 items-center bg-muted px-2 text-sm",children:"Error"}):e.jsx(s.ComboBox2,{renderFilterModeButton:()=>e.jsx(ll,{columnName:t.name}),showNegativeIndicator:(o==null?void 0:o.mode)==="exclude",options:b,onChange:f,selectedOptions:u,selectAllChecked:!1,onSelectAllCheckedChange:()=>{}})}return e.jsx(As,{className:"w-60",id:t.id,sortableType:n,column:t,children:N()})}function ll({columnName:t}){const{setEditorFilterMode:n}=s.useEditorActions(),a=s.useEditorStore(o=>{var l,c;return(c=(l=o.card.queryConfig)==null?void 0:l.filterColumns)==null?void 0:c.find(i=>i.name===t)});function r(){(a==null?void 0:a.mode)==="exclude"?n(t,"include"):n(t,"exclude")}return e.jsx(s.Button,{onClick:r,variant:"secondary",size:"sm",className:s.cn("h-5 text-xs hover:underline",{}),children:s.titleCase((a==null?void 0:a.mode)==="exclude"?"exclude":"include")})}function ol({open:t,setOpen:n,dateRange:a,setDateRange:r,containerClassName:o,inputClassName:l,title:c,onApply:i,onClear:d}){const u=s.useDashboardStore(m=>m.themeStyle);return e.jsx("div",{className:s.cn("grid gap-2",o),children:e.jsxs(s.Popover,{open:t,onOpenChange:n,children:[e.jsx(s.PopoverTrigger,{style:{borderRadius:u==null?void 0:u.controlInputRadius},asChild:!0,children:e.jsxs(s.Button,{size:"sm",id:"date",variant:"outline",className:s.cn("h-9 w-full justify-start rounded-sm text-left font-normal",!a&&"text-muted-foreground",l),children:[e.jsx(s.Calendar,{className:"mr-2 h-4 w-4"}),a!=null&&a.from?a.to?e.jsxs(e.Fragment,{children:[s.format(a.from,"LLL dd, y")," -"," ",s.format(a.to,"LLL dd, y")]}):s.format(a.from,"LLL dd, y"):e.jsx("span",{children:"Pick a date"})]})}),e.jsxs(s.PopoverContent,{style:{borderRadius:u==null?void 0:u.controlInputRadius},className:"w-auto p-0",align:"start",children:[e.jsx("div",{className:"px-4 pt-3",children:e.jsx(s.Label,{children:c})}),e.jsx(s.Calendar$1,{initialFocus:!0,mode:"range",defaultMonth:a==null?void 0:a.from,selected:a,onSelect:r,numberOfMonths:2}),e.jsxs("div",{className:"flex justify-end gap-2 px-4 py-3",children:[e.jsx(s.Button,{style:{borderRadius:u==null?void 0:u.controlInputRadius},size:"sm",variant:"outline",onClick:m=>{m.stopPropagation(),i(a),n(!1)},children:"Apply"}),e.jsx(s.Button,{style:{borderRadius:u==null?void 0:u.controlInputRadius},size:"sm",variant:"outline",onClick:d,children:"Clear"})]})]})]})})}function il({column:t,sortableType:n}){const[a,r]=M.useState(!1),{selectedConnectionId:o,selectedDatabaseName:l,selectedTableName:c}=s.useEditorAside(),i={column:t.name,sql:t.sql,id:t.name,connectionId:o,title:"",dataType:t.type},{isLoading:d,isFetching:u,isError:m,data:h}=s.useFilterQuery(i),p=h==null?void 0:h.records,{dateRange:g,setDateRange:j,initialDateRange:x}=s.useDateRangeFromRecords(p),{updateEditorFilterValue:b}=s.useEditorActions();function f(I){var C,v;const w={gte:(C=I==null?void 0:I.from)==null?void 0:C.toISOString(),lte:(v=I==null?void 0:I.to)==null?void 0:v.toISOString()};b(t.name,w)}function N(){b(t.name,null,!0),j(x)}function k(){return d||u?e.jsx("div",{children:e.jsx(s.Skeleton,{className:"h-8 w-72 bg-foreground/10"})}):m?e.jsx("div",{className:"h-8 w-72 bg-muted px-2",children:"Error"}):p?e.jsx(ol,{title:i.title,open:a,inputClassName:"h-8",setOpen:r,dateRange:g,setDateRange:j,onApply:f,onClear:N}):e.jsx(s.Label,{className:"flex h-8 w-72 items-center bg-muted px-2",children:"No Data"})}return e.jsx(As,{className:"w-72",id:t.id,sortableType:n,column:t,children:k()})}function cl({id:t,label:n,columns:a,previewColumns:r,sortableType:o}){var j,x;const{setNodeRef:l,isOver:c,over:i}=s.useDroppable({id:t}),d=s.useDndStore(b=>b.activeId),u={},m=c||((x=(j=i==null?void 0:i.data)==null?void 0:j.current)==null?void 0:x.type)===o;function h(){if(!g||g.length===0)return e.jsx("div",{className:"flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground/80 bg-background px-2 py-1 text-sm text-muted-foreground",children:e.jsx("span",{className:"invisible text-muted-foreground/70 group-hover:visible",children:"Drag here"})})}function p(b){const f=s.isDateDataType(b.type);return b.id===bt.id?e.jsx(As,{id:b.id,sortableType:o,column:b,children:e.jsx(dl,{})},b.id):f?e.jsx(il,{droppableId:t,sortableType:o,column:b},b.id):e.jsx(rl,{droppableId:t,sortableType:o,column:b},b.id)}const g=d?r:a;return e.jsx(s.SortableContext,{items:a==null?void 0:a.map(b=>b.id),children:e.jsxs("div",{className:s.cn("group space-y-2 rounded-md border-muted-foreground/50 p-4",m&&"border border-muted-foreground/20"),ref:l,style:u,children:[e.jsx(s.Label,{className:"text-sm",children:n}),h(),e.jsx("div",{className:"flex flex-wrap items-center gap-4",children:g==null?void 0:g.map(b=>p(b))})]})})}function dl(){return e.jsx("div",{className:"flex h-8 w-60 items-center space-x-2 rounded-md border border-dashed border-muted-foreground bg-background px-2 py-1 text-sm text-muted-foreground",children:"Drop here"})}function ul(){const t=s.useEditorStore(o=>{var l;return((l=o.card.queryConfig)==null?void 0:l.filterColumns)||[]}),n=s.useDndStore(o=>o.previewFilterColumns),{removeColumnFromFilterColumns:a}=s.useEditorActions();function r(o){a(o)}return e.jsx("section",{className:"size-full px-4 pb-4",children:e.jsx(cl,{onRemoveColumn:r,sortableType:Ns,id:ys,label:"Filters",columns:t,previewColumns:n})})}function ml(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>c.showAIDialog),{setShowAIDialog:a}=s.useEditorActions(),{data:r,errorMessage:o,errorSql:l}=s.useDashboardCardQuery(t);return e.jsxs("section",{className:"flex justify-between gap-2 p-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ls,{}),!n&&e.jsxs(s.Button,{onClick:()=>a(!0),variant:"secondary",size:"sm",children:[e.jsx(Ea,{className:"mr-2 h-4 w-4"}),"Assistant"]}),e.jsx(Ct,{sql:r==null?void 0:r.sql,error:o,errorSql:l})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"rounded-full bg-green-300 px-3 py-1 text-xs font-medium text-black",children:"Preview"}),e.jsx(ks,{}),e.jsx(Ts,{variant:"default"})]})]})}function hl(){const t=M.useRef(null),n=M.useRef(null),a=s.useEditorStore(i=>i.isShowingVisual),r=s.useEditorStore(i=>i.showAIDialog),o=s.useEditorStore(i=>i.isDevMode);M.useEffect(()=>{var i,d,u,m;r?((i=t.current)==null||i.resize(0),(d=n.current)==null||d.resize(0)):((u=t.current)==null||u.resize(25),(m=n.current)==null||m.resize(25))},[r]);function l(){return e.jsxs(e.Fragment,{children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(sr,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:a&&!r?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(Kr,{})})}),!r&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(Qe,{})})]}):e.jsx(Qe,{})})]})}function c(){return e.jsx(e.Fragment,{children:e.jsx("div",{className:"grow","data-biz-mode-container":"",children:a?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:n,defaultSize:25,maxSize:30,children:e.jsx(nl,{})})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{defaultSize:75,maxSize:100,children:e.jsxs(s.ResizablePanelGroup,{direction:"vertical",children:[e.jsxs(s.ResizablePanel,{className:"flex min-h-fit flex-col",minSize:10,defaultSize:20,children:[e.jsx(ml,{}),e.jsx(ul,{})]}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:60,defaultSize:80,children:e.jsx(Qe,{})})]})})]}):e.jsx(Qe,{})})})}return e.jsx(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:o?l():c()})}function xl(t){s.useAIInteractionStore(U=>U.currentAIContext);const[n,a]=M.useState(""),[r,o]=M.useState(null),{authToken:l}=s.useSemaphorContext(),c=s.useEditorStore(U=>{var $;return($=U==null?void 0:U.card)==null?void 0:$.sql}),i=s.useEditorStore(U=>U.isDevMode),d=s.useEditorStore(U=>{var $;return($=U==null?void 0:U.card)==null?void 0:$.python}),{setCardPython:u,setCardSql:m,setRunSql:h,switchCardType:p,setQueryConfig:g}=s.useEditorActions(),j=s.useEditorStore(U=>U.currentAssitantScope)||[],x=s.useEditorStore(U=>U.userInputForAI),b=s.useEditorStore(U=>U.triggerAIRun),f=s.useEditorStore(U=>U.card),N=s.useEditorStore(U=>U.selectedDatabaseName),k=s.useEditorStore(U=>U.selectedTableName),I=s.useEditorStore(U=>U.selectedConnectionId),w=s.useEditorStore(U=>U.selectedSchemaName),C=s.useDashboardStore(U=>U.dashboard.aiScopeTables),{errorMessage:v,refetch:T,data:y}=s.useDashboardCardQuery(f),{setTriggerAIRun:O,setCurrentAssitantScope:E,setCardConfig:B}=s.useEditorActions(),{selectedDatamodelName:D,connectionType:S,selectedDatamodelId:L}=s.useEditorAside(),{messages:F,setMessages:R,regenerate:A,error:P,sendMessage:Y,status:z,addToolResult:X,stop:te,clearError:K}=s.useChat({transport:new s.DefaultChatTransport({api:"https://semaphor.cloud/api/v1/assistant",headers:()=>({Authorization:`Bearer ${l==null?void 0:l.accessToken}`}),body:()=>{const U=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",isDevMode:i,aiContext:U.currentAIContext,reasoningEffort:U.reasoningEffort,showReasoning:U.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:U,body:$})=>({body:{...$,messages:s.cleanupIncompleteMessages(U)}})}),onError:U=>{console.log("on error",U)},onToolCall:W,onFinish(){a("")}});M.useEffect(()=>{b&&x&&(Y({role:"user",parts:[{type:"text",text:x}]}),O(!1))},[b,x,Y,O]);async function W({toolCall:U}){var $,re,oe,le,xe,pe,me,fe,q,J,Z,H,ae,ie,ce,Ee;if(["createChartFromSql","createForecast"].includes(U.toolName)){const Be=(($=U.input)==null?void 0:$.sql)??((re=U.args)==null?void 0:re.sql),Te=((oe=U.input)==null?void 0:oe.python)??((le=U.args)==null?void 0:le.python),he=((xe=U.input)==null?void 0:xe.chartType)??((pe=U.args)==null?void 0:pe.chartType);p(he),m(Be),u(Te),h(!0),X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(U.toolName==="getUserSql"){if(!c){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"error",message:"No SQL found"}});return}X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",sql:c,python:d||""}})}else if(U.toolName==="generateQueryConfig"){a("Generating query config...");const Be=((me=U.input)==null?void 0:me.chartType)??((fe=U.args)==null?void 0:fe.chartType),Te=((q=U.input)==null?void 0:q.queryConfig)??((J=U.args)==null?void 0:J.queryConfig);((Z=U.input)==null?void 0:Z.cardConfig)??((H=U.args)==null||H.cardConfig),p(Be),B(Te),m(void 0),u(void 0);const he=await T();if((ae=he==null?void 0:he.data)!=null&&ae.error){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"error",queryConfig:Te,message:(ie=he==null?void 0:he.data)==null?void 0:ie.error.message}});return}if((ce=he==null?void 0:he.data)!=null&&ce.records){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",queryConfig:Te,message:"The data has been visualized"}});return}X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",queryConfig:Te,message:"The data has been visualized",records:(Ee=he==null?void 0:he.data)==null?void 0:Ee.records}})}else a("Analyzing...")}function G(U){const $=s.removeFromScopeArray(j,U);ee($)}function ee(U){const $=s.sanitizeAIScope(U);E($),R(re=>[...re,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify($)}`}]}])}function _(){const U={databaseName:N||"",schemaName:w||"",tableName:k||"",datamodelId:L||"",datamodelName:s.resolveDatamodelName(D),connectionId:I||"",connectionType:S||""},$=s.dedup([...j,U]);ee($)}function V(){const U={databaseName:N||"",schemaName:w||"",tableName:k||"",datamodelName:s.resolveDatamodelName(D),connectionId:I||"",connectionType:S||"",datamodelId:L||""};if(!s.isInAiScopeArray([...C||[],...j],U)||j.length===0){const re=s.dedup([...C||[],...j,U]).filter(oe=>oe.connectionId===U.connectionId);ee(re)}}const se=!["ready","error"].includes(z),ne=s.getErrorMessage(P);return{messages:F,setMessages:R,sendMessage:Y,regenerate:A,isLoading:se,handleSetAIScope:V,handleAddCurrentTableToScope:_,removeFromCurrentSelections:G,currentAssitantScope:j,setCurrentAssitantScope:E,stop:te,status:z,toolStatus:n,llmUsage:r,onFinish:t,errorMessage:ne,clearError:K}}const pl=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function Ws(){const t=M.useRef(null),[n,a]=M.useState(!1),[r,o]=M.useState(s.isDevEnv),[l,c]=M.useState(!1),[i,d]=M.useState(!1),u=s.useCurrentAIContext(),{setCurrentAIContext:m}=s.useAIActions(),{clearQueue:h}=s.useQueueActions(),{clearFileAttachments:p}=s.useFileActions(),g=s.useFileAttachments("editor"),j=s.useDashboardStore(J=>J.dashboard.aiContext),x=s.useEditorStore(J=>J.card.dataSource),b=s.useEditorStore(J=>J.actions.setCardSql),f=s.useEditorStore(J=>J.actions.setRunSql),N=s.useEditorStore(J=>J.showAIDialog),k=s.useDashboardStore(J=>J.handleOpenAssistantProfile),{setShowAIDialog:I,setCardPython:w}=s.useEditorActions(),{setDataSource:C}=s.useEditorActions(),{assistantProfile:v}=s.useAssistantProfile(),{messages:T,setMessages:y,sendMessage:O,isLoading:E,stop:B,status:D,llmUsage:S,errorMessage:L,clearError:F}=xl(),[R,A]=M.useState(""),P=J=>{A(J.target.value)},Y=J=>{J.preventDefault();const Z=R.trim();if(!Z&&g.length===0)return;const H=[];Z&&H.push({type:"text",text:Z}),g.forEach(ae=>{ae.data&&H.push({type:"file",mediaType:ae.type,filename:ae.name,url:`data:${ae.type};base64,${ae.data}`})}),O({role:"user",parts:H}),A(""),p("editor"),se({force:!0})},{visibleMessages:z,hasMoreMessages:X,totalMessageCount:te,loadMoreMessages:K,resetMessageWindow:W}=s.useMessageWindow(T,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:G,isAtBottom:ee,hasNewMessages:_,newMessageCount:V,scrollToBottom:se,handleScroll:ne,resetNewMessageCount:U}=s.useAutoScroll(z,{threshold:50,delay:0,dependencies:[D,T.length]});M.useEffect(()=>{var J;N&&((J=t.current)==null||J.focus(),m({selectedEntities:(x==null?void 0:x.selectedEntities)||[]}))},[N,x,m]),s.useAutoSubmitQueue({assistantType:"editor",status:D,isLoading:E,sendMessage:O});const{hasActiveTools:$}=s.useActiveToolStatus(T);function re(J,Z){Z==="sql"?(b(J),f(!0)):Z==="python"&&(w(J),f(!0))}function oe(){var J;(J=j==null?void 0:j.selectedEntities)==null||J[0],d(!0)}function le(){u.selectedEntities.length===0&&m({selectedEntities:(j==null?void 0:j.selectedEntities)||[]})}function xe(J){le();const Z={role:"user",parts:[{type:"text",text:J.title+" "+J.subtitle}]};O(Z)}function pe(J){le(),O({role:"user",parts:[{type:"text",text:J}]})}function me(){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/50 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:n,onCheckedChange:a,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:r,onCheckedChange:o,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:l,onCheckedChange:c,children:"System Message"})]})]})}function fe(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const q=(R==null?void 0:R.length)===0&&(T==null?void 0:T.filter(J=>J.role==="user").length)===0;return e.jsxs("div",{"data-role":"editor-assistant",className:"flex h-full w-full flex-col justify-between px-6 py-4",children:[e.jsxs("div",{"data-role":"header-section",className:"flex items-start justify-between gap-2",children:[fe(),k&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:k,children:(v==null?void 0:v.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[me(),s.isDevEnv,e.jsx(s.IconButton,{tooltip:"Add Context",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",onClick:oe,children:e.jsx(s.Settings,{className:"size-4"})}),e.jsx(s.IconButton,{className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",tooltip:"New Chat",onClick:()=>{y([]),h("editor"),F(),W()},children:e.jsx(s.SquarePen,{className:"size-4"})}),e.jsx(s.Button,{variant:"ghost",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",size:"sm",onClick:()=>{I(!1)},children:e.jsx(s.ArrowRightToLine,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:G,className:"mt-2 flex w-full grow basis-0",onScroll:ne,children:e.jsxs("div",{className:"space-y-4 py-2 pr-3","data-role":"messages",children:[X&&e.jsx("div",{className:"flex justify-center py-2",children:e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:K,className:"text-xs",children:["Load ",Math.min(5,te-z.length)," more messages (",te-z.length," hidden)"]})}),e.jsx(s.PrintMessages,{messages:z,showTools:r,handleRun:re,showSystemMessage:l}),!$&&e.jsx(s.AssistantStatus,{status:D,errorMessage:L})]})}),!ee&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{se({force:!0}),U()},size:"sm",variant:"secondary",className:"rounded-full shadow-lg","aria-label":"Scroll to bottom",children:[e.jsx(s.ChevronDown,{className:"h-4 w-4"}),_&&V>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:V>9?"9+":V})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[q&&!v&&e.jsx(s.Placeholders,{onClick:xe,placeholders:pl}),e.jsx("div",{children:q&&v&&e.jsx(s.SeedQuestions,{seedQuestions:v.seedQuestions||[],handleSeedQuestionClick:pe})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:t,setInput:A,stop:B,input:R,handleInputChange:P,handleSubmit:J=>{le(),Y(J),se({force:!0})},isLoading:E,status:D,assistantType:"editor",onFocus:()=>{}})]}),S&&n&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",S.inputTokens," prompt tokens, ",S.outputTokens," ","completion tokens, ",S.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(x==null?void 0:x.selectedEntities)||[],open:i,onOpenChange:d,dataSource:x||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}const Ms=t=>{var E;const{updateCardConfig:n,updateGroupByColumn:a,updateMetricColumn:r,updatePivotByColumn:o,updateSortByColumn:l,removeGroupByColumn:c,removeMetricColumn:i,removePivotByColumn:d,removeSortByColumn:u}=s.useEditorActions(),m=s.useEditorStore(B=>B.card.type),h=t==null?void 0:t.id,p=M.useCallback(B=>{if(!(t!=null&&t.config))return[];switch(B){case"groupBy":return(t.config.groupByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType,dateFormat:D.dateFormat,customFormat:D.customFormat,granularity:D.granularity}));case"metrics":return t.config.metricColumns||[];case"pivotBy":return(t.config.pivotByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType}));case"sortBy":return(t.config.sortByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType,direction:D.direction}));case"source":return[];default:return[]}},[t]),g=M.useCallback((B,D)=>{if(h)switch(B){case"groupBy":{n(h,{groupByColumns:D});break}case"metrics":{n(h,{metricColumns:D});break}case"pivotBy":{n(h,{pivotByColumns:D});break}case"sortBy":{n(h,{sortByColumns:D});break}}},[h,n]),j=M.useCallback((B,D,S)=>{if(!h)return;const F=p(B)[D];if(F)switch(B){case"groupBy":a(h,F.id,{label:S});break;case"metrics":r(h,F.id,{label:S});break;case"pivotBy":o(h,F.id,{label:S});break;case"sortBy":l(h,F.id,{label:S});break}},[h,p,a,r,o,l]),x=M.useCallback((B,D)=>{if(!h)return;const L=p("metrics")[B];L&&r(h,L.id,{aggregate:D,label:s.getAggregationLabel(L.name,D)})},[h,p,r]),b=M.useCallback((B,D,S)=>{if(!h)return;const F=p("groupBy")[B];if(!F)return;const R={dateFormat:D};D==="custom"&&S?R.customFormat=S:R.customFormat=void 0,a(h,F.id,R)},[h,p,a]),f=M.useCallback((B,D)=>{if(!h)return;const L=p("groupBy")[B];L&&a(h,L.id,{granularity:D})},[h,p,a]),N=M.useCallback((B,D)=>{if(!h)return;const L=p("metrics")[B];L&&r(h,L.id,{aliasTemplate:D})},[h,p,r]),k=M.useCallback((B,D)=>{if(console.log("handleValueAliasesChange",B,D),!h)return;console.log("handleValueAliasesChange",B,D);const L=p("metrics")[B];L&&(console.log("handleValueAliasesChange",D),r(h,L.id,{valueAliases:D}))},[h,p,r]),I=M.useCallback(B=>{h&&n(h,{comparisonType:B})},[h,n]),w=M.useCallback(B=>{h&&n(h,{showTrendline:B})},[h,n]),C=M.useCallback(B=>{h&&n(h,{trendlineWindow:B})},[h,n]),v=M.useCallback(B=>{h&&n(h,{trendlineGranularity:B})},[h,n]),T=M.useCallback(B=>{h&&n(h,{targetValue:B})},[h,n]),y=M.useCallback(B=>{var P;if(!h)return;const D=[...p("groupBy"),...p("pivotBy"),...p("metrics"),...p("sortBy")],S=(P=t==null?void 0:t.config)==null?void 0:P.joinPlan,L=s.validateEntityConsistency(B,D,S);if(!L.isValid){L.showError&&s.showJoinRequiredNotification();return}const F=s.getSmartContainerForField(B,D),R=p(F);if(s.fieldAlreadyExists(B,R))return;const A=s.getNewField(B,F,R);A&&g(F,[...R,A])},[h,(E=t==null?void 0:t.config)==null?void 0:E.joinPlan,p,g]),O=M.useCallback((B,D)=>{if(!h)return;const L=p(B)[D];if(L){if(B!=="sortBy"){const F=p("sortBy"),R=F.filter(A=>!(A.name===L.name&&A.qualifiedEntityName===L.qualifiedEntityName));R.length!==F.length&&n(h,{sortByColumns:R})}switch(B){case"groupBy":c(h,L.id);break;case"metrics":i(h,L.id);break;case"pivotBy":d(h,L.id);break;case"sortBy":u(h,L.id);break}}},[h,p,c,i,d,u,n]);return{getFieldsForContainer:p,setFieldsForContainer:g,updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:f,handleAliasTemplateChange:N,handleValueAliasesChange:k,removeField:O,handleFieldClick:y,handleKpiComparisonTypeChange:I,handleKpiShowTrendlineChange:w,handleKpiTrendlineWindowChange:C,handleKpiTrendlineGranularityChange:v,handleKpiTargetValueChange:T,cardType:m}};function fl({field:t}){return e.jsxs("div",{className:"w-64 bg-background p-0",children:[e.jsxs("div",{className:"mb-2 flex items-start justify-between gap-2",children:[e.jsx("h3",{className:"text-sm font-medium text-foreground",children:t.label||t.name}),e.jsx("span",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs text-muted-foreground",children:t.dataType})]}),t.description&&e.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:t.description}),e.jsx("div",{className:"overflow-x-auto border-t border-border pb-2 pt-2",children:e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:t.name})})]})}function gl({field:t}){const{attributes:n,listeners:a,setNodeRef:r,transform:o,transition:l,isDragging:c}=s.useSortable({id:t.id}),[i,d]=M.useState(!1),u=s.useEditorStore(j=>j.card),{handleFieldClick:m}=Ms(u),h={transform:s.CSS.Transform.toString(o),transition:l};s.getDataType(t.dataType);const p=j=>{const x=(j||"").toLowerCase();switch(s.getDataType(x)){case"number":return De;case"date":return s.Calendar;case"boolean":return Re;case"json":return _e;case"geo":return $e;default:return ve}},g=j=>{const x=(j||"").toLowerCase(),b=s.getDataType(x);return b==="string"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-blue-100 text-xs text-blue-700 dark:bg-blue-950 dark:text-blue-300",children:e.jsx(ve,{className:"h-3 w-3"})}):b==="number"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-green-100 text-xs text-green-700 dark:bg-green-950 dark:text-green-300",children:e.jsx(De,{className:"h-3 w-3"})}):b==="date"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-purple-100 text-xs text-purple-700 dark:bg-purple-950 dark:text-purple-300",children:e.jsx(s.Calendar,{className:"h-3 w-3"})}):b==="boolean"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-orange-100 text-xs text-orange-700 dark:bg-orange-950 dark:text-orange-300",children:e.jsx(Re,{className:"h-3 w-3"})}):b==="json"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-gray-100 text-xs text-gray-700 dark:bg-gray-950 dark:text-gray-300",children:e.jsx(_e,{className:"h-3 w-3"})}):b==="geo"?e.jsx("div",{className:"bg-orange -100 flex size-6 shrink-0 items-center justify-center rounded-sm text-xs text-orange-700 dark:bg-orange-950 dark:text-orange-300",children:e.jsx($e,{className:"h-3 w-3"})}):b==="calculated"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-gray-100 text-xs text-gray-700 dark:bg-gray-950 dark:text-gray-300",children:e.jsx(We,{className:"h-3 w-3"})}):null};return p(t.dataType),e.jsxs("div",{ref:r,style:h,...n,...a,className:`group/container overflow-hidden rounded-lg transition-all ${c?"scale-95 opacity-50":"border border-transparent hover:bg-muted"}`,children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3 p-2",onClick:()=>m(t),children:[g(t.dataType),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:"min-w-0 flex-1 overflow-hidden",children:e.jsx("span",{className:`block text-xs text-foreground/80 hover:text-foreground dark:text-muted-foreground ${i?"whitespace-normal break-words":"truncate"}`,children:t.label||t.name})})}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"ml-5 max-w-xs px-4 pb-2 pt-4",children:e.jsx(fl,{field:t})})]})})]}),i&&e.jsx("div",{className:"text-muted-foreground-700 px-2 pb-3 text-sm",children:e.jsx(s.Card,{className:"",children:e.jsxs(s.CardContent,{className:"space-y-2 p-3",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",{className:"break-all",children:t.label||t.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ga,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"break-all",children:t.name})]}),e.jsx(s.Badge,{variant:"outline",className:"mt-2 text-xs",children:t.dataType})]})})})]})}function jl(){const[t,n]=M.useState(""),[a,r]=M.useState("all"),o=s.useEditorStore(k=>k.card.dataSource),{columns:l=[],columnGroups:c=[],isLoading:i,error:d}=s.useColumns(),u=l.filter(k=>k.name.toLowerCase().includes(t.toLowerCase())||k.dataType.toLowerCase().includes(t.toLowerCase())||k.qualifiedEntityName&&k.qualifiedEntityName.toLowerCase().includes(t.toLowerCase())),m=k=>{if(k.dataType==="number"||k.dataType==="integer"||k.dataType==="float"||k.dataType==="decimal"||k.dataType==="currency")return"metrics";const I=s.getDataType(k.dataType);return["date","string","boolean"].includes(I)?"dimensions":I==="number"?"metrics":"dimensions"},p=(a==="all"?u:u.filter(k=>m(k)===a)).reduce((k,I)=>{const w=I.qualifiedEntityName||"Other Fields";return k[w]||(k[w]={label:s.toLabel(I.entityName),fields:[]}),k[w].fields.push(I),k},{}),j=Object.keys(p),x=u.filter(k=>m(k)==="dimensions").length,b=u.filter(k=>m(k)==="metrics").length,f=u.filter(k=>m(k)==="calculated").length,N=u.length>0;return i?e.jsx("div",{className:"flex h-[calc(100vh-200px)] w-[290px] flex-col items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}):d?e.jsxs("div",{className:"flex h-[calc(100vh-200px)] w-[290px] flex-col items-center justify-center",children:[e.jsx(s.Database,{className:"mb-4 h-12 w-12 text-red-300"}),e.jsx("p",{className:"mb-2 text-sm text-red-500",children:"Error loading fields"}),e.jsx("p",{className:"px-4 text-center text-xs text-red-400",children:d.message||"Failed to load column data"})]}):!o||!o.selectedEntities||o.selectedEntities.length===0?e.jsx(s.ScrollArea,{className:"h-[calc(100vh-200px)] w-[290px]",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(s.Database,{className:"mb-4 h-12 w-12 text-gray-300"}),e.jsx("p",{className:"mb-2 text-sm text-gray-500",children:"No data source selected"}),e.jsx("p",{className:"px-4 text-xs text-gray-400",children:"Select a table, view, or dataset from the data source panel to see available fields"})]})}):e.jsxs("div",{className:"mt-2 flex h-[calc(100vh-200px)] w-full grow flex-col gap-2 px-6 pb-6",children:[e.jsxs("div",{className:"mt-1 flex-shrink-0 space-y-2",children:[l.length>0&&e.jsxs("div",{className:"relative mb-4",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 size-3.5 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10 pr-10",type:"text",placeholder:"Search fields...",value:t,onChange:k=>n(k.target.value)}),t&&e.jsx("button",{className:"absolute right-3 top-1/2 -translate-y-1/2 transform text-muted-foreground hover:text-foreground",onClick:()=>n(""),type:"button",children:e.jsx(s.X,{className:"size-3.5"})})]}),N&&e.jsx(s.Tabs,{defaultValue:"all",value:a,onValueChange:k=>r(k),className:"mb-4",children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-4",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:u.length})]}),e.jsxs(s.TabsTrigger,{value:"dimensions",className:"text-xs",children:[e.jsx(s.Layers,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:x})]}),e.jsxs(s.TabsTrigger,{value:"metrics",className:"text-xs",children:[e.jsx(s.ChartColumn,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:b})]}),e.jsxs(s.TabsTrigger,{value:"calculated",className:"text-xs",children:[e.jsx(We,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:f})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"py-2",children:[e.jsx(s.Accordion,{type:"multiple",defaultValue:j,className:"space-y-2",children:Object.entries(p).map(([k,I])=>{const w=c.find(C=>C.entityName===k)||{entityName:k,label:I.label};return e.jsxs(s.AccordionItem,{value:k,className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"group rounded-md px-2.5 py-2 text-muted-foreground hover:bg-muted hover:no-underline",children:e.jsxs("div",{title:w.label||w.entityName,className:"flex items-center gap-2",children:[e.jsx("span",{className:"max-w-[190px] truncate text-ellipsis whitespace-nowrap text-sm font-medium text-primary",children:w.label||w.entityName}),e.jsx(s.Badge,{variant:"secondary",className:"rounded-full text-xs text-muted-foreground group-hover:bg-background",children:I.fields.length})]})}),e.jsx(s.AccordionContent,{className:"pb-2",children:e.jsx("div",{className:"space-y-1",children:I.fields.map(C=>e.jsx(gl,{field:C},C.id))})})]},k)})}),Object.keys(p).length===0&&l.length===0&&e.jsxs("div",{className:"py-8 text-center text-sm text-gray-500",children:[e.jsx("p",{children:"No fields found for selected data source"}),e.jsx("p",{className:"mt-1 text-xs text-gray-400",children:"Try selecting different data sources"})]}),Object.keys(p).length===0&&l.length>0&&e.jsx("div",{className:"py-4 text-center text-sm text-gray-500",children:"No fields found for this category"}),e.jsx(s.ScrollBar,{orientation:"horizontal"}),e.jsx(s.ScrollBar,{orientation:"vertical"})]})]})}function bl(){return e.jsxs("div",{className:" h-full flex flex-col items-center",children:[" ",e.jsx(jl,{})," "]})}function vl({initialJoinPlan:t,availableDataSources:n}){const[a,r]=M.useState(t),[o,l]=M.useState(new Set),c=()=>{const C=a.joins.length>0?Math.max(...a.joins.map(T=>T.sequence))+1:1,v={id:`join-${Date.now()}`,source:{type:"table",name:"",database:"",schema:""},target:{type:"table",name:"",database:"",schema:""},joinType:"INNER",sequence:C,joinKeyGroups:[{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}]};r({...a,joins:[...a.joins,v]}),l(new Set([...o,v.id]))},i=C=>{r({...a,joins:a.joins.filter(v=>v.id!==C)}),l(new Set([...o].filter(v=>v!==C)))},d=(C,v)=>{var E,B;const T=a.joins.find(D=>D.id===C);if(!T)return;const y={...T,...v},O=a.joins.map(D=>D.id===C?y:D);if((E=y.source)!=null&&E.name&&((B=y.target)!=null&&B.name)&&y.joinKeyGroups[0].keys.length===0){const D=n.find(R=>{var A;return R.name===((A=y.source)==null?void 0:A.name)}),S=n.find(R=>{var A;return R.name===((A=y.target)==null?void 0:A.name)}),L={id:`key-${Date.now()}`,source:{id:`source-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(D==null?void 0:D.name)||"",entityName:(D==null?void 0:D.name)||"",entityType:(D==null?void 0:D.type)||"table"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(S==null?void 0:S.name)||"",entityName:(S==null?void 0:S.name)||"",entityType:(S==null?void 0:S.type)||"table"},operator:"="},F=[...y.joinKeyGroups];F[0]={...F[0],keys:[L]},y.joinKeyGroups=F,O[O.findIndex(R=>R.id===C)]=y}r({...a,joins:O})};return{joinPlan:a,expandedJoins:o,setJoinPlan:r,addJoin:c,removeJoin:i,updateJoin:d,moveJoinUp:C=>{const v=a.joins.findIndex(T=>T.id===C);if(v>0){const T=[...a.joins],y={...T[v]},O={...T[v-1]};T[v]=O,T[v-1]=y,T.forEach((B,D)=>{B.sequence=D+1});const E={...a,joins:T};r(E)}},moveJoinDown:C=>{const v=a.joins.findIndex(T=>T.id===C);if(v<a.joins.length-1){const T=[...a.joins],y={...T[v]},O={...T[v+1]};T[v]=O,T[v+1]=y,T.forEach((B,D)=>{B.sequence=D+1});const E={...a,joins:T};r(E)}},toggleJoinExpansion:C=>{const v=new Set(o);v.has(C)?v.delete(C):v.add(C),l(v)},getAvailableSourceEntities:C=>{if(a.joins.length===0)return n;const v=a.joins.findIndex(y=>y.id===C);if(v===0)return n;const T=new Set;return a.baseEntity.name&&T.add(a.baseEntity.name),a.joins.slice(0,v).forEach(y=>{T.add(y.source.name),T.add(y.target.name)}),n.filter(y=>T.has(y.name))},getAvailableTargetEntities:C=>n.filter(v=>v.name!==C),addJoinKeyGroup:C=>{const v=a.joins.find(y=>y.id===C);if(!v)return;const T=[...v.joinKeyGroups,{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}];d(C,{joinKeyGroups:T})},updateGroupOperator:(C,v,T)=>{const y=a.joins.find(E=>E.id===C);if(!y)return;const O=[...y.joinKeyGroups];O[v]={...O[v],operator:T},d(C,{joinKeyGroups:O})},removeJoinKeyGroup:(C,v)=>{const T=a.joins.find(O=>O.id===C);if(!T)return;const y=[...T.joinKeyGroups];y.splice(v,1),d(C,{joinKeyGroups:y})},addJoinKey:(C,v)=>{const T=a.joins.find(D=>D.id===C);if(!T)return;const y=n.find(D=>D.name===T.source.name),O=n.find(D=>D.name===T.target.name),E=[...T.joinKeyGroups],B={id:`key-${Date.now()}`,source:{id:`source-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(y==null?void 0:y.name)||"",entityName:(y==null?void 0:y.name)||"",entityType:(y==null?void 0:y.type)||"table"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(O==null?void 0:O.name)||"",entityName:(O==null?void 0:O.name)||"",entityType:(O==null?void 0:O.type)||"table"},operator:"="};E[v]={...E[v],keys:[...E[v].keys,B]},d(C,{joinKeyGroups:E})},updateJoinKey:(C,v,T,y,O)=>{const E=a.joins.find(F=>F.id===C);if(!E)return;const B=n.find(F=>F.name===E.source.name),D=n.find(F=>F.name===E.target.name),S=[...E.joinKeyGroups],L=S[v].keys[T];y==="sourceColumnName"&&B?S[v].keys[T]={...L,source:{...L.source,name:O}}:y==="targetColumnName"&&D?S[v].keys[T]={...L,target:{...L.target,name:O}}:y==="operator"&&(S[v].keys[T]={...L,operator:O}),d(C,{joinKeyGroups:S})},removeJoinKey:(C,v,T)=>{const y=a.joins.find(E=>E.id===C);if(!y)return;const O=[...y.joinKeyGroups];O[v].keys.splice(T,1),d(C,{joinKeyGroups:O})},generateSQLPreview:()=>{const C=[...a.joins].sort((y,O)=>y.sequence-O.sequence),v=a.baseEntity;if(!v.name)return"SELECT * FROM table -- Please select a base entity";let T=`SELECT *
|
|
332
|
+
`;N(z)}function A(){return e.jsxs(e.Fragment,{children:[r&&e.jsx("div",{className:"relative flex w-1/3 min-w-0 grow overflow-hidden text-xs",role:"editor-filter-container",children:e.jsx("div",{className:"mt-2 w-[99%]",children:e.jsx(Zn,{jsonString:JSON.stringify(u,null,2)})})}),u&&u.length>0&&e.jsx(s.Button,{variant:"ghost",onClick:()=>o(!r),className:"absolute bottom-0 right-6 size-7 p-1",children:r?e.jsx(s.X,{className:"size-3.5 text-muted-foreground"}):e.jsx(s.Filter,{className:"size-3.5 text-muted-foreground"})})]})}function P(){return e.jsxs(s.ResizablePanelGroup,{className:"flex grow pb-1",direction:"vertical",role:"editor-resizable-group",children:[e.jsxs(s.ResizablePanel,{id:"1",order:1,defaultSize:n?20:100,className:"relative flex grow",children:[e.jsx("div",{id:"sql-container",className:"relative flex w-[99%]",children:e.jsx(Jn,{})}),n&&e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"sql"})]}),n&&e.jsxs(e.Fragment,{children:[e.jsx(s.ResizableHandle,{withHandle:!0,className:"border"}),e.jsxs(s.ResizablePanel,{id:"2",order:2,defaultSize:80,className:"relative flex grow",children:[e.jsx("div",{id:"python-container",className:"relative flex w-[99%] pt-0",children:e.jsx(Xn,{})}),e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"python"})]})]})]})}function Y(){return e.jsxs("div",{role:"editor-controls",className:"item-center flex flex-wrap justify-between gap-2 px-6 py-4",children:[e.jsxs("div",{className:"flex grow items-center gap-2",children:[e.jsxs(s.Button,{title:"Shift + Enter",disabled:T||y,onClick:()=>{L()},className:"h-8 shrink-0",size:"sm",children:[T||y?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(s.Play,{className:"mr-2 h-4 w-4"}),"Run"]}),e.jsx(Ct,{errorSql:D,sql:v==null?void 0:v.sql,error:F,onDebugWithAssistant:R}),e.jsx(ls,{}),e.jsx(s.Toggle,{pressed:n,onPressedChange:z=>a(z),className:"h-8",size:"sm",variant:"outline",children:e.jsx(Qn,{className:"size-4 text-foreground/70"})}),e.jsx("button",{disabled:c,onClick:()=>{k(!0)},className:"h-9 w-full cursor-text px-3 text-left text-sm text-muted-foreground",children:c?"":"Type your question..."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{}),e.jsx(Ts,{})]})]})}return e.jsxs("section",{role:"editor-section",className:"flex grow flex-col justify-end",children:[e.jsxs("div",{className:"relative flex grow justify-between overflow-y-scroll",children:[P(),A()]}),Y()]})}const tr=[{value:"table",label:"Table",icon:s.Table2},{value:"aggregateTable",label:"Aggregate",icon:s.Layers},{value:"pivotTable",label:"Pivot",icon:ns}];function ar({className:t}){const n=s.useEditorStore(d=>d.card),{setCardType:a,setCard:r,updateCardInFrame:o}=s.useEditorActions(),l=["table","aggregateTable","pivotTable"].includes(n.type),c=s.hasValidCardConfig(n.config);if(!l||!c)return null;const i=d=>{var m;const u=d;if(u==="aggregateTable"&&((m=n.config)!=null&&m.pivotByColumns)&&n.config.pivotByColumns.length>0){const h={...n,type:u,config:{...n.config,pivotByColumns:[]}};r(h),o(h)}else{a(u);const h={...n,type:u};o(h)}};return e.jsx("div",{className:s.cn("flex items-center",t),children:e.jsx(s.RadioGroup,{value:n.type,onValueChange:i,className:"flex flex-row items-center justify-between gap-1 rounded-lg border p-1",children:tr.map(d=>{const u=d.icon,m=n.type===d.value;return e.jsxs("div",{className:"flex items-center",children:[e.jsx(s.RadioGroupItem,{value:d.value,id:`table-type-${d.value}`,className:"peer sr-only"}),e.jsxs(s.Label,{htmlFor:`table-type-${d.value}`,className:s.cn("flex cursor-pointer items-center gap-1.5 rounded-md px-3 py-1 text-sm font-medium transition-all",m?"bg-muted text-foreground shadow-sm":"text-muted-foreground hover:bg-muted/50"),children:[e.jsx(u,{className:"h-3.5 w-3.5"}),d.label]})]},d.value)})})})}function nr({card:t}){var k,I,w,C,v,T,y,O,E,B,D;const[n,a]=M.useState(!1),[r,o]=M.useState([]),{authToken:l}=s.useSemaphorContext(),{theme:c}=s.useTheme(),i=s.getTokenParams(l==null?void 0:l.accessToken),d=s.useDashboardStore(S=>S.themeStyle),u={mode:c||"system",colors:((I=(k=d==null?void 0:d.chart)==null?void 0:k.dataset)==null?void 0:I.backgroundColor)||[]};(w=t.customCardPreferences)!=null&&w.inputData;const{getCard:m}=s.useCustomVisual(((C=t.customCardPreferences)==null?void 0:C.url)||""),h=((v=t.customCardPreferences)==null?void 0:v.visualType)||"single",p=s.useEditorStore(S=>S.frame),{setCustomCardPreferences:g}=s.useEditorActions(),{data:j}=s.useDashboardCardQuery(t),x=M.useCallback((S,L)=>{o(F=>({...F,[S]:L}))},[]);if(!((T=t.customCardPreferences)!=null&&T.componentName))return null;const b=m((y=t.customCardPreferences)==null?void 0:y.componentName);function f(S){a(S)}const N=Object.keys(((O=t.customCardPreferences)==null?void 0:O.dataInputCardIds)||{}).map(S=>{var R,A,P;const L=(A=(R=t.customCardPreferences)==null?void 0:R.dataInputCardIds)==null?void 0:A[S].cardId,F=(P=p==null?void 0:p.cards)==null?void 0:P.find(Y=>Y.id===L);return F||null});return e.jsx("div",{className:"semaphor-custom mb-3 flex grow basis-0 flex-col space-y-2 overflow-y-auto",children:e.jsxs(M.Suspense,{fallback:e.jsx(e.Fragment,{}),children:[b&&h==="single"&&e.jsx(b,{editing:!0,params:i,theme:u,settings:(E=t.customCardPreferences)==null?void 0:E.settings,onDataChange:x,data:(j==null?void 0:j.records)||[]}),b&&h==="multiple"&&e.jsxs(e.Fragment,{children:[Object.keys(((B=t.customCardPreferences)==null?void 0:B.dataInputCardIds)||{}).map(S=>{var R,A,P;const L=(A=(R=t.customCardPreferences)==null?void 0:R.dataInputCardIds)==null?void 0:A[S].cardId,F=(P=p==null?void 0:p.cards)==null?void 0:P.find(Y=>Y.id===L);if(F)return e.jsx(s.MultiInputEmptyRenderer,{onLoadingStatus:f,onDataChange:x,dataInputIndex:S,card:F},F.id+S)}),e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(b,{theme:u,onDataChange:x,settings:N.map(S=>{var L;return(L=S==null?void 0:S.customCardPreferences)==null?void 0:L.settings}),data:N.map(S=>S!=null&&S.id?r==null?void 0:r[S.id]:[])})})]})]},(D=t.customCardPreferences)==null?void 0:D.componentName)})}function wt({className:t,...n}){var T;const a=s.useEditorStore(y=>y.card),r=s.isExplorerCard(a),o=((T=a.customCardPreferences)==null?void 0:T.showCardHeader)??!0,l=s.useEditorStore(y=>y.frame),c=s.useDashboardStore(y=>y.dashboard.filters),i=s.useEditorStore(y=>y.actions.setRunSql),{updateFilter:d}=s.useDashboardActions(),u=c==null?void 0:c.find(y=>y.id===l.filterId),{data:m,isLoading:h,isFetching:p,errorMessage:g,pagination:j}=s.useDashboardCardQuery(a),{setCard:x,updateCardInFrame:b}=s.useEditorActions(),{data:f}=s.useTopoJson(a),N=M.useMemo(()=>{var y;return a.type!=="pivotTable"||!((y=m==null?void 0:m.records)!=null&&y.length)?null:{records:m.records,columnSubtotalMeta:m.columnSubtotalMeta,subtotalColumns:m.subtotalColumns||[],pivotSchema:m.pivotSchema||[],groupByColumns:m.groupByColumns}},[a.type,m==null?void 0:m.records,m==null?void 0:m.columnSubtotalMeta,m==null?void 0:m.subtotalColumns,m==null?void 0:m.pivotSchema,m==null?void 0:m.groupByColumns]),k=s.usePivotTableConfig(a,N),I=(y,O)=>{var B,D;const E={...a,paginationConfig:{page:y+1,pageSize:O}};x(E),b(E),a.sql&&((D=(B=a.preferences)==null?void 0:B.tablePrefs)!=null&&D.enableDevModePagination)&&i(!0)},w=M.useMemo(()=>!a.id||!(m!=null&&m.records)?null:s.createChartConfig({card:a,data:m==null?void 0:m.records,cardType:a.type,queryConfig:a.queryConfig,customCfg:a.customCfg,preferences:a.preferences,topoJson:f}),[a.id,m==null?void 0:m.records,a.type,a.queryConfig,a.customCfg,a.preferences,f]);function C(y){return e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(nr,{card:y})})}function v(){if(m!=null&&m.records&&(m==null?void 0:m.records.length)===0&&!h&&!p)return g?e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2",children:[e.jsx(s.SearchX,{className:"size-8 text-destructive"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r?"Error fetching data. Please check your chart configuration":"Error fetching data. Please check your SQL or Python code."})]}):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((h||p)&&a.type!=="table")return 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(!a.id)return null;if(a.type==="custom")return C(a);if(!["table","pivotTable","aggregateTable","custom"].includes(a.type)&&w)return e.jsx("div",{className:"relative h-full min-h-0 w-full flex-1 grow basis-0",children:h||p?e.jsx(e.Fragment,{}):e.jsx(s.ChartJsVisual,{cfg:w})});if(a.type==="table")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:a,data:(m==null?void 0:m.records)||[],paginationMetadata:j,onPaginationChange:I,isLoading:h||p})});if(a.type==="pivotTable"&&k)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:a,data:k.data,options:k.options,onAggregationChange:y=>{const O=s.handleAggregationChange(y,a.config),E={...a,config:O};x(E),b(E)},onAggregationLabelChange:y=>{const O=s.handleAggregationLabelChange(y,a.config),E={...a,config:O};x(E),b(E)}})});if(a.type==="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:a,data:(m==null?void 0:m.records)||[],groupByColumns:m==null?void 0:m.groupByColumns,pivotSchema:m==null?void 0:m.pivotSchema,paginationMetadata:j,onPaginationChange:I,onAggregationChange:y=>{const O=s.handleAggregationChange(y,a.config),E={...a,config:O};x(E),b(E)},isLoading:h||p})})}return e.jsxs(s.Card,{role:"editor-visual-card",className:s.cn("relative flex h-full flex-col rounded-none",t),...n,children:[o&&e.jsxs(s.CardHeader,{className:"flex flex-row items-start justify-between py-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between gap-5",children:[e.jsx(s.CardTitle,{className:"text-base",children:e.jsx(s.EditableText,{value:a.title,onSave:y=>x({...a,title:y}),isEditable:!0,placeholder:"Add title",displayClassName:"text-base font-semibold",inputClassName:"text-base font-semibold"})}),e.jsx(ar,{})]}),e.jsx("div",{className:"w-1/2",children:e.jsx(s.EditableText,{value:a.description||"",onSave:y=>x({...a,description:y}),isEditable:!0,placeholder:"Add description",displayClassName:"text-sm text-muted-foreground",inputClassName:"text-sm"})})]}),u&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Label,{className:"my-1",children:e.jsx(s.EditableText,{value:u.title||u.column,onSave:y=>d({...u,title:y}),isEditable:!0,placeholder:"Filter",displayClassName:"text-sm",inputClassName:"text-sm"})}),e.jsx(s.FilterComponent,{filter:u})]})]}),e.jsx(s.CardContent,{className:"flex grow flex-col",children:v()})]})}const xs=({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}),rr=()=>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."})]})]}),lr=({customCode:t,cardCustomCfgString:n,mergedConfig:a,onConfigChange:r,onCodeChange:o})=>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(xs,{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(xs,{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(xs,{language:"javascript",value:t,onChange:o})})]}),or=({error:t,hasCardCustomConfig:n,onReset:a,onApply:r,onClose:o})=>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:o,variant:"outline",children:"Close"})]});function ir(){const[t,n]=M.useState(!1),[a,r]=M.useState(""),[o,l]=M.useState(""),[c,i]=M.useState(""),[d,u]=M.useState(""),m=s.useEditorStore(w=>w.card),h=s.useEditorStore(w=>w.card.customCfg),p=h?JSON.stringify(h,null,2):"",{data:g}=s.useDashboardCardQuery(m),{data:j}=s.useTopoJson(m),{setCardCustomCfg:x,setCustomVisualCode:b}=s.useEditorActions(),f=w=>{var C,v;return JSON.stringify({...w,data:{...w.data,datasets:(v=(C=w.data)==null?void 0:C.datasets)==null?void 0:v.map(T=>({...T,data:[]}))}},null,2)},N=()=>{var C,v;if(!((C=g==null?void 0:g.records)!=null&&C.length))return;const w=s.createChartConfig({card:m,data:g.records,cardType:m.type,queryConfig:m.queryConfig,preferences:m.preferences,topoJson:j});if(w){r(f(w)),i(((v=m.preferences)==null?void 0:v.customVisualCode)||"");const T=s.merge(w,h);l(f(T))}},k=()=>{try{if(c&&b(c),o){const w=JSON.parse(o),C=s.getObjectDiff(JSON.parse(a),w);x(C),u("")}}catch{u("Invalid JSON configuration")}},I=Object.keys(h||{}).length===0;return e.jsxs(s.Dialog,{open:t,onOpenChange:n,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Customize Visual",onClick:N,className:I?"":"text-green-600 hover:text-green-700",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(rr,{}),e.jsxs("div",{className:"flex grow gap-2",children:[e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(wt,{className:"w-1/2 rounded shadow-none"})}),e.jsx(lr,{customCode:c,cardCustomCfgString:p,mergedConfig:o,onConfigChange:w=>l(w??""),onCodeChange:w=>i(w??"")})]}),e.jsx(or,{error:d,hasCardCustomConfig:!!h,onReset:()=>{l(a),x(null)},onApply:k,onClose:()=>n(!1)})]})]})}function os(t){const[n,a]=M.useState(null);return n}function Dt(){const{authToken:t}=s.useSemaphorContext(),{data:n,isLoading:a,isFetching:r,isError:o}=s.useQuery({queryKey:["plugins",t==null?void 0:t.accessToken],queryFn:()=>s.getPlugins(t==null?void 0:t.accessToken)});return{data:n,isLoading:a,isFetching:r,isError:o}}function Tt(){const{data:t,isLoading:n,isError:a}=Dt(),r=s.useQueries({queries:((t==null?void 0:t.plugins)||[]).map(i=>({queryKey:["manifest",i.value],queryFn:()=>s.loadManifest(i.value),enabled:!!i.value,staleTime:5*60*1e3,gcTime:10*60*1e3,retry:2,retryDelay:d=>Math.min(1e3*2**d,3e4)}))}),o=[];let l=n,c=a;return r.forEach((i,d)=>{var u;if(i.isLoading&&(l=!0),i.isError&&(c=!0),i.data&&((u=t==null?void 0:t.plugins)!=null&&u[d])){const m=t.plugins[d],h=i.data.visuals.map(p=>({name:p.name,pluginName:m.label,componentType:p.componentType,pluginType:m.type,icon:p.icon,chartType:p.chartType,url:m.value}));o.push(...h)}}),{data:o,isLoading:l,isError:c}}function cr({onChartTypeChange:t}){const{setCardCustomCfg:n,setCardPreferences:a,setCardType:r,setCustomCardPreferences:o}=s.useEditorActions(),{data:l,isLoading:c,isError:i}=Tt(),d=M.useCallback((u,m)=>{n(null),a({}),r(u),m&&o({type:"component",visualType:"single",url:m.url,componentName:m.name,icon:m.icon}),t==null||t()},[n,a,r,o,t]);return c?e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:e.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading custom visuals..."})})]}):i?e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:e.jsx("div",{className:"text-sm text-destructive",children:"Failed to load custom visuals"})})]}):!l||l.length===0?null:e.jsxs(e.Fragment,{children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"grid grid-cols-4 place-items-center",children:l.map((u,m)=>e.jsx(dr,{text:u.name,onClick:()=>d("custom",u),icon:u.icon},`${u.url}-${u.name}-${m}`))})]})}const dr=({text:t,icon:n,onClick:a})=>{const r=os(),o=t.charAt(0).toUpperCase();return e.jsx(s.IconButton,{onClick:a,tooltip:t,children:r?e.jsx(r,{className:"h-4 w-4"}):o})};function kt({onChartTypeChange:t,iconClassName:n}){const{setCardType:a,setCardPreferences:r,setIsDevMode:o}=s.useEditorStore(m=>m.actions),{setCardCustomCfg:l,setCustomCardPreferences:c,setQueryConfig:i}=s.useEditorActions();function d(m,h){l(null),r({}),a(m),["custom","text","map"].includes(m)&&(o(!0),i(void 0)),t==null||t()}const u=1e3;return e.jsxs("div",{className:"grid grid-cols-5 place-items-center",children:[e.jsx(s.IconButton,{openDelay:u,tooltip:"Table",onClick:()=>d("table"),className:"h-10 p-4",children:e.jsx(s.Table2,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Bar Chart",onClick:()=>d("bar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnIncreasing,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Line Chart",onClick:()=>d("line"),className:"h-10 p-4",children:e.jsx(s.ChartLine,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Stacked Bar Chart",onClick:()=>d("stackedBar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnStacked,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Stacked Line Chart",onClick:()=>d("stackedLine"),className:"h-10 p-4",children:e.jsx(s.MdStackedLineChart,{className:s.cn("size-5",n),strokeWidth:0})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Scatter Chart",onClick:()=>d("scatter"),className:"h-10 p-4",children:e.jsx(s.ChartScatter,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Bubble Chart",onClick:()=>d("bubble"),className:"h-10 p-4",children:e.jsx(s.TbChartBubble,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Pie Chart",onClick:()=>d("pie"),className:"h-10 p-4",children:e.jsx(s.ChartPie,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Doughnut Chart",onClick:()=>d("doughnut"),className:"h-10 p-4",children:e.jsx(s.Donut,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Funnel Chart",onClick:()=>d("funnel"),className:"h-10 p-4",children:e.jsx(s.TbChartFunnel,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Radar Chart",onClick:()=>d("radar"),className:"h-10 p-4",children:e.jsx(s.Radar,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Polar Area Chart",onClick:()=>d("polarArea"),className:"h-10 p-4",children:e.jsx(s.PiChartPolar,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Tornado Chart",onClick:()=>d("tornado"),className:"h-10 p-4",children:e.jsx(s.Tornado,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{tooltip:"Range Chart",onClick:()=>d("range"),className:"h-10 p-4",children:e.jsx(s.ChartNoAxesGantt,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"KPI",onClick:()=>d("kpi"),className:"h-10 p-4",children:e.jsx(s.TiSortNumerically,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Text",onClick:()=>d("text"),className:"h-10 p-4",children:e.jsx(s.BookType,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{tooltip:"Map",onClick:()=>d("map"),className:"h-10 p-4",children:e.jsx(s.Map,{className:s.cn("size-5",n)})}),e.jsx(s.IconButton,{openDelay:u,tooltip:"Custom",onClick:()=>d("custom"),className:"h-10 p-4",children:e.jsx(qe,{className:s.cn("size-5",n)})})]})}function ur({chartType:t,className:n,customIcon:a,componentName:r}){const o=os();switch(t){case"bar":return e.jsx(s.ChartColumnIncreasing,{className:n});case"line":return e.jsx(s.ChartLine,{className:n});case"pie":return e.jsx(s.ChartPie,{className:n});case"radar":return e.jsx(s.Radar,{className:n});case"scatter":return e.jsx(s.ChartScatter,{className:n});case"bubble":return e.jsx(s.TbChartBubble,{className:n});case"doughnut":return e.jsx(s.Donut,{className:n});case"stackedBar":return e.jsx(s.ChartColumnStacked,{className:n});case"stackedLine":return e.jsx(s.MdStackedLineChart,{className:n});case"polarArea":return e.jsx(s.PiChartPolar,{className:n});case"funnel":return e.jsx(s.TbChartFunnel,{className:n});case"tornado":case"pyramid":return e.jsx(s.Tornado,{className:n});case"range":return e.jsx(s.ChartNoAxesGantt,{className:n});case"kpi":return e.jsx(s.TiSortNumerically,{className:n});case"text":return e.jsx(ve,{className:n});case"map":return e.jsx(s.Map,{className:n});case"custom":return a&&o?e.jsx(o,{className:n}):r?r==null?void 0:r.charAt(0).toUpperCase():e.jsx(qe,{className:n});default:return e.jsx(s.Table2,{className:n})}}function Et({variant:t="ghost"}){var l,c;const[n,a]=M.useState(!1),r=s.useEditorStore(i=>i.card),o=r.type;return s.useDashboardStore(i=>i.isVisualEditing),e.jsxs(s.Popover,{open:n,onOpenChange:a,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:t||"ghost",children:e.jsx(ur,{className:"size-4",chartType:o,customIcon:(l=r.customCardPreferences)==null?void 0:l.icon,componentName:(c=r.customCardPreferences)==null?void 0:c.componentName})})}),e.jsxs(s.PopoverContentCustom,{onOpenAutoFocus:i=>i.preventDefault(),className:"w-72 p-1",children:[e.jsx(kt,{onChartTypeChange:()=>a(!1)}),e.jsx(cr,{onChartTypeChange:()=>a(!1)})]})]})}function mr({error:t,className:n="",textClassName:a="",copyButtonClassName:r=""}){const[o,l]=M.useState(!1),c=M.useRef(null),i=M.useRef(!1);function d(){t&&!i.current&&navigator.clipboard.writeText(t)}function u(p){(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),d())}function m(){const p=window.getSelection();if(p&&p.toString().trim()!==""){const g=p.toString();navigator.clipboard.writeText(g),l(!0),i.current=!0,setTimeout(()=>{l(!1),i.current=!1},1e3)}else i.current=!1}function h(){l(!1),i.current=!1}return e.jsxs("div",{className:`relative rounded-md border border-red-200 bg-red-50 p-3 dark:border-red-800 dark:bg-red-950/20 ${n}`,children:[e.jsx("div",{className:"float-right mb-2 ml-2",children:e.jsx(s.CopyButton,{text:t,className:`h-6 w-6 p-0 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 ${r}`})}),e.jsx("div",{ref:c,className:`cursor-pointer select-text break-all font-mono text-xs text-red-700 dark:text-red-300 ${a}`,onClick:d,onKeyDown:u,onMouseUp:m,onMouseDown:h,tabIndex:0,role:"button","aria-label":"Click to copy error message or select text to copy",children:t}),o&&e.jsx("div",{className:"absolute bottom-1 right-1 rounded bg-green-100 px-2 py-1 text-xs text-green-600 dark:bg-green-900/30 dark:text-green-400",children:"Copied!"}),e.jsx("div",{className:"clear-both"})]})}function hr(){const t=s.useEditorStore(l=>{var c,i;return(i=(c=l.card.preferences)==null?void 0:c.chartOptions)==null?void 0:i.indexAxis}),n=s.useEditorStore(l=>l.card.type),{setChartOrientation:a}=s.useEditorStore(l=>l.actions);function r(){return e.jsx(s.IconButton,{onClick:()=>{a(t==="x"||t===void 0?"y":"x")},tooltip:"Chart Orientation",children:t==="x"||t===void 0?e.jsx(Vs,{className:"size-4"}):e.jsx(_s,{className:"size-4"})})}function o(){return e.jsx(s.IconButton,{onClick:()=>{a(t==="y"||t===void 0?"x":"y")},tooltip:"Chart Orientation",children:t==="y"||t===void 0?e.jsx(Vs,{className:"size-4"}):e.jsx(_s,{className:"size-4"})})}return e.jsx(e.Fragment,{children:n==="funnel"?o():r()})}function xr({className:t}){var m,h,p,g;const n=s.useEditorStore(j=>j.card),{setCardPreferences:a,updateCardInFrame:r,setCard:o}=s.useEditorActions(),[l,c]=M.useState(!1),i=((h=(m=n.preferences)==null?void 0:m.displayOptions)==null?void 0:h.showFilterInfo)??!0,d=((g=(p=n.preferences)==null?void 0:p.displayOptions)==null?void 0:g.showCardToolbar)??!0,u=(j,x)=>{var N;const b={...n.preferences,displayOptions:{...(N=n.preferences)==null?void 0:N.displayOptions,[j]:x}};a(b);const f={...n,preferences:b};o(f),r(f)};return e.jsx("div",{className:s.cn("flex items-center",t),children:e.jsxs(s.DropdownMenu,{modal:!1,open:l,onOpenChange:c,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{className:"h-8 w-8 p-0",tooltip:"Display Options",children:e.jsx(at,{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:i,onCheckedChange:j=>{u("showFilterInfo",j)},onSelect:j=>j.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:d,onCheckedChange:j=>{u("showCardToolbar",j)},onSelect:j=>j.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"})]})]})]})})}function It(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>c.isShowingVisual),a=s.useEditorStore(c=>{var i,d;return(d=(i=c.card)==null?void 0:i.preferences)==null?void 0:d.chartOptions}),r=s.getChartGridStyle(a),{setChartGrid:o}=s.useEditorActions();function l(){const c=["xy","none","x","y"],d=(c.indexOf(r)+1)%c.length;o(c[d])}return n?e.jsxs("div",{"data-info":"visual-settings",className:"flex items-center",children:[["line","bar","range","stackedBar","stackedLine","horizontalBar","funnel"].includes(t.type)&&e.jsx(e.Fragment,{children:e.jsx(hr,{})}),!["kpi","text","custom","table"].includes(t.type)&&e.jsx(e.Fragment,{}),!["pie","doughnut","funnel","radar","polarArea","table","custom","kpi","text","map"].includes(t.type)&&e.jsxs(s.IconButton,{tooltip:"Grid Style",onClick:l,children:[(r==="xy"||!r)&&e.jsx(ns,{className:"size-4"}),r==="x"&&e.jsx(ua,{className:"size-4"}),r==="y"&&e.jsx(Fa,{className:"size-4"}),r==="none"&&e.jsx(_a,{className:"size-4"})]}),e.jsx(xr,{})]}):null}function pr(){const t=s.useEditorStore(j=>j.frame),n=s.useEditorStore(j=>j.card),{setFrame:a,setActiveTabCardId:r,setCard:o,updateCardInFrame:l}=s.useEditorActions(),c=(j,x)=>{j.dataTransfer.setData("tabIndex",x.toString())},i=j=>{j.preventDefault()},d=(j,x)=>{const b=j.dataTransfer.getData("tabIndex");if(b===x.toString())return;const f=Array.from(t.cards),[N]=f.splice(parseInt(b),1);f.splice(x,0,N),a({...t,cards:f})};function u(j){const x=t.cards.filter(N=>N.id!==j),b=x[0],f={...t,cards:x,activeCardId:b.id};a(f),r(b.id),o(b)}function m(j,x){const b={...t,cards:[...t.cards,x],activeCardId:j.id};a(b),r(x.id)}function h(){const j={...n,id:s.v4(),title:`${n.title} Copy`,tabTitle:`${n.tabTitle||n.title} Copy`};m(n,j)}function p(j){const x={dataSource:j.dataSource,connectionId:j.connectionId,lastSelectedDatabase:j.lastSelectedDatabase,lastSelectedSchema:j.lastSelectedSchema,lastSelectedTable:j.lastSelectedTable,lastSelectedDatamodelId:j.lastSelectedDatamodelId,id:s.v4(),title:"Title",description:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},type:"bar",sql:"",data:[],mode:"explorer"};m(j,x)}function g(j,x){return j.cards.length===1&&(x.displayTab===!0||x.displayTab===void 0)||j.activeCardId!==x.id&&(x.displayTab===!0||x.displayTab===void 0)?null:e.jsx("div",{onClick:()=>{const b=x.displayTab===void 0?!1:!x.displayTab;o({...x,displayTab:b}),l({...x,displayTab:b})},children:x.displayTab===!0||x.displayTab===void 0?e.jsx(s.Eye,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"}):e.jsx(pa,{className:"mr-2 size-3.5 text-muted-foreground hover:text-foreground"})})}return e.jsx(s.TabsList,{className:"group mx-4 justify-between overflow-x-auto",children:e.jsxs("div",{className:"flex items-center",children:[t.cards.map((j,x)=>e.jsxs(s.TabsTrigger,{draggable:!0,onDragStart:b=>c(b,x),onDragOver:i,onDrop:b=>d(b,x),className:"",value:j.id,children:[g(t,j),e.jsx(s.Editable,{enabled:t.activeCardId===j.id,text:j.tabTitle||j.title,onSave:b=>{o({...n,tabTitle:b}),l({...n,tabTitle:b})},children:j.tabTitle||j.title},j.id),t.activeCardId===j.id&&t.cards.length>1&&e.jsx(s.X,{className:"ml-2 size-3.5 text-muted-foreground hover:text-foreground",onClick:()=>u(j.id)})]},j.id)),e.jsx(s.Button,{className:"ml-1 h-8 px-2 hover:bg-muted-foreground/50",variant:"outline",onClick:()=>p(n),children:e.jsx(s.Plus,{className:"h-4 w-4"})}),e.jsx(s.Button,{className:"invisible ml-1 h-8 px-2 hover:bg-muted-foreground/50 group-hover:visible",variant:"outline",onClick:h,children:e.jsx(ha,{className:"h-4 w-4"})})]})})}function At(){const t=s.useEditorStore(x=>x.frame),n=s.useEditorStore(x=>x.card),a=s.useEditorStore(x=>x.isSqlRunning),r=s.useEditorStore(x=>x.isDevMode),{setFrame:o,setActiveTabCardId:l,setCard:c,setIsDevMode:i,setRunSql:d}=s.useEditorActions(),{data:u,isLoading:m,isFetching:h}=s.useDashboardCardQuery(n);function p(x){const b=t.cards.find(f=>f.id===x);if(b!=null&&b.sql){r||i(!0),l(x);return}if(b!=null&&b.queryConfig){r&&i(!1),g(x),l(x);return}r||g(x),l(x)}function g(x){const b={...t,cards:t.cards.map(N=>N.id===n.id?n:N),activeCardId:x};o(b);const f=b.cards.find(N=>N.id===x);f.sql&&d(!0),c(f)}function j(){return n.type==="kpi"?m||h?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 border-border",children:e.jsx(s.KPICard,{card:n,data:u==null?void 0:u.records,isPending:m||h})})}):n.type==="text"?m||h?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:a,card:n,data:u==null?void 0:u.records})})})}):e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(wt,{className:"grow border-none shadow-none"})})}return e.jsxs(s.Tabs,{onValueChange:p,value:t.activeCardId,className:"flex grow flex-col",children:[t.cards.map(x=>e.jsx(s.TabsContent,{className:"mt-0 grow",value:x.id,children:j()},x.id)),e.jsx(pr,{})]})}function Qe({children:t}){var I,w;s.useEditorStore(C=>C.frame);const n=s.useEditorStore(C=>C.card),a=s.useEditorStore(C=>C.isDevMode),r=s.useEditorStore(C=>C.isShowingVisual),o=s.useDashboardStore(C=>C.isVisualEditing),l=s.useEditorStore(C=>C.pythonStdOut);s.useEditorStore(C=>C.actions.setRunSql);const{setFrame:c,setCard:i,setActiveTabCardId:d,runAssistant:u,setIsDevMode:m,setCardPreferences:h}=s.useEditorActions(),{data:p,isLoading:g,isFetching:j,errorMessage:x,refetch:b}=s.useDashboardCardQuery(n);function f(){const C=JSON.stringify(p==null?void 0:p.records,null,2),v=new Blob([C],{type:"application/json"}),T=URL.createObjectURL(v),y=document.createElement("a");y.href=T,y.download=`${n.title}.json`,y.click()}function N(){const v=[Object.keys(p==null?void 0:p.records.reduce((E,B)=>({...E,...B}),{})).join(","),...((p==null?void 0:p.records)||[]).map(E=>Object.values(E).join(","))].join(`
|
|
333
|
+
`),T=new Blob([v],{type:"text/csv"}),y=URL.createObjectURL(T),O=document.createElement("a");O.href=y,O.download=`${n.title}.csv`,O.click()}function k(){const C=`Can you get the documentation for ${n.type} chart?`;u(C)}return n?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 px-6",children:[r&&e.jsxs("div",{className:"flex grow items-center",children:[e.jsx(Et,{}),o&&e.jsx(s.IconButton,{tooltip:"Visual Docs",onClick:k,children:e.jsx(la,{className:"size-4"})}),!["table","custom"].includes(n.type)&&o&&e.jsx(ir,{})]}),!r&&e.jsxs("div",{className:"flex grow items-center gap-1",children:[e.jsx(s.Button,{className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70",variant:"ghost",size:"icon",onClick:N,children:e.jsx(s.PiFileCsv,{className:"size-4"})}),e.jsx(s.Button,{className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70",variant:"ghost",size:"icon",onClick:f,children:e.jsx(ga,{strokeWidth:1.5,className:"size-4"})}),e.jsx(s.CopyButton,{text:JSON.stringify(p==null?void 0:p.records,null,2),className:"h-7 w-fit px-1 font-mono text-xs text-muted-foreground/70"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t,e.jsx(It,{})]}),n.type==="table"&&n.sql&&!s.hasValidCardConfig(n.config)&&e.jsxs("div",{className:"mr-2 flex items-center gap-3",children:[e.jsx(s.Checkbox,{id:"pagination",checked:((w=(I=n.preferences)==null?void 0:I.tablePrefs)==null?void 0:w.enableDevModePagination)??!1,onCheckedChange:C=>{var v;h({...n.preferences,tablePrefs:{...(v=n.preferences)==null?void 0:v.tablePrefs,enableDevModePagination:C}}),b()}}),e.jsx(s.Label,{htmlFor:"pagination",children:"Paginate Results"})]}),a&&e.jsx(gr,{})]}),r?e.jsx(At,{}):e.jsxs(s.ResizablePanelGroup,{className:"px-6",direction:"horizontal",children:[l&&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:l&&e.jsx(fr,{})}),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",{"px-6":l}),children:[(p==null?void 0:p.records)&&(p==null?void 0:p.records.length)>0&&e.jsx(s.TableVisual,{card:n,data:(p==null?void 0:p.records)||[]}),x&&e.jsx(mr,{error:x})]})]})]}):e.jsx(e.Fragment,{children:"No Active Card"})}function fr(){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 gr(){const t=s.useEditorStore(a=>a.isShowingVisual),n=s.useEditorStore(a=>a.actions.setIsShowingVisual);return e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Label,{htmlFor:"visualize",children:"Chart"}),e.jsx(s.SmallSwitch,{checked:t,onCheckedChange:()=>n(!t),id:"visualize",className:"data-[state=checked]:bg-foreground/50"})]})}function Ce({defaultValue:t,label:n,options:a,value:r,onValueChange:o,className:l,icon:c,showPlaceholderLabel:i=!0}){return e.jsxs(s.Select,{defaultValue:t,value:r,onValueChange:o,children:[e.jsx(s.SelectTrigger,{className:s.cn("w-full focus:ring-0 focus:ring-offset-0",l),children:e.jsxs("div",{className:"flex items-center gap-2",children:[c&&e.jsx("span",{children:c}),i&&e.jsx(s.SelectValue,{placeholder:n})]})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:n}),a.map(d=>e.jsx(s.SelectItem,{value:d.value,children:d.label},d.value))]})})]})}function jr(){var x,b;const t=s.useEditorStore(f=>f.card.customCardPreferences),{data:n}=Dt(),a=(n==null?void 0:n.plugins)||[],r=s.useEditorStore(f=>f.card),o=s.useEditorStore(f=>f.frame),l=(t==null?void 0:t.visualType)||"single",{setCustomCardPreferences:c}=s.useEditorActions(),{components:i,manifest:d}=s.useCustomVisual((t==null?void 0:t.url)||""),u=(x=d==null?void 0:d.visuals)==null?void 0:x.find(f=>f.name===(t==null?void 0:t.componentName));function m(f,N){if(!t)return;const I={...(t==null?void 0:t.dataInputCardIds)||{},[f]:{cardId:N,hookRef:null}};c({...t,dataInputCardIds:I})}function h(f){var k,I;const N=(k=o==null?void 0:o.cards)==null?void 0:k.filter(w=>{var C;return((C=w==null?void 0:w.customCardPreferences)==null?void 0:C.visualType)!=="multiple"}).map(w=>({value:w.id,label:w.tabTitle||w.title}));return e.jsx("div",{className:"space-y-2",children:(I=f==null?void 0:f.dataInputs)==null?void 0:I.map((w,C)=>{var v,T;return e.jsxs("div",{className:"grid grid-cols-10 gap-2",children:[e.jsx("div",{className:"col-span-4 flex items-center",children:w}),e.jsx(Ce,{className:"col-span-6 h-8 w-full justify-between",label:"",options:N||[],value:((T=(v=t==null?void 0:t.dataInputCardIds)==null?void 0:v[C])==null?void 0:T.cardId)||"",onValueChange:y=>m(C,y)})]},C+Math.random())})})}function p(f,N,k=[],I=""){var w,C;return t?f==="input"?e.jsx(s.Input,{className:`h-8 w-full ${s.removeRing}`,value:((w=t==null?void 0:t.settings)==null?void 0:w[N])||I,onChange:v=>{c({...t,settings:{...t==null?void 0:t.settings,[N]:v.target.value}})}},N):f==="select"?e.jsx(Ce,{className:"h-8 w-full",label:"",options:k,value:((C=t==null?void 0:t.settings)==null?void 0:C[N])||I,onValueChange:v=>{c({...t,settings:{...t==null?void 0:t.settings,[N]:v}})}}):null:null}function g(f){const N=Object.entries((f==null?void 0:f.settings)||{});return e.jsx("div",{className:"space-y-3",children:N.map(([k,I])=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:I.title}),p(I.ui,k,I.options,I.defaultValue)]},k))})}function j(f){t&&c({...t,visualType:f,componentName:""})}return e.jsxs(s.Accordion,{type:"multiple",defaultValue:["component-settings"],className:"px-6 py-2",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:[e.jsx(Ce,{icon:e.jsx(ra,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Plugin",options:a,value:(t==null?void 0:t.url)||"",onValueChange:f=>c({...t||{url:"",componentName:""},url:f})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&e.jsx(s.Tabs,{value:l,onValueChange:j,children:e.jsxs(s.TabsList,{className:"h-9 w-full",children:[e.jsx(s.TabsTrigger,{className:"h-7 w-full",value:"single",children:"Single Visual"}),e.jsx(s.TabsTrigger,{className:"h-7 w-full",value:"multiple",children:"Multi-Visual"})]})})]})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&t&&e.jsx(e.Fragment,{children:i&&e.jsx(Ce,{icon:e.jsx(ma,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Component",options:(i==null?void 0:i.filter(f=>f.type===l).map(f=>({value:f.name,label:f.name})))||[],value:t.componentName,onValueChange:f=>{console.log("changing value",f),c({...t,componentName:f})}})})]})})]}),((b=r==null?void 0:r.customCardPreferences)==null?void 0:b.componentName)&&e.jsxs(s.AccordionItem,{className:"border-none",value:"component-settings",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsxs(s.AccordionContent,{children:[u&&u.dataInputs&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Input Mapping"}),e.jsx("div",{className:"px-2",children:h(u)})]}),u&&u.settings&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"px-2",children:g(u)})})]})]})]})}function Fe(){const[t,n]=M.useState([]),a=s.useEditorStore(u=>u.card.preferences),{setFilterOnClickColumnIndex:r,setCardPreferences:o}=s.useEditorStore(u=>u.actions),l=s.useEditorStore(u=>u.queryResultColumns);s.useEditorStore(u=>{var m;return(m=u.card.preferences)==null?void 0:m.filterOnClickColumnIndex}),M.useEffect(()=>{l&&n(new Array(l.length).fill(!1))},[l]);function c(u,m){var h,p;m?a!=null&&a.onClickFilter&&((h=a==null?void 0:a.onClickFilter)==null?void 0:h.length)>0?o({...a,onClickFilter:[...a.onClickFilter,{columnIndex:u,expression:""}]}):o({...a,onClickFilter:[{columnIndex:u,expression:""}]}):(o({...a,onClickFilter:(p=a==null?void 0:a.onClickFilter)==null?void 0:p.filter(g=>g.columnIndex!==u)}),n(g=>{const j=[...g];return j[u]=!1,j}))}function i(u,m){var p;const h=(p=a==null?void 0:a.onClickFilter)==null?void 0:p.map(g=>g.columnIndex===u?{...g,expression:m.target.value}:g);o({...a,onClickFilter:h})}function d(u){var m,h,p,g;if(t!=null&&t[u]||(h=(m=a==null?void 0:a.onClickFilter)==null?void 0:m.find(j=>j.columnIndex===u))!=null&&h.expression)return e.jsx(s.Input,{value:(g=(p=a==null?void 0:a.onClickFilter)==null?void 0:p.find(j=>j.columnIndex===u))==null?void 0:g.expression,onChange:j=>i(u,j),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:l==null?void 0:l.map((u,m)=>{var h,p;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(g=>g.columnIndex===m)),onCheckedChange:g=>c(m,g)}),e.jsx("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:u}),e.jsx("div",{className:"flex items-center gap-2",children:((p=a==null?void 0:a.onClickFilter)==null?void 0:p.find(g=>g.columnIndex===m))&&e.jsx(s.Pencil,{onClick:()=>{n(g=>{const j=[...g];return j[m]=!g[m],j})},className:"invisible size-3 cursor-pointer text-gray-400 group-hover:visible"})})]}),d(m)]})},u)})})}function br({idx:t}){var i;const n=s.useEditorStore(d=>{var u;return(u=d.card)==null?void 0:u.preferences}),a=s.useEditorStore(d=>{var u;return(u=d.card.preferences)==null?void 0:u.datasetOptions}),r=s.useEditorStore(d=>d.actions.setCardPreferences),o=(i=n==null?void 0:n.chartOptions)==null?void 0:i.indexAxis,l=a==null?void 0:a.find(d=>d.idx===t);function c(d,u){(d==="end"||d==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const m={display:d!=="none",align:d,anchor:d,clamp:!0};if(!l)r({...n,datasetOptions:[...a||[],{idx:u,datalabels:m}]});else{const h={...l};h.datalabels=m;const p=a==null?void 0:a.map(g=>g.idx===u?h:g);r({...n,datasetOptions:p})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(nt,{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:()=>c("none",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(s.X,{className:"size-3.5"})}),e.jsx("button",{onClick:()=>c("start",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Ca,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})}),e.jsx("button",{onClick:()=>c("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(wa,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})}),e.jsx("button",{onClick:()=>c("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Sa,{className:s.cn("h-4 w-4",{"rotate-90":o==="y"})})})]})})]})}function vr(){const t=s.useEditorStore(l=>l.card),{data:n}=s.useDashboardCardQuery(t),{keys:a}=s.getKeys((n==null?void 0:n.records)||[]),r=a.slice(1).filter(l=>!s.METADATA_KEYS.includes(l));let o=r;if(["stackedBar","stackedLine"].includes(t.type)){const l=s.pivotData({dataArray:(n==null?void 0:n.records)||[],groupKey:a[0],pivotKey:a[1],valueKey:a[2]}),{keys:c}=s.getKeys(l);o=c.slice(1)}return{transformedMetricKeys:o,dimensionKeys:a.slice(0,1),keys:a,defaultMetricKeys:r}}function is({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 Mt(){const t=s.useEditorStore(d=>d.card),n=s.useEditorStore(d=>{var u,m,h;return(h=(m=(u=d==null?void 0:d.card)==null?void 0:u.preferences)==null?void 0:m.chartOptions)==null?void 0:h.indexAxis}),{data:a}=s.useDashboardCardQuery(t),r=n==="y"?"Metric":"Dimension",o=n==="y"?"Dimension":"Metric",{dimensionKeys:l,transformedMetricKeys:c,keys:i}=vr();return i.length===0?null:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:r}),e.jsx("div",{className:"max-h-[125px] space-y-1 overflow-y-auto",children:l.map(d=>e.jsx("p",{className:"flex h-8 items-center rounded-md bg-muted/70 px-3 hover:bg-muted",title:d,children:Lt(d)},d))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:o}),e.jsx("div",{className:"my-1 max-h-[125px] space-y-1 overflow-y-auto",children:c.map((d,u)=>e.jsx(Rt,{className:"flex h-8 items-center bg-muted/70 px-3 hover:bg-muted",iconClassName:"invisible group-hover:visible",col:d,idx:u},d))})]})]})}function Lt(t,n=30){return t.length>n?t.slice(0,n)+"...":t}function Rt({col:t,idx:n,className:a,iconClassName:r,children:o}){const l=s.useEditorStore(m=>{var h;return(h=m.card)==null?void 0:h.preferences}),c=s.useEditorStore(m=>{var h,p;return(p=(h=m.card)==null?void 0:h.preferences)==null?void 0:p.datasetOptions}),i=c==null?void 0:c.find(m=>m.idx===n),{setCardPreferences:d}=s.useEditorStore(m=>m.actions);function u(m){if(!i)d({...l,datasetOptions:[...c||[],{idx:n,type:m==="area"?"line":m,fill:m==="area"?"origin":""}]});else{const h={...i};h.type=m==="area"?"line":m,h.fill=m==="area"?"origin":"";const p=c==null?void 0:c.map(g=>g.idx===n?h:g);d({...l,datasetOptions:p})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",a),children:[o||e.jsx(is,{className:"max-w-[100px]",title:t,children:Lt(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>u("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>u("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>u("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(br,{idx:n})]})]})}function Es(){const t=s.useEditorStore(g=>g.selectedConnectionId),n=s.useEditorStore(g=>g.selectedDatamodelId),a=s.useEditorStore(g=>g.selectedDatabaseName),r=s.useEditorStore(g=>g.selectedSchemaName),o=s.useEditorStore(g=>g.selectedTableName),l=s.useDashboardStore(g=>g.dashboard.filters)||[],c=s.useDashboardStore(g=>g.actions.addFilter),i=s.useDashboardStore(g=>g.actions.removeFilter),{removeFilterValues:d}=s.useDashboardActions(),{modelItems:u,tableName:m,connectionType:h}=s.useEditorAside();function p(g,j="dashboard",x){var T;const b=s.fmt(g.column_name),f=s.fmt(a||""),N=s.fmt(r||""),k=s.fmt(m);let I=s.getQualifiedTableName({schemaName:N,tableName:k,connectionType:h,databaseName:f}),w=`${I}.${b}`;const C=(T=u==null?void 0:u.find(y=>y.id===n))==null?void 0:T.name;n&&n!=="none"&&(w=`${s.DATAMODEL_NAMESPCACE}.${C}.${b}`,I=`${s.DATAMODEL_NAMESPCACE}.${C}`),x!=null&&x.qualifiedFieldName&&(w=x.qualifiedFieldName),x!=null&&x.entityName&&(I=x.entityName);const v=l==null?void 0:l.find(y=>y.column===w&&y.table===k&&(y.database===f||y.database===a));if(v)d(v.id),i(v.id);else{const y=s.v4();return m==="api"&&t?(c({location:j,id:y,column:w,title:g.column_name,dataType:g.data_type,table:"api",database:"",connectionId:t,operation:"in",sql:s.getDefaultFilterSql(g.data_type,I,b)}),y):(c({id:y,location:j,column:w,title:g.column_name,dataType:g.data_type,table:o||"",database:a||"",connectionId:t||"",operation:"in",sql:s.getDefaultFilterSql(g.data_type,I,b)}),y)}}return{assignFilter:p}}function Ge(){const t=s.useDashboardStore(i=>i.dashboard.filters),n=s.useEditorStore(i=>i.frame),{setFrame:a}=s.useEditorActions(),{columns:r}=s.useEditorAside(),{assignFilter:o}=Es();function l(i){const d=o(i,"frame");a({...n,filterId:d})}const c=t==null?void 0:t.find(i=>i.id===n.filterId);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Card Filter"}),e.jsx(yr,{onSelect:l,columns:r}),c&&e.jsx(s.FilterHeader,{filter:c})]})}function yr({columns:t,onSelect:n}){var c;const[a,r]=Ie.useState(!1),[o,l]=Ie.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:[o?(c=t.find(i=>i.column_name===o))==null?void 0:c.column_name:"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 framework found."}),e.jsx(s.CommandGroup,{children:t==null?void 0:t.map(i=>e.jsxs(s.CommandItem,{value:i.column_name,onSelect:d=>{const u=d===o?"":d;l(u),r(!1),u&&n(i)},children:[i.column_name,e.jsx(s.CheckIcon,{className:s.cn("ml-auto h-4 w-4",o===i.column_name?"opacity-100":"opacity-0")})]},i.column_name))})]})]})})]})}function Nr({cardType:t}){return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} Chart`}),e.jsxs(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT x-axis, y-axis-1, y-axis-2,... FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"x-axis - category"}),e.jsx("li",{children:"y-axis1 - number"}),e.jsx("li",{children:"y-axis2 - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:n=>n.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/bar-line-area",children:"example"})," in the docs."]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsx(s.AccordionContent,{className:"space-y-4 px-2",children:e.jsx(Mt,{})})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Cr({cardType:t}){function n(a){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:a==="bubble"?"SELECT label, [group], x-axis, y-axis, radius FROM table":"SELECT label, [group], x-axis, y-axis FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"label - category"}),e.jsx("li",{children:"group (optional) - category"}),e.jsx("li",{children:"x-axis - number"}),e.jsx("li",{children:"y-axis - number"}),a==="bubble"&&e.jsx("li",{children:"radius - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:l=>l.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/bubble",children:"example"})," in the docs."]})]})}return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} Chart`}),e.jsx(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:n(t)})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Ot(){const t=s.useEditorStore(i=>i.card.type),n=s.useEditorStore(i=>i.isDevMode),a=s.useEditorStore(i=>i.card.preferences),{setCardPreferences:r}=s.useEditorStore(i=>i.actions);function o(i){var m;const d={datalabels:{display:i!=="none",align:i,anchor:i,clamp:!0}},u={...a,chartOptions:{...a==null?void 0:a.chartOptions,plugins:{...(m=a==null?void 0:a.chartOptions)==null?void 0:m.plugins,...d}}};r(u)}function l(){var i,d,u;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((u=(d=(i=a==null?void 0:a.chartOptions)==null?void 0:i.plugins)==null?void 0:d.datalabels)==null?void 0:u.anchor)||"none",onValueChange:o,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 c(){var i,d,u;return e.jsx("div",{children:e.jsxs(s.Select,{value:((u=(d=(i=a==null?void 0:a.chartOptions)==null?void 0:i.plugins)==null?void 0:d.datalabels)==null?void 0:u.anchor)||"none",onValueChange:o,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?l():c()})}const Sr={datasets:[{type:"line",label:"Sum_sales",data:[]},{type:"bar",label:"Sum_profit",data:[]}]},wr={datasets:[{fill:"origin",type:"line",label:"Sum_sales",data:[]}]};function Dr(){const t=s.useEditorStore(n=>n.card.type);return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsx(s.Accordion,{className:" ",type:"single",collapsible:!0,children:Tr(t)}),!["kpi"].includes(t)&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(Ot,{}),e.jsx(Fe,{}),e.jsx(Ge,{})]})]})}function Tr(t){if(["line","bar"].includes(t))return e.jsxs(e.Fragment,{children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsx("p",{children:"Chart Query"})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT x-axis, y-axis-1, y-axis-2, y-axis-3,... FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"X-axis - Category (ex. city)"}),e.jsx("li",{children:"Y-axis - Number (ex. population)"})]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:"Mixed Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-2 text-xs",children:[e.jsxs("p",{children:["Click ",e.jsx("b",{children:"Customize"})," and change the `type` property in the dataset."]}),e.jsx("pre",{children:JSON.stringify(Sr,null,2)})]})]}),e.jsxs(s.AccordionItem,{value:"item-3",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:"Area Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-2 text-xs",children:[e.jsxs("p",{children:["Click ",e.jsx("b",{children:"Customize"})," and add `fill` property to the dataset. See",e.jsx("a",{className:"mx-1 text-blue-500 hover:underline",href:"https://www.chartjs.org/docs/latest/samples/area/line-boundaries.html",target:"_blank",children:"docs"}),"for more options."]}),e.jsx("pre",{children:JSON.stringify(wr,null,2)})]})]})]});if(t==="bubble")return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:["How to create a ",e.jsx("span",{children:t})," chart query?"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, x-axis, y-axis, radius FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Bubble Group (opt) - Category (ex. state)"}),e.jsx("li",{children:"X-axis - Number (ex. avg. age)"}),e.jsx("li",{children:"Y-axis - Number (ex. avg. weight)"}),e.jsx("li",{children:"Radius - Number (ex. population)"})]})]})]})});if(t==="scatter")return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:["How to create a ",e.jsx("span",{children:t})," chart query?"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, x-axis, y-axis FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Group (opt) - Category (ex. state)"}),e.jsx("li",{children:"X-axis - Number (ex. avg. age)"}),e.jsx("li",{children:"Y-axis - Number (ex. avg. weight)"})]})]})]})});if(["pie","doughnut","polarArea","funnel"].includes(t))return e.jsx(e.Fragment,{children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"font-normal",children:e.jsxs("p",{children:[e.jsx("span",{children:t==="polarArea"?"Polar":t.charAt(0).toUpperCase()+t.slice(1)})," ","chart query"]})}),e.jsxs(s.AccordionContent,{className:" ",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs font-semibold",children:"SELECT label, measure FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs font-normal [&>li]:mt-2",children:[e.jsx("li",{children:"Label - Category (ex. city)"}),e.jsx("li",{children:"Measure - Number (ex. population)"})]})]})]})})}function kr({colorRanges:t,setColorRanges:n}){const a={start:-1/0,end:100,color:""};function r(c,i,d){const u=[...t];u[c]={...u[c],[i]:d},n(u)}function o(c){const i=[...t];i.splice(c,1),n(i)}function l(){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:l,variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.Plus,{className:"size-3"})})]}),t.map((c,i)=>e.jsxs("div",{className:"flex items-center gap-2 px-2",children:[e.jsx(s.Input,{onChange:d=>r(i,"start",d.target.value),value:c.start,className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx("span",{children:"-"}),e.jsx(s.Input,{value:c.end,onChange:d=>r(i,"end",d.target.value),className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx(s.Input,{onChange:d=>r(i,"color",d.target.value),value:c.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:()=>o(i),variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.X,{className:"size-3"})})]},i))]})}function Er(){var m,h,p,g,j;const t=s.useEditorStore(x=>x.card.preferences),n=s.useEditorStore(x=>x.actions.setCardPreferences),a=s.useEditorStore(x=>x.card),r=s.isExplorerCard(a),o=s.useEditorStore(x=>x.actions.setNumberFormat);s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.decimalPlaces});const l=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.locale}),c=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.currency});s.useEditorStore(x=>x.actions.setFilterOnClickField);const i=s.useEditorStore(x=>{var b,f;return(f=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:f.colorRanges})||[],d=s.useEditorStore(x=>x.actions.setColorRanges),u=[...new Set(s.LOCALE_CURRENCY_PAIRS.map(x=>x.currency))];return e.jsxs("div",{children:[!r&&e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(s.Checkbox,{checked:!!((m=t==null?void 0:t.formatNumber)!=null&&m.enabled),onCheckedChange:x=>{n({...t,formatNumber:{...t==null?void 0:t.formatNumber,enabled:x}})}}),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:l||"none",onValueChange:x=>{var b,f,N;return o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((f=t==null?void 0:t.formatNumber)==null?void 0:f.currency)||"",x,((N=t==null?void 0:t.formatNumber)==null?void 0:N.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(x=>e.jsx(s.SelectItem,{value:x.locale,children:x.locale},x.locale))]})})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Currency"}),e.jsxs(s.Select,{value:c||"none",onValueChange:x=>{var b,f,N;console.log("currency",x),o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,x==="none"?"":x,((f=t==null?void 0:t.formatNumber)==null?void 0:f.locale)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.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"),u.map(x=>e.jsx(s.SelectItem,{value:x,children:x},x))]})})]})]})]}),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:((g=(p=t==null?void 0:t.formatNumber)==null?void 0:p.decimalPlaces)==null?void 0:g.toString())||"0",onValueChange:x=>{var b,f,N;return o(Number(x),((b=t==null?void 0:t.formatNumber)==null?void 0:b.currency)||"",((f=t==null?void 0:t.formatNumber)==null?void 0:f.locale)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.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(x=>e.jsx(s.SelectItem,{value:x,children:x},x))})]})]}),e.jsxs("div",{className:"w-full space-y-1",children:[e.jsx(s.Label,{children:"Suffix"}),e.jsx(s.Input,{value:((j=t==null?void 0:t.formatNumber)==null?void 0:j.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:x=>{var b,f,N;return o(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((f=t==null?void 0:t.formatNumber)==null?void 0:f.currency)||"",((N=t==null?void 0:t.formatNumber)==null?void 0:N.locale)||"",x.target.value)}})]})]})]})}),e.jsx(s.Separator,{className:"my-3"}),e.jsx(kr,{colorRanges:i,setColorRanges:d})]})]})}function Ir(){return e.jsxs("div",{className:"space-y-6 px-6 py-2",children:[e.jsx(s.Accordion,{type:"single",collapsible:!0,children:e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{className:"",children:"KPI Query"}),e.jsxs(s.AccordionContent,{className:"font-mono",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 font-mono text-xs",children:"SELECT current, previous FROM table"}),e.jsxs("ul",{className:"my-6 ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"current - number"}),e.jsx("li",{children:"previous - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/kpi",children:"example"})," in the docs."]})]})]})}),e.jsx("section",{className:"",children:e.jsx(Er,{})}),e.jsx("div",{}),e.jsx("div",{})]})}function ps({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})]})}const Ar=[{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"}],Mr=["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"],Lr=Mr.map(t=>({label:t,value:t}));function Rr(){var d,u,m,h,p,g,j,x,b,f,N,k,I,w,C,v,T,y;const t=s.useEditorStore(O=>O.card),n=(u=(d=t==null?void 0:t.preferences)==null?void 0:d.mapVisualOptions)==null?void 0:u.topoJsonUrl,[a,r]=M.useState(((h=(m=t==null?void 0:t.preferences)==null?void 0:m.mapVisualOptions)==null?void 0:h.customTopoJsonUrl)||""),{setCardPreferences:o}=s.useEditorActions(),{data:l}=s.useTopoJson(t),c=Object.keys((l==null?void 0:l.objects)||{}).map(O=>({label:O,value:O}))||[],i=[{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:"p-6",children:[e.jsx(ps,{summary:"Map Chart",children:e.jsx("p",{className:"rounded-md bg-muted p-2 font-mono text-xs",children:"SELECT country, value FROM table"})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(ps,{open:!0,summary:"Settings",children:e.jsxs("div",{className:"space-y-3 px-2",children:[e.jsx(Ce,{className:"h-9",options:i,onValueChange:O=>{console.log("value",O),o({...t.preferences,mapVisualOptions:{topoJsonUrl:O}})},value:n||"",label:"Select Map"}),n==="custom"&&e.jsx(s.Input,{onChange:O=>{r(O.target.value)},onBlur:()=>{var O;console.log("onBlur",a),o({...t.preferences,mapVisualOptions:{...(O=t.preferences)==null?void 0:O.mapVisualOptions,customTopoJsonUrl:a}})},value:a,className:`h-9 w-full ${s.removeRing}`,placeholder:"Custom URL"}),l&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Map Object"}),e.jsx(Ce,{className:"h-9",options:c,value:((g=(p=t.preferences)==null?void 0:p.mapVisualOptions)==null?void 0:g.objectKey)||"",label:"Map Object",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,objectKey:O}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Projection"}),e.jsx(Ce,{className:"h-9",options:Ar,value:((x=(j=t.preferences)==null?void 0:j.mapVisualOptions)==null?void 0:x.projection)||"",label:"Projection",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projection:O}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Colors"}),e.jsx(Ce,{className:"h-9",options:Lr,value:((f=(b=t.preferences)==null?void 0:b.mapVisualOptions)==null?void 0:f.colorScale)||"",label:"Select Color Scale",onValueChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,colorScale:O}})}})]})]})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(ps,{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:((k=(N=t.preferences)==null?void 0:N.mapVisualOptions)==null?void 0:k.projectionScale)||1,onChange:O=>{var E;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionScale:Number(O.target.value)}})}}),e.jsx(s.Label,{children:"X"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((C=(w=(I=t.preferences)==null?void 0:I.mapVisualOptions)==null?void 0:w.projectionOffset)==null?void 0:C[0])||0,onChange:O=>{var E,B,D,S;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionOffset:[Number(O.target.value),((S=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:S[1])||0]}})}}),e.jsx(s.Label,{children:"Y"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((y=(T=(v=t.preferences)==null?void 0:v.mapVisualOptions)==null?void 0:T.projectionOffset)==null?void 0:y[1])||0,onChange:O=>{var E,B,D,S;o({...t.preferences,mapVisualOptions:{...(E=t.preferences)==null?void 0:E.mapVisualOptions,projectionOffset:[((S=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:S[0])||0,Number(O.target.value)]}})}})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(Fe,{})]})}function Or(){var r;const t=s.useEditorStore(o=>o.card.preferences),{setCardPreferences:n}=s.useEditorStore(o=>o.actions);function a(o){n({...t,textVisualOptions:{...t==null?void 0:t.textVisualOptions,isDynamicText:o==="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 Je({cardType:t,docContent:n,suffix:a="Chart"}){let r="pie-donut-polar";return t==="funnel"&&(r="funnel"),e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:`${s.titleCase(t)} ${a}`}),e.jsx(s.AccordionContent,{children:n||e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT label, measure FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"label - category"}),e.jsx("li",{children:"measure - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:o=>o.stopPropagation(),className:"text-blue-700",href:`https://docs.semaphor.cloud/docs/charts/${r}`,children:"example"})," in the docs."]})]})})]}),t==="text"&&e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsx(s.AccordionContent,{className:"space-y-4 px-2 py-4",children:e.jsx(Or,{})})]}),!["range","text"].includes(t)&&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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Fr(){const t=s.useEditorStore(r=>{var o,l;return(l=(o=r==null?void 0:r.card)==null?void 0:o.preferences)==null?void 0:l.sortChart}),{setSortChart:n}=s.useEditorActions();function a(){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort"}),e.jsx(Ce,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"ASC",value:"asc"},{label:"DESC",value:"desc"}],value:t||"none",onValueChange:r=>{n(r)}})]})}return e.jsx("div",{className:"space-y-6 px-6 py-2",children:e.jsxs(s.Accordion,{defaultValue:["item-2"],type:"multiple",children:[e.jsxs(s.AccordionItem,{value:"item-1",children:[e.jsx(s.AccordionTrigger,{children:"Stacked Chart"}),e.jsxs(s.AccordionContent,{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT x-axis, stack-by, y-axis FROM table"}),e.jsxs("ul",{className:"ml-6 list-disc text-xs [&>li]:mt-2",children:[e.jsx("li",{children:"x-axis - category"}),e.jsx("li",{children:"stack by - category"}),e.jsx("li",{children:"y-axis - number"})]}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:r=>r.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/stacked",children:"example"})," in the docs."]})]})]}),e.jsxs(s.AccordionItem,{value:"item-2",children:[e.jsx(s.AccordionTrigger,{children:"Settings"}),e.jsxs(s.AccordionContent,{className:"space-y-4 px-2",children:[a(),e.jsx(Mt,{})]})]}),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(Fe,{}),e.jsx(Ge,{})]})]})]})})}function Br({cardType:t="table"}){console.log("cardType",t);const n=s.useEditorStore(o=>{var l;return(l=o.card)==null?void 0:l.preferences}),a=s.useEditorStore(o=>o.actions.setCardPreferences),r=o=>{a({...n,allowDownload:o})};return e.jsxs("div",{className:"space-y-6 px-6 py-2",children:[e.jsx(s.Accordion,{defaultValue:["item-3"],type:"multiple",children: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(Fe,{}),e.jsx(Ge,{})]})]})}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Checkbox,{onCheckedChange:r,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 Ft({color:t,onColorChange:n,onClose:a}){const[r,o]=M.useState(0),[l,c]=M.useState(100),[i,d]=M.useState(50),[u,m]=M.useState(t);M.useEffect(()=>{const b=$s(t);if(b){const f=qs(b.r,b.g,b.b);o(f.h),c(f.s),d(f.l),m(t)}},[t]);const h=b=>{o(b),g(b,l,i)},p=b=>{const f=b.currentTarget.getBoundingClientRect(),N=Math.max(0,Math.min(1,(b.clientX-f.left)/f.width)),k=Math.max(0,Math.min(1,(b.clientY-f.top)/f.height)),I=N*100,w=(1-k)*100;c(I),d(w),g(r,I,w)},g=(b,f,N)=>{const k=zr(b,f,N),I=Pr(k.r,k.g,k.b);m(I)},j=b=>{if(m(b),/^#[0-9A-Fa-f]{6}$/.test(b)){const f=$s(b);if(f){const N=qs(f.r,f.g,f.b);o(N.h),c(N.s),d(N.l)}}},x=()=>{/^#[0-9A-Fa-f]{6}$/.test(u)&&(n(u),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:p,onMouseMove:b=>{b.buttons===1&&p(b)},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:`${l}%`,top:`${100-i}%`,backgroundColor:u}})]}),e.jsx("div",{className:"space-y-2",children:e.jsx("input",{type:"range",min:"0",max:"360",value:r,onChange:b=>h(Number(b.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:u,onChange:b=>j(b.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:u}}),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:x,children:"OK"})]})]})}function $s(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 Pr(t,n,a){return"#"+((1<<24)+(t<<16)+(n<<8)+a).toString(16).slice(1)}function qs(t,n,a){t/=255,n/=255,a/=255;const r=Math.max(t,n,a),o=Math.min(t,n,a);let l=0,c=0;const i=(r+o)/2;if(r!==o){const d=r-o;switch(c=i>.5?d/(2-r-o):d/(r+o),r){case t:l=((n-a)/d+(n<a?6:0))/6;break;case n:l=((a-t)/d+2)/6;break;case a:l=((t-n)/d+4)/6;break}}return{h:Math.round(l*360),s:Math.round(c*100),l:Math.round(i*100)}}function zr(t,n,a){t/=360,n/=100,a/=100;let r,o,l;if(n===0)r=o=l=a;else{const c=(u,m,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?u+(m-u)*6*h:h<.5?m:h<.6666666666666666?u+(m-u)*(.6666666666666666-h)*6:u),i=a<.5?a*(1+n):a+n-a*n,d=2*a-i;r=c(d,i,t+1/3),o=c(d,i,t),l=c(d,i,t-1/3)}return{r:Math.round(r*255),g:Math.round(o*255),b:Math.round(l*255)}}const _r=["#000000","#ffffff","#6b7280","#dc2626","#ea580c","#ca8a04","#16a34a","#0891b2","#2563eb","#7c3aed","#c026d3","#e11d48","#0f172a","#f3f4f6","#fbbf24"];function Bt(){var k,I,w,C,v,T,y,O,E,B;const t=s.useEditorStore(D=>D.card),n=s.useEditorStore(D=>{var S;return(S=D.card)==null?void 0:S.preferences}),{setCardPreferences:a,updateCardInFrame:r}=s.useEditorActions(),{data:o}=s.useDashboardCardQuery(t),[l,c]=M.useState({}),[i,d]=M.useState(null),[u,m]=M.useState(null),h=M.useMemo(()=>{var F,R,A,P,Y,z,X;if(!(o!=null&&o.records)||o.records.length===0)return[];const D=(t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine",S=(t==null?void 0:t.type)==="bar"||(t==null?void 0:t.type)==="line",L=((F=t==null?void 0:t.config)==null?void 0:F.pivotByColumns)&&t.config.pivotByColumns.length>0;if((D||S)&&L){if(o.pivotSchema&&Array.isArray(o.pivotSchema)){const te=new Set;return o.pivotSchema.forEach(K=>{K.alias&&te.add(K.alias)}),Array.from(te)}if(o.records.length>0){const te=o.records[0],K=Object.keys(te),W=new Set;(R=t==null?void 0:t.config)!=null&&R.groupByColumns&&t.config.groupByColumns.forEach(_=>{W.add(_.label||_.name),W.add(_.alias||_.name)});const G=new Set;return(A=t==null?void 0:t.config)!=null&&A.metricColumns&&t.config.metricColumns.forEach(_=>{const V=_.alias||_.name;G.add(V),G.add(`${V}_count`),G.add(`${V}_sum`),G.add(`${V}_avg`),G.add(`${V}_min`),G.add(`${V}_max`);const se=_.entityName||_.qualifiedEntityName;se&&(G.add(`${se}_${V}`),G.add(`${se}_${V}_count`))}),K.filter(_=>!W.has(_)&&!G.has(_))}}if((S||D)&&!L&&((Y=(P=t==null?void 0:t.config)==null?void 0:P.metricColumns)!=null&&Y.length))return t.config.metricColumns.map(te=>te.alias||te.label||te.name);if((X=(z=t==null?void 0:t.config)==null?void 0:z.groupByColumns)!=null&&X.length){const te=t.config.groupByColumns[0],K=te.label||te.name,W=new Set;return o.records.forEach(G=>{const ee=G[K];ee!=null&&W.add(String(ee))}),Array.from(W)}return[]},[o,(k=t==null?void 0:t.config)==null?void 0:k.groupByColumns,(I=t==null?void 0:t.config)==null?void 0:I.pivotByColumns,(w=t==null?void 0:t.config)==null?void 0:w.metricColumns,t==null?void 0:t.type]),p=M.useMemo(()=>s.getDefaultChartColors(),[]);M.useEffect(()=>{const D={};h.forEach((S,L)=>{D[S]=s.getColorForValue(S,L,n==null?void 0:n.colorConfig)}),c(D)},[h,n==null?void 0:n.colorConfig,p]);const g=(D,S)=>{const L={...l,[D]:S};c(L);const F={...n||{},colorConfig:{segments:L}};a(F);const R={...t,preferences:F};r(R)},j=(D,S)=>{var Y;const L=p[S%p.length],{[D]:F,...R}=((Y=n==null?void 0:n.colorConfig)==null?void 0:Y.segments)||{},A={...n||{},colorConfig:{segments:R}};a(A);const P={...t,preferences:A};r(P),c(z=>({...z,[D]:L}))};if(!h.length||!((t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine"?((v=(C=t==null?void 0:t.config)==null?void 0:C.groupByColumns)==null?void 0:v.length)||((y=(T=t==null?void 0:t.config)==null?void 0:T.pivotByColumns)==null?void 0:y.length):(E=(O=t==null?void 0:t.config)==null?void 0:O.groupByColumns)==null?void 0:E.length)||["table","kpi","text","custom"].includes(t.type))return null;const f=()=>{const D={...n||{},colorConfig:{segments:{}}};a(D);const S={...t,preferences:D};r(S);const L={};h.forEach((F,R)=>{L[F]=s.getColorForValue(F,R,void 0)}),c(L)},N=Object.keys(((B=n==null?void 0:n.colorConfig)==null?void 0:B.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(La,{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:N&&e.jsxs("button",{className:"ml-auto flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:f,children:[e.jsx(s.RotateCcw,{className:"h-3 w-3"}),"Reset All"]})})}),e.jsx("div",{className:"max-h-[200px] space-y-2 overflow-y-auto pr-1",children:h.map((D,S)=>{const L=s.isDefaultColor(l[D],S),F=!L;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:i===D,onOpenChange:R=>d(R?D: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:l[D]}})}),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:p.slice(0,10).map((R,A)=>e.jsxs("button",{className:s.cn("relative h-5 w-5 rounded border-2 transition-all hover:scale-110",l[D]===R?"border-gray-900":"border-transparent"),style:{backgroundColor:R},onClick:()=>{g(D,R),d(null)},children:[A===S%p.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:R})]},`default-${A}`))})]}),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:_r.map((R,A)=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border transition-all hover:scale-110",l[D]===R?"border-2 border-gray-900":R==="#ffffff"?"border border-gray-300":"border border-transparent"),style:{backgroundColor:R},onClick:()=>{g(D,R),d(null)},children:e.jsx("span",{className:"sr-only",children:R})},`preset-${A}`))})]}),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:()=>{m({value:D,color:l[D]}),d(null)},children:"Custom color"}),!L&&e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>{j(D,S),d(null)},children:[e.jsx(s.RotateCcw,{className:"h-3 w-3"}),"Reset"]})]})]})})]}),e.jsx("span",{className:"flex-1 truncate text-sm",children:D}),F&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"(custom)"})]},D)})}),u&&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:()=>m(null)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(Ft,{color:u.color,onColorChange:D=>{g(u.value,D),m(null)},onClose:()=>m(null)})})]})]})})]})}function we({value:t,onSave:n,placeholder:a="",type:r="text",className:o=""}){const[l,c]=M.useState(t??""),[i,d]=M.useState(!1);M.useEffect(()=>{c(t??"")},[t]);const u=()=>{n(l),d(!1)},m=()=>{c(t??""),d(!1)};return e.jsxs("div",{className:`flex items-center gap-2 ${o}`,children:[e.jsx(s.Input$1,{placeholder:a,type:r,value:i?l:t??"",onChange:h=>{c(h.target.value),d(!0)},onFocus:()=>d(!0),onClick:h=>h.stopPropagation(),className:"h-8 text-xs",onPointerDown:h=>h.stopPropagation(),onKeyDown:h=>{h.stopPropagation(),h.key==="Enter"&&i&&l!==t?u():h.key==="Escape"&&m()},"aria-label":a||"Edit field"}),i&&l!==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:u,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:m,children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]})]})}const Vr=["auto","number","currency","percent","scientific","date"],Ur=[{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"}],Gr=[{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"}],Yr=t=>t.charAt(0).toUpperCase()+t.slice(1);function Is({formatOptions:t={},onFormatOptionsChange:n,showTitle:a=!0,title:r="NUMBER FORMAT"}){const o=t.type||"auto",l=(i,d)=>{n({...t,[i]:d})},c=()=>o==="currency"?2:o==="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:o,onValueChange:i=>l("type",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Vr.map(i=>e.jsx(s.SelectItem,{value:i,className:"text-xs",children:i==="auto"?"Auto (Default)":Yr(i)},i))})]})]}),o!=="auto"&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-4",children:[["number","currency","percent"].includes(o)&&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??c(),onChange:i=>l("decimalPlaces",parseInt(i.target.value)||0),className:"h-8 text-xs"})})]}),o==="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:i=>l("currency",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Ur.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),["number","currency"].includes(o)&&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:i=>l("useSuffix",i)})]}),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:i=>l("locale",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Gr.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),o==="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:i=>l("prefix",i.target.value),className:"h-8 text-xs"})})]}),o==="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:i=>l("suffix",i.target.value),className:"h-8 text-xs"})})]}),["number","currency"].includes(o)&&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:i=>l("negativeInParentheses",i)})]}),o==="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:i=>l("multiplyBy",i.target.value?parseFloat(i.target.value):void 0),className:"h-8 text-xs"})})]}),o==="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:i=>l("dateFormat",i.target.value),className:"h-8 text-xs"})})]})]})]})}function Hs({axis:t,label:n,type:a,config:r,onChange:o}){var h,p,g,j,x,b,f,N,k,I,w,C;const l=(v,T)=>{o({...r,[v]:T})},c=(v,T)=>{var y,O;o({...r,name:{enabled:v==="enabled"?T:((y=r==null?void 0:r.name)==null?void 0:y.enabled)??!1,text:v==="text"?T:(O=r==null?void 0:r.name)==null?void 0:O.text}})},i=(v,T)=>{var y,O;o({...r,labels:{enabled:v==="enabled"?T:((y=r==null?void 0:r.labels)==null?void 0:y.enabled)??!0,rotation:v==="rotation"?T:(O=r==null?void 0:r.labels)==null?void 0:O.rotation}})},d=(v,T)=>{o({...r,scale:{...r==null?void 0:r.scale,[v]:T===""?"auto":Number(T)}})},u=t==="x"?["auto","top","bottom"]:["auto","left","right"],m=["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:v=>l("enabled",v),onClick:v=>v.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 justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"TITLE"}),e.jsx(s.SmallSwitch,{checked:((h=r==null?void 0:r.name)==null?void 0:h.enabled)??!1,onCheckedChange:v=>c("enabled",v)})]}),((p=r==null?void 0:r.name)==null?void 0:p.enabled)&&e.jsx(we,{placeholder:`${n} title`,value:((g=r==null?void 0:r.name)==null?void 0:g.text)||"",onSave:v=>c("text",v),className:""})]}),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:v=>l("position",v),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(v=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:v==="auto"?"Auto (Default)":s.titleCase(v)},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",children:"LABELS"}),e.jsx(s.SmallSwitch,{checked:((j=r==null?void 0:r.labels)==null?void 0:j.enabled)!==!1,onCheckedChange:v=>i("enabled",v)})]}),((x=r==null?void 0:r.labels)==null?void 0:x.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(((b=r==null?void 0:r.labels)==null?void 0:b.rotation)||"auto"),onValueChange:v=>i("rotation",v==="auto"?"auto":Number(v)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:m.map(v=>e.jsx(s.SelectItem,{value:v,className:"text-xs",children:v==="auto"?"Auto (Default)":`${v}°`},v))})]})]})]}),a==="value"&&e.jsx(Is,{formatOptions:(r==null?void 0:r.formatOptions)||{},onFormatOptionsChange:v=>o({...r,formatOptions:v}),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(we,{type:"number",placeholder:"auto",value:((f=r==null?void 0:r.scale)==null?void 0:f.min)==="auto"||((N=r==null?void 0:r.scale)==null?void 0:N.min)===void 0?"":String(r.scale.min),onSave:v=>d("min",v),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(we,{type:"number",placeholder:"auto",value:((k=r==null?void 0:r.scale)==null?void 0:k.max)==="auto"||((I=r==null?void 0:r.scale)==null?void 0:I.max)===void 0?"":String(r.scale.max),onSave:v=>d("max",v),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(we,{type:"number",placeholder:"auto",value:((w=r==null?void 0:r.scale)==null?void 0:w.stepSize)==="auto"||((C=r==null?void 0:r.scale)==null?void 0:C.stepSize)===void 0?"":String(r.scale.stepSize),onSave:v=>d("stepSize",v),className:""})})]})]})]})]})]})}function Pt(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>{var i;return(i=c.card)==null?void 0:i.preferences}),{setCardPreferences:a,updateCardInFrame:r}=s.useEditorActions();if(!t||["tornado","pyramid","kpi"].includes(t.type))return null;const o=s.AxisConfigurator.getAxisInfo(t.type,n);if(!o.hasXAxis&&!o.hasYAxis)return null;const l=(c,i)=>{const u={...n||{},[c==="x"?"xAxisConfig":"yAxisConfig"]:i};a(u);const m={...t,preferences:u};r(m)};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(at,{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:[o.hasXAxis&&e.jsx(Hs,{axis:"x",label:"X-Axis",type:o.xAxisType,config:n==null?void 0:n.xAxisConfig,onChange:c=>l("x",c)}),o.hasYAxis&&e.jsx(Hs,{axis:"y",label:"Y-Axis",type:o.yAxisType,config:n==null?void 0:n.yAxisConfig,onChange:c=>l("y",c)})]})})]})}function zt(){const t=s.useEditorStore(u=>u.card),n=s.useEditorStore(u=>{var m,h,p,g;return(g=(p=(h=(m=u.card)==null?void 0:m.preferences)==null?void 0:h.chartOptions)==null?void 0:p.plugins)==null?void 0:g.legend}),{setLegendOptions:a}=s.useEditorActions();if(!t||!s.chartSupportsLegend(t.type))return null;const r="bottom",o="center",l=!(t.type==="stackedBar"||t.type==="stackedLine"),c=(u,m)=>{const h={...n,[u]:m};a(h)},i=["top","bottom","left","right"],d=["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(Na,{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:(n==null?void 0:n.display)??l,onCheckedChange:u=>c("display",u)})]}),((n==null?void 0:n.display)??l)&&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:(n==null?void 0:n.position)||r,onValueChange:u=>c("position",u),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:i.map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:s.titleCase(u)},u))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Alignment"}),e.jsxs(s.Select,{value:(n==null?void 0:n.align)||o,onValueChange:u=>c("align",u),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:d.map(u=>e.jsx(s.SelectItem,{value:u,className:"text-xs",children:s.titleCase(u)},u))})]})]})]})]})})]})}function _t(){var T,y,O,E,B,D,S,L,F;const t=s.useEditorStore(R=>R.card),n=s.useEditorStore(R=>{var A,P;return(P=(A=R.card)==null?void 0:A.preferences)==null?void 0:P.dataLabelsConfig}),a=s.useEditorStore(R=>{var A;return(A=R.card)==null?void 0:A.preferences}),{setCardPreferences:r,updateCardInFrame:o}=s.useEditorActions();if(!t||!s.chartSupportsDataLabels(t.type))return null;const l=((T=a==null?void 0:a.chartOptions)==null?void 0:T.indexAxis)==="y",c=t.type==="stackedBar"||t.type==="stackedLine",i=t.type==="pie"||t.type==="doughnut"||t.type==="polarArea"||t.type==="funnel",d=!i,u=(O=(y=a==null?void 0:a.chartOptions)==null?void 0:y.plugins)==null?void 0:O.datalabels,m=(u==null?void 0:u.display)!==!1&&((u==null?void 0:u.anchor)||(u==null?void 0:u.align)),h=(n==null?void 0:n.enabled)!==void 0?n.enabled:m,p=(R,A)=>{const P={...n,[R]:A},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},g=(R,A)=>{const P={...n,font:{...n==null?void 0:n.font,[R]:A}},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},j=(R,A)=>{const P={...n,formatOptions:{...n==null?void 0:n.formatOptions,[R]:A}},Y={...t.preferences||{},dataLabelsConfig:P};r(Y);const z={...t,preferences:Y};o(z)},b=(()=>{const R=t.type;return R==="stackedBar"||R==="stackedLine"||R==="pie"||R==="doughnut"?"center":l?"right":"top"})();let f=[];c||i?f=["center"]:f=["auto",...(l?["center","left","right"]:["center","top","bottom"]).filter(A=>A!==b),"custom"];const N=()=>s.titleCase(b),k=["center","start","end"],I=["center","start","end","top","bottom"],w=d?["auto","number","currency","percent","none"]:["number","currency","percent","none"],C=[{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"}],v=[{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(Ua,{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:h,onCheckedChange:R=>p("enabled",R)})]}),h&&e.jsxs(e.Fragment,{children:[!c&&!i&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:(n==null?void 0:n.position)||"auto",onValueChange:R=>p("position",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:f.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:R==="auto"?N():R==="custom"?"Custom (Advanced)":s.titleCase(R)},R))})]})]}),c&&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:(n==null?void 0:n.showTotal)??!1,onCheckedChange:R=>p("showTotal",R)})]}),(n==null?void 0:n.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:(n==null?void 0:n.anchor)||"center",onValueChange:R=>p("anchor",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:k.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:s.titleCase(R)},R))})]})]}),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((n==null?void 0:n.align)||"center"),onValueChange:R=>p("align",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:I.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:s.titleCase(R)},R))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Format"}),e.jsxs(s.Select,{value:(n==null?void 0:n.format)||(d?"auto":"none"),onValueChange:R=>p("format",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:w.map(R=>e.jsx(s.SelectItem,{value:R,className:"text-xs",children:R==="auto"&&d?"Auto (Use Axis)":R==="none"?"None (Raw Value)":s.titleCase(R)},R))})]})]}),(n==null?void 0:n.format)&&!["auto","none"].includes(n.format)&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[["number","currency","percent"].includes(n.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(we,{type:"number",placeholder:"0",value:String(((E=n==null?void 0:n.formatOptions)==null?void 0:E.decimalPlaces)??(n.format==="currency"?2:n.format==="percent"?1:0)),onSave:R=>j("decimalPlaces",Number(R)),className:""})})]}),n.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=n==null?void 0:n.formatOptions)==null?void 0:B.currency)||"USD",onValueChange:R=>j("currency",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:C.map(R=>e.jsx(s.SelectItem,{value:R.value,className:"text-xs",children:R.label},R.value))})]})]}),["number","currency"].includes(n.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:((D=n==null?void 0:n.formatOptions)==null?void 0:D.useSuffix)??!1,onCheckedChange:R=>j("useSuffix",R)})]}),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:((S=n==null?void 0:n.formatOptions)==null?void 0:S.locale)||"en-US",onValueChange:R=>j("locale",R),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:v.map(R=>e.jsx(s.SelectItem,{value:R.value,className:"text-xs",children:R.label},R.value))})]})]})]}),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(we,{type:"number",placeholder:"12",value:String(((L=n==null?void 0:n.font)==null?void 0:L.size)||12),onSave:R=>g("size",Number(R)),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:((F=n==null?void 0:n.font)==null?void 0:F.weight)||"normal",onValueChange:R=>g("weight",R),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:(n==null?void 0:n.color)==="auto"||!(n!=null&&n.color)?"auto":"custom",onValueChange:R=>{R==="auto"&&p("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(we,{type:"number",placeholder:"0",value:String((n==null?void 0:n.rotation)||0),onSave:R=>p("rotation",Number(R)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"degrees"})]})]})]})]})})]})}function $r(){return e.jsxs("div",{className:"space-y-4 px-6 py-4",children:[e.jsx("h3",{className:"text-sm font-medium",children:"Chart Configuration"}),e.jsxs(s.Accordion,{type:"single",collapsible:!0,className:"w-full px-2",children:[e.jsx(Bt,{}),e.jsx(Pt,{}),e.jsx(zt,{}),e.jsx(_t,{})]})]})}const qr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT dimension, cohort, metric FROM table"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/tornado",children:"example"})," in the docs."]})]}),Hr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT y-axis, label, range-from, range-to, range-value FROM table"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/range",children:"example"})," in the docs."]})]}),Wr=e.jsxs("div",{className:"space-y-4 font-mono text-xs",children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:"SELECT text FROM table limit 1"}),e.jsxs("div",{children:["See ",e.jsx("a",{target:"_blank",onClick:t=>t.stopPropagation(),className:"text-blue-700",href:"https://docs.semaphor.cloud/docs/charts/text",children:"example"})," in the docs."]})]});function Kr(){const t=s.useEditorStore(a=>a.card.type);function n(a){const r=["kpi","table","text","map","custom"],o=l=>r.includes(a)?l:e.jsxs(e.Fragment,{children:[l,e.jsx($r,{})]});switch(a){case"stackedBar":case"stackedLine":return o(e.jsx(Fr,{}));case"tornado":case"pyramid":return o(e.jsx(Je,{docContent:qr,cardType:a}));case"kpi":return e.jsx(Ir,{});case"line":case"bar":return o(e.jsx(Nr,{cardType:a}));case"range":return o(e.jsx(Je,{docContent:Hr,cardType:a}));case"pie":case"doughnut":case"polarArea":case"radar":case"funnel":return o(e.jsx(Je,{cardType:a}));case"bubble":case"scatter":return o(e.jsx(Cr,{cardType:a}));case"table":return e.jsx(Br,{cardType:a});case"text":return e.jsx(Je,{docContent:Wr,cardType:a,suffix:"Visual"});case"map":return e.jsx(Rr,{});case"custom":return e.jsx(jr,{});default:return o(e.jsx(Dr,{}))}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[n(t),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function Vt({label:t,column:n,functions:a,onFunctionChange:r}){let o=a[0];"aggregate"in n?o=a.find(c=>c.value===n.aggregate)||a[0]:"granularity"in n&&(o=a.find(c=>c.value===n.granularity)||a[0]);function l(c){r(c)}return e.jsx(Ce,{className:"flex h-8 w-8 justify-center overflow-clip rounded-none border-none bg-muted px-0 [&>svg]:hidden",icon:o.logo,options:a,value:o.value,onValueChange:c=>l(c),label:t,showPlaceholderLabel:!1})}const Qr=[{label:"Sum",value:"SUM",logo:e.jsx(tt,{className:"size-3.5"})},{label:"Count",value:"COUNT",logo:e.jsx(De,{className:"size-3.5"})},{label:"Unique",value:"DISTINCT",logo:e.jsx(ja,{className:"size-3.5"})},{label:"Average",value:"AVG",logo:e.jsx(ta,{className:"size-3.5"})},{label:"Min",value:"MIN",logo:e.jsx(s.ArrowDown,{className:"size-3.5"})},{label:"Max",value:"MAX",logo:e.jsx(s.ArrowUp,{className:"size-3.5"})}];function Jr({column:t}){const{updateMetricColumnOld:n}=s.useEditorActions();let a=Qr;s.isTextDataType(t.type)&&(a=a.filter(o=>["COUNT","DISTINCT"].includes(o.value))),s.isNumberDataType(t.type)&&(a=a.filter(o=>!["DISTINCT"].includes(o.value)));function r(o){const l={...t,aggregate:o,label:He(t.name,o)};n(t.id,l)}return e.jsx(Vt,{column:t,functions:a,onFunctionChange:o=>r(o),label:"Aggregation"})}const Xr=[{label:"Day (D)",value:"day",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"D"})},{label:"Week (W)",value:"week",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"W"})},{label:"Month (M)",value:"month",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"M"})},{label:"Year (Y)",value:"year",logo:e.jsx(s.Label,{className:"cursor-pointer text-xs",children:"Y"})}];function Zr({column:t}){const{updateGroupByColumnOld:n}=s.useEditorActions();function a(r){const o={...t,granularity:r,label:Ue(t.name,r)};n(t.id,o)}return e.jsx(Vt,{column:t,functions:Xr,onFunctionChange:r=>a(r),label:"Granularity"})}function el({col:t,onChange:n,droppableId:a}){const{columns:r}=s.useDataColumns(),o=M.useMemo(()=>{let i=[];(a===Ae||a===Me||a===Le)&&(i=r);const d=i==null?void 0:i.filter(u=>u.column_name!==t.name);return d==null?void 0:d.map(u=>({id:u.column_name,value:u.column_name}))},[r,a,t.name]),l=[{id:t.name,value:t.name}];function c(i){const d=r==null?void 0:r.find(u=>{var m;return u.column_name===((m=i[0])==null?void 0:m.id)});d&&n(d)}return o!=null&&o.length?e.jsx(s.ComboBox2,{multiple:!1,options:o,selectedOptions:l,onChange:c,selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"border-none bg-muted pl-0 pr-8"}):e.jsx("input",{disabled:!0,type:"text",className:"overflow-hidden truncate text-ellipsis whitespace-nowrap bg-muted text-sm",value:t.name})}function Ut({column:t}){const n=s.useEditorStore(d=>d.card.type),a=s.useEditorStore(d=>{var u,m;return(m=(u=d.card)==null?void 0:u.config)==null?void 0:m.metricColumns}),r=(a==null?void 0:a.map(d=>d.label))||[],o=r==null?void 0:r.find(d=>d===t.label||d===t.name),l=o?r.indexOf(o):-1;function c(){return e.jsx("div",{className:"pr-1",children:o&&e.jsx(Rt,{idx:l,col:o,children:e.jsx("div",{className:"w-[130px] text-xs text-muted-foreground",children:"Display Series As"})})})}function i(){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(Ot,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(n)&&c(),["pie","doughnut"].includes(n)&&i()]})}function sl({column:t,type:n,onRemoveColumn:a,droppableId:r}){const[o,l]=M.useState(!1),{updateGroupByColumnOld:c,updateMetricColumnOld:i,updatePivotByColumnOld:d}=s.useEditorActions(),{attributes:u,listeners:m,setNodeRef:h,transform:p,transition:g,isDragging:j}=s.useSortable({id:t.id,data:{type:n}}),x=p?{opacity:j?.5:void 0,transform:s.CSS.Translate.toString(p),transition:g}:void 0,b=s.isTextDataType(t.type);function f(C){const v=s.isNumberDataType(C.data_type),T=s.isTextDataType(C.data_type),y=s.isDateDataType(C.data_type),O=v?"number":T?"string":y?"date":"string";if(r===Ae){if(T){const E={id:t.id,name:C.column_name,type:O,role:"groupby"};c(t.id,E)}if(y){const E={id:t.id,name:C.column_name,type:O,role:"groupby",label:Ue(C.column_name,"month"),granularity:"month"};c(t.id,E)}}if(r===Le){if(T){const E={id:t.id,name:C.column_name,type:O,role:"groupby"};d(t.id,E)}if(y){const E={id:t.id,name:C.column_name,type:O,label:Ue(C.column_name,"month"),granularity:"month",role:"groupby"};d(t.id,E)}}if(r===Me){const E={id:t.id,name:C.column_name,type:O,role:"metric",label:He(C.column_name,"SUM"),aggregate:v?"SUM":"COUNT"};i(t.id,E)}}function N(){if(r===Me)return e.jsx("div",{"data-setting-container":"",className:"mt-1.5 max-h-32 overflow-y-auto rounded-md border border-border p-3 text-sm",children:e.jsx(Ut,{column:t})})}function k(){const C=s.isDateDataType(t.type);if(r===Me)return e.jsx(Jr,{column:t});if((r===Ae||r===Le)&&C)return e.jsx(Zr,{column:t})}function I(){return e.jsx("div",{className:s.cn("grow",{"pl-3":(r===Ae||r===Le)&&b}),children:e.jsx(el,{col:t,onChange:f,droppableId:r})})}function w(){return e.jsx("div",{"data-setting-actions":"",className:"flex h-full items-center gap-2",children:e.jsx("button",{className:"h-full pl-2",onClick:()=>l(!o),children:o?e.jsx(za,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")}):e.jsx(et,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")})})})}return e.jsx("div",{...m,...u,ref:h,style:x,children:e.jsxs("div",{className:"group flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"grow",children:[e.jsxs("div",{className:"flex h-8 grow items-center justify-between rounded-md bg-muted",children:[w(),k(),I()]}),o&&N()]}),e.jsx("div",{className:s.cn("opacity-0 transition-opacity duration-200 group-hover:opacity-100",{hidden:o}),children:e.jsx("button",{onClick:()=>a(t.id),children:e.jsx(s.X,{className:"size-3 cursor-pointer text-muted-foreground"})})})]})})}function fs({id:t,label:n,columns:a,previewColumns:r,sortableType:o,onRemoveColumn:l}){var x,b;const{setNodeRef:c,isOver:i,over:d}=s.useDroppable({id:t}),u=s.useDndStore(f=>f.activeId),m=s.useEditorStore(f=>{var N;return(N=f.card)==null?void 0:N.type}),h=i||((b=(x=d==null?void 0:d.data)==null?void 0:x.current)==null?void 0:b.type)===o,p=u?r:a,g=o===ts?"Rows":o===as?"Pivot Columns":"Columns";function j(){if(!p||p.length===0)return e.jsx("div",{className:"mr-5 flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground/80 bg-background px-2 py-1 text-sm text-muted-foreground",children:e.jsx("span",{className:"invisible text-muted-foreground/70 group-hover:visible",children:"Drag here"})})}return e.jsx(s.SortableContext,{items:a==null?void 0:a.map(f=>f.id),children:e.jsxs("div",{className:s.cn("group space-y-2 rounded-md p-4",h&&"border border-muted-foreground/20"),ref:c,children:[e.jsxs("div",{className:"flex items-center justify-between pr-5",children:[e.jsx(s.Label,{className:"text-sm",children:n}),m!=="table"&&e.jsx("span",{className:"text-xs text-muted-foreground/50",children:g})]}),j(),e.jsx("div",{className:"space-y-2",children:p==null?void 0:p.map(f=>f.id===bt.id?e.jsx(tl,{},f.id):e.jsx(sl,{droppableId:t,type:o,column:f,onRemoveColumn:l},f.id))})]})})}function tl(){return e.jsx("div",{className:"mr-5 flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground bg-background px-2 py-1 text-sm",children:e.jsx("span",{className:"text-muted-foreground/70",children:"Drop here"})})}function Gt({children:t,id:n,type:a}){const{attributes:r,listeners:o,setNodeRef:l,transform:c,transition:i,isDragging:d}=s.useSortable({id:n,data:{type:a}}),u=c?{opacity:d?.5:void 0,transform:s.CSS.Translate.toString(c),transition:i}:void 0;return e.jsx("div",{...o,...r,ref:l,style:u,children:t})}function al(){const t=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.orderBy})||[],n=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.groupByColumns})||[],a=s.useEditorStore(f=>{var N;return(N=f.card.queryConfig)==null?void 0:N.metricColumns})||[],{addOrderByColumn:r,removeOrderByColumn:o,updateOrderByColumn:l}=s.useEditorActions(),c=[...n,...a];if(c.length===0)return e.jsx(e.Fragment,{});const i=e.jsx(na,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),d=e.jsx(sa,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),u=e.jsx(aa,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),m=e.jsx(ea,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),h=c==null?void 0:c.filter(f=>!t.some(N=>N.columnId===f.id)).map(f=>({id:f.id,value:f.label||f.name}));function p(f,N){const k=g(f);return k?k.role==="metric"?N==="asc"?u:m:N==="asc"?i:d:null}function g(f){return c.find(N=>N.id===f)}function j(f){const N=t.find(k=>k.columnId===f);if(N){const k={...N,direction:N.direction==="asc"?"desc":"asc"};l(k)}}const x=f=>{r({columnId:f.id,direction:"asc"})};function b(f){const N=t.find(k=>k.columnId===f);N&&o(N)}return e.jsx(s.SortableContext,{items:t.map(f=>Ye(f.columnId)),children:e.jsxs("div",{className:"space-y-2 rounded-md p-4 text-sm",children:[e.jsx(s.Label,{className:"text-sm",children:"Sort By"}),h.length>0&&e.jsx("div",{className:"mr-5",children:e.jsx(s.ComboBox2,{multiple:!1,options:h,selectedOptions:[],onChange:f=>x(f[0]),selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"h-8 bg-muted border-none"})}),t.map(f=>{var N,k;return e.jsx(Gt,{id:Ye(f.columnId),type:Ds,children:e.jsx("div",{className:"group flex h-8 items-center gap-2 rounded-sm p-0",children:e.jsxs("div",{className:"flex h-full grow items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex h-full grow items-center justify-between gap-2 rounded-sm bg-muted px-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(et,{className:"size-3 cursor-move text-muted-foreground hover:text-foreground"}),e.jsx(is,{className:"w-[175px] text-sm",children:((N=g(f.columnId))==null?void 0:N.label)||((k=g(f.columnId))==null?void 0:k.name)})]}),e.jsx("button",{title:f.direction==="asc"?"Ascending":"Descending",onClick:()=>j(f.columnId),className:"rounded-sm p-0",children:p(f.columnId,f.direction)})]}),e.jsx("div",{children:e.jsx("button",{onClick:()=>b(f.columnId),className:"rounded-sm p-0",children:e.jsx(s.X,{className:"size-3 text-muted-foreground opacity-0 transition-opacity duration-200 hover:text-foreground group-hover:opacity-100"})})})]})},f.columnId)},Ye(f.columnId))})]})})}function nl(){const t=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.groupByColumns)||[]}),n=s.useEditorStore(b=>b.card.type),a=s.useDndStore(b=>b.previewGroupByColumns),r=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.metricColumns)||[]}),o=s.useDndStore(b=>b.previewMetricColumns),l=s.useEditorStore(b=>{var f;return((f=b.card.queryConfig)==null?void 0:f.pivotColumns)||[]}),c=s.useDndStore(b=>b.previewPivotColumns),{removeColumnFromGroupBy:i,removeColumnFromMetricColumns:d,removeColumnFromPivotBy:u}=s.useEditorActions();function m(b){i(b)}function h(b){d(b)}function p(b){u(b)}let g="Group By",j="Metrics",x="Stack By";return n==="table"&&(g="Rows",j="Metrics",x="Columns"),e.jsxs("div",{className:"flex h-full w-full flex-col gap-3 py-4",children:[e.jsx(kt,{iconClassName:"size-[19px]"}),e.jsxs(s.CustomScrollArea,{className:"flex min-h-0 grow basis-0 flex-col gap-4 overflow-y-auto",children:[e.jsxs("div",{className:"flex flex-col gap-4 p-4",children:[e.jsx(fs,{onRemoveColumn:m,sortableType:ts,id:Ae,label:g,columns:t,previewColumns:a}),e.jsx(fs,{onRemoveColumn:p,sortableType:as,id:Le,label:x,columns:l,previewColumns:c}),e.jsx(fs,{onRemoveColumn:h,sortableType:vs,id:Me,label:j,columns:r,previewColumns:o}),e.jsx(al,{})]}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function As({children:t,column:n,id:a,sortableType:r,className:o}){const[l,c]=M.useState(!1),{removeEditorFilter:i,clearEditorFilter:d}=s.useEditorActions(),u=s.useEditorStore(h=>{var p,g;return(g=(p=h.card.queryConfig)==null?void 0:p.filters)==null?void 0:g.some(j=>j.filterColumnName===n.name)});function m(h){i(h)}return e.jsx(Gt,{id:a,type:r,children:e.jsxs("div",{className:s.cn("group space-y-1 rounded-md bg-muted px-3 py-2",{"border-border":l}),children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Label,{className:"text-sm",children:n.name}),u&&e.jsx("button",{onClick:()=>d(n),children:e.jsx(s.FilterX,{className:"size-3 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground"})})]}),e.jsx("div",{"data-setting-actions":"",className:"invisible flex h-full items-center gap-2 group-hover:visible",children:e.jsx("button",{onClick:()=>m(n),children:e.jsx(s.X,{className:"size-3.5 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground"})})})]}),e.jsxs("div",{className:s.cn("group flex items-center rounded-t-md text-sm",!l&&"rounded-b-md",l&&"border border-border"),children:[e.jsx("div",{children:e.jsx(s.GripVertical,{className:"mr-2 size-3.5 cursor-move items-center justify-center p-0 text-muted-foreground/60 hover:text-foreground"})}),e.jsx("div",{className:s.cn("grow cursor-pointer overflow-hidden truncate text-ellipsis whitespace-nowrap",o),children:t})]})]})})}function rl({column:t,sortableType:n}){const a=s.useDashboardStore(k=>k.themeStyle),r=s.useEditorStore(k=>{var I,w;return(w=(I=k.card)==null?void 0:I.queryConfig)==null?void 0:w.filters}),o=s.useEditorStore(k=>{var I,w;return(w=(I=k.card.queryConfig)==null?void 0:I.filterColumns)==null?void 0:w.find(C=>C.name===t.name)}),{selectedConnectionId:l,selectedDatabaseName:c,selectedTableName:i}=s.useEditorAside(),d=M.useMemo(()=>{var k;return(k=r==null?void 0:r.find(I=>I.filterColumnName===t.name))==null?void 0:k.filterValue},[r,t.name]),u=M.useMemo(()=>Array.isArray(d)?d.map(k=>({id:k,value:k})):[],[d]),{updateEditorFilterValue:m}=s.useEditorActions(),h={column:t.name,sql:t.sql,id:t.name,connectionId:l,dataType:t.type},{data:p,isLoading:g,isFetching:j,isError:x}=s.useFilterQuery(h),b=M.useMemo(()=>{var I;return h.column?(I=p==null?void 0:p.records)==null?void 0:I.map(w=>{let C=h.column.split(".").slice(-1)[0].replace(/"/g,"");return w[C]===void 0&&(C=C.toLowerCase()),{id:w[C],value:w[C]}}):[]},[p,h.column]);function f(k){const I=k.map(w=>w.id);m(t.name,I)}function N(){return g||j?e.jsx(s.Skeleton,{style:{borderRadius:a==null?void 0:a.controlInputRadius},className:"h-8 min-w-60 bg-foreground/10"}):x?e.jsx("div",{className:"flex h-8 min-w-60 items-center bg-muted px-2 text-sm",children:"Error"}):e.jsx(s.ComboBox2,{renderFilterModeButton:()=>e.jsx(ll,{columnName:t.name}),showNegativeIndicator:(o==null?void 0:o.mode)==="exclude",options:b,onChange:f,selectedOptions:u,selectAllChecked:!1,onSelectAllCheckedChange:()=>{}})}return e.jsx(As,{className:"w-60",id:t.id,sortableType:n,column:t,children:N()})}function ll({columnName:t}){const{setEditorFilterMode:n}=s.useEditorActions(),a=s.useEditorStore(o=>{var l,c;return(c=(l=o.card.queryConfig)==null?void 0:l.filterColumns)==null?void 0:c.find(i=>i.name===t)});function r(){(a==null?void 0:a.mode)==="exclude"?n(t,"include"):n(t,"exclude")}return e.jsx(s.Button,{onClick:r,variant:"secondary",size:"sm",className:s.cn("h-5 text-xs hover:underline",{}),children:s.titleCase((a==null?void 0:a.mode)==="exclude"?"exclude":"include")})}function ol({open:t,setOpen:n,dateRange:a,setDateRange:r,containerClassName:o,inputClassName:l,title:c,onApply:i,onClear:d}){const u=s.useDashboardStore(m=>m.themeStyle);return e.jsx("div",{className:s.cn("grid gap-2",o),children:e.jsxs(s.Popover,{open:t,onOpenChange:n,children:[e.jsx(s.PopoverTrigger,{style:{borderRadius:u==null?void 0:u.controlInputRadius},asChild:!0,children:e.jsxs(s.Button,{size:"sm",id:"date",variant:"outline",className:s.cn("h-9 w-full justify-start rounded-sm text-left font-normal",!a&&"text-muted-foreground",l),children:[e.jsx(s.Calendar,{className:"mr-2 h-4 w-4"}),a!=null&&a.from?a.to?e.jsxs(e.Fragment,{children:[s.format(a.from,"LLL dd, y")," -"," ",s.format(a.to,"LLL dd, y")]}):s.format(a.from,"LLL dd, y"):e.jsx("span",{children:"Pick a date"})]})}),e.jsxs(s.PopoverContent,{style:{borderRadius:u==null?void 0:u.controlInputRadius},className:"w-auto p-0",align:"start",children:[e.jsx("div",{className:"px-4 pt-3",children:e.jsx(s.Label,{children:c})}),e.jsx(s.Calendar$1,{initialFocus:!0,mode:"range",defaultMonth:a==null?void 0:a.from,selected:a,onSelect:r,numberOfMonths:2}),e.jsxs("div",{className:"flex justify-end gap-2 px-4 py-3",children:[e.jsx(s.Button,{style:{borderRadius:u==null?void 0:u.controlInputRadius},size:"sm",variant:"outline",onClick:m=>{m.stopPropagation(),i(a),n(!1)},children:"Apply"}),e.jsx(s.Button,{style:{borderRadius:u==null?void 0:u.controlInputRadius},size:"sm",variant:"outline",onClick:d,children:"Clear"})]})]})]})})}function il({column:t,sortableType:n}){const[a,r]=M.useState(!1),{selectedConnectionId:o,selectedDatabaseName:l,selectedTableName:c}=s.useEditorAside(),i={column:t.name,sql:t.sql,id:t.name,connectionId:o,title:"",dataType:t.type},{isLoading:d,isFetching:u,isError:m,data:h}=s.useFilterQuery(i),p=h==null?void 0:h.records,{dateRange:g,setDateRange:j,initialDateRange:x}=s.useDateRangeFromRecords(p),{updateEditorFilterValue:b}=s.useEditorActions();function f(I){var C,v;const w={gte:(C=I==null?void 0:I.from)==null?void 0:C.toISOString(),lte:(v=I==null?void 0:I.to)==null?void 0:v.toISOString()};b(t.name,w)}function N(){b(t.name,null,!0),j(x)}function k(){return d||u?e.jsx("div",{children:e.jsx(s.Skeleton,{className:"h-8 w-72 bg-foreground/10"})}):m?e.jsx("div",{className:"h-8 w-72 bg-muted px-2",children:"Error"}):p?e.jsx(ol,{title:i.title,open:a,inputClassName:"h-8",setOpen:r,dateRange:g,setDateRange:j,onApply:f,onClear:N}):e.jsx(s.Label,{className:"flex h-8 w-72 items-center bg-muted px-2",children:"No Data"})}return e.jsx(As,{className:"w-72",id:t.id,sortableType:n,column:t,children:k()})}function cl({id:t,label:n,columns:a,previewColumns:r,sortableType:o}){var j,x;const{setNodeRef:l,isOver:c,over:i}=s.useDroppable({id:t}),d=s.useDndStore(b=>b.activeId),u={},m=c||((x=(j=i==null?void 0:i.data)==null?void 0:j.current)==null?void 0:x.type)===o;function h(){if(!g||g.length===0)return e.jsx("div",{className:"flex h-8 grow items-center space-x-2 rounded-md border border-dashed border-muted-foreground/80 bg-background px-2 py-1 text-sm text-muted-foreground",children:e.jsx("span",{className:"invisible text-muted-foreground/70 group-hover:visible",children:"Drag here"})})}function p(b){const f=s.isDateDataType(b.type);return b.id===bt.id?e.jsx(As,{id:b.id,sortableType:o,column:b,children:e.jsx(dl,{})},b.id):f?e.jsx(il,{droppableId:t,sortableType:o,column:b},b.id):e.jsx(rl,{droppableId:t,sortableType:o,column:b},b.id)}const g=d?r:a;return e.jsx(s.SortableContext,{items:a==null?void 0:a.map(b=>b.id),children:e.jsxs("div",{className:s.cn("group space-y-2 rounded-md border-muted-foreground/50 p-4",m&&"border border-muted-foreground/20"),ref:l,style:u,children:[e.jsx(s.Label,{className:"text-sm",children:n}),h(),e.jsx("div",{className:"flex flex-wrap items-center gap-4",children:g==null?void 0:g.map(b=>p(b))})]})})}function dl(){return e.jsx("div",{className:"flex h-8 w-60 items-center space-x-2 rounded-md border border-dashed border-muted-foreground bg-background px-2 py-1 text-sm text-muted-foreground",children:"Drop here"})}function ul(){const t=s.useEditorStore(o=>{var l;return((l=o.card.queryConfig)==null?void 0:l.filterColumns)||[]}),n=s.useDndStore(o=>o.previewFilterColumns),{removeColumnFromFilterColumns:a}=s.useEditorActions();function r(o){a(o)}return e.jsx("section",{className:"size-full px-4 pb-4",children:e.jsx(cl,{onRemoveColumn:r,sortableType:Ns,id:ys,label:"Filters",columns:t,previewColumns:n})})}function ml(){const t=s.useEditorStore(c=>c.card),n=s.useEditorStore(c=>c.showAIDialog),{setShowAIDialog:a}=s.useEditorActions(),{data:r,errorMessage:o,errorSql:l}=s.useDashboardCardQuery(t);return e.jsxs("section",{className:"flex justify-between gap-2 p-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ls,{}),!n&&e.jsxs(s.Button,{onClick:()=>a(!0),variant:"secondary",size:"sm",children:[e.jsx(Ea,{className:"mr-2 h-4 w-4"}),"Assistant"]}),e.jsx(Ct,{sql:r==null?void 0:r.sql,error:o,errorSql:l})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"rounded-full bg-green-300 px-3 py-1 text-xs font-medium text-black",children:"Preview"}),e.jsx(ks,{}),e.jsx(Ts,{variant:"default"})]})]})}function hl(){const t=M.useRef(null),n=M.useRef(null),a=s.useEditorStore(i=>i.isShowingVisual),r=s.useEditorStore(i=>i.showAIDialog),o=s.useEditorStore(i=>i.isDevMode);M.useEffect(()=>{var i,d,u,m;r?((i=t.current)==null||i.resize(0),(d=n.current)==null||d.resize(0)):((u=t.current)==null||u.resize(25),(m=n.current)==null||m.resize(25))},[r]);function l(){return e.jsxs(e.Fragment,{children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(sr,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:a&&!r?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(Kr,{})})}),!r&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(Qe,{})})]}):e.jsx(Qe,{})})]})}function c(){return e.jsx(e.Fragment,{children:e.jsx("div",{className:"grow","data-biz-mode-container":"",children:a?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:n,defaultSize:25,maxSize:30,children:e.jsx(nl,{})})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{defaultSize:75,maxSize:100,children:e.jsxs(s.ResizablePanelGroup,{direction:"vertical",children:[e.jsxs(s.ResizablePanel,{className:"flex min-h-fit flex-col",minSize:10,defaultSize:20,children:[e.jsx(ml,{}),e.jsx(ul,{})]}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:60,defaultSize:80,children:e.jsx(Qe,{})})]})})]}):e.jsx(Qe,{})})})}return e.jsx(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:o?l():c()})}function xl(t){s.useAIInteractionStore(U=>U.currentAIContext);const[n,a]=M.useState(""),[r,o]=M.useState(null),{authToken:l}=s.useSemaphorContext(),c=s.useEditorStore(U=>{var $;return($=U==null?void 0:U.card)==null?void 0:$.sql}),i=s.useEditorStore(U=>U.isDevMode),d=s.useEditorStore(U=>{var $;return($=U==null?void 0:U.card)==null?void 0:$.python}),{setCardPython:u,setCardSql:m,setRunSql:h,switchCardType:p,setQueryConfig:g}=s.useEditorActions(),j=s.useEditorStore(U=>U.currentAssitantScope)||[],x=s.useEditorStore(U=>U.userInputForAI),b=s.useEditorStore(U=>U.triggerAIRun),f=s.useEditorStore(U=>U.card),N=s.useEditorStore(U=>U.selectedDatabaseName),k=s.useEditorStore(U=>U.selectedTableName),I=s.useEditorStore(U=>U.selectedConnectionId),w=s.useEditorStore(U=>U.selectedSchemaName),C=s.useDashboardStore(U=>U.dashboard.aiScopeTables),{errorMessage:v,refetch:T,data:y}=s.useDashboardCardQuery(f),{setTriggerAIRun:O,setCurrentAssitantScope:E,setCardConfig:B}=s.useEditorActions(),{selectedDatamodelName:D,connectionType:S,selectedDatamodelId:L}=s.useEditorAside(),{messages:F,setMessages:R,regenerate:A,error:P,sendMessage:Y,status:z,addToolResult:X,stop:te,clearError:K}=s.useChat({transport:new s.DefaultChatTransport({api:"https://semaphor.cloud/api/v1/assistant",headers:()=>({Authorization:`Bearer ${l==null?void 0:l.accessToken}`}),body:()=>{const U=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",isDevMode:i,aiContext:U.currentAIContext,reasoningEffort:U.reasoningEffort,showReasoning:U.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:U,body:$})=>({body:{...$,messages:s.cleanupIncompleteMessages(U)}})}),onError:U=>{console.log("on error",U)},onToolCall:W,onFinish(){a("")}});M.useEffect(()=>{b&&x&&(Y({role:"user",parts:[{type:"text",text:x}]}),O(!1))},[b,x,Y,O]);async function W({toolCall:U}){var $,re,oe,le,xe,pe,me,fe,q,J,Z,H,ae,ie,ce,Ee;if(["createChartFromSql","createForecast"].includes(U.toolName)){const Be=(($=U.input)==null?void 0:$.sql)??((re=U.args)==null?void 0:re.sql),Te=((oe=U.input)==null?void 0:oe.python)??((le=U.args)==null?void 0:le.python),he=((xe=U.input)==null?void 0:xe.chartType)??((pe=U.args)==null?void 0:pe.chartType);p(he),m(Be),u(Te),h(!0),X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(U.toolName==="getUserSql"){if(!c){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"error",message:"No SQL found"}});return}X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",sql:c,python:d||""}})}else if(U.toolName==="generateQueryConfig"){a("Generating query config...");const Be=((me=U.input)==null?void 0:me.chartType)??((fe=U.args)==null?void 0:fe.chartType),Te=((q=U.input)==null?void 0:q.queryConfig)??((J=U.args)==null?void 0:J.queryConfig);((Z=U.input)==null?void 0:Z.cardConfig)??((H=U.args)==null||H.cardConfig),p(Be),B(Te),m(void 0),u(void 0);const he=await T();if((ae=he==null?void 0:he.data)!=null&&ae.error){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"error",queryConfig:Te,message:(ie=he==null?void 0:he.data)==null?void 0:ie.error.message}});return}if((ce=he==null?void 0:he.data)!=null&&ce.records){X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",queryConfig:Te,message:"The data has been visualized"}});return}X({tool:U.toolName,toolCallId:U.toolCallId,output:{status:"success",queryConfig:Te,message:"The data has been visualized",records:(Ee=he==null?void 0:he.data)==null?void 0:Ee.records}})}else a("Analyzing...")}function G(U){const $=s.removeFromScopeArray(j,U);ee($)}function ee(U){const $=s.sanitizeAIScope(U);E($),R(re=>[...re,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify($)}`}]}])}function _(){const U={databaseName:N||"",schemaName:w||"",tableName:k||"",datamodelId:L||"",datamodelName:s.resolveDatamodelName(D),connectionId:I||"",connectionType:S||""},$=s.dedup([...j,U]);ee($)}function V(){const U={databaseName:N||"",schemaName:w||"",tableName:k||"",datamodelName:s.resolveDatamodelName(D),connectionId:I||"",connectionType:S||"",datamodelId:L||""};if(!s.isInAiScopeArray([...C||[],...j],U)||j.length===0){const re=s.dedup([...C||[],...j,U]).filter(oe=>oe.connectionId===U.connectionId);ee(re)}}const se=!["ready","error"].includes(z),ne=s.getErrorMessage(P);return{messages:F,setMessages:R,sendMessage:Y,regenerate:A,isLoading:se,handleSetAIScope:V,handleAddCurrentTableToScope:_,removeFromCurrentSelections:G,currentAssitantScope:j,setCurrentAssitantScope:E,stop:te,status:z,toolStatus:n,llmUsage:r,onFinish:t,errorMessage:ne,clearError:K}}const pl=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function Ws(){const t=M.useRef(null),[n,a]=M.useState(!1),[r,o]=M.useState(s.isDevEnv),[l,c]=M.useState(!1),[i,d]=M.useState(!1),u=s.useCurrentAIContext(),{setCurrentAIContext:m}=s.useAIActions(),{clearQueue:h}=s.useQueueActions(),{clearFileAttachments:p}=s.useFileActions(),g=s.useFileAttachments("editor"),j=s.useDashboardStore(J=>J.dashboard.aiContext),x=s.useEditorStore(J=>J.card.dataSource),b=s.useEditorStore(J=>J.actions.setCardSql),f=s.useEditorStore(J=>J.actions.setRunSql),N=s.useEditorStore(J=>J.showAIDialog),k=s.useDashboardStore(J=>J.handleOpenAssistantProfile),{setShowAIDialog:I,setCardPython:w}=s.useEditorActions(),{setDataSource:C}=s.useEditorActions(),{assistantProfile:v}=s.useAssistantProfile(),{messages:T,setMessages:y,sendMessage:O,isLoading:E,stop:B,status:D,llmUsage:S,errorMessage:L,clearError:F}=xl(),[R,A]=M.useState(""),P=J=>{A(J.target.value)},Y=J=>{J.preventDefault();const Z=R.trim();if(!Z&&g.length===0)return;const H=[];Z&&H.push({type:"text",text:Z}),g.forEach(ae=>{ae.data&&H.push({type:"file",mediaType:ae.type,filename:ae.name,url:`data:${ae.type};base64,${ae.data}`})}),O({role:"user",parts:H}),A(""),p("editor"),se({force:!0})},{visibleMessages:z,hasMoreMessages:X,totalMessageCount:te,loadMoreMessages:K,resetMessageWindow:W}=s.useMessageWindow(T,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:G,isAtBottom:ee,hasNewMessages:_,newMessageCount:V,scrollToBottom:se,handleScroll:ne,resetNewMessageCount:U}=s.useAutoScroll(z,{threshold:50,delay:0,dependencies:[D,T.length]});M.useEffect(()=>{var J;N&&((J=t.current)==null||J.focus(),m({selectedEntities:(x==null?void 0:x.selectedEntities)||[]}))},[N,x,m]),s.useAutoSubmitQueue({assistantType:"editor",status:D,isLoading:E,sendMessage:O});const{hasActiveTools:$}=s.useActiveToolStatus(T);function re(J,Z){Z==="sql"?(b(J),f(!0)):Z==="python"&&(w(J),f(!0))}function oe(){var J;(J=j==null?void 0:j.selectedEntities)==null||J[0],d(!0)}function le(){u.selectedEntities.length===0&&m({selectedEntities:(j==null?void 0:j.selectedEntities)||[]})}function xe(J){le();const Z={role:"user",parts:[{type:"text",text:J.title+" "+J.subtitle}]};O(Z)}function pe(J){le(),O({role:"user",parts:[{type:"text",text:J}]})}function me(){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/50 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:n,onCheckedChange:a,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:r,onCheckedChange:o,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:l,onCheckedChange:c,children:"System Message"})]})]})}function fe(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const q=(R==null?void 0:R.length)===0&&(T==null?void 0:T.filter(J=>J.role==="user").length)===0;return e.jsxs("div",{"data-role":"editor-assistant",className:"flex h-full w-full flex-col justify-between px-6 py-4",children:[e.jsxs("div",{"data-role":"header-section",className:"flex items-start justify-between gap-2",children:[fe(),k&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:k,children:(v==null?void 0:v.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[me(),s.isDevEnv,e.jsx(s.IconButton,{tooltip:"Add Context",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",onClick:oe,children:e.jsx(s.Settings,{className:"size-4"})}),e.jsx(s.IconButton,{className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",tooltip:"New Chat",onClick:()=>{y([]),h("editor"),F(),W()},children:e.jsx(s.SquarePen,{className:"size-4"})}),e.jsx(s.Button,{variant:"ghost",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",size:"sm",onClick:()=>{I(!1)},children:e.jsx(s.ArrowRightToLine,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:G,className:"mt-2 flex w-full grow basis-0",onScroll:ne,children:e.jsxs("div",{className:"space-y-4 py-2 pr-3","data-role":"messages",children:[X&&e.jsx("div",{className:"flex justify-center py-2",children:e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:K,className:"text-xs",children:["Load ",Math.min(5,te-z.length)," more messages (",te-z.length," hidden)"]})}),e.jsx(s.PrintMessages,{messages:z,showTools:r,handleRun:re,showSystemMessage:l}),!$&&e.jsx(s.AssistantStatus,{status:D,errorMessage:L})]})}),!ee&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{se({force:!0}),U()},size:"sm",variant:"secondary",className:"rounded-full shadow-lg","aria-label":"Scroll to bottom",children:[e.jsx(s.ChevronDown,{className:"h-4 w-4"}),_&&V>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:V>9?"9+":V})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[q&&!v&&e.jsx(s.Placeholders,{onClick:xe,placeholders:pl}),e.jsx("div",{children:q&&v&&e.jsx(s.SeedQuestions,{seedQuestions:v.seedQuestions||[],handleSeedQuestionClick:pe})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:t,setInput:A,stop:B,input:R,handleInputChange:P,handleSubmit:J=>{le(),Y(J),se({force:!0})},isLoading:E,status:D,assistantType:"editor",onFocus:()=>{}})]}),S&&n&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",S.inputTokens," prompt tokens, ",S.outputTokens," ","completion tokens, ",S.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(x==null?void 0:x.selectedEntities)||[],open:i,onOpenChange:d,dataSource:x||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}const Ms=t=>{var E;const{updateCardConfig:n,updateGroupByColumn:a,updateMetricColumn:r,updatePivotByColumn:o,updateSortByColumn:l,removeGroupByColumn:c,removeMetricColumn:i,removePivotByColumn:d,removeSortByColumn:u}=s.useEditorActions(),m=s.useEditorStore(B=>B.card.type),h=t==null?void 0:t.id,p=M.useCallback(B=>{if(!(t!=null&&t.config))return[];switch(B){case"groupBy":return(t.config.groupByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType,dateFormat:D.dateFormat,customFormat:D.customFormat,granularity:D.granularity}));case"metrics":return t.config.metricColumns||[];case"pivotBy":return(t.config.pivotByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType}));case"sortBy":return(t.config.sortByColumns||[]).map(D=>({id:D.id,name:D.name,dataType:D.dataType,label:D.label!==void 0?D.label:D.name,qualifiedEntityName:D.qualifiedEntityName,entityId:D.entityId,entityName:D.entityName,entityType:D.entityType,direction:D.direction}));case"source":return[];default:return[]}},[t]),g=M.useCallback((B,D)=>{if(h)switch(B){case"groupBy":{n(h,{groupByColumns:D});break}case"metrics":{n(h,{metricColumns:D});break}case"pivotBy":{n(h,{pivotByColumns:D});break}case"sortBy":{n(h,{sortByColumns:D});break}}},[h,n]),j=M.useCallback((B,D,S)=>{if(!h)return;const F=p(B)[D];if(F)switch(B){case"groupBy":a(h,F.id,{label:S});break;case"metrics":r(h,F.id,{label:S});break;case"pivotBy":o(h,F.id,{label:S});break;case"sortBy":l(h,F.id,{label:S});break}},[h,p,a,r,o,l]),x=M.useCallback((B,D)=>{if(!h)return;const L=p("metrics")[B];L&&r(h,L.id,{aggregate:D,label:s.getAggregationLabel(L.name,D)})},[h,p,r]),b=M.useCallback((B,D,S)=>{if(!h)return;const F=p("groupBy")[B];if(!F)return;const R={dateFormat:D};D==="custom"&&S?R.customFormat=S:R.customFormat=void 0,a(h,F.id,R)},[h,p,a]),f=M.useCallback((B,D)=>{if(!h)return;const L=p("groupBy")[B];L&&a(h,L.id,{granularity:D})},[h,p,a]),N=M.useCallback((B,D)=>{if(!h)return;const L=p("metrics")[B];L&&r(h,L.id,{aliasTemplate:D})},[h,p,r]),k=M.useCallback((B,D)=>{if(console.log("handleValueAliasesChange",B,D),!h)return;console.log("handleValueAliasesChange",B,D);const L=p("metrics")[B];L&&(console.log("handleValueAliasesChange",D),r(h,L.id,{valueAliases:D}))},[h,p,r]),I=M.useCallback(B=>{h&&n(h,{comparisonType:B})},[h,n]),w=M.useCallback(B=>{h&&n(h,{showTrendline:B})},[h,n]),C=M.useCallback(B=>{h&&n(h,{trendlineWindow:B})},[h,n]),v=M.useCallback(B=>{h&&n(h,{trendlineGranularity:B})},[h,n]),T=M.useCallback(B=>{h&&n(h,{targetValue:B})},[h,n]),y=M.useCallback(B=>{var P;if(!h)return;const D=[...p("groupBy"),...p("pivotBy"),...p("metrics"),...p("sortBy")],S=(P=t==null?void 0:t.config)==null?void 0:P.joinPlan,L=s.validateEntityConsistency(B,D,S);if(!L.isValid){L.showError&&s.showJoinRequiredNotification();return}const F=s.getSmartContainerForField(B,D),R=p(F);if(s.fieldAlreadyExists(B,R))return;const A=s.getNewField(B,F,R);A&&g(F,[...R,A])},[h,(E=t==null?void 0:t.config)==null?void 0:E.joinPlan,p,g]),O=M.useCallback((B,D)=>{if(!h)return;const L=p(B)[D];if(L){if(B!=="sortBy"){const F=p("sortBy"),R=F.filter(A=>!(A.name===L.name&&A.qualifiedEntityName===L.qualifiedEntityName));R.length!==F.length&&n(h,{sortByColumns:R})}switch(B){case"groupBy":c(h,L.id);break;case"metrics":i(h,L.id);break;case"pivotBy":d(h,L.id);break;case"sortBy":u(h,L.id);break}}},[h,p,c,i,d,u,n]);return{getFieldsForContainer:p,setFieldsForContainer:g,updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:f,handleAliasTemplateChange:N,handleValueAliasesChange:k,removeField:O,handleFieldClick:y,handleKpiComparisonTypeChange:I,handleKpiShowTrendlineChange:w,handleKpiTrendlineWindowChange:C,handleKpiTrendlineGranularityChange:v,handleKpiTargetValueChange:T,cardType:m}};function fl({field:t}){return e.jsxs("div",{className:"w-64 bg-background p-0",children:[e.jsxs("div",{className:"mb-2 flex items-start justify-between gap-2",children:[e.jsx("h3",{className:"text-sm font-medium text-foreground",children:t.label||t.name}),e.jsx("span",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs text-muted-foreground",children:t.dataType})]}),t.description&&e.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:t.description}),e.jsx("div",{className:"overflow-x-auto border-t border-border pb-2 pt-2",children:e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:t.name})})]})}function gl({field:t}){const{attributes:n,listeners:a,setNodeRef:r,transform:o,transition:l,isDragging:c}=s.useSortable({id:t.id}),[i,d]=M.useState(!1),u=s.useEditorStore(j=>j.card),{handleFieldClick:m}=Ms(u),h={transform:s.CSS.Transform.toString(o),transition:l};s.getDataType(t.dataType);const p=j=>{const x=(j||"").toLowerCase();switch(s.getDataType(x)){case"number":return De;case"date":return s.Calendar;case"boolean":return Re;case"json":return _e;case"geo":return $e;default:return ve}},g=j=>{const x=(j||"").toLowerCase(),b=s.getDataType(x);return b==="string"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-blue-100 text-xs text-blue-700 dark:bg-blue-950 dark:text-blue-300",children:e.jsx(ve,{className:"h-3 w-3"})}):b==="number"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-green-100 text-xs text-green-700 dark:bg-green-950 dark:text-green-300",children:e.jsx(De,{className:"h-3 w-3"})}):b==="date"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-purple-100 text-xs text-purple-700 dark:bg-purple-950 dark:text-purple-300",children:e.jsx(s.Calendar,{className:"h-3 w-3"})}):b==="boolean"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-orange-100 text-xs text-orange-700 dark:bg-orange-950 dark:text-orange-300",children:e.jsx(Re,{className:"h-3 w-3"})}):b==="json"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-gray-100 text-xs text-gray-700 dark:bg-gray-950 dark:text-gray-300",children:e.jsx(_e,{className:"h-3 w-3"})}):b==="geo"?e.jsx("div",{className:"bg-orange -100 flex size-6 shrink-0 items-center justify-center rounded-sm text-xs text-orange-700 dark:bg-orange-950 dark:text-orange-300",children:e.jsx($e,{className:"h-3 w-3"})}):b==="calculated"?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-sm bg-gray-100 text-xs text-gray-700 dark:bg-gray-950 dark:text-gray-300",children:e.jsx(We,{className:"h-3 w-3"})}):null};return p(t.dataType),e.jsxs("div",{ref:r,style:h,...n,...a,className:`group/container overflow-hidden rounded-lg transition-all ${c?"scale-95 opacity-50":"border border-transparent hover:bg-muted"}`,children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3 p-2",onClick:()=>m(t),children:[g(t.dataType),e.jsx(s.TooltipProvider,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:"min-w-0 flex-1 overflow-hidden",children:e.jsx("span",{className:`block text-xs text-foreground/80 hover:text-foreground dark:text-muted-foreground ${i?"whitespace-normal break-words":"truncate"}`,children:t.label||t.name})})}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"ml-5 max-w-xs px-4 pb-2 pt-4",children:e.jsx(fl,{field:t})})]})})]}),i&&e.jsx("div",{className:"text-muted-foreground-700 px-2 pb-3 text-sm",children:e.jsx(s.Card,{className:"",children:e.jsxs(s.CardContent,{className:"space-y-2 p-3",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",{className:"break-all",children:t.label||t.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ga,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"break-all",children:t.name})]}),e.jsx(s.Badge,{variant:"outline",className:"mt-2 text-xs",children:t.dataType})]})})})]})}function jl(){const[t,n]=M.useState(""),[a,r]=M.useState("all"),o=s.useEditorStore(k=>k.card.dataSource),{columns:l=[],columnGroups:c=[],isLoading:i,error:d}=s.useColumns(),u=l.filter(k=>k.name.toLowerCase().includes(t.toLowerCase())||k.dataType.toLowerCase().includes(t.toLowerCase())||k.qualifiedEntityName&&k.qualifiedEntityName.toLowerCase().includes(t.toLowerCase())),m=k=>{if(k.dataType==="number"||k.dataType==="integer"||k.dataType==="float"||k.dataType==="decimal"||k.dataType==="currency")return"metrics";const I=s.getDataType(k.dataType);return["date","string","boolean"].includes(I)?"dimensions":I==="number"?"metrics":"dimensions"},p=(a==="all"?u:u.filter(k=>m(k)===a)).reduce((k,I)=>{const w=I.qualifiedEntityName||"Other Fields";return k[w]||(k[w]={label:s.toLabel(I.entityName),fields:[]}),k[w].fields.push(I),k},{}),j=Object.keys(p),x=u.filter(k=>m(k)==="dimensions").length,b=u.filter(k=>m(k)==="metrics").length,f=u.filter(k=>m(k)==="calculated").length,N=u.length>0;return i?e.jsx("div",{className:"flex h-[calc(100vh-200px)] w-[290px] flex-col items-center justify-center",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading data"})}):d?e.jsxs("div",{className:"flex h-[calc(100vh-200px)] w-[290px] flex-col items-center justify-center",children:[e.jsx(s.Database,{className:"mb-4 h-12 w-12 text-red-300"}),e.jsx("p",{className:"mb-2 text-sm text-red-500",children:"Error loading fields"}),e.jsx("p",{className:"px-4 text-center text-xs text-red-400",children:d.message||"Failed to load column data"})]}):!o||!o.selectedEntities||o.selectedEntities.length===0?e.jsx(s.ScrollArea,{className:"h-[calc(100vh-200px)] w-[290px]",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(s.Database,{className:"mb-4 h-12 w-12 text-gray-300"}),e.jsx("p",{className:"mb-2 text-sm text-gray-500",children:"No data source selected"}),e.jsx("p",{className:"px-4 text-xs text-gray-400",children:"Select a table, view, or dataset from the data source panel to see available fields"})]})}):e.jsxs("div",{className:"mt-2 flex h-[calc(100vh-200px)] w-full grow flex-col gap-2 px-6 pb-6",children:[e.jsxs("div",{className:"mt-1 flex-shrink-0 space-y-2",children:[l.length>0&&e.jsxs("div",{className:"relative mb-4",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 size-3.5 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10 pr-10",type:"text",placeholder:"Search fields...",value:t,onChange:k=>n(k.target.value)}),t&&e.jsx("button",{className:"absolute right-3 top-1/2 -translate-y-1/2 transform text-muted-foreground hover:text-foreground",onClick:()=>n(""),type:"button",children:e.jsx(s.X,{className:"size-3.5"})})]}),N&&e.jsx(s.Tabs,{defaultValue:"all",value:a,onValueChange:k=>r(k),className:"mb-4",children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-4",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:u.length})]}),e.jsxs(s.TabsTrigger,{value:"dimensions",className:"text-xs",children:[e.jsx(s.Layers,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:x})]}),e.jsxs(s.TabsTrigger,{value:"metrics",className:"text-xs",children:[e.jsx(s.ChartColumn,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:b})]}),e.jsxs(s.TabsTrigger,{value:"calculated",className:"text-xs",children:[e.jsx(We,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:f})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"py-2",children:[e.jsx(s.Accordion,{type:"multiple",defaultValue:j,className:"space-y-2",children:Object.entries(p).map(([k,I])=>{const w=c.find(C=>C.entityName===k)||{entityName:k,label:I.label};return e.jsxs(s.AccordionItem,{value:k,className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"group rounded-md px-2.5 py-2 text-muted-foreground hover:bg-muted hover:no-underline",children:e.jsxs("div",{title:w.label||w.entityName,className:"flex items-center gap-2",children:[e.jsx("span",{className:"max-w-[190px] truncate text-ellipsis whitespace-nowrap text-sm font-medium text-primary",children:w.label||w.entityName}),e.jsx(s.Badge,{variant:"secondary",className:"rounded-full text-xs text-muted-foreground group-hover:bg-background",children:I.fields.length})]})}),e.jsx(s.AccordionContent,{className:"pb-2",children:e.jsx("div",{className:"space-y-1",children:I.fields.map(C=>e.jsx(gl,{field:C},C.id))})})]},k)})}),Object.keys(p).length===0&&l.length===0&&e.jsxs("div",{className:"py-8 text-center text-sm text-gray-500",children:[e.jsx("p",{children:"No fields found for selected data source"}),e.jsx("p",{className:"mt-1 text-xs text-gray-400",children:"Try selecting different data sources"})]}),Object.keys(p).length===0&&l.length>0&&e.jsx("div",{className:"py-4 text-center text-sm text-gray-500",children:"No fields found for this category"}),e.jsx(s.ScrollBar,{orientation:"horizontal"}),e.jsx(s.ScrollBar,{orientation:"vertical"})]})]})}function bl(){return e.jsxs("div",{className:" h-full flex flex-col items-center",children:[" ",e.jsx(jl,{})," "]})}function vl({initialJoinPlan:t,availableDataSources:n}){const[a,r]=M.useState(t),[o,l]=M.useState(new Set),c=()=>{const C=a.joins.length>0?Math.max(...a.joins.map(T=>T.sequence))+1:1,v={id:`join-${Date.now()}`,source:{type:"table",name:"",database:"",schema:""},target:{type:"table",name:"",database:"",schema:""},joinType:"INNER",sequence:C,joinKeyGroups:[{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}]};r({...a,joins:[...a.joins,v]}),l(new Set([...o,v.id]))},i=C=>{r({...a,joins:a.joins.filter(v=>v.id!==C)}),l(new Set([...o].filter(v=>v!==C)))},d=(C,v)=>{var E,B;const T=a.joins.find(D=>D.id===C);if(!T)return;const y={...T,...v},O=a.joins.map(D=>D.id===C?y:D);if((E=y.source)!=null&&E.name&&((B=y.target)!=null&&B.name)&&y.joinKeyGroups[0].keys.length===0){const D=n.find(R=>{var A;return R.name===((A=y.source)==null?void 0:A.name)}),S=n.find(R=>{var A;return R.name===((A=y.target)==null?void 0:A.name)}),L={id:`key-${Date.now()}`,source:{id:`source-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(D==null?void 0:D.name)||"",entityName:(D==null?void 0:D.name)||"",entityType:(D==null?void 0:D.type)||"table"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(S==null?void 0:S.name)||"",entityName:(S==null?void 0:S.name)||"",entityType:(S==null?void 0:S.type)||"table"},operator:"="},F=[...y.joinKeyGroups];F[0]={...F[0],keys:[L]},y.joinKeyGroups=F,O[O.findIndex(R=>R.id===C)]=y}r({...a,joins:O})};return{joinPlan:a,expandedJoins:o,setJoinPlan:r,addJoin:c,removeJoin:i,updateJoin:d,moveJoinUp:C=>{const v=a.joins.findIndex(T=>T.id===C);if(v>0){const T=[...a.joins],y={...T[v]},O={...T[v-1]};T[v]=O,T[v-1]=y,T.forEach((B,D)=>{B.sequence=D+1});const E={...a,joins:T};r(E)}},moveJoinDown:C=>{const v=a.joins.findIndex(T=>T.id===C);if(v<a.joins.length-1){const T=[...a.joins],y={...T[v]},O={...T[v+1]};T[v]=O,T[v+1]=y,T.forEach((B,D)=>{B.sequence=D+1});const E={...a,joins:T};r(E)}},toggleJoinExpansion:C=>{const v=new Set(o);v.has(C)?v.delete(C):v.add(C),l(v)},getAvailableSourceEntities:C=>{if(a.joins.length===0)return n;const v=a.joins.findIndex(y=>y.id===C);if(v===0)return n;const T=new Set;return a.baseEntity.name&&T.add(a.baseEntity.name),a.joins.slice(0,v).forEach(y=>{T.add(y.source.name),T.add(y.target.name)}),n.filter(y=>T.has(y.name))},getAvailableTargetEntities:C=>n.filter(v=>v.name!==C),addJoinKeyGroup:C=>{const v=a.joins.find(y=>y.id===C);if(!v)return;const T=[...v.joinKeyGroups,{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}];d(C,{joinKeyGroups:T})},updateGroupOperator:(C,v,T)=>{const y=a.joins.find(E=>E.id===C);if(!y)return;const O=[...y.joinKeyGroups];O[v]={...O[v],operator:T},d(C,{joinKeyGroups:O})},removeJoinKeyGroup:(C,v)=>{const T=a.joins.find(O=>O.id===C);if(!T)return;const y=[...T.joinKeyGroups];y.splice(v,1),d(C,{joinKeyGroups:y})},addJoinKey:(C,v)=>{const T=a.joins.find(D=>D.id===C);if(!T)return;const y=n.find(D=>D.name===T.source.name),O=n.find(D=>D.name===T.target.name),E=[...T.joinKeyGroups],B={id:`key-${Date.now()}`,source:{id:`source-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(y==null?void 0:y.name)||"",entityName:(y==null?void 0:y.name)||"",entityType:(y==null?void 0:y.type)||"table"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(O==null?void 0:O.name)||"",entityName:(O==null?void 0:O.name)||"",entityType:(O==null?void 0:O.type)||"table"},operator:"="};E[v]={...E[v],keys:[...E[v].keys,B]},d(C,{joinKeyGroups:E})},updateJoinKey:(C,v,T,y,O)=>{const E=a.joins.find(F=>F.id===C);if(!E)return;const B=n.find(F=>F.name===E.source.name),D=n.find(F=>F.name===E.target.name),S=[...E.joinKeyGroups],L=S[v].keys[T];y==="sourceColumnName"&&B?S[v].keys[T]={...L,source:{...L.source,name:O}}:y==="targetColumnName"&&D?S[v].keys[T]={...L,target:{...L.target,name:O}}:y==="operator"&&(S[v].keys[T]={...L,operator:O}),d(C,{joinKeyGroups:S})},removeJoinKey:(C,v,T)=>{const y=a.joins.find(E=>E.id===C);if(!y)return;const O=[...y.joinKeyGroups];O[v].keys.splice(T,1),d(C,{joinKeyGroups:O})},generateSQLPreview:()=>{const C=[...a.joins].sort((y,O)=>y.sequence-O.sequence),v=a.baseEntity;if(!v.name)return"SELECT * FROM table -- Please select a base entity";let T=`SELECT *
|
|
334
334
|
FROM ${v.name}`;return C.forEach(y=>{const O=n.find(D=>D.name===y.target.name);if(!O)return;const E=y.joinKeyGroups.filter(D=>D.keys&&D.keys.length>0).map(D=>{const S=D.keys.filter(L=>{var F,R,A,P;return((F=L.source)==null?void 0:F.name)&&((R=L.target)==null?void 0:R.name)&&((A=L.source)==null?void 0:A.entityName)&&((P=L.target)==null?void 0:P.entityName)}).map(L=>`${L.source.entityName}.${L.source.name} ${L.operator} ${L.target.entityName}.${L.target.name}`);return S.length>1?`(${S.join(` ${D.operator} `)})`:S[0]}).filter(Boolean),B=E.length>1?E.join(" OR "):E[0]||"condition_here";T+=`
|
|
335
335
|
${y.joinType} JOIN ${O.name}
|
|
336
336
|
ON ${B}`}),T},isValidConfiguration:()=>!(!a.baseEntity.name||a.joins.some(y=>!y.source.name||!y.target.name)||a.joins.some(y=>y.joinKeyGroups.some(O=>O.keys.length===0))||a.joins.some(y=>y.joinKeyGroups.some(O=>O.keys.some(E=>!E.source.name||!E.target.name||!E.operator))))}}function yl({joinPlan:t,availableDataSources:n,onSave:a,onRemove:r,onCancel:o}){const{setCardConfig:l}=s.useEditorActions();s.useEditorStore(E=>E.card.config);const{columnGroups:c}=s.useColumns(),{joinPlan:i,expandedJoins:d,setJoinPlan:u,addJoin:m,removeJoin:h,updateJoin:p,moveJoinUp:g,moveJoinDown:j,toggleJoinExpansion:x,getAvailableSourceEntities:b,getAvailableTargetEntities:f,addJoinKeyGroup:N,updateGroupOperator:k,removeJoinKeyGroup:I,addJoinKey:w,updateJoinKey:C,removeJoinKey:v,generateSQLPreview:T,isValidConfiguration:y}=vl({initialJoinPlan:t,availableDataSources:n}),O=E=>{const B=c.find(D=>D.entityName===E);return(B==null?void 0:B.columns)||[]};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Base Entity (FROM clause)"}),e.jsxs(s.Select,{value:i.baseEntity.name,onValueChange:E=>{const B=n.find(D=>D.name===E);u({...i,baseEntity:{connectionId:(B==null?void 0:B.connectionId)||"",connectionType:(B==null?void 0:B.connectionType)||"none",type:(B==null?void 0:B.type)||"table",name:E,database:B==null?void 0:B.database,schema:B==null?void 0:B.schema}})},children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Select base entity..."})}),e.jsx(s.SelectContent,{children:n.map(E=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:E.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:E.type}),E.name,e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]})},E.name))})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"This entity will be used as the base table in the FROM clause of the SQL query."})]}),e.jsxs("div",{className:"rounded-md border p-3",children:[e.jsx("div",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"Join SQL Preview"}),e.jsx("code",{className:"block whitespace-pre-wrap break-all text-xs",children:T()})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s.Label,{children:["Joins Configuration (",i.joins.length,")"]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(s.Button,{variant:"outline",size:"sm",onClick:m,children:[e.jsx(s.Plus,{className:"mr-1 h-4 w-4"}),"Add Join"]})})]}),i.joins.length===0?e.jsx("div",{className:"rounded-lg border border-dashed py-8 text-center text-muted-foreground",children:e.jsx("p",{children:"No joins configured. Add a join to connect multiple data sources."})}):e.jsx("div",{className:"max-h-[300px] space-y-4 overflow-y-auto",children:i.joins.map(E=>{const B=n.find(L=>L.name===E.source.name),D=n.find(L=>L.name===E.target.name),S=d.has(E.id);return e.jsxs(s.Card,{className:"border",children:[e.jsx(s.CardHeader,{className:"pb-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{children:E.sequence}),e.jsxs(s.CardTitle,{className:"text-sm",children:["Join ",E.sequence,B&&D&&e.jsxs("span",{className:"ml-2 font-normal text-gray-600",children:["(",B.name," → ",D.name,")"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>g(E.id),disabled:E.sequence===1,children:e.jsx(s.ArrowUp,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>j(E.id),disabled:E.sequence===i.joins.length,children:e.jsx(s.ArrowDown,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>x(E.id),children:S?e.jsx(s.ChevronUp,{className:"h-4 w-4"}):e.jsx(s.ChevronDown,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>h(E.id),children:e.jsx(s.X,{className:"h-4 w-4"})})]})]})}),S&&e.jsxs(s.CardContent,{className:"space-y-4 pb-6",children:[e.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Source"}),e.jsxs(s.Select,{value:E.source.name,onValueChange:L=>{const F=n.find(R=>R.name===L);p(E.id,{source:{connectionId:(F==null?void 0:F.connectionId)||"",connectionType:(F==null?void 0:F.connectionType)||"none",type:(F==null?void 0:F.type)||"table",name:L,database:F==null?void 0:F.database,schema:F==null?void 0:F.schema}})},children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Select source..."})}),e.jsx(s.SelectContent,{children:b(E.id).map(L=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:L.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:L.type}),L.name]})},L.name))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Join Type"}),e.jsxs(s.Select,{value:E.joinType,onValueChange:L=>p(E.id,{joinType:L}),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"INNER",children:"INNER JOIN"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"LEFT",children:"LEFT JOIN"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"RIGHT",children:"RIGHT JOIN"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"FULL",children:"FULL JOIN"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Target"}),e.jsxs(s.Select,{value:E.target.name,onValueChange:L=>{const F=n.find(R=>R.name===L);p(E.id,{target:{connectionId:(F==null?void 0:F.connectionId)||"",connectionType:(F==null?void 0:F.connectionType)||"none",type:(F==null?void 0:F.type)||"table",name:L,database:F==null?void 0:F.database,schema:F==null?void 0:F.schema}})},disabled:!E.source.name,children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Select target..."})}),e.jsx(s.SelectContent,{children:E.source.name?f(E.source.name).map(L=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:L.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:L.type}),L.name,L.name===E.source.name&&e.jsx(s.Badge,{variant:"outline",className:"text-xs text-yellow-600",children:"(Self-join)"})]})},L.name)):[]})]})]})]}),E.source.name&&E.target.name&&B&&D&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{children:"Join Conditions"}),e.jsxs(s.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>N(E.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition Group"]})]}),E.joinKeyGroups.length===0?e.jsx("div",{className:"rounded-md border p-3 text-center text-sm text-gray-500",children:"No join conditions defined. Add condition groups to specify how data sources should be joined."}):e.jsx("div",{className:"space-y-4",children:E.joinKeyGroups.map((L,F)=>e.jsxs("div",{className:"space-y-3 rounded-md border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Label,{children:["Group ",F+1]}),F>0&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-gray-100 px-2 py-1",children:[e.jsx(s.Label,{className:"text-xs font-normal",children:"Join with:"}),e.jsx("span",{className:"text-sm font-medium",children:"OR"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Select,{value:L.operator,onValueChange:R=>k(E.id,F,R),children:[e.jsx(s.SelectTrigger,{className:"w-[100px]",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,{value:"OR",children:"OR"})]})]}),e.jsx(s.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>I(E.id,F),children:e.jsx(s.Trash2,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[L.keys.length===0?e.jsx("div",{className:"rounded-md border border-dashed p-3 text-center text-sm text-gray-500",children:"No conditions in this group. Add conditions to specify join criteria."}):e.jsx("div",{className:"space-y-2",children:L.keys.map((R,A)=>e.jsxs("div",{className:"flex flex-col items-start gap-2 rounded-md border p-2 sm:flex-row sm:items-center",children:[A>0&&e.jsx("div",{className:"self-center rounded-md bg-gray-100 px-2 py-1 text-xs font-medium",children:L.operator}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:flex-1",children:e.jsxs(s.Select,{value:R.source.name,onValueChange:P=>C(E.id,F,A,"sourceColumnName",P),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Source column"})}),e.jsx(s.SelectContent,{children:O(E.source.name).map(P=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:P.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsx("span",{children:P.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:P.dataType})]})},P.name))})]})}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:w-20",children:e.jsxs(s.Select,{value:R.operator,onValueChange:P=>C(E.id,F,A,"operator",P),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"=",children:"="}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"<",children:"<"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:">",children:">"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"<=",children:"<="}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:">=",children:">="})]})]})}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:flex-1",children:e.jsxs(s.Select,{value:R.target.name,onValueChange:P=>C(E.id,F,A,"targetColumnName",P),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Target column"})}),e.jsx(s.SelectContent,{children:O(E.target.name).map(P=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:P.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between hover:bg-muted",children:[e.jsx("span",{children:P.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:P.dataType})]})},P.name))})]})}),e.jsx(s.Button,{type:"button",variant:"ghost",size:"sm",className:"self-center",onClick:()=>v(E.id,F,A),children:e.jsx(s.X,{className:"size-3.5"})})]},R.id||A))}),e.jsxs(s.Button,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>w(E.id,F),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition"]})]})]},L.id))})]})]})]},E.id)})})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t pt-4",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>{r(),o()},children:"Remove All"}),e.jsx(s.Button,{variant:"outline",onClick:o,children:"Cancel"}),e.jsx(s.Button,{onClick:()=>a(i),disabled:!y(),children:"Save"})]})]})}function Ks({children:t,open:n,onOpenChange:a,joinPlan:r,availableDataSources:o,onRemove:l,onSave:c,onCancel:i}){return e.jsxs(s.Dialog,{open:n,onOpenChange:a,children:[e.jsxs(s.DialogContent,{className:"max-w-4xl",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Join Configuration"}),e.jsx(s.DialogDescription,{children:"Configure the join between the two entities to combine the fields."})]}),e.jsx(yl,{joinPlan:r,availableDataSources:o,onSave:c,onCancel:i,onRemove:l})]}),t]})}function Nl({joins:t,baseEntityId:n,availableDataSources:a,generateSQLPreview:r}){return e.jsxs("div",{className:"divide-y divide-border",children:[t.length>0&&e.jsxs("div",{className:"p-4",children:[e.jsx("h3",{className:"mb-3 text-left font-semibold",children:"Join Chain"}),e.jsx("div",{className:"flex flex-wrap items-center gap-2",children:(()=>{const o=[...t].sort((c,i)=>c.sequence-i.sequence),l=a.find(c=>c.name===n);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-1 rounded-md border bg-muted px-2 py-1",children:[e.jsx(s.Badge,{variant:"secondary",className:"text-xs",children:l==null?void 0:l.type}),e.jsx("span",{className:"text-xs font-medium",children:l==null?void 0:l.name}),e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]}),o.map(c=>{const i=a.find(d=>d.name===c.target.name);return e.jsxs("div",{className:"flex items-center",children:[e.jsxs("div",{className:"mx-1 flex items-center gap-1",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:c.joinType}),e.jsx("span",{className:"text-muted-foreground",children:"→"})]}),e.jsxs("div",{className:"flex items-center gap-1 rounded-md border bg-muted px-2 py-1",children:[e.jsx(s.Badge,{variant:"secondary",className:"text-xs",children:i==null?void 0:i.type}),e.jsx("span",{className:"text-xs font-medium",children:i==null?void 0:i.name})]})]},c.id)})]})})()})]}),e.jsxs("div",{className:"p-4",children:[e.jsxs("h3",{className:"mb-3 text-left text-sm font-medium",children:["Configured Joins (",t.length,")"]}),e.jsx("div",{className:"space-y-2",children:[...t].sort((o,l)=>o.sequence-l.sequence).map((o,l)=>{const c=a.find(d=>d.name===o.source.name),i=a.find(d=>d.name===o.target.name);return e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-muted p-2 text-left",children:[e.jsx(s.Badge,{variant:"secondary",className:"shrink-0 text-xs",children:l+1}),e.jsx(s.Badge,{variant:"outline",className:"shrink-0 text-xs",children:o.joinType}),e.jsxs("span",{className:"text-xs font-medium",children:[c==null?void 0:c.name," → ",i==null?void 0:i.name]}),e.jsxs(s.Badge,{variant:"outline",className:"ml-auto text-xs",children:[o.joinKeyGroups.reduce((d,u)=>d+u.keys.length,0)," ","condition",o.joinKeyGroups.reduce((d,u)=>d+u.keys.length,0)>1?"s":""]})]},o.id)})})]}),e.jsxs("div",{className:"p-4",children:[e.jsx("h3",{className:"mb-3 text-left text-sm font-medium",children:"SQL Query"}),e.jsx("div",{className:"overflow-x-auto rounded-md border bg-muted p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap break-all text-left font-mono text-xs text-muted-foreground",children:r()})})]})]})}function Cl(){var m,h;const t=s.useEditorStore(p=>p.card),n=s.useEditorStore(p=>p.actions.updateCardConfig),a=((m=t==null?void 0:t.config)==null?void 0:m.joinPlan)||{baseEntity:{type:"table",name:"",database:"",schema:"",connectionId:"",connectionType:"none",dialect:"none"},joins:[]},[r,o]=M.useState(!1),l=((h=t==null?void 0:t.dataSource)==null?void 0:h.selectedEntities)||[],c=p=>{n(t.id,{...t==null?void 0:t.config,joinPlan:p}),o(!1)},i=()=>{n(t.id,{...t==null?void 0:t.config,joinPlan:void 0})},d=()=>{o(!1)},u=()=>{const p=[...a.joins].sort((x,b)=>x.sequence-b.sequence),g=a.baseEntity;if(!g.name)return"SELECT * FROM table -- Please select a base entity";let j=`SELECT *
|