react-semaphor 0.0.595 → 0.0.596

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var Zs=t=>{throw TypeError(t)};var vs=(t,a,n)=>a.has(t)||Zs("Cannot "+n);var le=(t,a,n)=>(vs(t,a,"read from private field"),n?n.call(t):a.get(t)),Ye=(t,a,n)=>a.has(t)?Zs("Cannot add the same private member more than once"):a instanceof WeakSet?a.add(t):a.set(t,n),Ge=(t,a,n,r)=>(vs(t,a,"write to private field"),r?r.call(t,n):a.set(t,n),n),Ke=(t,a,n)=>(vs(t,a,"access private method"),n);const e=require("react/jsx-runtime"),s=require("./index-KJGJzl_J.js"),I=require("react");require("react-dom");function Sa(t){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(a,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return a.default=t,Object.freeze(a)}const pe=Sa(I);var Le,Re,xe,we,ke,hs,As,gt,wa=(gt=class extends s.Subscribable{constructor(a,n){super();Ye(this,ke);Ye(this,Le);Ye(this,Re);Ye(this,xe);Ye(this,we);Ge(this,Le,a),this.setOptions(n),this.bindMethods(),Ke(this,ke,hs).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(a){var r;const n=this.options;this.options=le(this,Le).defaultMutationOptions(a),s.shallowEqualObjects(this.options,n)||le(this,Le).getMutationCache().notify({type:"observerOptionsUpdated",mutation:le(this,xe),observer:this}),n!=null&&n.mutationKey&&this.options.mutationKey&&s.hashKey(n.mutationKey)!==s.hashKey(this.options.mutationKey)?this.reset():((r=le(this,xe))==null?void 0:r.state.status)==="pending"&&le(this,xe).setOptions(this.options)}onUnsubscribe(){var a;this.hasListeners()||(a=le(this,xe))==null||a.removeObserver(this)}onMutationUpdate(a){Ke(this,ke,hs).call(this),Ke(this,ke,As).call(this,a)}getCurrentResult(){return le(this,Re)}reset(){var a;(a=le(this,xe))==null||a.removeObserver(this),Ge(this,xe,void 0),Ke(this,ke,hs).call(this),Ke(this,ke,As).call(this)}mutate(a,n){var r;return Ge(this,we,n),(r=le(this,xe))==null||r.removeObserver(this),Ge(this,xe,le(this,Le).getMutationCache().build(le(this,Le),this.options)),le(this,xe).addObserver(this),le(this,xe).execute(a)}},Le=new WeakMap,Re=new WeakMap,xe=new WeakMap,we=new WeakMap,ke=new WeakSet,hs=function(){var n;const a=((n=le(this,xe))==null?void 0:n.state)??s.getDefaultState();Ge(this,Re,{...a,isPending:a.status==="pending",isSuccess:a.status==="success",isError:a.status==="error",isIdle:a.status==="idle",mutate:this.mutate,reset:this.reset})},As=function(a){s.notifyManager.batch(()=>{var n,r,l,o,c,i,u,d;if(le(this,we)&&this.hasListeners()){const m=le(this,Re).variables,h=le(this,Re).context;(a==null?void 0:a.type)==="success"?((r=(n=le(this,we)).onSuccess)==null||r.call(n,a.data,m,h),(o=(l=le(this,we)).onSettled)==null||o.call(l,a.data,null,m,h)):(a==null?void 0:a.type)==="error"&&((i=(c=le(this,we)).onError)==null||i.call(c,a.error,m,h),(d=(u=le(this,we)).onSettled)==null||d.call(u,void 0,a.error,m,h))}this.listeners.forEach(m=>{m(le(this,Re))})})},gt);function $e(t,a){const n=s.useQueryClient(),[r]=pe.useState(()=>new wa(n,t));pe.useEffect(()=>{r.setOptions(t)},[r,t]);const l=pe.useSyncExternalStore(pe.useCallback(c=>r.subscribe(s.notifyManager.batchCalls(c)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=pe.useCallback((c,i)=>{r.mutate(c,i).catch(s.noop)},[r]);if(l.error&&s.shouldThrowError(r.options.throwOnError,[l.error]))throw l.error;return{...l,mutate:o,mutateAsync:l.mutate}}/**
1
+ "use strict";var Zs=t=>{throw TypeError(t)};var vs=(t,a,n)=>a.has(t)||Zs("Cannot "+n);var le=(t,a,n)=>(vs(t,a,"read from private field"),n?n.call(t):a.get(t)),Ye=(t,a,n)=>a.has(t)?Zs("Cannot add the same private member more than once"):a instanceof WeakSet?a.add(t):a.set(t,n),Ge=(t,a,n,r)=>(vs(t,a,"write to private field"),r?r.call(t,n):a.set(t,n),n),Ke=(t,a,n)=>(vs(t,a,"access private method"),n);const e=require("react/jsx-runtime"),s=require("./index-CYGgsy6B.js"),I=require("react");require("react-dom");function Sa(t){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(a,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return a.default=t,Object.freeze(a)}const pe=Sa(I);var Le,Re,xe,we,ke,hs,As,gt,wa=(gt=class extends s.Subscribable{constructor(a,n){super();Ye(this,ke);Ye(this,Le);Ye(this,Re);Ye(this,xe);Ye(this,we);Ge(this,Le,a),this.setOptions(n),this.bindMethods(),Ke(this,ke,hs).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(a){var r;const n=this.options;this.options=le(this,Le).defaultMutationOptions(a),s.shallowEqualObjects(this.options,n)||le(this,Le).getMutationCache().notify({type:"observerOptionsUpdated",mutation:le(this,xe),observer:this}),n!=null&&n.mutationKey&&this.options.mutationKey&&s.hashKey(n.mutationKey)!==s.hashKey(this.options.mutationKey)?this.reset():((r=le(this,xe))==null?void 0:r.state.status)==="pending"&&le(this,xe).setOptions(this.options)}onUnsubscribe(){var a;this.hasListeners()||(a=le(this,xe))==null||a.removeObserver(this)}onMutationUpdate(a){Ke(this,ke,hs).call(this),Ke(this,ke,As).call(this,a)}getCurrentResult(){return le(this,Re)}reset(){var a;(a=le(this,xe))==null||a.removeObserver(this),Ge(this,xe,void 0),Ke(this,ke,hs).call(this),Ke(this,ke,As).call(this)}mutate(a,n){var r;return Ge(this,we,n),(r=le(this,xe))==null||r.removeObserver(this),Ge(this,xe,le(this,Le).getMutationCache().build(le(this,Le),this.options)),le(this,xe).addObserver(this),le(this,xe).execute(a)}},Le=new WeakMap,Re=new WeakMap,xe=new WeakMap,we=new WeakMap,ke=new WeakSet,hs=function(){var n;const a=((n=le(this,xe))==null?void 0:n.state)??s.getDefaultState();Ge(this,Re,{...a,isPending:a.status==="pending",isSuccess:a.status==="success",isError:a.status==="error",isIdle:a.status==="idle",mutate:this.mutate,reset:this.reset})},As=function(a){s.notifyManager.batch(()=>{var n,r,l,o,c,i,u,d;if(le(this,we)&&this.hasListeners()){const m=le(this,Re).variables,h=le(this,Re).context;(a==null?void 0:a.type)==="success"?((r=(n=le(this,we)).onSuccess)==null||r.call(n,a.data,m,h),(o=(l=le(this,we)).onSettled)==null||o.call(l,a.data,null,m,h)):(a==null?void 0:a.type)==="error"&&((i=(c=le(this,we)).onError)==null||i.call(c,a.error,m,h),(d=(u=le(this,we)).onSettled)==null||d.call(u,void 0,a.error,m,h))}this.listeners.forEach(m=>{m(le(this,Re))})})},gt);function $e(t,a){const n=s.useQueryClient(),[r]=pe.useState(()=>new wa(n,t));pe.useEffect(()=>{r.setOptions(t)},[r,t]);const l=pe.useSyncExternalStore(pe.useCallback(c=>r.subscribe(s.notifyManager.batchCalls(c)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=pe.useCallback((c,i)=>{r.mutate(c,i).catch(s.noop)},[r]);if(l.error&&s.shouldThrowError(r.options.throwOnError,[l.error]))throw l.error;return{...l,mutate:o,mutateAsync:l.mutate}}/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -73,12 +73,12 @@
73
73
  *
74
74
  * This source code is licensed under the ISC license.
75
75
  * See the LICENSE file in the root directory of this source tree.
76
- */const Fa=s.createLucideIcon("Columns3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/**
76
+ */const Ba=s.createLucideIcon("Columns3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/**
77
77
  * @license lucide-react v0.453.0 - ISC
78
78
  *
79
79
  * This source code is licensed under the ISC license.
80
80
  * See the LICENSE file in the root directory of this source tree.
81
- */const Ba=s.createLucideIcon("Component",[["path",{d:"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z",key:"1uwlt4"}],["path",{d:"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z",key:"10291m"}],["path",{d:"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z",key:"1tqoq1"}],["path",{d:"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z",key:"1x6lto"}]]);/**
81
+ */const Fa=s.createLucideIcon("Component",[["path",{d:"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z",key:"1uwlt4"}],["path",{d:"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z",key:"10291m"}],["path",{d:"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z",key:"1tqoq1"}],["path",{d:"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z",key:"1x6lto"}]]);/**
82
82
  * @license lucide-react v0.453.0 - ISC
83
83
  *
84
84
  * This source code is licensed under the ISC license.
@@ -313,7 +313,7 @@
313
313
  *
314
314
  * This source code is licensed under the ISC license.
315
315
  * See the LICENSE file in the root directory of this source tree.
316
- */const Fe=s.createLucideIcon("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/**
316
+ */const Be=s.createLucideIcon("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/**
317
317
  * @license lucide-react v0.453.0 - ISC
318
318
  *
319
319
  * This source code is licensed under the ISC license.
@@ -323,7 +323,7 @@
323
323
  *
324
324
  * This source code is licensed under the ISC license.
325
325
  * See the LICENSE file in the root directory of this source tree.
326
- */const gn=s.createLucideIcon("View",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]);function xs(t){var a;return{...t,sheets:(a=t==null?void 0:t.sheets)==null?void 0:a.map(n=>{var r;return{...n,frames:(r=n.frames)==null?void 0:r.map(l=>{var o;return{...l,cards:(o=l.cards)==null?void 0:o.map(c=>St(c))}})}})}}function St(t){return{...t,customCfg:jn(t.customCfg),data:[]}}function jn(t){var a,n;return t?{...t,data:{...t==null?void 0:t.data,labels:[],datasets:(n=(a=t==null?void 0:t.data)==null?void 0:a.datasets)==null?void 0:n.map(r=>({...r,data:[]}))}}:null}async function yn(t,a,n,r){if(!r)return null;const l=JSON.stringify(a);return await s.postRequest("https://semaphor.cloud/api/v1/lens",r,{name:t,template:l,filterValues:n,operation:"create"})}async function Ls(t,a){if(!a)return null;const{id:n,template:r,filterValues:l,isDefault:o,shared:c}=t;return await s.postRequest("https://semaphor.cloud/api/v1/lens",a,{lensId:n,template:r,filterValues:l,isDefault:o,shared:c,operation:"update"})}async function bn(t,a){return a?await s.postRequest("https://semaphor.cloud/api/v1/lens",a,{operation:"delete",lensId:t}):null}function vn(){const[t,a]=I.useState(""),[n,r]=I.useState(!1),l=s.useDashboardStore(x=>x.lenses),{setLenses:o,setSelectedLensId:c}=s.useDashboardActions(),[i,u]=I.useState(!1),[d,m]=I.useState(!1),h=s.useDashboardStore(x=>x.dashboard),f=s.useDashboardStore(x=>x.filterValues),{authToken:g}=s.useSemaphorContext();async function j(){u(!0);const x=xs(h),b=await yn(t,x,f,g==null?void 0:g.accessToken);b&&(o([...l||[],b]),c(b.id),m(!1)),u(!1)}return e.jsxs(s.Dialog,{open:d,onOpenChange:m,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",size:"sm",children:[e.jsx(s.Plus,{className:"mr-2 h-4 w-4"}),"Lens"]})}),e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Create Lens"}),e.jsx(s.DialogDescription,{children:"Lenses are private by default and are only visible to you."})]}),e.jsx("div",{className:"grid gap-4 py-4",children:e.jsxs("div",{className:"grid grid-cols-8 items-center gap-4",children:[e.jsx(s.Label,{className:"text-right",children:"Name"}),e.jsx(s.Input,{value:t,onChange:x=>{a(x.target.value)},id:"name",className:"col-span-7 focus-visible:ring-0 focus-visible:ring-ring focus-visible:ring-offset-0"})]})}),n&&e.jsx("p",{className:"text-sm",children:"The lens name already exists. Use a differnet name."}),e.jsx(s.DialogFooter,{children:e.jsx(s.Button,{size:"sm",variant:"outline",type:"submit",onClick:j,disabled:i,children:i?"Creating...":"Add"})})]})]})}function Nn(){const[t,a]=I.useState(!1),n=s.useDashboardStore(m=>m.lenses),r=s.useDashboardStore(m=>m.selectedLensId),{setLenses:l,setSelectedLensId:o}=s.useDashboardActions(),{authToken:c}=s.useSemaphorContext();async function i(m){o(m)}async function u(m){if(await bn(m,c==null?void 0:c.accessToken)){const f=n==null?void 0:n.filter(g=>g.id!==m);l(f||[]),o("original")}}async function d(m){const h=n==null?void 0:n.map(j=>j.id===m.id?{...j,isDefault:!m.isDefault}:{...j,isDefault:!1});l(h||[]);const f={...m,isDefault:!m.isDefault};await Ls(f,c==null?void 0:c.accessToken);const g=n==null?void 0:n.find(j=>j.isDefault);if(g&&g.id!==m.id){const j={...g,isDefault:!1};await Ls(j,c==null?void 0:c.accessToken)}}return e.jsxs(s.DropdownMenu,{open:t,onOpenChange:a,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Lenses",className:"h-7 p-2",children:e.jsx(Ga,{className:"h-4 w-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-60",children:[e.jsx(s.DropdownMenuLabel,{className:"px-3",children:"Lenses"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuRadioGroup,{value:r,onValueChange:i,children:[e.jsx(s.DropdownMenuRadioItem,{value:"original",children:"Original"}),n==null?void 0:n.map(m=>e.jsxs(s.DropdownMenuRadioItem,{className:"group flex justify-between gap-2",value:m.id,children:[e.jsx("p",{children:m.name}),e.jsxs("span",{className:"flex items-center gap-3",children:[e.jsx(s.House,{onClick:h=>{h.preventDefault(),d(m)},className:s.cn("size-3.5 text-muted-foreground hover:cursor-pointer hover:text-foreground group-hover:visible",{invisible:!m.isDefault,"text-green-500":m.isDefault}),strokeWidth:1.5}),e.jsx(s.Cross2Icon,{onClick:h=>{h.preventDefault(),u(m.id)},className:"invisible size-3.5 text-muted-foreground hover:cursor-pointer hover:text-foreground group-hover:visible",strokeWidth:1.5})]})]},m.id))]})]})]})}function wt(){var o;const t=s.useDashboardStore.getState().authToken,a=s.useDashboardStore.getState().theme,n=s.useDashboardStore.getState().filterValues,r=(o=s.useDashboardStore.getState().dashboard)==null?void 0:o.title,l=s.useDashboardStore.getState().selectedSheetId;return{authToken:t,theme:a||"light",filterValues:n,dashboardTitle:r||"",selectedSheetId:l||""}}async function Dt(){const t=s.useDashboardStore.getState().isDownloadingPdf,{authToken:a,theme:n,filterValues:r,dashboardTitle:l,selectedSheetId:o}=wt();if(t)return;const c=new URLSearchParams;c.set("token",(a==null?void 0:a.accessToken)||""),c.set("theme",n),c.set("filterValues",JSON.stringify(r)),c.set("selectedSheetId",o||"");const i=`https://semaphor.cloud/api/v1/generate-pdf?params=${encodeURIComponent(c.toString())}`;s.useDashboardStore.setState({isDownloadingPdf:!0});const m=(await(await fetch(i,{method:"GET",headers:{Authorization:`Bearer ${a==null?void 0:a.accessToken}`}})).json()).url,h=document.createElement("a");h.href=m;const f=`${l}-${new Date().toISOString()}.pdf`;h.download=f,h.click(),s.useDashboardStore.setState({isDownloadingPdf:!1})}function Cn({iconClassName:t}){const{authToken:a}=s.useSemaphorContext();s.useDashboardStore(l=>{var o;return(o=l.dashboard)==null?void 0:o.title}),s.useDashboardStore(l=>l.theme),s.useDashboardStore(l=>l.filterValues);const n=s.useDashboardStore(l=>l.isDownloadingPdf);async function r(){await Dt()}return e.jsx(s.IconButton,{tooltip:"Download PDF",className:"h-7 p-2",onClick:r,children:n?e.jsx(s.LoaderCircle,{className:s.cn("size-3.5 animate-spin",t)}):e.jsx(s.Download,{className:s.cn("size-4",t)})})}function je({defaultValue:t,label:a,options:n,value:r,onValueChange:l,className:o,icon:c,showPlaceholderLabel:i=!0}){return e.jsxs(s.Select,{defaultValue:t,value:r,onValueChange:l,children:[e.jsx(s.SelectTrigger,{className:s.cn("w-full focus:ring-0 focus:ring-offset-0",o),children:e.jsxs("div",{className:"flex items-center gap-2",children:[c&&e.jsx("span",{children:c}),i&&e.jsx(s.SelectValue,{placeholder:a})]})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:a}),n.map(u=>e.jsx(s.SelectItem,{value:u.value,children:u.label},u.value))]})})]})}const at=[{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"biweekly",label:"Bi-Weekly"},{value:"monthly",label:"Monthly"}];function kt({triggerButtonClassName:t}){const{data:a,handleScheduleSubscription:n,handleDeleteSubscription:r,status:l,error:o,isDeleting:c}=Sn(),[i,u]=I.useState(""),[d,m]=I.useState(at[0].value),[h,f]=I.useState("06:00"),[g,j]=I.useState("");return e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Schedule Dashboard",className:s.cn("h-7 p-2",t),children:e.jsx(s.Clock,{className:"size-4"})})}),e.jsx(s.PopoverContent,{align:"end",className:"w-80",children:e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium leading-none",children:"Schedule Subscription"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Subscribe to receive dashboard via email"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"email",children:"Email"}),e.jsx(s.Input,{id:"email",value:i,onChange:x=>u(x.target.value),className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"subject",children:"Subject"}),e.jsx(s.Input,{id:"subject",placeholder:"Monthly Sales Report",value:g,onChange:x=>{j(x.target.value.replace(/[^a-zA-Z0-9\s-_]/g,""))},className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"frequency",children:"Frequency"}),e.jsx(je,{className:"col-span-2 h-8",label:"Select Frequency",options:at,value:d,onValueChange:x=>m(x)})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"time",children:"Time"}),e.jsx(s.Input,{id:"time",type:"time",value:h,onChange:x=>f(x.target.value),className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsx("div",{className:"mt-2 flex justify-end",children:e.jsxs(s.Button,{onClick:async()=>{await n({email:i,frequency:d,time:h,subject:g}),f("00:00"),u(""),j("")},className:"h-8 p-2",disabled:l==="loading"||!i,children:[l==="loading"&&e.jsx(s.LoaderCircle,{className:"mr-2 size-4 animate-spin"}),l==="success"&&e.jsx(s.Check,{className:"mr-2 size-4"}),l==="error"&&e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{children:e.jsx(jt,{className:"mr-2 size-4 text-destructive"})}),e.jsx(s.TooltipContent,{children:e.jsx("p",{children:o})})]}),"Schedule"]})}),a&&a.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"space-y-2",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium leading-none",children:"Subscriptions"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Active email subscriptions"})]}),s.isDevEnv]})}),e.jsx("div",{className:"grid gap-2",children:a==null?void 0:a.map(x=>e.jsxs("div",{className:"group grid grid-cols-5 gap-3",children:[e.jsx("div",{className:"col-span-3 text-sm",children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"boder-border rounded-md border bg-muted px-2 py-1",children:[s.titleCase(x.frequency)," "]}),e.jsx(s.Label,{children:x.time})]})}),e.jsxs("div",{className:"col-span-2 flex items-center justify-end gap-4",children:[e.jsx(nt,{tooltip:`Next Run: ${new Date(x.nextRun).toLocaleString()} ${x.timezone}`,children:e.jsx(Oa,{className:"size-3.5"})}),e.jsx(nt,{tooltip:`${x.endUserEmail}`,children:e.jsx(tn,{className:"size-3.5"})}),c===x.id?e.jsx(s.LoaderCircle,{className:"size-3.5 animate-spin"}):e.jsx(s.Trash2,{onClick:()=>r(x.id),className:"size-3.5 cursor-pointer"})]})]},x.id))})]})]})]})})]})})}const nt=({children:t,tooltip:a})=>e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:t}),e.jsx(s.TooltipContent,{children:a})]})});function Sn(){const[t,a]=I.useState("idle"),[n,r]=I.useState(""),[l,o]=I.useState(null),c=s.useDashboardStore(T=>T.authToken),i=s.useDashboardStore(T=>T.dashboard.id),u=s.useDashboardStore(T=>T.dashboard.title),{endUserId:d}=s.getTenantAndEndUserId((c==null?void 0:c.accessToken)||""),m="https://semaphor.cloud/api/v1/subscriptions/get",h={dashboardId:i,endUserId:d},{data:f,isLoading:g,isError:j,isFetching:x,refetch:b}=s.useQuery({queryKey:["subscriptions",i,d],queryFn:()=>s.getRequest(m,(c==null?void 0:c.accessToken)||"",h),enabled:!!(c!=null&&c.accessToken)&&!!i&&!!d});async function p({email:T,subject:L,frequency:N,time:w}){const{authToken:y,...k}=wt(),S=Intl.DateTimeFormat().resolvedOptions().timeZone,R={email:T,frequency:N,time:w,timezone:S,endUserId:d,endUserEmail:T,subject:L||u||"Scheduled Dashboard",dashboardId:i,dashboardParams:k};a("loading");const C="https://semaphor.cloud/api/v1/subscriptions/create";try{const F=await s.postRequestRegular(C,(y==null?void 0:y.accessToken)||"",{...R});a("success"),r(""),b(),setTimeout(()=>{a("idle")},2e3)}catch(F){console.error(F),a("error"),r(F.message)}}async function v(T){const L="https://semaphor.cloud/api/v1/subscriptions/delete";o(T);try{await s.postRequestRegular(L,(c==null?void 0:c.accessToken)||"",{id:T}),b(),setTimeout(()=>{o(null)},2e3)}catch(N){console.error(N),o(null),a("error"),r(N.message)}}return{data:f,isLoading:g,isFetching:x,isError:j,isDeleting:l,refetch:b,handleScheduleSubscription:p,handleDeleteSubscription:v,status:t,error:n}}function Ie(){const{authToken:t,tokenProps:a}=s.useSemaphorContext();let n=null;a&&(a.endUserId&&a.endUserEmail&&a.tenantId?n={id:a.endUserId,name:a.endUserEmail?String(a.displayName):"",email:a.endUserEmail?String(a.endUserEmail):"",type:"tenant",tenantId:a.tenantId}:a.orgUserId&&a.orgUserEmail&&(n={id:a.orgUserId,name:a.orgUserEmail?String(a.displayName):"",email:a.orgUserEmail?String(a.orgUserEmail):"",type:"organization"}));const{data:r,isLoading:l,isError:o}=s.useQuery({queryKey:["userInfo",n==null?void 0:n.id],queryFn:async()=>{if(!(n!=null&&n.id))return;const i=await fetch(`https://semaphor.cloud/api/management/v1/unified-users/${n.id}`,{headers:{Authorization:`Bearer ${(t==null?void 0:t.accessToken)||""}`,"Content-Type":"application/json"}});if(!i.ok)throw new Error("Failed to fetch user info");return(await i.json()).user},enabled:!!(t!=null&&t.accessToken)&&!!(n!=null&&n.id)});return{currentUser:n?{...n,...r||{}}:null,isLoading:l,isError:o}}function Tt(){return e.jsx(s.ScrollArea,{className:"w-full flex-1",children:e.jsxs("div",{className:"space-y-4 px-4",children:[e.jsx("div",{className:"animate-pulse",children:e.jsx("div",{className:"h-8 w-full rounded bg-muted"})}),e.jsx("div",{className:"animate-pulse",children:e.jsx("div",{className:"h-8 w-full rounded bg-muted"})}),e.jsx("div",{className:"space-y-2",children:[...Array(4)].map((t,a)=>e.jsx("div",{className:"animate-pulse",children:e.jsxs("div",{className:"group relative flex items-start gap-3 px-4 py-3",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-muted"})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("div",{className:"h-4 w-32 rounded bg-muted"})}),e.jsx("div",{className:"shrink-0",children:e.jsx("div",{className:"h-3.5 w-3.5 rounded bg-muted"})})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx("div",{className:"h-3 w-48 rounded bg-muted"})})]}),e.jsx("div",{className:"absolute right-3 top-2",children:e.jsx("div",{className:"flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100",children:e.jsx("div",{className:"h-6 w-6 rounded bg-muted"})})})]})]})},a))})]})})}var ae=(t=>(t.DASHBOARD="dashboard",t.VISUAL="visual",t))(ae||{});const wn=async(t,a,n,r,l,o)=>{const c={},i={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${i[a]}`,t,c)},Dn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${r[a]}`,t,n)},kn=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},o=await fetch(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r)});if(!o.ok){const c=await o.json();throw new Error((c==null?void 0:c.error)||`HTTP error! status: ${o.status}`)}return o.json()},Tn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},l=await fetch(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}});if(!l.ok){const o=await l.json();throw new Error((o==null?void 0:o.error)||`HTTP error! status: ${l.status}`)}return l.json()},En=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}/duplicate`,t,{})},In=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}/share`,t,r)},An=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},o=await fetch(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}/share`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r)});if(!o.ok){const c=await o.json();throw new Error((c==null?void 0:c.error)||`HTTP error! status: ${o.status}`)}return o.json()},Mn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}/shares`,t)},Ln=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}`,t)};function Rn(t){const{authToken:a}=s.useSemaphorContext();return s.useQuery({queryKey:["tenants"],queryFn:()=>s.getRequest("https://semaphor.cloud/api/management/v1/tenants",(a==null?void 0:a.accessToken)||""),enabled:(t==null?void 0:t.enabled)!==void 0?t.enabled&&!!(a!=null&&a.accessToken):!!(a!=null&&a.accessToken)})}function On(t,a,n,r,l){const{authToken:o}=s.useSemaphorContext(),{currentUser:c}=Ie();return s.useQuery({queryKey:[t,a,n,r,l],queryFn:()=>wn((o==null?void 0:o.accessToken)||"",t),enabled:!!(o!=null&&o.accessToken)&&!!c})}function Fn(t,a){const{authToken:n}=s.useSemaphorContext(),r=s.useQueryClient();return $e({mutationFn:l=>Dn((n==null?void 0:n.accessToken)||"",t,l),onMutate:async()=>{await r.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await r.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} created successfully`),a==null||a()},onError:l=>{s.ue.error(`Failed to create ${s.toTitleCase(t)}: ${l.message}`)}})}function Et(t){const{authToken:a}=s.useSemaphorContext(),n=s.useQueryClient();return $e({mutationFn:({resourceId:r,data:l})=>kn((a==null?void 0:a.accessToken)||"",t,r,l),onMutate:async()=>{await n.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await n.invalidateQueries({queryKey:[t]})},onError:r=>{s.ue.error(`Failed to update ${s.toTitleCase(t)}: ${r.message}`)}})}function Bn(t,a){const{authToken:n}=s.useSemaphorContext(),r=s.useQueryClient();return $e({mutationFn:l=>Tn((n==null?void 0:n.accessToken)||"",t,l),onMutate:async()=>{await r.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await r.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} deleted successfully`),a==null||a()},onError:l=>{s.ue.error(`Failed to delete ${s.toTitleCase(t)}: ${l.message}`)}})}function Pn(t){const{authToken:a}=s.useSemaphorContext(),n=s.useQueryClient();return $e({mutationFn:r=>En((a==null?void 0:a.accessToken)||"",t,r),onMutate:async()=>{await n.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await n.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} duplicated successfully`)},onError:r=>{s.ue.error(`Failed to duplicate ${s.toTitleCase(t)}: ${r.message}`)}})}function zn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:({resourceType:n,resourceId:r,data:l})=>In((t==null?void 0:t.accessToken)||"",n,r,l),onMutate:async n=>{await a.cancelQueries({queryKey:["resource-shares",n.resourceType,n.resourceId]})},onSuccess:async(n,r)=>{await a.invalidateQueries({queryKey:["resource-shares",r.resourceType,r.resourceId]}),a.invalidateQueries({queryKey:[r.resourceType]})},onError:n=>{s.ue.error(`Failed to share resource: ${n.message}`)}})}function Vn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:({resourceType:n,resourceId:r,data:l})=>An((t==null?void 0:t.accessToken)||"",n,r,l),onMutate:async n=>{await a.cancelQueries({queryKey:["resource-shares",n.resourceType,n.resourceId]})},onSuccess:async(n,r)=>{await a.invalidateQueries({queryKey:["resource-shares",r.resourceType,r.resourceId]}),a.invalidateQueries({queryKey:[r.resourceType]})},onError:n=>{s.ue.error(`Failed to remove resource shares: ${n.message}`)}})}function _n(t,a){const{authToken:n}=s.useSemaphorContext();return s.useQuery({queryKey:["resource-shares",t,a],queryFn:()=>Mn((n==null?void 0:n.accessToken)||"",t,a),enabled:!!(n!=null&&n.accessToken)&&!!a})}function Un(t,a,n){const{authToken:r}=s.useSemaphorContext();return s.useQuery({queryKey:["resource-by-id",t,a],queryFn:()=>Ln((r==null?void 0:r.accessToken)||"",t,a),enabled:(n==null?void 0:n.enabled)!==void 0?n.enabled&&!!(r!=null&&r.accessToken)&&!!a:!!(r!=null&&r.accessToken)&&!!a})}function $n(t,a){return Un(ae.VISUAL,t,a)}function It(){const[t,a]=I.useState(new Map),n=I.useCallback((o,c)=>{a(i=>{const u=new Map(i),d=new Set(u.get(o)||[]);return c?d.add(c):(d.add("title"),d.add("description")),u.set(o,d),u})},[]),r=I.useCallback((o,c)=>{a(i=>{const u=new Map(i),d=new Set(u.get(o)||[]);return c?d.delete(c):d.clear(),d.size===0?u.delete(o):u.set(o,d),u})},[]),l=I.useCallback((o,c)=>{const i=t.get(o);return i?c?i.has(c):i.size>0:!1},[t]);return{startUpdating:n,stopUpdating:r,isUpdating:l}}function Bs(t,a,n){var h;const r=On(t),l=Fn(t,n),o=Et(t),c=Bn(t,a),i=Pn(t),u=zn(),d=Vn(),m={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return{resources:((h=r.data)==null?void 0:h[m[t]])||[],isLoading:r.isLoading,isError:r.isError,isFetching:r.isFetching,error:r.error,createResource:l.mutate,updateResource:o.mutate,deleteResource:c.mutate,duplicateResource:i.mutate,shareResource:u.mutate,removeResourceShares:d.mutate,isCreating:l.isPending,isUpdating:o.isPending,isDeleting:c.isPending,isDuplicating:i.isPending,isSharing:u.isPending,isRemovingShares:d.isPending,isUpdatingShares:u.isPending,refetch:r.refetch}}function qn(t,a){return Bs(ae.DASHBOARD,t,a)}function Yn(t,a){return Bs(ae.VISUAL,t,a)}function Gn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:async({visualId:n,data:r})=>{const l=await fetch(`https://semaphor.cloud/api/management/v1/visuals/${n}`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t==null?void 0:t.accessToken}`},body:JSON.stringify(r)});if(!l.ok)throw new Error("Failed to update visual");return l.json()},onSuccess:()=>{s.ue.success("Visual updated successfully"),a.invalidateQueries({queryKey:["visuals"]})},onError:()=>{s.ue.error("Failed to update visual")}})}function Kn({visual:t,isDeleting:a,isDuplicating:n,isTitleUpdating:r=!1,isDescriptionUpdating:l=!1,onAddVisual:o,onEditVisual:c,onUpdateVisual:i,onDeleteClick:u,onDuplicateVisual:d,onShareVisual:m,formatDate:h}){var w;const{selectVisual:f}=s.useManagementActions(),g=s.useIsVisualSelected(t.id),j=s.useDashboardStore(y=>y.actions.setIsDashboardPanelOpen),[x,b]=I.useState(!1),[p,v]=I.useState(!1);I.useEffect(()=>{n?(b(!0),v(!0)):p&&(b(!1),v(!1))},[n,p]);const T=()=>t.ownership.isOwner?t.ownership.status==="private"?e.jsx(bt,{className:"h-3 w-3 text-purple-500"}):e.jsx(Ee,{className:"h-3.5 w-3.5 text-blue-600"}):e.jsx(Fe,{className:"h-3.5 w-3.5 text-slate-500"}),L=()=>e.jsx(s.ChartColumn,{className:"h-4 w-4 text-slate-400"}),N=()=>{f(t),c==null||c(t)};return e.jsxs("div",{className:s.cn("group relative flex cursor-pointer items-start gap-3 px-4 py-3 dark:border-slate-800","cursor-pointer transition-colors duration-150 hover:bg-slate-50 dark:hover:bg-slate-900/50",t.ownership.isOwner&&"border-blue-200 dark:border-blue-800",g&&"rounded-md bg-slate-50 ring-1 ring-inset ring-border dark:bg-slate-900/50"),tabIndex:0,onClick:N,children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-slate-100 dark:bg-slate-800",children:L()})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(s.EditableText,{inputClassName:"text-sm font-medium text-slate-900 dark:text-slate-100",value:t.title,onSave:y=>i==null?void 0:i(t.id,{title:y}),isEditable:t.ownership.isOwner&&g,isPending:r,placeholder:"Untitled Visual",displayClassName:"line-clamp-1 max-w-[150px] text-sm font-medium text-slate-900 dark:text-slate-100"})}),e.jsx("div",{className:"shrink-0",children:T()})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx(s.EditableText,{inputClassName:"line-clamp-1 text-xs text-slate-500 dark:text-slate-400",value:t.description||"",onSave:y=>i==null?void 0:i(t.id,{description:y}),isEditable:t.ownership.isOwner&&g,isPending:l,placeholder:"No description",displayClassName:"mt-0.5 max-w-[220px] line-clamp-1 text-xs text-slate-500 dark:text-slate-400"})})]}),e.jsx("div",{className:"absolute right-3 top-2 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:s.cn("flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100"),children:[e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>{y.stopPropagation(),o(t)},children:e.jsx(s.Plus,{className:"h-3.5 w-3.5"})}),e.jsxs(s.DropdownMenu,{modal:!1,open:x,onOpenChange:b,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>y.stopPropagation(),children:e.jsx(s.Ellipsis,{className:"h-3 w-3"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"z-[51] w-40",children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),o(t)},children:[e.jsx(s.Plus,{className:"mr-2 h-3 w-3"}),"Add"]}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.preventDefault(),y.stopPropagation(),d(t.id)},disabled:n,children:[n?e.jsx(s.LoaderCircle,{className:"mr-2 h-3 w-3 animate-spin"}):e.jsx(s.Copy,{className:"mr-2 h-3 w-3"}),n?"Duplicating...":"Duplicate"]}),t.ownership.isOwner&&e.jsxs(e.Fragment,{children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),c==null||c(t)},children:[e.jsx(on,{className:"mr-2 h-3 w-3"}),"Edit"]}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),m(t)},children:[e.jsx(Ee,{className:"mr-2 h-3 w-3"}),"Share"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),u(t),j(!1)},className:"text-destructive",disabled:a,children:[e.jsx(s.Trash2,{className:"mr-2 h-3 w-3"}),a?"Deleting...":"Delete"]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"space-y-1 px-2 py-2 text-xs text-slate-500 dark:text-slate-400",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fe,{className:"h-3 w-3"}),e.jsx("span",{children:((w=t.ownership.createdBy)==null?void 0:w.name)||"Unknown"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Calendar,{className:"h-3 w-3"}),e.jsx("span",{children:h(t.lastModified)})]})]})]})]})]})})]})]},t.id)}function At({value:t,onChange:a,placeholder:n="Search users by name, email, or department..."}){return e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:n,value:t,onChange:r=>a(r.target.value),className:"pl-9"})]})}function ps({currentRole:t,onRoleChange:a,roleOptions:n,disabled:r=!1,className:l="",allowDropdown:o=!0}){var u;const c=((u=n.find(d=>d.value===t))==null?void 0:u.label)||t,i=n.filter(d=>d.value!==t);return o?e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Badge,{variant:"outline",className:`cursor-pointer hover:bg-muted ${r?"cursor-not-allowed opacity-50":""} ${l}`,onClick:()=>console.log("Badge clicked:",{currentRole:t,disabled:r,allowDropdown:o}),children:c})}),e.jsx(s.DropdownMenuContent,{className:"z-[51]",children:i.map(d=>e.jsx(s.DropdownMenuItem,{onClick:()=>{console.log("Dropdown item clicked:",{currentRole:t,newRole:d.value,disabled:r}),a(d.value)},disabled:r,children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:d.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:d.description})]})},d.value))})]}):e.jsx(s.Badge,{variant:"outline",className:`text-xs ${l}`,children:c})}function Mt({selectedUsers:t,selectedUserObjects:a,onRemove:n,onRoleChange:r,getRoleOptions:l}){return t.length===0?null:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s.Label,{className:"text-sm font-medium",children:["Selected Users (",t.length,")"]}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>t.forEach(o=>n(o.id)),className:"h-auto p-1 text-xs",children:"Clear all"})]}),e.jsx("div",{className:"flex max-h-20 flex-wrap gap-2 overflow-y-auto",children:a.map(o=>{const c=t.find(u=>u.id===o.id),i=l(o.type);return e.jsxs(s.Badge,{variant:"secondary",className:"gap-1",children:[o.name,e.jsx(ps,{currentRole:(c==null?void 0:c.role)||"VIEWER",onRoleChange:u=>r(o.id,u),roleOptions:i}),e.jsx("button",{onClick:()=>n(o.id),className:"ml-1 rounded-full p-0.5 hover:bg-muted-foreground/20",children:e.jsx(s.X,{className:"h-3 w-3"})})]},o.id)})}),e.jsx(s.Separator,{})]})}function Lt({usersToRemove:t,allUsers:a,onRemove:n}){return t.length===0?null:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s.Label,{className:"text-sm font-medium text-destructive",children:["Users to Remove Access (",t.length,")"]}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>t.forEach(r=>n(r)),className:"h-auto p-1 text-xs text-destructive hover:text-destructive",children:"Clear all"})]}),e.jsx("div",{className:"flex max-h-20 flex-wrap gap-2 overflow-y-auto",children:a.filter(r=>t.includes(r.id)).map(r=>e.jsxs(s.Badge,{variant:"destructive",className:"gap-1",children:[r.name,e.jsx("button",{onClick:()=>n(r.id),className:"ml-1 rounded-full p-0.5 hover:bg-destructive-foreground/20",children:e.jsx(s.X,{className:"h-3 w-3"})})]},r.id))}),e.jsx(s.Separator,{})]})}function Rt({usersToUpdate:t,allUsers:a,onRemove:n,getRoleOptions:r}){if(t.length===0)return null;const l=r("tenant"),o=i=>{const u=a.find(d=>d.id===i);return(u==null?void 0:u.name)||"Unknown User"},c=i=>{const u=l.find(d=>d.value===i);return(u==null?void 0:u.label)||i};return e.jsxs("div",{className:"rounded-lg border border-orange-200 bg-orange-50 p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(Ee,{className:"h-4 w-4 text-orange-600"}),e.jsxs("span",{className:"text-sm font-medium text-orange-800",children:["Updating Access (",t.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:t.map(i=>e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:o(i.id)}),e.jsx("span",{className:"text-muted-foreground",children:"→"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:c(i.currentRole)}),e.jsx("span",{className:"text-muted-foreground",children:"→"}),e.jsx(s.Badge,{variant:"default",className:"text-xs",children:c(i.newRole)})]})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-muted-foreground hover:text-destructive",onClick:()=>n(i.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},i.id))})]})}function Ot(t,a={}){const{enabled:n=!0,eventType:r="mousedown"}=a,l=I.useRef(null);return I.useEffect(()=>{const o=c=>{const i=c.target;l.current&&l.current.contains(i)||i instanceof Element&&(i.closest("[data-radix-popper-content-wrapper]")||i.closest("[data-radix-select-content]")||i.closest("[data-radix-popover-content]")||i.closest("[data-radix-dropdown-menu-content]")||i.closest("[data-radix-tooltip-content]")||i.closest('[role="listbox"]')||i.closest('[role="option"]')||i.closest('[role="combobox"]'))||i instanceof Element&&i.hasAttribute("data-radix-")||t()};return n&&document.addEventListener(r,o),()=>{document.removeEventListener(r,o)}},[t,n,r]),l}function Ne(t,a){var n;return((n=a.find(r=>r.value===t))==null?void 0:n.label)||t}function Hn(t){return["POWER_USER","ADMIN","EDITOR"].includes(t)}function Ft(t){return"tenantId"in t&&t.tenantId?"tenant":"organization"}function Qn(t,a,n){const r=Ft(t),l=(n==null?void 0:n.type)||"organization";if(!(!a||!a.shares))if(l==="organization")if(r==="organization"){if("specificOrgUsers"in a.shares)return(a.shares.specificOrgUsers||[]).find(i=>i.orgUserId===t.id)}else return(a.shares.specificTenantUsers||[]).find(i=>i.tenantUserId===t.id);else return(a.shares.specificTenantUsers||[]).find(i=>i.tenantUserId===t.id)}function Wn({user:t}){return Ft(t)==="tenant"?e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:t.role==="POWER_USER"?"Power User":"Viewer"}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:t.role==="ADMIN"?"Admin":t.role==="POWER_USER"?"Power User":"Viewer"})}function Jn({user:t,userShare:a,usersToUpdate:n,currentUser:r,getRoleOptions:l,handleUpdateAccess:o}){if(!(a!=null&&a.role))return null;const c=Hn((r==null?void 0:r.type)||""),i=n.some(h=>h.id===t.id),u=n.find(h=>h.id===t.id),d=u?u.newRole:a==null?void 0:a.role,m=l(t.type);return a?e.jsx("div",{className:"flex items-center gap-2",children:c?e.jsx(ps,{currentRole:d,onRoleChange:h=>{o(t.id,a.role,h)},roleOptions:m,disabled:!c,allowDropdown:c,className:i?"border-orange-300 bg-orange-100":""}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:Ne(d,m)})}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:"Unknown"})}function Xn({hasAccess:t,isUserRemoving:a,isSelected:n,hasAccessFromAPI:r}){return e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[t&&!a&&e.jsxs(s.Badge,{variant:"outline",className:"border-green-200 bg-green-50 text-xs text-green-700",children:[e.jsx(s.Eye,{className:"mr-1 h-3 w-3"}),"Has Access"]}),a&&e.jsxs(s.Badge,{variant:"outline",className:"border-red-200 bg-red-50 text-xs text-red-700",children:[e.jsx(s.X,{className:"mr-1 h-3 w-3"}),"Remove Access"]}),n&&!r&&e.jsxs(s.Badge,{variant:"outline",className:"border-blue-200 bg-blue-50 text-xs text-blue-700",children:[e.jsx(ts,{className:"mr-1 h-3 w-3"}),"Will Share"]})]})}function Zn({isUserRemoving:t,isSelected:a,hasAccess:n,isRemoving:r,isSharing:l}){return e.jsxs(e.Fragment,{children:[t&&e.jsx("span",{className:"text-xs font-medium text-red-600",children:r?e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Removing..."]}):"⚠ Will remove access"}),a&&!n&&e.jsx("span",{className:"text-xs font-medium text-blue-600",children:l?e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Sharing..."]}):"Will share"})]})}function er({existingShares:t,allUsers:a,getRoleOptions:n,currentUser:r}){if(((r==null?void 0:r.type)||"organization")==="organization")if("specificOrgUsers"in t.shares){const c=t.shares,i=c.specificOrgUsers||[],u=c.specificTenantUsers||[],d=c.orgWide||[],m=c.orgUsersOnly||[],h=c.allTenantsOnly||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[i.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Org Users (",i.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[i.slice(0,3).map((f,g)=>{var p,v;const j=((p=a.find(T=>T.id===f.orgUserId))==null?void 0:p.name)||"Unknown User",x=((v=a.find(T=>T.id===f.orgUserId))==null?void 0:v.type)||"",b=Ne(f.role,n(x));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:j}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:b})]},g)}),i.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",i.length-3," more users"]})]})]}),u.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-green-600",children:["Specific Tenant Users (",u.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[u.slice(0,3).map((f,g)=>{var p,v;const j=((p=a.find(T=>T.id===f.tenantUserId))==null?void 0:p.name)||"Unknown User",x=((v=a.find(T=>T.id===f.tenantUserId))==null?void 0:v.type)||"",b=Ne(f.role,n(x));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:j}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:b})]},g)}),u.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",u.length-3," more users"]})]})]}),d.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-purple-600",children:"All Org Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:d.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Organization Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),m.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-orange-600",children:"Org Users Only"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:m.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"Org Users Only"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),h.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-indigo-600",children:"All Tenants"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:h.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenants"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),!i.length&&!u.length&&!d.length&&!m.length&&!h.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}else{const c=t.shares.specificTenantUsers||[],i=t.shares.tenantWide||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[c.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Users (",c.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[c.slice(0,3).map((u,d)=>{var g,j;const m=((g=a.find(x=>x.id===u.tenantUserId))==null?void 0:g.name)||"Unknown User",h=((j=a.find(x=>x.id===u.tenantUserId))==null?void 0:j.type)||"",f=Ne(u.role,n(h));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:m}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:f})]},d)}),c.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",c.length-3," more users"]})]})]}),i.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-green-600",children:"All Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:i.map((u,d)=>{const m=Ne(u.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenant Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:m})]},d)})})]}),!c.length&&!i.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}else{const o=t.shares.specificTenantUsers||[],c=t.shares.tenantWide||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[o.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Users (",o.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[o.slice(0,3).map((i,u)=>{var f,g;const d=((f=a.find(j=>j.id===i.tenantUserId))==null?void 0:f.name)||"Unknown User",m=((g=a.find(j=>j.id===i.tenantUserId))==null?void 0:g.type)||"",h=Ne(i.role,n(m));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:d}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:h})]},u)}),o.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",o.length-3," more users"]})]})]}),c.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-green-600",children:"All Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:c.map((i,u)=>{const d=Ne(i.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenant Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:d})]},u)})})]}),!o.length&&!c.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}}function sr({isInitialLoading:t,searchQuery:a,availableUsers:n}){return t?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(s.LoaderCircle,{className:"h-4 w-4 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]})}):n.length===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:a?"No users found matching your search.":"No users available to share with."}):null}function tr({user:t,userShare:a,isUserRemoving:n,hasAccess:r,hasAccessFromAPI:l,isSelected:o,selectedUser:c,roleOptions:i,currentUser:u,usersToUpdate:d,handleUserToggle:m,handleRemoveAccess:h,handleUpdateAccess:f,handleUserRoleChange:g}){return e.jsxs("div",{className:s.cn("flex items-center space-x-3 rounded-lg p-2 transition-colors",r&&!n?"border border-green-200 bg-green-50":n?"border border-red-200 bg-red-50":o?"border border-blue-200 bg-blue-50":"hover:bg-muted/50"),children:[e.jsx(s.Checkbox,{checked:l?!n:o,disabled:t.id===(u==null?void 0:u.id),onCheckedChange:()=>{l?n?m(t.id):h(t.id):m(t.id)}}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.name}),e.jsx(Wn,{user:t})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[r&&!n?e.jsx(ps,{currentRole:a==null?void 0:a.role,onRoleChange:j=>f(t.id,a.role,j),roleOptions:i,disabled:!1,allowDropdown:!0}):e.jsx(Jn,{user:t,userShare:a,usersToUpdate:d,currentUser:u,getRoleOptions:()=>i,handleUpdateAccess:f}),o&&!l&&e.jsx("div",{onClick:j=>j.stopPropagation(),children:e.jsx(ps,{currentRole:(c==null?void 0:c.role)||"VIEWER",onRoleChange:j=>g(t.id,j),roleOptions:i,disabled:!1})})]})]}),e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:t.email}),e.jsx(Xn,{hasAccess:r,isUserRemoving:n,isSelected:o,hasAccessFromAPI:l}),e.jsx(Zn,{isUserRemoving:n,isSelected:o,hasAccess:r,isRemoving:!1,isSharing:!1})]})]})}function Bt({existingShares:t,isInitialLoading:a,isSearching:n,getRoleOptions:r,allUsers:l=[],currentUser:o,handleUserToggle:c,handleUserRoleChange:i,handleRemoveAccess:u,handleUpdateAccess:d}){const m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate(),g=s.useShareSearchQuery(),j=s.useShareManagementActions(),x=c||(N=>{const w=m.some(k=>k.id===N),y=h.includes(N);w?j.removeSelectedUser(N):y?j.removeUserFromRemove(N):j.addSelectedUser({id:N,role:"VIEWER"})}),b=i||j.updateSelectedUserRole,p=u||j.addUserToRemove,v=d||((N,w,y)=>{j.addUserToUpdate({id:N,currentRole:w,newRole:y})}),T=l,L=h;return e.jsxs("div",{className:"space-y-2",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,{className:"text-sm font-medium",children:["All Users (",(T??[]).length,")"]}),e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",children:e.jsx(s.Info,{className:"h-4 w-4"})})}),e.jsx(s.TooltipContent,{className:"w-48 max-w-sm",children:e.jsx(er,{existingShares:t,allUsers:l,getRoleOptions:r,currentUser:o})})]})})]}),(T==null?void 0:T.length)>0&&e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>{m.length===T.length?j.setSelectedUsers([]):j.setSelectedUsers(T.map(N=>({id:N.id,role:"VIEWER"})))},className:"h-auto p-1 text-xs",children:m.length===T.length?"Deselect all":"Select all"})]}),e.jsxs("div",{className:"max-h-60 space-y-1 overflow-y-auto rounded-md border p-2",children:[e.jsx(sr,{isInitialLoading:a,isSearching:n,searchQuery:g,availableUsers:T||[]}),!a&&!n&&(T==null?void 0:T.length)>0&&T.map(N=>{const w=t?Qn(N,t,o):void 0,y=L.includes(N.id),k=!!w,S=k&&!y,R=m.some(D=>D.id===N.id),C=m.find(D=>D.id===N.id),F=r(N.type);return e.jsx(tr,{user:N,userShare:w,isUserRemoving:y,hasAccess:S,hasAccessFromAPI:k,isSelected:R,selectedUser:C,roleOptions:F,currentUser:o,usersToUpdate:f,handleUserToggle:x,handleRemoveAccess:p,handleUpdateAccess:v,handleUserRoleChange:b},N.id)})]})]})}function Pt({shareType:t,onShareTypeChange:a,currentUser:n,options:r}){const l=(n==null?void 0:n.role)&&["POWER_USER","ADMIN","AUTHOR","SUPER_ADMIN"].includes(n.role);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.RadioGroup,{value:t,onValueChange:a,className:`grid grid-cols-${r.length} gap-4`,children:r.map(o=>e.jsxs("div",{children:[e.jsx(s.RadioGroupItem,{value:o.value,id:o.value,className:"peer sr-only",disabled:o.disabled}),e.jsxs(s.Label,{htmlFor:o.value,className:`flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary peer-data-[state=checked]:bg-primary/5 [&:has([data-state=checked])]:border-primary [&:has([data-state=checked])]:bg-primary/5 ${o.disabled?"cursor-not-allowed opacity-50":"cursor-pointer"}`,children:[o.icon||e.jsx(Fe,{className:"mb-3 h-6 w-6"}),e.jsxs("div",{className:"space-y-1 text-center",children:[e.jsx("p",{className:"text-sm font-medium leading-none",children:o.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:o.description})]})]})]},o.value))}),!l&&r.some(o=>o.value==="all_users")&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Only admins, authors, power users, and super admins can share with all users."})]})}const Pe=()=>[{value:"VIEWER",label:"Viewer",description:"Can view only"},{value:"EDITOR",label:"Editor",description:"Can view and edit"},{value:"CONTRIBUTOR",label:"Contributor",description:"Can view, edit, and share"},{value:"OWNER",label:"Owner",description:"Full access (view, edit, share, delete)"}];function ar({currentUser:t,currentShare:a,isSharing:n,onUpdateAccess:r,allUsersToUpdate:l=null,allUsersToRemove:o=!1,isUpdating:c=!1,isRemoving:i=!1}){const u=s.useShareCurrentMode(),d=Pe().filter(v=>v.value==="VIEWER"||v.value==="EDITOR"||v.value==="CONTRIBUTOR"),m=a.role!=="NONE"?a.role:"NONE",h=l?l.newRole:m,f=a.role!=="NONE"&&!o&&(!l||l.newRole===m),g=l!==null&&l.newRole!==m,j=o,x=m==="NONE"||!m,b=v=>{switch(v){case"VIEWER":return e.jsx(s.Eye,{className:"h-4 w-4"});case"EDITOR":return e.jsx(s.SquarePen,{className:"h-4 w-4"});case"CONTRIBUTOR":return e.jsx(un,{className:"h-4 w-4"});default:return e.jsx(s.Eye,{className:"h-4 w-4"})}},p=v=>{r(m,v)};return e.jsx("div",{className:"space-y-4",children:e.jsxs(s.Card,{className:s.cn("pb-6",g&&!j&&!x?"border-orange-300 bg-orange-50":f?"border-green-300 bg-green-50":j||x?"border-destructive bg-destructive/10":""),children:[e.jsxs(s.CardHeader,{children:[e.jsxs(s.CardTitle,{className:"flex items-center gap-2 text-base",children:[e.jsx(Ee,{className:"h-5 w-5"}),"Share with All"," ",u==="allOrgUsers"?"Organization":u==="allTenantUsers"?"Tenant":u==="specificOrgUsers"?"Org":"Tenant"," ","Users",f&&e.jsx(s.Badge,{variant:"default",className:"ml-2 border-green-400 bg-green-100 text-green-800",children:"Active"}),g&&e.jsx(s.Badge,{variant:"secondary",className:"ml-2 border-orange-400 bg-orange-100 text-orange-800",children:"Pending Update"}),(j||x)&&e.jsx(s.Badge,{variant:"destructive",className:"ml-2",children:"No Access"})]}),e.jsx(s.CardDescription,{children:j||x?"No access for all users.":"This will share the dashboard with all users in your "+((t==null?void 0:t.type)==="organization"?"organization":"tenant")+". Select an access level below."})]}),e.jsx(s.CardContent,{className:"space-y-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Select Access Level:"}),e.jsxs(s.HoverCard,{children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-4 w-4 p-0 text-muted-foreground hover:text-foreground",children:e.jsx(s.Info,{className:"h-3 w-3"})})}),e.jsx(s.HoverCardContent,{className:"w-80",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Share with All Users"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["This action will share the dashboard with all users in your"," ",(t==null?void 0:t.type)==="organization"?"organization":"tenant",". Users will receive the selected access level."]}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Viewer:"})," Can view the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Editor:"})," Can view and edit the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Contributor:"})," Can view, edit, and share the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"None:"})," No access for all users"]})]})]})})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:d.map(v=>e.jsxs(s.Button,{variant:h===v.value?"default":"outline",className:"h-auto flex-col items-start gap-2 p-3",onClick:()=>p(v.value),disabled:n||c||i,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[b(v.value),e.jsx("span",{className:"font-medium",children:v.label})]}),e.jsx("p",{className:"text-left text-xs text-muted-foreground",children:v.description})]},v.value))})]})})]})})}function zt({currentUser:t,currentShare:a,isSharing:n,isUpdating:r,isRemoving:l,onUpdateAccess:o,onRemoveAccess:c,allUsersToUpdate:i,allUsersToRemove:u}){const d=x=>x==="OWNER"?"CONTRIBUTOR":x,h=a?{role:d(a.role)}:{role:"NONE"},f=i?{currentRole:d(i.currentRole),newRole:d(i.newRole)}:null,g=(x,b)=>{o(x,b)},j=()=>{c()};return e.jsx(ar,{currentUser:t,currentShare:h,isSharing:n,isUpdating:r,isRemoving:l,onUpdateAccess:g,onRemoveAccess:j,allUsersToUpdate:f,allUsersToRemove:u})}const nr=async(t,a={})=>{const n={};return a.search&&(n.search=a.search),a.type&&(n.type=a.type),a.active!==void 0&&(n.active=a.active.toString()),a.tenantId&&(n.tenantId=a.tenantId),a.limit&&(n.limit=a.limit.toString()),a.offset&&(n.offset=a.offset.toString()),a.page&&(n.page=a.page.toString()),a.pageSize&&(n.pageSize=a.pageSize.toString()),await s.getRequest("https://semaphor.cloud/api/management/v1/unified-users",t,n)};function rr(t={}){var o,c,i;const{authToken:a,tokenProps:n}=s.useSemaphorContext(),r=(n==null?void 0:n.endUserId)||(n==null?void 0:n.orgUserId),l=s.useQuery({queryKey:["unified-users",t],queryFn:()=>nr((a==null?void 0:a.accessToken)||"",t),enabled:!!(a!=null&&a.accessToken)&&!!r,retry:(u,d)=>d instanceof Error&&d.message.includes("401")||d instanceof Error&&d.message.includes("403")?!1:u<2,retryDelay:u=>Math.min(1e3*2**u,3e4)});return{users:((o=l.data)==null?void 0:o.users)||[],userContext:(c=l.data)==null?void 0:c.userContext,total:((i=l.data)==null?void 0:i.total)||0,isLoading:l.isLoading,isError:l.isError,isFetching:l.isFetching,error:l.error,refetch:l.refetch}}function Be(t){const{debouncedSearchQuery:a,resourceId:n,resourceType:r=ae.DASHBOARD,userType:l,tenantId:o}=t,c=I.useMemo(()=>({search:a,active:!0,...l?{type:l}:{},...l==="tenant"&&o?{tenantId:o}:{}}),[a,l,o]),{users:i,isLoading:u,isError:d}=rr(c),m=_n(r,n);return{allUsers:i,isLoadingUsers:u,isErrorLoadingUsers:d,existingShares:m.data,isLoadingShares:m.isLoading,isErrorLoadingShares:m.isError,isFetchingShares:m.isFetching}}function lr({resource:t,resourceType:a,currentUser:n,onShareTabTypeChange:r,isSharing:l=!1,isUpdating:o=!1,isRemoving:c=!1}){var X,Q;const i=s.useShareSelectedTab(),u=s.useShareSelectedTenant(),{searchQuery:d,setSearchQuery:m,debouncedSearchQuery:h}=s.useShareSearchWithDebounce(),f=s.useShareSelectedUsers(),g=s.useShareUsersToRemove(),j=s.useShareUsersToUpdate(),x=s.useShareCurrentMode(),b=s.useShareOrgWideRole(),p=s.useShareManagementActions(),[v,T]=I.useState("specific_users"),L=()=>{if(i==="org")return"organization";if(i==="tenant")return"tenant"},N=()=>{if(i==="tenant"&&u)return u},{allUsers:w,existingShares:y,isLoadingUsers:k}=Be({debouncedSearchQuery:h,resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:L(),tenantId:N()});I.useEffect(()=>{p.setCurrentContext("org-tab"),p.setCurrentMode(v==="all_users"?"allOrgUsers":"specificOrgUsers")},[p,v]);const S=Y=>{var U,_;const K=Y;if(T(K),r==null||r(K),p.setCurrentContext("org-tab"),K==="specific_users")p.setCurrentMode("specificOrgUsers");else if(K==="all_users"){p.setCurrentMode("allOrgUsers");const V=(_=(U=y==null?void 0:y.shares)==null?void 0:U.orgUsersOnly)==null?void 0:_[0];V&&V.role!==void 0&&p.setOrgWideRole(V.role)}},R=w.filter(Y=>Y.name.toLowerCase().includes(d.toLowerCase())||Y.email.toLowerCase().includes(d.toLowerCase())),C=w.filter(Y=>f.some(K=>K.id===Y.id)),F=Y=>{var V,$;const K=f.some(Z=>Z.id===Y),U=g.includes(Y),_=($=(V=y==null?void 0:y.shares)==null?void 0:V.specificOrgUsers)==null?void 0:$.some(Z=>Z.orgUserId===Y);K?p.removeSelectedUser(Y):U?p.removeUserFromRemove(Y):_||p.addSelectedUser({id:Y,role:"VIEWER"})},D=(Y,K)=>{p.updateSelectedUserRole(Y,K)},E=Y=>{p.addUserToRemove(Y),p.removeSelectedUser(Y)},A=Y=>{p.removeUserFromRemove(Y)},B=Y=>{p.removeUserFromUpdate(Y)},M=(Y,K)=>{p.setOrgWideRole(K)},O=()=>{p.setOrgWideRole((z==null?void 0:z.role)||"NONE")},z=(Q=(X=y==null?void 0:y.shares)==null?void 0:X.orgUsersOnly)==null?void 0:Q[0];I.useEffect(()=>{v==="all_users"&&z&&z.role!==void 0&&p.setOrgWideRole(z.role)},[v,z,p]);const P=k,H=!1;return n?e.jsxs(e.Fragment,{children:[e.jsx(Pt,{shareType:v,onShareTypeChange:S,currentUser:n,options:[{value:"specific_users",label:"Specific Org User",description:"Choose individual users to share with",icon:e.jsx(Fe,{className:"mb-3 h-6 w-6 text-orange-500"})},{value:"all_users",label:"All Org Users",description:`Share with all ${(n==null?void 0:n.type)==="organization"?"organization":"tenant"} users`,icon:e.jsx(Ee,{className:"mb-3 h-6 w-6 text-indigo-500"}),disabled:!["POWER_USER","ADMIN","AUTHOR","SUPER_ADMIN"].includes(n.role??"")}]}),v==="specific_users"?e.jsxs("div",{className:"mt-3 space-y-2",children:[e.jsx(At,{value:d,onChange:m}),e.jsx(Mt,{selectedUsers:f,selectedUserObjects:C,onRemove:F,onRoleChange:D,getRoleOptions:Pe}),e.jsx(Lt,{usersToRemove:g,allUsers:R,onRemove:A}),e.jsx(Rt,{usersToUpdate:j,allUsers:R,onRemove:B,getRoleOptions:Pe}),e.jsx(Bt,{existingShares:y,isInitialLoading:P,isSearching:H,resource:t,onShare:()=>{},getRoleOptions:Pe,allUsers:R,currentUser:n,handleUserToggle:F,handleUserRoleChange:D,handleRemoveAccess:E,handleUpdateAccess:(Y,K,U)=>{p.addUserToUpdate({id:Y,currentRole:K,newRole:U})}})]}):e.jsx("div",{className:"mt-3",children:e.jsx(zt,{currentUser:n,currentShare:z,isSharing:l,isUpdating:o,isRemoving:c,onUpdateAccess:M,onRemoveAccess:O,allUsersToUpdate:x==="allOrgUsers"&&b!==((z==null?void 0:z.role)||"NONE")?{currentRole:(z==null?void 0:z.role)||"NONE",newRole:b}:null,allUsersToRemove:x==="allOrgUsers"&&(z==null?void 0:z.role)===void 0})})]}):null}function rt({resource:t,resourceType:a,currentUser:n,onShareTabTypeChange:r,isSharing:l=!1,isUpdating:o=!1,isRemoving:c=!1}){var V;const{searchQuery:i,debouncedSearchQuery:u,setSearchQuery:d}=s.useShareSearchWithDebounce(),m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate(),g=s.useShareCurrentMode(),j=s.useShareTenantWideRole(),x=s.useShareAllTenantsRole(),b=s.useShareSelectedTenant(),p=s.useShareManagementActions(),{data:v,isLoading:T}=Rn({enabled:(n==null?void 0:n.type)==="organization"}),[L,N]=I.useState((n==null?void 0:n.type)==="organization"?"all_tenants":"specific_tenant_users");I.useEffect(()=>{(n==null?void 0:n.type)==="tenant"?(p.setCurrentContext("tenant-dialog"),p.setCurrentMode("specificTenantUsers")):(p.setCurrentContext("tenant-tab"),p.setCurrentMode("allTenants"))},[p,n==null?void 0:n.type]);const w=$=>{var ne,q,ee,oe;N($);let Z;if($==="specific_tenant_users"?Z="specific_users":$==="all_tenant_users"||$==="all_tenants"?Z="all_users":Z="specific_users",r==null||r(Z),(n==null?void 0:n.type)==="tenant"?(p.setCurrentContext("tenant-dialog"),$==="specific_tenant_users"?p.setCurrentMode("specificTenantUsers"):$==="all_tenant_users"&&(p.setCurrentMode("allTenantUsers"),n!=null&&n.tenantId&&p.setSelectedTenant(n.tenantId))):(p.setCurrentContext("tenant-tab"),$==="specific_tenant_users"?p.setCurrentMode("specificTenantUsers"):$==="all_tenant_users"?p.setCurrentMode("allTenantUsers"):$==="all_tenants"&&p.setCurrentMode("allTenants")),$==="all_tenant_users"){const W=(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.tenantWide)==null?void 0:q[0];W&&W.role!==void 0&&p.setTenantWideRole(W.role)}else if($==="all_tenants"){const W=(oe=(ee=S==null?void 0:S.shares)==null?void 0:ee.allTenantsOnly)==null?void 0:oe[0];W&&W.role!==void 0&&p.setAllTenantsRole(W.role)}},y=$=>{p.setSelectedTenant($)},{allUsers:k,existingShares:S,isLoadingUsers:R,isErrorLoadingUsers:C,isLoadingShares:F,isErrorLoadingShares:D}=Be({debouncedSearchQuery:u,resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"tenant",tenantId:(n==null?void 0:n.type)==="tenant"?n.tenantId:b}),E=$=>{var ee,oe;const Z=m.some(W=>W.id===$),ne=h.includes($),q=(oe=(ee=S==null?void 0:S.shares)==null?void 0:ee.specificTenantUsers)==null?void 0:oe.some(W=>W.tenantUserId===$);Z?p.removeSelectedUser($):ne?p.removeUserFromRemove($):q||p.addSelectedUser({id:$,role:"VIEWER"})},A=($,Z)=>{p.updateSelectedUserRole($,Z)},B=$=>{p.addUserToRemove($),p.removeSelectedUser($)},M=$=>{p.removeUserFromRemove($)},O=$=>{p.removeUserFromUpdate($)},z=($,Z,ne)=>{p.addUserToUpdate({id:$,currentRole:Z,newRole:ne})},P=($,Z)=>{L==="all_tenant_users"?p.setTenantWideRole(Z):L==="all_tenants"&&p.setAllTenantsRole(Z)},H=()=>{L==="all_tenant_users"?p.setTenantWideRole("VIEWER"):L==="all_tenants"&&p.setAllTenantsRole("VIEWER")},Q=(()=>{var $,Z,ne,q;return g==="allTenants"?(Z=($=S==null?void 0:S.shares)==null?void 0:$.allTenantsOnly)==null?void 0:Z[0]:g==="allTenantUsers"?(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.tenantWide)==null?void 0:q[0]:null})();I.useEffect(()=>{var $,Z,ne,q;if(L==="all_tenant_users"){const ee=(Z=($=S==null?void 0:S.shares)==null?void 0:$.tenantWide)==null?void 0:Z[0];ee&&ee.role!==void 0&&p.setTenantWideRole(ee.role)}else if(L==="all_tenants"){const ee=(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.allTenantsOnly)==null?void 0:q[0];ee&&ee.role!==void 0&&p.setAllTenantsRole(ee.role)}},[L,S,p]);const Y=k.filter($=>m.some(Z=>Z.id===$.id)),K=R||F,U=C||D,_=()=>(n==null?void 0:n.type)==="tenant"||L==="all_tenants"?!0:b&&(L==="specific_tenant_users"||L==="all_tenant_users");return e.jsxs(e.Fragment,{children:[U&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsxs("div",{className:"text-center",children:[e.jsx(s.CircleAlert,{className:"mx-auto mb-2 h-8 w-8 text-destructive"}),e.jsx("p",{className:"mb-4 text-sm text-destructive",children:"Failed to load users or shares"}),e.jsx(s.Button,{variant:"outline",size:"sm",onClick:()=>window.location.reload(),children:"Retry"})]})}),!U&&n&&e.jsxs("div",{className:"max-h-[500px] space-y-4 overflow-y-auto",children:[e.jsx(Pt,{shareType:L,onShareTypeChange:w,currentUser:n,options:(n==null?void 0:n.type)==="tenant"?[{value:"all_tenant_users",label:"All Users",description:"Share with all users of this tenant",icon:e.jsx(Ee,{className:"mb-3 h-6 w-6 text-purple-500"})},{value:"specific_tenant_users",label:"Specific Users",description:"Share with specific tenant users",icon:e.jsx(Fe,{className:"mb-3 h-6 w-6 text-orange-500"})}]:[{value:"all_tenants",label:"All Tenants",description:"Share with all tenants and their users",icon:e.jsx(et,{className:"mb-3 h-6 w-6 text-purple-500"})},{value:"all_tenant_users",label:"Specific Tenant",description:"Share with all users of a specific tenant",icon:e.jsx(s.House,{className:"mb-3 h-6 w-6 text-blue-500"})},{value:"specific_tenant_users",label:"Specific Tenant User",description:"Share with users of a specific tenant",icon:e.jsx(Fe,{className:"mb-3 h-6 w-6 text-orange-500"})}]}),(n==null?void 0:n.type)==="organization"&&(L==="specific_tenant_users"||L==="all_tenant_users")&&e.jsxs("div",{className:"mt-4",children:[e.jsx(s.Label,{className:"mb-1 block text-sm font-medium",children:"Select Tenant"}),e.jsxs(s.Select,{value:b||"",onValueChange:y,disabled:T,children:[e.jsx(s.SelectTrigger,{className:"w-full",children:e.jsx(s.SelectValue,{placeholder:T?"Loading tenants...":"Select a tenant..."})}),e.jsx(s.SelectContent,{className:"z-[51]",children:(V=v==null?void 0:v.tenants)==null?void 0:V.map($=>e.jsx(s.SelectItem,{value:$.id,children:$.name},$.id))})]})]}),_()?e.jsx(e.Fragment,{children:L==="specific_tenant_users"?e.jsxs("div",{className:"space-y-4",children:[e.jsx(At,{value:i,onChange:d}),e.jsx(Mt,{selectedUsers:m,selectedUserObjects:Y,onRemove:$=>E($),onRoleChange:A,getRoleOptions:Pe}),e.jsx(Lt,{usersToRemove:h,allUsers:k,onRemove:M}),e.jsx(Rt,{usersToUpdate:f,allUsers:k,onRemove:O,getRoleOptions:Pe}),e.jsx(Bt,{existingShares:S,isInitialLoading:!!K,isSearching:!1,resource:t,onShare:()=>{},getRoleOptions:Pe,allUsers:k,currentUser:n,handleUserToggle:E,handleUserRoleChange:A,handleRemoveAccess:B,handleUpdateAccess:z})]}):L==="all_tenant_users"||L==="all_tenants"?e.jsx("div",{className:"mt-6",children:e.jsx(zt,{currentUser:n,currentShare:Q,isSharing:l,isUpdating:o,isRemoving:c,onUpdateAccess:P,onRemoveAccess:H,allUsersToUpdate:g==="allTenantUsers"&&((Q==null?void 0:Q.role)===void 0||j!==Q.role)||g==="allTenants"&&((Q==null?void 0:Q.role)===void 0||x!==Q.role)?{currentRole:(Q==null?void 0:Q.role)||"VIEWER",newRole:g==="allTenantUsers"?j:x}:null,allUsersToRemove:g==="allTenantUsers"&&(Q==null?void 0:Q.role)===void 0||g==="allTenants"&&(Q==null?void 0:Q.role)===void 0})}):null}):(n==null?void 0:n.type)==="organization"&&(L==="specific_tenant_users"||L==="all_tenant_users")&&e.jsx("div",{className:"mt-6 flex items-center justify-center py-8",children:e.jsxs("div",{className:"text-center",children:[e.jsx(et,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Please select a tenant to continue"})]})})]})]})}const Vt=()=>{const t=s.useShareCurrentContext(),a=s.useShareCurrentMode(),n=s.useShareSelectedUsers(),r=s.useShareUsersToRemove(),l=s.useShareUsersToUpdate(),o=s.useShareSelectedTenant(),c=s.useShareOrgWideRole(),i=s.useShareAllTenantsRole(),u=s.useShareTenantWideRole(),d=I.useMemo(()=>()=>s.buildShareData({currentContext:t,currentMode:a,selectedUsers:n,usersToRemove:r,usersToUpdate:l,selectedTenant:o,orgWideRole:c,allTenantsRole:i,tenantWideRole:u}),[t,a,n,r,l,o,c,i,u]),m=I.useMemo(()=>f=>s.validateShareData(f),[]),h=I.useMemo(()=>{if(!t||!a)return!1;switch(t){case"org-tab":return a==="specificOrgUsers"?n.length>0||r.length>0||l.length>0:!0;case"tenant-tab":if(a==="allTenantUsers"){if(!o)return!1}else if(a==="specificTenantUsers")return o?n.length>0||r.length>0||l.length>0:!1;return!0;case"tenant-dialog":return a==="specificTenantUsers"?n.length>0||r.length>0||l.length>0:!0}return!1},[t,a,n,r,l,o]);return{buildShareData:d,validateShareData:m,isCurrentStateValid:h,currentContext:t,currentMode:a,selectedUsers:n,usersToRemove:r,usersToUpdate:l,selectedTenant:o,orgWideRole:c,allTenantsRole:i,tenantWideRole:u}};function lt({resource:t,existingShares:a,isSharing:n,isRemoving:r,isUpdating:l,onShare:o,onClose:c,shareTabType:i,currentAllUsersShare:u,onRemoveAccess:d}){const m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate();s.useShareCurrentMode(),s.useShareCurrentContext();const g=s.useShareSelectedTenant();s.useShareSelectedTab();const j=s.useShareOrgWideRole(),x=s.useShareAllTenantsRole(),b=s.useShareTenantWideRole(),{buildShareData:p,validateShareData:v,isCurrentStateValid:T}=Vt(),L=n||r||l,N=()=>{var R,C,F,D;if(L)return"Updating...";if(i==="specific_users"){if(m.length===0&&h.length===0&&f.length===0)return"Select users to share with";const E=m.length+h.length+f.length;return E===0?"Select users to share with":m.length>0&&h.length>0?`Update access for ${E} user${E!==1?"s":""}`:h.length>0&&m.length===0&&f.length===0?`Remove access for ${h.length} user${h.length!==1?"s":""}`:m.length>0&&h.length===0&&f.length===0?`Share with ${m.length} user${m.length!==1?"s":""}`:f.length>0&&m.length===0&&h.length===0?`Update access for ${f.length} user${f.length!==1?"s":""}`:`Update access for ${E} user${E!==1?"s":""}`}else if(i==="all_users"){if(!u||u.role===void 0)return"Share with All Users";const E=u.role;return j===E?"Remove Access":"Update Access"}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0)return"Share with All Tenants";const A=E.role;return x===A?"Remove Access":"Update Access"}else if(i==="all_tenant_users"){const E=(D=(F=a==null?void 0:a.shares)==null?void 0:F.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0)return"Share with All Tenant Users";const A=E.role;return b===A?"Remove Access":"Update Access"}else if(i==="specific_tenant_users"){if(m.length===0&&h.length===0&&f.length===0)return"Select users to share with";const E=m.length+h.length+f.length;return E===0?"Select users to share with":m.length>0&&h.length>0?`Update access for ${E} user${E!==1?"s":""}`:h.length>0&&m.length===0&&f.length===0?`Remove access for ${h.length} user${h.length!==1?"s":""}`:m.length>0&&h.length===0&&f.length===0?`Share with ${m.length} user${m.length!==1?"s":""}`:f.length>0&&m.length===0&&h.length===0?`Update access for ${f.length} user${f.length!==1?"s":""}`:`Update access for ${E} user${E!==1?"s":""}`}return"Share"},w=()=>L||!t||i==="all_tenant_users"&&!g||i==="specific_tenant_users"&&!g?!0:!T,y=()=>{const R=p();R&&v(R)&&o(R)},k=()=>{var R,C,F,D;if(i==="all_users")if(!u||u.role===void 0){const E=p();E&&v(E)&&o(E)}else{const E=u.role;if(j===E)d==null||d();else{const B=p();if(B&&v(B)){const M={...B,updateAccess:!0};o(M)}}}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0){const A=p();A&&v(A)&&o(A)}else{const A=E.role;if(x===A)d==null||d();else{const M=p();if(M&&v(M)){const O={...M,updateAccess:!0};o(O)}}}}else if(i==="all_tenant_users"){const E=(D=(F=a==null?void 0:a.shares)==null?void 0:F.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0){const A=p();A&&v(A)&&o(A)}else{const A=E.role;if(b===A)d==null||d();else{const M=p();if(M&&v(M)){const O={...M,updateAccess:!0};o(O)}}}}},S=()=>{var R,C,F,D;if(i==="all_users"){if(!u||u.role===void 0)return"default";const E=u.role;return j===E?"destructive":"default"}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0)return"default";const A=E.role;return x===A?"destructive":"default"}else if(i==="all_tenant_users"){const E=(D=(F=a==null?void 0:a.shares)==null?void 0:F.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0)return"default";const A=E.role;return b===A?"destructive":"default"}return"default"};return e.jsxs(s.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",onClick:c,disabled:L,children:"Close"}),(i==="specific_users"||i==="specific_tenant_users")&&e.jsx(e.Fragment,{children:(m.length>0||h.length>0||f.length>0)&&e.jsxs(s.Button,{onClick:y,disabled:!t||L,variant:"default",children:[L?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!L&&N()]})}),(i==="all_users"||i==="all_tenants"||i==="all_tenant_users")&&e.jsxs(s.Button,{onClick:k,disabled:w(),variant:S(),children:[L?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(Ee,{className:"mr-2 h-4 w-4"}),!L&&N()]})]})}function or({resource:t,isSharing:a,isRemoving:n,isUpdating:r,onShare:l,onClose:o,shareTabType:c,currentAllUsersShare:i}){const u=s.useShareSelectedUsers(),d=s.useShareUsersToRemove(),m=s.useShareUsersToUpdate();s.useShareCurrentMode(),s.useShareCurrentContext();const h=s.useShareTenantWideRole();s.useShareSelectedTenant();const{buildShareData:f,validateShareData:g,isCurrentStateValid:j}=Vt(),x=a||n||r,b=()=>{if(x)return"Updating...";if(c==="specific_users"){if(u.length===0&&d.length===0&&m.length===0)return"Select users to share with";const N=u.length+d.length+m.length;return N===0?"Select users to share with":u.length>0&&d.length>0?`Update access for ${N} user${N!==1?"s":""}`:d.length>0&&u.length===0&&m.length===0?`Remove access for ${d.length} user${d.length!==1?"s":""}`:u.length>0&&d.length===0&&m.length===0?`Share with ${u.length} user${u.length!==1?"s":""}`:m.length>0&&u.length===0&&d.length===0?`Update access for ${m.length} user${m.length!==1?"s":""}`:`Update access for ${N} user${N!==1?"s":""}`}else if(c==="all_users"){if(!i||i.role==="NONE")return"Share with All Users";const N=i.role;return h===N?"Remove Access":"Update Access"}return"Share"},p=()=>x||!t?!0:!j,v=()=>{const N=f();N&&g(N)&&l(N)},T=()=>{if(!i||i.role==="NONE"){const N=f();N&&g(N)&&l(N)}else{const N=i.role;if(h===N){const y=f();if(y&&g(y)){const k={...y,removeAccess:!0};l(k)}}else{const y=f();if(y&&g(y)){const k={...y,updateAccess:!0};l(k)}}}},L=()=>!i||i.role==="NONE"?"default":"destructive";return e.jsxs(s.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",onClick:o,disabled:x,children:"Close"}),c==="specific_users"&&e.jsx(e.Fragment,{children:(u.length>0||d.length>0||m.length>0)&&e.jsxs(s.Button,{onClick:v,disabled:!t||x,variant:"default",children:[x?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!x&&b()]})}),c==="all_users"&&e.jsxs(s.Button,{onClick:T,disabled:p(),variant:L(),children:[x?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!x&&b()]})]})}function _t({resource:t,resourceType:a,isSharing:n,isRemoving:r,isUpdating:l,onClose:o,onShare:c,onRemoveAccess:i}){var y,k,S,R;const{currentUser:u}=Ie(),[d,m]=I.useState("specific_users"),[h,f]=I.useState("specific_users"),g=s.useShareManagementActions(),j=s.useShareSelectedTab(),x=s.useShareCurrentMode(),{existingShares:b}=Be({debouncedSearchQuery:"",resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"tenant"}),{existingShares:p}=Be({debouncedSearchQuery:"",resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"organization"}),v=(k=(y=b==null?void 0:b.shares)==null?void 0:y.tenantWide)==null?void 0:k[0],T=(R=(S=p==null?void 0:p.shares)==null?void 0:S.orgUsersOnly)==null?void 0:R[0],L=()=>{if(j==="org")return h;switch(x){case"specificTenantUsers":return"specific_tenant_users";case"allTenantUsers":return"all_tenant_users";case"allTenants":return"all_tenants";default:return"specific_tenant_users"}},N=I.useCallback(()=>{g.resetShareState(),o()},[g,o]),w=(u==null?void 0:u.type)==="organization";return e.jsx(s.Dialog,{open:!0,onOpenChange:N,children:e.jsxs(s.DialogContent,{className:"z-[51] flex max-h-[80vh] max-w-3xl flex-col",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(ts,{className:"h-5 w-5"}),' Share "',t==null?void 0:t.title,'"']})}),e.jsx(s.DialogDescription,{children:w?"Share this resource with org users or tenant users. As a super admin, you can share with all users.":"Share this resource with other users in your tenant."})]}),w?e.jsxs(s.Tabs,{value:j,onValueChange:C=>{const F=C;g.setSelectedTab(F),g.resetUserSelections()},className:"mb-4 min-h-0 flex-1",children:[e.jsxs(s.TabsList,{className:"mb-2 grid w-full grid-cols-2",children:[e.jsx(s.TabsTrigger,{value:"org",children:"Org Users"}),e.jsx(s.TabsTrigger,{value:"tenant",children:"Tenant Users"})]}),e.jsx(s.TabsContent,{value:"org",className:"min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(lr,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:f,isSharing:n,isUpdating:l,isRemoving:r})})}),e.jsx(s.TabsContent,{value:"tenant",className:"min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(rt,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:C=>m(C),isSharing:n,isUpdating:l,isRemoving:r})})})]}):e.jsx("div",{className:"mb-4 min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(rt,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:C=>m(C),isSharing:n,isUpdating:l,isRemoving:r})})}),e.jsx("div",{className:"mt-auto flex-shrink-0",children:w?j==="org"?e.jsx(lt,{resource:t,existingShares:p,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:h,currentAllUsersShare:T,onRemoveAccess:i}):e.jsx(lt,{resource:t,existingShares:b,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:L(),currentAllUsersShare:v,onRemoveAccess:i}):e.jsx(or,{resource:t,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:d,currentAllUsersShare:v,onRemoveAccess:i})})]})})}function ge(t,a,n){return{resourceType:t,resourceId:a,data:{shares:n}}}function Oe(t,a,n){return{resourceType:t,resourceId:a,data:{shares:n}}}function Ut(t,a,n){const{resourceType:r,resourceId:l,shareMutation:o,removeMutation:c,existingShares:i,resetUserSelections:u}=a;if(l)switch(t.context){case"org-tab":if(t.mode==="allOrgUsers"){const d=ge(r,l,[{scope:"org_users_only",role:t.orgWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificOrgUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h}=t;if(d&&d.length>0){const f=ge(r,l,d.map(g=>({scope:"specific_org_user",orgUserId:g.id,role:g.role})));o(f,{onSuccess:()=>{u()}})}if(m&&m.length>0){const f=Oe(r,l,m.map(g=>{var x,b;const j=(b=(x=i==null?void 0:i.shares)==null?void 0:x.specificOrgUsers)==null?void 0:b.find(p=>p.orgUserId===g);return{scope:"specific_org_user",orgUserId:g,role:(j==null?void 0:j.role)||"VIEWER"}}));c(f,{onSuccess:()=>{u()}})}h&&h.length>0&&h.forEach(f=>{const g=ge(r,l,[{scope:"specific_org_user",orgUserId:f.id,role:f.newRole}]);o(g,{onSuccess:()=>{u()}})})}break;case"tenant-tab":if(t.mode==="allTenants"){const d=ge(r,l,[{scope:"all_tenants_only",role:t.allTenantsRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="allTenantUsers"){const d=ge(r,l,[{scope:"all_tenant_users",tenantId:t.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificTenantUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h,tenantId:f}=t;if(m&&m.length>0){const g=Oe(r,l,m.map(j=>{var b,p;const x=(p=(b=i==null?void 0:i.shares)==null?void 0:b.specificTenantUsers)==null?void 0:p.find(v=>v.tenantUserId===j);return{scope:"specific_tenant_user",tenantUserId:j,tenantId:f,role:(x==null?void 0:x.role)||"VIEWER"}}));c(g,{onSuccess:()=>{u()}})}if(h&&h.length>0&&h.forEach(g=>{const j=ge(r,l,[{scope:"specific_tenant_user",tenantUserId:g.id,tenantId:f,role:g.newRole}]);o(j,{onSuccess:()=>{u()}})}),d&&d.length>0){const g=ge(r,l,d.map(j=>({scope:"specific_tenant_user",tenantUserId:j.id,tenantId:f,role:j.role})));o(g,{onSuccess:()=>{u()}})}}break;case"tenant-dialog":if(t.mode==="allTenantUsers")if(t.removeAccess){const d=Oe(r,l,[{scope:"all_tenant_users",role:"VIEWER"}]);c(d,{onSuccess:()=>{u()}})}else if(t.updateAccess){const d=ge(r,l,[{scope:"all_tenant_users",tenantId:n==null?void 0:n.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else{const d=ge(r,l,[{scope:"all_tenant_users",tenantId:n==null?void 0:n.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificTenantUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h}=t;if(d&&d.length>0){const f=ge(r,l,d.map(g=>({scope:"specific_tenant_user",tenantUserId:g.id,role:g.role})));o(f,{onSuccess:()=>{u()}})}if(m&&m.length>0){const f=Oe(r,l,m.map(g=>{var x,b;const j=(b=(x=i==null?void 0:i.shares)==null?void 0:x.specificTenantUsers)==null?void 0:b.find(p=>p.tenantUserId===g);return{scope:"specific_tenant_user",tenantUserId:g,role:(j==null?void 0:j.role)||"VIEWER"}}));c(f,{onSuccess:()=>{u()}})}h&&h.length>0&&h.forEach(f=>{const g=ge(r,l,[{scope:"specific_tenant_user",tenantUserId:f.id,role:f.newRole}]);o(g,{onSuccess:()=>{u()}})})}break}}function $t(t,a,n,r){var d,m,h,f,g,j;const{resourceType:l,resourceId:o,removeMutation:c,existingShares:i,resetUserSelections:u}=r;if(o)if(t.length>0){const x=Oe(l,o,t.map(b=>{var v,T;const p=(T=(v=i==null?void 0:i.shares)==null?void 0:v.specificTenantUsers)==null?void 0:T.find(L=>L.tenantUserId===b);return{scope:"specific_tenant_user",tenantUserId:b,role:(p==null?void 0:p.role)||"VIEWER"}}));c(x,{onSuccess:()=>{u()},onError:b=>{console.error("Remove access failed:",b)}})}else{const x=a==="tenant"&&n==="allTenants",b=a==="tenant"&&n==="allTenantUsers";if(x){const p=(m=(d=i==null?void 0:i.shares)==null?void 0:d.allTenantsOnly)==null?void 0:m[0];if(p){const v=Oe(l,o,[{scope:"all_tenants_only",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove all-tenants access failed:",T)}})}}else if(b){const p=(f=(h=i==null?void 0:i.shares)==null?void 0:h.tenantWide)==null?void 0:f[0];if(p){const v=Oe(l,o,[{scope:"all_tenant_users",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove all-tenant-users access failed:",T)}})}}else{const p=(j=(g=i==null?void 0:i.shares)==null?void 0:g.orgUsersOnly)==null?void 0:j[0];if(p){const v=Oe(l,o,[{scope:"org_users_only",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove org-wide access failed:",T)}})}}}}function ir(t,a,n){const r=s.useShareManagementActions(),l=s.useShareUsersToRemove(),o=s.useShareSelectedTab(),c=s.useShareCurrentMode(),{currentUser:i}=Ie(),{existingShares:u}=Be({debouncedSearchQuery:"",resourceId:t||"",resourceType:ae.DASHBOARD,userType:"tenant"}),d=I.useCallback(()=>{r.resetUserSelections()},[r]),m=I.useCallback(f=>{if(!t)return;const g={resourceType:ae.DASHBOARD,resourceId:t,shareMutation:a,removeMutation:n,existingShares:u,resetUserSelections:d};Ut(f,g,i)},[t,a,n,u,d,i]),h=I.useCallback(()=>{if(!t)return;const f={resourceType:ae.DASHBOARD,resourceId:t,removeMutation:n,existingShares:u,resetUserSelections:d};$t(l,o||"",c||"",f)},[t,a,n,u,d,l,o,c]);return{handleShareSubmit:m,handleRemoveAccess:h}}function cr(t,a,n){const{currentUser:r}=Ie(),l=s.useShareManagementActions(),o=s.useShareUsersToRemove(),c=s.useShareSelectedTab(),i=s.useShareCurrentMode(),{existingShares:u}=Be({debouncedSearchQuery:"",resourceId:t||"",resourceType:ae.VISUAL,userType:"tenant"}),d=I.useCallback(()=>{l.resetUserSelections()},[l]),m=I.useCallback(f=>{if(!t)return;const g={resourceType:ae.VISUAL,resourceId:t,shareMutation:a,removeMutation:n,existingShares:u,resetUserSelections:d};Ut(f,g,r)},[t,a,n,u,d,r]),h=I.useCallback(()=>{if(!t)return;const f={resourceType:ae.VISUAL,resourceId:t,removeMutation:n,existingShares:u,resetUserSelections:d};$t(o,c||"",i||"",f)},[t,a,n,u,d,o,c,i]);return{handleShareSubmit:m,handleRemoveAccess:h}}function dr(t){const a=t.toUpperCase().indexOf("WHERE"),n=t.toUpperCase().indexOf("GROUP BY"),r=t.toUpperCase().indexOf("LIMIT"),l=t.toUpperCase().indexOf("ORDER BY");let o=t.length;if(l!==-1&&(o=l),r!==-1&&r<o&&(o=r),a!==-1){const c=t.substring(0,a),i=t.substring(a);return`${c} {{ filters | where }} AND ${i.substring(6)}`}else if(n!==-1){const c=t.substring(0,n),i=t.substring(n);return`${c} {{ filters | where }} ${i}`}else{const c=t.substring(0,o),i=t.substring(o);return console.log("beforeClause",c),console.log("afterClause",i),i?`${c} {{ filters | where }} ${i}`:`${c.replace(/;$/,"")} {{ filters | where }}`}}function Ps(t){const[a,n]=I.useState(null),[r,l]=I.useState(null);return I.useEffect(()=>{if(!t||t.trim()===""){n(null),l(null);return}(async()=>{try{if(!t.startsWith("http://")&&!t.startsWith("https://"))throw new Error(`Invalid URL format: ${t}`);try{new URL(t)}catch{throw new Error(`Invalid URL: ${t}`)}const i=`${t.endsWith("/")?t:`${t}/`}index.js`;try{if(!(await fetch(i,{method:"HEAD"})).ok)throw new Error(`Module not found at ${i}`)}catch{}const u=await import(i);if(typeof u.useChartStore!="function")throw new Error("useChartStore is not a function");n(()=>u.useChartStore),l(null)}catch(c){const i=c instanceof Error?c.message:"Unknown error";console.error("Failed to load remote chart store:",i),l(i),n(null)}})()},[t]),a}function ur(t,a){if(t.length===0)return"";if(a){const n=t.find(r=>r.id===a);if(n){const r=n.tabTitle;if(r=="All__Header")return t[0].id;if(r&&r.endsWith("__Header")){const o=r.split("__")[0],c=t.find(i=>i.tabTitle===o);return c?c.id:t[0].id}return a}}return t[0].id}async function ot(t,a,n){if(!t||!a)throw new Error("Missing auth token or visual ID");const r=["resource-by-id","visual",a],l=n.getQueryData(r);if(l)return console.log("Using cached visual data for:",a),{data:l,fromCache:!0};console.log("Fetching visual data from network for:",a);const o=s.ue.loading("Loading visual...",{position:"top-center"});try{const c=await fetch(`https://semaphor.cloud/api/management/v1/visuals/${a}`,{headers:{Authorization:`Bearer ${t}`}});if(!c.ok)throw new Error("Failed to load visual");const i=await c.json();return n.setQueryData(r,i),s.ue.dismiss(o),{data:i,fromCache:!1}}catch(c){throw s.ue.dismiss(o),c}}function mr(t,a,n,r,l){const o=t.frameObject;a(o);const c=o.cards.find(i=>i.id===o.activeCardId);c&&n(c),r(!0),l(!0)}function hr(){var f;const{setCardSql:t}=s.useEditorActions(),a=s.useEditorStore(g=>g.frame),n=s.useEditorStore(g=>g.card),r=Ps(((f=n.customCardPreferences)==null?void 0:f.url)||""),l=s.useEditorStore(g=>g.selectedSchemaName),o=s.useEditorStore(g=>g.selectedDatamodelId),c=s.useEditorStore(g=>g.selectedDatabaseName),i=s.useEditorStore(g=>g.selectedTableName),u=s.useEditorStore(g=>g.selectedConnectionId),d=s.useEditorStore(g=>g.isShowingVisual),m=n.sql;return{getUpdatedFrame:I.useCallback(()=>{var p;let g=m;m&&!m.includes("{{")&&(g=dr(m),t(g));const j=(p=r==null?void 0:r.getState())==null?void 0:p.settings,x={...n,dataSource:n.dataSource||{mode:"directSource"},lastSelectedSchema:l,lastSelectedDatamodelId:o,lastSelectedDatabase:c,lastSelectedTable:i,connectionId:u,sql:g,customCfg:d?n.customCfg:null,...j&&{customCardPreferences:{...n.customCardPreferences,settings:j}}},b=a.cards.map(v=>v.id===n.id?x:v);return{...a,cards:b,activeCardId:ur(b,a.activeCardId)}},[n,a,d,l,o,c,i,u,t,r,m])}}function zs(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient(),n=s.useSelectedVisual(),{selectVisual:r}=s.useManagementActions(),{setFrame:l,setCard:o}=s.useEditorActions(),{setIsDashboardEditing:c,setIsVisualEditing:i,setSelectedFrameId:u,addFrame:d,setIsDashboardPanelOpen:m}=s.useDashboardActions(),h=s.useDashboardStore(x=>x.selectedSheetId),f=$n((n==null?void 0:n.id)||"",{enabled:!!(n!=null&&n.id)&&!!(t!=null&&t.accessToken)}),g=I.useCallback(async x=>{try{r(x);const{data:b,fromCache:p}=await ot((t==null?void 0:t.accessToken)||"",x.id,a);return mr(b,l,o,c,i),{success:!0,fromCache:p}}catch(b){return console.error("Error editing visual:",b),{success:!1,error:"Failed to load visual for editing"}}},[t==null?void 0:t.accessToken,a,r,l,o,c,i]),j=I.useCallback(async x=>{try{if(r(x),!h)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:b,fromCache:p}=await ot((t==null?void 0:t.accessToken)||"",x.id,a),v=b.frameObject;if(!v)return{success:!1,error:"Visual has no frame data"};const T={...v,id:s.v4()};return d(h,T,"end"),c(!0),u(T.id),m(!1),{success:!0,fromCache:p}}catch(b){return console.error("Error adding visual:",b),{success:!1,error:"Failed to add visual to dashboard"}}},[t==null?void 0:t.accessToken,a,r,h,d,c,u,m]);return{visual:f.data,isLoading:f.isLoading,isError:f.isError,error:f.error,handleEditLibraryVisual:g,handleAddLibraryVisual:j,getUpdatedFrame:hr().getUpdatedFrame,refetch:f.refetch}}function xr(){const[t,a]=I.useState(""),[n,r]=I.useState(!1),[l,o]=I.useState(""),[c,i]=I.useState(""),[u,d]=I.useState(!1),[m,h]=I.useState(null),[f,g]=I.useState(!1),[j,x]=I.useState(null),[b,p]=I.useState(null),{setIsDashboardEditing:v,setIsVisualEditing:T}=s.useDashboardActions(),{handleEditLibraryVisual:L,handleAddLibraryVisual:N}=zs(),{resources:w,isLoading:y,isError:k,createResource:S,updateResource:R,deleteResource:C,duplicateResource:F,shareResource:D,isCreating:E,isDeleting:A,removeResourceShares:B,isSharing:M,isRemovingShares:O,isUpdatingShares:z}=Yn(()=>{g(!1),x(null)},()=>{r(!1),o(""),i("")}),{handleShareSubmit:P,handleRemoveAccess:H}=cr((m==null?void 0:m.id)||null,D,B);Ie();const X=w.filter(J=>{var re,de;return((re=J==null?void 0:J.title)==null?void 0:re.toLowerCase().includes(t.toLowerCase()))||((de=J==null?void 0:J.description)==null?void 0:de.toLowerCase().includes(t.toLowerCase()))}),Q=J=>new Date(J).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Y=()=>{l.trim()&&S({title:l,description:c,isPrivate:!1})},K=J=>{x(J),g(!0)},U=()=>{j&&C(j.id)},{startUpdating:_,stopUpdating:V,isUpdating:$}=It(),Z=(J,re)=>{const de=re.title!==void 0?"title":"description";_(J,de),R({resourceId:J,data:re},{onSuccess:()=>{V(J,de)},onError:()=>{V(J,de)}})},ne=J=>{p(J),F(J,{onSettled:()=>p(null)})},q=J=>{L(J)},ee=J=>{N(J)},oe=J=>{const re=w.find(de=>de.id===J);re&&R({resourceId:J,data:{isPrivate:!re.isPrivate}})},W=J=>{h(J),d(!0)};return s.useShareUsersToRemove(),s.useShareManagementActions(),Be({debouncedSearchQuery:"",resourceId:(m==null?void 0:m.id)||"",resourceType:ae.VISUAL,userType:"tenant"}),y?e.jsx(Tt,{}):k?e.jsx(s.ScrollArea,{className:"w-full flex-1 pr-2",children:e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx("p",{className:"text-sm text-destructive",children:"Failed to load visuals"}),e.jsx(s.Button,{variant:"outline",size:"sm",className:"mt-2",onClick:()=>window.location.reload(),children:"Retry"})]})}):e.jsxs("div",{className:"mt-1 flex h-full flex-1 flex-col gap-3 px-4",children:[e.jsx("div",{className:"px-1",children:n?e.jsxs(s.Card,{className:"border-dashed p-4 pb-2",children:[e.jsx(s.CardHeader,{className:"px-0 pb-3 pt-0",children:e.jsx(s.CardTitle,{className:"text-sm",children:"New Visual"})}),e.jsxs(s.CardContent,{className:"space-y-3 px-0 pb-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"title",className:"text-xs",children:"Title"}),e.jsx(s.Input$1,{id:"title",placeholder:"Enter visual title...",value:l,onChange:J=>o(J.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"description",className:"text-xs",children:"Description (optional)"}),e.jsx(s.Input$1,{id:"description",placeholder:"Enter visual description...",value:c,onChange:J=>i(J.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"flex gap-2 pt-2",children:[e.jsx(s.Button,{onClick:Y,size:"sm",className:"h-7 text-xs",disabled:!l.trim()||E,children:E?"Creating...":"Create"}),e.jsx(s.Button,{onClick:()=>{r(!1),o(""),i("")},variant:"outline",size:"sm",className:"h-7 text-xs",disabled:E,children:"Cancel"})]})]})]}):e.jsxs(s.Button,{onClick:()=>r(!0),className:"h-8 w-full",size:"sm",disabled:E,children:[e.jsx(s.Plus,{className:"mr-2 h-3.5 w-3.5"}),E?"Creating...":"Create New Visual"]})}),e.jsx("div",{className:"space-y-2 px-1",children:e.jsx(s.Input$1,{id:"search",placeholder:"Search by title or description...",value:t,onChange:J=>a(J.target.value),className:"h-8"})}),e.jsx("div",{className:"mb-4 flex flex-1 flex-col",children:e.jsx("div",{className:"flex flex-1 basis-0 flex-col gap-2 overflow-y-auto p-1",children:X.length===0?e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx(s.ChartPie,{className:"mx-auto mb-2 h-8 w-8 opacity-50"}),e.jsx("p",{className:"text-sm",children:"No visuals found"})]}):X.map(J=>e.jsx(Kn,{visual:J,onAddVisual:ee,onEditVisual:q,onUpdateVisual:Z,onDeleteClick:K,onDuplicateVisual:ne,onTogglePrivacy:oe,onShareVisual:W,isDeleting:A,isDuplicating:b===J.id,isTitleUpdating:$(J.id,"title"),isDescriptionUpdating:$(J.id,"description"),formatDate:Q},J.id))})}),u&&m&&e.jsx(_t,{resource:m,resourceType:ae.VISUAL,onShare:P,isSharing:M,isRemoving:O,isUpdating:z,onClose:()=>{d(!1),h(null)},onRemoveAccess:H}),e.jsx(s.AlertDialog,{open:f,onOpenChange:J=>{!J&&A||(g(J),J||x(null))},children:e.jsxs(s.AlertDialogContent,{children:[e.jsxs(s.AlertDialogHeader,{children:[e.jsx(s.AlertDialogTitle,{children:"Delete Visual"}),e.jsxs(s.AlertDialogDescription,{children:['Are you sure you want to delete "',j==null?void 0:j.title,'"? This action cannot be undone.']})]}),e.jsxs(s.AlertDialogFooter,{children:[e.jsx(s.AlertDialogCancel,{disabled:A,children:"Cancel"}),e.jsx(s.AlertDialogAction,{onClick:J=>{J.preventDefault(),J.stopPropagation(),U()},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:A,children:A?"Deleting...":"Delete"})]})]})})]})}function pr({dashboard:t,isDeleting:a,isDuplicating:n,isTitleUpdating:r=!1,isDescriptionUpdating:l=!1,onLoadDashboard:o,onUpdateDashboard:c,onDeleteClick:i,onDuplicateDashboard:u,onShareDashboard:d,formatDate:m,onDashboardItemClick:h}){var w;const{selectDashboard:f}=s.useManagementActions(),g=s.useIsDashboardSelected(t.id),[j,x]=I.useState(!1),[b,p]=I.useState(!1),v=s.useDashboardStore(y=>y.actions.setIsDashboardPanelOpen);I.useEffect(()=>{n?(x(!0),p(!0)):b&&(x(!1),p(!1))},[n,b]);const T=()=>t.ownership.isOwner?t.ownership.status==="private"?e.jsx(bt,{className:"h-3 w-3 text-purple-500"}):e.jsx(Ee,{className:"h-3.5 w-3.5 text-blue-600"}):e.jsx(Fe,{className:"h-3.5 w-3.5 text-slate-500"}),L=()=>e.jsx(s.LayoutDashboard,{className:"h-4 w-4 text-slate-400"}),N=()=>{f(t),o(t.id),h==null||h(t.id)};return e.jsxs("div",{className:s.cn("group relative flex cursor-pointer items-start gap-3 px-4 py-3 dark:border-slate-800","cursor-pointer transition-colors duration-150 hover:bg-slate-50 dark:hover:bg-slate-900/50",t.ownership.isOwner&&"border-blue-200 dark:border-blue-800",g&&"rounded-md bg-slate-50 ring-1 ring-inset ring-border dark:bg-slate-900/50"),tabIndex:0,onClick:N,children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-slate-100 dark:bg-slate-800",children:L()})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(s.EditableText,{inputClassName:"text-sm font-medium text-slate-900 dark:text-slate-100",value:t.title,onSave:y=>c==null?void 0:c(t.id,{title:y}),isEditable:t.permissions.canEdit&&g,isPending:r,placeholder:"Untitled Dashboard",displayClassName:"line-clamp-1 max-w-[220px] text-sm font-medium text-slate-900 dark:text-slate-100"})}),e.jsx("div",{className:"shrink-0",children:T()})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx(s.EditableText,{inputClassName:"line-clamp-1 text-xs text-slate-500 dark:text-slate-400",value:t.description||"",onSave:y=>c==null?void 0:c(t.id,{description:y}),isEditable:t.permissions.canEdit&&g,isPending:l,placeholder:"No description",displayClassName:"mt-0.5 max-w-[250px] line-clamp-1 text-xs text-slate-500 dark:text-slate-400"})})]}),e.jsx("div",{className:"absolute right-3 top-2 flex items-center justify-between text-xs text-muted-foreground",children:e.jsx("div",{className:s.cn("flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100"),children:e.jsxs(s.DropdownMenu,{modal:!1,open:j,onOpenChange:x,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>y.stopPropagation(),children:e.jsx(s.Ellipsis,{className:"h-3 w-3"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"z-[51] w-40",children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.preventDefault(),y.stopPropagation(),u(t.id)},disabled:n,children:[n?e.jsx(s.LoaderCircle,{className:"mr-2 h-3 w-3 animate-spin"}):e.jsx(s.Copy,{className:"mr-2 h-3 w-3"}),n?"Duplicating...":"Duplicate"]}),t.permissions.canEdit&&e.jsx(e.Fragment,{children:e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),d(t)},children:[e.jsx(Ee,{className:"mr-2 h-3 w-3"}),"Share"]})}),t.permissions.canDelete&&e.jsxs(e.Fragment,{children:[e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),i(t),v(!1)},className:"text-destructive",disabled:a,children:[e.jsx(s.Trash2,{className:"mr-2 h-3 w-3"}),a?"Deleting...":"Delete"]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"space-y-1 px-2 py-2 text-xs text-slate-500 dark:text-slate-400",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fe,{className:"h-3 w-3"}),e.jsx("span",{children:((w=t.ownership.createdBy)==null?void 0:w.name)||"Unknown"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Calendar,{className:"h-3 w-3"}),e.jsx("span",{children:m(t.lastModified)})]})]})]})]})})})]})]},t.id)}function fr({onRetry:t}){return e.jsx(s.ScrollArea,{className:"w-full flex-1 pr-2",children:e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx("p",{className:"text-sm text-destructive",children:"Failed to load dashboards"}),e.jsx(s.Button,{variant:"outline",size:"sm",className:"mt-2",onClick:t,children:"Retry"})]})})}function gr(t){const[a,n]=I.useState(""),[r,l]=I.useState(!1),[o,c]=I.useState(""),[i,u]=I.useState(""),[d,m]=I.useState(!1),[h,f]=I.useState(null),[g,j]=I.useState(!1),[x,b]=I.useState(null),[p,v]=I.useState(null),T=s.useManagementStore(W=>W.lastSelectedDashboard),L=s.useManagementStore(W=>W.actions.selectDashboard);s.useShareManagementActions(),s.useShareUsersToRemove(),s.useShareSelectedTab(),s.useShareCurrentMode();const{resources:N,isLoading:w,isError:y,createResource:k,updateResource:S,deleteResource:R,duplicateResource:C,isCreating:F,isDeleting:D,isSharing:E,isRemovingShares:A,isUpdatingShares:B,shareResource:M,removeResourceShares:O}=qn(()=>{j(!1),b(null),T&&L(T)},()=>{l(!1),c(""),u("")}),{handleShareSubmit:z,handleRemoveAccess:P}=ir((h==null?void 0:h.id)||null,M,O),{currentUser:H}=Ie(),X=N.filter(W=>{var J,re;return((J=W==null?void 0:W.title)==null?void 0:J.toLowerCase().includes(a.toLowerCase()))||((re=W==null?void 0:W.description)==null?void 0:re.toLowerCase().includes(a.toLowerCase()))}),Q=W=>new Date(W).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Y=()=>{o.trim()&&k({title:o,description:i,isPrivate:!1})},K=W=>{var J;(J=t.onLoadDashboard)==null||J.call(t,W)},U=W=>{b(W),j(!0)},_=()=>{x&&R(x.id)},V=W=>{v(W),C(W,{onSettled:()=>v(null)})},{startUpdating:$,stopUpdating:Z,isUpdating:ne}=It(),q=(W,J)=>{const re=J.title!==void 0?"title":"description";$(W,re),S({resourceId:W,data:J},{onSuccess:()=>{Z(W,re)},onError:()=>{Z(W,re)}})},ee=W=>{const J=N.find(re=>re.id===W);J&&S({resourceId:W,data:{isPrivate:!J.isPrivate}})},oe=W=>{f(W),H==null||H.type,m(!0)};return Be({debouncedSearchQuery:"",resourceId:(h==null?void 0:h.id)||"",resourceType:ae.DASHBOARD,userType:"tenant"}),w?e.jsx(Tt,{}):y?e.jsx(fr,{onRetry:()=>window.location.reload()}):e.jsxs("div",{className:"mt-1 flex h-full flex-1 flex-col gap-3 px-4",children:[e.jsx("div",{className:"px-1",children:r?e.jsxs(s.Card,{className:"border-dashed p-4 pb-2",children:[e.jsx(s.CardHeader,{className:"px-0 pb-3 pt-0",children:e.jsx(s.CardTitle,{className:"text-sm",children:"New Dashboard"})}),e.jsxs(s.CardContent,{className:"space-y-3 px-0 pb-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"title",className:"text-xs",children:"Title"}),e.jsx(s.Input$1,{id:"title",placeholder:"Enter dashboard title...",value:o,onChange:W=>c(W.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"description",className:"text-xs",children:"Description (optional)"}),e.jsx(s.Input$1,{id:"description",placeholder:"Enter dashboard description...",value:i,onChange:W=>u(W.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"flex gap-2 pt-2",children:[e.jsx(s.Button,{onClick:Y,size:"sm",className:"h-7 text-xs",disabled:!o.trim()||F,children:F?"Creating...":"Create"}),e.jsx(s.Button,{onClick:()=>{l(!1),c(""),u("")},variant:"outline",size:"sm",className:"h-7 text-xs",disabled:F,children:"Cancel"})]})]})]}):e.jsxs(s.Button,{onClick:()=>l(!0),className:"h-8 w-full",size:"sm",disabled:F,children:[e.jsx(s.Plus,{className:"mr-2 h-3.5 w-3.5"}),F?"Creating...":"Create New Dashboard"]})}),e.jsx("div",{className:"space-y-2 px-1",children:e.jsx(s.Input$1,{id:"search",placeholder:"Search by title or description...",value:a,onChange:W=>n(W.target.value),className:"h-8"})}),e.jsx("div",{className:"mb-4 flex flex-1 flex-col",children:e.jsx("div",{className:"flex flex-1 basis-0 flex-col gap-2 overflow-y-auto p-1",children:X.length===0?e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx(qa,{className:"mx-auto mb-2 h-8 w-8 opacity-50"}),e.jsx("p",{className:"text-sm",children:"No dashboards found"})]}):X.map(W=>e.jsx(pr,{dashboard:W,isDeleting:D,isDuplicating:p===W.id,isTitleUpdating:ne(W.id,"title"),isDescriptionUpdating:ne(W.id,"description"),onLoadDashboard:K,onEditDashboard:t.onEditDashboard,onUpdateDashboard:q,onDeleteClick:U,onDuplicateDashboard:V,onTogglePrivacy:ee,onShareDashboard:oe,formatDate:Q,onDashboardItemClick:t.onDashboardItemClick},W.id))})}),d&&h&&e.jsx(_t,{resource:h,resourceType:ae.DASHBOARD,onShare:z,isSharing:E,isRemoving:A,isUpdating:B,onClose:()=>{m(!1),f(null)},onRemoveAccess:P}),e.jsx(s.AlertDialog,{open:g,onOpenChange:W=>{!W&&D||(j(W),W||b(null))},children:e.jsxs(s.AlertDialogContent,{children:[e.jsxs(s.AlertDialogHeader,{children:[e.jsx(s.AlertDialogTitle,{children:"Delete Dashboard"}),e.jsxs(s.AlertDialogDescription,{children:['Are you sure you want to delete "',x==null?void 0:x.title,'"? This action cannot be undone.']})]}),e.jsxs(s.AlertDialogFooter,{children:[e.jsx(s.AlertDialogCancel,{disabled:D,children:"Cancel"}),e.jsx(s.AlertDialogAction,{onClick:W=>{W.preventDefault(),W.stopPropagation(),_()},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:D,children:D?"Deleting...":"Delete"})]})]})})]})}function qt({isOpen:t,onClose:a,className:n,onDashboardItemClick:r}){s.useDashboardStore(g=>g.dashboard);const{setDashboard:l,addSheet:o}=s.useDashboardStore(g=>g.actions),{currentUser:c}=Ie(),i=c,[u,d]=s.useLocalStorageState("resource-management-active-tab","dashboards"),m=Ot(a,{enabled:t}),h=g=>{},f=g=>{console.log("Editing dashboard:",g)};return e.jsx(s.TooltipProvider$1,{children:e.jsxs("div",{ref:m,className:s.cn("absolute inset-y-0 left-0 z-[51] flex w-96 flex-col border-r bg-background shadow-lg transition-transform duration-300 ease-in-out",t?"translate-x-0":"hidden -translate-x-full",n),children:[e.jsxs("div",{className:"flex items-center justify-between p-4",children:[e.jsx("div",{className:"flex items-center gap-3",children:i&&e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-muted bg-muted/30 px-2 py-1",children:[e.jsxs(s.Avatar,{className:"h-5 w-5",children:[e.jsx(s.AvatarImage,{alt:i.name}),e.jsx(s.AvatarFallback,{className:"text-xs",children:i.name.charAt(0).toUpperCase()})]}),e.jsx("span",{className:"text-xs font-medium",children:i.name})]})}),e.jsx(s.TooltipContent,{side:"bottom",className:"ml-2 max-w-xs",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"font-medium",children:i.name}),e.jsx("div",{className:"text-xs text-muted-foreground",children:i.email}),i.role&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Role:"," ",s.toTitleCase(i.role.replace(/_/g," "))]}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["ID: ",i.id]})]})})]})})}),e.jsx(s.IconButton,{className:"h-6 p-1 text-muted-foreground hover:text-foreground",onClick:a,tooltip:"Hide Dashboard Management",children:e.jsx(s.X,{className:"h-3.5 w-3.5"})})]}),e.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:e.jsxs(s.Tabs,{value:u,onValueChange:d,className:"flex h-9 grow flex-col",children:[e.jsx("div",{className:"px-5",children:e.jsxs(s.TabsList,{className:"grid h-8 w-full grid-cols-2",children:[e.jsx(s.TabsTrigger,{value:"dashboards",className:"h-6",children:"Dashboards"}),e.jsx(s.TabsTrigger,{value:"visuals",className:"h-6",children:"Visuals"})]})}),e.jsx(s.TabsContent,{value:"dashboards",className:"flex-1",children:e.jsx(gr,{onLoadDashboard:h,onEditDashboard:f,onDashboardItemClick:r})}),e.jsx(s.TabsContent,{value:"visuals",className:"flex-1",children:e.jsx(xr,{})})]})})]})})}function jr(){var K,U;const{authToken:t,tokenProps:a}=s.useSemaphorContext();s.useDashboardStore(_=>_.theme);const n=s.useDashboardStore(_=>_.lenses),r=s.useDashboardStore(_=>_.selectedLensId),l=n==null?void 0:n.find(_=>_.id===r),o=s.useDashboardStore(_=>_.dashboard);s.useDashboardStore(_=>_.selectedSheetId);const c=s.useDashboardStore(_=>_.isDashboardEditing),i=s.useEditorStore(_=>_.card),u=s.useEditorStore(_=>_.selectedConnectionId),[d,m]=I.useState(!1),h=s.useDashboardStore(_=>_.isDashboardPanelOpen),f=s.useDashboardStore(_=>_.actions.setIsDashboardPanelOpen),g=s.useDashboardStore(_=>_.filterValues),j=s.useDashboardStore(_=>_.isVisualEditing),x=s.useManagementStore(_=>_.selectedDashboard),b=s.useManagementStore(_=>_.initialDashboard),p=x?(U=x==null?void 0:x.permissions)==null?void 0:U.canEdit:(K=b==null?void 0:b.permissions)==null?void 0:K.canEdit,v=s.useDashboardStore(_=>_.showFilters);s.useDashboardStore(_=>_.showDashboardJSON);const T=s.useDashboardStore(_=>_.onSaveFunction),L=s.useDashboardStore(_=>_.actions.setShowFilters),{addFrame:N,setSelectedFrameId:w}=s.useDashboardStore(_=>_.actions),{getSelectedSheet:y,setIsDashboardEditing:k,setShowDashboardJSON:S}=s.useDashboardStore(_=>_.actions),R=y(),{setInitialDashboard:C}=s.useManagementStore(_=>_.actions),{resources:F}=Bs(ae.DASHBOARD);I.useEffect(()=>{if(F&&F.length>0){const _=o==null?void 0:o.id;if(_){const V=F.find($=>$.id===_);V&&C(V)}}},[F,o==null?void 0:o.id,C]);const D=a.orgUserId||a.tenantId,E=c&&!j&&D&&p;function A(){var Z,ne;const _=i.dataSource;if(_)return _;const V=(ne=(Z=o.aiContext)==null?void 0:Z.selectedEntities)==null?void 0:ne[0],$=V==null?void 0:V.type;if(V)return{connectionId:V.connectionId,connectionType:V.connectionType,type:$,selectedEntities:[V]}}const B=()=>{if(!c||!R)return;const V={dataSource:A(),mode:"explorer",connectionId:u,id:s.v4(),title:"Title",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},type:"bar",sql:"",data:[]},$={id:s.v4(),cards:[V],activeCardId:V.id};N(R.id,$),w($.id)},M=()=>{k(!0)},[O,z]=I.useState(!1),P=Et(ae.DASHBOARD);async function H(){const _=xs(o);z(!0);const V={template:_};P.mutate({resourceId:_.id,data:V},{onSuccess:()=>{z(!1),s.ue.success("Dashboard saved!")},onError:()=>{z(!1),s.ue.error("Failed to save dashboard")}})}async function X(){if(m(!0),!r||!l)return;const _=xs(o),V=JSON.stringify(_),$={...l,template:V,filterValues:g};await Ls($,t==null?void 0:t.accessToken),s.ue.success("Lens saved"),T==null||T(_),m(!1)}if(j)return null;const Q=(l==null?void 0:l.name)||o.title,Y=a.orgUserId||a.tenantId&&a.endUserId&&a.endUserEmail;return e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b py-2 pl-3 pr-2",role:"dashboard-controls",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[Y&&e.jsx(s.IconButton,{"aria-label":"Manage Dashboards",tooltip:"Manage Dashboards",onClick:()=>f(!0),className:"h-7 p-2",children:e.jsx(Qa,{className:"h-4 w-4"})}),!j&&e.jsx(s.Label,{children:Q})]}),e.jsxs("div",{className:"flex gap-2",children:[!1,!j&&e.jsx(Cn,{}),!j&&e.jsx(kt,{}),c&&!j&&D&&e.jsx(vn,{}),!j&&D&&e.jsx(Nn,{}),c&&!j&&e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",size:"sm",disabled:!c,onClick:B,children:[e.jsx(s.Plus,{className:"mr-2 h-4 w-4"}),"Frame"]}),!j&&!c&&e.jsxs(s.Button,{variant:"outline",className:"h-7 p-2",onClick:M,size:"sm",children:[e.jsx(s.Pencil,{className:"mr-2 h-4 w-4"}),"Edit"]}),c&&!j&&e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",onClick:()=>{k(!1),S(!1)},children:[e.jsx(s.Cross2Icon,{className:"mr-2 h-4 w-4"}),"Close"]}),c&&!j&&D&&l&&e.jsxs(s.Button,{className:"h-7 p-2",variant:"secondary",disabled:d,onClick:X,size:"sm",children:[e.jsx(Ms,{className:"mr-2 h-4 w-4"}),"Save Lens"]}),E&&e.jsxs(s.Button,{className:"h-7 p-2",variant:"outline",disabled:O,onClick:H,size:"sm",children:[O?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(Ms,{className:"mr-2 h-4 w-4"}),O?"Saving...":"Save"]}),!v&&!j&&c&&e.jsx(s.Button,{className:"h-7 p-2",variant:"ghost",onClick:()=>L(!0),size:"sm",children:e.jsx(s.Filter,{className:"h-4 w-4"})}),!j&&c&&!1,!j&&!1,!j&&e.jsx(qt,{isOpen:h,onClose:()=>f(!1)})]})]})}function yr({name:t,items:a,value:n,onChange:r,isLoading:l,isError:o,refetch:c,className:i,icon:u,showNone:d=!1}){const m=pe.useRef(null),[h,f]=pe.useState(!1),[g,j]=pe.useState("100%"),x=d?[...a||[],{id:"none",name:"None"}]:a;pe.useLayoutEffect(()=>{m.current&&j(m.current.offsetWidth)},[]);function b(){var v;return l?"Loading...":o?"Error":n?(v=a==null?void 0:a.find(T=>T.id===n))==null?void 0:v.name:`Select ${t}`}function p(v,T){r(T),f(!1)}return e.jsxs(s.Popover,{open:h,onOpenChange:f,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{ref:m,variant:"outline",role:"combobox","aria-expanded":h,className:s.cn("flex h-9 w-full justify-between",i),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[u&&e.jsx("div",{className:"mr-2",children:u}),e.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:b()})]}),e.jsx(s.ChevronDown,{className:"size-4 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"w-full p-0",style:{minWidth:g},children:e.jsxs(s.Command,{children:[e.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[e.jsx(s.CommandInput,{className:"h-9",placeholder:"Search..."}),e.jsx(s.IconButton,{className:"h-7",onClick:c,children:e.jsx(vt,{className:s.cn("size-3.5 opacity-50",l&&"animate-spin")})})]}),e.jsxs(s.CommandList,{children:[e.jsxs(s.CommandEmpty,{children:["No ",t==null?void 0:t.toLowerCase()," found."]}),e.jsx(s.CommandGroup,{children:x==null?void 0:x.map(v=>e.jsx(s.CommandItem,{className:"overflow-x-auto",value:v.name,onSelect:T=>p(T,v.id),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Check,{className:s.cn("size-4",n===v.id?"opacity-100":"opacity-0")}),e.jsx("div",{title:v.name,children:v.name})]})},v.id))})]})]})})]})}function He({title:t,items:a,value:n,isLoading:r,isError:l,refetch:o,onChange:c,showNone:i=!1,className:u,disabled:d=!1,type:m="combobox"}){const h=r?"Loading...":l?"Error":n;function f(){if(t==="Connection")return e.jsx(cn,{className:"size-4"});if(t==="Database")return e.jsx(s.Database,{className:"size-4"});if(t==="Schema")return e.jsx(rn,{className:"size-4"});if(t==="Table")return e.jsx(s.Table2,{className:"size-4"});if(t==="Model")return e.jsx(La,{className:"size-4"})}function g(){return e.jsxs(s.Select,{disabled:d,value:h,onValueChange:c,children:[e.jsx(s.SelectTrigger,{className:s.cn("h-9 w-full border-muted focus:ring-1 focus:ring-offset-0",u),children:e.jsx(s.SelectValue,{placeholder:r?"Loading...":l?"Error":`Select ${t}`})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[r?e.jsx(s.SelectLabel,{children:"Loading..."}):e.jsxs(s.SelectLabel,{className:"flex items-center justify-between gap-2",children:[t,e.jsx(vt,{className:s.cn("mr-1 size-3 cursor-pointer text-muted-foreground hover:text-foreground",r&&"animate-spin"),onClick:o})]}),e.jsxs(e.Fragment,{children:[i&&e.jsx(s.SelectItem,{value:"none",children:"None"},"none"),a&&a.map((x,b)=>e.jsx(s.SelectItem,{value:x.id,children:x.name},b))]}),(r||l)&&e.jsx(s.SelectItem,{value:h,children:h})]})})]})}function j(){return e.jsx(yr,{icon:f(),items:a,value:h,onChange:c||(()=>{}),isLoading:r,isError:l,refetch:o,name:t,showNone:i})}return e.jsx(s.TooltipProvider$1,{delayDuration:0,children:e.jsx("div",{className:"flex items-center gap-2",children:m==="select"?g():j()})})}function br({column:t}){const[a,n]=I.useState(!1),r=s.useEditorStore(x=>x.selectedTableName),l=s.useEditorStore(x=>x.selectedSchemaName),o=s.useEditorStore(x=>x.selectedDatabaseName),c=s.useEditorStore(x=>x.selectedDatamodelId),i=s.useEditorStore(x=>x.sqlGen),{modelItems:u,connectionType:d}=s.useEditorAside(),m=s.useEditorStore(x=>x.actions.setSqlGen),h=s.useEditorStore(x=>x.actions.setCardSql),f=s.useEditorStore(x=>x.actions.setRunSql);function g(x,b){var L;const p=s.createSqlGenConfig(x,i,b),v=(L=u==null?void 0:u.find(N=>N.id===c))==null?void 0:L.name;m(p);const T=s.getSql(p,s.fmt(l||""),s.fmt(r),v||"",d,o||"");T&&(h(T),f(!0)),n(!1)}function j(){return e.jsxs("ul",{className:"text-xs",children:[e.jsx("li",{onClick:()=>g(t,"COUNT"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Count"}),e.jsx("li",{onClick:()=>g(t,"AVG"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Avg"}),e.jsx("li",{onClick:()=>g(t,"SUM"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Sum"}),e.jsx("li",{onClick:()=>g(t,"MAX"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Max"}),e.jsx("li",{onClick:()=>g(t,"MIN"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Min"})]})}return e.jsxs(s.HoverCard,{openDelay:0,open:a,onOpenChange:n,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.EllipsisVertical,{className:"invisible size-3.5 cursor-pointer text-foreground/40 group-hover:visible"})}),e.jsx(s.HoverCardContent,{align:"center",className:"w-20 rounded-md p-0 shadow-none",children:j()})]})}function vr({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function Ns({column:t,className:a}){return e.jsxs("div",{className:s.cn("flex min-h-8 grow items-center gap-2 px-3 py-[6px] text-sm",a),children:[e.jsx(vr,{dataType:t.data_type}),e.jsx("span",{children:t.column_name})]})}function Nr({id:t,children:a,type:n="column"}){const{attributes:r,listeners:l,setNodeRef:o,transform:c}=s.useDraggable({id:t,data:{type:n}}),i=c?{translate:s.CSS.Translate.toString(c),transform:s.CSS.Transform.toString(c)}:void 0;return e.jsx("div",{ref:o,style:i,...l,...r,children:a})}function Cr({onClick:t,column:a}){const n=s.useDndStore(m=>m.activeId),r=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.groupByColumns}),l=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.metricColumns}),o=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.filterColumns});function c(m){return i(m)||u(m)||d(m)}function i(m){return r==null?void 0:r.some(h=>h.name===m.column_name)}function u(m){return l==null?void 0:l.some(h=>h.name===m.column_name)}function d(m){return o==null?void 0:o.some(h=>h.name===m.column_name)}return e.jsxs("div",{onClick:()=>t(a),className:s.cn("group relative grow cursor-pointer overflow-x-hidden overflow-y-hidden border border-dashed border-background transition-colors hover:bg-muted/50",{"bg-muted":c(a)}),children:[n===a.column_name&&e.jsx(s.DragOverlay,{children:e.jsx(Ns,{column:a,className:"rounded-md border-2 border-dashed border-muted-foreground bg-muted shadow-md"})}),n===a.column_name&&e.jsx("div",{className:"absolute inset-0",children:n===a.column_name&&e.jsx(Ns,{column:a})}),e.jsx(Nr,{id:a.column_name,type:"column",children:e.jsx(Ns,{column:a})})]})}const Cs={id:"__placeholder__",role:"groupby",type:"string"},Ss={id:"__placeholder__",role:"groupby",type:"string"},ws={id:"__placeholder__",role:"metric",type:"number"},Ds={name:"Filter",id:"__placeholder__",role:"filter",type:"string"},Yt={id:"__placeholder__"},ze="droppable-group-by",Ve="droppable-metrics",_e="droppable-pivot-by",fs="sortable-group-by",Rs="sortable-metrics",gs="sortable-pivot-by",Os="droppable-filters",Fs="sortable-filters",Vs="sortable-order-by";function Sr(){const t=s.useDndStore(E=>E.insertIndex),a=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.groupByColumns)||[]}),n=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.metricColumns)||[]}),r=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.filterColumns)||[]}),l=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.orderBy)||[]}),o=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.pivotColumns)||[]}),{setInsertIndex:c,setActiveId:i,setPreviewGroupByColumns:u,setPreviewMetricColumns:d,setPreviewFilterColumns:m,setPreviewPivotColumns:h}=s.useDndActions(),{setGroupByColumns:f,setMetricColumns:g,setFilterColumns:j,setOrderByColumns:x,setPivotByColumns:b}=s.useEditorActions(),{columns:p}=s.useDataColumns(),{formattedTableName:v}=s.useEditorAside(),T=s.useSensors(s.useSensor(s.MouseSensor,{activationConstraint:{distance:1}})),L=E=>{var M;const{active:A,over:B}=E;if(((M=A.data.current)==null?void 0:M.type)==="column"&&B){const O=B.id,z=p.find(Q=>Q.column_name===A.id);if(!z)return;const P=s.isNumberDataType(z.data_type),H=s.isTextDataType(z.data_type),X=s.isDateDataType(z.data_type);if(H||X){if(a.some(Y=>Y.id===O)){const Y=a.findIndex(U=>U.id===O);c(Y);const K=a.filter(U=>U.id!==Cs.id);K.splice(Y,0,Cs),u(K)}else if(B.id===ze){c(a.length);const Y=[...a,Cs];u(Y),d(n),m(r)}}if(H||X){if(o.some(Y=>Y.id===O)){const Y=o.findIndex(U=>U.id===O);c(Y);const K=o.filter(U=>U.id!==Ss.id);K.splice(Y,0,Ss),h(K)}else if(B.id===_e){c(o.length);const Y=[...o,Ss];h(Y),u(a),d(n),m(r)}}if(P||H){if(n.some(Y=>Y.id===O)){console.log("isOverMetricSortable",O);const Y=n.findIndex(U=>U.id===O);c(Y);const K=n.filter(U=>U.id!==ws.id);K.splice(Y,0,ws),d(K)}else if(B.id===Ve){c(n.length);const Y=[...n,ws];d(Y),m(r),u(a),h(o)}}if(w(z)){if(r.some(Y=>Y.id===O)){const Y=r.findIndex(U=>U.id===O);c(Y);const K=r.filter(U=>U.id!==Ds.id);K.splice(Y,0,Ds),m(K)}else if(B.id===Os){c(r.length);const Y=[...r,Ds];m(Y),d(n),u(a),h(o)}}}else u(a),d(n),m(r),h(o)};function N(E){i(E.active.id),c(null),u(a),d(n),m(r),h(o)}function w(E){return!r.some(A=>A.name===E.column_name)}function y(E,A="SUM"){const{column_name:B,data_type:M}=E,O=[...n],z=t!==null?t:n.length,P={...E,id:Ce(B),name:B,label:as(B,A),type:M,role:"metric",aggregate:A};O.splice(z,0,P),g(O)}function k(E){const A=s.isTextDataType(E.data_type);s.isDateDataType(E.data_type);const B=[...o],M=t!==null?t:o.length;let O;A?O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby"}:O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby",label:Qe(E.column_name,"month"),granularity:"month"},B.splice(M,0,O),b(B)}function S(E){const A=s.isTextDataType(E.data_type);s.isDateDataType(E.data_type);const B=[...a],M=t!==null?t:a.length;let O;A?O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby"}:O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby",label:Qe(E.column_name,"month"),granularity:"month"},B.splice(M,0,O),f(B)}function R(E){const A=[...r],B=t!==null?t:r.length,M={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,sql:s.getDefaultFilterSql(E.data_type,v,s.fmt(E.column_name)),role:"filter"};A.splice(B,0,M),j(A)}function C(E){var O,z,P,H,X,Q,Y,K;const{active:A,over:B}=E,M=A.data.current;if((M==null?void 0:M.type)==="column"&&B){const U=p.find(Z=>Z.column_name===A.id);if(!U)return;const _=s.isNumberDataType(U.data_type),V=s.isTextDataType(U.data_type),$=s.isDateDataType(U.data_type);(V||$)&&(B.id===ze||((O=B.data.current)==null?void 0:O.type)===fs)&&S(U),(V||$)&&(B.id===_e||((z=B.data.current)==null?void 0:z.type)===gs)?k(U):(_||V)&&(B.id===Ve||((P=B.data.current)==null?void 0:P.type)===Rs)?(_&&y(U),V&&y(U,"COUNT")):w(U)&&(B.id===Os||((H=B.data.current)==null?void 0:H.type)===Fs)&&R(U)}if(B&&((X=B.data.current)==null?void 0:X.type)===fs&&a.some(U=>U.id===A.id)){const U=a.findIndex(V=>V.id===A.id),_=a.findIndex(V=>V.id===B.id);if(U!==-1&&_!==-1&&U!==_){const V=[...a],[$]=V.splice(U,1);V.splice(_,0,$),f(V)}}if(B&&((Q=B.data.current)==null?void 0:Q.type)===gs&&o.some(U=>U.id===A.id)){const U=o.findIndex(V=>V.id===A.id),_=o.findIndex(V=>V.id===B.id);if(U!==-1&&_!==-1&&U!==_){const V=[...o],[$]=V.splice(U,1);V.splice(_,0,$),b(V)}}if(B&&((Y=B.data.current)==null?void 0:Y.type)===Rs&&n.some(U=>U.id===A.id)){const U=n.findIndex(V=>V.id===A.id),_=n.findIndex(V=>V.id===B.id);if(U!==-1&&_!==-1&&U!==_){const V=[...n],[$]=V.splice(U,1);V.splice(_,0,$),g(V)}}if(B&&((K=B.data.current)==null?void 0:K.type)===Fs&&r.some(U=>U.id===A.id)){const U=r.findIndex(V=>V.id===A.id),_=r.findIndex(V=>V.id===B.id);if(U!==-1&&_!==-1&&U!==_){const V=[...r],[$]=V.splice(U,1);V.splice(_,0,$),j(V)}}F(E),i(null),c(null),u(a),d(n),m(r),h(o)}function F(E){const{active:A,over:B}=E,M=A.data.current;if((M==null?void 0:M.type)===Vs&&B){const O=l.findIndex(P=>Xe(P.columnId)===A.id),z=l.findIndex(P=>Xe(P.columnId)===B.id);if(O!==-1&&z!==-1&&O!==z){const P=[...l],[H]=P.splice(O,1);P.splice(z,0,H),x(P)}}}function D(){i(null),c(null),u(a),d(n),m(r)}return{handleDragOver:L,handleDragEnd:C,handleDragStart:N,handleDragCancel:D,sensors:T}}function Ce(t){return`${t}-${s.v4()}`}function as(t,a){const n=s.toTitleCase(t.replace(/_/g," "));switch(a){case"SUM":return`Sum of ${n}`;case"COUNT":return`Count of ${n}`;case"DISTINCT":return`Unique ${n}`;case"AVG":return`Average of ${n}`;case"MIN":return`Min of ${n}`;case"MAX":return`Max of ${n}`;default:return n}}function Xe(t){return`${Vs}-${t}`}function Qe(t,a){const n=s.toTitleCase(t.replace(/_/g," "));switch(a){case"day":return`Date of ${n}`;case"week":return`Week of ${n}`;case"month":return`Month of ${n}`;case"year":return`Year of ${n}`;default:return n}}function wr({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function Dr({schemaName:t,tableName:a,columns:n,status:r}){const[l,o]=I.useState(""),[c,i]=I.useState("all"),u=s.useEditorStore(O=>O.sqlGen),d=s.useEditorStore(O=>O.isDevMode);s.useEditorStore(O=>O.selectedConnectionId);const m=s.useEditorStore(O=>{var z,P;return(P=(z=O.card)==null?void 0:z.queryConfig)==null?void 0:P.metricColumns});s.useEditorStore(O=>{var z,P;return(P=(z=O.card)==null?void 0:z.queryConfig)==null?void 0:P.groupByColumns});const h=s.useEditorStore(O=>O.selectedDatabaseName);s.useEditorStore(O=>O.selectedSchemaName),s.useEditorStore(O=>O.selectedTableName);const f=s.useEditorStore(O=>O.selectedDatamodelId);s.useDashboardStore(O=>O.dashboard.aiScopeTables);const{addToAIScope:g,removeFromAIScope:j}=s.useDashboardActions(),{addColumnToMetricColumns:x,addColumnToGroupBy:b,setCardSql:p,setRunSql:v,setSqlGen:T,setIsShowingVisual:L}=s.useEditorActions(),{connectionType:N,modelItems:w,selectedDatamodelName:y}=s.useEditorAside();function k(O){var z;if(d){const P=s.createSqlGenConfig(O,u);T(P);const H=(z=w==null?void 0:w.find(Q=>Q.id===f))==null?void 0:z.name,X=s.getSql(P,s.fmt(t),s.fmt(a),H||"",N,h||"");X&&(p(X),v(!0))}if(!d){if(s.isTextDataType(O.data_type))if(m&&m.length>0){const P={...O,role:"groupby",id:Ce(O.column_name),name:O.column_name,type:O.data_type};b(P)}else{const P={...O,role:"metric",id:Ce(O.column_name),name:O.column_name,label:as(O.column_name,"COUNT"),type:O.data_type,aggregate:"COUNT"};x(P)}if(s.isDateDataType(O.data_type)){const P={...O,role:"groupby",id:Ce(O.column_name),name:O.column_name,type:O.data_type,label:Qe(O.column_name,"month"),granularity:"month"};b(P)}if(s.isNumberDataType(O.data_type)){const P={...O,role:"metric",id:Ce(O.column_name),name:O.column_name,label:as(O.column_name,"SUM"),type:O.data_type,aggregate:"SUM"};x(P)}}}function S(){const O=s.getFormattedTableNameForQuery({schemaName:t,tableName:a,modelName:y,connectionType:N,databaseName:h||""});L(!1);const z=N==="MSSQL"?`SELECT top 10 * FROM ${O}`:`SELECT * FROM ${O} LIMIT 10`;p(z),v(!0)}function R(){const O=s.getFormattedTableNameForQuery({schemaName:t,tableName:a,modelName:y,connectionType:N,databaseName:h||""});p(`SELECT COUNT(*) as count FROM ${O}`),v(!0)}const C=(n==null?void 0:n.filter(O=>O.column_name.toLowerCase().includes(l.toLowerCase())))||[],F=O=>s.isNumberDataType(O.data_type)?"number":"text",D=c==="all"?C:C.filter(O=>F(O)===c),E=C.filter(O=>F(O)==="text").length,A=C.filter(O=>F(O)==="number").length;function B(O){return d?e.jsxs("div",{className:"group flex cursor-pointer items-center justify-between border border-dashed border-background px-2 py-[6px] text-sm transition-colors hover:bg-muted/50",onClick:()=>k(O),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(wr,{dataType:O.data_type}),e.jsx("span",{children:O.column_name})]}),e.jsx("div",{onClick:z=>z.stopPropagation(),className:"flex items-center justify-end",children:s.isNumberDataType(O.data_type)&&e.jsx(br,{column:O})})]}):e.jsx(Cr,{onClick:k,column:O})}function M(){return e.jsxs("div",{className:"flex grow gap-2",children:[e.jsxs(s.Button,{disabled:r!=="Success",onClick:S,size:"sm",variant:"secondary",className:"grow",children:[r!=="Success"?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin text-foreground/50"}):e.jsx(sn,{className:"mr-2 size-4"}),"Top 10"]}),e.jsxs(s.Button,{disabled:r!=="Success",onClick:R,size:"sm",variant:"secondary",className:"grow",children:[r!=="Success"?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin text-foreground/50"}):e.jsx(Nt,{className:"mr-2 size-4"}),"Count"]})]})}return r!=="Success"?e.jsx("div",{className:"flex grow flex-col justify-start gap-2 px-4",children:Array.from({length:3}).map((O,z)=>e.jsx(s.Skeleton,{className:"h-8 w-full"},z))}):e.jsxs("div",{className:"flex grow flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-3 px-4",children:[d&&e.jsx("div",{className:"flex items-center justify-center gap-2",children:M()}),n&&n.length>0&&e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:l,onChange:O=>o(O.target.value)})]}),C.length>0&&e.jsx(s.Tabs,{defaultValue:"all",value:c,onValueChange:O=>i(O),children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-3",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:C.length})]}),e.jsxs(s.TabsTrigger,{value:"text",className:"text-xs",children:[e.jsx(s.Layers,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:E})]}),e.jsxs(s.TabsTrigger,{value:"number",className:"text-xs",children:[e.jsx(s.ChartColumn,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:A})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"flex-1 basis-0 overflow-y-auto px-4 pt-3",children:[D.length===0&&l&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:['No fields found matching "',l,'"']}),D.length===0&&!l&&c!=="all"&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:["No ",c," fields found"]}),e.jsx("div",{className:"flex flex-col gap-1",children:D==null?void 0:D.map(O=>e.jsx("div",{children:B(O)},O.column_name))}),e.jsx(s.ScrollBar,{orientation:"vertical"}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function Gt({ColumnsComponent:t,type:a}){var se;const[n,r]=I.useState(!1),l=s.useEditorStore(te=>te.card),o=s.useEditorStore(te=>te.selectedConnectionId),c=s.useDashboardStore(te=>te.showFilters),i=s.useEditorStore(te=>te.selectedDatamodelId),u=s.useEditorStore(te=>te.selectedDatabaseName),d=s.useEditorStore(te=>te.selectedSchemaName),m=s.useEditorStore(te=>te.selectedTableName),h=s.useEditorStore(te=>te.isDevMode),{setSelectedTableName:f,setIsDevMode:g,setCardSql:j}=s.useEditorActions(),{connectionItems:x,modelItems:b,schemaItems:p,databaseItems:v,tableItems:T,columns:L,isConnectionsLoading:N,isModelsLoading:w,isConnectionsError:y,isModelsError:k,isDatabasesLoadingOrFetching:S,isDatabaseError:R,isSchemaLoadingOrFetching:C,isSchemaError:F,isColumnsError:D,isColumnsLoadingOrFetching:E,isTableLoadingOrFetching:A,isTableError:B,connectionType:M,isNonDbConnection:O,refetchDatabases:z,refetchModels:P,refetchSchemas:H,refetchTables:X,refetchColumns:Q,refetchConnections:Y,handleConnectionChange:K,handleDatabaseChange:U,handleSchemaChange:_,handleDatamodelChange:V,handleTableChange:$,tableName:Z,schemaName:ne}=s.useEditorAside(),{data:q,refetch:ee}=s.useDashboardCardQuery(l);function oe(){return t?t(ne,Z,L):e.jsx(Dr,{schemaName:ne,tableName:Z,columns:L,status:E?"Loading...":D?"Error":"Success"})}function W(){window.location.href="mailto:support@semaphor.cloud?subject=Help&body=I need help with..."}function J(te){te===!0?q&&(j(q.userSql),setTimeout(()=>{ee()},100)):j(""),g(te)}function re(){if(!o||M==="S3"||M==="API")return null;if(!i||i==="none")return e.jsx(He,{refetch:z,showNone:!0,onChange:U,isError:R,isLoading:S,items:v,value:u||"",title:"Database",type:"combobox"})}function de(){if(o&&!O&&(!u||u==="none")&&(!i||i==="none"))return e.jsxs("div",{className:"grid grid-cols-3",children:[e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Separator,{})}),e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Label,{children:"OR"})}),e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Separator,{})})]})}function Se(){if(!o||M==="S3"||M==="API")return null;if(!u||u==="none")return e.jsx(He,{refetch:P,showNone:!0,onChange:V,isError:k,isLoading:w,items:b,value:i||"",title:"Model",type:"combobox"})}function be(){return!o||M==="S3"||M==="API"||!u||u==="none"?null:e.jsx(He,{refetch:H,onChange:_,isError:F,isLoading:C,items:p,value:d||"",title:"Schema",type:"combobox"})}function fe(){function te(){let ue=!1;return M==="API"?(ue=!1,ue):((M==="S3"||o&&u&&u!=="none"&&d)&&(ue=!0),ue)}return te()?e.jsx(He,{refetch:X,onChange:$,isError:B,items:T,isLoading:A,value:m||"",title:"Table",type:"combobox"}):null}return e.jsxs("aside",{className:s.cn("flex h-full min-w-[310px] max-w-[310px] flex-col justify-between rounded-none",{"border-r-[1px]":!c}),children:[e.jsxs("section",{className:s.cn("px-4",{"px-4 pb-0 pt-4":n,"px-4 py-4":!n}),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("h2",{className:"text-brand-100 font-semibold",children:"Direct Source"}),e.jsx(s.Button,{onClick:()=>r(!n),size:"sm",variant:"ghost",className:"h-6 w-6 p-0",children:n?e.jsx(s.ChevronDown,{className:"h-4 w-4"}):e.jsx(s.ChevronUp,{className:"h-4 w-4"})})]}),!n&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(He,{refetch:Y,items:x,title:"Connection",value:o||"",onChange:K,isLoading:N,isError:y,type:"combobox",connectionTooltip:((se=x==null?void 0:x.find(te=>te.id===o))==null?void 0:se.type)||""}),re(),de(),Se(),be(),fe()]})]}),oe(),e.jsx("div",{className:"flex items-center justify-between gap-2 px-6 py-4",children:a==="main"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Switch,{className:"data-[state=checked]:bg-muted-foreground/80",checked:h,onCheckedChange:J,id:"dev-mode"}),e.jsx(s.Label,{htmlFor:"dev-mode",children:"Advanced Mode"})]}),e.jsxs(s.Button,{onClick:W,size:"sm",variant:"secondary",className:"group flex items-center gap-2 rounded-full",children:[e.jsx(an,{className:"size-4"}),e.jsx("span",{className:"hidden group-hover:block",children:"Help"})]})]})})]})}function Kt({error:t,className:a="",textClassName:n="",copyButtonClassName:r=""}){const[l,o]=I.useState(!1),c=I.useRef(null),i=I.useRef(!1);function u(){t&&!i.current&&navigator.clipboard.writeText(t)}function d(f){(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),u())}function m(){const f=window.getSelection();if(f&&f.toString().trim()!==""){const g=f.toString();navigator.clipboard.writeText(g),o(!0),i.current=!0,setTimeout(()=>{o(!1),i.current=!1},1e3)}else i.current=!1}function h(){o(!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 ${a}`,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 ${n}`,onClick:u,onKeyDown:d,onMouseUp:m,onMouseDown:h,tabIndex:0,role:"button","aria-label":"Click to copy error message or select text to copy",children:t}),l&&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 Ht({sql:t,error:a,onDebugWithAssistant:n}){const r=s.useEditorStore(u=>u.isDevMode),{setIsDevMode:l,setCardSql:o,setRunSql:c}=s.useEditorActions();function i(){l(!r),o(t),setTimeout(()=>{c(!0)},100)}return e.jsx("div",{className:"flex justify-between space-x-4",children:e.jsxs("div",{className:"flex grow flex-col space-y-2",children:[e.jsxs(s.ScrollArea,{className:"max-h-[250px] min-h-0 overflow-scroll text-xs leading-relaxed text-foreground/80",children:[a&&e.jsx(Kt,{error:a}),t&&e.jsx("div",{className:"flex flex-col space-y-1.5",children:e.jsx("div",{className:"rounded-md",children:e.jsx(s.CodeHighlighter,{code:t,language:"sql"})})})]}),!r&&t&&e.jsxs(s.Button,{onClick:i,variant:"secondary",size:"sm",children:[e.jsx(_a,{className:"mr-2 h-4 w-4"}),"View in SQL Editor"]}),a&&n&&e.jsxs(s.Button,{onClick:n,size:"sm",variant:"secondary",children:[e.jsx(Ha,{className:"mr-2 h-4 w-4"}),"Debug with Assistant"]})]})})}function Qt({sql:t,error:a,onDebugWithAssistant:n}){return e.jsxs(s.HoverCard,{openDelay:a?0:500,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"link",className:"h-5 p-0",children:a?e.jsx(jt,{className:"h-4 w-4 text-red-500"}):e.jsx(s.Info,{className:"h-4 w-4 text-muted-foreground"})})}),e.jsx(s.HoverCardContent,{align:"start",className:"flex w-[600px]",children:e.jsx(Ht,{sql:t,error:a,onDebugWithAssistant:n})})]})}function kr(t){return s.GenIcon({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"},child:[]}]})(t)}function Wt(t){const{theme:a}=s.useTheme(),n=s.useDashboardStore(x=>x.theme),r=s.useEditorStore(x=>x.frame),l=s.useEditorStore(x=>x.card),o=s.useEditorStore(x=>x.activeTabCardId),c=s.Le(),{refetch:i}=s.useDashboardCardQuery(l),{updateCardTab:u,setRunSql:d}=s.useEditorActions(),m=I.useRef(),h=I.useRef({}),f=r.cards.find(x=>x.id===o),g=I.useCallback(()=>{let x="";return t==="python"&&(x=(f==null?void 0:f.python)||s.PYTHON_DEFAULT_CODE),t==="sql"&&(x=(f==null?void 0:f.sql)||""),x},[t,f]);I.useEffect(()=>{if(o&&l.id&&l.id!==o){if(m.current&&c){const x=m.current.getModel();x&&(h.current[l.id]=x);let b=h.current[o];if(!b){const p=g();b=c.editor.createModel(p,t),h.current[o]=b}m.current.setModel(b)}u(o,l),d(!0)}},[o,l,u,c,d,t,g]),I.useEffect(()=>{if(!c)return;const x=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",b=n==="system"?x:n;c.editor.defineTheme("default",{base:b==="light"?"vs":"vs-dark",inherit:!0,rules:[],colors:{"editor.background":b==="light"?"#ffffff":s.hslStringToHex("240 10% 10%")}}),c.editor.setTheme("default")},[a,n,c]),I.useEffect(()=>{const x=m.current;x&&c&&l&&x.addCommand(c.KeyMod.Shift|c.KeyCode.Enter,function(){return i(),!1})},[c,i,l]);function j(x,b){if(m.current=x,!h.current[l.id]){const p=x.getModel(),v=g();h.current[l.id]=p||(b==null?void 0:b.editor.createModel(v,t))||x.getModel()}x.setModel(h.current[l.id])}return{handleEditorDidMount:j}}function Tr(){const t=s.useEditorStore(c=>c.card.sql),a=s.useEditorStore(c=>c.sqlGen),{setCardSql:n,setSqlGen:r}=s.useEditorActions(),{handleEditorDidMount:l}=Wt("sql");function o(c){n(c),s.isObjectEmpty(a)||r({})}return e.jsxs("div",{className:"relative h-full w-full",children:[!t&&e.jsx("div",{className:"pointer-events-none absolute left-[65px] top-3 z-10 font-mono text-sm text-muted-foreground",children:"Write your SQL here"}),e.jsx(s.Ft,{theme:"default",className:"pt-3",onChange:o,value:t||"",options:{minimap:{enabled:!1},wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:13,renderLineHighlight:"none"},defaultLanguage:"sql",onMount:l})]})}function Er(){const t=s.useEditorStore(l=>l.card.python),{setCardPython:a}=s.useEditorActions(),{handleEditorDidMount:n}=Wt("python");function r(l){a(l)}return e.jsx(s.Ft,{className:"pt-3",theme:"default",onChange:r,value:t||s.PYTHON_DEFAULT_CODE,options:{minimap:{enabled:!1},wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:13,renderLineHighlight:"none"},defaultLanguage:"python",onMount:n})}function Ir({jsonString:t}){return e.jsx(s.Ft,{theme:"default",defaultLanguage:"json",className:"mt-1 min-h-[220px]",value:t,options:{readOnly:!0,minimap:{enabled:!1},lineNumbers:"off",glyphMargin:!1,wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:12,renderLineHighlight:"none"}})}function _s({variant:t="outline"}){var c;const{setCardSql:a}=s.useEditorActions();s.useEditorStore(i=>i.frame);const n=s.useEditorStore(i=>i.card);Ps(((c=n.customCardPreferences)==null?void 0:c.url)||""),s.useEditorStore(i=>i.selectedSchemaName),s.useEditorStore(i=>i.selectedDatamodelId),s.useEditorStore(i=>i.selectedDatabaseName),s.useEditorStore(i=>i.selectedTableName),s.useEditorStore(i=>i.selectedConnectionId),s.useEditorStore(i=>i.isShowingVisual),n.sql;const r=s.useEditorStore(i=>i.onSave),{getUpdatedFrame:l}=zs();function o(){const i=l();r==null||r(i)}return e.jsxs(s.Button,{onClick:o,className:"h-8",size:"sm",variant:t,children:[e.jsx(s.Check,{className:"mr-2 size-4 font-bold"}),"Accept"]})}function Ar(){const t=s.useQueryClient(),[a,n]=I.useState(!1),r=s.useDashboardStore(d=>d.actions.setIsDashboardPanelOpen),{setIsVisualEditing:l}=s.useDashboardActions(),{getUpdatedFrame:o}=zs(),c=s.useSelectedVisual(),i=Gn(),u=()=>{const d=o();if(!(c!=null&&c.id)){s.ue.error("No visual selected");return}n(!0),i.mutate({visualId:c.id,data:{frameObject:d}},{onSuccess:()=>{n(!1),l(!1),r(!0),s.ue.success("Visual updated successfully"),t.invalidateQueries({queryKey:["resource-by-id","visual",c.id],exact:!0})},onError:()=>{n(!1),s.ue.error("Failed to update visual")}})};return e.jsxs(s.Button,{onClick:u,className:"h-8",size:"sm",children:[a&&e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-4 animate-spin font-bold"})," Saving"]}),!a&&e.jsxs(e.Fragment,{children:[e.jsx(Ms,{className:"mr-2 size-4 font-bold"}),"Save"]})]})}function Us(){const{setTempQueryData:t,setSqlGen:a}=s.useEditorActions(),n=s.useQueryClient(),r=s.useEditorStore(u=>u.tempQueryData),l=s.useEditorStore(u=>u.onClose),o=s.useEditorStore(u=>u.card),{queryKey:c}=s.useDashboardCardQuery(o);function i(){if(r){const{queryKey:u,queryData:d}=r;u&&d&&n.setQueryData(u,d)}a({}),l==null||l()}return e.jsxs(s.Button,{onClick:i,className:"h-8",size:"sm",variant:"outline",children:[e.jsx(s.X,{className:"mr-2 size-4"}),"Close"]})}function js(){const{setTempQueryData:t}=s.useEditorActions(),a=s.useQueryClient(),n=s.useEditorStore(b=>b.isDevMode),r=s.useEditorStore(b=>b.tempQueryData),l=s.useEditorStore(b=>b.card),{queryKey:o}=s.useDashboardCardQuery(l),{setCardSql:c,setSqlGen:i,setCardPython:u,setCardCustomCfg:d,setCardPreferences:m,updateDataSource:h,clearQueryConfig:f,setCardConfig:g,setCardType:j}=s.useEditorActions();function x(){const b=a.getQueryData(o);r!=null&&r.queryData||t({queryKey:o,queryData:b}),a.setQueryData(o,null),a.removeQueries({queryKey:o,exact:!0}),n&&h(s.EMPTY_DATA_SOURCE),c(""),i({}),f(),g(void 0),u(""),d(""),m({}),j("bar")}return e.jsxs(s.Button,{onClick:x,className:"h-8",size:"sm",variant:"secondary",children:[e.jsx(s.SquarePen,{className:"mr-2 size-4"}),"Clear"]})}function Mr(){const t=s.useQueryClient(),[a,n]=I.useState(!1),[r,l]=I.useState(!1);s.useEditorStore(P=>P.frame);const o=s.useEditorStore(P=>P.card);s.useEditorStore(P=>P.isShowingVisual),s.useEditorStore(P=>P.selectedConnectionId),s.useEditorStore(P=>P.tempQueryData),s.useEditorStore(P=>P.selectedDatabaseName),s.useEditorStore(P=>P.selectedDatamodelId),s.useEditorStore(P=>P.selectedSchemaName);const c=s.useEditorStore(P=>P.showAIDialog);s.useEditorStore(P=>P.selectedTableName);const i=s.useEditorStore(P=>{var H;return(H=P==null?void 0:P.card)==null?void 0:H.sql}),u=s.useEditorStore(P=>{var H;return(H=P==null?void 0:P.card)==null?void 0:H.python}),{sheetFilterValues:d}=s.useSheetFilterValues(),{setCardCustomCfg:m,setQueryResultColumns:h,setCardSql:f,setTempQueryData:g,setPythonStdOut:j,setCardPreferences:x,setCardType:b,setCardPython:p,runAssistant:v,setShowAIDialog:T}=s.useEditorActions();s.useEditorStore(P=>P.onSave),s.useEditorStore(P=>P.onClose),s.useEditorStore(P=>P.actions.setSqlGen);const L=s.useEditorStore(P=>P.runSql),N=s.useEditorStore(P=>P.actions.setRunSql),w=s.useEditorStore(P=>P.actions.setIsSqlRunning),{data:y,isLoading:k,isFetching:S,isSuccess:R,isError:C,error:F,queryKey:D,refetch:E,errorMessage:A}=s.useDashboardCardQuery(o);I.useEffect(()=>{if(y&&(y.rowLimitExceeded&&s.ue.error("Row limit (10,000) exceeded. Refine your query.",{position:"top-center",richColors:!0}),j((y==null?void 0:y.output)||""),y.records.length>0)){const{dimensionKeys:P}=s.getKeys(y.records);h(P)}},[y,h,j]),I.useEffect(()=>{(k||S)&&w(!0),(C||R)&&w(!1),C&&(h([]),j(""))},[k,S,y,j,C,R,w,h,F]),I.useEffect(()=>{L&&(t.getQueryData(D)||E(),N(!1))},[L,E,N,D,t]);async function B(){const P=`Can you help me debug this query in the current table scope?
326
+ */const gn=s.createLucideIcon("View",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]);function xs(t){var a;return{...t,sheets:(a=t==null?void 0:t.sheets)==null?void 0:a.map(n=>{var r;return{...n,frames:(r=n.frames)==null?void 0:r.map(l=>{var o;return{...l,cards:(o=l.cards)==null?void 0:o.map(c=>St(c))}})}})}}function St(t){return{...t,customCfg:jn(t.customCfg),data:[]}}function jn(t){var a,n;return t?{...t,data:{...t==null?void 0:t.data,labels:[],datasets:(n=(a=t==null?void 0:t.data)==null?void 0:a.datasets)==null?void 0:n.map(r=>({...r,data:[]}))}}:null}async function yn(t,a,n,r){if(!r)return null;const l=JSON.stringify(a);return await s.postRequest("https://semaphor.cloud/api/v1/lens",r,{name:t,template:l,filterValues:n,operation:"create"})}async function Ls(t,a){if(!a)return null;const{id:n,template:r,filterValues:l,isDefault:o,shared:c}=t;return await s.postRequest("https://semaphor.cloud/api/v1/lens",a,{lensId:n,template:r,filterValues:l,isDefault:o,shared:c,operation:"update"})}async function bn(t,a){return a?await s.postRequest("https://semaphor.cloud/api/v1/lens",a,{operation:"delete",lensId:t}):null}function vn(){const[t,a]=I.useState(""),[n,r]=I.useState(!1),l=s.useDashboardStore(x=>x.lenses),{setLenses:o,setSelectedLensId:c}=s.useDashboardActions(),[i,u]=I.useState(!1),[d,m]=I.useState(!1),h=s.useDashboardStore(x=>x.dashboard),f=s.useDashboardStore(x=>x.filterValues),{authToken:g}=s.useSemaphorContext();async function j(){u(!0);const x=xs(h),b=await yn(t,x,f,g==null?void 0:g.accessToken);b&&(o([...l||[],b]),c(b.id),m(!1)),u(!1)}return e.jsxs(s.Dialog,{open:d,onOpenChange:m,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",size:"sm",children:[e.jsx(s.Plus,{className:"mr-2 h-4 w-4"}),"Lens"]})}),e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Create Lens"}),e.jsx(s.DialogDescription,{children:"Lenses are private by default and are only visible to you."})]}),e.jsx("div",{className:"grid gap-4 py-4",children:e.jsxs("div",{className:"grid grid-cols-8 items-center gap-4",children:[e.jsx(s.Label,{className:"text-right",children:"Name"}),e.jsx(s.Input,{value:t,onChange:x=>{a(x.target.value)},id:"name",className:"col-span-7 focus-visible:ring-0 focus-visible:ring-ring focus-visible:ring-offset-0"})]})}),n&&e.jsx("p",{className:"text-sm",children:"The lens name already exists. Use a differnet name."}),e.jsx(s.DialogFooter,{children:e.jsx(s.Button,{size:"sm",variant:"outline",type:"submit",onClick:j,disabled:i,children:i?"Creating...":"Add"})})]})]})}function Nn(){const[t,a]=I.useState(!1),n=s.useDashboardStore(m=>m.lenses),r=s.useDashboardStore(m=>m.selectedLensId),{setLenses:l,setSelectedLensId:o}=s.useDashboardActions(),{authToken:c}=s.useSemaphorContext();async function i(m){o(m)}async function u(m){if(await bn(m,c==null?void 0:c.accessToken)){const f=n==null?void 0:n.filter(g=>g.id!==m);l(f||[]),o("original")}}async function d(m){const h=n==null?void 0:n.map(j=>j.id===m.id?{...j,isDefault:!m.isDefault}:{...j,isDefault:!1});l(h||[]);const f={...m,isDefault:!m.isDefault};await Ls(f,c==null?void 0:c.accessToken);const g=n==null?void 0:n.find(j=>j.isDefault);if(g&&g.id!==m.id){const j={...g,isDefault:!1};await Ls(j,c==null?void 0:c.accessToken)}}return e.jsxs(s.DropdownMenu,{open:t,onOpenChange:a,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Lenses",className:"h-7 p-2",children:e.jsx(Ga,{className:"h-4 w-4"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"w-60",children:[e.jsx(s.DropdownMenuLabel,{className:"px-3",children:"Lenses"}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuRadioGroup,{value:r,onValueChange:i,children:[e.jsx(s.DropdownMenuRadioItem,{value:"original",children:"Original"}),n==null?void 0:n.map(m=>e.jsxs(s.DropdownMenuRadioItem,{className:"group flex justify-between gap-2",value:m.id,children:[e.jsx("p",{children:m.name}),e.jsxs("span",{className:"flex items-center gap-3",children:[e.jsx(s.House,{onClick:h=>{h.preventDefault(),d(m)},className:s.cn("size-3.5 text-muted-foreground hover:cursor-pointer hover:text-foreground group-hover:visible",{invisible:!m.isDefault,"text-green-500":m.isDefault}),strokeWidth:1.5}),e.jsx(s.Cross2Icon,{onClick:h=>{h.preventDefault(),u(m.id)},className:"invisible size-3.5 text-muted-foreground hover:cursor-pointer hover:text-foreground group-hover:visible",strokeWidth:1.5})]})]},m.id))]})]})]})}function wt(){var o;const t=s.useDashboardStore.getState().authToken,a=s.useDashboardStore.getState().theme,n=s.useDashboardStore.getState().filterValues,r=(o=s.useDashboardStore.getState().dashboard)==null?void 0:o.title,l=s.useDashboardStore.getState().selectedSheetId;return{authToken:t,theme:a||"light",filterValues:n,dashboardTitle:r||"",selectedSheetId:l||""}}async function Dt(){const t=s.useDashboardStore.getState().isDownloadingPdf,{authToken:a,theme:n,filterValues:r,dashboardTitle:l,selectedSheetId:o}=wt();if(t)return;const c=new URLSearchParams;c.set("token",(a==null?void 0:a.accessToken)||""),c.set("theme",n),c.set("filterValues",JSON.stringify(r)),c.set("selectedSheetId",o||"");const i=`https://semaphor.cloud/api/v1/generate-pdf?params=${encodeURIComponent(c.toString())}`;s.useDashboardStore.setState({isDownloadingPdf:!0});const m=(await(await fetch(i,{method:"GET",headers:{Authorization:`Bearer ${a==null?void 0:a.accessToken}`}})).json()).url,h=document.createElement("a");h.href=m;const f=`${l}-${new Date().toISOString()}.pdf`;h.download=f,h.click(),s.useDashboardStore.setState({isDownloadingPdf:!1})}function Cn({iconClassName:t}){const{authToken:a}=s.useSemaphorContext();s.useDashboardStore(l=>{var o;return(o=l.dashboard)==null?void 0:o.title}),s.useDashboardStore(l=>l.theme),s.useDashboardStore(l=>l.filterValues);const n=s.useDashboardStore(l=>l.isDownloadingPdf);async function r(){await Dt()}return e.jsx(s.IconButton,{tooltip:"Download PDF",className:"h-7 p-2",onClick:r,children:n?e.jsx(s.LoaderCircle,{className:s.cn("size-3.5 animate-spin",t)}):e.jsx(s.Download,{className:s.cn("size-4",t)})})}function je({defaultValue:t,label:a,options:n,value:r,onValueChange:l,className:o,icon:c,showPlaceholderLabel:i=!0}){return e.jsxs(s.Select,{defaultValue:t,value:r,onValueChange:l,children:[e.jsx(s.SelectTrigger,{className:s.cn("w-full focus:ring-0 focus:ring-offset-0",o),children:e.jsxs("div",{className:"flex items-center gap-2",children:[c&&e.jsx("span",{children:c}),i&&e.jsx(s.SelectValue,{placeholder:a})]})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[e.jsx(s.SelectLabel,{children:a}),n.map(u=>e.jsx(s.SelectItem,{value:u.value,children:u.label},u.value))]})})]})}const at=[{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"biweekly",label:"Bi-Weekly"},{value:"monthly",label:"Monthly"}];function kt({triggerButtonClassName:t}){const{data:a,handleScheduleSubscription:n,handleDeleteSubscription:r,status:l,error:o,isDeleting:c}=Sn(),[i,u]=I.useState(""),[d,m]=I.useState(at[0].value),[h,f]=I.useState("06:00"),[g,j]=I.useState("");return e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Schedule Dashboard",className:s.cn("h-7 p-2",t),children:e.jsx(s.Clock,{className:"size-4"})})}),e.jsx(s.PopoverContent,{align:"end",className:"w-80",children:e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium leading-none",children:"Schedule Subscription"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Subscribe to receive dashboard via email"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"email",children:"Email"}),e.jsx(s.Input,{id:"email",value:i,onChange:x=>u(x.target.value),className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"subject",children:"Subject"}),e.jsx(s.Input,{id:"subject",placeholder:"Monthly Sales Report",value:g,onChange:x=>{j(x.target.value.replace(/[^a-zA-Z0-9\s-_]/g,""))},className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"frequency",children:"Frequency"}),e.jsx(je,{className:"col-span-2 h-8",label:"Select Frequency",options:at,value:d,onValueChange:x=>m(x)})]}),e.jsxs("div",{className:"grid grid-cols-3 items-center gap-4",children:[e.jsx(s.Label,{htmlFor:"time",children:"Time"}),e.jsx(s.Input,{id:"time",type:"time",value:h,onChange:x=>f(x.target.value),className:`col-span-2 h-8 ${s.removeRing}`})]}),e.jsx("div",{className:"mt-2 flex justify-end",children:e.jsxs(s.Button,{onClick:async()=>{await n({email:i,frequency:d,time:h,subject:g}),f("00:00"),u(""),j("")},className:"h-8 p-2",disabled:l==="loading"||!i,children:[l==="loading"&&e.jsx(s.LoaderCircle,{className:"mr-2 size-4 animate-spin"}),l==="success"&&e.jsx(s.Check,{className:"mr-2 size-4"}),l==="error"&&e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{children:e.jsx(jt,{className:"mr-2 size-4 text-destructive"})}),e.jsx(s.TooltipContent,{children:e.jsx("p",{children:o})})]}),"Schedule"]})}),a&&a.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Separator,{className:"my-2"}),e.jsx("div",{className:"space-y-2",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium leading-none",children:"Subscriptions"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Active email subscriptions"})]}),s.isDevEnv]})}),e.jsx("div",{className:"grid gap-2",children:a==null?void 0:a.map(x=>e.jsxs("div",{className:"group grid grid-cols-5 gap-3",children:[e.jsx("div",{className:"col-span-3 text-sm",children:e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"boder-border rounded-md border bg-muted px-2 py-1",children:[s.titleCase(x.frequency)," "]}),e.jsx(s.Label,{children:x.time})]})}),e.jsxs("div",{className:"col-span-2 flex items-center justify-end gap-4",children:[e.jsx(nt,{tooltip:`Next Run: ${new Date(x.nextRun).toLocaleString()} ${x.timezone}`,children:e.jsx(Oa,{className:"size-3.5"})}),e.jsx(nt,{tooltip:`${x.endUserEmail}`,children:e.jsx(tn,{className:"size-3.5"})}),c===x.id?e.jsx(s.LoaderCircle,{className:"size-3.5 animate-spin"}):e.jsx(s.Trash2,{onClick:()=>r(x.id),className:"size-3.5 cursor-pointer"})]})]},x.id))})]})]})]})})]})})}const nt=({children:t,tooltip:a})=>e.jsx(s.TooltipProvider,{delayDuration:0,children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:t}),e.jsx(s.TooltipContent,{children:a})]})});function Sn(){const[t,a]=I.useState("idle"),[n,r]=I.useState(""),[l,o]=I.useState(null),c=s.useDashboardStore(T=>T.authToken),i=s.useDashboardStore(T=>T.dashboard.id),u=s.useDashboardStore(T=>T.dashboard.title),{endUserId:d}=s.getTenantAndEndUserId((c==null?void 0:c.accessToken)||""),m="https://semaphor.cloud/api/v1/subscriptions/get",h={dashboardId:i,endUserId:d},{data:f,isLoading:g,isError:j,isFetching:x,refetch:b}=s.useQuery({queryKey:["subscriptions",i,d],queryFn:()=>s.getRequest(m,(c==null?void 0:c.accessToken)||"",h),enabled:!!(c!=null&&c.accessToken)&&!!i&&!!d});async function p({email:T,subject:L,frequency:N,time:w}){const{authToken:y,...k}=wt(),S=Intl.DateTimeFormat().resolvedOptions().timeZone,R={email:T,frequency:N,time:w,timezone:S,endUserId:d,endUserEmail:T,subject:L||u||"Scheduled Dashboard",dashboardId:i,dashboardParams:k};a("loading");const C="https://semaphor.cloud/api/v1/subscriptions/create";try{const B=await s.postRequestRegular(C,(y==null?void 0:y.accessToken)||"",{...R});a("success"),r(""),b(),setTimeout(()=>{a("idle")},2e3)}catch(B){console.error(B),a("error"),r(B.message)}}async function v(T){const L="https://semaphor.cloud/api/v1/subscriptions/delete";o(T);try{await s.postRequestRegular(L,(c==null?void 0:c.accessToken)||"",{id:T}),b(),setTimeout(()=>{o(null)},2e3)}catch(N){console.error(N),o(null),a("error"),r(N.message)}}return{data:f,isLoading:g,isFetching:x,isError:j,isDeleting:l,refetch:b,handleScheduleSubscription:p,handleDeleteSubscription:v,status:t,error:n}}function Ie(){const{authToken:t,tokenProps:a}=s.useSemaphorContext();let n=null;a&&(a.endUserId&&a.endUserEmail&&a.tenantId?n={id:a.endUserId,name:a.endUserEmail?String(a.displayName):"",email:a.endUserEmail?String(a.endUserEmail):"",type:"tenant",tenantId:a.tenantId}:a.orgUserId&&a.orgUserEmail&&(n={id:a.orgUserId,name:a.orgUserEmail?String(a.displayName):"",email:a.orgUserEmail?String(a.orgUserEmail):"",type:"organization"}));const{data:r,isLoading:l,isError:o}=s.useQuery({queryKey:["userInfo",n==null?void 0:n.id],queryFn:async()=>{if(!(n!=null&&n.id))return;const i=await fetch(`https://semaphor.cloud/api/management/v1/unified-users/${n.id}`,{headers:{Authorization:`Bearer ${(t==null?void 0:t.accessToken)||""}`,"Content-Type":"application/json"}});if(!i.ok)throw new Error("Failed to fetch user info");return(await i.json()).user},enabled:!!(t!=null&&t.accessToken)&&!!(n!=null&&n.id)});return{currentUser:n?{...n,...r||{}}:null,isLoading:l,isError:o}}function Tt(){return e.jsx(s.ScrollArea,{className:"w-full flex-1",children:e.jsxs("div",{className:"space-y-4 px-4",children:[e.jsx("div",{className:"animate-pulse",children:e.jsx("div",{className:"h-8 w-full rounded bg-muted"})}),e.jsx("div",{className:"animate-pulse",children:e.jsx("div",{className:"h-8 w-full rounded bg-muted"})}),e.jsx("div",{className:"space-y-2",children:[...Array(4)].map((t,a)=>e.jsx("div",{className:"animate-pulse",children:e.jsxs("div",{className:"group relative flex items-start gap-3 px-4 py-3",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-muted"})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("div",{className:"h-4 w-32 rounded bg-muted"})}),e.jsx("div",{className:"shrink-0",children:e.jsx("div",{className:"h-3.5 w-3.5 rounded bg-muted"})})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx("div",{className:"h-3 w-48 rounded bg-muted"})})]}),e.jsx("div",{className:"absolute right-3 top-2",children:e.jsx("div",{className:"flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100",children:e.jsx("div",{className:"h-6 w-6 rounded bg-muted"})})})]})]})},a))})]})})}var ae=(t=>(t.DASHBOARD="dashboard",t.VISUAL="visual",t))(ae||{});const wn=async(t,a,n,r,l,o)=>{const c={},i={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${i[a]}`,t,c)},Dn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${r[a]}`,t,n)},kn=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},o=await fetch(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r)});if(!o.ok){const c=await o.json();throw new Error((c==null?void 0:c.error)||`HTTP error! status: ${o.status}`)}return o.json()},Tn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},l=await fetch(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}});if(!l.ok){const o=await l.json();throw new Error((o==null?void 0:o.error)||`HTTP error! status: ${l.status}`)}return l.json()},En=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}/duplicate`,t,{})},In=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.postRequestRegular(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}/share`,t,r)},An=async(t,a,n,r)=>{const l={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"},o=await fetch(`https://semaphor.cloud/api/management/v1/${l[a]}/${n}/share`,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r)});if(!o.ok){const c=await o.json();throw new Error((c==null?void 0:c.error)||`HTTP error! status: ${o.status}`)}return o.json()},Mn=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}/shares`,t)},Ln=async(t,a,n)=>{const r={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return s.getRequest(`https://semaphor.cloud/api/management/v1/${r[a]}/${n}`,t)};function Rn(t){const{authToken:a}=s.useSemaphorContext();return s.useQuery({queryKey:["tenants"],queryFn:()=>s.getRequest("https://semaphor.cloud/api/management/v1/tenants",(a==null?void 0:a.accessToken)||""),enabled:(t==null?void 0:t.enabled)!==void 0?t.enabled&&!!(a!=null&&a.accessToken):!!(a!=null&&a.accessToken)})}function On(t,a,n,r,l){const{authToken:o}=s.useSemaphorContext(),{currentUser:c}=Ie();return s.useQuery({queryKey:[t,a,n,r,l],queryFn:()=>wn((o==null?void 0:o.accessToken)||"",t),enabled:!!(o!=null&&o.accessToken)&&!!c})}function Bn(t,a){const{authToken:n}=s.useSemaphorContext(),r=s.useQueryClient();return $e({mutationFn:l=>Dn((n==null?void 0:n.accessToken)||"",t,l),onMutate:async()=>{await r.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await r.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} created successfully`),a==null||a()},onError:l=>{s.ue.error(`Failed to create ${s.toTitleCase(t)}: ${l.message}`)}})}function Et(t){const{authToken:a}=s.useSemaphorContext(),n=s.useQueryClient();return $e({mutationFn:({resourceId:r,data:l})=>kn((a==null?void 0:a.accessToken)||"",t,r,l),onMutate:async()=>{await n.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await n.invalidateQueries({queryKey:[t]})},onError:r=>{s.ue.error(`Failed to update ${s.toTitleCase(t)}: ${r.message}`)}})}function Fn(t,a){const{authToken:n}=s.useSemaphorContext(),r=s.useQueryClient();return $e({mutationFn:l=>Tn((n==null?void 0:n.accessToken)||"",t,l),onMutate:async()=>{await r.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await r.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} deleted successfully`),a==null||a()},onError:l=>{s.ue.error(`Failed to delete ${s.toTitleCase(t)}: ${l.message}`)}})}function Pn(t){const{authToken:a}=s.useSemaphorContext(),n=s.useQueryClient();return $e({mutationFn:r=>En((a==null?void 0:a.accessToken)||"",t,r),onMutate:async()=>{await n.cancelQueries({queryKey:[t]})},onSuccess:async()=>{await n.invalidateQueries({queryKey:[t]}),s.ue.success(`${s.toTitleCase(t)} duplicated successfully`)},onError:r=>{s.ue.error(`Failed to duplicate ${s.toTitleCase(t)}: ${r.message}`)}})}function zn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:({resourceType:n,resourceId:r,data:l})=>In((t==null?void 0:t.accessToken)||"",n,r,l),onMutate:async n=>{await a.cancelQueries({queryKey:["resource-shares",n.resourceType,n.resourceId]})},onSuccess:async(n,r)=>{await a.invalidateQueries({queryKey:["resource-shares",r.resourceType,r.resourceId]}),a.invalidateQueries({queryKey:[r.resourceType]})},onError:n=>{s.ue.error(`Failed to share resource: ${n.message}`)}})}function Vn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:({resourceType:n,resourceId:r,data:l})=>An((t==null?void 0:t.accessToken)||"",n,r,l),onMutate:async n=>{await a.cancelQueries({queryKey:["resource-shares",n.resourceType,n.resourceId]})},onSuccess:async(n,r)=>{await a.invalidateQueries({queryKey:["resource-shares",r.resourceType,r.resourceId]}),a.invalidateQueries({queryKey:[r.resourceType]})},onError:n=>{s.ue.error(`Failed to remove resource shares: ${n.message}`)}})}function _n(t,a){const{authToken:n}=s.useSemaphorContext();return s.useQuery({queryKey:["resource-shares",t,a],queryFn:()=>Mn((n==null?void 0:n.accessToken)||"",t,a),enabled:!!(n!=null&&n.accessToken)&&!!a})}function Un(t,a,n){const{authToken:r}=s.useSemaphorContext();return s.useQuery({queryKey:["resource-by-id",t,a],queryFn:()=>Ln((r==null?void 0:r.accessToken)||"",t,a),enabled:(n==null?void 0:n.enabled)!==void 0?n.enabled&&!!(r!=null&&r.accessToken)&&!!a:!!(r!=null&&r.accessToken)&&!!a})}function $n(t,a){return Un(ae.VISUAL,t,a)}function It(){const[t,a]=I.useState(new Map),n=I.useCallback((o,c)=>{a(i=>{const u=new Map(i),d=new Set(u.get(o)||[]);return c?d.add(c):(d.add("title"),d.add("description")),u.set(o,d),u})},[]),r=I.useCallback((o,c)=>{a(i=>{const u=new Map(i),d=new Set(u.get(o)||[]);return c?d.delete(c):d.clear(),d.size===0?u.delete(o):u.set(o,d),u})},[]),l=I.useCallback((o,c)=>{const i=t.get(o);return i?c?i.has(c):i.size>0:!1},[t]);return{startUpdating:n,stopUpdating:r,isUpdating:l}}function Fs(t,a,n){var h;const r=On(t),l=Bn(t,n),o=Et(t),c=Fn(t,a),i=Pn(t),u=zn(),d=Vn(),m={[ae.DASHBOARD]:"dashboards",[ae.VISUAL]:"visuals"};return{resources:((h=r.data)==null?void 0:h[m[t]])||[],isLoading:r.isLoading,isError:r.isError,isFetching:r.isFetching,error:r.error,createResource:l.mutate,updateResource:o.mutate,deleteResource:c.mutate,duplicateResource:i.mutate,shareResource:u.mutate,removeResourceShares:d.mutate,isCreating:l.isPending,isUpdating:o.isPending,isDeleting:c.isPending,isDuplicating:i.isPending,isSharing:u.isPending,isRemovingShares:d.isPending,isUpdatingShares:u.isPending,refetch:r.refetch}}function qn(t,a){return Fs(ae.DASHBOARD,t,a)}function Yn(t,a){return Fs(ae.VISUAL,t,a)}function Gn(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient();return $e({mutationFn:async({visualId:n,data:r})=>{const l=await fetch(`https://semaphor.cloud/api/management/v1/visuals/${n}`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t==null?void 0:t.accessToken}`},body:JSON.stringify(r)});if(!l.ok)throw new Error("Failed to update visual");return l.json()},onSuccess:()=>{s.ue.success("Visual updated successfully"),a.invalidateQueries({queryKey:["visuals"]})},onError:()=>{s.ue.error("Failed to update visual")}})}function Kn({visual:t,isDeleting:a,isDuplicating:n,isTitleUpdating:r=!1,isDescriptionUpdating:l=!1,onAddVisual:o,onEditVisual:c,onUpdateVisual:i,onDeleteClick:u,onDuplicateVisual:d,onShareVisual:m,formatDate:h}){var w;const{selectVisual:f}=s.useManagementActions(),g=s.useIsVisualSelected(t.id),j=s.useDashboardStore(y=>y.actions.setIsDashboardPanelOpen),[x,b]=I.useState(!1),[p,v]=I.useState(!1);I.useEffect(()=>{n?(b(!0),v(!0)):p&&(b(!1),v(!1))},[n,p]);const T=()=>t.ownership.isOwner?t.ownership.status==="private"?e.jsx(bt,{className:"h-3 w-3 text-purple-500"}):e.jsx(Ee,{className:"h-3.5 w-3.5 text-blue-600"}):e.jsx(Be,{className:"h-3.5 w-3.5 text-slate-500"}),L=()=>e.jsx(s.ChartColumn,{className:"h-4 w-4 text-slate-400"}),N=()=>{f(t),c==null||c(t)};return e.jsxs("div",{className:s.cn("group relative flex cursor-pointer items-start gap-3 px-4 py-3 dark:border-slate-800","cursor-pointer transition-colors duration-150 hover:bg-slate-50 dark:hover:bg-slate-900/50",t.ownership.isOwner&&"border-blue-200 dark:border-blue-800",g&&"rounded-md bg-slate-50 ring-1 ring-inset ring-border dark:bg-slate-900/50"),tabIndex:0,onClick:N,children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-slate-100 dark:bg-slate-800",children:L()})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(s.EditableText,{inputClassName:"text-sm font-medium text-slate-900 dark:text-slate-100",value:t.title,onSave:y=>i==null?void 0:i(t.id,{title:y}),isEditable:t.ownership.isOwner&&g,isPending:r,placeholder:"Untitled Visual",displayClassName:"line-clamp-1 max-w-[150px] text-sm font-medium text-slate-900 dark:text-slate-100"})}),e.jsx("div",{className:"shrink-0",children:T()})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx(s.EditableText,{inputClassName:"line-clamp-1 text-xs text-slate-500 dark:text-slate-400",value:t.description||"",onSave:y=>i==null?void 0:i(t.id,{description:y}),isEditable:t.ownership.isOwner&&g,isPending:l,placeholder:"No description",displayClassName:"mt-0.5 max-w-[220px] line-clamp-1 text-xs text-slate-500 dark:text-slate-400"})})]}),e.jsx("div",{className:"absolute right-3 top-2 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:s.cn("flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100"),children:[e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>{y.stopPropagation(),o(t)},children:e.jsx(s.Plus,{className:"h-3.5 w-3.5"})}),e.jsxs(s.DropdownMenu,{modal:!1,open:x,onOpenChange:b,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>y.stopPropagation(),children:e.jsx(s.Ellipsis,{className:"h-3 w-3"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"z-[51] w-40",children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),o(t)},children:[e.jsx(s.Plus,{className:"mr-2 h-3 w-3"}),"Add"]}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.preventDefault(),y.stopPropagation(),d(t.id)},disabled:n,children:[n?e.jsx(s.LoaderCircle,{className:"mr-2 h-3 w-3 animate-spin"}):e.jsx(s.Copy,{className:"mr-2 h-3 w-3"}),n?"Duplicating...":"Duplicate"]}),t.ownership.isOwner&&e.jsxs(e.Fragment,{children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),c==null||c(t)},children:[e.jsx(on,{className:"mr-2 h-3 w-3"}),"Edit"]}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),m(t)},children:[e.jsx(Ee,{className:"mr-2 h-3 w-3"}),"Share"]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),u(t),j(!1)},className:"text-destructive",disabled:a,children:[e.jsx(s.Trash2,{className:"mr-2 h-3 w-3"}),a?"Deleting...":"Delete"]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"space-y-1 px-2 py-2 text-xs text-slate-500 dark:text-slate-400",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Be,{className:"h-3 w-3"}),e.jsx("span",{children:((w=t.ownership.createdBy)==null?void 0:w.name)||"Unknown"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Calendar,{className:"h-3 w-3"}),e.jsx("span",{children:h(t.lastModified)})]})]})]})]})]})})]})]},t.id)}function At({value:t,onChange:a,placeholder:n="Search users by name, email, or department..."}){return e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:n,value:t,onChange:r=>a(r.target.value),className:"pl-9"})]})}function ps({currentRole:t,onRoleChange:a,roleOptions:n,disabled:r=!1,className:l="",allowDropdown:o=!0}){var u;const c=((u=n.find(d=>d.value===t))==null?void 0:u.label)||t,i=n.filter(d=>d.value!==t);return o?e.jsxs(s.DropdownMenu,{children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Badge,{variant:"outline",className:`cursor-pointer hover:bg-muted ${r?"cursor-not-allowed opacity-50":""} ${l}`,onClick:()=>console.log("Badge clicked:",{currentRole:t,disabled:r,allowDropdown:o}),children:c})}),e.jsx(s.DropdownMenuContent,{className:"z-[51]",children:i.map(d=>e.jsx(s.DropdownMenuItem,{onClick:()=>{console.log("Dropdown item clicked:",{currentRole:t,newRole:d.value,disabled:r}),a(d.value)},disabled:r,children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:d.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:d.description})]})},d.value))})]}):e.jsx(s.Badge,{variant:"outline",className:`text-xs ${l}`,children:c})}function Mt({selectedUsers:t,selectedUserObjects:a,onRemove:n,onRoleChange:r,getRoleOptions:l}){return t.length===0?null:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s.Label,{className:"text-sm font-medium",children:["Selected Users (",t.length,")"]}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>t.forEach(o=>n(o.id)),className:"h-auto p-1 text-xs",children:"Clear all"})]}),e.jsx("div",{className:"flex max-h-20 flex-wrap gap-2 overflow-y-auto",children:a.map(o=>{const c=t.find(u=>u.id===o.id),i=l(o.type);return e.jsxs(s.Badge,{variant:"secondary",className:"gap-1",children:[o.name,e.jsx(ps,{currentRole:(c==null?void 0:c.role)||"VIEWER",onRoleChange:u=>r(o.id,u),roleOptions:i}),e.jsx("button",{onClick:()=>n(o.id),className:"ml-1 rounded-full p-0.5 hover:bg-muted-foreground/20",children:e.jsx(s.X,{className:"h-3 w-3"})})]},o.id)})}),e.jsx(s.Separator,{})]})}function Lt({usersToRemove:t,allUsers:a,onRemove:n}){return t.length===0?null:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s.Label,{className:"text-sm font-medium text-destructive",children:["Users to Remove Access (",t.length,")"]}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>t.forEach(r=>n(r)),className:"h-auto p-1 text-xs text-destructive hover:text-destructive",children:"Clear all"})]}),e.jsx("div",{className:"flex max-h-20 flex-wrap gap-2 overflow-y-auto",children:a.filter(r=>t.includes(r.id)).map(r=>e.jsxs(s.Badge,{variant:"destructive",className:"gap-1",children:[r.name,e.jsx("button",{onClick:()=>n(r.id),className:"ml-1 rounded-full p-0.5 hover:bg-destructive-foreground/20",children:e.jsx(s.X,{className:"h-3 w-3"})})]},r.id))}),e.jsx(s.Separator,{})]})}function Rt({usersToUpdate:t,allUsers:a,onRemove:n,getRoleOptions:r}){if(t.length===0)return null;const l=r("tenant"),o=i=>{const u=a.find(d=>d.id===i);return(u==null?void 0:u.name)||"Unknown User"},c=i=>{const u=l.find(d=>d.value===i);return(u==null?void 0:u.label)||i};return e.jsxs("div",{className:"rounded-lg border border-orange-200 bg-orange-50 p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(Ee,{className:"h-4 w-4 text-orange-600"}),e.jsxs("span",{className:"text-sm font-medium text-orange-800",children:["Updating Access (",t.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:t.map(i=>e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:o(i.id)}),e.jsx("span",{className:"text-muted-foreground",children:"→"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:c(i.currentRole)}),e.jsx("span",{className:"text-muted-foreground",children:"→"}),e.jsx(s.Badge,{variant:"default",className:"text-xs",children:c(i.newRole)})]})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-muted-foreground hover:text-destructive",onClick:()=>n(i.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]},i.id))})]})}function Ot(t,a={}){const{enabled:n=!0,eventType:r="mousedown"}=a,l=I.useRef(null);return I.useEffect(()=>{const o=c=>{const i=c.target;l.current&&l.current.contains(i)||i instanceof Element&&(i.closest("[data-radix-popper-content-wrapper]")||i.closest("[data-radix-select-content]")||i.closest("[data-radix-popover-content]")||i.closest("[data-radix-dropdown-menu-content]")||i.closest("[data-radix-tooltip-content]")||i.closest('[role="listbox"]')||i.closest('[role="option"]')||i.closest('[role="combobox"]'))||i instanceof Element&&i.hasAttribute("data-radix-")||t()};return n&&document.addEventListener(r,o),()=>{document.removeEventListener(r,o)}},[t,n,r]),l}function Ne(t,a){var n;return((n=a.find(r=>r.value===t))==null?void 0:n.label)||t}function Hn(t){return["POWER_USER","ADMIN","EDITOR"].includes(t)}function Bt(t){return"tenantId"in t&&t.tenantId?"tenant":"organization"}function Qn(t,a,n){const r=Bt(t),l=(n==null?void 0:n.type)||"organization";if(!(!a||!a.shares))if(l==="organization")if(r==="organization"){if("specificOrgUsers"in a.shares)return(a.shares.specificOrgUsers||[]).find(i=>i.orgUserId===t.id)}else return(a.shares.specificTenantUsers||[]).find(i=>i.tenantUserId===t.id);else return(a.shares.specificTenantUsers||[]).find(i=>i.tenantUserId===t.id)}function Wn({user:t}){return Bt(t)==="tenant"?e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:t.role==="POWER_USER"?"Power User":"Viewer"}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:t.role==="ADMIN"?"Admin":t.role==="POWER_USER"?"Power User":"Viewer"})}function Jn({user:t,userShare:a,usersToUpdate:n,currentUser:r,getRoleOptions:l,handleUpdateAccess:o}){if(!(a!=null&&a.role))return null;const c=Hn((r==null?void 0:r.type)||""),i=n.some(h=>h.id===t.id),u=n.find(h=>h.id===t.id),d=u?u.newRole:a==null?void 0:a.role,m=l(t.type);return a?e.jsx("div",{className:"flex items-center gap-2",children:c?e.jsx(ps,{currentRole:d,onRoleChange:h=>{o(t.id,a.role,h)},roleOptions:m,disabled:!c,allowDropdown:c,className:i?"border-orange-300 bg-orange-100":""}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:Ne(d,m)})}):e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:"Unknown"})}function Xn({hasAccess:t,isUserRemoving:a,isSelected:n,hasAccessFromAPI:r}){return e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[t&&!a&&e.jsxs(s.Badge,{variant:"outline",className:"border-green-200 bg-green-50 text-xs text-green-700",children:[e.jsx(s.Eye,{className:"mr-1 h-3 w-3"}),"Has Access"]}),a&&e.jsxs(s.Badge,{variant:"outline",className:"border-red-200 bg-red-50 text-xs text-red-700",children:[e.jsx(s.X,{className:"mr-1 h-3 w-3"}),"Remove Access"]}),n&&!r&&e.jsxs(s.Badge,{variant:"outline",className:"border-blue-200 bg-blue-50 text-xs text-blue-700",children:[e.jsx(ts,{className:"mr-1 h-3 w-3"}),"Will Share"]})]})}function Zn({isUserRemoving:t,isSelected:a,hasAccess:n,isRemoving:r,isSharing:l}){return e.jsxs(e.Fragment,{children:[t&&e.jsx("span",{className:"text-xs font-medium text-red-600",children:r?e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Removing..."]}):"⚠ Will remove access"}),a&&!n&&e.jsx("span",{className:"text-xs font-medium text-blue-600",children:l?e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Sharing..."]}):"Will share"})]})}function er({existingShares:t,allUsers:a,getRoleOptions:n,currentUser:r}){if(((r==null?void 0:r.type)||"organization")==="organization")if("specificOrgUsers"in t.shares){const c=t.shares,i=c.specificOrgUsers||[],u=c.specificTenantUsers||[],d=c.orgWide||[],m=c.orgUsersOnly||[],h=c.allTenantsOnly||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[i.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Org Users (",i.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[i.slice(0,3).map((f,g)=>{var p,v;const j=((p=a.find(T=>T.id===f.orgUserId))==null?void 0:p.name)||"Unknown User",x=((v=a.find(T=>T.id===f.orgUserId))==null?void 0:v.type)||"",b=Ne(f.role,n(x));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:j}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:b})]},g)}),i.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",i.length-3," more users"]})]})]}),u.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-green-600",children:["Specific Tenant Users (",u.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[u.slice(0,3).map((f,g)=>{var p,v;const j=((p=a.find(T=>T.id===f.tenantUserId))==null?void 0:p.name)||"Unknown User",x=((v=a.find(T=>T.id===f.tenantUserId))==null?void 0:v.type)||"",b=Ne(f.role,n(x));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:j}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:b})]},g)}),u.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",u.length-3," more users"]})]})]}),d.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-purple-600",children:"All Org Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:d.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Organization Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),m.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-orange-600",children:"Org Users Only"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:m.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"Org Users Only"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),h.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-indigo-600",children:"All Tenants"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:h.map((f,g)=>{const j=Ne(f.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenants"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:j})]},g)})})]}),!i.length&&!u.length&&!d.length&&!m.length&&!h.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}else{const c=t.shares.specificTenantUsers||[],i=t.shares.tenantWide||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[c.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Users (",c.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[c.slice(0,3).map((u,d)=>{var g,j;const m=((g=a.find(x=>x.id===u.tenantUserId))==null?void 0:g.name)||"Unknown User",h=((j=a.find(x=>x.id===u.tenantUserId))==null?void 0:j.type)||"",f=Ne(u.role,n(h));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:m}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:f})]},d)}),c.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",c.length-3," more users"]})]})]}),i.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-green-600",children:"All Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:i.map((u,d)=>{const m=Ne(u.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenant Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:m})]},d)})})]}),!c.length&&!i.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}else{const o=t.shares.specificTenantUsers||[],c=t.shares.tenantWide||[];return e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"font-medium",children:"Current Access"}),e.jsxs("div",{className:"space-y-2",children:[o.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-xs font-medium text-blue-600",children:["Specific Users (",o.length,")"]}),e.jsxs("div",{className:"grid grid-cols-1 gap-1",children:[o.slice(0,3).map((i,u)=>{var f,g;const d=((f=a.find(j=>j.id===i.tenantUserId))==null?void 0:f.name)||"Unknown User",m=((g=a.find(j=>j.id===i.tenantUserId))==null?void 0:g.type)||"",h=Ne(i.role,n(m));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:d}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:h})]},u)}),o.length>3&&e.jsxs("div",{className:"text-xs italic text-muted-foreground",children:["+",o.length-3," more users"]})]})]}),c.length>0&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-xs font-medium text-green-600",children:"All Users"}),e.jsx("div",{className:"grid grid-cols-1 gap-1",children:c.map((i,u)=>{const d=Ne(i.role,n(""));return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"All Tenant Users"}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 shrink-0 px-2 py-0.5 text-xs",children:d})]},u)})})]}),!o.length&&!c.length&&e.jsx("div",{className:"text-xs italic text-muted-foreground",children:"No users currently have access"})]})]})}}function sr({isInitialLoading:t,searchQuery:a,availableUsers:n}){return t?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(s.LoaderCircle,{className:"h-4 w-4 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]})}):n.length===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:a?"No users found matching your search.":"No users available to share with."}):null}function tr({user:t,userShare:a,isUserRemoving:n,hasAccess:r,hasAccessFromAPI:l,isSelected:o,selectedUser:c,roleOptions:i,currentUser:u,usersToUpdate:d,handleUserToggle:m,handleRemoveAccess:h,handleUpdateAccess:f,handleUserRoleChange:g}){return e.jsxs("div",{className:s.cn("flex items-center space-x-3 rounded-lg p-2 transition-colors",r&&!n?"border border-green-200 bg-green-50":n?"border border-red-200 bg-red-50":o?"border border-blue-200 bg-blue-50":"hover:bg-muted/50"),children:[e.jsx(s.Checkbox,{checked:l?!n:o,disabled:t.id===(u==null?void 0:u.id),onCheckedChange:()=>{l?n?m(t.id):h(t.id):m(t.id)}}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.name}),e.jsx(Wn,{user:t})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[r&&!n?e.jsx(ps,{currentRole:a==null?void 0:a.role,onRoleChange:j=>f(t.id,a.role,j),roleOptions:i,disabled:!1,allowDropdown:!0}):e.jsx(Jn,{user:t,userShare:a,usersToUpdate:d,currentUser:u,getRoleOptions:()=>i,handleUpdateAccess:f}),o&&!l&&e.jsx("div",{onClick:j=>j.stopPropagation(),children:e.jsx(ps,{currentRole:(c==null?void 0:c.role)||"VIEWER",onRoleChange:j=>g(t.id,j),roleOptions:i,disabled:!1})})]})]}),e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:t.email}),e.jsx(Xn,{hasAccess:r,isUserRemoving:n,isSelected:o,hasAccessFromAPI:l}),e.jsx(Zn,{isUserRemoving:n,isSelected:o,hasAccess:r,isRemoving:!1,isSharing:!1})]})]})}function Ft({existingShares:t,isInitialLoading:a,isSearching:n,getRoleOptions:r,allUsers:l=[],currentUser:o,handleUserToggle:c,handleUserRoleChange:i,handleRemoveAccess:u,handleUpdateAccess:d}){const m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate(),g=s.useShareSearchQuery(),j=s.useShareManagementActions(),x=c||(N=>{const w=m.some(k=>k.id===N),y=h.includes(N);w?j.removeSelectedUser(N):y?j.removeUserFromRemove(N):j.addSelectedUser({id:N,role:"VIEWER"})}),b=i||j.updateSelectedUserRole,p=u||j.addUserToRemove,v=d||((N,w,y)=>{j.addUserToUpdate({id:N,currentRole:w,newRole:y})}),T=l,L=h;return e.jsxs("div",{className:"space-y-2",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,{className:"text-sm font-medium",children:["All Users (",(T??[]).length,")"]}),e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",children:e.jsx(s.Info,{className:"h-4 w-4"})})}),e.jsx(s.TooltipContent,{className:"w-48 max-w-sm",children:e.jsx(er,{existingShares:t,allUsers:l,getRoleOptions:r,currentUser:o})})]})})]}),(T==null?void 0:T.length)>0&&e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>{m.length===T.length?j.setSelectedUsers([]):j.setSelectedUsers(T.map(N=>({id:N.id,role:"VIEWER"})))},className:"h-auto p-1 text-xs",children:m.length===T.length?"Deselect all":"Select all"})]}),e.jsxs("div",{className:"max-h-60 space-y-1 overflow-y-auto rounded-md border p-2",children:[e.jsx(sr,{isInitialLoading:a,isSearching:n,searchQuery:g,availableUsers:T||[]}),!a&&!n&&(T==null?void 0:T.length)>0&&T.map(N=>{const w=t?Qn(N,t,o):void 0,y=L.includes(N.id),k=!!w,S=k&&!y,R=m.some(D=>D.id===N.id),C=m.find(D=>D.id===N.id),B=r(N.type);return e.jsx(tr,{user:N,userShare:w,isUserRemoving:y,hasAccess:S,hasAccessFromAPI:k,isSelected:R,selectedUser:C,roleOptions:B,currentUser:o,usersToUpdate:f,handleUserToggle:x,handleRemoveAccess:p,handleUpdateAccess:v,handleUserRoleChange:b},N.id)})]})]})}function Pt({shareType:t,onShareTypeChange:a,currentUser:n,options:r}){const l=(n==null?void 0:n.role)&&["POWER_USER","ADMIN","AUTHOR","SUPER_ADMIN"].includes(n.role);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.RadioGroup,{value:t,onValueChange:a,className:`grid grid-cols-${r.length} gap-4`,children:r.map(o=>e.jsxs("div",{children:[e.jsx(s.RadioGroupItem,{value:o.value,id:o.value,className:"peer sr-only",disabled:o.disabled}),e.jsxs(s.Label,{htmlFor:o.value,className:`flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary peer-data-[state=checked]:bg-primary/5 [&:has([data-state=checked])]:border-primary [&:has([data-state=checked])]:bg-primary/5 ${o.disabled?"cursor-not-allowed opacity-50":"cursor-pointer"}`,children:[o.icon||e.jsx(Be,{className:"mb-3 h-6 w-6"}),e.jsxs("div",{className:"space-y-1 text-center",children:[e.jsx("p",{className:"text-sm font-medium leading-none",children:o.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:o.description})]})]})]},o.value))}),!l&&r.some(o=>o.value==="all_users")&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Only admins, authors, power users, and super admins can share with all users."})]})}const Pe=()=>[{value:"VIEWER",label:"Viewer",description:"Can view only"},{value:"EDITOR",label:"Editor",description:"Can view and edit"},{value:"CONTRIBUTOR",label:"Contributor",description:"Can view, edit, and share"},{value:"OWNER",label:"Owner",description:"Full access (view, edit, share, delete)"}];function ar({currentUser:t,currentShare:a,isSharing:n,onUpdateAccess:r,allUsersToUpdate:l=null,allUsersToRemove:o=!1,isUpdating:c=!1,isRemoving:i=!1}){const u=s.useShareCurrentMode(),d=Pe().filter(v=>v.value==="VIEWER"||v.value==="EDITOR"||v.value==="CONTRIBUTOR"),m=a.role!=="NONE"?a.role:"NONE",h=l?l.newRole:m,f=a.role!=="NONE"&&!o&&(!l||l.newRole===m),g=l!==null&&l.newRole!==m,j=o,x=m==="NONE"||!m,b=v=>{switch(v){case"VIEWER":return e.jsx(s.Eye,{className:"h-4 w-4"});case"EDITOR":return e.jsx(s.SquarePen,{className:"h-4 w-4"});case"CONTRIBUTOR":return e.jsx(un,{className:"h-4 w-4"});default:return e.jsx(s.Eye,{className:"h-4 w-4"})}},p=v=>{r(m,v)};return e.jsx("div",{className:"space-y-4",children:e.jsxs(s.Card,{className:s.cn("pb-6",g&&!j&&!x?"border-orange-300 bg-orange-50":f?"border-green-300 bg-green-50":j||x?"border-destructive bg-destructive/10":""),children:[e.jsxs(s.CardHeader,{children:[e.jsxs(s.CardTitle,{className:"flex items-center gap-2 text-base",children:[e.jsx(Ee,{className:"h-5 w-5"}),"Share with All"," ",u==="allOrgUsers"?"Organization":u==="allTenantUsers"?"Tenant":u==="specificOrgUsers"?"Org":"Tenant"," ","Users",f&&e.jsx(s.Badge,{variant:"default",className:"ml-2 border-green-400 bg-green-100 text-green-800",children:"Active"}),g&&e.jsx(s.Badge,{variant:"secondary",className:"ml-2 border-orange-400 bg-orange-100 text-orange-800",children:"Pending Update"}),(j||x)&&e.jsx(s.Badge,{variant:"destructive",className:"ml-2",children:"No Access"})]}),e.jsx(s.CardDescription,{children:j||x?"No access for all users.":"This will share the dashboard with all users in your "+((t==null?void 0:t.type)==="organization"?"organization":"tenant")+". Select an access level below."})]}),e.jsx(s.CardContent,{className:"space-y-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Select Access Level:"}),e.jsxs(s.HoverCard,{children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-4 w-4 p-0 text-muted-foreground hover:text-foreground",children:e.jsx(s.Info,{className:"h-3 w-3"})})}),e.jsx(s.HoverCardContent,{className:"w-80",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Share with All Users"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["This action will share the dashboard with all users in your"," ",(t==null?void 0:t.type)==="organization"?"organization":"tenant",". Users will receive the selected access level."]}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Viewer:"})," Can view the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Editor:"})," Can view and edit the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Contributor:"})," Can view, edit, and share the dashboard"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"None:"})," No access for all users"]})]})]})})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:d.map(v=>e.jsxs(s.Button,{variant:h===v.value?"default":"outline",className:"h-auto flex-col items-start gap-2 p-3",onClick:()=>p(v.value),disabled:n||c||i,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[b(v.value),e.jsx("span",{className:"font-medium",children:v.label})]}),e.jsx("p",{className:"text-left text-xs text-muted-foreground",children:v.description})]},v.value))})]})})]})})}function zt({currentUser:t,currentShare:a,isSharing:n,isUpdating:r,isRemoving:l,onUpdateAccess:o,onRemoveAccess:c,allUsersToUpdate:i,allUsersToRemove:u}){const d=x=>x==="OWNER"?"CONTRIBUTOR":x,h=a?{role:d(a.role)}:{role:"NONE"},f=i?{currentRole:d(i.currentRole),newRole:d(i.newRole)}:null,g=(x,b)=>{o(x,b)},j=()=>{c()};return e.jsx(ar,{currentUser:t,currentShare:h,isSharing:n,isUpdating:r,isRemoving:l,onUpdateAccess:g,onRemoveAccess:j,allUsersToUpdate:f,allUsersToRemove:u})}const nr=async(t,a={})=>{const n={};return a.search&&(n.search=a.search),a.type&&(n.type=a.type),a.active!==void 0&&(n.active=a.active.toString()),a.tenantId&&(n.tenantId=a.tenantId),a.limit&&(n.limit=a.limit.toString()),a.offset&&(n.offset=a.offset.toString()),a.page&&(n.page=a.page.toString()),a.pageSize&&(n.pageSize=a.pageSize.toString()),await s.getRequest("https://semaphor.cloud/api/management/v1/unified-users",t,n)};function rr(t={}){var o,c,i;const{authToken:a,tokenProps:n}=s.useSemaphorContext(),r=(n==null?void 0:n.endUserId)||(n==null?void 0:n.orgUserId),l=s.useQuery({queryKey:["unified-users",t],queryFn:()=>nr((a==null?void 0:a.accessToken)||"",t),enabled:!!(a!=null&&a.accessToken)&&!!r,retry:(u,d)=>d instanceof Error&&d.message.includes("401")||d instanceof Error&&d.message.includes("403")?!1:u<2,retryDelay:u=>Math.min(1e3*2**u,3e4)});return{users:((o=l.data)==null?void 0:o.users)||[],userContext:(c=l.data)==null?void 0:c.userContext,total:((i=l.data)==null?void 0:i.total)||0,isLoading:l.isLoading,isError:l.isError,isFetching:l.isFetching,error:l.error,refetch:l.refetch}}function Fe(t){const{debouncedSearchQuery:a,resourceId:n,resourceType:r=ae.DASHBOARD,userType:l,tenantId:o}=t,c=I.useMemo(()=>({search:a,active:!0,...l?{type:l}:{},...l==="tenant"&&o?{tenantId:o}:{}}),[a,l,o]),{users:i,isLoading:u,isError:d}=rr(c),m=_n(r,n);return{allUsers:i,isLoadingUsers:u,isErrorLoadingUsers:d,existingShares:m.data,isLoadingShares:m.isLoading,isErrorLoadingShares:m.isError,isFetchingShares:m.isFetching}}function lr({resource:t,resourceType:a,currentUser:n,onShareTabTypeChange:r,isSharing:l=!1,isUpdating:o=!1,isRemoving:c=!1}){var X,Q;const i=s.useShareSelectedTab(),u=s.useShareSelectedTenant(),{searchQuery:d,setSearchQuery:m,debouncedSearchQuery:h}=s.useShareSearchWithDebounce(),f=s.useShareSelectedUsers(),g=s.useShareUsersToRemove(),j=s.useShareUsersToUpdate(),x=s.useShareCurrentMode(),b=s.useShareOrgWideRole(),p=s.useShareManagementActions(),[v,T]=I.useState("specific_users"),L=()=>{if(i==="org")return"organization";if(i==="tenant")return"tenant"},N=()=>{if(i==="tenant"&&u)return u},{allUsers:w,existingShares:y,isLoadingUsers:k}=Fe({debouncedSearchQuery:h,resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:L(),tenantId:N()});I.useEffect(()=>{p.setCurrentContext("org-tab"),p.setCurrentMode(v==="all_users"?"allOrgUsers":"specificOrgUsers")},[p,v]);const S=Y=>{var U,_;const K=Y;if(T(K),r==null||r(K),p.setCurrentContext("org-tab"),K==="specific_users")p.setCurrentMode("specificOrgUsers");else if(K==="all_users"){p.setCurrentMode("allOrgUsers");const V=(_=(U=y==null?void 0:y.shares)==null?void 0:U.orgUsersOnly)==null?void 0:_[0];V&&V.role!==void 0&&p.setOrgWideRole(V.role)}},R=w.filter(Y=>Y.name.toLowerCase().includes(d.toLowerCase())||Y.email.toLowerCase().includes(d.toLowerCase())),C=w.filter(Y=>f.some(K=>K.id===Y.id)),B=Y=>{var V,$;const K=f.some(Z=>Z.id===Y),U=g.includes(Y),_=($=(V=y==null?void 0:y.shares)==null?void 0:V.specificOrgUsers)==null?void 0:$.some(Z=>Z.orgUserId===Y);K?p.removeSelectedUser(Y):U?p.removeUserFromRemove(Y):_||p.addSelectedUser({id:Y,role:"VIEWER"})},D=(Y,K)=>{p.updateSelectedUserRole(Y,K)},E=Y=>{p.addUserToRemove(Y),p.removeSelectedUser(Y)},A=Y=>{p.removeUserFromRemove(Y)},F=Y=>{p.removeUserFromUpdate(Y)},M=(Y,K)=>{p.setOrgWideRole(K)},O=()=>{p.setOrgWideRole((z==null?void 0:z.role)||"NONE")},z=(Q=(X=y==null?void 0:y.shares)==null?void 0:X.orgUsersOnly)==null?void 0:Q[0];I.useEffect(()=>{v==="all_users"&&z&&z.role!==void 0&&p.setOrgWideRole(z.role)},[v,z,p]);const P=k,H=!1;return n?e.jsxs(e.Fragment,{children:[e.jsx(Pt,{shareType:v,onShareTypeChange:S,currentUser:n,options:[{value:"specific_users",label:"Specific Org User",description:"Choose individual users to share with",icon:e.jsx(Be,{className:"mb-3 h-6 w-6 text-orange-500"})},{value:"all_users",label:"All Org Users",description:`Share with all ${(n==null?void 0:n.type)==="organization"?"organization":"tenant"} users`,icon:e.jsx(Ee,{className:"mb-3 h-6 w-6 text-indigo-500"}),disabled:!["POWER_USER","ADMIN","AUTHOR","SUPER_ADMIN"].includes(n.role??"")}]}),v==="specific_users"?e.jsxs("div",{className:"mt-3 space-y-2",children:[e.jsx(At,{value:d,onChange:m}),e.jsx(Mt,{selectedUsers:f,selectedUserObjects:C,onRemove:B,onRoleChange:D,getRoleOptions:Pe}),e.jsx(Lt,{usersToRemove:g,allUsers:R,onRemove:A}),e.jsx(Rt,{usersToUpdate:j,allUsers:R,onRemove:F,getRoleOptions:Pe}),e.jsx(Ft,{existingShares:y,isInitialLoading:P,isSearching:H,resource:t,onShare:()=>{},getRoleOptions:Pe,allUsers:R,currentUser:n,handleUserToggle:B,handleUserRoleChange:D,handleRemoveAccess:E,handleUpdateAccess:(Y,K,U)=>{p.addUserToUpdate({id:Y,currentRole:K,newRole:U})}})]}):e.jsx("div",{className:"mt-3",children:e.jsx(zt,{currentUser:n,currentShare:z,isSharing:l,isUpdating:o,isRemoving:c,onUpdateAccess:M,onRemoveAccess:O,allUsersToUpdate:x==="allOrgUsers"&&b!==((z==null?void 0:z.role)||"NONE")?{currentRole:(z==null?void 0:z.role)||"NONE",newRole:b}:null,allUsersToRemove:x==="allOrgUsers"&&(z==null?void 0:z.role)===void 0})})]}):null}function rt({resource:t,resourceType:a,currentUser:n,onShareTabTypeChange:r,isSharing:l=!1,isUpdating:o=!1,isRemoving:c=!1}){var V;const{searchQuery:i,debouncedSearchQuery:u,setSearchQuery:d}=s.useShareSearchWithDebounce(),m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate(),g=s.useShareCurrentMode(),j=s.useShareTenantWideRole(),x=s.useShareAllTenantsRole(),b=s.useShareSelectedTenant(),p=s.useShareManagementActions(),{data:v,isLoading:T}=Rn({enabled:(n==null?void 0:n.type)==="organization"}),[L,N]=I.useState((n==null?void 0:n.type)==="organization"?"all_tenants":"specific_tenant_users");I.useEffect(()=>{(n==null?void 0:n.type)==="tenant"?(p.setCurrentContext("tenant-dialog"),p.setCurrentMode("specificTenantUsers")):(p.setCurrentContext("tenant-tab"),p.setCurrentMode("allTenants"))},[p,n==null?void 0:n.type]);const w=$=>{var ne,q,ee,oe;N($);let Z;if($==="specific_tenant_users"?Z="specific_users":$==="all_tenant_users"||$==="all_tenants"?Z="all_users":Z="specific_users",r==null||r(Z),(n==null?void 0:n.type)==="tenant"?(p.setCurrentContext("tenant-dialog"),$==="specific_tenant_users"?p.setCurrentMode("specificTenantUsers"):$==="all_tenant_users"&&(p.setCurrentMode("allTenantUsers"),n!=null&&n.tenantId&&p.setSelectedTenant(n.tenantId))):(p.setCurrentContext("tenant-tab"),$==="specific_tenant_users"?p.setCurrentMode("specificTenantUsers"):$==="all_tenant_users"?p.setCurrentMode("allTenantUsers"):$==="all_tenants"&&p.setCurrentMode("allTenants")),$==="all_tenant_users"){const W=(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.tenantWide)==null?void 0:q[0];W&&W.role!==void 0&&p.setTenantWideRole(W.role)}else if($==="all_tenants"){const W=(oe=(ee=S==null?void 0:S.shares)==null?void 0:ee.allTenantsOnly)==null?void 0:oe[0];W&&W.role!==void 0&&p.setAllTenantsRole(W.role)}},y=$=>{p.setSelectedTenant($)},{allUsers:k,existingShares:S,isLoadingUsers:R,isErrorLoadingUsers:C,isLoadingShares:B,isErrorLoadingShares:D}=Fe({debouncedSearchQuery:u,resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"tenant",tenantId:(n==null?void 0:n.type)==="tenant"?n.tenantId:b}),E=$=>{var ee,oe;const Z=m.some(W=>W.id===$),ne=h.includes($),q=(oe=(ee=S==null?void 0:S.shares)==null?void 0:ee.specificTenantUsers)==null?void 0:oe.some(W=>W.tenantUserId===$);Z?p.removeSelectedUser($):ne?p.removeUserFromRemove($):q||p.addSelectedUser({id:$,role:"VIEWER"})},A=($,Z)=>{p.updateSelectedUserRole($,Z)},F=$=>{p.addUserToRemove($),p.removeSelectedUser($)},M=$=>{p.removeUserFromRemove($)},O=$=>{p.removeUserFromUpdate($)},z=($,Z,ne)=>{p.addUserToUpdate({id:$,currentRole:Z,newRole:ne})},P=($,Z)=>{L==="all_tenant_users"?p.setTenantWideRole(Z):L==="all_tenants"&&p.setAllTenantsRole(Z)},H=()=>{L==="all_tenant_users"?p.setTenantWideRole("VIEWER"):L==="all_tenants"&&p.setAllTenantsRole("VIEWER")},Q=(()=>{var $,Z,ne,q;return g==="allTenants"?(Z=($=S==null?void 0:S.shares)==null?void 0:$.allTenantsOnly)==null?void 0:Z[0]:g==="allTenantUsers"?(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.tenantWide)==null?void 0:q[0]:null})();I.useEffect(()=>{var $,Z,ne,q;if(L==="all_tenant_users"){const ee=(Z=($=S==null?void 0:S.shares)==null?void 0:$.tenantWide)==null?void 0:Z[0];ee&&ee.role!==void 0&&p.setTenantWideRole(ee.role)}else if(L==="all_tenants"){const ee=(q=(ne=S==null?void 0:S.shares)==null?void 0:ne.allTenantsOnly)==null?void 0:q[0];ee&&ee.role!==void 0&&p.setAllTenantsRole(ee.role)}},[L,S,p]);const Y=k.filter($=>m.some(Z=>Z.id===$.id)),K=R||B,U=C||D,_=()=>(n==null?void 0:n.type)==="tenant"||L==="all_tenants"?!0:b&&(L==="specific_tenant_users"||L==="all_tenant_users");return e.jsxs(e.Fragment,{children:[U&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsxs("div",{className:"text-center",children:[e.jsx(s.CircleAlert,{className:"mx-auto mb-2 h-8 w-8 text-destructive"}),e.jsx("p",{className:"mb-4 text-sm text-destructive",children:"Failed to load users or shares"}),e.jsx(s.Button,{variant:"outline",size:"sm",onClick:()=>window.location.reload(),children:"Retry"})]})}),!U&&n&&e.jsxs("div",{className:"max-h-[500px] space-y-4 overflow-y-auto",children:[e.jsx(Pt,{shareType:L,onShareTypeChange:w,currentUser:n,options:(n==null?void 0:n.type)==="tenant"?[{value:"all_tenant_users",label:"All Users",description:"Share with all users of this tenant",icon:e.jsx(Ee,{className:"mb-3 h-6 w-6 text-purple-500"})},{value:"specific_tenant_users",label:"Specific Users",description:"Share with specific tenant users",icon:e.jsx(Be,{className:"mb-3 h-6 w-6 text-orange-500"})}]:[{value:"all_tenants",label:"All Tenants",description:"Share with all tenants and their users",icon:e.jsx(et,{className:"mb-3 h-6 w-6 text-purple-500"})},{value:"all_tenant_users",label:"Specific Tenant",description:"Share with all users of a specific tenant",icon:e.jsx(s.House,{className:"mb-3 h-6 w-6 text-blue-500"})},{value:"specific_tenant_users",label:"Specific Tenant User",description:"Share with users of a specific tenant",icon:e.jsx(Be,{className:"mb-3 h-6 w-6 text-orange-500"})}]}),(n==null?void 0:n.type)==="organization"&&(L==="specific_tenant_users"||L==="all_tenant_users")&&e.jsxs("div",{className:"mt-4",children:[e.jsx(s.Label,{className:"mb-1 block text-sm font-medium",children:"Select Tenant"}),e.jsxs(s.Select,{value:b||"",onValueChange:y,disabled:T,children:[e.jsx(s.SelectTrigger,{className:"w-full",children:e.jsx(s.SelectValue,{placeholder:T?"Loading tenants...":"Select a tenant..."})}),e.jsx(s.SelectContent,{className:"z-[51]",children:(V=v==null?void 0:v.tenants)==null?void 0:V.map($=>e.jsx(s.SelectItem,{value:$.id,children:$.name},$.id))})]})]}),_()?e.jsx(e.Fragment,{children:L==="specific_tenant_users"?e.jsxs("div",{className:"space-y-4",children:[e.jsx(At,{value:i,onChange:d}),e.jsx(Mt,{selectedUsers:m,selectedUserObjects:Y,onRemove:$=>E($),onRoleChange:A,getRoleOptions:Pe}),e.jsx(Lt,{usersToRemove:h,allUsers:k,onRemove:M}),e.jsx(Rt,{usersToUpdate:f,allUsers:k,onRemove:O,getRoleOptions:Pe}),e.jsx(Ft,{existingShares:S,isInitialLoading:!!K,isSearching:!1,resource:t,onShare:()=>{},getRoleOptions:Pe,allUsers:k,currentUser:n,handleUserToggle:E,handleUserRoleChange:A,handleRemoveAccess:F,handleUpdateAccess:z})]}):L==="all_tenant_users"||L==="all_tenants"?e.jsx("div",{className:"mt-6",children:e.jsx(zt,{currentUser:n,currentShare:Q,isSharing:l,isUpdating:o,isRemoving:c,onUpdateAccess:P,onRemoveAccess:H,allUsersToUpdate:g==="allTenantUsers"&&((Q==null?void 0:Q.role)===void 0||j!==Q.role)||g==="allTenants"&&((Q==null?void 0:Q.role)===void 0||x!==Q.role)?{currentRole:(Q==null?void 0:Q.role)||"VIEWER",newRole:g==="allTenantUsers"?j:x}:null,allUsersToRemove:g==="allTenantUsers"&&(Q==null?void 0:Q.role)===void 0||g==="allTenants"&&(Q==null?void 0:Q.role)===void 0})}):null}):(n==null?void 0:n.type)==="organization"&&(L==="specific_tenant_users"||L==="all_tenant_users")&&e.jsx("div",{className:"mt-6 flex items-center justify-center py-8",children:e.jsxs("div",{className:"text-center",children:[e.jsx(et,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Please select a tenant to continue"})]})})]})]})}const Vt=()=>{const t=s.useShareCurrentContext(),a=s.useShareCurrentMode(),n=s.useShareSelectedUsers(),r=s.useShareUsersToRemove(),l=s.useShareUsersToUpdate(),o=s.useShareSelectedTenant(),c=s.useShareOrgWideRole(),i=s.useShareAllTenantsRole(),u=s.useShareTenantWideRole(),d=I.useMemo(()=>()=>s.buildShareData({currentContext:t,currentMode:a,selectedUsers:n,usersToRemove:r,usersToUpdate:l,selectedTenant:o,orgWideRole:c,allTenantsRole:i,tenantWideRole:u}),[t,a,n,r,l,o,c,i,u]),m=I.useMemo(()=>f=>s.validateShareData(f),[]),h=I.useMemo(()=>{if(!t||!a)return!1;switch(t){case"org-tab":return a==="specificOrgUsers"?n.length>0||r.length>0||l.length>0:!0;case"tenant-tab":if(a==="allTenantUsers"){if(!o)return!1}else if(a==="specificTenantUsers")return o?n.length>0||r.length>0||l.length>0:!1;return!0;case"tenant-dialog":return a==="specificTenantUsers"?n.length>0||r.length>0||l.length>0:!0}return!1},[t,a,n,r,l,o]);return{buildShareData:d,validateShareData:m,isCurrentStateValid:h,currentContext:t,currentMode:a,selectedUsers:n,usersToRemove:r,usersToUpdate:l,selectedTenant:o,orgWideRole:c,allTenantsRole:i,tenantWideRole:u}};function lt({resource:t,existingShares:a,isSharing:n,isRemoving:r,isUpdating:l,onShare:o,onClose:c,shareTabType:i,currentAllUsersShare:u,onRemoveAccess:d}){const m=s.useShareSelectedUsers(),h=s.useShareUsersToRemove(),f=s.useShareUsersToUpdate();s.useShareCurrentMode(),s.useShareCurrentContext();const g=s.useShareSelectedTenant();s.useShareSelectedTab();const j=s.useShareOrgWideRole(),x=s.useShareAllTenantsRole(),b=s.useShareTenantWideRole(),{buildShareData:p,validateShareData:v,isCurrentStateValid:T}=Vt(),L=n||r||l,N=()=>{var R,C,B,D;if(L)return"Updating...";if(i==="specific_users"){if(m.length===0&&h.length===0&&f.length===0)return"Select users to share with";const E=m.length+h.length+f.length;return E===0?"Select users to share with":m.length>0&&h.length>0?`Update access for ${E} user${E!==1?"s":""}`:h.length>0&&m.length===0&&f.length===0?`Remove access for ${h.length} user${h.length!==1?"s":""}`:m.length>0&&h.length===0&&f.length===0?`Share with ${m.length} user${m.length!==1?"s":""}`:f.length>0&&m.length===0&&h.length===0?`Update access for ${f.length} user${f.length!==1?"s":""}`:`Update access for ${E} user${E!==1?"s":""}`}else if(i==="all_users"){if(!u||u.role===void 0)return"Share with All Users";const E=u.role;return j===E?"Remove Access":"Update Access"}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0)return"Share with All Tenants";const A=E.role;return x===A?"Remove Access":"Update Access"}else if(i==="all_tenant_users"){const E=(D=(B=a==null?void 0:a.shares)==null?void 0:B.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0)return"Share with All Tenant Users";const A=E.role;return b===A?"Remove Access":"Update Access"}else if(i==="specific_tenant_users"){if(m.length===0&&h.length===0&&f.length===0)return"Select users to share with";const E=m.length+h.length+f.length;return E===0?"Select users to share with":m.length>0&&h.length>0?`Update access for ${E} user${E!==1?"s":""}`:h.length>0&&m.length===0&&f.length===0?`Remove access for ${h.length} user${h.length!==1?"s":""}`:m.length>0&&h.length===0&&f.length===0?`Share with ${m.length} user${m.length!==1?"s":""}`:f.length>0&&m.length===0&&h.length===0?`Update access for ${f.length} user${f.length!==1?"s":""}`:`Update access for ${E} user${E!==1?"s":""}`}return"Share"},w=()=>L||!t||i==="all_tenant_users"&&!g||i==="specific_tenant_users"&&!g?!0:!T,y=()=>{const R=p();R&&v(R)&&o(R)},k=()=>{var R,C,B,D;if(i==="all_users")if(!u||u.role===void 0){const E=p();E&&v(E)&&o(E)}else{const E=u.role;if(j===E)d==null||d();else{const F=p();if(F&&v(F)){const M={...F,updateAccess:!0};o(M)}}}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0){const A=p();A&&v(A)&&o(A)}else{const A=E.role;if(x===A)d==null||d();else{const M=p();if(M&&v(M)){const O={...M,updateAccess:!0};o(O)}}}}else if(i==="all_tenant_users"){const E=(D=(B=a==null?void 0:a.shares)==null?void 0:B.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0){const A=p();A&&v(A)&&o(A)}else{const A=E.role;if(b===A)d==null||d();else{const M=p();if(M&&v(M)){const O={...M,updateAccess:!0};o(O)}}}}},S=()=>{var R,C,B,D;if(i==="all_users"){if(!u||u.role===void 0)return"default";const E=u.role;return j===E?"destructive":"default"}else if(i==="all_tenants"){const E=(C=(R=a==null?void 0:a.shares)==null?void 0:R.allTenantsOnly)==null?void 0:C[0];if(!E||E.role===void 0)return"default";const A=E.role;return x===A?"destructive":"default"}else if(i==="all_tenant_users"){const E=(D=(B=a==null?void 0:a.shares)==null?void 0:B.tenantWide)==null?void 0:D[0];if(!E||E.role===void 0)return"default";const A=E.role;return b===A?"destructive":"default"}return"default"};return e.jsxs(s.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",onClick:c,disabled:L,children:"Close"}),(i==="specific_users"||i==="specific_tenant_users")&&e.jsx(e.Fragment,{children:(m.length>0||h.length>0||f.length>0)&&e.jsxs(s.Button,{onClick:y,disabled:!t||L,variant:"default",children:[L?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!L&&N()]})}),(i==="all_users"||i==="all_tenants"||i==="all_tenant_users")&&e.jsxs(s.Button,{onClick:k,disabled:w(),variant:S(),children:[L?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(Ee,{className:"mr-2 h-4 w-4"}),!L&&N()]})]})}function or({resource:t,isSharing:a,isRemoving:n,isUpdating:r,onShare:l,onClose:o,shareTabType:c,currentAllUsersShare:i}){const u=s.useShareSelectedUsers(),d=s.useShareUsersToRemove(),m=s.useShareUsersToUpdate();s.useShareCurrentMode(),s.useShareCurrentContext();const h=s.useShareTenantWideRole();s.useShareSelectedTenant();const{buildShareData:f,validateShareData:g,isCurrentStateValid:j}=Vt(),x=a||n||r,b=()=>{if(x)return"Updating...";if(c==="specific_users"){if(u.length===0&&d.length===0&&m.length===0)return"Select users to share with";const N=u.length+d.length+m.length;return N===0?"Select users to share with":u.length>0&&d.length>0?`Update access for ${N} user${N!==1?"s":""}`:d.length>0&&u.length===0&&m.length===0?`Remove access for ${d.length} user${d.length!==1?"s":""}`:u.length>0&&d.length===0&&m.length===0?`Share with ${u.length} user${u.length!==1?"s":""}`:m.length>0&&u.length===0&&d.length===0?`Update access for ${m.length} user${m.length!==1?"s":""}`:`Update access for ${N} user${N!==1?"s":""}`}else if(c==="all_users"){if(!i||i.role==="NONE")return"Share with All Users";const N=i.role;return h===N?"Remove Access":"Update Access"}return"Share"},p=()=>x||!t?!0:!j,v=()=>{const N=f();N&&g(N)&&l(N)},T=()=>{if(!i||i.role==="NONE"){const N=f();N&&g(N)&&l(N)}else{const N=i.role;if(h===N){const y=f();if(y&&g(y)){const k={...y,removeAccess:!0};l(k)}}else{const y=f();if(y&&g(y)){const k={...y,updateAccess:!0};l(k)}}}},L=()=>!i||i.role==="NONE"?"default":"destructive";return e.jsxs(s.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",onClick:o,disabled:x,children:"Close"}),c==="specific_users"&&e.jsx(e.Fragment,{children:(u.length>0||d.length>0||m.length>0)&&e.jsxs(s.Button,{onClick:v,disabled:!t||x,variant:"default",children:[x?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!x&&b()]})}),c==="all_users"&&e.jsxs(s.Button,{onClick:T,disabled:p(),variant:L(),children:[x?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):e.jsx(ts,{className:"mr-2 h-4 w-4"}),!x&&b()]})]})}function _t({resource:t,resourceType:a,isSharing:n,isRemoving:r,isUpdating:l,onClose:o,onShare:c,onRemoveAccess:i}){var y,k,S,R;const{currentUser:u}=Ie(),[d,m]=I.useState("specific_users"),[h,f]=I.useState("specific_users"),g=s.useShareManagementActions(),j=s.useShareSelectedTab(),x=s.useShareCurrentMode(),{existingShares:b}=Fe({debouncedSearchQuery:"",resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"tenant"}),{existingShares:p}=Fe({debouncedSearchQuery:"",resourceId:(t==null?void 0:t.id)||"",resourceType:a,userType:"organization"}),v=(k=(y=b==null?void 0:b.shares)==null?void 0:y.tenantWide)==null?void 0:k[0],T=(R=(S=p==null?void 0:p.shares)==null?void 0:S.orgUsersOnly)==null?void 0:R[0],L=()=>{if(j==="org")return h;switch(x){case"specificTenantUsers":return"specific_tenant_users";case"allTenantUsers":return"all_tenant_users";case"allTenants":return"all_tenants";default:return"specific_tenant_users"}},N=I.useCallback(()=>{g.resetShareState(),o()},[g,o]),w=(u==null?void 0:u.type)==="organization";return e.jsx(s.Dialog,{open:!0,onOpenChange:N,children:e.jsxs(s.DialogContent,{className:"z-[51] flex max-h-[80vh] max-w-3xl flex-col",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(ts,{className:"h-5 w-5"}),' Share "',t==null?void 0:t.title,'"']})}),e.jsx(s.DialogDescription,{children:w?"Share this resource with org users or tenant users. As a super admin, you can share with all users.":"Share this resource with other users in your tenant."})]}),w?e.jsxs(s.Tabs,{value:j,onValueChange:C=>{const B=C;g.setSelectedTab(B),g.resetUserSelections()},className:"mb-4 min-h-0 flex-1",children:[e.jsxs(s.TabsList,{className:"mb-2 grid w-full grid-cols-2",children:[e.jsx(s.TabsTrigger,{value:"org",children:"Org Users"}),e.jsx(s.TabsTrigger,{value:"tenant",children:"Tenant Users"})]}),e.jsx(s.TabsContent,{value:"org",className:"min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(lr,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:f,isSharing:n,isUpdating:l,isRemoving:r})})}),e.jsx(s.TabsContent,{value:"tenant",className:"min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(rt,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:C=>m(C),isSharing:n,isUpdating:l,isRemoving:r})})})]}):e.jsx("div",{className:"mb-4 min-h-0 flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsx(rt,{resource:t,resourceType:a,currentUser:u,onShareTabTypeChange:C=>m(C),isSharing:n,isUpdating:l,isRemoving:r})})}),e.jsx("div",{className:"mt-auto flex-shrink-0",children:w?j==="org"?e.jsx(lt,{resource:t,existingShares:p,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:h,currentAllUsersShare:T,onRemoveAccess:i}):e.jsx(lt,{resource:t,existingShares:b,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:L(),currentAllUsersShare:v,onRemoveAccess:i}):e.jsx(or,{resource:t,isSharing:n,isRemoving:r,isUpdating:l,onShare:c,onClose:o,shareTabType:d,currentAllUsersShare:v,onRemoveAccess:i})})]})})}function ge(t,a,n){return{resourceType:t,resourceId:a,data:{shares:n}}}function Oe(t,a,n){return{resourceType:t,resourceId:a,data:{shares:n}}}function Ut(t,a,n){const{resourceType:r,resourceId:l,shareMutation:o,removeMutation:c,existingShares:i,resetUserSelections:u}=a;if(l)switch(t.context){case"org-tab":if(t.mode==="allOrgUsers"){const d=ge(r,l,[{scope:"org_users_only",role:t.orgWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificOrgUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h}=t;if(d&&d.length>0){const f=ge(r,l,d.map(g=>({scope:"specific_org_user",orgUserId:g.id,role:g.role})));o(f,{onSuccess:()=>{u()}})}if(m&&m.length>0){const f=Oe(r,l,m.map(g=>{var x,b;const j=(b=(x=i==null?void 0:i.shares)==null?void 0:x.specificOrgUsers)==null?void 0:b.find(p=>p.orgUserId===g);return{scope:"specific_org_user",orgUserId:g,role:(j==null?void 0:j.role)||"VIEWER"}}));c(f,{onSuccess:()=>{u()}})}h&&h.length>0&&h.forEach(f=>{const g=ge(r,l,[{scope:"specific_org_user",orgUserId:f.id,role:f.newRole}]);o(g,{onSuccess:()=>{u()}})})}break;case"tenant-tab":if(t.mode==="allTenants"){const d=ge(r,l,[{scope:"all_tenants_only",role:t.allTenantsRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="allTenantUsers"){const d=ge(r,l,[{scope:"all_tenant_users",tenantId:t.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificTenantUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h,tenantId:f}=t;if(m&&m.length>0){const g=Oe(r,l,m.map(j=>{var b,p;const x=(p=(b=i==null?void 0:i.shares)==null?void 0:b.specificTenantUsers)==null?void 0:p.find(v=>v.tenantUserId===j);return{scope:"specific_tenant_user",tenantUserId:j,tenantId:f,role:(x==null?void 0:x.role)||"VIEWER"}}));c(g,{onSuccess:()=>{u()}})}if(h&&h.length>0&&h.forEach(g=>{const j=ge(r,l,[{scope:"specific_tenant_user",tenantUserId:g.id,tenantId:f,role:g.newRole}]);o(j,{onSuccess:()=>{u()}})}),d&&d.length>0){const g=ge(r,l,d.map(j=>({scope:"specific_tenant_user",tenantUserId:j.id,tenantId:f,role:j.role})));o(g,{onSuccess:()=>{u()}})}}break;case"tenant-dialog":if(t.mode==="allTenantUsers")if(t.removeAccess){const d=Oe(r,l,[{scope:"all_tenant_users",role:"VIEWER"}]);c(d,{onSuccess:()=>{u()}})}else if(t.updateAccess){const d=ge(r,l,[{scope:"all_tenant_users",tenantId:n==null?void 0:n.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else{const d=ge(r,l,[{scope:"all_tenant_users",tenantId:n==null?void 0:n.tenantId,role:t.tenantWideRole}]);o(d,{onSuccess:()=>{u()}})}else if(t.mode==="specificTenantUsers"){const{selectedUsers:d,usersToRemove:m,usersToUpdate:h}=t;if(d&&d.length>0){const f=ge(r,l,d.map(g=>({scope:"specific_tenant_user",tenantUserId:g.id,role:g.role})));o(f,{onSuccess:()=>{u()}})}if(m&&m.length>0){const f=Oe(r,l,m.map(g=>{var x,b;const j=(b=(x=i==null?void 0:i.shares)==null?void 0:x.specificTenantUsers)==null?void 0:b.find(p=>p.tenantUserId===g);return{scope:"specific_tenant_user",tenantUserId:g,role:(j==null?void 0:j.role)||"VIEWER"}}));c(f,{onSuccess:()=>{u()}})}h&&h.length>0&&h.forEach(f=>{const g=ge(r,l,[{scope:"specific_tenant_user",tenantUserId:f.id,role:f.newRole}]);o(g,{onSuccess:()=>{u()}})})}break}}function $t(t,a,n,r){var d,m,h,f,g,j;const{resourceType:l,resourceId:o,removeMutation:c,existingShares:i,resetUserSelections:u}=r;if(o)if(t.length>0){const x=Oe(l,o,t.map(b=>{var v,T;const p=(T=(v=i==null?void 0:i.shares)==null?void 0:v.specificTenantUsers)==null?void 0:T.find(L=>L.tenantUserId===b);return{scope:"specific_tenant_user",tenantUserId:b,role:(p==null?void 0:p.role)||"VIEWER"}}));c(x,{onSuccess:()=>{u()},onError:b=>{console.error("Remove access failed:",b)}})}else{const x=a==="tenant"&&n==="allTenants",b=a==="tenant"&&n==="allTenantUsers";if(x){const p=(m=(d=i==null?void 0:i.shares)==null?void 0:d.allTenantsOnly)==null?void 0:m[0];if(p){const v=Oe(l,o,[{scope:"all_tenants_only",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove all-tenants access failed:",T)}})}}else if(b){const p=(f=(h=i==null?void 0:i.shares)==null?void 0:h.tenantWide)==null?void 0:f[0];if(p){const v=Oe(l,o,[{scope:"all_tenant_users",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove all-tenant-users access failed:",T)}})}}else{const p=(j=(g=i==null?void 0:i.shares)==null?void 0:g.orgUsersOnly)==null?void 0:j[0];if(p){const v=Oe(l,o,[{scope:"org_users_only",role:p.role}]);c(v,{onSuccess:()=>{u()},onError:T=>{console.error("Remove org-wide access failed:",T)}})}}}}function ir(t,a,n){const r=s.useShareManagementActions(),l=s.useShareUsersToRemove(),o=s.useShareSelectedTab(),c=s.useShareCurrentMode(),{currentUser:i}=Ie(),{existingShares:u}=Fe({debouncedSearchQuery:"",resourceId:t||"",resourceType:ae.DASHBOARD,userType:"tenant"}),d=I.useCallback(()=>{r.resetUserSelections()},[r]),m=I.useCallback(f=>{if(!t)return;const g={resourceType:ae.DASHBOARD,resourceId:t,shareMutation:a,removeMutation:n,existingShares:u,resetUserSelections:d};Ut(f,g,i)},[t,a,n,u,d,i]),h=I.useCallback(()=>{if(!t)return;const f={resourceType:ae.DASHBOARD,resourceId:t,removeMutation:n,existingShares:u,resetUserSelections:d};$t(l,o||"",c||"",f)},[t,a,n,u,d,l,o,c]);return{handleShareSubmit:m,handleRemoveAccess:h}}function cr(t,a,n){const{currentUser:r}=Ie(),l=s.useShareManagementActions(),o=s.useShareUsersToRemove(),c=s.useShareSelectedTab(),i=s.useShareCurrentMode(),{existingShares:u}=Fe({debouncedSearchQuery:"",resourceId:t||"",resourceType:ae.VISUAL,userType:"tenant"}),d=I.useCallback(()=>{l.resetUserSelections()},[l]),m=I.useCallback(f=>{if(!t)return;const g={resourceType:ae.VISUAL,resourceId:t,shareMutation:a,removeMutation:n,existingShares:u,resetUserSelections:d};Ut(f,g,r)},[t,a,n,u,d,r]),h=I.useCallback(()=>{if(!t)return;const f={resourceType:ae.VISUAL,resourceId:t,removeMutation:n,existingShares:u,resetUserSelections:d};$t(o,c||"",i||"",f)},[t,a,n,u,d,o,c,i]);return{handleShareSubmit:m,handleRemoveAccess:h}}function dr(t){const a=t.toUpperCase().indexOf("WHERE"),n=t.toUpperCase().indexOf("GROUP BY"),r=t.toUpperCase().indexOf("LIMIT"),l=t.toUpperCase().indexOf("ORDER BY");let o=t.length;if(l!==-1&&(o=l),r!==-1&&r<o&&(o=r),a!==-1){const c=t.substring(0,a),i=t.substring(a);return`${c} {{ filters | where }} AND ${i.substring(6)}`}else if(n!==-1){const c=t.substring(0,n),i=t.substring(n);return`${c} {{ filters | where }} ${i}`}else{const c=t.substring(0,o),i=t.substring(o);return console.log("beforeClause",c),console.log("afterClause",i),i?`${c} {{ filters | where }} ${i}`:`${c.replace(/;$/,"")} {{ filters | where }}`}}function Ps(t){const[a,n]=I.useState(null),[r,l]=I.useState(null);return I.useEffect(()=>{if(!t||t.trim()===""){n(null),l(null);return}(async()=>{try{if(!t.startsWith("http://")&&!t.startsWith("https://"))throw new Error(`Invalid URL format: ${t}`);try{new URL(t)}catch{throw new Error(`Invalid URL: ${t}`)}const i=`${t.endsWith("/")?t:`${t}/`}index.js`;try{if(!(await fetch(i,{method:"HEAD"})).ok)throw new Error(`Module not found at ${i}`)}catch{}const u=await import(i);if(typeof u.useChartStore!="function")throw new Error("useChartStore is not a function");n(()=>u.useChartStore),l(null)}catch(c){const i=c instanceof Error?c.message:"Unknown error";console.error("Failed to load remote chart store:",i),l(i),n(null)}})()},[t]),a}function ur(t,a){if(t.length===0)return"";if(a){const n=t.find(r=>r.id===a);if(n){const r=n.tabTitle;if(r=="All__Header")return t[0].id;if(r&&r.endsWith("__Header")){const o=r.split("__")[0],c=t.find(i=>i.tabTitle===o);return c?c.id:t[0].id}return a}}return t[0].id}async function ot(t,a,n){if(!t||!a)throw new Error("Missing auth token or visual ID");const r=["resource-by-id","visual",a],l=n.getQueryData(r);if(l)return console.log("Using cached visual data for:",a),{data:l,fromCache:!0};console.log("Fetching visual data from network for:",a);const o=s.ue.loading("Loading visual...",{position:"top-center"});try{const c=await fetch(`https://semaphor.cloud/api/management/v1/visuals/${a}`,{headers:{Authorization:`Bearer ${t}`}});if(!c.ok)throw new Error("Failed to load visual");const i=await c.json();return n.setQueryData(r,i),s.ue.dismiss(o),{data:i,fromCache:!1}}catch(c){throw s.ue.dismiss(o),c}}function mr(t,a,n,r,l){const o=t.frameObject;a(o);const c=o.cards.find(i=>i.id===o.activeCardId);c&&n(c),r(!0),l(!0)}function hr(){var f;const{setCardSql:t}=s.useEditorActions(),a=s.useEditorStore(g=>g.frame),n=s.useEditorStore(g=>g.card),r=Ps(((f=n.customCardPreferences)==null?void 0:f.url)||""),l=s.useEditorStore(g=>g.selectedSchemaName),o=s.useEditorStore(g=>g.selectedDatamodelId),c=s.useEditorStore(g=>g.selectedDatabaseName),i=s.useEditorStore(g=>g.selectedTableName),u=s.useEditorStore(g=>g.selectedConnectionId),d=s.useEditorStore(g=>g.isShowingVisual),m=n.sql;return{getUpdatedFrame:I.useCallback(()=>{var p;let g=m;m&&!m.includes("{{")&&(g=dr(m),t(g));const j=(p=r==null?void 0:r.getState())==null?void 0:p.settings,x={...n,dataSource:n.dataSource||{mode:"directSource"},lastSelectedSchema:l,lastSelectedDatamodelId:o,lastSelectedDatabase:c,lastSelectedTable:i,connectionId:u,sql:g,customCfg:d?n.customCfg:null,...j&&{customCardPreferences:{...n.customCardPreferences,settings:j}}},b=a.cards.map(v=>v.id===n.id?x:v);return{...a,cards:b,activeCardId:ur(b,a.activeCardId)}},[n,a,d,l,o,c,i,u,t,r,m])}}function zs(){const{authToken:t}=s.useSemaphorContext(),a=s.useQueryClient(),n=s.useSelectedVisual(),{selectVisual:r}=s.useManagementActions(),{setFrame:l,setCard:o}=s.useEditorActions(),{setIsDashboardEditing:c,setIsVisualEditing:i,setSelectedFrameId:u,addFrame:d,setIsDashboardPanelOpen:m}=s.useDashboardActions(),h=s.useDashboardStore(x=>x.selectedSheetId),f=$n((n==null?void 0:n.id)||"",{enabled:!!(n!=null&&n.id)&&!!(t!=null&&t.accessToken)}),g=I.useCallback(async x=>{try{r(x);const{data:b,fromCache:p}=await ot((t==null?void 0:t.accessToken)||"",x.id,a);return mr(b,l,o,c,i),{success:!0,fromCache:p}}catch(b){return console.error("Error editing visual:",b),{success:!1,error:"Failed to load visual for editing"}}},[t==null?void 0:t.accessToken,a,r,l,o,c,i]),j=I.useCallback(async x=>{try{if(r(x),!h)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:b,fromCache:p}=await ot((t==null?void 0:t.accessToken)||"",x.id,a),v=b.frameObject;if(!v)return{success:!1,error:"Visual has no frame data"};const T={...v,id:s.v4()};return d(h,T,"end"),c(!0),u(T.id),m(!1),{success:!0,fromCache:p}}catch(b){return console.error("Error adding visual:",b),{success:!1,error:"Failed to add visual to dashboard"}}},[t==null?void 0:t.accessToken,a,r,h,d,c,u,m]);return{visual:f.data,isLoading:f.isLoading,isError:f.isError,error:f.error,handleEditLibraryVisual:g,handleAddLibraryVisual:j,getUpdatedFrame:hr().getUpdatedFrame,refetch:f.refetch}}function xr(){const[t,a]=I.useState(""),[n,r]=I.useState(!1),[l,o]=I.useState(""),[c,i]=I.useState(""),[u,d]=I.useState(!1),[m,h]=I.useState(null),[f,g]=I.useState(!1),[j,x]=I.useState(null),[b,p]=I.useState(null),{setIsDashboardEditing:v,setIsVisualEditing:T}=s.useDashboardActions(),{handleEditLibraryVisual:L,handleAddLibraryVisual:N}=zs(),{resources:w,isLoading:y,isError:k,createResource:S,updateResource:R,deleteResource:C,duplicateResource:B,shareResource:D,isCreating:E,isDeleting:A,removeResourceShares:F,isSharing:M,isRemovingShares:O,isUpdatingShares:z}=Yn(()=>{g(!1),x(null)},()=>{r(!1),o(""),i("")}),{handleShareSubmit:P,handleRemoveAccess:H}=cr((m==null?void 0:m.id)||null,D,F);Ie();const X=w.filter(J=>{var re,de;return((re=J==null?void 0:J.title)==null?void 0:re.toLowerCase().includes(t.toLowerCase()))||((de=J==null?void 0:J.description)==null?void 0:de.toLowerCase().includes(t.toLowerCase()))}),Q=J=>new Date(J).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Y=()=>{l.trim()&&S({title:l,description:c,isPrivate:!1})},K=J=>{x(J),g(!0)},U=()=>{j&&C(j.id)},{startUpdating:_,stopUpdating:V,isUpdating:$}=It(),Z=(J,re)=>{const de=re.title!==void 0?"title":"description";_(J,de),R({resourceId:J,data:re},{onSuccess:()=>{V(J,de)},onError:()=>{V(J,de)}})},ne=J=>{p(J),B(J,{onSettled:()=>p(null)})},q=J=>{L(J)},ee=J=>{N(J)},oe=J=>{const re=w.find(de=>de.id===J);re&&R({resourceId:J,data:{isPrivate:!re.isPrivate}})},W=J=>{h(J),d(!0)};return s.useShareUsersToRemove(),s.useShareManagementActions(),Fe({debouncedSearchQuery:"",resourceId:(m==null?void 0:m.id)||"",resourceType:ae.VISUAL,userType:"tenant"}),y?e.jsx(Tt,{}):k?e.jsx(s.ScrollArea,{className:"w-full flex-1 pr-2",children:e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx("p",{className:"text-sm text-destructive",children:"Failed to load visuals"}),e.jsx(s.Button,{variant:"outline",size:"sm",className:"mt-2",onClick:()=>window.location.reload(),children:"Retry"})]})}):e.jsxs("div",{className:"mt-1 flex h-full flex-1 flex-col gap-3 px-4",children:[e.jsx("div",{className:"px-1",children:n?e.jsxs(s.Card,{className:"border-dashed p-4 pb-2",children:[e.jsx(s.CardHeader,{className:"px-0 pb-3 pt-0",children:e.jsx(s.CardTitle,{className:"text-sm",children:"New Visual"})}),e.jsxs(s.CardContent,{className:"space-y-3 px-0 pb-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"title",className:"text-xs",children:"Title"}),e.jsx(s.Input$1,{id:"title",placeholder:"Enter visual title...",value:l,onChange:J=>o(J.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"description",className:"text-xs",children:"Description (optional)"}),e.jsx(s.Input$1,{id:"description",placeholder:"Enter visual description...",value:c,onChange:J=>i(J.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"flex gap-2 pt-2",children:[e.jsx(s.Button,{onClick:Y,size:"sm",className:"h-7 text-xs",disabled:!l.trim()||E,children:E?"Creating...":"Create"}),e.jsx(s.Button,{onClick:()=>{r(!1),o(""),i("")},variant:"outline",size:"sm",className:"h-7 text-xs",disabled:E,children:"Cancel"})]})]})]}):e.jsxs(s.Button,{onClick:()=>r(!0),className:"h-8 w-full",size:"sm",disabled:E,children:[e.jsx(s.Plus,{className:"mr-2 h-3.5 w-3.5"}),E?"Creating...":"Create New Visual"]})}),e.jsx("div",{className:"space-y-2 px-1",children:e.jsx(s.Input$1,{id:"search",placeholder:"Search by title or description...",value:t,onChange:J=>a(J.target.value),className:"h-8"})}),e.jsx("div",{className:"mb-4 flex flex-1 flex-col",children:e.jsx("div",{className:"flex flex-1 basis-0 flex-col gap-2 overflow-y-auto p-1",children:X.length===0?e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx(s.ChartPie,{className:"mx-auto mb-2 h-8 w-8 opacity-50"}),e.jsx("p",{className:"text-sm",children:"No visuals found"})]}):X.map(J=>e.jsx(Kn,{visual:J,onAddVisual:ee,onEditVisual:q,onUpdateVisual:Z,onDeleteClick:K,onDuplicateVisual:ne,onTogglePrivacy:oe,onShareVisual:W,isDeleting:A,isDuplicating:b===J.id,isTitleUpdating:$(J.id,"title"),isDescriptionUpdating:$(J.id,"description"),formatDate:Q},J.id))})}),u&&m&&e.jsx(_t,{resource:m,resourceType:ae.VISUAL,onShare:P,isSharing:M,isRemoving:O,isUpdating:z,onClose:()=>{d(!1),h(null)},onRemoveAccess:H}),e.jsx(s.AlertDialog,{open:f,onOpenChange:J=>{!J&&A||(g(J),J||x(null))},children:e.jsxs(s.AlertDialogContent,{children:[e.jsxs(s.AlertDialogHeader,{children:[e.jsx(s.AlertDialogTitle,{children:"Delete Visual"}),e.jsxs(s.AlertDialogDescription,{children:['Are you sure you want to delete "',j==null?void 0:j.title,'"? This action cannot be undone.']})]}),e.jsxs(s.AlertDialogFooter,{children:[e.jsx(s.AlertDialogCancel,{disabled:A,children:"Cancel"}),e.jsx(s.AlertDialogAction,{onClick:J=>{J.preventDefault(),J.stopPropagation(),U()},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:A,children:A?"Deleting...":"Delete"})]})]})})]})}function pr({dashboard:t,isDeleting:a,isDuplicating:n,isTitleUpdating:r=!1,isDescriptionUpdating:l=!1,onLoadDashboard:o,onUpdateDashboard:c,onDeleteClick:i,onDuplicateDashboard:u,onShareDashboard:d,formatDate:m,onDashboardItemClick:h}){var w;const{selectDashboard:f}=s.useManagementActions(),g=s.useIsDashboardSelected(t.id),[j,x]=I.useState(!1),[b,p]=I.useState(!1),v=s.useDashboardStore(y=>y.actions.setIsDashboardPanelOpen);I.useEffect(()=>{n?(x(!0),p(!0)):b&&(x(!1),p(!1))},[n,b]);const T=()=>t.ownership.isOwner?t.ownership.status==="private"?e.jsx(bt,{className:"h-3 w-3 text-purple-500"}):e.jsx(Ee,{className:"h-3.5 w-3.5 text-blue-600"}):e.jsx(Be,{className:"h-3.5 w-3.5 text-slate-500"}),L=()=>e.jsx(s.LayoutDashboard,{className:"h-4 w-4 text-slate-400"}),N=()=>{f(t),o(t.id),h==null||h(t.id)};return e.jsxs("div",{className:s.cn("group relative flex cursor-pointer items-start gap-3 px-4 py-3 dark:border-slate-800","cursor-pointer transition-colors duration-150 hover:bg-slate-50 dark:hover:bg-slate-900/50",t.ownership.isOwner&&"border-blue-200 dark:border-blue-800",g&&"rounded-md bg-slate-50 ring-1 ring-inset ring-border dark:bg-slate-900/50"),tabIndex:0,onClick:N,children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-md bg-slate-100 dark:bg-slate-800",children:L()})}),e.jsxs("div",{className:"flex w-full items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(s.EditableText,{inputClassName:"text-sm font-medium text-slate-900 dark:text-slate-100",value:t.title,onSave:y=>c==null?void 0:c(t.id,{title:y}),isEditable:t.permissions.canEdit&&g,isPending:r,placeholder:"Untitled Dashboard",displayClassName:"line-clamp-1 max-w-[220px] text-sm font-medium text-slate-900 dark:text-slate-100"})}),e.jsx("div",{className:"shrink-0",children:T()})]}),e.jsx("div",{className:"mt-0.5",children:e.jsx(s.EditableText,{inputClassName:"line-clamp-1 text-xs text-slate-500 dark:text-slate-400",value:t.description||"",onSave:y=>c==null?void 0:c(t.id,{description:y}),isEditable:t.permissions.canEdit&&g,isPending:l,placeholder:"No description",displayClassName:"mt-0.5 max-w-[250px] line-clamp-1 text-xs text-slate-500 dark:text-slate-400"})})]}),e.jsx("div",{className:"absolute right-3 top-2 flex items-center justify-between text-xs text-muted-foreground",children:e.jsx("div",{className:s.cn("flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100"),children:e.jsxs(s.DropdownMenu,{modal:!1,open:j,onOpenChange:x,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 hover:bg-slate-200 dark:hover:bg-slate-700",onClick:y=>y.stopPropagation(),children:e.jsx(s.Ellipsis,{className:"h-3 w-3"})})}),e.jsxs(s.DropdownMenuContent,{align:"end",className:"z-[51] w-40",children:[e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.preventDefault(),y.stopPropagation(),u(t.id)},disabled:n,children:[n?e.jsx(s.LoaderCircle,{className:"mr-2 h-3 w-3 animate-spin"}):e.jsx(s.Copy,{className:"mr-2 h-3 w-3"}),n?"Duplicating...":"Duplicate"]}),t.permissions.canEdit&&e.jsx(e.Fragment,{children:e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),d(t)},children:[e.jsx(Ee,{className:"mr-2 h-3 w-3"}),"Share"]})}),t.permissions.canDelete&&e.jsxs(e.Fragment,{children:[e.jsx(s.DropdownMenuSeparator,{}),e.jsxs(s.DropdownMenuItem,{onClick:y=>{y.stopPropagation(),i(t),v(!1)},className:"text-destructive",disabled:a,children:[e.jsx(s.Trash2,{className:"mr-2 h-3 w-3"}),a?"Deleting...":"Delete"]})]}),e.jsx(s.DropdownMenuSeparator,{}),e.jsxs("div",{className:"space-y-1 px-2 py-2 text-xs text-slate-500 dark:text-slate-400",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Be,{className:"h-3 w-3"}),e.jsx("span",{children:((w=t.ownership.createdBy)==null?void 0:w.name)||"Unknown"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(s.Calendar,{className:"h-3 w-3"}),e.jsx("span",{children:m(t.lastModified)})]})]})]})]})})})]})]},t.id)}function fr({onRetry:t}){return e.jsx(s.ScrollArea,{className:"w-full flex-1 pr-2",children:e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx("p",{className:"text-sm text-destructive",children:"Failed to load dashboards"}),e.jsx(s.Button,{variant:"outline",size:"sm",className:"mt-2",onClick:t,children:"Retry"})]})})}function gr(t){const[a,n]=I.useState(""),[r,l]=I.useState(!1),[o,c]=I.useState(""),[i,u]=I.useState(""),[d,m]=I.useState(!1),[h,f]=I.useState(null),[g,j]=I.useState(!1),[x,b]=I.useState(null),[p,v]=I.useState(null),T=s.useManagementStore(W=>W.lastSelectedDashboard),L=s.useManagementStore(W=>W.actions.selectDashboard);s.useShareManagementActions(),s.useShareUsersToRemove(),s.useShareSelectedTab(),s.useShareCurrentMode();const{resources:N,isLoading:w,isError:y,createResource:k,updateResource:S,deleteResource:R,duplicateResource:C,isCreating:B,isDeleting:D,isSharing:E,isRemovingShares:A,isUpdatingShares:F,shareResource:M,removeResourceShares:O}=qn(()=>{j(!1),b(null),T&&L(T)},()=>{l(!1),c(""),u("")}),{handleShareSubmit:z,handleRemoveAccess:P}=ir((h==null?void 0:h.id)||null,M,O),{currentUser:H}=Ie(),X=N.filter(W=>{var J,re;return((J=W==null?void 0:W.title)==null?void 0:J.toLowerCase().includes(a.toLowerCase()))||((re=W==null?void 0:W.description)==null?void 0:re.toLowerCase().includes(a.toLowerCase()))}),Q=W=>new Date(W).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Y=()=>{o.trim()&&k({title:o,description:i,isPrivate:!1})},K=W=>{var J;(J=t.onLoadDashboard)==null||J.call(t,W)},U=W=>{b(W),j(!0)},_=()=>{x&&R(x.id)},V=W=>{v(W),C(W,{onSettled:()=>v(null)})},{startUpdating:$,stopUpdating:Z,isUpdating:ne}=It(),q=(W,J)=>{const re=J.title!==void 0?"title":"description";$(W,re),S({resourceId:W,data:J},{onSuccess:()=>{Z(W,re)},onError:()=>{Z(W,re)}})},ee=W=>{const J=N.find(re=>re.id===W);J&&S({resourceId:W,data:{isPrivate:!J.isPrivate}})},oe=W=>{f(W),H==null||H.type,m(!0)};return Fe({debouncedSearchQuery:"",resourceId:(h==null?void 0:h.id)||"",resourceType:ae.DASHBOARD,userType:"tenant"}),w?e.jsx(Tt,{}):y?e.jsx(fr,{onRetry:()=>window.location.reload()}):e.jsxs("div",{className:"mt-1 flex h-full flex-1 flex-col gap-3 px-4",children:[e.jsx("div",{className:"px-1",children:r?e.jsxs(s.Card,{className:"border-dashed p-4 pb-2",children:[e.jsx(s.CardHeader,{className:"px-0 pb-3 pt-0",children:e.jsx(s.CardTitle,{className:"text-sm",children:"New Dashboard"})}),e.jsxs(s.CardContent,{className:"space-y-3 px-0 pb-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"title",className:"text-xs",children:"Title"}),e.jsx(s.Input$1,{id:"title",placeholder:"Enter dashboard title...",value:o,onChange:W=>c(W.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"description",className:"text-xs",children:"Description (optional)"}),e.jsx(s.Input$1,{id:"description",placeholder:"Enter dashboard description...",value:i,onChange:W=>u(W.target.value),className:"h-7 text-sm"})]}),e.jsxs("div",{className:"flex gap-2 pt-2",children:[e.jsx(s.Button,{onClick:Y,size:"sm",className:"h-7 text-xs",disabled:!o.trim()||B,children:B?"Creating...":"Create"}),e.jsx(s.Button,{onClick:()=>{l(!1),c(""),u("")},variant:"outline",size:"sm",className:"h-7 text-xs",disabled:B,children:"Cancel"})]})]})]}):e.jsxs(s.Button,{onClick:()=>l(!0),className:"h-8 w-full",size:"sm",disabled:B,children:[e.jsx(s.Plus,{className:"mr-2 h-3.5 w-3.5"}),B?"Creating...":"Create New Dashboard"]})}),e.jsx("div",{className:"space-y-2 px-1",children:e.jsx(s.Input$1,{id:"search",placeholder:"Search by title or description...",value:a,onChange:W=>n(W.target.value),className:"h-8"})}),e.jsx("div",{className:"mb-4 flex flex-1 flex-col",children:e.jsx("div",{className:"flex flex-1 basis-0 flex-col gap-2 overflow-y-auto p-1",children:X.length===0?e.jsxs("div",{className:"py-8 text-center text-muted-foreground",children:[e.jsx(qa,{className:"mx-auto mb-2 h-8 w-8 opacity-50"}),e.jsx("p",{className:"text-sm",children:"No dashboards found"})]}):X.map(W=>e.jsx(pr,{dashboard:W,isDeleting:D,isDuplicating:p===W.id,isTitleUpdating:ne(W.id,"title"),isDescriptionUpdating:ne(W.id,"description"),onLoadDashboard:K,onEditDashboard:t.onEditDashboard,onUpdateDashboard:q,onDeleteClick:U,onDuplicateDashboard:V,onTogglePrivacy:ee,onShareDashboard:oe,formatDate:Q,onDashboardItemClick:t.onDashboardItemClick},W.id))})}),d&&h&&e.jsx(_t,{resource:h,resourceType:ae.DASHBOARD,onShare:z,isSharing:E,isRemoving:A,isUpdating:F,onClose:()=>{m(!1),f(null)},onRemoveAccess:P}),e.jsx(s.AlertDialog,{open:g,onOpenChange:W=>{!W&&D||(j(W),W||b(null))},children:e.jsxs(s.AlertDialogContent,{children:[e.jsxs(s.AlertDialogHeader,{children:[e.jsx(s.AlertDialogTitle,{children:"Delete Dashboard"}),e.jsxs(s.AlertDialogDescription,{children:['Are you sure you want to delete "',x==null?void 0:x.title,'"? This action cannot be undone.']})]}),e.jsxs(s.AlertDialogFooter,{children:[e.jsx(s.AlertDialogCancel,{disabled:D,children:"Cancel"}),e.jsx(s.AlertDialogAction,{onClick:W=>{W.preventDefault(),W.stopPropagation(),_()},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:D,children:D?"Deleting...":"Delete"})]})]})})]})}function qt({isOpen:t,onClose:a,className:n,onDashboardItemClick:r}){s.useDashboardStore(g=>g.dashboard);const{setDashboard:l,addSheet:o}=s.useDashboardStore(g=>g.actions),{currentUser:c}=Ie(),i=c,[u,d]=s.useLocalStorageState("resource-management-active-tab","dashboards"),m=Ot(a,{enabled:t}),h=g=>{},f=g=>{console.log("Editing dashboard:",g)};return e.jsx(s.TooltipProvider$1,{children:e.jsxs("div",{ref:m,className:s.cn("absolute inset-y-0 left-0 z-[51] flex w-96 flex-col border-r bg-background shadow-lg transition-transform duration-300 ease-in-out",t?"translate-x-0":"hidden -translate-x-full",n),children:[e.jsxs("div",{className:"flex items-center justify-between p-4",children:[e.jsx("div",{className:"flex items-center gap-3",children:i&&e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-muted bg-muted/30 px-2 py-1",children:[e.jsxs(s.Avatar,{className:"h-5 w-5",children:[e.jsx(s.AvatarImage,{alt:i.name}),e.jsx(s.AvatarFallback,{className:"text-xs",children:i.name.charAt(0).toUpperCase()})]}),e.jsx("span",{className:"text-xs font-medium",children:i.name})]})}),e.jsx(s.TooltipContent,{side:"bottom",className:"ml-2 max-w-xs",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"font-medium",children:i.name}),e.jsx("div",{className:"text-xs text-muted-foreground",children:i.email}),i.role&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Role:"," ",s.toTitleCase(i.role.replace(/_/g," "))]}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["ID: ",i.id]})]})})]})})}),e.jsx(s.IconButton,{className:"h-6 p-1 text-muted-foreground hover:text-foreground",onClick:a,tooltip:"Hide Dashboard Management",children:e.jsx(s.X,{className:"h-3.5 w-3.5"})})]}),e.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:e.jsxs(s.Tabs,{value:u,onValueChange:d,className:"flex h-9 grow flex-col",children:[e.jsx("div",{className:"px-5",children:e.jsxs(s.TabsList,{className:"grid h-8 w-full grid-cols-2",children:[e.jsx(s.TabsTrigger,{value:"dashboards",className:"h-6",children:"Dashboards"}),e.jsx(s.TabsTrigger,{value:"visuals",className:"h-6",children:"Visuals"})]})}),e.jsx(s.TabsContent,{value:"dashboards",className:"flex-1",children:e.jsx(gr,{onLoadDashboard:h,onEditDashboard:f,onDashboardItemClick:r})}),e.jsx(s.TabsContent,{value:"visuals",className:"flex-1",children:e.jsx(xr,{})})]})})]})})}function jr(){var K,U;const{authToken:t,tokenProps:a}=s.useSemaphorContext();s.useDashboardStore(_=>_.theme);const n=s.useDashboardStore(_=>_.lenses),r=s.useDashboardStore(_=>_.selectedLensId),l=n==null?void 0:n.find(_=>_.id===r),o=s.useDashboardStore(_=>_.dashboard);s.useDashboardStore(_=>_.selectedSheetId);const c=s.useDashboardStore(_=>_.isDashboardEditing),i=s.useEditorStore(_=>_.card),u=s.useEditorStore(_=>_.selectedConnectionId),[d,m]=I.useState(!1),h=s.useDashboardStore(_=>_.isDashboardPanelOpen),f=s.useDashboardStore(_=>_.actions.setIsDashboardPanelOpen),g=s.useDashboardStore(_=>_.filterValues),j=s.useDashboardStore(_=>_.isVisualEditing),x=s.useManagementStore(_=>_.selectedDashboard),b=s.useManagementStore(_=>_.initialDashboard),p=x?(U=x==null?void 0:x.permissions)==null?void 0:U.canEdit:(K=b==null?void 0:b.permissions)==null?void 0:K.canEdit,v=s.useDashboardStore(_=>_.showFilters);s.useDashboardStore(_=>_.showDashboardJSON);const T=s.useDashboardStore(_=>_.onSaveFunction),L=s.useDashboardStore(_=>_.actions.setShowFilters),{addFrame:N,setSelectedFrameId:w}=s.useDashboardStore(_=>_.actions),{getSelectedSheet:y,setIsDashboardEditing:k,setShowDashboardJSON:S}=s.useDashboardStore(_=>_.actions),R=y(),{setInitialDashboard:C}=s.useManagementStore(_=>_.actions),{resources:B}=Fs(ae.DASHBOARD);I.useEffect(()=>{if(B&&B.length>0){const _=o==null?void 0:o.id;if(_){const V=B.find($=>$.id===_);V&&C(V)}}},[B,o==null?void 0:o.id,C]);const D=a.orgUserId||a.tenantId,E=c&&!j&&D&&p;function A(){var Z,ne;const _=i.dataSource;if(_)return _;const V=(ne=(Z=o.aiContext)==null?void 0:Z.selectedEntities)==null?void 0:ne[0],$=V==null?void 0:V.type;if(V)return{connectionId:V.connectionId,connectionType:V.connectionType,type:$,selectedEntities:[V]}}const F=()=>{if(!c||!R)return;const V={dataSource:A(),mode:"explorer",connectionId:u,id:s.v4(),title:"Title",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},type:"bar",sql:"",data:[]},$={id:s.v4(),cards:[V],activeCardId:V.id};N(R.id,$),w($.id)},M=()=>{k(!0)},[O,z]=I.useState(!1),P=Et(ae.DASHBOARD);async function H(){const _=xs(o);z(!0);const V={template:_};P.mutate({resourceId:_.id,data:V},{onSuccess:()=>{z(!1),s.ue.success("Dashboard saved!")},onError:()=>{z(!1),s.ue.error("Failed to save dashboard")}})}async function X(){if(m(!0),!r||!l)return;const _=xs(o),V=JSON.stringify(_),$={...l,template:V,filterValues:g};await Ls($,t==null?void 0:t.accessToken),s.ue.success("Lens saved"),T==null||T(_),m(!1)}if(j)return null;const Q=(l==null?void 0:l.name)||o.title,Y=a.orgUserId||a.tenantId&&a.endUserId&&a.endUserEmail;return e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b py-2 pl-3 pr-2",role:"dashboard-controls",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[Y&&e.jsx(s.IconButton,{"aria-label":"Manage Dashboards",tooltip:"Manage Dashboards",onClick:()=>f(!0),className:"h-7 p-2",children:e.jsx(Qa,{className:"h-4 w-4"})}),!j&&e.jsx(s.Label,{children:Q})]}),e.jsxs("div",{className:"flex gap-2",children:[!1,!j&&e.jsx(Cn,{}),!j&&e.jsx(kt,{}),c&&!j&&D&&e.jsx(vn,{}),!j&&D&&e.jsx(Nn,{}),c&&!j&&e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",size:"sm",disabled:!c,onClick:F,children:[e.jsx(s.Plus,{className:"mr-2 h-4 w-4"}),"Frame"]}),!j&&!c&&e.jsxs(s.Button,{variant:"outline",className:"h-7 p-2",onClick:M,size:"sm",children:[e.jsx(s.Pencil,{className:"mr-2 h-4 w-4"}),"Edit"]}),c&&!j&&e.jsxs(s.Button,{variant:"secondary",className:"h-7 p-2",onClick:()=>{k(!1),S(!1)},children:[e.jsx(s.Cross2Icon,{className:"mr-2 h-4 w-4"}),"Close"]}),c&&!j&&D&&l&&e.jsxs(s.Button,{className:"h-7 p-2",variant:"secondary",disabled:d,onClick:X,size:"sm",children:[e.jsx(Ms,{className:"mr-2 h-4 w-4"}),"Save Lens"]}),E&&e.jsxs(s.Button,{className:"h-7 p-2",variant:"outline",disabled:O,onClick:H,size:"sm",children:[O?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(Ms,{className:"mr-2 h-4 w-4"}),O?"Saving...":"Save"]}),!v&&!j&&c&&e.jsx(s.Button,{className:"h-7 p-2",variant:"ghost",onClick:()=>L(!0),size:"sm",children:e.jsx(s.Filter,{className:"h-4 w-4"})}),!j&&c&&!1,!j&&!1,!j&&e.jsx(qt,{isOpen:h,onClose:()=>f(!1)})]})]})}function yr({name:t,items:a,value:n,onChange:r,isLoading:l,isError:o,refetch:c,className:i,icon:u,showNone:d=!1}){const m=pe.useRef(null),[h,f]=pe.useState(!1),[g,j]=pe.useState("100%"),x=d?[...a||[],{id:"none",name:"None"}]:a;pe.useLayoutEffect(()=>{m.current&&j(m.current.offsetWidth)},[]);function b(){var v;return l?"Loading...":o?"Error":n?(v=a==null?void 0:a.find(T=>T.id===n))==null?void 0:v.name:`Select ${t}`}function p(v,T){r(T),f(!1)}return e.jsxs(s.Popover,{open:h,onOpenChange:f,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{ref:m,variant:"outline",role:"combobox","aria-expanded":h,className:s.cn("flex h-9 w-full justify-between",i),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[u&&e.jsx("div",{className:"mr-2",children:u}),e.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:b()})]}),e.jsx(s.ChevronDown,{className:"size-4 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"w-full p-0",style:{minWidth:g},children:e.jsxs(s.Command,{children:[e.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[e.jsx(s.CommandInput,{className:"h-9",placeholder:"Search..."}),e.jsx(s.IconButton,{className:"h-7",onClick:c,children:e.jsx(vt,{className:s.cn("size-3.5 opacity-50",l&&"animate-spin")})})]}),e.jsxs(s.CommandList,{children:[e.jsxs(s.CommandEmpty,{children:["No ",t==null?void 0:t.toLowerCase()," found."]}),e.jsx(s.CommandGroup,{children:x==null?void 0:x.map(v=>e.jsx(s.CommandItem,{className:"overflow-x-auto",value:v.name,onSelect:T=>p(T,v.id),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Check,{className:s.cn("size-4",n===v.id?"opacity-100":"opacity-0")}),e.jsx("div",{title:v.name,children:v.name})]})},v.id))})]})]})})]})}function He({title:t,items:a,value:n,isLoading:r,isError:l,refetch:o,onChange:c,showNone:i=!1,className:u,disabled:d=!1,type:m="combobox"}){const h=r?"Loading...":l?"Error":n;function f(){if(t==="Connection")return e.jsx(cn,{className:"size-4"});if(t==="Database")return e.jsx(s.Database,{className:"size-4"});if(t==="Schema")return e.jsx(rn,{className:"size-4"});if(t==="Table")return e.jsx(s.Table2,{className:"size-4"});if(t==="Model")return e.jsx(La,{className:"size-4"})}function g(){return e.jsxs(s.Select,{disabled:d,value:h,onValueChange:c,children:[e.jsx(s.SelectTrigger,{className:s.cn("h-9 w-full border-muted focus:ring-1 focus:ring-offset-0",u),children:e.jsx(s.SelectValue,{placeholder:r?"Loading...":l?"Error":`Select ${t}`})}),e.jsx(s.SelectContent,{children:e.jsxs(s.SelectGroup,{children:[r?e.jsx(s.SelectLabel,{children:"Loading..."}):e.jsxs(s.SelectLabel,{className:"flex items-center justify-between gap-2",children:[t,e.jsx(vt,{className:s.cn("mr-1 size-3 cursor-pointer text-muted-foreground hover:text-foreground",r&&"animate-spin"),onClick:o})]}),e.jsxs(e.Fragment,{children:[i&&e.jsx(s.SelectItem,{value:"none",children:"None"},"none"),a&&a.map((x,b)=>e.jsx(s.SelectItem,{value:x.id,children:x.name},b))]}),(r||l)&&e.jsx(s.SelectItem,{value:h,children:h})]})})]})}function j(){return e.jsx(yr,{icon:f(),items:a,value:h,onChange:c||(()=>{}),isLoading:r,isError:l,refetch:o,name:t,showNone:i})}return e.jsx(s.TooltipProvider$1,{delayDuration:0,children:e.jsx("div",{className:"flex items-center gap-2",children:m==="select"?g():j()})})}function br({column:t}){const[a,n]=I.useState(!1),r=s.useEditorStore(x=>x.selectedTableName),l=s.useEditorStore(x=>x.selectedSchemaName),o=s.useEditorStore(x=>x.selectedDatabaseName),c=s.useEditorStore(x=>x.selectedDatamodelId),i=s.useEditorStore(x=>x.sqlGen),{modelItems:u,connectionType:d}=s.useEditorAside(),m=s.useEditorStore(x=>x.actions.setSqlGen),h=s.useEditorStore(x=>x.actions.setCardSql),f=s.useEditorStore(x=>x.actions.setRunSql);function g(x,b){var L;const p=s.createSqlGenConfig(x,i,b),v=(L=u==null?void 0:u.find(N=>N.id===c))==null?void 0:L.name;m(p);const T=s.getSql(p,s.fmt(l||""),s.fmt(r),v||"",d,o||"");T&&(h(T),f(!0)),n(!1)}function j(){return e.jsxs("ul",{className:"text-xs",children:[e.jsx("li",{onClick:()=>g(t,"COUNT"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Count"}),e.jsx("li",{onClick:()=>g(t,"AVG"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Avg"}),e.jsx("li",{onClick:()=>g(t,"SUM"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Sum"}),e.jsx("li",{onClick:()=>g(t,"MAX"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Max"}),e.jsx("li",{onClick:()=>g(t,"MIN"),className:"cursor-pointer p-1 px-3 transition-colors hover:bg-muted",children:"Min"})]})}return e.jsxs(s.HoverCard,{openDelay:0,open:a,onOpenChange:n,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.EllipsisVertical,{className:"invisible size-3.5 cursor-pointer text-foreground/40 group-hover:visible"})}),e.jsx(s.HoverCardContent,{align:"center",className:"w-20 rounded-md p-0 shadow-none",children:j()})]})}function vr({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function Ns({column:t,className:a}){return e.jsxs("div",{className:s.cn("flex min-h-8 grow items-center gap-2 px-3 py-[6px] text-sm",a),children:[e.jsx(vr,{dataType:t.data_type}),e.jsx("span",{children:t.column_name})]})}function Nr({id:t,children:a,type:n="column"}){const{attributes:r,listeners:l,setNodeRef:o,transform:c}=s.useDraggable({id:t,data:{type:n}}),i=c?{translate:s.CSS.Translate.toString(c),transform:s.CSS.Transform.toString(c)}:void 0;return e.jsx("div",{ref:o,style:i,...l,...r,children:a})}function Cr({onClick:t,column:a}){const n=s.useDndStore(m=>m.activeId),r=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.groupByColumns}),l=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.metricColumns}),o=s.useEditorStore(m=>{var h;return(h=m.card.queryConfig)==null?void 0:h.filterColumns});function c(m){return i(m)||u(m)||d(m)}function i(m){return r==null?void 0:r.some(h=>h.name===m.column_name)}function u(m){return l==null?void 0:l.some(h=>h.name===m.column_name)}function d(m){return o==null?void 0:o.some(h=>h.name===m.column_name)}return e.jsxs("div",{onClick:()=>t(a),className:s.cn("group relative grow cursor-pointer overflow-x-hidden overflow-y-hidden border border-dashed border-background transition-colors hover:bg-muted/50",{"bg-muted":c(a)}),children:[n===a.column_name&&e.jsx(s.DragOverlay,{children:e.jsx(Ns,{column:a,className:"rounded-md border-2 border-dashed border-muted-foreground bg-muted shadow-md"})}),n===a.column_name&&e.jsx("div",{className:"absolute inset-0",children:n===a.column_name&&e.jsx(Ns,{column:a})}),e.jsx(Nr,{id:a.column_name,type:"column",children:e.jsx(Ns,{column:a})})]})}const Cs={id:"__placeholder__",role:"groupby",type:"string"},Ss={id:"__placeholder__",role:"groupby",type:"string"},ws={id:"__placeholder__",role:"metric",type:"number"},Ds={name:"Filter",id:"__placeholder__",role:"filter",type:"string"},Yt={id:"__placeholder__"},ze="droppable-group-by",Ve="droppable-metrics",_e="droppable-pivot-by",fs="sortable-group-by",Rs="sortable-metrics",gs="sortable-pivot-by",Os="droppable-filters",Bs="sortable-filters",Vs="sortable-order-by";function Sr(){const t=s.useDndStore(E=>E.insertIndex),a=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.groupByColumns)||[]}),n=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.metricColumns)||[]}),r=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.filterColumns)||[]}),l=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.orderBy)||[]}),o=s.useEditorStore(E=>{var A;return((A=E.card.queryConfig)==null?void 0:A.pivotColumns)||[]}),{setInsertIndex:c,setActiveId:i,setPreviewGroupByColumns:u,setPreviewMetricColumns:d,setPreviewFilterColumns:m,setPreviewPivotColumns:h}=s.useDndActions(),{setGroupByColumns:f,setMetricColumns:g,setFilterColumns:j,setOrderByColumns:x,setPivotByColumns:b}=s.useEditorActions(),{columns:p}=s.useDataColumns(),{formattedTableName:v}=s.useEditorAside(),T=s.useSensors(s.useSensor(s.MouseSensor,{activationConstraint:{distance:1}})),L=E=>{var M;const{active:A,over:F}=E;if(((M=A.data.current)==null?void 0:M.type)==="column"&&F){const O=F.id,z=p.find(Q=>Q.column_name===A.id);if(!z)return;const P=s.isNumberDataType(z.data_type),H=s.isTextDataType(z.data_type),X=s.isDateDataType(z.data_type);if(H||X){if(a.some(Y=>Y.id===O)){const Y=a.findIndex(U=>U.id===O);c(Y);const K=a.filter(U=>U.id!==Cs.id);K.splice(Y,0,Cs),u(K)}else if(F.id===ze){c(a.length);const Y=[...a,Cs];u(Y),d(n),m(r)}}if(H||X){if(o.some(Y=>Y.id===O)){const Y=o.findIndex(U=>U.id===O);c(Y);const K=o.filter(U=>U.id!==Ss.id);K.splice(Y,0,Ss),h(K)}else if(F.id===_e){c(o.length);const Y=[...o,Ss];h(Y),u(a),d(n),m(r)}}if(P||H){if(n.some(Y=>Y.id===O)){console.log("isOverMetricSortable",O);const Y=n.findIndex(U=>U.id===O);c(Y);const K=n.filter(U=>U.id!==ws.id);K.splice(Y,0,ws),d(K)}else if(F.id===Ve){c(n.length);const Y=[...n,ws];d(Y),m(r),u(a),h(o)}}if(w(z)){if(r.some(Y=>Y.id===O)){const Y=r.findIndex(U=>U.id===O);c(Y);const K=r.filter(U=>U.id!==Ds.id);K.splice(Y,0,Ds),m(K)}else if(F.id===Os){c(r.length);const Y=[...r,Ds];m(Y),d(n),u(a),h(o)}}}else u(a),d(n),m(r),h(o)};function N(E){i(E.active.id),c(null),u(a),d(n),m(r),h(o)}function w(E){return!r.some(A=>A.name===E.column_name)}function y(E,A="SUM"){const{column_name:F,data_type:M}=E,O=[...n],z=t!==null?t:n.length,P={...E,id:Ce(F),name:F,label:as(F,A),type:M,role:"metric",aggregate:A};O.splice(z,0,P),g(O)}function k(E){const A=s.isTextDataType(E.data_type);s.isDateDataType(E.data_type);const F=[...o],M=t!==null?t:o.length;let O;A?O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby"}:O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby",label:Qe(E.column_name,"month"),granularity:"month"},F.splice(M,0,O),b(F)}function S(E){const A=s.isTextDataType(E.data_type);s.isDateDataType(E.data_type);const F=[...a],M=t!==null?t:a.length;let O;A?O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby"}:O={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,role:"groupby",label:Qe(E.column_name,"month"),granularity:"month"},F.splice(M,0,O),f(F)}function R(E){const A=[...r],F=t!==null?t:r.length,M={...E,id:Ce(E.column_name),name:E.column_name,type:E.data_type,sql:s.getDefaultFilterSql(E.data_type,v,s.fmt(E.column_name)),role:"filter"};A.splice(F,0,M),j(A)}function C(E){var O,z,P,H,X,Q,Y,K;const{active:A,over:F}=E,M=A.data.current;if((M==null?void 0:M.type)==="column"&&F){const U=p.find(Z=>Z.column_name===A.id);if(!U)return;const _=s.isNumberDataType(U.data_type),V=s.isTextDataType(U.data_type),$=s.isDateDataType(U.data_type);(V||$)&&(F.id===ze||((O=F.data.current)==null?void 0:O.type)===fs)&&S(U),(V||$)&&(F.id===_e||((z=F.data.current)==null?void 0:z.type)===gs)?k(U):(_||V)&&(F.id===Ve||((P=F.data.current)==null?void 0:P.type)===Rs)?(_&&y(U),V&&y(U,"COUNT")):w(U)&&(F.id===Os||((H=F.data.current)==null?void 0:H.type)===Bs)&&R(U)}if(F&&((X=F.data.current)==null?void 0:X.type)===fs&&a.some(U=>U.id===A.id)){const U=a.findIndex(V=>V.id===A.id),_=a.findIndex(V=>V.id===F.id);if(U!==-1&&_!==-1&&U!==_){const V=[...a],[$]=V.splice(U,1);V.splice(_,0,$),f(V)}}if(F&&((Q=F.data.current)==null?void 0:Q.type)===gs&&o.some(U=>U.id===A.id)){const U=o.findIndex(V=>V.id===A.id),_=o.findIndex(V=>V.id===F.id);if(U!==-1&&_!==-1&&U!==_){const V=[...o],[$]=V.splice(U,1);V.splice(_,0,$),b(V)}}if(F&&((Y=F.data.current)==null?void 0:Y.type)===Rs&&n.some(U=>U.id===A.id)){const U=n.findIndex(V=>V.id===A.id),_=n.findIndex(V=>V.id===F.id);if(U!==-1&&_!==-1&&U!==_){const V=[...n],[$]=V.splice(U,1);V.splice(_,0,$),g(V)}}if(F&&((K=F.data.current)==null?void 0:K.type)===Bs&&r.some(U=>U.id===A.id)){const U=r.findIndex(V=>V.id===A.id),_=r.findIndex(V=>V.id===F.id);if(U!==-1&&_!==-1&&U!==_){const V=[...r],[$]=V.splice(U,1);V.splice(_,0,$),j(V)}}B(E),i(null),c(null),u(a),d(n),m(r),h(o)}function B(E){const{active:A,over:F}=E,M=A.data.current;if((M==null?void 0:M.type)===Vs&&F){const O=l.findIndex(P=>Xe(P.columnId)===A.id),z=l.findIndex(P=>Xe(P.columnId)===F.id);if(O!==-1&&z!==-1&&O!==z){const P=[...l],[H]=P.splice(O,1);P.splice(z,0,H),x(P)}}}function D(){i(null),c(null),u(a),d(n),m(r)}return{handleDragOver:L,handleDragEnd:C,handleDragStart:N,handleDragCancel:D,sensors:T}}function Ce(t){return`${t}-${s.v4()}`}function as(t,a){const n=s.toTitleCase(t.replace(/_/g," "));switch(a){case"SUM":return`Sum of ${n}`;case"COUNT":return`Count of ${n}`;case"DISTINCT":return`Unique ${n}`;case"AVG":return`Average of ${n}`;case"MIN":return`Min of ${n}`;case"MAX":return`Max of ${n}`;default:return n}}function Xe(t){return`${Vs}-${t}`}function Qe(t,a){const n=s.toTitleCase(t.replace(/_/g," "));switch(a){case"day":return`Date of ${n}`;case"week":return`Week of ${n}`;case"month":return`Month of ${n}`;case"year":return`Year of ${n}`;default:return n}}function wr({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function Dr({schemaName:t,tableName:a,columns:n,status:r}){const[l,o]=I.useState(""),[c,i]=I.useState("all"),u=s.useEditorStore(O=>O.sqlGen),d=s.useEditorStore(O=>O.isDevMode);s.useEditorStore(O=>O.selectedConnectionId);const m=s.useEditorStore(O=>{var z,P;return(P=(z=O.card)==null?void 0:z.queryConfig)==null?void 0:P.metricColumns});s.useEditorStore(O=>{var z,P;return(P=(z=O.card)==null?void 0:z.queryConfig)==null?void 0:P.groupByColumns});const h=s.useEditorStore(O=>O.selectedDatabaseName);s.useEditorStore(O=>O.selectedSchemaName),s.useEditorStore(O=>O.selectedTableName);const f=s.useEditorStore(O=>O.selectedDatamodelId);s.useDashboardStore(O=>O.dashboard.aiScopeTables);const{addToAIScope:g,removeFromAIScope:j}=s.useDashboardActions(),{addColumnToMetricColumns:x,addColumnToGroupBy:b,setCardSql:p,setRunSql:v,setSqlGen:T,setIsShowingVisual:L}=s.useEditorActions(),{connectionType:N,modelItems:w,selectedDatamodelName:y}=s.useEditorAside();function k(O){var z;if(d){const P=s.createSqlGenConfig(O,u);T(P);const H=(z=w==null?void 0:w.find(Q=>Q.id===f))==null?void 0:z.name,X=s.getSql(P,s.fmt(t),s.fmt(a),H||"",N,h||"");X&&(p(X),v(!0))}if(!d){if(s.isTextDataType(O.data_type))if(m&&m.length>0){const P={...O,role:"groupby",id:Ce(O.column_name),name:O.column_name,type:O.data_type};b(P)}else{const P={...O,role:"metric",id:Ce(O.column_name),name:O.column_name,label:as(O.column_name,"COUNT"),type:O.data_type,aggregate:"COUNT"};x(P)}if(s.isDateDataType(O.data_type)){const P={...O,role:"groupby",id:Ce(O.column_name),name:O.column_name,type:O.data_type,label:Qe(O.column_name,"month"),granularity:"month"};b(P)}if(s.isNumberDataType(O.data_type)){const P={...O,role:"metric",id:Ce(O.column_name),name:O.column_name,label:as(O.column_name,"SUM"),type:O.data_type,aggregate:"SUM"};x(P)}}}function S(){const O=s.getFormattedTableNameForQuery({schemaName:t,tableName:a,modelName:y,connectionType:N,databaseName:h||""});L(!1);const z=N==="MSSQL"?`SELECT top 10 * FROM ${O}`:`SELECT * FROM ${O} LIMIT 10`;p(z),v(!0)}function R(){const O=s.getFormattedTableNameForQuery({schemaName:t,tableName:a,modelName:y,connectionType:N,databaseName:h||""});p(`SELECT COUNT(*) as count FROM ${O}`),v(!0)}const C=(n==null?void 0:n.filter(O=>O.column_name.toLowerCase().includes(l.toLowerCase())))||[],B=O=>s.isNumberDataType(O.data_type)?"number":"text",D=c==="all"?C:C.filter(O=>B(O)===c),E=C.filter(O=>B(O)==="text").length,A=C.filter(O=>B(O)==="number").length;function F(O){return d?e.jsxs("div",{className:"group flex cursor-pointer items-center justify-between border border-dashed border-background px-2 py-[6px] text-sm transition-colors hover:bg-muted/50",onClick:()=>k(O),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(wr,{dataType:O.data_type}),e.jsx("span",{children:O.column_name})]}),e.jsx("div",{onClick:z=>z.stopPropagation(),className:"flex items-center justify-end",children:s.isNumberDataType(O.data_type)&&e.jsx(br,{column:O})})]}):e.jsx(Cr,{onClick:k,column:O})}function M(){return e.jsxs("div",{className:"flex grow gap-2",children:[e.jsxs(s.Button,{disabled:r!=="Success",onClick:S,size:"sm",variant:"secondary",className:"grow",children:[r!=="Success"?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin text-foreground/50"}):e.jsx(sn,{className:"mr-2 size-4"}),"Top 10"]}),e.jsxs(s.Button,{disabled:r!=="Success",onClick:R,size:"sm",variant:"secondary",className:"grow",children:[r!=="Success"?e.jsx(s.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin text-foreground/50"}):e.jsx(Nt,{className:"mr-2 size-4"}),"Count"]})]})}return r!=="Success"?e.jsx("div",{className:"flex grow flex-col justify-start gap-2 px-4",children:Array.from({length:3}).map((O,z)=>e.jsx(s.Skeleton,{className:"h-8 w-full"},z))}):e.jsxs("div",{className:"flex grow flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-3 px-4",children:[d&&e.jsx("div",{className:"flex items-center justify-center gap-2",children:M()}),n&&n.length>0&&e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:l,onChange:O=>o(O.target.value)})]}),C.length>0&&e.jsx(s.Tabs,{defaultValue:"all",value:c,onValueChange:O=>i(O),children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-3",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:C.length})]}),e.jsxs(s.TabsTrigger,{value:"text",className:"text-xs",children:[e.jsx(s.Layers,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:E})]}),e.jsxs(s.TabsTrigger,{value:"number",className:"text-xs",children:[e.jsx(s.ChartColumn,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:A})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"flex-1 basis-0 overflow-y-auto px-4 pt-3",children:[D.length===0&&l&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:['No fields found matching "',l,'"']}),D.length===0&&!l&&c!=="all"&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:["No ",c," fields found"]}),e.jsx("div",{className:"flex flex-col gap-1",children:D==null?void 0:D.map(O=>e.jsx("div",{children:F(O)},O.column_name))}),e.jsx(s.ScrollBar,{orientation:"vertical"}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function Gt({ColumnsComponent:t,type:a}){var se;const[n,r]=I.useState(!1),l=s.useEditorStore(te=>te.card),o=s.useEditorStore(te=>te.selectedConnectionId),c=s.useDashboardStore(te=>te.showFilters),i=s.useEditorStore(te=>te.selectedDatamodelId),u=s.useEditorStore(te=>te.selectedDatabaseName),d=s.useEditorStore(te=>te.selectedSchemaName),m=s.useEditorStore(te=>te.selectedTableName),h=s.useEditorStore(te=>te.isDevMode),{setSelectedTableName:f,setIsDevMode:g,setCardSql:j}=s.useEditorActions(),{connectionItems:x,modelItems:b,schemaItems:p,databaseItems:v,tableItems:T,columns:L,isConnectionsLoading:N,isModelsLoading:w,isConnectionsError:y,isModelsError:k,isDatabasesLoadingOrFetching:S,isDatabaseError:R,isSchemaLoadingOrFetching:C,isSchemaError:B,isColumnsError:D,isColumnsLoadingOrFetching:E,isTableLoadingOrFetching:A,isTableError:F,connectionType:M,isNonDbConnection:O,refetchDatabases:z,refetchModels:P,refetchSchemas:H,refetchTables:X,refetchColumns:Q,refetchConnections:Y,handleConnectionChange:K,handleDatabaseChange:U,handleSchemaChange:_,handleDatamodelChange:V,handleTableChange:$,tableName:Z,schemaName:ne}=s.useEditorAside(),{data:q,refetch:ee}=s.useDashboardCardQuery(l);function oe(){return t?t(ne,Z,L):e.jsx(Dr,{schemaName:ne,tableName:Z,columns:L,status:E?"Loading...":D?"Error":"Success"})}function W(){window.location.href="mailto:support@semaphor.cloud?subject=Help&body=I need help with..."}function J(te){te===!0?q&&(j(q.userSql),setTimeout(()=>{ee()},100)):j(""),g(te)}function re(){if(!o||M==="S3"||M==="API")return null;if(!i||i==="none")return e.jsx(He,{refetch:z,showNone:!0,onChange:U,isError:R,isLoading:S,items:v,value:u||"",title:"Database",type:"combobox"})}function de(){if(o&&!O&&(!u||u==="none")&&(!i||i==="none"))return e.jsxs("div",{className:"grid grid-cols-3",children:[e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Separator,{})}),e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Label,{children:"OR"})}),e.jsx("div",{className:"col-span-1 grid place-items-center",children:e.jsx(s.Separator,{})})]})}function Se(){if(!o||M==="S3"||M==="API")return null;if(!u||u==="none")return e.jsx(He,{refetch:P,showNone:!0,onChange:V,isError:k,isLoading:w,items:b,value:i||"",title:"Model",type:"combobox"})}function be(){return!o||M==="S3"||M==="API"||!u||u==="none"?null:e.jsx(He,{refetch:H,onChange:_,isError:B,isLoading:C,items:p,value:d||"",title:"Schema",type:"combobox"})}function fe(){function te(){let ue=!1;return M==="API"?(ue=!1,ue):((M==="S3"||o&&u&&u!=="none"&&d)&&(ue=!0),ue)}return te()?e.jsx(He,{refetch:X,onChange:$,isError:F,items:T,isLoading:A,value:m||"",title:"Table",type:"combobox"}):null}return e.jsxs("aside",{className:s.cn("flex h-full min-w-[310px] max-w-[310px] flex-col justify-between rounded-none",{"border-r-[1px]":!c}),children:[e.jsxs("section",{className:s.cn("px-4",{"px-4 pb-0 pt-4":n,"px-4 py-4":!n}),children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("h2",{className:"text-brand-100 font-semibold",children:"Direct Source"}),e.jsx(s.Button,{onClick:()=>r(!n),size:"sm",variant:"ghost",className:"h-6 w-6 p-0",children:n?e.jsx(s.ChevronDown,{className:"h-4 w-4"}):e.jsx(s.ChevronUp,{className:"h-4 w-4"})})]}),!n&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(He,{refetch:Y,items:x,title:"Connection",value:o||"",onChange:K,isLoading:N,isError:y,type:"combobox",connectionTooltip:((se=x==null?void 0:x.find(te=>te.id===o))==null?void 0:se.type)||""}),re(),de(),Se(),be(),fe()]})]}),oe(),e.jsx("div",{className:"flex items-center justify-between gap-2 px-6 py-4",children:a==="main"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Switch,{className:"data-[state=checked]:bg-muted-foreground/80",checked:h,onCheckedChange:J,id:"dev-mode"}),e.jsx(s.Label,{htmlFor:"dev-mode",children:"Advanced Mode"})]}),e.jsxs(s.Button,{onClick:W,size:"sm",variant:"secondary",className:"group flex items-center gap-2 rounded-full",children:[e.jsx(an,{className:"size-4"}),e.jsx("span",{className:"hidden group-hover:block",children:"Help"})]})]})})]})}function Kt({error:t,className:a="",textClassName:n="",copyButtonClassName:r=""}){const[l,o]=I.useState(!1),c=I.useRef(null),i=I.useRef(!1);function u(){t&&!i.current&&navigator.clipboard.writeText(t)}function d(f){(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),u())}function m(){const f=window.getSelection();if(f&&f.toString().trim()!==""){const g=f.toString();navigator.clipboard.writeText(g),o(!0),i.current=!0,setTimeout(()=>{o(!1),i.current=!1},1e3)}else i.current=!1}function h(){o(!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 ${a}`,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 ${n}`,onClick:u,onKeyDown:d,onMouseUp:m,onMouseDown:h,tabIndex:0,role:"button","aria-label":"Click to copy error message or select text to copy",children:t}),l&&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 Ht({sql:t,error:a,onDebugWithAssistant:n}){const r=s.useEditorStore(u=>u.isDevMode),{setIsDevMode:l,setCardSql:o,setRunSql:c}=s.useEditorActions();function i(){l(!r),o(t),setTimeout(()=>{c(!0)},100)}return e.jsx("div",{className:"flex justify-between space-x-4",children:e.jsxs("div",{className:"flex grow flex-col space-y-2",children:[e.jsxs(s.ScrollArea,{className:"max-h-[250px] min-h-0 overflow-scroll text-xs leading-relaxed text-foreground/80",children:[a&&e.jsx(Kt,{error:a}),t&&e.jsx("div",{className:"flex flex-col space-y-1.5",children:e.jsx("div",{className:"rounded-md",children:e.jsx(s.CodeHighlighter,{code:t,language:"sql"})})})]}),!r&&t&&e.jsxs(s.Button,{onClick:i,variant:"secondary",size:"sm",children:[e.jsx(_a,{className:"mr-2 h-4 w-4"}),"View in SQL Editor"]}),a&&n&&e.jsxs(s.Button,{onClick:n,size:"sm",variant:"secondary",children:[e.jsx(Ha,{className:"mr-2 h-4 w-4"}),"Debug with Assistant"]})]})})}function Qt({sql:t,error:a,onDebugWithAssistant:n}){return e.jsxs(s.HoverCard,{openDelay:a?0:500,children:[e.jsx(s.HoverCardTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"link",className:"h-5 p-0",children:a?e.jsx(jt,{className:"h-4 w-4 text-red-500"}):e.jsx(s.Info,{className:"h-4 w-4 text-muted-foreground"})})}),e.jsx(s.HoverCardContent,{align:"start",className:"flex w-[600px]",children:e.jsx(Ht,{sql:t,error:a,onDebugWithAssistant:n})})]})}function kr(t){return s.GenIcon({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"},child:[]}]})(t)}function Wt(t){const{theme:a}=s.useTheme(),n=s.useDashboardStore(x=>x.theme),r=s.useEditorStore(x=>x.frame),l=s.useEditorStore(x=>x.card),o=s.useEditorStore(x=>x.activeTabCardId),c=s.Le(),{refetch:i}=s.useDashboardCardQuery(l),{updateCardTab:u,setRunSql:d}=s.useEditorActions(),m=I.useRef(),h=I.useRef({}),f=r.cards.find(x=>x.id===o),g=I.useCallback(()=>{let x="";return t==="python"&&(x=(f==null?void 0:f.python)||s.PYTHON_DEFAULT_CODE),t==="sql"&&(x=(f==null?void 0:f.sql)||""),x},[t,f]);I.useEffect(()=>{if(o&&l.id&&l.id!==o){if(m.current&&c){const x=m.current.getModel();x&&(h.current[l.id]=x);let b=h.current[o];if(!b){const p=g();b=c.editor.createModel(p,t),h.current[o]=b}m.current.setModel(b)}u(o,l),d(!0)}},[o,l,u,c,d,t,g]),I.useEffect(()=>{if(!c)return;const x=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",b=n==="system"?x:n;c.editor.defineTheme("default",{base:b==="light"?"vs":"vs-dark",inherit:!0,rules:[],colors:{"editor.background":b==="light"?"#ffffff":s.hslStringToHex("240 10% 10%")}}),c.editor.setTheme("default")},[a,n,c]),I.useEffect(()=>{const x=m.current;x&&c&&l&&x.addCommand(c.KeyMod.Shift|c.KeyCode.Enter,function(){return i(),!1})},[c,i,l]);function j(x,b){if(m.current=x,!h.current[l.id]){const p=x.getModel(),v=g();h.current[l.id]=p||(b==null?void 0:b.editor.createModel(v,t))||x.getModel()}x.setModel(h.current[l.id])}return{handleEditorDidMount:j}}function Tr(){const t=s.useEditorStore(c=>c.card.sql),a=s.useEditorStore(c=>c.sqlGen),{setCardSql:n,setSqlGen:r}=s.useEditorActions(),{handleEditorDidMount:l}=Wt("sql");function o(c){n(c),s.isObjectEmpty(a)||r({})}return e.jsxs("div",{className:"relative h-full w-full",children:[!t&&e.jsx("div",{className:"pointer-events-none absolute left-[65px] top-3 z-10 font-mono text-sm text-muted-foreground",children:"Write your SQL here"}),e.jsx(s.Ft,{theme:"default",className:"pt-3",onChange:o,value:t||"",options:{minimap:{enabled:!1},wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:13,renderLineHighlight:"none"},defaultLanguage:"sql",onMount:l})]})}function Er(){const t=s.useEditorStore(l=>l.card.python),{setCardPython:a}=s.useEditorActions(),{handleEditorDidMount:n}=Wt("python");function r(l){a(l)}return e.jsx(s.Ft,{className:"pt-3",theme:"default",onChange:r,value:t||s.PYTHON_DEFAULT_CODE,options:{minimap:{enabled:!1},wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:13,renderLineHighlight:"none"},defaultLanguage:"python",onMount:n})}function Ir({jsonString:t}){return e.jsx(s.Ft,{theme:"default",defaultLanguage:"json",className:"mt-1 min-h-[220px]",value:t,options:{readOnly:!0,minimap:{enabled:!1},lineNumbers:"off",glyphMargin:!1,wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:12,renderLineHighlight:"none"}})}function _s({variant:t="outline"}){var c;const{setCardSql:a}=s.useEditorActions();s.useEditorStore(i=>i.frame);const n=s.useEditorStore(i=>i.card);Ps(((c=n.customCardPreferences)==null?void 0:c.url)||""),s.useEditorStore(i=>i.selectedSchemaName),s.useEditorStore(i=>i.selectedDatamodelId),s.useEditorStore(i=>i.selectedDatabaseName),s.useEditorStore(i=>i.selectedTableName),s.useEditorStore(i=>i.selectedConnectionId),s.useEditorStore(i=>i.isShowingVisual),n.sql;const r=s.useEditorStore(i=>i.onSave),{getUpdatedFrame:l}=zs();function o(){const i=l();r==null||r(i)}return e.jsxs(s.Button,{onClick:o,className:"h-8",size:"sm",variant:t,children:[e.jsx(s.Check,{className:"mr-2 size-4 font-bold"}),"Accept"]})}function Ar(){const t=s.useQueryClient(),[a,n]=I.useState(!1),r=s.useDashboardStore(d=>d.actions.setIsDashboardPanelOpen),{setIsVisualEditing:l}=s.useDashboardActions(),{getUpdatedFrame:o}=zs(),c=s.useSelectedVisual(),i=Gn(),u=()=>{const d=o();if(!(c!=null&&c.id)){s.ue.error("No visual selected");return}n(!0),i.mutate({visualId:c.id,data:{frameObject:d}},{onSuccess:()=>{n(!1),l(!1),r(!0),s.ue.success("Visual updated successfully"),t.invalidateQueries({queryKey:["resource-by-id","visual",c.id],exact:!0})},onError:()=>{n(!1),s.ue.error("Failed to update visual")}})};return e.jsxs(s.Button,{onClick:u,className:"h-8",size:"sm",children:[a&&e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-4 animate-spin font-bold"})," Saving"]}),!a&&e.jsxs(e.Fragment,{children:[e.jsx(Ms,{className:"mr-2 size-4 font-bold"}),"Save"]})]})}function Us(){const{setTempQueryData:t,setSqlGen:a}=s.useEditorActions(),n=s.useQueryClient(),r=s.useEditorStore(u=>u.tempQueryData),l=s.useEditorStore(u=>u.onClose),o=s.useEditorStore(u=>u.card),{queryKey:c}=s.useDashboardCardQuery(o);function i(){if(r){const{queryKey:u,queryData:d}=r;u&&d&&n.setQueryData(u,d)}a({}),l==null||l()}return e.jsxs(s.Button,{onClick:i,className:"h-8",size:"sm",variant:"outline",children:[e.jsx(s.X,{className:"mr-2 size-4"}),"Close"]})}function js(){const{setTempQueryData:t}=s.useEditorActions(),a=s.useQueryClient(),n=s.useEditorStore(b=>b.isDevMode),r=s.useEditorStore(b=>b.tempQueryData),l=s.useEditorStore(b=>b.card),{queryKey:o}=s.useDashboardCardQuery(l),{setCardSql:c,setSqlGen:i,setCardPython:u,setCardCustomCfg:d,setCardPreferences:m,updateDataSource:h,clearQueryConfig:f,setCardConfig:g,setCardType:j}=s.useEditorActions();function x(){const b=a.getQueryData(o);r!=null&&r.queryData||t({queryKey:o,queryData:b}),a.setQueryData(o,null),a.removeQueries({queryKey:o,exact:!0}),n&&h(s.EMPTY_DATA_SOURCE),c(""),i({}),f(),g(void 0),u(""),d(""),m({}),j("bar")}return e.jsxs(s.Button,{onClick:x,className:"h-8",size:"sm",variant:"secondary",children:[e.jsx(s.SquarePen,{className:"mr-2 size-4"}),"Clear"]})}function Mr(){const t=s.useQueryClient(),[a,n]=I.useState(!1),[r,l]=I.useState(!1);s.useEditorStore(P=>P.frame);const o=s.useEditorStore(P=>P.card);s.useEditorStore(P=>P.isShowingVisual),s.useEditorStore(P=>P.selectedConnectionId),s.useEditorStore(P=>P.tempQueryData),s.useEditorStore(P=>P.selectedDatabaseName),s.useEditorStore(P=>P.selectedDatamodelId),s.useEditorStore(P=>P.selectedSchemaName);const c=s.useEditorStore(P=>P.showAIDialog);s.useEditorStore(P=>P.selectedTableName);const i=s.useEditorStore(P=>{var H;return(H=P==null?void 0:P.card)==null?void 0:H.sql}),u=s.useEditorStore(P=>{var H;return(H=P==null?void 0:P.card)==null?void 0:H.python}),{sheetFilterValues:d}=s.useSheetFilterValues(),{setCardCustomCfg:m,setQueryResultColumns:h,setCardSql:f,setTempQueryData:g,setPythonStdOut:j,setCardPreferences:x,setCardType:b,setCardPython:p,runAssistant:v,setShowAIDialog:T}=s.useEditorActions();s.useEditorStore(P=>P.onSave),s.useEditorStore(P=>P.onClose),s.useEditorStore(P=>P.actions.setSqlGen);const L=s.useEditorStore(P=>P.runSql),N=s.useEditorStore(P=>P.actions.setRunSql),w=s.useEditorStore(P=>P.actions.setIsSqlRunning),{data:y,isLoading:k,isFetching:S,isSuccess:R,isError:C,error:B,queryKey:D,refetch:E,errorMessage:A}=s.useDashboardCardQuery(o);I.useEffect(()=>{if(y&&(y.rowLimitExceeded&&s.ue.error("Row limit (10,000) exceeded. Refine your query.",{position:"top-center",richColors:!0}),j((y==null?void 0:y.output)||""),y.records.length>0)){const{dimensionKeys:P}=s.getKeys(y.records);h(P)}},[y,h,j]),I.useEffect(()=>{(k||S)&&w(!0),(C||R)&&w(!1),C&&(h([]),j(""))},[k,S,y,j,C,R,w,h,B]),I.useEffect(()=>{L&&(t.getQueryData(D)||E(),N(!1))},[L,E,N,D,t]);async function F(){const P=`Can you help me debug this query in the current table scope?
327
327
 
328
328
  Error:
329
329
 
@@ -335,12 +335,12 @@
335
335
 
336
336
  ${u?`Python:
337
337
  ${u}`:""}
338
- `;v(P)}function M(){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(Ir,{jsonString:JSON.stringify(d,null,2)})})}),d&&d.length>0&&e.jsx(s.Button,{variant:"ghost",onClick:()=>l(!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 O(){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:a?20:100,className:"relative flex grow",children:[e.jsx("div",{id:"sql-container",className:"relative flex w-[99%]",children:e.jsx(Tr,{})}),a&&e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"sql"})]}),a&&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(Er,{})}),e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"python"})]})]})]})}function z(){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:k||S,onClick:()=>{E()},className:"h-8 shrink-0",size:"sm",children:[k||S?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(Qt,{sql:y==null?void 0:y.sql,error:A,onDebugWithAssistant:B}),e.jsx(js,{}),e.jsx(s.Toggle,{pressed:a,onPressedChange:P=>n(P),className:"h-8",size:"sm",variant:"outline",children:e.jsx(kr,{className:"size-4 text-foreground/70"})}),e.jsx("button",{disabled:c,onClick:()=>{T(!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(Us,{}),e.jsx(_s,{})]})]})}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:[O(),M()]}),z()]})}function Lr({card:t}){var v,T,L,N,w,y,k,S,R,C,F;const[a,n]=I.useState(!1),[r,l]=I.useState([]),{authToken:o}=s.useSemaphorContext(),c=s.getTokenParams(o==null?void 0:o.accessToken),i=s.useDashboardStore(D=>D.themeStyle),u={colors:((T=(v=i==null?void 0:i.chart)==null?void 0:v.dataset)==null?void 0:T.backgroundColor)||[]};(L=t.customCardPreferences)!=null&&L.inputData;const{getCard:d}=s.useCustomVisual(((N=t.customCardPreferences)==null?void 0:N.url)||""),m=((w=t.customCardPreferences)==null?void 0:w.visualType)||"single",h=s.useEditorStore(D=>D.frame),{setCustomCardPreferences:f}=s.useEditorActions(),{data:g}=s.useDashboardCardQuery(t),j=I.useCallback((D,E)=>{l(A=>({...A,[D]:E}))},[]);if(!((y=t.customCardPreferences)!=null&&y.componentName))return null;const x=d((k=t.customCardPreferences)==null?void 0:k.componentName);function b(D){n(D)}const p=Object.keys(((S=t.customCardPreferences)==null?void 0:S.dataInputCardIds)||{}).map(D=>{var B,M,O;const E=(M=(B=t.customCardPreferences)==null?void 0:B.dataInputCardIds)==null?void 0:M[D].cardId,A=(O=h==null?void 0:h.cards)==null?void 0:O.find(z=>z.id===E);return A||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(I.Suspense,{fallback:e.jsx(e.Fragment,{}),children:[x&&m==="single"&&e.jsx(x,{editing:!0,params:c,theme:u,settings:(R=t.customCardPreferences)==null?void 0:R.settings,onDataChange:j,data:(g==null?void 0:g.records)||[]}),x&&m==="multiple"&&e.jsxs(e.Fragment,{children:[Object.keys(((C=t.customCardPreferences)==null?void 0:C.dataInputCardIds)||{}).map(D=>{var B,M,O;const E=(M=(B=t.customCardPreferences)==null?void 0:B.dataInputCardIds)==null?void 0:M[D].cardId,A=(O=h==null?void 0:h.cards)==null?void 0:O.find(z=>z.id===E);if(A)return e.jsx(s.MultiInputEmptyRenderer,{onLoadingStatus:b,onDataChange:j,dataInputIndex:D,card:A},A.id+D)}),e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(x,{theme:u,onDataChange:j,settings:p.map(D=>{var E;return(E=D==null?void 0:D.customCardPreferences)==null?void 0:E.settings}),data:p.map(D=>D!=null&&D.id?r==null?void 0:r[D.id]:[])})})]})]},(F=t.customCardPreferences)==null?void 0:F.componentName)})}function Jt({className:t,...a}){var k;const n=s.useEditorStore(S=>S.card),r=s.isExplorerCard(n),l=((k=n.customCardPreferences)==null?void 0:k.showCardHeader)??!0,o=s.useEditorStore(S=>S.frame),c=s.useDashboardStore(S=>S.dashboard.filters),i=s.useEditorStore(S=>S.actions.setRunSql),{updateFilter:u}=s.useDashboardActions(),d=c==null?void 0:c.find(S=>S.id===o.filterId),{data:m,isLoading:h,isFetching:f,errorMessage:g,pagination:j}=s.useDashboardCardQuery(n),{setCard:x,updateCardInFrame:b}=s.useEditorActions(),{data:p}=s.useTopoJson(n),v=I.useMemo(()=>{var S;return n.type!=="pivotTable"||!((S=m==null?void 0:m.records)!=null&&S.length)?null:{records:m.records,columnSubtotalMeta:m.columnSubtotalMeta,subtotalColumns:m.subtotalColumns||[],pivotSchema:m.pivotSchema||[],groupByColumns:m.groupByColumns}},[n.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]),T=s.usePivotTableConfig(n,v),L=(S,R)=>{var F,D;const C={...n,paginationConfig:{page:S+1,pageSize:R}};x(C),b(C),n.sql&&((D=(F=n.preferences)==null?void 0:F.tablePrefs)!=null&&D.enableDevModePagination)&&i(!0)},N=I.useMemo(()=>!n.id||!(m!=null&&m.records)?null:s.createChartConfig({card:n,data:m==null?void 0:m.records,cardType:n.type,queryConfig:n.queryConfig,customCfg:n.customCfg,preferences:n.preferences,topoJson:p}),[n.id,m==null?void 0:m.records,n.type,n.queryConfig,n.customCfg,n.preferences,p]);function w(S){return e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Lr,{card:S})})}function y(){if(m!=null&&m.records&&(m==null?void 0:m.records.length)===0&&!h&&!f)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||f)&&n.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(!n.id)return null;if(n.type==="custom")return w(n);if(!["table","pivotTable","aggregateTable","custom"].includes(n.type)&&N)return e.jsx(e.Fragment,{children:h||f?e.jsx(e.Fragment,{}):e.jsx(s.ChartJsVisual,{cfg:N})});if(n.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:n,data:(m==null?void 0:m.records)||[],paginationMetadata:j,onPaginationChange:L,isLoading:h||f})});if(n.type==="pivotTable"&&T)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.PivotTableVisual,{card:n,data:T.data,options:T.options,onAggregationChange:S=>{const R=s.handleAggregationChange(S,n.config),C={...n,config:R};x(C),b(C)},onAggregationLabelChange:S=>{const R=s.handleAggregationLabelChange(S,n.config),C={...n,config:R};x(C),b(C)}})});if(n.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:n,data:(m==null?void 0:m.records)||[],groupByColumns:m==null?void 0:m.groupByColumns,pivotSchema:m==null?void 0:m.pivotSchema,paginationMetadata:j,onPaginationChange:L,onAggregationChange:S=>{const R=s.handleAggregationChange(S,n.config),C={...n,config:R};x(C),b(C)},isLoading:h||f})})}return e.jsxs(s.Card,{role:"editor-visual-card",className:s.cn("relative flex h-full flex-col rounded-none",t),...a,children:[l&&e.jsxs(s.CardHeader,{className:"flex flex-row items-start justify-between py-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"flex items-center gap-5",children:e.jsx(s.CardTitle,{className:"text-base",children:e.jsx(s.EditableText,{value:n.title,onSave:S=>x({...n,title:S}),isEditable:!0,placeholder:"Add title",displayClassName:"text-base font-semibold",inputClassName:"text-base font-semibold"})})}),e.jsx(s.CardDescription,{className:"w-1/2",children:e.jsx(s.EditableText,{value:n.description||"",onSave:S=>x({...n,description:S}),isEditable:!0,placeholder:"Add description",displayClassName:"text-sm text-muted-foreground",inputClassName:"text-sm"})})]}),d&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Label,{className:"my-1",children:e.jsx(s.EditableText,{value:d.title||d.column,onSave:S=>u({...d,title:S}),isEditable:!0,placeholder:"Filter",displayClassName:"text-sm",inputClassName:"text-sm"})}),e.jsx(s.FilterComponent,{filter:d})]})]}),e.jsx(s.CardContent,{className:"flex grow flex-col",children:y()})]})}const ks=({language:t,value:a,onChange:n,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:a,onChange:n}),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."})]})]}),Or=({customCode:t,cardCustomCfgString:a,mergedConfig:n,onConfigChange:r,onCodeChange:l})=>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(ks,{language:"json",value:n,onChange:r})}),e.jsx(s.TabsContent,{value:"custom-config",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(ks,{readonly:!0,language:"json",value:a,onChange:()=>{}})}),e.jsx(s.TabsContent,{value:"custom-code",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(ks,{language:"javascript",value:t,onChange:l})})]}),Fr=({error:t,hasCardCustomConfig:a,onReset:n,onApply:r,onClose:l})=>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:!a,onClick:n,variant:"outline",children:"Reset"}),e.jsx(s.Button,{onClick:r,variant:"outline",children:"Apply"}),e.jsx(s.Button,{onClick:l,variant:"outline",children:"Close"})]});function Br(){const[t,a]=I.useState(!1),[n,r]=I.useState(""),[l,o]=I.useState(""),[c,i]=I.useState(""),[u,d]=I.useState(""),m=s.useEditorStore(N=>N.card),h=s.useEditorStore(N=>N.card.customCfg),f=h?JSON.stringify(h,null,2):"",{data:g}=s.useDashboardCardQuery(m),{data:j}=s.useTopoJson(m),{setCardCustomCfg:x,setCustomVisualCode:b}=s.useEditorActions(),p=N=>{var w,y;return JSON.stringify({...N,data:{...N.data,datasets:(y=(w=N.data)==null?void 0:w.datasets)==null?void 0:y.map(k=>({...k,data:[]}))}},null,2)},v=()=>{var w,y;if(!((w=g==null?void 0:g.records)!=null&&w.length))return;const N=s.createChartConfig({card:m,data:g.records,cardType:m.type,queryConfig:m.queryConfig,preferences:m.preferences,topoJson:j});if(N){r(p(N)),i(((y=m.preferences)==null?void 0:y.customVisualCode)||"");const k=s.merge(N,h);o(p(k))}},T=()=>{try{if(c&&b(c),l){const N=JSON.parse(l),w=s.getObjectDiff(JSON.parse(n),N);x(w),d("")}}catch{d("Invalid JSON configuration")}},L=Object.keys(h||{}).length===0;return e.jsxs(s.Dialog,{open:t,onOpenChange:a,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Customize Visual",onClick:v,className:L?"":"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(Jt,{className:"w-1/2 rounded shadow-none"})}),e.jsx(Or,{customCode:c,cardCustomCfgString:f,mergedConfig:l,onConfigChange:N=>o(N??""),onCodeChange:N=>i(N??"")})]}),e.jsx(Fr,{error:u,hasCardCustomConfig:!!h,onReset:()=>{o(n),x(null)},onApply:T,onClose:()=>a(!1)})]})]})}function ys(t){const[a,n]=I.useState(null);return a}function Xt(){const{authToken:t}=s.useSemaphorContext(),{data:a,isLoading:n,isFetching:r,isError:l}=s.useQuery({queryKey:["plugins",t==null?void 0:t.accessToken],queryFn:()=>s.getPlugins(t==null?void 0:t.accessToken)});return{data:a,isLoading:n,isFetching:r,isError:l}}function Zt(){const{data:t,isLoading:a,isError:n}=Xt(),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:u=>Math.min(1e3*2**u,3e4)}))}),l=[];let o=a,c=n;return r.forEach((i,u)=>{var d;if(i.isLoading&&(o=!0),i.isError&&(c=!0),i.data&&((d=t==null?void 0:t.plugins)!=null&&d[u])){const m=t.plugins[u],h=i.data.visuals.map(f=>({name:f.name,pluginName:m.label,componentType:f.componentType,pluginType:m.type,icon:f.icon,chartType:f.chartType,url:m.value}));l.push(...h)}}),{data:l,isLoading:o,isError:c}}function Pr({onChartTypeChange:t}){const{setCardCustomCfg:a,setCardPreferences:n,setCardType:r,setCustomCardPreferences:l}=s.useEditorActions(),{data:o,isLoading:c,isError:i}=Zt(),u=I.useCallback((d,m)=>{a(null),n({}),r(d),m&&l({type:"component",visualType:"single",url:m.url,componentName:m.name,icon:m.icon}),t==null||t()},[a,n,r,l,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"})})]}):!o||o.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:o.map((d,m)=>e.jsx(zr,{text:d.name,onClick:()=>u("custom",d),icon:d.icon},`${d.url}-${d.name}-${m}`))})]})}const zr=({text:t,icon:a,onClick:n})=>{const r=ys(),l=t.charAt(0).toUpperCase();return e.jsx(s.IconButton,{onClick:n,tooltip:t,children:r?e.jsx(r,{className:"h-4 w-4"}):l})};function ea({onChartTypeChange:t,iconClassName:a}){const{setCardType:n,setCardPreferences:r,setIsDevMode:l}=s.useEditorStore(m=>m.actions),{setCardCustomCfg:o,setCustomCardPreferences:c,setQueryConfig:i}=s.useEditorActions();function u(m,h){o(null),r({}),n(m),["custom","text","map"].includes(m)&&(l(!0),i(void 0)),t==null||t()}const d=1e3;return e.jsxs("div",{className:"grid grid-cols-5 place-items-center",children:[e.jsx(s.IconButton,{openDelay:d,tooltip:"Table",onClick:()=>u("table"),className:"h-10 p-4",children:e.jsx(s.Table2,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Bar Chart",onClick:()=>u("bar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnIncreasing,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Line Chart",onClick:()=>u("line"),className:"h-10 p-4",children:e.jsx(s.ChartLine,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Stacked Bar Chart",onClick:()=>u("stackedBar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnStacked,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Stacked Line Chart",onClick:()=>u("stackedLine"),className:"h-10 p-4",children:e.jsx(s.MdStackedLineChart,{className:s.cn("size-5",a),strokeWidth:0})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Scatter Chart",onClick:()=>u("scatter"),className:"h-10 p-4",children:e.jsx(s.ChartScatter,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Bubble Chart",onClick:()=>u("bubble"),className:"h-10 p-4",children:e.jsx(s.TbChartBubble,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Pie Chart",onClick:()=>u("pie"),className:"h-10 p-4",children:e.jsx(s.ChartPie,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Doughnut Chart",onClick:()=>u("doughnut"),className:"h-10 p-4",children:e.jsx(s.Donut,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Funnel Chart",onClick:()=>u("funnel"),className:"h-10 p-4",children:e.jsx(s.TbChartFunnel,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Radar Chart",onClick:()=>u("radar"),className:"h-10 p-4",children:e.jsx(s.Radar,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Polar Area Chart",onClick:()=>u("polarArea"),className:"h-10 p-4",children:e.jsx(s.PiChartPolar,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Tornado Chart",onClick:()=>u("tornado"),className:"h-10 p-4",children:e.jsx(s.Tornado,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{tooltip:"Range Chart",onClick:()=>u("range"),className:"h-10 p-4",children:e.jsx(s.ChartNoAxesGantt,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"KPI",onClick:()=>u("kpi"),className:"h-10 p-4",children:e.jsx(s.TiSortNumerically,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Text",onClick:()=>u("text"),className:"h-10 p-4",children:e.jsx(s.BookType,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{tooltip:"Map",onClick:()=>u("map"),className:"h-10 p-4",children:e.jsx(s.Map,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Custom",onClick:()=>u("custom"),className:"h-10 p-4",children:e.jsx(ss,{className:s.cn("size-5",a)})})]})}function Vr({chartType:t,className:a,customIcon:n,componentName:r}){const l=ys();switch(t){case"bar":return e.jsx(s.ChartColumnIncreasing,{className:a});case"line":return e.jsx(s.ChartLine,{className:a});case"pie":return e.jsx(s.ChartPie,{className:a});case"radar":return e.jsx(s.Radar,{className:a});case"scatter":return e.jsx(s.ChartScatter,{className:a});case"bubble":return e.jsx(s.TbChartBubble,{className:a});case"doughnut":return e.jsx(s.Donut,{className:a});case"stackedBar":return e.jsx(s.ChartColumnStacked,{className:a});case"stackedLine":return e.jsx(s.MdStackedLineChart,{className:a});case"polarArea":return e.jsx(s.PiChartPolar,{className:a});case"funnel":return e.jsx(s.TbChartFunnel,{className:a});case"tornado":case"pyramid":return e.jsx(s.Tornado,{className:a});case"range":return e.jsx(s.ChartNoAxesGantt,{className:a});case"kpi":return e.jsx(s.TiSortNumerically,{className:a});case"text":return e.jsx(ye,{className:a});case"map":return e.jsx(s.Map,{className:a});case"custom":return n&&l?e.jsx(l,{className:a}):r?r==null?void 0:r.charAt(0).toUpperCase():e.jsx(ss,{className:a});default:return e.jsx(s.Table2,{className:a})}}function sa({variant:t="ghost"}){var o,c;const[a,n]=I.useState(!1),r=s.useEditorStore(i=>i.card),l=r.type;return s.useDashboardStore(i=>i.isVisualEditing),e.jsxs(s.Popover,{open:a,onOpenChange:n,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:t||"ghost",children:e.jsx(Vr,{className:"size-4",chartType:l,customIcon:(o=r.customCardPreferences)==null?void 0:o.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(ea,{onChartTypeChange:()=>n(!1)}),e.jsx(Pr,{onChartTypeChange:()=>n(!1)})]})]})}function _r(){const t=s.useEditorStore(o=>{var c,i;return(i=(c=o.card.preferences)==null?void 0:c.chartOptions)==null?void 0:i.indexAxis}),a=s.useEditorStore(o=>o.card.type),{setChartOrientation:n}=s.useEditorStore(o=>o.actions);function r(){return e.jsx(s.IconButton,{onClick:()=>{n(t==="x"||t===void 0?"y":"x")},tooltip:"Chart Orientation",children:t==="x"||t===void 0?e.jsx(tt,{className:"size-4"}):e.jsx(st,{className:"size-4"})})}function l(){return e.jsx(s.IconButton,{onClick:()=>{n(t==="y"||t===void 0?"x":"y")},tooltip:"Chart Orientation",children:t==="y"||t===void 0?e.jsx(tt,{className:"size-4"}):e.jsx(st,{className:"size-4"})})}return e.jsx(e.Fragment,{children:a==="funnel"?l():r()})}function ta(){const t=s.useEditorStore(c=>c.card),a=s.useEditorStore(c=>c.isShowingVisual),n=s.useEditorStore(c=>{var i,u;return(u=(i=c.card)==null?void 0:i.preferences)==null?void 0:u.chartOptions}),r=s.getChartGridStyle(n),{setChartGrid:l}=s.useEditorActions();function o(){const c=["xy","none","x","y"],u=(c.indexOf(r)+1)%c.length;l(c[u])}return a?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(_r,{})}),!["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:o,children:[(r==="xy"||!r)&&e.jsx(Ka,{className:"size-4"}),r==="x"&&e.jsx(Fa,{className:"size-4"}),r==="y"&&e.jsx(dn,{className:"size-4"}),r==="none"&&e.jsx(xn,{className:"size-4"})]})]}):null}function Ur(){const t=s.useEditorStore(j=>j.frame),a=s.useEditorStore(j=>j.card),{setFrame:n,setActiveTabCardId:r,setCard:l,updateCardInFrame:o}=s.useEditorActions(),c=(j,x)=>{j.dataTransfer.setData("tabIndex",x.toString())},i=j=>{j.preventDefault()},u=(j,x)=>{const b=j.dataTransfer.getData("tabIndex");if(b===x.toString())return;const p=Array.from(t.cards),[v]=p.splice(parseInt(b),1);p.splice(x,0,v),n({...t,cards:p})};function d(j){const x=t.cards.filter(v=>v.id!==j),b=x[0],p={...t,cards:x,activeCardId:b.id};n(p),r(b.id),l(b)}function m(j,x){const b={...t,cards:[...t.cards,x],activeCardId:j.id};n(b),r(x.id)}function h(){const j={...a,id:s.v4(),title:`${a.title} Copy`,tabTitle:`${a.tabTitle||a.title} Copy`};m(a,j)}function f(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;l({...x,displayTab:b}),o({...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(Va,{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=>u(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=>{l({...a,tabTitle:b}),o({...a,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:()=>d(j.id)})]},j.id)),e.jsx(s.Button,{className:"ml-1 h-8 px-2 hover:bg-muted-foreground/50",variant:"outline",onClick:()=>f(a),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(Pa,{className:"h-4 w-4"})})]})})}function aa(){const t=s.useEditorStore(x=>x.frame),a=s.useEditorStore(x=>x.card),n=s.useEditorStore(x=>x.isSqlRunning),r=s.useEditorStore(x=>x.isDevMode),{setFrame:l,setActiveTabCardId:o,setCard:c,setIsDevMode:i,setRunSql:u}=s.useEditorActions(),{data:d,isLoading:m,isFetching:h}=s.useDashboardCardQuery(a);function f(x){const b=t.cards.find(p=>p.id===x);if(b!=null&&b.sql){r||i(!0),o(x);return}if(b!=null&&b.queryConfig){r&&i(!1),g(x),o(x);return}r||g(x),o(x)}function g(x){const b={...t,cards:t.cards.map(v=>v.id===a.id?a:v),activeCardId:x};l(b);const p=b.cards.find(v=>v.id===x);p.sql&&u(!0),c(p)}function j(){return a.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:a,data:d==null?void 0:d.records,isPending:m||h})})}):a.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:n,card:a,data:d==null?void 0:d.records})})})}):e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Jt,{className:"grow border-none shadow-none"})})}return e.jsxs(s.Tabs,{onValueChange:f,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(Ur,{})]})}function cs({children:t}){var L,N;s.useEditorStore(w=>w.frame);const a=s.useEditorStore(w=>w.card),n=s.useEditorStore(w=>w.isDevMode),r=s.useEditorStore(w=>w.isShowingVisual),l=s.useDashboardStore(w=>w.isVisualEditing),o=s.useEditorStore(w=>w.pythonStdOut);s.useEditorStore(w=>w.actions.setRunSql);const{setFrame:c,setCard:i,setActiveTabCardId:u,runAssistant:d,setIsDevMode:m,setCardPreferences:h}=s.useEditorActions(),{data:f,isLoading:g,isFetching:j,errorMessage:x,refetch:b}=s.useDashboardCardQuery(a);function p(){const w=JSON.stringify(f==null?void 0:f.records,null,2),y=new Blob([w],{type:"application/json"}),k=URL.createObjectURL(y),S=document.createElement("a");S.href=k,S.download=`${a.title}.json`,S.click()}function v(){const y=[Object.keys(f==null?void 0:f.records.reduce((C,F)=>({...C,...F}),{})).join(","),...((f==null?void 0:f.records)||[]).map(C=>Object.values(C).join(","))].join(`
339
- `),k=new Blob([y],{type:"text/csv"}),S=URL.createObjectURL(k),R=document.createElement("a");R.href=S,R.download=`${a.title}.csv`,R.click()}function T(){const w=`Can you get the documentation for ${a.type} chart?`;d(w)}return a?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(sa,{}),l&&e.jsx(s.IconButton,{tooltip:"Visual Docs",onClick:T,children:e.jsx(Ma,{className:"size-4"})}),!["table","custom"].includes(a.type)&&l&&e.jsx(Br,{})]}),!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:v,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:p,children:e.jsx(Ua,{strokeWidth:1.5,className:"size-4"})}),e.jsx(s.CopyButton,{text:JSON.stringify(f==null?void 0:f.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(ta,{})]}),a.type==="table"&&a.sql&&!s.hasValidCardConfig(a.config)&&e.jsxs("div",{className:"mr-2 flex items-center gap-3",children:[e.jsx(s.Checkbox,{id:"pagination",checked:((N=(L=a.preferences)==null?void 0:L.tablePrefs)==null?void 0:N.enableDevModePagination)??!1,onCheckedChange:w=>{var y;h({...a.preferences,tablePrefs:{...(y=a.preferences)==null?void 0:y.tablePrefs,enableDevModePagination:w}}),b()}}),e.jsx(s.Label,{htmlFor:"pagination",children:"Paginate Results"})]}),n&&e.jsx(qr,{})]}),r?e.jsx(aa,{}):e.jsxs(s.ResizablePanelGroup,{className:"px-6",direction:"horizontal",children:[o&&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:o&&e.jsx($r,{})}),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":o}),children:[(f==null?void 0:f.records)&&(f==null?void 0:f.records.length)>0&&e.jsx(s.TableVisual,{card:a,data:(f==null?void 0:f.records)||[]}),x&&e.jsx(Kt,{error:x})]})]})]}):e.jsx(e.Fragment,{children:"No Active Card"})}function $r(){const t=s.useEditorStore(n=>n.pythonStdOut);if(!t)return null;const a=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:a}}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function qr(){const t=s.useEditorStore(n=>n.isShowingVisual),a=s.useEditorStore(n=>n.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:()=>a(!t),id:"visualize",className:"data-[state=checked]:bg-foreground/50"})]})}function Yr(){var x,b;const t=s.useEditorStore(p=>p.card.customCardPreferences),{data:a}=Xt(),n=(a==null?void 0:a.plugins)||[],r=s.useEditorStore(p=>p.card),l=s.useEditorStore(p=>p.frame),o=(t==null?void 0:t.visualType)||"single",{setCustomCardPreferences:c}=s.useEditorActions(),{components:i,manifest:u}=s.useCustomVisual((t==null?void 0:t.url)||""),d=(x=u==null?void 0:u.visuals)==null?void 0:x.find(p=>p.name===(t==null?void 0:t.componentName));function m(p,v){if(!t)return;const L={...(t==null?void 0:t.dataInputCardIds)||{},[p]:{cardId:v,hookRef:null}};c({...t,dataInputCardIds:L})}function h(p){var T,L;const v=(T=l==null?void 0:l.cards)==null?void 0:T.filter(N=>{var w;return((w=N==null?void 0:N.customCardPreferences)==null?void 0:w.visualType)!=="multiple"}).map(N=>({value:N.id,label:N.tabTitle||N.title}));return e.jsx("div",{className:"space-y-2",children:(L=p==null?void 0:p.dataInputs)==null?void 0:L.map((N,w)=>{var y,k;return e.jsxs("div",{className:"grid grid-cols-10 gap-2",children:[e.jsx("div",{className:"col-span-4 flex items-center",children:N}),e.jsx(je,{className:"col-span-6 h-8 w-full justify-between",label:"",options:v||[],value:((k=(y=t==null?void 0:t.dataInputCardIds)==null?void 0:y[w])==null?void 0:k.cardId)||"",onValueChange:S=>m(w,S)})]},w+Math.random())})})}function f(p,v,T=[],L=""){var N,w;return t?p==="input"?e.jsx(s.Input,{className:`h-8 w-full ${s.removeRing}`,value:((N=t==null?void 0:t.settings)==null?void 0:N[v])||L,onChange:y=>{c({...t,settings:{...t==null?void 0:t.settings,[v]:y.target.value}})}},v):p==="select"?e.jsx(je,{className:"h-8 w-full",label:"",options:T,value:((w=t==null?void 0:t.settings)==null?void 0:w[v])||L,onValueChange:y=>{c({...t,settings:{...t==null?void 0:t.settings,[v]:y}})}}):null:null}function g(p){const v=Object.entries((p==null?void 0:p.settings)||{});return e.jsx("div",{className:"space-y-3",children:v.map(([T,L])=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:L.title}),f(L.ui,T,L.options,L.defaultValue)]},T))})}function j(p){t&&c({...t,visualType:p,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(je,{icon:e.jsx(Aa,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Plugin",options:n,value:(t==null?void 0:t.url)||"",onValueChange:p=>c({...t||{url:"",componentName:""},url:p})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&e.jsx(s.Tabs,{value:o,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(je,{icon:e.jsx(Ba,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Component",options:(i==null?void 0:i.filter(p=>p.type===o).map(p=>({value:p.name,label:p.name})))||[],value:t.componentName,onValueChange:p=>{console.log("changing value",p),c({...t,componentName:p})}})})]})})]}),((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:[d&&d.dataInputs&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Input Mapping"}),e.jsx("div",{className:"px-2",children:h(d)})]}),d&&d.settings&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"px-2",children:g(d)})})]})]})]})}function qe(){const[t,a]=I.useState([]),n=s.useEditorStore(d=>d.card.preferences),{setFilterOnClickColumnIndex:r,setCardPreferences:l}=s.useEditorStore(d=>d.actions),o=s.useEditorStore(d=>d.queryResultColumns);s.useEditorStore(d=>{var m;return(m=d.card.preferences)==null?void 0:m.filterOnClickColumnIndex}),I.useEffect(()=>{o&&a(new Array(o.length).fill(!1))},[o]);function c(d,m){var h,f;m?n!=null&&n.onClickFilter&&((h=n==null?void 0:n.onClickFilter)==null?void 0:h.length)>0?l({...n,onClickFilter:[...n.onClickFilter,{columnIndex:d,expression:""}]}):l({...n,onClickFilter:[{columnIndex:d,expression:""}]}):(l({...n,onClickFilter:(f=n==null?void 0:n.onClickFilter)==null?void 0:f.filter(g=>g.columnIndex!==d)}),a(g=>{const j=[...g];return j[d]=!1,j}))}function i(d,m){var f;const h=(f=n==null?void 0:n.onClickFilter)==null?void 0:f.map(g=>g.columnIndex===d?{...g,expression:m.target.value}:g);l({...n,onClickFilter:h})}function u(d){var m,h,f,g;if(t!=null&&t[d]||(h=(m=n==null?void 0:n.onClickFilter)==null?void 0:m.find(j=>j.columnIndex===d))!=null&&h.expression)return e.jsx(s.Input,{value:(g=(f=n==null?void 0:n.onClickFilter)==null?void 0:f.find(j=>j.columnIndex===d))==null?void 0:g.expression,onChange:j=>i(d,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:o==null?void 0:o.map((d,m)=>{var h,f;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=n==null?void 0:n.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:d}),e.jsx("div",{className:"flex items-center gap-2",children:((f=n==null?void 0:n.onClickFilter)==null?void 0:f.find(g=>g.columnIndex===m))&&e.jsx(s.Pencil,{onClick:()=>{a(g=>{const j=[...g];return j[m]=!g[m],j})},className:"invisible size-3 cursor-pointer text-gray-400 group-hover:visible"})})]}),u(m)]})},d)})})}function Gr({idx:t}){var i;const a=s.useEditorStore(u=>{var d;return(d=u.card)==null?void 0:d.preferences}),n=s.useEditorStore(u=>{var d;return(d=u.card.preferences)==null?void 0:d.datasetOptions}),r=s.useEditorStore(u=>u.actions.setCardPreferences),l=(i=a==null?void 0:a.chartOptions)==null?void 0:i.indexAxis,o=n==null?void 0:n.find(u=>u.idx===t);function c(u,d){(u==="end"||u==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const m={display:u!=="none",align:u,anchor:u,clamp:!0};if(!o)r({...a,datasetOptions:[...n||[],{idx:d,datalabels:m}]});else{const h={...o};h.datalabels=m;const f=n==null?void 0:n.map(g=>g.idx===d?h:g);r({...a,datasetOptions:f})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(Ct,{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(Ja,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})}),e.jsx("button",{onClick:()=>c("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Za,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})}),e.jsx("button",{onClick:()=>c("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Xa,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})})]})})]})}function Kr(){const t=s.useEditorStore(o=>o.card),{data:a}=s.useDashboardCardQuery(t),{keys:n}=s.getKeys((a==null?void 0:a.records)||[]),r=n.slice(1).filter(o=>!s.METADATA_KEYS.includes(o));let l=r;if(["stackedBar","stackedLine"].includes(t.type)){const o=s.pivotData({dataArray:(a==null?void 0:a.records)||[],groupKey:n[0],pivotKey:n[1],valueKey:n[2]}),{keys:c}=s.getKeys(o);l=c.slice(1)}return{transformedMetricKeys:l,dimensionKeys:n.slice(0,1),keys:n,defaultMetricKeys:r}}function bs({children:t,className:a,delayDuration:n}){return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:n,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:s.cn("overflow-hidden text-ellipsis whitespace-nowrap",a),children:t})}),e.jsx(s.TooltipContent,{children:t})]})})}function na(){const t=s.useEditorStore(u=>u.card),a=s.useEditorStore(u=>{var d,m,h;return(h=(m=(d=u==null?void 0:u.card)==null?void 0:d.preferences)==null?void 0:m.chartOptions)==null?void 0:h.indexAxis}),{data:n}=s.useDashboardCardQuery(t),r=a==="y"?"Metric":"Dimension",l=a==="y"?"Dimension":"Metric",{dimensionKeys:o,transformedMetricKeys:c,keys:i}=Kr();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:o.map(u=>e.jsx("p",{className:"flex h-8 items-center rounded-md bg-muted/70 px-3 hover:bg-muted",title:u,children:ra(u)},u))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:l}),e.jsx("div",{className:"my-1 max-h-[125px] space-y-1 overflow-y-auto",children:c.map((u,d)=>e.jsx(la,{className:"flex h-8 items-center bg-muted/70 px-3 hover:bg-muted",iconClassName:"invisible group-hover:visible",col:u,idx:d},u))})]})]})}function ra(t,a=30){return t.length>a?t.slice(0,a)+"...":t}function la({col:t,idx:a,className:n,iconClassName:r,children:l}){const o=s.useEditorStore(m=>{var h;return(h=m.card)==null?void 0:h.preferences}),c=s.useEditorStore(m=>{var h,f;return(f=(h=m.card)==null?void 0:h.preferences)==null?void 0:f.datasetOptions}),i=c==null?void 0:c.find(m=>m.idx===a),{setCardPreferences:u}=s.useEditorStore(m=>m.actions);function d(m){if(!i)u({...o,datasetOptions:[...c||[],{idx:a,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 f=c==null?void 0:c.map(g=>g.idx===a?h:g);u({...o,datasetOptions:f})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",n),children:[l||e.jsx(bs,{className:"max-w-[100px]",title:t,children:ra(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>d("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>d("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>d("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(Gr,{idx:a})]})]})}function $s(){const t=s.useEditorStore(g=>g.selectedConnectionId),a=s.useEditorStore(g=>g.selectedDatamodelId),n=s.useEditorStore(g=>g.selectedDatabaseName),r=s.useEditorStore(g=>g.selectedSchemaName),l=s.useEditorStore(g=>g.selectedTableName),o=s.useDashboardStore(g=>g.dashboard.filters)||[],c=s.useDashboardStore(g=>g.actions.addFilter),i=s.useDashboardStore(g=>g.actions.removeFilter),{removeFilterValues:u}=s.useDashboardActions(),{modelItems:d,tableName:m,connectionType:h}=s.useEditorAside();function f(g,j="dashboard",x){var k;const b=s.fmt(g.column_name),p=s.fmt(n||""),v=s.fmt(r||""),T=s.fmt(m);let L=s.getQualifiedTableName({schemaName:v,tableName:T,connectionType:h,databaseName:p}),N=`${L}.${b}`;const w=(k=d==null?void 0:d.find(S=>S.id===a))==null?void 0:k.name;a&&a!=="none"&&(N=`${s.DATAMODEL_NAMESPCACE}.${w}.${b}`,L=`${s.DATAMODEL_NAMESPCACE}.${w}`),x!=null&&x.qualifiedFieldName&&(N=x.qualifiedFieldName),x!=null&&x.entityName&&(L=x.entityName);const y=o==null?void 0:o.find(S=>S.column===N&&S.table===T&&(S.database===p||S.database===n));if(y)u(y.id),i(y.id);else{const S=s.v4();return m==="api"&&t?(c({location:j,id:S,column:N,title:g.column_name,dataType:g.data_type,table:"api",database:"",connectionId:t,operation:"in",sql:s.getDefaultFilterSql(g.data_type,L,b)}),S):(c({id:S,location:j,column:N,title:g.column_name,dataType:g.data_type,table:l||"",database:n||"",connectionId:t||"",operation:"in",sql:s.getDefaultFilterSql(g.data_type,L,b)}),S)}}return{assignFilter:f}}function We(){const t=s.useDashboardStore(i=>i.dashboard.filters),a=s.useEditorStore(i=>i.frame),{setFrame:n}=s.useEditorActions(),{columns:r}=s.useEditorAside(),{assignFilter:l}=$s();function o(i){const u=l(i,"frame");n({...a,filterId:u})}const c=t==null?void 0:t.find(i=>i.id===a.filterId);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Card Filter"}),e.jsx(Hr,{onSelect:o,columns:r}),c&&e.jsx(s.FilterHeader,{filter:c})]})}function Hr({columns:t,onSelect:a}){var c;const[n,r]=pe.useState(!1),[l,o]=pe.useState("");return e.jsxs(s.Popover,{open:n,onOpenChange:r,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{size:"sm",variant:"outline",role:"combobox","aria-expanded":n,className:"w-full justify-between font-normal",children:[l?(c=t.find(i=>i.column_name===l))==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:u=>{const d=u===l?"":u;o(d),r(!1),d&&a(i)},children:[i.column_name,e.jsx(s.CheckIcon,{className:s.cn("ml-auto h-4 w-4",l===i.column_name?"opacity-100":"opacity-0")})]},i.column_name))})]})]})})]})}function Qr({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:a=>a.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(na,{})})]}),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(qe,{}),e.jsx(We,{})]})]})]})})}function Wr({cardType:t}){function a(n){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:n==="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"}),n==="bubble"&&e.jsx("li",{children:"radius - 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/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:a(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(qe,{}),e.jsx(We,{})]})]})]})})}function oa(){const t=s.useEditorStore(i=>i.card.type),a=s.useEditorStore(i=>i.isDevMode),n=s.useEditorStore(i=>i.card.preferences),{setCardPreferences:r}=s.useEditorStore(i=>i.actions);function l(i){var m;const u={datalabels:{display:i!=="none",align:i,anchor:i,clamp:!0}},d={...n,chartOptions:{...n==null?void 0:n.chartOptions,plugins:{...(m=n==null?void 0:n.chartOptions)==null?void 0:m.plugins,...u}}};r(d)}function o(){var i,u,d;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((d=(u=(i=n==null?void 0:n.chartOptions)==null?void 0:i.plugins)==null?void 0:u.datalabels)==null?void 0:d.anchor)||"none",onValueChange:l,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,u,d;return e.jsx("div",{children:e.jsxs(s.Select,{value:((d=(u=(i=n==null?void 0:n.chartOptions)==null?void 0:i.plugins)==null?void 0:u.datalabels)==null?void 0:d.anchor)||"none",onValueChange:l,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:a?o():c()})}const Jr={datasets:[{type:"line",label:"Sum_sales",data:[]},{type:"bar",label:"Sum_profit",data:[]}]},Xr={datasets:[{fill:"origin",type:"line",label:"Sum_sales",data:[]}]};function Zr(){const t=s.useEditorStore(a=>a.card.type);return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsx(s.Accordion,{className:" ",type:"single",collapsible:!0,children:el(t)}),!["kpi"].includes(t)&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(oa,{}),e.jsx(qe,{}),e.jsx(We,{})]})]})}function el(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(Jr,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(Xr,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 sl({colorRanges:t,setColorRanges:a}){const n={start:-1/0,end:100,color:""};function r(c,i,u){const d=[...t];d[c]={...d[c],[i]:u},a(d)}function l(c){const i=[...t];i.splice(c,1),a(i)}function o(){a([...t,n])}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:o,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:u=>r(i,"start",u.target.value),value:c.start,className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx("span",{children:"-"}),e.jsx(s.Input,{value:c.end,onChange:u=>r(i,"end",u.target.value),className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx(s.Input,{onChange:u=>r(i,"color",u.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:()=>l(i),variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.X,{className:"size-3"})})]},i))]})}function tl(){var m,h,f,g,j;const t=s.useEditorStore(x=>x.card.preferences),a=s.useEditorStore(x=>x.actions.setCardPreferences),n=s.useEditorStore(x=>x.card),r=s.isExplorerCard(n),l=s.useEditorStore(x=>x.actions.setNumberFormat);s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.decimalPlaces});const o=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.locale}),c=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.currency});s.useEditorStore(x=>x.actions.setFilterOnClickField);const i=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.colorRanges})||[],u=s.useEditorStore(x=>x.actions.setColorRanges),d=[...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=>{a({...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:o||"none",onValueChange:x=>{var b,p,v;return l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((p=t==null?void 0:t.formatNumber)==null?void 0:p.currency)||"",x,((v=t==null?void 0:t.formatNumber)==null?void 0:v.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,p,v;console.log("currency",x),l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,x==="none"?"":x,((p=t==null?void 0:t.formatNumber)==null?void 0:p.locale)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.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"),d.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=(f=t==null?void 0:t.formatNumber)==null?void 0:f.decimalPlaces)==null?void 0:g.toString())||"0",onValueChange:x=>{var b,p,v;return l(Number(x),((b=t==null?void 0:t.formatNumber)==null?void 0:b.currency)||"",((p=t==null?void 0:t.formatNumber)==null?void 0:p.locale)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.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,p,v;return l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((p=t==null?void 0:t.formatNumber)==null?void 0:p.currency)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.locale)||"",x.target.value)}})]})]})]})}),e.jsx(s.Separator,{className:"my-3"}),e.jsx(sl,{colorRanges:i,setColorRanges:u})]})]})}function al(){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(tl,{})}),e.jsx("div",{}),e.jsx("div",{})]})}function Ts({children:t,summary:a,open:n,className:r}){return e.jsxs("details",{open:n,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:a}),e.jsx(s.ChevronUp,{className:"h-4 w-4"})]}),e.jsx("div",{className:"transition-all ease-in-out",children:t})]})}const nl=[{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"}],rl=["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"],ll=rl.map(t=>({label:t,value:t}));function ol(){var u,d,m,h,f,g,j,x,b,p,v,T,L,N,w,y,k,S;const t=s.useEditorStore(R=>R.card),a=(d=(u=t==null?void 0:t.preferences)==null?void 0:u.mapVisualOptions)==null?void 0:d.topoJsonUrl,[n,r]=I.useState(((h=(m=t==null?void 0:t.preferences)==null?void 0:m.mapVisualOptions)==null?void 0:h.customTopoJsonUrl)||""),{setCardPreferences:l}=s.useEditorActions(),{data:o}=s.useTopoJson(t),c=Object.keys((o==null?void 0:o.objects)||{}).map(R=>({label:R,value:R}))||[],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(Ts,{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(Ts,{open:!0,summary:"Settings",children:e.jsxs("div",{className:"space-y-3 px-2",children:[e.jsx(je,{className:"h-9",options:i,onValueChange:R=>{console.log("value",R),l({...t.preferences,mapVisualOptions:{topoJsonUrl:R}})},value:a||"",label:"Select Map"}),a==="custom"&&e.jsx(s.Input,{onChange:R=>{r(R.target.value)},onBlur:()=>{var R;console.log("onBlur",n),l({...t.preferences,mapVisualOptions:{...(R=t.preferences)==null?void 0:R.mapVisualOptions,customTopoJsonUrl:n}})},value:n,className:`h-9 w-full ${s.removeRing}`,placeholder:"Custom URL"}),o&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Map Object"}),e.jsx(je,{className:"h-9",options:c,value:((g=(f=t.preferences)==null?void 0:f.mapVisualOptions)==null?void 0:g.objectKey)||"",label:"Map Object",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,objectKey:R}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Projection"}),e.jsx(je,{className:"h-9",options:nl,value:((x=(j=t.preferences)==null?void 0:j.mapVisualOptions)==null?void 0:x.projection)||"",label:"Projection",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projection:R}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Colors"}),e.jsx(je,{className:"h-9",options:ll,value:((p=(b=t.preferences)==null?void 0:b.mapVisualOptions)==null?void 0:p.colorScale)||"",label:"Select Color Scale",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,colorScale:R}})}})]})]})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(Ts,{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:((T=(v=t.preferences)==null?void 0:v.mapVisualOptions)==null?void 0:T.projectionScale)||1,onChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionScale:Number(R.target.value)}})}}),e.jsx(s.Label,{children:"X"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((w=(N=(L=t.preferences)==null?void 0:L.mapVisualOptions)==null?void 0:N.projectionOffset)==null?void 0:w[0])||0,onChange:R=>{var C,F,D,E;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionOffset:[Number(R.target.value),((E=(D=(F=t.preferences)==null?void 0:F.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:E[1])||0]}})}}),e.jsx(s.Label,{children:"Y"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((S=(k=(y=t.preferences)==null?void 0:y.mapVisualOptions)==null?void 0:k.projectionOffset)==null?void 0:S[1])||0,onChange:R=>{var C,F,D,E;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionOffset:[((E=(D=(F=t.preferences)==null?void 0:F.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:E[0])||0,Number(R.target.value)]}})}})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(qe,{})]})}function il(){var r;const t=s.useEditorStore(l=>l.card.preferences),{setCardPreferences:a}=s.useEditorStore(l=>l.actions);function n(l){a({...t,textVisualOptions:{...t==null?void 0:t.textVisualOptions,isDynamicText:l==="dynamic"}})}return e.jsxs(s.RadioGroup,{value:(r=t==null?void 0:t.textVisualOptions)!=null&&r.isDynamicText?"dynamic":"static",onValueChange:n,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 ds({cardType:t,docContent:a,suffix:n="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)} ${n}`}),e.jsx(s.AccordionContent,{children:a||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:l=>l.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(il,{})})]}),!["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(qe,{}),e.jsx(We,{})]})]})]})})}function cl(){const t=s.useEditorStore(r=>{var l,o;return(o=(l=r==null?void 0:r.card)==null?void 0:l.preferences)==null?void 0:o.sortChart}),{setSortChart:a}=s.useEditorActions();function n(){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort"}),e.jsx(je,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"ASC",value:"asc"},{label:"DESC",value:"desc"}],value:t||"none",onValueChange:r=>{a(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:[n(),e.jsx(na,{})]})]}),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(qe,{}),e.jsx(We,{})]})]})]})})}function dl({cardType:t="table"}){console.log("cardType",t);const a=s.useEditorStore(l=>{var o;return(o=l.card)==null?void 0:o.preferences}),n=s.useEditorStore(l=>l.actions.setCardPreferences),r=l=>{n({...a,allowDownload:l})};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(qe,{}),e.jsx(We,{})]})]})}),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 ia({color:t,onColorChange:a,onClose:n}){const[r,l]=I.useState(0),[o,c]=I.useState(100),[i,u]=I.useState(50),[d,m]=I.useState(t);I.useEffect(()=>{const b=it(t);if(b){const p=ct(b.r,b.g,b.b);l(p.h),c(p.s),u(p.l),m(t)}},[t]);const h=b=>{l(b),g(b,o,i)},f=b=>{const p=b.currentTarget.getBoundingClientRect(),v=Math.max(0,Math.min(1,(b.clientX-p.left)/p.width)),T=Math.max(0,Math.min(1,(b.clientY-p.top)/p.height)),L=v*100,N=(1-T)*100;c(L),u(N),g(r,L,N)},g=(b,p,v)=>{const T=ml(b,p,v),L=ul(T.r,T.g,T.b);m(L)},j=b=>{if(m(b),/^#[0-9A-Fa-f]{6}$/.test(b)){const p=it(b);if(p){const v=ct(p.r,p.g,p.b);l(v.h),c(v.s),u(v.l)}}},x=()=>{/^#[0-9A-Fa-f]{6}$/.test(d)&&(a(d),n())};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:f,onMouseMove:b=>{b.buttons===1&&f(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:`${o}%`,top:`${100-i}%`,backgroundColor:d}})]}),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:d,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:d}}),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:n,children:"Cancel"}),e.jsx(s.Button,{onClick:x,children:"OK"})]})]})}function it(t){const a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return a?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}function ul(t,a,n){return"#"+((1<<24)+(t<<16)+(a<<8)+n).toString(16).slice(1)}function ct(t,a,n){t/=255,a/=255,n/=255;const r=Math.max(t,a,n),l=Math.min(t,a,n);let o=0,c=0;const i=(r+l)/2;if(r!==l){const u=r-l;switch(c=i>.5?u/(2-r-l):u/(r+l),r){case t:o=((a-n)/u+(a<n?6:0))/6;break;case a:o=((n-t)/u+2)/6;break;case n:o=((t-a)/u+4)/6;break}}return{h:Math.round(o*360),s:Math.round(c*100),l:Math.round(i*100)}}function ml(t,a,n){t/=360,a/=100,n/=100;let r,l,o;if(a===0)r=l=o=n;else{const c=(d,m,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?d+(m-d)*6*h:h<.5?m:h<.6666666666666666?d+(m-d)*(.6666666666666666-h)*6:d),i=n<.5?n*(1+a):n+a-n*a,u=2*n-i;r=c(u,i,t+1/3),l=c(u,i,t),o=c(u,i,t-1/3)}return{r:Math.round(r*255),g:Math.round(l*255),b:Math.round(o*255)}}const hl=["#000000","#ffffff","#6b7280","#dc2626","#ea580c","#ca8a04","#16a34a","#0891b2","#2563eb","#7c3aed","#c026d3","#e11d48","#0f172a","#f3f4f6","#fbbf24"];function ca(){var T,L,N,w,y,k,S,R,C,F;const t=s.useEditorStore(D=>D.card),a=s.useEditorStore(D=>{var E;return(E=D.card)==null?void 0:E.preferences}),{setCardPreferences:n,updateCardInFrame:r}=s.useEditorActions(),{data:l}=s.useDashboardCardQuery(t),[o,c]=I.useState({}),[i,u]=I.useState(null),[d,m]=I.useState(null),h=I.useMemo(()=>{var B,M,O,z,P,H,X;if(!(l!=null&&l.records)||l.records.length===0)return[];const D=(t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine",E=(t==null?void 0:t.type)==="bar"||(t==null?void 0:t.type)==="line",A=((B=t==null?void 0:t.config)==null?void 0:B.pivotByColumns)&&t.config.pivotByColumns.length>0;if((D||E)&&A){if(l.pivotSchema&&Array.isArray(l.pivotSchema)){const Q=new Set;return l.pivotSchema.forEach(Y=>{Y.alias&&Q.add(Y.alias)}),Array.from(Q)}if(l.records.length>0){const Q=l.records[0],Y=Object.keys(Q),K=new Set;(M=t==null?void 0:t.config)!=null&&M.groupByColumns&&t.config.groupByColumns.forEach(V=>{K.add(V.label||V.name),K.add(V.alias||V.name)});const U=new Set;return(O=t==null?void 0:t.config)!=null&&O.metricColumns&&t.config.metricColumns.forEach(V=>{const $=V.alias||V.name;U.add($),U.add(`${$}_count`),U.add(`${$}_sum`),U.add(`${$}_avg`),U.add(`${$}_min`),U.add(`${$}_max`);const Z=V.entityName||V.qualifiedEntityName;Z&&(U.add(`${Z}_${$}`),U.add(`${Z}_${$}_count`))}),Y.filter(V=>!K.has(V)&&!U.has(V))}}if((E||D)&&!A&&((P=(z=t==null?void 0:t.config)==null?void 0:z.metricColumns)!=null&&P.length))return t.config.metricColumns.map(Q=>Q.alias||Q.label||Q.name);if((X=(H=t==null?void 0:t.config)==null?void 0:H.groupByColumns)!=null&&X.length){const Q=t.config.groupByColumns[0],Y=Q.label||Q.name,K=new Set;return l.records.forEach(U=>{const _=U[Y];_!=null&&K.add(String(_))}),Array.from(K)}return[]},[l,(T=t==null?void 0:t.config)==null?void 0:T.groupByColumns,(L=t==null?void 0:t.config)==null?void 0:L.pivotByColumns,(N=t==null?void 0:t.config)==null?void 0:N.metricColumns,t==null?void 0:t.type]),f=I.useMemo(()=>s.getDefaultChartColors(),[]);I.useEffect(()=>{const D={};h.forEach((E,A)=>{D[E]=s.getColorForValue(E,A,a==null?void 0:a.colorConfig)}),c(D)},[h,a==null?void 0:a.colorConfig,f]);const g=(D,E)=>{const A={...o,[D]:E};c(A);const B={...a||{},colorConfig:{segments:A}};n(B);const M={...t,preferences:B};r(M)},j=(D,E)=>{var P;const A=f[E%f.length],{[D]:B,...M}=((P=a==null?void 0:a.colorConfig)==null?void 0:P.segments)||{},O={...a||{},colorConfig:{segments:M}};n(O);const z={...t,preferences:O};r(z),c(H=>({...H,[D]:A}))};if(!h.length||!((t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine"?((y=(w=t==null?void 0:t.config)==null?void 0:w.groupByColumns)==null?void 0:y.length)||((S=(k=t==null?void 0:t.config)==null?void 0:k.pivotByColumns)==null?void 0:S.length):(C=(R=t==null?void 0:t.config)==null?void 0:R.groupByColumns)==null?void 0:C.length)||["table","kpi","text","custom"].includes(t.type))return null;const p=()=>{const D={...a||{},colorConfig:{segments:{}}};n(D);const E={...t,preferences:D};r(E);const A={};h.forEach((B,M)=>{A[B]=s.getColorForValue(B,M,void 0)}),c(A)},v=Object.keys(((F=a==null?void 0:a.colorConfig)==null?void 0:F.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(ln,{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:v&&e.jsxs("button",{className:"ml-auto flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:p,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,E)=>{const A=s.isDefaultColor(o[D],E),B=!A;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:i===D,onOpenChange:M=>u(M?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:o[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:f.slice(0,10).map((M,O)=>e.jsxs("button",{className:s.cn("relative h-5 w-5 rounded border-2 transition-all hover:scale-110",o[D]===M?"border-gray-900":"border-transparent"),style:{backgroundColor:M},onClick:()=>{g(D,M),u(null)},children:[O===E%f.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:M})]},`default-${O}`))})]}),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:hl.map((M,O)=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border transition-all hover:scale-110",o[D]===M?"border-2 border-gray-900":M==="#ffffff"?"border border-gray-300":"border border-transparent"),style:{backgroundColor:M},onClick:()=>{g(D,M),u(null)},children:e.jsx("span",{className:"sr-only",children:M})},`preset-${O}`))})]}),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:o[D]}),u(null)},children:"Custom color"}),!A&&e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>{j(D,E),u(null)},children:[e.jsx(s.RotateCcw,{className:"h-3 w-3"}),"Reset"]})]})]})})]}),e.jsx("span",{className:"flex-1 truncate text-sm",children:D}),B&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"(custom)"})]},D)})}),d&&e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50",onClick:()=>m(null)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(ia,{color:d.color,onColorChange:D=>{g(d.value,D),m(null)},onClose:()=>m(null)})})]})]})})]})}function De({value:t,onSave:a,placeholder:n="",type:r="text",className:l=""}){const[o,c]=I.useState(t??""),[i,u]=I.useState(!1);I.useEffect(()=>{c(t??"")},[t]);const d=()=>{a(o),u(!1)},m=()=>{c(t??""),u(!1)};return e.jsxs("div",{className:`flex items-center gap-2 ${l}`,children:[e.jsx(s.Input$1,{placeholder:n,type:r,value:i?o:t??"",onChange:h=>{c(h.target.value),u(!0)},onFocus:()=>u(!0),onClick:h=>h.stopPropagation(),className:"h-8 text-xs",onPointerDown:h=>h.stopPropagation(),onKeyDown:h=>{h.stopPropagation(),h.key==="Enter"&&i&&o!==t?d():h.key==="Escape"&&m()},"aria-label":n||"Edit field"}),i&&o!==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:d,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 xl=["auto","number","currency","percent","scientific","date"],pl=[{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"},{value:"CHF",label:"CHF - Swiss Franc"},{value:"SEK",label:"SEK - Swedish Krona"},{value:"NZD",label:"NZD - New Zealand Dollar"},{value:"MXN",label:"MXN - Mexican Peso"},{value:"SGD",label:"SGD - Singapore Dollar"},{value:"HKD",label:"HKD - Hong Kong Dollar"},{value:"NOK",label:"NOK - Norwegian Krone"},{value:"KRW",label:"KRW - South Korean Won"}],fl=[{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"}],gl=t=>t.charAt(0).toUpperCase()+t.slice(1);function qs({formatOptions:t={},onFormatOptionsChange:a,showTitle:n=!0,title:r="NUMBER FORMAT"}){const l=t.type||"auto",o=(i,u)=>{a({...t,[i]:u})},c=()=>l==="currency"?2:l==="percent"?1:0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[n&&e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:r}),e.jsxs(s.Select,{value:l,onValueChange:i=>o("type",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:xl.map(i=>e.jsx(s.SelectItem,{value:i,className:"text-xs",children:i==="auto"?"Auto (Default)":gl(i)},i))})]})]}),l!=="auto"&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-4",children:[["number","currency","percent"].includes(l)&&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=>o("decimalPlaces",parseInt(i.target.value)||0),className:"h-8 text-xs"})})]}),l==="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=>o("currency",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:pl.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),["number","currency"].includes(l)&&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=>o("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=>o("locale",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:fl.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),l==="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=>o("prefix",i.target.value),className:"h-8 text-xs"})})]}),l==="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=>o("suffix",i.target.value),className:"h-8 text-xs"})})]}),["number","currency"].includes(l)&&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=>o("negativeInParentheses",i)})]}),l==="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=>o("multiplyBy",i.target.value?parseFloat(i.target.value):void 0),className:"h-8 text-xs"})})]}),l==="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=>o("dateFormat",i.target.value),className:"h-8 text-xs"})})]})]})]})}function dt({axis:t,label:a,type:n,config:r,onChange:l}){var h,f,g,j,x,b,p,v,T,L,N,w;const o=(y,k)=>{l({...r,[y]:k})},c=(y,k)=>{var S,R;l({...r,name:{enabled:y==="enabled"?k:((S=r==null?void 0:r.name)==null?void 0:S.enabled)??!1,text:y==="text"?k:(R=r==null?void 0:r.name)==null?void 0:R.text}})},i=(y,k)=>{var S,R;l({...r,labels:{enabled:y==="enabled"?k:((S=r==null?void 0:r.labels)==null?void 0:S.enabled)??!0,rotation:y==="rotation"?k:(R=r==null?void 0:r.labels)==null?void 0:R.rotation}})},u=(y,k)=>{l({...r,scale:{...r==null?void 0:r.scale,[y]:k===""?"auto":Number(k)}})},d=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:a})})}),e.jsx(s.SmallSwitch,{checked:(r==null?void 0:r.enabled)!==!1,onCheckedChange:y=>o("enabled",y),onClick:y=>y.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:y=>c("enabled",y)})]}),((f=r==null?void 0:r.name)==null?void 0:f.enabled)&&e.jsx(De,{placeholder:`${a} title`,value:((g=r==null?void 0:r.name)==null?void 0:g.text)||"",onSave:y=>c("text",y),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:y=>o("position",y),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:d.map(y=>e.jsx(s.SelectItem,{value:y,className:"text-xs",children:y==="auto"?"Auto (Default)":s.titleCase(y)},y))})]})]}),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:y=>i("enabled",y)})]}),((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:y=>i("rotation",y==="auto"?"auto":Number(y)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:m.map(y=>e.jsx(s.SelectItem,{value:y,className:"text-xs",children:y==="auto"?"Auto (Default)":`${y}°`},y))})]})]})]}),n==="value"&&e.jsx(qs,{formatOptions:(r==null?void 0:r.formatOptions)||{},onFormatOptionsChange:y=>l({...r,formatOptions:y}),showTitle:!0,title:"FORMAT"}),n==="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(De,{type:"number",placeholder:"auto",value:((p=r==null?void 0:r.scale)==null?void 0:p.min)==="auto"||((v=r==null?void 0:r.scale)==null?void 0:v.min)===void 0?"":String(r.scale.min),onSave:y=>u("min",y),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(De,{type:"number",placeholder:"auto",value:((T=r==null?void 0:r.scale)==null?void 0:T.max)==="auto"||((L=r==null?void 0:r.scale)==null?void 0:L.max)===void 0?"":String(r.scale.max),onSave:y=>u("max",y),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(De,{type:"number",placeholder:"auto",value:((N=r==null?void 0:r.scale)==null?void 0:N.stepSize)==="auto"||((w=r==null?void 0:r.scale)==null?void 0:w.stepSize)===void 0?"":String(r.scale.stepSize),onSave:y=>u("stepSize",y),className:""})})]})]})]})]})]})}function da(){const t=s.useEditorStore(c=>c.card),a=s.useEditorStore(c=>{var i;return(i=c.card)==null?void 0:i.preferences}),{setCardPreferences:n,updateCardInFrame:r}=s.useEditorActions();if(!t||["tornado","pyramid","kpi"].includes(t.type))return null;const l=s.AxisConfigurator.getAxisInfo(t.type,a);if(!l.hasXAxis&&!l.hasYAxis)return null;const o=(c,i)=>{const d={...a||{},[c==="x"?"xAxisConfig":"yAxisConfig"]:i};n(d);const m={...t,preferences:d};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(hn,{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:[l.hasXAxis&&e.jsx(dt,{axis:"x",label:"X-Axis",type:l.xAxisType,config:a==null?void 0:a.xAxisConfig,onChange:c=>o("x",c)}),l.hasYAxis&&e.jsx(dt,{axis:"y",label:"Y-Axis",type:l.yAxisType,config:a==null?void 0:a.yAxisConfig,onChange:c=>o("y",c)})]})})]})}function ua(){const t=s.useEditorStore(d=>d.card),a=s.useEditorStore(d=>{var m,h,f,g;return(g=(f=(h=(m=d.card)==null?void 0:m.preferences)==null?void 0:h.chartOptions)==null?void 0:f.plugins)==null?void 0:g.legend}),{setLegendOptions:n}=s.useEditorActions();if(!t||!s.chartSupportsLegend(t.type))return null;const r="bottom",l="center",o=!(t.type==="stackedBar"||t.type==="stackedLine"),c=(d,m)=>{const h={...a,[d]:m};n(h)},i=["top","bottom","left","right"],u=["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(Wa,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Legend"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Display"}),e.jsx(s.SmallSwitch,{checked:(a==null?void 0:a.display)??o,onCheckedChange:d=>c("display",d)})]}),((a==null?void 0:a.display)??o)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:(a==null?void 0:a.position)||r,onValueChange:d=>c("position",d),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:i.map(d=>e.jsx(s.SelectItem,{value:d,className:"text-xs",children:s.titleCase(d)},d))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Alignment"}),e.jsxs(s.Select,{value:(a==null?void 0:a.align)||l,onValueChange:d=>c("align",d),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(d=>e.jsx(s.SelectItem,{value:d,className:"text-xs",children:s.titleCase(d)},d))})]})]})]})]})})]})}function ma(){var k,S,R,C,F,D,E,A,B;const t=s.useEditorStore(M=>M.card),a=s.useEditorStore(M=>{var O,z;return(z=(O=M.card)==null?void 0:O.preferences)==null?void 0:z.dataLabelsConfig}),n=s.useEditorStore(M=>{var O;return(O=M.card)==null?void 0:O.preferences}),{setCardPreferences:r,updateCardInFrame:l}=s.useEditorActions();if(!t||!s.chartSupportsDataLabels(t.type))return null;const o=((k=n==null?void 0:n.chartOptions)==null?void 0:k.indexAxis)==="y",c=t.type==="stackedBar"||t.type==="stackedLine",i=t.type==="pie"||t.type==="doughnut"||t.type==="polarArea"||t.type==="funnel",u=!i,d=(R=(S=n==null?void 0:n.chartOptions)==null?void 0:S.plugins)==null?void 0:R.datalabels,m=(d==null?void 0:d.display)!==!1&&((d==null?void 0:d.anchor)||(d==null?void 0:d.align)),h=(a==null?void 0:a.enabled)!==void 0?a.enabled:m,f=(M,O)=>{const z={...a,[M]:O},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},g=(M,O)=>{const z={...a,font:{...a==null?void 0:a.font,[M]:O}},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},j=(M,O)=>{const z={...a,formatOptions:{...a==null?void 0:a.formatOptions,[M]:O}},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},b=(()=>{const M=t.type;return M==="stackedBar"||M==="stackedLine"||M==="pie"||M==="doughnut"?"center":o?"right":"top"})();let p=[];c||i?p=["center"]:p=["auto",...(o?["center","left","right"]:["center","top","bottom"]).filter(O=>O!==b),"custom"];const v=()=>s.titleCase(b),T=["center","start","end"],L=["center","start","end","top","bottom"],N=u?["auto","number","currency","percent","none"]:["number","currency","percent","none"],w=[{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"}],y=[{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(pn,{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:M=>f("enabled",M)})]}),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:(a==null?void 0:a.position)||"auto",onValueChange:M=>f("position",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:p.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:M==="auto"?v():M==="custom"?"Custom (Advanced)":s.titleCase(M)},M))})]})]}),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:(a==null?void 0:a.showTotal)??!1,onCheckedChange:M=>f("showTotal",M)})]}),(a==null?void 0:a.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:(a==null?void 0:a.anchor)||"center",onValueChange:M=>f("anchor",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:T.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:s.titleCase(M)},M))})]})]}),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((a==null?void 0:a.align)||"center"),onValueChange:M=>f("align",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:L.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:s.titleCase(M)},M))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Format"}),e.jsxs(s.Select,{value:(a==null?void 0:a.format)||(u?"auto":"none"),onValueChange:M=>f("format",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:N.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:M==="auto"&&u?"Auto (Use Axis)":M==="none"?"None (Raw Value)":s.titleCase(M)},M))})]})]}),(a==null?void 0:a.format)&&!["auto","none"].includes(a.format)&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[["number","currency","percent"].includes(a.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(De,{type:"number",placeholder:"0",value:String(((C=a==null?void 0:a.formatOptions)==null?void 0:C.decimalPlaces)??(a.format==="currency"?2:a.format==="percent"?1:0)),onSave:M=>j("decimalPlaces",Number(M)),className:""})})]}),a.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:((F=a==null?void 0:a.formatOptions)==null?void 0:F.currency)||"USD",onValueChange:M=>j("currency",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:w.map(M=>e.jsx(s.SelectItem,{value:M.value,className:"text-xs",children:M.label},M.value))})]})]}),["number","currency"].includes(a.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=a==null?void 0:a.formatOptions)==null?void 0:D.useSuffix)??!1,onCheckedChange:M=>j("useSuffix",M)})]}),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:((E=a==null?void 0:a.formatOptions)==null?void 0:E.locale)||"en-US",onValueChange:M=>j("locale",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:y.map(M=>e.jsx(s.SelectItem,{value:M.value,className:"text-xs",children:M.label},M.value))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",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(De,{type:"number",placeholder:"12",value:String(((A=a==null?void 0:a.font)==null?void 0:A.size)||12),onSave:M=>g("size",Number(M)),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:((B=a==null?void 0:a.font)==null?void 0:B.weight)||"normal",onValueChange:M=>g("weight",M),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:(a==null?void 0:a.color)==="auto"||!(a!=null&&a.color)?"auto":"custom",onValueChange:M=>{M==="auto"&&f("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(De,{type:"number",placeholder:"0",value:String((a==null?void 0:a.rotation)||0),onSave:M=>f("rotation",Number(M)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"degrees"})]})]})]})]})})]})}function jl(){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(ca,{}),e.jsx(da,{}),e.jsx(ua,{}),e.jsx(ma,{})]})]})}const yl=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."]})]}),bl=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."]})]}),vl=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 Nl(){const t=s.useEditorStore(n=>n.card.type);function a(n){const r=["kpi","table","text","map","custom"],l=o=>r.includes(n)?o:e.jsxs(e.Fragment,{children:[o,e.jsx(jl,{})]});switch(n){case"stackedBar":case"stackedLine":return l(e.jsx(cl,{}));case"tornado":case"pyramid":return l(e.jsx(ds,{docContent:yl,cardType:n}));case"kpi":return e.jsx(al,{});case"line":case"bar":return l(e.jsx(Qr,{cardType:n}));case"range":return l(e.jsx(ds,{docContent:bl,cardType:n}));case"pie":case"doughnut":case"polarArea":case"radar":case"funnel":return l(e.jsx(ds,{cardType:n}));case"bubble":case"scatter":return l(e.jsx(Wr,{cardType:n}));case"table":return e.jsx(dl,{cardType:n});case"text":return e.jsx(ds,{docContent:vl,cardType:n,suffix:"Visual"});case"map":return e.jsx(ol,{});case"custom":return e.jsx(Yr,{});default:return l(e.jsx(Zr,{}))}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[a(t),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function ha({label:t,column:a,functions:n,onFunctionChange:r}){let l=n[0];"aggregate"in a?l=n.find(c=>c.value===a.aggregate)||n[0]:"granularity"in a&&(l=n.find(c=>c.value===a.granularity)||n[0]);function o(c){r(c)}return e.jsx(je,{className:"flex h-8 w-8 justify-center overflow-clip rounded-none border-none bg-muted px-0 [&>svg]:hidden",icon:l.logo,options:n,value:l.value,onValueChange:c=>o(c),label:t,showPlaceholderLabel:!1})}const Cl=[{label:"Sum",value:"SUM",logo:e.jsx(Nt,{className:"size-3.5"})},{label:"Count",value:"COUNT",logo:e.jsx(Te,{className:"size-3.5"})},{label:"Unique",value:"DISTINCT",logo:e.jsx($a,{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 Sl({column:t}){const{updateMetricColumnOld:a}=s.useEditorActions();let n=Cl;s.isTextDataType(t.type)&&(n=n.filter(l=>["COUNT","DISTINCT"].includes(l.value))),s.isNumberDataType(t.type)&&(n=n.filter(l=>!["DISTINCT"].includes(l.value)));function r(l){const o={...t,aggregate:l,label:as(t.name,l)};a(t.id,o)}return e.jsx(ha,{column:t,functions:n,onFunctionChange:l=>r(l),label:"Aggregation"})}const wl=[{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 Dl({column:t}){const{updateGroupByColumnOld:a}=s.useEditorActions();function n(r){const l={...t,granularity:r,label:Qe(t.name,r)};a(t.id,l)}return e.jsx(ha,{column:t,functions:wl,onFunctionChange:r=>n(r),label:"Granularity"})}function kl({col:t,onChange:a,droppableId:n}){const{columns:r}=s.useDataColumns(),l=I.useMemo(()=>{let i=[];(n===ze||n===Ve||n===_e)&&(i=r);const u=i==null?void 0:i.filter(d=>d.column_name!==t.name);return u==null?void 0:u.map(d=>({id:d.column_name,value:d.column_name}))},[r,n,t.name]),o=[{id:t.name,value:t.name}];function c(i){const u=r==null?void 0:r.find(d=>{var m;return d.column_name===((m=i[0])==null?void 0:m.id)});u&&a(u)}return l!=null&&l.length?e.jsx(s.ComboBox2,{multiple:!1,options:l,selectedOptions:o,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 xa({column:t}){const a=s.useEditorStore(u=>u.card.type),n=s.useEditorStore(u=>{var d,m;return(m=(d=u.card)==null?void 0:d.config)==null?void 0:m.metricColumns}),r=(n==null?void 0:n.map(u=>u.label))||[],l=r==null?void 0:r.find(u=>u===t.label||u===t.name),o=l?r.indexOf(l):-1;function c(){return e.jsx("div",{className:"pr-1",children:l&&e.jsx(la,{idx:o,col:l,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(oa,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(a)&&c(),["pie","doughnut"].includes(a)&&i()]})}function Tl({column:t,type:a,onRemoveColumn:n,droppableId:r}){const[l,o]=I.useState(!1),{updateGroupByColumnOld:c,updateMetricColumnOld:i,updatePivotByColumnOld:u}=s.useEditorActions(),{attributes:d,listeners:m,setNodeRef:h,transform:f,transition:g,isDragging:j}=s.useSortable({id:t.id,data:{type:a}}),x=f?{opacity:j?.5:void 0,transform:s.CSS.Translate.toString(f),transition:g}:void 0,b=s.isTextDataType(t.type);function p(w){const y=s.isNumberDataType(w.data_type),k=s.isTextDataType(w.data_type),S=s.isDateDataType(w.data_type),R=y?"number":k?"string":S?"date":"string";if(r===ze){if(k){const C={id:t.id,name:w.column_name,type:R,role:"groupby"};c(t.id,C)}if(S){const C={id:t.id,name:w.column_name,type:R,role:"groupby",label:Qe(w.column_name,"month"),granularity:"month"};c(t.id,C)}}if(r===_e){if(k){const C={id:t.id,name:w.column_name,type:R,role:"groupby"};u(t.id,C)}if(S){const C={id:t.id,name:w.column_name,type:R,label:Qe(w.column_name,"month"),granularity:"month",role:"groupby"};u(t.id,C)}}if(r===Ve){const C={id:t.id,name:w.column_name,type:R,role:"metric",label:as(w.column_name,"SUM"),aggregate:y?"SUM":"COUNT"};i(t.id,C)}}function v(){if(r===Ve)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(xa,{column:t})})}function T(){const w=s.isDateDataType(t.type);if(r===Ve)return e.jsx(Sl,{column:t});if((r===ze||r===_e)&&w)return e.jsx(Dl,{column:t})}function L(){return e.jsx("div",{className:s.cn("grow",{"pl-3":(r===ze||r===_e)&&b}),children:e.jsx(kl,{col:t,onChange:p,droppableId:r})})}function N(){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:()=>o(!l),children:l?e.jsx(mn,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")}):e.jsx(yt,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")})})})}return e.jsx("div",{...m,...d,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:[N(),T(),L()]}),l&&v()]}),e.jsx("div",{className:s.cn("opacity-0 transition-opacity duration-200 group-hover:opacity-100",{hidden:l}),children:e.jsx("button",{onClick:()=>n(t.id),children:e.jsx(s.X,{className:"size-3 cursor-pointer text-muted-foreground"})})})]})})}function Es({id:t,label:a,columns:n,previewColumns:r,sortableType:l,onRemoveColumn:o}){var x,b;const{setNodeRef:c,isOver:i,over:u}=s.useDroppable({id:t}),d=s.useDndStore(p=>p.activeId),m=s.useEditorStore(p=>{var v;return(v=p.card)==null?void 0:v.type}),h=i||((b=(x=u==null?void 0:u.data)==null?void 0:x.current)==null?void 0:b.type)===l,f=d?r:n,g=l===fs?"Rows":l===gs?"Pivot Columns":"Columns";function j(){if(!f||f.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:n==null?void 0:n.map(p=>p.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:a}),m!=="table"&&e.jsx("span",{className:"text-xs text-muted-foreground/50",children:g})]}),j(),e.jsx("div",{className:"space-y-2",children:f==null?void 0:f.map(p=>p.id===Yt.id?e.jsx(El,{},p.id):e.jsx(Tl,{droppableId:t,type:l,column:p,onRemoveColumn:o},p.id))})]})})}function El(){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 pa({children:t,id:a,type:n}){const{attributes:r,listeners:l,setNodeRef:o,transform:c,transition:i,isDragging:u}=s.useSortable({id:a,data:{type:n}}),d=c?{opacity:u?.5:void 0,transform:s.CSS.Translate.toString(c),transition:i}:void 0;return e.jsx("div",{...l,...r,ref:o,style:d,children:t})}function Il(){const t=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.orderBy})||[],a=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.groupByColumns})||[],n=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.metricColumns})||[],{addOrderByColumn:r,removeOrderByColumn:l,updateOrderByColumn:o}=s.useEditorActions(),c=[...a,...n];if(c.length===0)return e.jsx(e.Fragment,{});const i=e.jsx(Ia,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),u=e.jsx(ka,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),d=e.jsx(Ea,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),m=e.jsx(Da,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),h=c==null?void 0:c.filter(p=>!t.some(v=>v.columnId===p.id)).map(p=>({id:p.id,value:p.label||p.name}));function f(p,v){const T=g(p);return T?T.role==="metric"?v==="asc"?d:m:v==="asc"?i:u:null}function g(p){return c.find(v=>v.id===p)}function j(p){const v=t.find(T=>T.columnId===p);if(v){const T={...v,direction:v.direction==="asc"?"desc":"asc"};o(T)}}const x=p=>{r({columnId:p.id,direction:"asc"})};function b(p){const v=t.find(T=>T.columnId===p);v&&l(v)}return e.jsx(s.SortableContext,{items:t.map(p=>Xe(p.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:p=>x(p[0]),selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"h-8 bg-muted border-none"})}),t.map(p=>{var v,T;return e.jsx(pa,{id:Xe(p.columnId),type:Vs,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(yt,{className:"size-3 cursor-move text-muted-foreground hover:text-foreground"}),e.jsx(bs,{className:"w-[175px] text-sm",children:((v=g(p.columnId))==null?void 0:v.label)||((T=g(p.columnId))==null?void 0:T.name)})]}),e.jsx("button",{title:p.direction==="asc"?"Ascending":"Descending",onClick:()=>j(p.columnId),className:"rounded-sm p-0",children:f(p.columnId,p.direction)})]}),e.jsx("div",{children:e.jsx("button",{onClick:()=>b(p.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"})})})]})},p.columnId)},Xe(p.columnId))})]})})}function Al(){const t=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.groupByColumns)||[]}),a=s.useEditorStore(b=>b.card.type),n=s.useDndStore(b=>b.previewGroupByColumns),r=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.metricColumns)||[]}),l=s.useDndStore(b=>b.previewMetricColumns),o=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.pivotColumns)||[]}),c=s.useDndStore(b=>b.previewPivotColumns),{removeColumnFromGroupBy:i,removeColumnFromMetricColumns:u,removeColumnFromPivotBy:d}=s.useEditorActions();function m(b){i(b)}function h(b){u(b)}function f(b){d(b)}let g="Group By",j="Metrics",x="Stack By";return a==="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(ea,{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(Es,{onRemoveColumn:m,sortableType:fs,id:ze,label:g,columns:t,previewColumns:n}),e.jsx(Es,{onRemoveColumn:f,sortableType:gs,id:_e,label:x,columns:o,previewColumns:c}),e.jsx(Es,{onRemoveColumn:h,sortableType:Rs,id:Ve,label:j,columns:r,previewColumns:l}),e.jsx(Il,{})]}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function Ys({children:t,column:a,id:n,sortableType:r,className:l}){const[o,c]=I.useState(!1),{removeEditorFilter:i,clearEditorFilter:u}=s.useEditorActions(),d=s.useEditorStore(h=>{var f,g;return(g=(f=h.card.queryConfig)==null?void 0:f.filters)==null?void 0:g.some(j=>j.filterColumnName===a.name)});function m(h){i(h)}return e.jsx(pa,{id:n,type:r,children:e.jsxs("div",{className:s.cn("group space-y-1 rounded-md bg-muted px-3 py-2",{"border-border":o}),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:a.name}),d&&e.jsx("button",{onClick:()=>u(a),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(a),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",!o&&"rounded-b-md",o&&"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",l),children:t})]})]})})}function Ml({column:t,sortableType:a}){const n=s.useDashboardStore(T=>T.themeStyle),r=s.useEditorStore(T=>{var L,N;return(N=(L=T.card)==null?void 0:L.queryConfig)==null?void 0:N.filters}),l=s.useEditorStore(T=>{var L,N;return(N=(L=T.card.queryConfig)==null?void 0:L.filterColumns)==null?void 0:N.find(w=>w.name===t.name)}),{selectedConnectionId:o,selectedDatabaseName:c,selectedTableName:i}=s.useEditorAside(),u=I.useMemo(()=>{var T;return(T=r==null?void 0:r.find(L=>L.filterColumnName===t.name))==null?void 0:T.filterValue},[r,t.name]),d=I.useMemo(()=>Array.isArray(u)?u.map(T=>({id:T,value:T})):[],[u]),{updateEditorFilterValue:m}=s.useEditorActions(),h={column:t.name,sql:t.sql,id:t.name,connectionId:o,dataType:t.type},{data:f,isLoading:g,isFetching:j,isError:x}=s.useFilterQuery(h),b=I.useMemo(()=>{var L;return h.column?(L=f==null?void 0:f.records)==null?void 0:L.map(N=>{let w=h.column.split(".").slice(-1)[0].replace(/"/g,"");return N[w]===void 0&&(w=w.toLowerCase()),{id:N[w],value:N[w]}}):[]},[f,h.column]);function p(T){const L=T.map(N=>N.id);m(t.name,L)}function v(){return g||j?e.jsx(s.Skeleton,{style:{borderRadius:n==null?void 0:n.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:(l==null?void 0:l.mode)==="exclude",options:b,onChange:p,selectedOptions:d,selectAllChecked:!1,onSelectAllCheckedChange:()=>{}})}return e.jsx(Ys,{className:"w-60",id:t.id,sortableType:a,column:t,children:v()})}function Ll({columnName:t}){const{setEditorFilterMode:a}=s.useEditorActions(),n=s.useEditorStore(l=>{var o,c;return(c=(o=l.card.queryConfig)==null?void 0:o.filterColumns)==null?void 0:c.find(i=>i.name===t)});function r(){(n==null?void 0:n.mode)==="exclude"?a(t,"include"):a(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((n==null?void 0:n.mode)==="exclude"?"exclude":"include")})}function Rl({open:t,setOpen:a,dateRange:n,setDateRange:r,containerClassName:l,inputClassName:o,title:c,onApply:i,onClear:u}){const d=s.useDashboardStore(m=>m.themeStyle);return e.jsx("div",{className:s.cn("grid gap-2",l),children:e.jsxs(s.Popover,{open:t,onOpenChange:a,children:[e.jsx(s.PopoverTrigger,{style:{borderRadius:d==null?void 0:d.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",!n&&"text-muted-foreground",o),children:[e.jsx(s.Calendar,{className:"mr-2 h-4 w-4"}),n!=null&&n.from?n.to?e.jsxs(e.Fragment,{children:[s.format(n.from,"LLL dd, y")," -"," ",s.format(n.to,"LLL dd, y")]}):s.format(n.from,"LLL dd, y"):e.jsx("span",{children:"Pick a date"})]})}),e.jsxs(s.PopoverContent,{style:{borderRadius:d==null?void 0:d.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:n==null?void 0:n.from,selected:n,onSelect:r,numberOfMonths:2}),e.jsxs("div",{className:"flex justify-end gap-2 px-4 py-3",children:[e.jsx(s.Button,{style:{borderRadius:d==null?void 0:d.controlInputRadius},size:"sm",variant:"outline",onClick:m=>{m.stopPropagation(),i(n),a(!1)},children:"Apply"}),e.jsx(s.Button,{style:{borderRadius:d==null?void 0:d.controlInputRadius},size:"sm",variant:"outline",onClick:u,children:"Clear"})]})]})]})})}function Ol({column:t,sortableType:a}){const[n,r]=I.useState(!1),{selectedConnectionId:l,selectedDatabaseName:o,selectedTableName:c}=s.useEditorAside(),i={column:t.name,sql:t.sql,id:t.name,connectionId:l,title:"",dataType:t.type},{isLoading:u,isFetching:d,isError:m,data:h}=s.useFilterQuery(i),f=h==null?void 0:h.records,{dateRange:g,setDateRange:j,initialDateRange:x}=s.useDateRangeFromRecords(f),{updateEditorFilterValue:b}=s.useEditorActions();function p(L){var w,y;const N={gte:(w=L==null?void 0:L.from)==null?void 0:w.toISOString(),lte:(y=L==null?void 0:L.to)==null?void 0:y.toISOString()};b(t.name,N)}function v(){b(t.name,null,!0),j(x)}function T(){return u||d?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"}):f?e.jsx(Rl,{title:i.title,open:n,inputClassName:"h-8",setOpen:r,dateRange:g,setDateRange:j,onApply:p,onClear:v}):e.jsx(s.Label,{className:"flex h-8 w-72 items-center bg-muted px-2",children:"No Data"})}return e.jsx(Ys,{className:"w-72",id:t.id,sortableType:a,column:t,children:T()})}function Fl({id:t,label:a,columns:n,previewColumns:r,sortableType:l}){var j,x;const{setNodeRef:o,isOver:c,over:i}=s.useDroppable({id:t}),u=s.useDndStore(b=>b.activeId),d={},m=c||((x=(j=i==null?void 0:i.data)==null?void 0:j.current)==null?void 0:x.type)===l;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 f(b){const p=s.isDateDataType(b.type);return b.id===Yt.id?e.jsx(Ys,{id:b.id,sortableType:l,column:b,children:e.jsx(Bl,{})},b.id):p?e.jsx(Ol,{droppableId:t,sortableType:l,column:b},b.id):e.jsx(Ml,{droppableId:t,sortableType:l,column:b},b.id)}const g=u?r:n;return e.jsx(s.SortableContext,{items:n==null?void 0:n.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:o,style:d,children:[e.jsx(s.Label,{className:"text-sm",children:a}),h(),e.jsx("div",{className:"flex flex-wrap items-center gap-4",children:g==null?void 0:g.map(b=>f(b))})]})})}function Bl(){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 Pl(){const t=s.useEditorStore(l=>{var o;return((o=l.card.queryConfig)==null?void 0:o.filterColumns)||[]}),a=s.useDndStore(l=>l.previewFilterColumns),{removeColumnFromFilterColumns:n}=s.useEditorActions();function r(l){n(l)}return e.jsx("section",{className:"size-full px-4 pb-4",children:e.jsx(Fl,{onRemoveColumn:r,sortableType:Fs,id:Os,label:"Filters",columns:t,previewColumns:a})})}function zl(){const t=s.useEditorStore(o=>o.card),a=s.useEditorStore(o=>o.showAIDialog),{setShowAIDialog:n}=s.useEditorActions(),{data:r,errorMessage: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(js,{}),!a&&e.jsxs(s.Button,{onClick:()=>n(!0),variant:"secondary",size:"sm",children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"Assistant"]}),e.jsx(Qt,{sql:r==null?void 0:r.sql,error: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(Us,{}),e.jsx(_s,{variant:"default"})]})]})}function Vl(){const t=I.useRef(null),a=I.useRef(null),n=s.useEditorStore(i=>i.isShowingVisual),r=s.useEditorStore(i=>i.showAIDialog),l=s.useEditorStore(i=>i.isDevMode);I.useEffect(()=>{var i,u,d,m;r?((i=t.current)==null||i.resize(0),(u=a.current)==null||u.resize(0)):((d=t.current)==null||d.resize(25),(m=a.current)==null||m.resize(25))},[r]);function o(){return e.jsxs(e.Fragment,{children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(Mr,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:n&&!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(Nl,{})})}),!r&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(cs,{})})]}):e.jsx(cs,{})})]})}function c(){return e.jsx(e.Fragment,{children:e.jsx("div",{className:"grow","data-biz-mode-container":"",children:n?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:a,defaultSize:25,maxSize:30,children:e.jsx(Al,{})})}),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(zl,{}),e.jsx(Pl,{})]}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:60,defaultSize:80,children:e.jsx(cs,{})})]})})]}):e.jsx(cs,{})})})}return e.jsx(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:l?o():c()})}function _l(t){s.useAIInteractionStore(q=>q.currentAIContext);const[a,n]=I.useState(""),[r,l]=I.useState(null),{authToken:o}=s.useSemaphorContext(),c=s.useEditorStore(q=>{var ee;return(ee=q==null?void 0:q.card)==null?void 0:ee.sql}),i=s.useEditorStore(q=>q.isDevMode),u=s.useEditorStore(q=>{var ee;return(ee=q==null?void 0:q.card)==null?void 0:ee.python}),{setCardPython:d,setCardSql:m,setRunSql:h,switchCardType:f,setQueryConfig:g}=s.useEditorActions(),j=s.useEditorStore(q=>q.currentAssitantScope)||[],x=s.useEditorStore(q=>q.userInputForAI),b=s.useEditorStore(q=>q.triggerAIRun),p=s.useEditorStore(q=>q.card),v=s.useEditorStore(q=>q.selectedDatabaseName),T=s.useEditorStore(q=>q.selectedTableName),L=s.useEditorStore(q=>q.selectedConnectionId),N=s.useEditorStore(q=>q.selectedSchemaName),w=s.useDashboardStore(q=>q.dashboard.aiScopeTables),{errorMessage:y,refetch:k,data:S}=s.useDashboardCardQuery(p),{setTriggerAIRun:R,setCurrentAssitantScope:C,setCardConfig:F}=s.useEditorActions(),{selectedDatamodelName:D,connectionType:E,selectedDatamodelId:A}=s.useEditorAside(),{messages:B,setMessages:M,regenerate:O,error:z,sendMessage:P,status:H,addToolResult:X,stop:Q,clearError:Y}=s.useChat({transport:new s.DefaultChatTransport({api:"https://semaphor.cloud/api/v1/assistant",headers:()=>({Authorization:`Bearer ${o==null?void 0:o.accessToken}`}),body:()=>{const q=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",isDevMode:i,aiContext:q.currentAIContext,reasoningEffort:q.reasoningEffort,showReasoning:q.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:q,body:ee})=>({body:{...ee,messages:s.cleanupIncompleteMessages(q)}})}),onError:q=>{console.log("on error",q)},onToolCall:K,onFinish(){n("")}});I.useEffect(()=>{b&&x&&(P({role:"user",parts:[{type:"text",text:x}]}),R(!1))},[b,x,P,R]);async function K({toolCall:q}){var ee,oe,W,J,re,de,Se,be,fe,se,te,ue,ve,rs,ls,os;if(["createChartFromSql","createForecast"].includes(q.toolName)){const Je=((ee=q.input)==null?void 0:ee.sql)??((oe=q.args)==null?void 0:oe.sql),Ae=((W=q.input)==null?void 0:W.python)??((J=q.args)==null?void 0:J.python),me=((re=q.input)==null?void 0:re.chartType)??((de=q.args)==null?void 0:de.chartType);f(me),m(Je),d(Ae),h(!0),X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(q.toolName==="getUserSql"){if(!c){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",message:"No SQL found"}});return}X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",sql:c,python:u||""}})}else if(q.toolName==="generateQueryConfig"){n("Generating query config...");const Je=((Se=q.input)==null?void 0:Se.chartType)??((be=q.args)==null?void 0:be.chartType),Ae=((fe=q.input)==null?void 0:fe.queryConfig)??((se=q.args)==null?void 0:se.queryConfig);((te=q.input)==null?void 0:te.cardConfig)??((ue=q.args)==null||ue.cardConfig),f(Je),F(Ae),m(void 0),d(void 0);const me=await k();if((ve=me==null?void 0:me.data)!=null&&ve.error){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",queryConfig:Ae,message:(rs=me==null?void 0:me.data)==null?void 0:rs.error.message}});return}if((ls=me==null?void 0:me.data)!=null&&ls.records){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:Ae,message:"The data has been visualized"}});return}X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:Ae,message:"The data has been visualized",records:(os=me==null?void 0:me.data)==null?void 0:os.records}})}else n("Analyzing...")}function U(q){const ee=s.removeFromScopeArray(j,q);_(ee)}function _(q){const ee=s.sanitizeAIScope(q);C(ee),M(oe=>[...oe,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify(ee)}`}]}])}function V(){const q={databaseName:v||"",schemaName:N||"",tableName:T||"",datamodelId:A||"",datamodelName:s.resolveDatamodelName(D),connectionId:L||"",connectionType:E||""},ee=s.dedup([...j,q]);_(ee)}function $(){const q={databaseName:v||"",schemaName:N||"",tableName:T||"",datamodelName:s.resolveDatamodelName(D),connectionId:L||"",connectionType:E||"",datamodelId:A||""};if(!s.isInAiScopeArray([...w||[],...j],q)||j.length===0){const oe=s.dedup([...w||[],...j,q]).filter(W=>W.connectionId===q.connectionId);_(oe)}}const Z=!["ready","error"].includes(H),ne=s.getErrorMessage(z);return{messages:B,setMessages:M,sendMessage:P,regenerate:O,isLoading:Z,handleSetAIScope:$,handleAddCurrentTableToScope:V,removeFromCurrentSelections:U,currentAssitantScope:j,setCurrentAssitantScope:C,stop:Q,status:H,toolStatus:a,llmUsage:r,onFinish:t,errorMessage:ne,clearError:Y}}const Ul=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function ut(){const t=I.useRef(null),[a,n]=I.useState(!1),[r,l]=I.useState(s.isDevEnv),[o,c]=I.useState(!1),[i,u]=I.useState(!1),d=s.useCurrentAIContext(),{setCurrentAIContext:m}=s.useAIActions(),{clearQueue:h}=s.useQueueActions(),{clearFileAttachments:f}=s.useFileActions(),g=s.useFileAttachments("editor"),j=s.useDashboardStore(se=>se.dashboard.aiContext),x=s.useEditorStore(se=>se.card.dataSource),b=s.useEditorStore(se=>se.actions.setCardSql),p=s.useEditorStore(se=>se.actions.setRunSql),v=s.useEditorStore(se=>se.showAIDialog),T=s.useDashboardStore(se=>se.handleOpenAssistantProfile),{setShowAIDialog:L,setCardPython:N}=s.useEditorActions(),{setDataSource:w}=s.useEditorActions(),{assistantProfile:y}=s.useAssistantProfile(),{messages:k,setMessages:S,sendMessage:R,isLoading:C,stop:F,status:D,llmUsage:E,errorMessage:A,clearError:B}=_l(),[M,O]=I.useState(""),z=se=>{O(se.target.value)},P=se=>{se.preventDefault();const te=M.trim();if(!te&&g.length===0)return;const ue=[];te&&ue.push({type:"text",text:te}),g.forEach(ve=>{ve.data&&ue.push({type:"file",mediaType:ve.type,filename:ve.name,url:`data:${ve.type};base64,${ve.data}`})}),R({role:"user",parts:ue}),O(""),f("editor"),Z({force:!0})},{visibleMessages:H,hasMoreMessages:X,totalMessageCount:Q,loadMoreMessages:Y,resetMessageWindow:K}=s.useMessageWindow(k,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:U,isAtBottom:_,hasNewMessages:V,newMessageCount:$,scrollToBottom:Z,handleScroll:ne,resetNewMessageCount:q}=s.useAutoScroll(H,{threshold:50,delay:0,dependencies:[D,k.length]});I.useEffect(()=>{var se;v&&((se=t.current)==null||se.focus(),m({selectedEntities:(x==null?void 0:x.selectedEntities)||[]}))},[v,x,m]),s.useAutoSubmitQueue({assistantType:"editor",status:D,isLoading:C,sendMessage:R});const{hasActiveTools:ee}=s.useActiveToolStatus(k);function oe(se,te){te==="sql"?(b(se),p(!0)):te==="python"&&(N(se),p(!0))}function W(){var se;(se=j==null?void 0:j.selectedEntities)==null||se[0],u(!0)}function J(){d.selectedEntities.length===0&&m({selectedEntities:(j==null?void 0:j.selectedEntities)||[]})}function re(se){J();const te={role:"user",parts:[{type:"text",text:se.title+" "+se.subtitle}]};R(te)}function de(se){J(),R({role:"user",parts:[{type:"text",text:se}]})}function Se(){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:a,onCheckedChange:n,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:r,onCheckedChange:l,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:o,onCheckedChange:c,children:"System Message"})]})]})}function be(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const fe=(M==null?void 0:M.length)===0&&(k==null?void 0:k.filter(se=>se.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:[be(),T&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:T,children:(y==null?void 0:y.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[Se(),s.isDevEnv,e.jsx(s.IconButton,{tooltip:"Add Context",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",onClick:W,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:()=>{S([]),h("editor"),B(),K()},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:()=>{L(!1)},children:e.jsx(s.ArrowRightToLine,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:U,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:Y,className:"text-xs",children:["Load ",Math.min(5,Q-H.length)," more messages (",Q-H.length," hidden)"]})}),e.jsx(s.PrintMessages,{messages:H,showTools:r,handleRun:oe,showSystemMessage:o}),!ee&&e.jsx(s.AssistantStatus,{status:D,errorMessage:A})]})}),!_&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{Z({force:!0}),q()},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:$>9?"9+":$})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[fe&&!y&&e.jsx(s.Placeholders,{onClick:re,placeholders:Ul}),e.jsx("div",{children:fe&&y&&e.jsx(s.SeedQuestions,{seedQuestions:y.seedQuestions||[],handleSeedQuestionClick:de})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:t,setInput:O,stop:F,input:M,handleInputChange:z,handleSubmit:se=>{J(),P(se),Z({force:!0})},isLoading:C,status:D,assistantType:"editor",onFocus:()=>{}})]}),E&&a&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",E.inputTokens," prompt tokens, ",E.outputTokens," ","completion tokens, ",E.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(x==null?void 0:x.selectedEntities)||[],open:i,onOpenChange:u,dataSource:x||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}const Gs=t=>{var C;const{updateCardConfig:a,updateGroupByColumn:n,updateMetricColumn:r,updatePivotByColumn:l,updateSortByColumn:o,removeGroupByColumn:c,removeMetricColumn:i,removePivotByColumn:u,removeSortByColumn:d}=s.useEditorActions(),m=s.useEditorStore(F=>F.card.type),h=t==null?void 0:t.id,f=I.useCallback(F=>{if(!(t!=null&&t.config))return[];switch(F){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=I.useCallback((F,D)=>{if(h)switch(F){case"groupBy":{a(h,{groupByColumns:D});break}case"metrics":{a(h,{metricColumns:D});break}case"pivotBy":{a(h,{pivotByColumns:D});break}case"sortBy":{a(h,{sortByColumns:D});break}}},[h,a]),j=I.useCallback((F,D,E)=>{if(!h)return;const B=f(F)[D];if(B)switch(F){case"groupBy":n(h,B.id,{label:E});break;case"metrics":r(h,B.id,{label:E});break;case"pivotBy":l(h,B.id,{label:E});break;case"sortBy":o(h,B.id,{label:E});break}},[h,f,n,r,l,o]),x=I.useCallback((F,D)=>{if(!h)return;const A=f("metrics")[F];A&&r(h,A.id,{aggregate:D,label:s.getAggregationLabel(A.name,D)})},[h,f,r]),b=I.useCallback((F,D,E)=>{if(!h)return;const B=f("groupBy")[F];if(!B)return;const M={dateFormat:D};D==="custom"&&E?M.customFormat=E:M.customFormat=void 0,n(h,B.id,M)},[h,f,n]),p=I.useCallback((F,D)=>{if(!h)return;const A=f("groupBy")[F];A&&n(h,A.id,{granularity:D})},[h,f,n]),v=I.useCallback((F,D)=>{if(!h)return;const A=f("metrics")[F];A&&r(h,A.id,{aliasTemplate:D})},[h,f,r]),T=I.useCallback((F,D)=>{if(console.log("handleValueAliasesChange",F,D),!h)return;console.log("handleValueAliasesChange",F,D);const A=f("metrics")[F];A&&(console.log("handleValueAliasesChange",D),r(h,A.id,{valueAliases:D}))},[h,f,r]),L=I.useCallback(F=>{h&&a(h,{comparisonType:F})},[h,a]),N=I.useCallback(F=>{h&&a(h,{showTrendline:F})},[h,a]),w=I.useCallback(F=>{h&&a(h,{trendlineWindow:F})},[h,a]),y=I.useCallback(F=>{h&&a(h,{trendlineGranularity:F})},[h,a]),k=I.useCallback(F=>{h&&a(h,{targetValue:F})},[h,a]),S=I.useCallback(F=>{var z;if(!h)return;const D=[...f("groupBy"),...f("pivotBy"),...f("metrics"),...f("sortBy")],E=(z=t==null?void 0:t.config)==null?void 0:z.joinPlan,A=s.validateEntityConsistency(F,D,E);if(!A.isValid){A.showError&&s.showJoinRequiredNotification();return}const B=s.getSmartContainerForField(F,D),M=f(B);if(s.fieldAlreadyExists(F,M))return;const O=s.getNewField(F,B,M);O&&g(B,[...M,O])},[h,(C=t==null?void 0:t.config)==null?void 0:C.joinPlan,f,g]),R=I.useCallback((F,D)=>{if(!h)return;const A=f(F)[D];if(A){if(F!=="sortBy"){const B=f("sortBy"),M=B.filter(O=>!(O.name===A.name&&O.qualifiedEntityName===A.qualifiedEntityName));M.length!==B.length&&a(h,{sortByColumns:M})}switch(F){case"groupBy":c(h,A.id);break;case"metrics":i(h,A.id);break;case"pivotBy":u(h,A.id);break;case"sortBy":d(h,A.id);break}}},[h,f,c,i,u,d,a]);return{getFieldsForContainer:f,setFieldsForContainer:g,updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:p,handleAliasTemplateChange:v,handleValueAliasesChange:T,removeField:R,handleFieldClick:S,handleKpiComparisonTypeChange:L,handleKpiShowTrendlineChange:N,handleKpiTrendlineWindowChange:w,handleKpiTrendlineGranularityChange:y,handleKpiTargetValueChange:k,cardType:m}};function $l({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 ql({field:t}){const{attributes:a,listeners:n,setNodeRef:r,transform:l,transition:o,isDragging:c}=s.useSortable({id:t.id}),[i,u]=I.useState(!1),d=s.useEditorStore(j=>j.card),{handleFieldClick:m}=Gs(d),h={transform:s.CSS.Transform.toString(l),transition:o};s.getDataType(t.dataType);const f=j=>{const x=(j||"").toLowerCase();switch(s.getDataType(x)){case"number":return Te;case"date":return s.Calendar;case"boolean":return Ue;case"json":return Ze;case"geo":return es;default:return ye}},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(ye,{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(Te,{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(Ue,{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(Ze,{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(es,{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(ns,{className:"h-3 w-3"})}):null};return f(t.dataType),e.jsxs("div",{ref:r,style:h,...a,...n,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$1,{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-sm 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($l,{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(Ct,{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(fn,{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 Yl(){const[t,a]=I.useState(""),[n,r]=I.useState("all"),l=s.useEditorStore(T=>T.card.dataSource),{columns:o=[],columnGroups:c=[],isLoading:i,error:u}=s.useColumns(),d=o.filter(T=>T.name.toLowerCase().includes(t.toLowerCase())||T.dataType.toLowerCase().includes(t.toLowerCase())||T.qualifiedEntityName&&T.qualifiedEntityName.toLowerCase().includes(t.toLowerCase())),m=T=>{if(T.dataType==="number"||T.dataType==="integer"||T.dataType==="float"||T.dataType==="decimal"||T.dataType==="currency")return"metrics";const L=s.getDataType(T.dataType);return["date","string","boolean"].includes(L)?"dimensions":L==="number"?"metrics":"dimensions"},f=(n==="all"?d:d.filter(T=>m(T)===n)).reduce((T,L)=>{const N=L.qualifiedEntityName||"Other Fields";return T[N]||(T[N]={label:s.toLabel(L.entityName),fields:[]}),T[N].fields.push(L),T},{}),j=Object.keys(f),x=d.filter(T=>m(T)==="dimensions").length,b=d.filter(T=>m(T)==="metrics").length,p=d.filter(T=>m(T)==="calculated").length,v=d.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"})}):u?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:u.message||"Failed to load column data"})]}):!l||!l.selectedEntities||l.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:[o.length>0&&e.jsxs("div",{className:"relative mb-4",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:t,onChange:T=>a(T.target.value)})]}),v&&e.jsx(s.Tabs,{defaultValue:"all",value:n,onValueChange:T=>r(T),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:d.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(ns,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:p})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"py-2",children:[e.jsx(s.Accordion,{type:"multiple",defaultValue:j,className:"space-y-2",children:Object.entries(f).map(([T,L])=>{const N=c.find(w=>w.entityName===T)||{entityName:T,label:L.label};return e.jsxs(s.AccordionItem,{value:T,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",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-primary",children:N.label||N.entityName}),e.jsx(s.Badge,{variant:"secondary",className:"rounded-full text-xs text-muted-foreground group-hover:bg-background",children:L.fields.length})]})}),e.jsx(s.AccordionContent,{className:"pb-2",children:e.jsx("div",{className:"space-y-1",children:L.fields.map(w=>e.jsx(ql,{field:w},w.id))})})]},T)})}),Object.keys(f).length===0&&o.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(f).length===0&&o.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 Gl(){return e.jsxs("div",{className:" h-full flex flex-col items-center",children:[" ",e.jsx(Yl,{})," "]})}function Kl({initialJoinPlan:t,availableDataSources:a}){const[n,r]=I.useState(t),[l,o]=I.useState(new Set),c=()=>{const w=n.joins.length>0?Math.max(...n.joins.map(k=>k.sequence))+1:1,y={id:`join-${Date.now()}`,source:{type:"table",name:"",database:"",schema:""},target:{type:"table",name:"",database:"",schema:""},joinType:"INNER",sequence:w,joinKeyGroups:[{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}]};r({...n,joins:[...n.joins,y]}),o(new Set([...l,y.id]))},i=w=>{r({...n,joins:n.joins.filter(y=>y.id!==w)}),o(new Set([...l].filter(y=>y!==w)))},u=(w,y)=>{var C,F;const k=n.joins.find(D=>D.id===w);if(!k)return;const S={...k,...y},R=n.joins.map(D=>D.id===w?S:D);if((C=S.source)!=null&&C.name&&((F=S.target)!=null&&F.name)&&S.joinKeyGroups[0].keys.length===0){const D=a.find(M=>{var O;return M.name===((O=S.source)==null?void 0:O.name)}),E=a.find(M=>{var O;return M.name===((O=S.target)==null?void 0:O.name)}),A={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:(E==null?void 0:E.name)||"",entityName:(E==null?void 0:E.name)||"",entityType:(E==null?void 0:E.type)||"table"},operator:"="},B=[...S.joinKeyGroups];B[0]={...B[0],keys:[A]},S.joinKeyGroups=B,R[R.findIndex(M=>M.id===w)]=S}r({...n,joins:R})};return{joinPlan:n,expandedJoins:l,setJoinPlan:r,addJoin:c,removeJoin:i,updateJoin:u,moveJoinUp:w=>{const y=n.joins.findIndex(k=>k.id===w);if(y>0){const k=[...n.joins],S={...k[y]},R={...k[y-1]};k[y]=R,k[y-1]=S,k.forEach((F,D)=>{F.sequence=D+1});const C={...n,joins:k};r(C)}},moveJoinDown:w=>{const y=n.joins.findIndex(k=>k.id===w);if(y<n.joins.length-1){const k=[...n.joins],S={...k[y]},R={...k[y+1]};k[y]=R,k[y+1]=S,k.forEach((F,D)=>{F.sequence=D+1});const C={...n,joins:k};r(C)}},toggleJoinExpansion:w=>{const y=new Set(l);y.has(w)?y.delete(w):y.add(w),o(y)},getAvailableSourceEntities:w=>{if(n.joins.length===0)return a;const y=n.joins.findIndex(S=>S.id===w);if(y===0)return a;const k=new Set;return n.baseEntity.name&&k.add(n.baseEntity.name),n.joins.slice(0,y).forEach(S=>{k.add(S.source.name),k.add(S.target.name)}),a.filter(S=>k.has(S.name))},getAvailableTargetEntities:w=>a.filter(y=>y.name!==w),addJoinKeyGroup:w=>{const y=n.joins.find(S=>S.id===w);if(!y)return;const k=[...y.joinKeyGroups,{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}];u(w,{joinKeyGroups:k})},updateGroupOperator:(w,y,k)=>{const S=n.joins.find(C=>C.id===w);if(!S)return;const R=[...S.joinKeyGroups];R[y]={...R[y],operator:k},u(w,{joinKeyGroups:R})},removeJoinKeyGroup:(w,y)=>{const k=n.joins.find(R=>R.id===w);if(!k)return;const S=[...k.joinKeyGroups];S.splice(y,1),u(w,{joinKeyGroups:S})},addJoinKey:(w,y)=>{const k=n.joins.find(D=>D.id===w);if(!k)return;const S=a.find(D=>D.name===k.source.name),R=a.find(D=>D.name===k.target.name),C=[...k.joinKeyGroups],F={id:`key-${Date.now()}`,source:{id:`source-${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"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(R==null?void 0:R.name)||"",entityName:(R==null?void 0:R.name)||"",entityType:(R==null?void 0:R.type)||"table"},operator:"="};C[y]={...C[y],keys:[...C[y].keys,F]},u(w,{joinKeyGroups:C})},updateJoinKey:(w,y,k,S,R)=>{const C=n.joins.find(B=>B.id===w);if(!C)return;const F=a.find(B=>B.name===C.source.name),D=a.find(B=>B.name===C.target.name),E=[...C.joinKeyGroups],A=E[y].keys[k];S==="sourceColumnName"&&F?E[y].keys[k]={...A,source:{...A.source,name:R}}:S==="targetColumnName"&&D?E[y].keys[k]={...A,target:{...A.target,name:R}}:S==="operator"&&(E[y].keys[k]={...A,operator:R}),u(w,{joinKeyGroups:E})},removeJoinKey:(w,y,k)=>{const S=n.joins.find(C=>C.id===w);if(!S)return;const R=[...S.joinKeyGroups];R[y].keys.splice(k,1),u(w,{joinKeyGroups:R})},generateSQLPreview:()=>{const w=[...n.joins].sort((S,R)=>S.sequence-R.sequence),y=n.baseEntity;if(!y.name)return"SELECT * FROM table -- Please select a base entity";let k=`SELECT *
340
- FROM ${y.name}`;return w.forEach(S=>{const R=a.find(D=>D.name===S.target.name);if(!R)return;const C=S.joinKeyGroups.filter(D=>D.keys&&D.keys.length>0).map(D=>{const E=D.keys.filter(A=>{var B,M,O,z;return((B=A.source)==null?void 0:B.name)&&((M=A.target)==null?void 0:M.name)&&((O=A.source)==null?void 0:O.entityName)&&((z=A.target)==null?void 0:z.entityName)}).map(A=>`${A.source.entityName}.${A.source.name} ${A.operator} ${A.target.entityName}.${A.target.name}`);return E.length>1?`(${E.join(` ${D.operator} `)})`:E[0]}).filter(Boolean),F=C.length>1?C.join(" OR "):C[0]||"condition_here";k+=`
338
+ `;v(P)}function M(){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(Ir,{jsonString:JSON.stringify(d,null,2)})})}),d&&d.length>0&&e.jsx(s.Button,{variant:"ghost",onClick:()=>l(!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 O(){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:a?20:100,className:"relative flex grow",children:[e.jsx("div",{id:"sql-container",className:"relative flex w-[99%]",children:e.jsx(Tr,{})}),a&&e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"sql"})]}),a&&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(Er,{})}),e.jsx("code",{className:"absolute right-6 top-3 text-xs text-muted-foreground/70",children:"python"})]})]})]})}function z(){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:k||S,onClick:()=>{E()},className:"h-8 shrink-0",size:"sm",children:[k||S?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(Qt,{sql:y==null?void 0:y.sql,error:A,onDebugWithAssistant:F}),e.jsx(js,{}),e.jsx(s.Toggle,{pressed:a,onPressedChange:P=>n(P),className:"h-8",size:"sm",variant:"outline",children:e.jsx(kr,{className:"size-4 text-foreground/70"})}),e.jsx("button",{disabled:c,onClick:()=>{T(!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(Us,{}),e.jsx(_s,{})]})]})}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:[O(),M()]}),z()]})}function Lr({card:t}){var v,T,L,N,w,y,k,S,R,C,B;const[a,n]=I.useState(!1),[r,l]=I.useState([]),{authToken:o}=s.useSemaphorContext(),c=s.getTokenParams(o==null?void 0:o.accessToken),i=s.useDashboardStore(D=>D.themeStyle),u={colors:((T=(v=i==null?void 0:i.chart)==null?void 0:v.dataset)==null?void 0:T.backgroundColor)||[]};(L=t.customCardPreferences)!=null&&L.inputData;const{getCard:d}=s.useCustomVisual(((N=t.customCardPreferences)==null?void 0:N.url)||""),m=((w=t.customCardPreferences)==null?void 0:w.visualType)||"single",h=s.useEditorStore(D=>D.frame),{setCustomCardPreferences:f}=s.useEditorActions(),{data:g}=s.useDashboardCardQuery(t),j=I.useCallback((D,E)=>{l(A=>({...A,[D]:E}))},[]);if(!((y=t.customCardPreferences)!=null&&y.componentName))return null;const x=d((k=t.customCardPreferences)==null?void 0:k.componentName);function b(D){n(D)}const p=Object.keys(((S=t.customCardPreferences)==null?void 0:S.dataInputCardIds)||{}).map(D=>{var F,M,O;const E=(M=(F=t.customCardPreferences)==null?void 0:F.dataInputCardIds)==null?void 0:M[D].cardId,A=(O=h==null?void 0:h.cards)==null?void 0:O.find(z=>z.id===E);return A||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(I.Suspense,{fallback:e.jsx(e.Fragment,{}),children:[x&&m==="single"&&e.jsx(x,{editing:!0,params:c,theme:u,settings:(R=t.customCardPreferences)==null?void 0:R.settings,onDataChange:j,data:(g==null?void 0:g.records)||[]}),x&&m==="multiple"&&e.jsxs(e.Fragment,{children:[Object.keys(((C=t.customCardPreferences)==null?void 0:C.dataInputCardIds)||{}).map(D=>{var F,M,O;const E=(M=(F=t.customCardPreferences)==null?void 0:F.dataInputCardIds)==null?void 0:M[D].cardId,A=(O=h==null?void 0:h.cards)==null?void 0:O.find(z=>z.id===E);if(A)return e.jsx(s.MultiInputEmptyRenderer,{onLoadingStatus:b,onDataChange:j,dataInputIndex:D,card:A},A.id+D)}),e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(x,{theme:u,onDataChange:j,settings:p.map(D=>{var E;return(E=D==null?void 0:D.customCardPreferences)==null?void 0:E.settings}),data:p.map(D=>D!=null&&D.id?r==null?void 0:r[D.id]:[])})})]})]},(B=t.customCardPreferences)==null?void 0:B.componentName)})}function Jt({className:t,...a}){var k;const n=s.useEditorStore(S=>S.card),r=s.isExplorerCard(n),l=((k=n.customCardPreferences)==null?void 0:k.showCardHeader)??!0,o=s.useEditorStore(S=>S.frame),c=s.useDashboardStore(S=>S.dashboard.filters),i=s.useEditorStore(S=>S.actions.setRunSql),{updateFilter:u}=s.useDashboardActions(),d=c==null?void 0:c.find(S=>S.id===o.filterId),{data:m,isLoading:h,isFetching:f,errorMessage:g,pagination:j}=s.useDashboardCardQuery(n),{setCard:x,updateCardInFrame:b}=s.useEditorActions(),{data:p}=s.useTopoJson(n),v=I.useMemo(()=>{var S;return n.type!=="pivotTable"||!((S=m==null?void 0:m.records)!=null&&S.length)?null:{records:m.records,columnSubtotalMeta:m.columnSubtotalMeta,subtotalColumns:m.subtotalColumns||[],pivotSchema:m.pivotSchema||[],groupByColumns:m.groupByColumns}},[n.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]),T=s.usePivotTableConfig(n,v),L=(S,R)=>{var B,D;const C={...n,paginationConfig:{page:S+1,pageSize:R}};x(C),b(C),n.sql&&((D=(B=n.preferences)==null?void 0:B.tablePrefs)!=null&&D.enableDevModePagination)&&i(!0)},N=I.useMemo(()=>!n.id||!(m!=null&&m.records)?null:s.createChartConfig({card:n,data:m==null?void 0:m.records,cardType:n.type,queryConfig:n.queryConfig,customCfg:n.customCfg,preferences:n.preferences,topoJson:p}),[n.id,m==null?void 0:m.records,n.type,n.queryConfig,n.customCfg,n.preferences,p]);function w(S){return e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Lr,{card:S})})}function y(){if(m!=null&&m.records&&(m==null?void 0:m.records.length)===0&&!h&&!f)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||f)&&n.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(!n.id)return null;if(n.type==="custom")return w(n);if(!["table","pivotTable","aggregateTable","custom"].includes(n.type)&&N)return e.jsx(e.Fragment,{children:h||f?e.jsx(e.Fragment,{}):e.jsx(s.ChartJsVisual,{cfg:N})});if(n.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:n,data:(m==null?void 0:m.records)||[],paginationMetadata:j,onPaginationChange:L,isLoading:h||f})});if(n.type==="pivotTable"&&T)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.PivotTableVisual,{card:n,data:T.data,options:T.options,onAggregationChange:S=>{const R=s.handleAggregationChange(S,n.config),C={...n,config:R};x(C),b(C)},onAggregationLabelChange:S=>{const R=s.handleAggregationLabelChange(S,n.config),C={...n,config:R};x(C),b(C)}})});if(n.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:n,data:(m==null?void 0:m.records)||[],groupByColumns:m==null?void 0:m.groupByColumns,pivotSchema:m==null?void 0:m.pivotSchema,paginationMetadata:j,onPaginationChange:L,onAggregationChange:S=>{const R=s.handleAggregationChange(S,n.config),C={...n,config:R};x(C),b(C)},isLoading:h||f})})}return e.jsxs(s.Card,{role:"editor-visual-card",className:s.cn("relative flex h-full flex-col rounded-none",t),...a,children:[l&&e.jsxs(s.CardHeader,{className:"flex flex-row items-start justify-between py-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"flex items-center gap-5",children:e.jsx(s.CardTitle,{className:"text-base",children:e.jsx(s.EditableText,{value:n.title,onSave:S=>x({...n,title:S}),isEditable:!0,placeholder:"Add title",displayClassName:"text-base font-semibold",inputClassName:"text-base font-semibold"})})}),e.jsx("div",{className:"w-1/2",children:e.jsx(s.EditableText,{value:n.description||"",onSave:S=>x({...n,description:S}),isEditable:!0,placeholder:"Add description",displayClassName:"text-sm text-muted-foreground",inputClassName:"text-sm"})})]}),d&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(s.Label,{className:"my-1",children:e.jsx(s.EditableText,{value:d.title||d.column,onSave:S=>u({...d,title:S}),isEditable:!0,placeholder:"Filter",displayClassName:"text-sm",inputClassName:"text-sm"})}),e.jsx(s.FilterComponent,{filter:d})]})]}),e.jsx(s.CardContent,{className:"flex grow flex-col",children:y()})]})}const ks=({language:t,value:a,onChange:n,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:a,onChange:n}),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."})]})]}),Or=({customCode:t,cardCustomCfgString:a,mergedConfig:n,onConfigChange:r,onCodeChange:l})=>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(ks,{language:"json",value:n,onChange:r})}),e.jsx(s.TabsContent,{value:"custom-config",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(ks,{readonly:!0,language:"json",value:a,onChange:()=>{}})}),e.jsx(s.TabsContent,{value:"custom-code",className:"mt-0 grow rounded-b border border-t-0",children:e.jsx(ks,{language:"javascript",value:t,onChange:l})})]}),Br=({error:t,hasCardCustomConfig:a,onReset:n,onApply:r,onClose:l})=>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:!a,onClick:n,variant:"outline",children:"Reset"}),e.jsx(s.Button,{onClick:r,variant:"outline",children:"Apply"}),e.jsx(s.Button,{onClick:l,variant:"outline",children:"Close"})]});function Fr(){const[t,a]=I.useState(!1),[n,r]=I.useState(""),[l,o]=I.useState(""),[c,i]=I.useState(""),[u,d]=I.useState(""),m=s.useEditorStore(N=>N.card),h=s.useEditorStore(N=>N.card.customCfg),f=h?JSON.stringify(h,null,2):"",{data:g}=s.useDashboardCardQuery(m),{data:j}=s.useTopoJson(m),{setCardCustomCfg:x,setCustomVisualCode:b}=s.useEditorActions(),p=N=>{var w,y;return JSON.stringify({...N,data:{...N.data,datasets:(y=(w=N.data)==null?void 0:w.datasets)==null?void 0:y.map(k=>({...k,data:[]}))}},null,2)},v=()=>{var w,y;if(!((w=g==null?void 0:g.records)!=null&&w.length))return;const N=s.createChartConfig({card:m,data:g.records,cardType:m.type,queryConfig:m.queryConfig,preferences:m.preferences,topoJson:j});if(N){r(p(N)),i(((y=m.preferences)==null?void 0:y.customVisualCode)||"");const k=s.merge(N,h);o(p(k))}},T=()=>{try{if(c&&b(c),l){const N=JSON.parse(l),w=s.getObjectDiff(JSON.parse(n),N);x(w),d("")}}catch{d("Invalid JSON configuration")}},L=Object.keys(h||{}).length===0;return e.jsxs(s.Dialog,{open:t,onOpenChange:a,children:[e.jsx(s.DialogTrigger,{asChild:!0,children:e.jsx(s.IconButton,{tooltip:"Customize Visual",onClick:v,className:L?"":"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(Jt,{className:"w-1/2 rounded shadow-none"})}),e.jsx(Or,{customCode:c,cardCustomCfgString:f,mergedConfig:l,onConfigChange:N=>o(N??""),onCodeChange:N=>i(N??"")})]}),e.jsx(Br,{error:u,hasCardCustomConfig:!!h,onReset:()=>{o(n),x(null)},onApply:T,onClose:()=>a(!1)})]})]})}function ys(t){const[a,n]=I.useState(null);return a}function Xt(){const{authToken:t}=s.useSemaphorContext(),{data:a,isLoading:n,isFetching:r,isError:l}=s.useQuery({queryKey:["plugins",t==null?void 0:t.accessToken],queryFn:()=>s.getPlugins(t==null?void 0:t.accessToken)});return{data:a,isLoading:n,isFetching:r,isError:l}}function Zt(){const{data:t,isLoading:a,isError:n}=Xt(),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:u=>Math.min(1e3*2**u,3e4)}))}),l=[];let o=a,c=n;return r.forEach((i,u)=>{var d;if(i.isLoading&&(o=!0),i.isError&&(c=!0),i.data&&((d=t==null?void 0:t.plugins)!=null&&d[u])){const m=t.plugins[u],h=i.data.visuals.map(f=>({name:f.name,pluginName:m.label,componentType:f.componentType,pluginType:m.type,icon:f.icon,chartType:f.chartType,url:m.value}));l.push(...h)}}),{data:l,isLoading:o,isError:c}}function Pr({onChartTypeChange:t}){const{setCardCustomCfg:a,setCardPreferences:n,setCardType:r,setCustomCardPreferences:l}=s.useEditorActions(),{data:o,isLoading:c,isError:i}=Zt(),u=I.useCallback((d,m)=>{a(null),n({}),r(d),m&&l({type:"component",visualType:"single",url:m.url,componentName:m.name,icon:m.icon}),t==null||t()},[a,n,r,l,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"})})]}):!o||o.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:o.map((d,m)=>e.jsx(zr,{text:d.name,onClick:()=>u("custom",d),icon:d.icon},`${d.url}-${d.name}-${m}`))})]})}const zr=({text:t,icon:a,onClick:n})=>{const r=ys(),l=t.charAt(0).toUpperCase();return e.jsx(s.IconButton,{onClick:n,tooltip:t,children:r?e.jsx(r,{className:"h-4 w-4"}):l})};function ea({onChartTypeChange:t,iconClassName:a}){const{setCardType:n,setCardPreferences:r,setIsDevMode:l}=s.useEditorStore(m=>m.actions),{setCardCustomCfg:o,setCustomCardPreferences:c,setQueryConfig:i}=s.useEditorActions();function u(m,h){o(null),r({}),n(m),["custom","text","map"].includes(m)&&(l(!0),i(void 0)),t==null||t()}const d=1e3;return e.jsxs("div",{className:"grid grid-cols-5 place-items-center",children:[e.jsx(s.IconButton,{openDelay:d,tooltip:"Table",onClick:()=>u("table"),className:"h-10 p-4",children:e.jsx(s.Table2,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Bar Chart",onClick:()=>u("bar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnIncreasing,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Line Chart",onClick:()=>u("line"),className:"h-10 p-4",children:e.jsx(s.ChartLine,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Stacked Bar Chart",onClick:()=>u("stackedBar"),className:"h-10 p-4",children:e.jsx(s.ChartColumnStacked,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Stacked Line Chart",onClick:()=>u("stackedLine"),className:"h-10 p-4",children:e.jsx(s.MdStackedLineChart,{className:s.cn("size-5",a),strokeWidth:0})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Scatter Chart",onClick:()=>u("scatter"),className:"h-10 p-4",children:e.jsx(s.ChartScatter,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Bubble Chart",onClick:()=>u("bubble"),className:"h-10 p-4",children:e.jsx(s.TbChartBubble,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Pie Chart",onClick:()=>u("pie"),className:"h-10 p-4",children:e.jsx(s.ChartPie,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Doughnut Chart",onClick:()=>u("doughnut"),className:"h-10 p-4",children:e.jsx(s.Donut,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Funnel Chart",onClick:()=>u("funnel"),className:"h-10 p-4",children:e.jsx(s.TbChartFunnel,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Radar Chart",onClick:()=>u("radar"),className:"h-10 p-4",children:e.jsx(s.Radar,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Polar Area Chart",onClick:()=>u("polarArea"),className:"h-10 p-4",children:e.jsx(s.PiChartPolar,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Tornado Chart",onClick:()=>u("tornado"),className:"h-10 p-4",children:e.jsx(s.Tornado,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{tooltip:"Range Chart",onClick:()=>u("range"),className:"h-10 p-4",children:e.jsx(s.ChartNoAxesGantt,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"KPI",onClick:()=>u("kpi"),className:"h-10 p-4",children:e.jsx(s.TiSortNumerically,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Text",onClick:()=>u("text"),className:"h-10 p-4",children:e.jsx(s.BookType,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{tooltip:"Map",onClick:()=>u("map"),className:"h-10 p-4",children:e.jsx(s.Map,{className:s.cn("size-5",a)})}),e.jsx(s.IconButton,{openDelay:d,tooltip:"Custom",onClick:()=>u("custom"),className:"h-10 p-4",children:e.jsx(ss,{className:s.cn("size-5",a)})})]})}function Vr({chartType:t,className:a,customIcon:n,componentName:r}){const l=ys();switch(t){case"bar":return e.jsx(s.ChartColumnIncreasing,{className:a});case"line":return e.jsx(s.ChartLine,{className:a});case"pie":return e.jsx(s.ChartPie,{className:a});case"radar":return e.jsx(s.Radar,{className:a});case"scatter":return e.jsx(s.ChartScatter,{className:a});case"bubble":return e.jsx(s.TbChartBubble,{className:a});case"doughnut":return e.jsx(s.Donut,{className:a});case"stackedBar":return e.jsx(s.ChartColumnStacked,{className:a});case"stackedLine":return e.jsx(s.MdStackedLineChart,{className:a});case"polarArea":return e.jsx(s.PiChartPolar,{className:a});case"funnel":return e.jsx(s.TbChartFunnel,{className:a});case"tornado":case"pyramid":return e.jsx(s.Tornado,{className:a});case"range":return e.jsx(s.ChartNoAxesGantt,{className:a});case"kpi":return e.jsx(s.TiSortNumerically,{className:a});case"text":return e.jsx(ye,{className:a});case"map":return e.jsx(s.Map,{className:a});case"custom":return n&&l?e.jsx(l,{className:a}):r?r==null?void 0:r.charAt(0).toUpperCase():e.jsx(ss,{className:a});default:return e.jsx(s.Table2,{className:a})}}function sa({variant:t="ghost"}){var o,c;const[a,n]=I.useState(!1),r=s.useEditorStore(i=>i.card),l=r.type;return s.useDashboardStore(i=>i.isVisualEditing),e.jsxs(s.Popover,{open:a,onOpenChange:n,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx(s.Button,{size:"sm",variant:t||"ghost",children:e.jsx(Vr,{className:"size-4",chartType:l,customIcon:(o=r.customCardPreferences)==null?void 0:o.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(ea,{onChartTypeChange:()=>n(!1)}),e.jsx(Pr,{onChartTypeChange:()=>n(!1)})]})]})}function _r(){const t=s.useEditorStore(o=>{var c,i;return(i=(c=o.card.preferences)==null?void 0:c.chartOptions)==null?void 0:i.indexAxis}),a=s.useEditorStore(o=>o.card.type),{setChartOrientation:n}=s.useEditorStore(o=>o.actions);function r(){return e.jsx(s.IconButton,{onClick:()=>{n(t==="x"||t===void 0?"y":"x")},tooltip:"Chart Orientation",children:t==="x"||t===void 0?e.jsx(tt,{className:"size-4"}):e.jsx(st,{className:"size-4"})})}function l(){return e.jsx(s.IconButton,{onClick:()=>{n(t==="y"||t===void 0?"x":"y")},tooltip:"Chart Orientation",children:t==="y"||t===void 0?e.jsx(tt,{className:"size-4"}):e.jsx(st,{className:"size-4"})})}return e.jsx(e.Fragment,{children:a==="funnel"?l():r()})}function ta(){const t=s.useEditorStore(c=>c.card),a=s.useEditorStore(c=>c.isShowingVisual),n=s.useEditorStore(c=>{var i,u;return(u=(i=c.card)==null?void 0:i.preferences)==null?void 0:u.chartOptions}),r=s.getChartGridStyle(n),{setChartGrid:l}=s.useEditorActions();function o(){const c=["xy","none","x","y"],u=(c.indexOf(r)+1)%c.length;l(c[u])}return a?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(_r,{})}),!["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:o,children:[(r==="xy"||!r)&&e.jsx(Ka,{className:"size-4"}),r==="x"&&e.jsx(Ba,{className:"size-4"}),r==="y"&&e.jsx(dn,{className:"size-4"}),r==="none"&&e.jsx(xn,{className:"size-4"})]})]}):null}function Ur(){const t=s.useEditorStore(j=>j.frame),a=s.useEditorStore(j=>j.card),{setFrame:n,setActiveTabCardId:r,setCard:l,updateCardInFrame:o}=s.useEditorActions(),c=(j,x)=>{j.dataTransfer.setData("tabIndex",x.toString())},i=j=>{j.preventDefault()},u=(j,x)=>{const b=j.dataTransfer.getData("tabIndex");if(b===x.toString())return;const p=Array.from(t.cards),[v]=p.splice(parseInt(b),1);p.splice(x,0,v),n({...t,cards:p})};function d(j){const x=t.cards.filter(v=>v.id!==j),b=x[0],p={...t,cards:x,activeCardId:b.id};n(p),r(b.id),l(b)}function m(j,x){const b={...t,cards:[...t.cards,x],activeCardId:j.id};n(b),r(x.id)}function h(){const j={...a,id:s.v4(),title:`${a.title} Copy`,tabTitle:`${a.tabTitle||a.title} Copy`};m(a,j)}function f(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;l({...x,displayTab:b}),o({...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(Va,{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=>u(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=>{l({...a,tabTitle:b}),o({...a,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:()=>d(j.id)})]},j.id)),e.jsx(s.Button,{className:"ml-1 h-8 px-2 hover:bg-muted-foreground/50",variant:"outline",onClick:()=>f(a),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(Pa,{className:"h-4 w-4"})})]})})}function aa(){const t=s.useEditorStore(x=>x.frame),a=s.useEditorStore(x=>x.card),n=s.useEditorStore(x=>x.isSqlRunning),r=s.useEditorStore(x=>x.isDevMode),{setFrame:l,setActiveTabCardId:o,setCard:c,setIsDevMode:i,setRunSql:u}=s.useEditorActions(),{data:d,isLoading:m,isFetching:h}=s.useDashboardCardQuery(a);function f(x){const b=t.cards.find(p=>p.id===x);if(b!=null&&b.sql){r||i(!0),o(x);return}if(b!=null&&b.queryConfig){r&&i(!1),g(x),o(x);return}r||g(x),o(x)}function g(x){const b={...t,cards:t.cards.map(v=>v.id===a.id?a:v),activeCardId:x};l(b);const p=b.cards.find(v=>v.id===x);p.sql&&u(!0),c(p)}function j(){return a.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:a,data:d==null?void 0:d.records,isPending:m||h})})}):a.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:n,card:a,data:d==null?void 0:d.records})})})}):e.jsx(s.ErrorBoundary,{FallbackComponent:s.FallbackVisual,children:e.jsx(Jt,{className:"grow border-none shadow-none"})})}return e.jsxs(s.Tabs,{onValueChange:f,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(Ur,{})]})}function cs({children:t}){var L,N;s.useEditorStore(w=>w.frame);const a=s.useEditorStore(w=>w.card),n=s.useEditorStore(w=>w.isDevMode),r=s.useEditorStore(w=>w.isShowingVisual),l=s.useDashboardStore(w=>w.isVisualEditing),o=s.useEditorStore(w=>w.pythonStdOut);s.useEditorStore(w=>w.actions.setRunSql);const{setFrame:c,setCard:i,setActiveTabCardId:u,runAssistant:d,setIsDevMode:m,setCardPreferences:h}=s.useEditorActions(),{data:f,isLoading:g,isFetching:j,errorMessage:x,refetch:b}=s.useDashboardCardQuery(a);function p(){const w=JSON.stringify(f==null?void 0:f.records,null,2),y=new Blob([w],{type:"application/json"}),k=URL.createObjectURL(y),S=document.createElement("a");S.href=k,S.download=`${a.title}.json`,S.click()}function v(){const y=[Object.keys(f==null?void 0:f.records.reduce((C,B)=>({...C,...B}),{})).join(","),...((f==null?void 0:f.records)||[]).map(C=>Object.values(C).join(","))].join(`
339
+ `),k=new Blob([y],{type:"text/csv"}),S=URL.createObjectURL(k),R=document.createElement("a");R.href=S,R.download=`${a.title}.csv`,R.click()}function T(){const w=`Can you get the documentation for ${a.type} chart?`;d(w)}return a?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(sa,{}),l&&e.jsx(s.IconButton,{tooltip:"Visual Docs",onClick:T,children:e.jsx(Ma,{className:"size-4"})}),!["table","custom"].includes(a.type)&&l&&e.jsx(Fr,{})]}),!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:v,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:p,children:e.jsx(Ua,{strokeWidth:1.5,className:"size-4"})}),e.jsx(s.CopyButton,{text:JSON.stringify(f==null?void 0:f.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(ta,{})]}),a.type==="table"&&a.sql&&!s.hasValidCardConfig(a.config)&&e.jsxs("div",{className:"mr-2 flex items-center gap-3",children:[e.jsx(s.Checkbox,{id:"pagination",checked:((N=(L=a.preferences)==null?void 0:L.tablePrefs)==null?void 0:N.enableDevModePagination)??!1,onCheckedChange:w=>{var y;h({...a.preferences,tablePrefs:{...(y=a.preferences)==null?void 0:y.tablePrefs,enableDevModePagination:w}}),b()}}),e.jsx(s.Label,{htmlFor:"pagination",children:"Paginate Results"})]}),n&&e.jsx(qr,{})]}),r?e.jsx(aa,{}):e.jsxs(s.ResizablePanelGroup,{className:"px-6",direction:"horizontal",children:[o&&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:o&&e.jsx($r,{})}),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":o}),children:[(f==null?void 0:f.records)&&(f==null?void 0:f.records.length)>0&&e.jsx(s.TableVisual,{card:a,data:(f==null?void 0:f.records)||[]}),x&&e.jsx(Kt,{error:x})]})]})]}):e.jsx(e.Fragment,{children:"No Active Card"})}function $r(){const t=s.useEditorStore(n=>n.pythonStdOut);if(!t)return null;const a=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:a}}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function qr(){const t=s.useEditorStore(n=>n.isShowingVisual),a=s.useEditorStore(n=>n.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:()=>a(!t),id:"visualize",className:"data-[state=checked]:bg-foreground/50"})]})}function Yr(){var x,b;const t=s.useEditorStore(p=>p.card.customCardPreferences),{data:a}=Xt(),n=(a==null?void 0:a.plugins)||[],r=s.useEditorStore(p=>p.card),l=s.useEditorStore(p=>p.frame),o=(t==null?void 0:t.visualType)||"single",{setCustomCardPreferences:c}=s.useEditorActions(),{components:i,manifest:u}=s.useCustomVisual((t==null?void 0:t.url)||""),d=(x=u==null?void 0:u.visuals)==null?void 0:x.find(p=>p.name===(t==null?void 0:t.componentName));function m(p,v){if(!t)return;const L={...(t==null?void 0:t.dataInputCardIds)||{},[p]:{cardId:v,hookRef:null}};c({...t,dataInputCardIds:L})}function h(p){var T,L;const v=(T=l==null?void 0:l.cards)==null?void 0:T.filter(N=>{var w;return((w=N==null?void 0:N.customCardPreferences)==null?void 0:w.visualType)!=="multiple"}).map(N=>({value:N.id,label:N.tabTitle||N.title}));return e.jsx("div",{className:"space-y-2",children:(L=p==null?void 0:p.dataInputs)==null?void 0:L.map((N,w)=>{var y,k;return e.jsxs("div",{className:"grid grid-cols-10 gap-2",children:[e.jsx("div",{className:"col-span-4 flex items-center",children:N}),e.jsx(je,{className:"col-span-6 h-8 w-full justify-between",label:"",options:v||[],value:((k=(y=t==null?void 0:t.dataInputCardIds)==null?void 0:y[w])==null?void 0:k.cardId)||"",onValueChange:S=>m(w,S)})]},w+Math.random())})})}function f(p,v,T=[],L=""){var N,w;return t?p==="input"?e.jsx(s.Input,{className:`h-8 w-full ${s.removeRing}`,value:((N=t==null?void 0:t.settings)==null?void 0:N[v])||L,onChange:y=>{c({...t,settings:{...t==null?void 0:t.settings,[v]:y.target.value}})}},v):p==="select"?e.jsx(je,{className:"h-8 w-full",label:"",options:T,value:((w=t==null?void 0:t.settings)==null?void 0:w[v])||L,onValueChange:y=>{c({...t,settings:{...t==null?void 0:t.settings,[v]:y}})}}):null:null}function g(p){const v=Object.entries((p==null?void 0:p.settings)||{});return e.jsx("div",{className:"space-y-3",children:v.map(([T,L])=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:L.title}),f(L.ui,T,L.options,L.defaultValue)]},T))})}function j(p){t&&c({...t,visualType:p,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(je,{icon:e.jsx(Aa,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Plugin",options:n,value:(t==null?void 0:t.url)||"",onValueChange:p=>c({...t||{url:"",componentName:""},url:p})}),((t==null?void 0:t.type)==="component"||(t==null?void 0:t.type)===void 0)&&e.jsx(s.Tabs,{value:o,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(je,{icon:e.jsx(Fa,{className:"h-3.5 w-3.5"}),className:"h-9 w-full",label:"Select Component",options:(i==null?void 0:i.filter(p=>p.type===o).map(p=>({value:p.name,label:p.name})))||[],value:t.componentName,onValueChange:p=>{console.log("changing value",p),c({...t,componentName:p})}})})]})})]}),((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:[d&&d.dataInputs&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Input Mapping"}),e.jsx("div",{className:"px-2",children:h(d)})]}),d&&d.settings&&e.jsx("div",{className:"space-y-3",children:e.jsx("div",{className:"px-2",children:g(d)})})]})]})]})}function qe(){const[t,a]=I.useState([]),n=s.useEditorStore(d=>d.card.preferences),{setFilterOnClickColumnIndex:r,setCardPreferences:l}=s.useEditorStore(d=>d.actions),o=s.useEditorStore(d=>d.queryResultColumns);s.useEditorStore(d=>{var m;return(m=d.card.preferences)==null?void 0:m.filterOnClickColumnIndex}),I.useEffect(()=>{o&&a(new Array(o.length).fill(!1))},[o]);function c(d,m){var h,f;m?n!=null&&n.onClickFilter&&((h=n==null?void 0:n.onClickFilter)==null?void 0:h.length)>0?l({...n,onClickFilter:[...n.onClickFilter,{columnIndex:d,expression:""}]}):l({...n,onClickFilter:[{columnIndex:d,expression:""}]}):(l({...n,onClickFilter:(f=n==null?void 0:n.onClickFilter)==null?void 0:f.filter(g=>g.columnIndex!==d)}),a(g=>{const j=[...g];return j[d]=!1,j}))}function i(d,m){var f;const h=(f=n==null?void 0:n.onClickFilter)==null?void 0:f.map(g=>g.columnIndex===d?{...g,expression:m.target.value}:g);l({...n,onClickFilter:h})}function u(d){var m,h,f,g;if(t!=null&&t[d]||(h=(m=n==null?void 0:n.onClickFilter)==null?void 0:m.find(j=>j.columnIndex===d))!=null&&h.expression)return e.jsx(s.Input,{value:(g=(f=n==null?void 0:n.onClickFilter)==null?void 0:f.find(j=>j.columnIndex===d))==null?void 0:g.expression,onChange:j=>i(d,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:o==null?void 0:o.map((d,m)=>{var h,f;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=n==null?void 0:n.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:d}),e.jsx("div",{className:"flex items-center gap-2",children:((f=n==null?void 0:n.onClickFilter)==null?void 0:f.find(g=>g.columnIndex===m))&&e.jsx(s.Pencil,{onClick:()=>{a(g=>{const j=[...g];return j[m]=!g[m],j})},className:"invisible size-3 cursor-pointer text-gray-400 group-hover:visible"})})]}),u(m)]})},d)})})}function Gr({idx:t}){var i;const a=s.useEditorStore(u=>{var d;return(d=u.card)==null?void 0:d.preferences}),n=s.useEditorStore(u=>{var d;return(d=u.card.preferences)==null?void 0:d.datasetOptions}),r=s.useEditorStore(u=>u.actions.setCardPreferences),l=(i=a==null?void 0:a.chartOptions)==null?void 0:i.indexAxis,o=n==null?void 0:n.find(u=>u.idx===t);function c(u,d){(u==="end"||u==="start")&&s.getContrastColor(s.getCanvasBackgroundColor());const m={display:u!=="none",align:u,anchor:u,clamp:!0};if(!o)r({...a,datasetOptions:[...n||[],{idx:d,datalabels:m}]});else{const h={...o};h.datalabels=m;const f=n==null?void 0:n.map(g=>g.idx===d?h:g);r({...a,datasetOptions:f})}}return e.jsxs(s.Popover,{children:[e.jsx(s.PopoverTrigger,{children:e.jsx(Ct,{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(Ja,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})}),e.jsx("button",{onClick:()=>c("center",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Za,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})}),e.jsx("button",{onClick:()=>c("end",t),className:"h-7 p-1 text-xs font-normal",children:e.jsx(Xa,{className:s.cn("h-4 w-4",{"rotate-90":l==="y"})})})]})})]})}function Kr(){const t=s.useEditorStore(o=>o.card),{data:a}=s.useDashboardCardQuery(t),{keys:n}=s.getKeys((a==null?void 0:a.records)||[]),r=n.slice(1).filter(o=>!s.METADATA_KEYS.includes(o));let l=r;if(["stackedBar","stackedLine"].includes(t.type)){const o=s.pivotData({dataArray:(a==null?void 0:a.records)||[],groupKey:n[0],pivotKey:n[1],valueKey:n[2]}),{keys:c}=s.getKeys(o);l=c.slice(1)}return{transformedMetricKeys:l,dimensionKeys:n.slice(0,1),keys:n,defaultMetricKeys:r}}function bs({children:t,className:a,delayDuration:n}){return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:n,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:s.cn("overflow-hidden text-ellipsis whitespace-nowrap",a),children:t})}),e.jsx(s.TooltipContent,{children:t})]})})}function na(){const t=s.useEditorStore(u=>u.card),a=s.useEditorStore(u=>{var d,m,h;return(h=(m=(d=u==null?void 0:u.card)==null?void 0:d.preferences)==null?void 0:m.chartOptions)==null?void 0:h.indexAxis}),{data:n}=s.useDashboardCardQuery(t),r=a==="y"?"Metric":"Dimension",l=a==="y"?"Dimension":"Metric",{dimensionKeys:o,transformedMetricKeys:c,keys:i}=Kr();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:o.map(u=>e.jsx("p",{className:"flex h-8 items-center rounded-md bg-muted/70 px-3 hover:bg-muted",title:u,children:ra(u)},u))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:l}),e.jsx("div",{className:"my-1 max-h-[125px] space-y-1 overflow-y-auto",children:c.map((u,d)=>e.jsx(la,{className:"flex h-8 items-center bg-muted/70 px-3 hover:bg-muted",iconClassName:"invisible group-hover:visible",col:u,idx:d},u))})]})]})}function ra(t,a=30){return t.length>a?t.slice(0,a)+"...":t}function la({col:t,idx:a,className:n,iconClassName:r,children:l}){const o=s.useEditorStore(m=>{var h;return(h=m.card)==null?void 0:h.preferences}),c=s.useEditorStore(m=>{var h,f;return(f=(h=m.card)==null?void 0:h.preferences)==null?void 0:f.datasetOptions}),i=c==null?void 0:c.find(m=>m.idx===a),{setCardPreferences:u}=s.useEditorStore(m=>m.actions);function d(m){if(!i)u({...o,datasetOptions:[...c||[],{idx:a,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 f=c==null?void 0:c.map(g=>g.idx===a?h:g);u({...o,datasetOptions:f})}}return e.jsxs("div",{className:s.cn("group flex items-center justify-between gap-2 rounded-md",n),children:[l||e.jsx(bs,{className:"max-w-[100px]",title:t,children:ra(t)}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.ChartColumnIncreasing,{onClick:()=>d("bar"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartLine,{onClick:()=>d("line"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(s.ChartArea,{onClick:()=>d("area"),className:s.cn("size-4 cursor-pointer text-muted-foreground hover:text-foreground",r)}),e.jsx(Gr,{idx:a})]})]})}function $s(){const t=s.useEditorStore(g=>g.selectedConnectionId),a=s.useEditorStore(g=>g.selectedDatamodelId),n=s.useEditorStore(g=>g.selectedDatabaseName),r=s.useEditorStore(g=>g.selectedSchemaName),l=s.useEditorStore(g=>g.selectedTableName),o=s.useDashboardStore(g=>g.dashboard.filters)||[],c=s.useDashboardStore(g=>g.actions.addFilter),i=s.useDashboardStore(g=>g.actions.removeFilter),{removeFilterValues:u}=s.useDashboardActions(),{modelItems:d,tableName:m,connectionType:h}=s.useEditorAside();function f(g,j="dashboard",x){var k;const b=s.fmt(g.column_name),p=s.fmt(n||""),v=s.fmt(r||""),T=s.fmt(m);let L=s.getQualifiedTableName({schemaName:v,tableName:T,connectionType:h,databaseName:p}),N=`${L}.${b}`;const w=(k=d==null?void 0:d.find(S=>S.id===a))==null?void 0:k.name;a&&a!=="none"&&(N=`${s.DATAMODEL_NAMESPCACE}.${w}.${b}`,L=`${s.DATAMODEL_NAMESPCACE}.${w}`),x!=null&&x.qualifiedFieldName&&(N=x.qualifiedFieldName),x!=null&&x.entityName&&(L=x.entityName);const y=o==null?void 0:o.find(S=>S.column===N&&S.table===T&&(S.database===p||S.database===n));if(y)u(y.id),i(y.id);else{const S=s.v4();return m==="api"&&t?(c({location:j,id:S,column:N,title:g.column_name,dataType:g.data_type,table:"api",database:"",connectionId:t,operation:"in",sql:s.getDefaultFilterSql(g.data_type,L,b)}),S):(c({id:S,location:j,column:N,title:g.column_name,dataType:g.data_type,table:l||"",database:n||"",connectionId:t||"",operation:"in",sql:s.getDefaultFilterSql(g.data_type,L,b)}),S)}}return{assignFilter:f}}function We(){const t=s.useDashboardStore(i=>i.dashboard.filters),a=s.useEditorStore(i=>i.frame),{setFrame:n}=s.useEditorActions(),{columns:r}=s.useEditorAside(),{assignFilter:l}=$s();function o(i){const u=l(i,"frame");n({...a,filterId:u})}const c=t==null?void 0:t.find(i=>i.id===a.filterId);return e.jsxs("div",{className:"space-y-3",children:[e.jsx(s.Label,{children:"Card Filter"}),e.jsx(Hr,{onSelect:o,columns:r}),c&&e.jsx(s.FilterHeader,{filter:c})]})}function Hr({columns:t,onSelect:a}){var c;const[n,r]=pe.useState(!1),[l,o]=pe.useState("");return e.jsxs(s.Popover,{open:n,onOpenChange:r,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{size:"sm",variant:"outline",role:"combobox","aria-expanded":n,className:"w-full justify-between font-normal",children:[l?(c=t.find(i=>i.column_name===l))==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:u=>{const d=u===l?"":u;o(d),r(!1),d&&a(i)},children:[i.column_name,e.jsx(s.CheckIcon,{className:s.cn("ml-auto h-4 w-4",l===i.column_name?"opacity-100":"opacity-0")})]},i.column_name))})]})]})})]})}function Qr({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:a=>a.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(na,{})})]}),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(qe,{}),e.jsx(We,{})]})]})]})})}function Wr({cardType:t}){function a(n){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rounded bg-muted px-2 py-1 text-xs",children:n==="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"}),n==="bubble"&&e.jsx("li",{children:"radius - 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/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:a(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(qe,{}),e.jsx(We,{})]})]})]})})}function oa(){const t=s.useEditorStore(i=>i.card.type),a=s.useEditorStore(i=>i.isDevMode),n=s.useEditorStore(i=>i.card.preferences),{setCardPreferences:r}=s.useEditorStore(i=>i.actions);function l(i){var m;const u={datalabels:{display:i!=="none",align:i,anchor:i,clamp:!0}},d={...n,chartOptions:{...n==null?void 0:n.chartOptions,plugins:{...(m=n==null?void 0:n.chartOptions)==null?void 0:m.plugins,...u}}};r(d)}function o(){var i,u,d;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"font-medium",children:"Data Labels"}),e.jsxs(s.Select,{value:((d=(u=(i=n==null?void 0:n.chartOptions)==null?void 0:i.plugins)==null?void 0:u.datalabels)==null?void 0:d.anchor)||"none",onValueChange:l,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,u,d;return e.jsx("div",{children:e.jsxs(s.Select,{value:((d=(u=(i=n==null?void 0:n.chartOptions)==null?void 0:i.plugins)==null?void 0:u.datalabels)==null?void 0:d.anchor)||"none",onValueChange:l,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:a?o():c()})}const Jr={datasets:[{type:"line",label:"Sum_sales",data:[]},{type:"bar",label:"Sum_profit",data:[]}]},Xr={datasets:[{fill:"origin",type:"line",label:"Sum_sales",data:[]}]};function Zr(){const t=s.useEditorStore(a=>a.card.type);return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsx(s.Accordion,{className:" ",type:"single",collapsible:!0,children:el(t)}),!["kpi"].includes(t)&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(oa,{}),e.jsx(qe,{}),e.jsx(We,{})]})]})}function el(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(Jr,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(Xr,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 sl({colorRanges:t,setColorRanges:a}){const n={start:-1/0,end:100,color:""};function r(c,i,u){const d=[...t];d[c]={...d[c],[i]:u},a(d)}function l(c){const i=[...t];i.splice(c,1),a(i)}function o(){a([...t,n])}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:o,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:u=>r(i,"start",u.target.value),value:c.start,className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx("span",{children:"-"}),e.jsx(s.Input,{value:c.end,onChange:u=>r(i,"end",u.target.value),className:s.cn(`h-7 ${s.removeRing}`)}),e.jsx(s.Input,{onChange:u=>r(i,"color",u.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:()=>l(i),variant:"secondary",className:"h-5 p-1 text-muted-foreground",children:e.jsx(s.X,{className:"size-3"})})]},i))]})}function tl(){var m,h,f,g,j;const t=s.useEditorStore(x=>x.card.preferences),a=s.useEditorStore(x=>x.actions.setCardPreferences),n=s.useEditorStore(x=>x.card),r=s.isExplorerCard(n),l=s.useEditorStore(x=>x.actions.setNumberFormat);s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.decimalPlaces});const o=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.locale}),c=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.currency});s.useEditorStore(x=>x.actions.setFilterOnClickField);const i=s.useEditorStore(x=>{var b,p;return(p=(b=x.card.preferences)==null?void 0:b.formatNumber)==null?void 0:p.colorRanges})||[],u=s.useEditorStore(x=>x.actions.setColorRanges),d=[...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=>{a({...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:o||"none",onValueChange:x=>{var b,p,v;return l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((p=t==null?void 0:t.formatNumber)==null?void 0:p.currency)||"",x,((v=t==null?void 0:t.formatNumber)==null?void 0:v.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,p,v;console.log("currency",x),l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,x==="none"?"":x,((p=t==null?void 0:t.formatNumber)==null?void 0:p.locale)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.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"),d.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=(f=t==null?void 0:t.formatNumber)==null?void 0:f.decimalPlaces)==null?void 0:g.toString())||"0",onValueChange:x=>{var b,p,v;return l(Number(x),((b=t==null?void 0:t.formatNumber)==null?void 0:b.currency)||"",((p=t==null?void 0:t.formatNumber)==null?void 0:p.locale)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.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,p,v;return l(((b=t==null?void 0:t.formatNumber)==null?void 0:b.decimalPlaces)||0,((p=t==null?void 0:t.formatNumber)==null?void 0:p.currency)||"",((v=t==null?void 0:t.formatNumber)==null?void 0:v.locale)||"",x.target.value)}})]})]})]})}),e.jsx(s.Separator,{className:"my-3"}),e.jsx(sl,{colorRanges:i,setColorRanges:u})]})]})}function al(){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(tl,{})}),e.jsx("div",{}),e.jsx("div",{})]})}function Ts({children:t,summary:a,open:n,className:r}){return e.jsxs("details",{open:n,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:a}),e.jsx(s.ChevronUp,{className:"h-4 w-4"})]}),e.jsx("div",{className:"transition-all ease-in-out",children:t})]})}const nl=[{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"}],rl=["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"],ll=rl.map(t=>({label:t,value:t}));function ol(){var u,d,m,h,f,g,j,x,b,p,v,T,L,N,w,y,k,S;const t=s.useEditorStore(R=>R.card),a=(d=(u=t==null?void 0:t.preferences)==null?void 0:u.mapVisualOptions)==null?void 0:d.topoJsonUrl,[n,r]=I.useState(((h=(m=t==null?void 0:t.preferences)==null?void 0:m.mapVisualOptions)==null?void 0:h.customTopoJsonUrl)||""),{setCardPreferences:l}=s.useEditorActions(),{data:o}=s.useTopoJson(t),c=Object.keys((o==null?void 0:o.objects)||{}).map(R=>({label:R,value:R}))||[],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(Ts,{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(Ts,{open:!0,summary:"Settings",children:e.jsxs("div",{className:"space-y-3 px-2",children:[e.jsx(je,{className:"h-9",options:i,onValueChange:R=>{console.log("value",R),l({...t.preferences,mapVisualOptions:{topoJsonUrl:R}})},value:a||"",label:"Select Map"}),a==="custom"&&e.jsx(s.Input,{onChange:R=>{r(R.target.value)},onBlur:()=>{var R;console.log("onBlur",n),l({...t.preferences,mapVisualOptions:{...(R=t.preferences)==null?void 0:R.mapVisualOptions,customTopoJsonUrl:n}})},value:n,className:`h-9 w-full ${s.removeRing}`,placeholder:"Custom URL"}),o&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Map Object"}),e.jsx(je,{className:"h-9",options:c,value:((g=(f=t.preferences)==null?void 0:f.mapVisualOptions)==null?void 0:g.objectKey)||"",label:"Map Object",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,objectKey:R}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Projection"}),e.jsx(je,{className:"h-9",options:nl,value:((x=(j=t.preferences)==null?void 0:j.mapVisualOptions)==null?void 0:x.projection)||"",label:"Projection",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projection:R}})}})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{children:"Colors"}),e.jsx(je,{className:"h-9",options:ll,value:((p=(b=t.preferences)==null?void 0:b.mapVisualOptions)==null?void 0:p.colorScale)||"",label:"Select Color Scale",onValueChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,colorScale:R}})}})]})]})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(Ts,{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:((T=(v=t.preferences)==null?void 0:v.mapVisualOptions)==null?void 0:T.projectionScale)||1,onChange:R=>{var C;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionScale:Number(R.target.value)}})}}),e.jsx(s.Label,{children:"X"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((w=(N=(L=t.preferences)==null?void 0:L.mapVisualOptions)==null?void 0:N.projectionOffset)==null?void 0:w[0])||0,onChange:R=>{var C,B,D,E;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionOffset:[Number(R.target.value),((E=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:E[1])||0]}})}}),e.jsx(s.Label,{children:"Y"}),e.jsx(s.Input,{className:`h-9 w-full ${s.removeRing}`,type:"number",step:10,value:((S=(k=(y=t.preferences)==null?void 0:y.mapVisualOptions)==null?void 0:k.projectionOffset)==null?void 0:S[1])||0,onChange:R=>{var C,B,D,E;l({...t.preferences,mapVisualOptions:{...(C=t.preferences)==null?void 0:C.mapVisualOptions,projectionOffset:[((E=(D=(B=t.preferences)==null?void 0:B.mapVisualOptions)==null?void 0:D.projectionOffset)==null?void 0:E[0])||0,Number(R.target.value)]}})}})]})}),e.jsx(s.Separator,{className:"my-4"}),e.jsx(qe,{})]})}function il(){var r;const t=s.useEditorStore(l=>l.card.preferences),{setCardPreferences:a}=s.useEditorStore(l=>l.actions);function n(l){a({...t,textVisualOptions:{...t==null?void 0:t.textVisualOptions,isDynamicText:l==="dynamic"}})}return e.jsxs(s.RadioGroup,{value:(r=t==null?void 0:t.textVisualOptions)!=null&&r.isDynamicText?"dynamic":"static",onValueChange:n,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 ds({cardType:t,docContent:a,suffix:n="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)} ${n}`}),e.jsx(s.AccordionContent,{children:a||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:l=>l.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(il,{})})]}),!["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(qe,{}),e.jsx(We,{})]})]})]})})}function cl(){const t=s.useEditorStore(r=>{var l,o;return(o=(l=r==null?void 0:r.card)==null?void 0:l.preferences)==null?void 0:o.sortChart}),{setSortChart:a}=s.useEditorActions();function n(){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Sort"}),e.jsx(je,{className:"h-8",label:"Sort Chart",options:[{label:"None",value:"none"},{label:"ASC",value:"asc"},{label:"DESC",value:"desc"}],value:t||"none",onValueChange:r=>{a(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:[n(),e.jsx(na,{})]})]}),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(qe,{}),e.jsx(We,{})]})]})]})})}function dl({cardType:t="table"}){console.log("cardType",t);const a=s.useEditorStore(l=>{var o;return(o=l.card)==null?void 0:o.preferences}),n=s.useEditorStore(l=>l.actions.setCardPreferences),r=l=>{n({...a,allowDownload:l})};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(qe,{}),e.jsx(We,{})]})]})}),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 ia({color:t,onColorChange:a,onClose:n}){const[r,l]=I.useState(0),[o,c]=I.useState(100),[i,u]=I.useState(50),[d,m]=I.useState(t);I.useEffect(()=>{const b=it(t);if(b){const p=ct(b.r,b.g,b.b);l(p.h),c(p.s),u(p.l),m(t)}},[t]);const h=b=>{l(b),g(b,o,i)},f=b=>{const p=b.currentTarget.getBoundingClientRect(),v=Math.max(0,Math.min(1,(b.clientX-p.left)/p.width)),T=Math.max(0,Math.min(1,(b.clientY-p.top)/p.height)),L=v*100,N=(1-T)*100;c(L),u(N),g(r,L,N)},g=(b,p,v)=>{const T=ml(b,p,v),L=ul(T.r,T.g,T.b);m(L)},j=b=>{if(m(b),/^#[0-9A-Fa-f]{6}$/.test(b)){const p=it(b);if(p){const v=ct(p.r,p.g,p.b);l(v.h),c(v.s),u(v.l)}}},x=()=>{/^#[0-9A-Fa-f]{6}$/.test(d)&&(a(d),n())};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:f,onMouseMove:b=>{b.buttons===1&&f(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:`${o}%`,top:`${100-i}%`,backgroundColor:d}})]}),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:d,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:d}}),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:n,children:"Cancel"}),e.jsx(s.Button,{onClick:x,children:"OK"})]})]})}function it(t){const a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return a?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}function ul(t,a,n){return"#"+((1<<24)+(t<<16)+(a<<8)+n).toString(16).slice(1)}function ct(t,a,n){t/=255,a/=255,n/=255;const r=Math.max(t,a,n),l=Math.min(t,a,n);let o=0,c=0;const i=(r+l)/2;if(r!==l){const u=r-l;switch(c=i>.5?u/(2-r-l):u/(r+l),r){case t:o=((a-n)/u+(a<n?6:0))/6;break;case a:o=((n-t)/u+2)/6;break;case n:o=((t-a)/u+4)/6;break}}return{h:Math.round(o*360),s:Math.round(c*100),l:Math.round(i*100)}}function ml(t,a,n){t/=360,a/=100,n/=100;let r,l,o;if(a===0)r=l=o=n;else{const c=(d,m,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?d+(m-d)*6*h:h<.5?m:h<.6666666666666666?d+(m-d)*(.6666666666666666-h)*6:d),i=n<.5?n*(1+a):n+a-n*a,u=2*n-i;r=c(u,i,t+1/3),l=c(u,i,t),o=c(u,i,t-1/3)}return{r:Math.round(r*255),g:Math.round(l*255),b:Math.round(o*255)}}const hl=["#000000","#ffffff","#6b7280","#dc2626","#ea580c","#ca8a04","#16a34a","#0891b2","#2563eb","#7c3aed","#c026d3","#e11d48","#0f172a","#f3f4f6","#fbbf24"];function ca(){var T,L,N,w,y,k,S,R,C,B;const t=s.useEditorStore(D=>D.card),a=s.useEditorStore(D=>{var E;return(E=D.card)==null?void 0:E.preferences}),{setCardPreferences:n,updateCardInFrame:r}=s.useEditorActions(),{data:l}=s.useDashboardCardQuery(t),[o,c]=I.useState({}),[i,u]=I.useState(null),[d,m]=I.useState(null),h=I.useMemo(()=>{var F,M,O,z,P,H,X;if(!(l!=null&&l.records)||l.records.length===0)return[];const D=(t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine",E=(t==null?void 0:t.type)==="bar"||(t==null?void 0:t.type)==="line",A=((F=t==null?void 0:t.config)==null?void 0:F.pivotByColumns)&&t.config.pivotByColumns.length>0;if((D||E)&&A){if(l.pivotSchema&&Array.isArray(l.pivotSchema)){const Q=new Set;return l.pivotSchema.forEach(Y=>{Y.alias&&Q.add(Y.alias)}),Array.from(Q)}if(l.records.length>0){const Q=l.records[0],Y=Object.keys(Q),K=new Set;(M=t==null?void 0:t.config)!=null&&M.groupByColumns&&t.config.groupByColumns.forEach(V=>{K.add(V.label||V.name),K.add(V.alias||V.name)});const U=new Set;return(O=t==null?void 0:t.config)!=null&&O.metricColumns&&t.config.metricColumns.forEach(V=>{const $=V.alias||V.name;U.add($),U.add(`${$}_count`),U.add(`${$}_sum`),U.add(`${$}_avg`),U.add(`${$}_min`),U.add(`${$}_max`);const Z=V.entityName||V.qualifiedEntityName;Z&&(U.add(`${Z}_${$}`),U.add(`${Z}_${$}_count`))}),Y.filter(V=>!K.has(V)&&!U.has(V))}}if((E||D)&&!A&&((P=(z=t==null?void 0:t.config)==null?void 0:z.metricColumns)!=null&&P.length))return t.config.metricColumns.map(Q=>Q.alias||Q.label||Q.name);if((X=(H=t==null?void 0:t.config)==null?void 0:H.groupByColumns)!=null&&X.length){const Q=t.config.groupByColumns[0],Y=Q.label||Q.name,K=new Set;return l.records.forEach(U=>{const _=U[Y];_!=null&&K.add(String(_))}),Array.from(K)}return[]},[l,(T=t==null?void 0:t.config)==null?void 0:T.groupByColumns,(L=t==null?void 0:t.config)==null?void 0:L.pivotByColumns,(N=t==null?void 0:t.config)==null?void 0:N.metricColumns,t==null?void 0:t.type]),f=I.useMemo(()=>s.getDefaultChartColors(),[]);I.useEffect(()=>{const D={};h.forEach((E,A)=>{D[E]=s.getColorForValue(E,A,a==null?void 0:a.colorConfig)}),c(D)},[h,a==null?void 0:a.colorConfig,f]);const g=(D,E)=>{const A={...o,[D]:E};c(A);const F={...a||{},colorConfig:{segments:A}};n(F);const M={...t,preferences:F};r(M)},j=(D,E)=>{var P;const A=f[E%f.length],{[D]:F,...M}=((P=a==null?void 0:a.colorConfig)==null?void 0:P.segments)||{},O={...a||{},colorConfig:{segments:M}};n(O);const z={...t,preferences:O};r(z),c(H=>({...H,[D]:A}))};if(!h.length||!((t==null?void 0:t.type)==="stackedBar"||(t==null?void 0:t.type)==="stackedLine"?((y=(w=t==null?void 0:t.config)==null?void 0:w.groupByColumns)==null?void 0:y.length)||((S=(k=t==null?void 0:t.config)==null?void 0:k.pivotByColumns)==null?void 0:S.length):(C=(R=t==null?void 0:t.config)==null?void 0:R.groupByColumns)==null?void 0:C.length)||["table","kpi","text","custom"].includes(t.type))return null;const p=()=>{const D={...a||{},colorConfig:{segments:{}}};n(D);const E={...t,preferences:D};r(E);const A={};h.forEach((F,M)=>{A[F]=s.getColorForValue(F,M,void 0)}),c(A)},v=Object.keys(((B=a==null?void 0:a.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(ln,{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:v&&e.jsxs("button",{className:"ml-auto flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:p,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,E)=>{const A=s.isDefaultColor(o[D],E),F=!A;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:i===D,onOpenChange:M=>u(M?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:o[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:f.slice(0,10).map((M,O)=>e.jsxs("button",{className:s.cn("relative h-5 w-5 rounded border-2 transition-all hover:scale-110",o[D]===M?"border-gray-900":"border-transparent"),style:{backgroundColor:M},onClick:()=>{g(D,M),u(null)},children:[O===E%f.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:M})]},`default-${O}`))})]}),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:hl.map((M,O)=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border transition-all hover:scale-110",o[D]===M?"border-2 border-gray-900":M==="#ffffff"?"border border-gray-300":"border border-transparent"),style:{backgroundColor:M},onClick:()=>{g(D,M),u(null)},children:e.jsx("span",{className:"sr-only",children:M})},`preset-${O}`))})]}),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:o[D]}),u(null)},children:"Custom color"}),!A&&e.jsxs("button",{className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>{j(D,E),u(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)})}),d&&e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50",onClick:()=>m(null)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(ia,{color:d.color,onColorChange:D=>{g(d.value,D),m(null)},onClose:()=>m(null)})})]})]})})]})}function De({value:t,onSave:a,placeholder:n="",type:r="text",className:l=""}){const[o,c]=I.useState(t??""),[i,u]=I.useState(!1);I.useEffect(()=>{c(t??"")},[t]);const d=()=>{a(o),u(!1)},m=()=>{c(t??""),u(!1)};return e.jsxs("div",{className:`flex items-center gap-2 ${l}`,children:[e.jsx(s.Input$1,{placeholder:n,type:r,value:i?o:t??"",onChange:h=>{c(h.target.value),u(!0)},onFocus:()=>u(!0),onClick:h=>h.stopPropagation(),className:"h-8 text-xs",onPointerDown:h=>h.stopPropagation(),onKeyDown:h=>{h.stopPropagation(),h.key==="Enter"&&i&&o!==t?d():h.key==="Escape"&&m()},"aria-label":n||"Edit field"}),i&&o!==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:d,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 xl=["auto","number","currency","percent","scientific","date"],pl=[{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"},{value:"CHF",label:"CHF - Swiss Franc"},{value:"SEK",label:"SEK - Swedish Krona"},{value:"NZD",label:"NZD - New Zealand Dollar"},{value:"MXN",label:"MXN - Mexican Peso"},{value:"SGD",label:"SGD - Singapore Dollar"},{value:"HKD",label:"HKD - Hong Kong Dollar"},{value:"NOK",label:"NOK - Norwegian Krone"},{value:"KRW",label:"KRW - South Korean Won"}],fl=[{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"}],gl=t=>t.charAt(0).toUpperCase()+t.slice(1);function qs({formatOptions:t={},onFormatOptionsChange:a,showTitle:n=!0,title:r="NUMBER FORMAT"}){const l=t.type||"auto",o=(i,u)=>{a({...t,[i]:u})},c=()=>l==="currency"?2:l==="percent"?1:0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[n&&e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:r}),e.jsxs(s.Select,{value:l,onValueChange:i=>o("type",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:xl.map(i=>e.jsx(s.SelectItem,{value:i,className:"text-xs",children:i==="auto"?"Auto (Default)":gl(i)},i))})]})]}),l!=="auto"&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-4",children:[["number","currency","percent"].includes(l)&&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=>o("decimalPlaces",parseInt(i.target.value)||0),className:"h-8 text-xs"})})]}),l==="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=>o("currency",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:pl.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),["number","currency"].includes(l)&&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=>o("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=>o("locale",i),children:[e.jsx(s.SelectTrigger,{className:"h-8 flex-1 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:fl.map(i=>e.jsx(s.SelectItem,{value:i.value,className:"text-xs",children:i.label},i.value))})]})]}),l==="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=>o("prefix",i.target.value),className:"h-8 text-xs"})})]}),l==="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=>o("suffix",i.target.value),className:"h-8 text-xs"})})]}),["number","currency"].includes(l)&&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=>o("negativeInParentheses",i)})]}),l==="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=>o("multiplyBy",i.target.value?parseFloat(i.target.value):void 0),className:"h-8 text-xs"})})]}),l==="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=>o("dateFormat",i.target.value),className:"h-8 text-xs"})})]})]})]})}function dt({axis:t,label:a,type:n,config:r,onChange:l}){var h,f,g,j,x,b,p,v,T,L,N,w;const o=(y,k)=>{l({...r,[y]:k})},c=(y,k)=>{var S,R;l({...r,name:{enabled:y==="enabled"?k:((S=r==null?void 0:r.name)==null?void 0:S.enabled)??!1,text:y==="text"?k:(R=r==null?void 0:r.name)==null?void 0:R.text}})},i=(y,k)=>{var S,R;l({...r,labels:{enabled:y==="enabled"?k:((S=r==null?void 0:r.labels)==null?void 0:S.enabled)??!0,rotation:y==="rotation"?k:(R=r==null?void 0:r.labels)==null?void 0:R.rotation}})},u=(y,k)=>{l({...r,scale:{...r==null?void 0:r.scale,[y]:k===""?"auto":Number(k)}})},d=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:a})})}),e.jsx(s.SmallSwitch,{checked:(r==null?void 0:r.enabled)!==!1,onCheckedChange:y=>o("enabled",y),onClick:y=>y.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:y=>c("enabled",y)})]}),((f=r==null?void 0:r.name)==null?void 0:f.enabled)&&e.jsx(De,{placeholder:`${a} title`,value:((g=r==null?void 0:r.name)==null?void 0:g.text)||"",onSave:y=>c("text",y),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:y=>o("position",y),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:d.map(y=>e.jsx(s.SelectItem,{value:y,className:"text-xs",children:y==="auto"?"Auto (Default)":s.titleCase(y)},y))})]})]}),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:y=>i("enabled",y)})]}),((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:y=>i("rotation",y==="auto"?"auto":Number(y)),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:m.map(y=>e.jsx(s.SelectItem,{value:y,className:"text-xs",children:y==="auto"?"Auto (Default)":`${y}°`},y))})]})]})]}),n==="value"&&e.jsx(qs,{formatOptions:(r==null?void 0:r.formatOptions)||{},onFormatOptionsChange:y=>l({...r,formatOptions:y}),showTitle:!0,title:"FORMAT"}),n==="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(De,{type:"number",placeholder:"auto",value:((p=r==null?void 0:r.scale)==null?void 0:p.min)==="auto"||((v=r==null?void 0:r.scale)==null?void 0:v.min)===void 0?"":String(r.scale.min),onSave:y=>u("min",y),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(De,{type:"number",placeholder:"auto",value:((T=r==null?void 0:r.scale)==null?void 0:T.max)==="auto"||((L=r==null?void 0:r.scale)==null?void 0:L.max)===void 0?"":String(r.scale.max),onSave:y=>u("max",y),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(De,{type:"number",placeholder:"auto",value:((N=r==null?void 0:r.scale)==null?void 0:N.stepSize)==="auto"||((w=r==null?void 0:r.scale)==null?void 0:w.stepSize)===void 0?"":String(r.scale.stepSize),onSave:y=>u("stepSize",y),className:""})})]})]})]})]})]})}function da(){const t=s.useEditorStore(c=>c.card),a=s.useEditorStore(c=>{var i;return(i=c.card)==null?void 0:i.preferences}),{setCardPreferences:n,updateCardInFrame:r}=s.useEditorActions();if(!t||["tornado","pyramid","kpi"].includes(t.type))return null;const l=s.AxisConfigurator.getAxisInfo(t.type,a);if(!l.hasXAxis&&!l.hasYAxis)return null;const o=(c,i)=>{const d={...a||{},[c==="x"?"xAxisConfig":"yAxisConfig"]:i};n(d);const m={...t,preferences:d};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(hn,{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:[l.hasXAxis&&e.jsx(dt,{axis:"x",label:"X-Axis",type:l.xAxisType,config:a==null?void 0:a.xAxisConfig,onChange:c=>o("x",c)}),l.hasYAxis&&e.jsx(dt,{axis:"y",label:"Y-Axis",type:l.yAxisType,config:a==null?void 0:a.yAxisConfig,onChange:c=>o("y",c)})]})})]})}function ua(){const t=s.useEditorStore(d=>d.card),a=s.useEditorStore(d=>{var m,h,f,g;return(g=(f=(h=(m=d.card)==null?void 0:m.preferences)==null?void 0:h.chartOptions)==null?void 0:f.plugins)==null?void 0:g.legend}),{setLegendOptions:n}=s.useEditorActions();if(!t||!s.chartSupportsLegend(t.type))return null;const r="bottom",l="center",o=!(t.type==="stackedBar"||t.type==="stackedLine"),c=(d,m)=>{const h={...a,[d]:m};n(h)},i=["top","bottom","left","right"],u=["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(Wa,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"Legend"})]})}),e.jsx(s.AccordionContent,{className:"pt-2",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Display"}),e.jsx(s.SmallSwitch,{checked:(a==null?void 0:a.display)??o,onCheckedChange:d=>c("display",d)})]}),((a==null?void 0:a.display)??o)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Position"}),e.jsxs(s.Select,{value:(a==null?void 0:a.position)||r,onValueChange:d=>c("position",d),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:i.map(d=>e.jsx(s.SelectItem,{value:d,className:"text-xs",children:s.titleCase(d)},d))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Alignment"}),e.jsxs(s.Select,{value:(a==null?void 0:a.align)||l,onValueChange:d=>c("align",d),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(d=>e.jsx(s.SelectItem,{value:d,className:"text-xs",children:s.titleCase(d)},d))})]})]})]})]})})]})}function ma(){var k,S,R,C,B,D,E,A,F;const t=s.useEditorStore(M=>M.card),a=s.useEditorStore(M=>{var O,z;return(z=(O=M.card)==null?void 0:O.preferences)==null?void 0:z.dataLabelsConfig}),n=s.useEditorStore(M=>{var O;return(O=M.card)==null?void 0:O.preferences}),{setCardPreferences:r,updateCardInFrame:l}=s.useEditorActions();if(!t||!s.chartSupportsDataLabels(t.type))return null;const o=((k=n==null?void 0:n.chartOptions)==null?void 0:k.indexAxis)==="y",c=t.type==="stackedBar"||t.type==="stackedLine",i=t.type==="pie"||t.type==="doughnut"||t.type==="polarArea"||t.type==="funnel",u=!i,d=(R=(S=n==null?void 0:n.chartOptions)==null?void 0:S.plugins)==null?void 0:R.datalabels,m=(d==null?void 0:d.display)!==!1&&((d==null?void 0:d.anchor)||(d==null?void 0:d.align)),h=(a==null?void 0:a.enabled)!==void 0?a.enabled:m,f=(M,O)=>{const z={...a,[M]:O},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},g=(M,O)=>{const z={...a,font:{...a==null?void 0:a.font,[M]:O}},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},j=(M,O)=>{const z={...a,formatOptions:{...a==null?void 0:a.formatOptions,[M]:O}},P={...t.preferences||{},dataLabelsConfig:z};r(P);const H={...t,preferences:P};l(H)},b=(()=>{const M=t.type;return M==="stackedBar"||M==="stackedLine"||M==="pie"||M==="doughnut"?"center":o?"right":"top"})();let p=[];c||i?p=["center"]:p=["auto",...(o?["center","left","right"]:["center","top","bottom"]).filter(O=>O!==b),"custom"];const v=()=>s.titleCase(b),T=["center","start","end"],L=["center","start","end","top","bottom"],N=u?["auto","number","currency","percent","none"]:["number","currency","percent","none"],w=[{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"}],y=[{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(pn,{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:M=>f("enabled",M)})]}),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:(a==null?void 0:a.position)||"auto",onValueChange:M=>f("position",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:p.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:M==="auto"?v():M==="custom"?"Custom (Advanced)":s.titleCase(M)},M))})]})]}),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:(a==null?void 0:a.showTotal)??!1,onCheckedChange:M=>f("showTotal",M)})]}),(a==null?void 0:a.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:(a==null?void 0:a.anchor)||"center",onValueChange:M=>f("anchor",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:T.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:s.titleCase(M)},M))})]})]}),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((a==null?void 0:a.align)||"center"),onValueChange:M=>f("align",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:L.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:s.titleCase(M)},M))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",children:"Format"}),e.jsxs(s.Select,{value:(a==null?void 0:a.format)||(u?"auto":"none"),onValueChange:M=>f("format",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:N.map(M=>e.jsx(s.SelectItem,{value:M,className:"text-xs",children:M==="auto"&&u?"Auto (Use Axis)":M==="none"?"None (Raw Value)":s.titleCase(M)},M))})]})]}),(a==null?void 0:a.format)&&!["auto","none"].includes(a.format)&&e.jsxs("div",{className:"space-y-2 pl-4 border-l-2 border-muted",children:[["number","currency","percent"].includes(a.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(De,{type:"number",placeholder:"0",value:String(((C=a==null?void 0:a.formatOptions)==null?void 0:C.decimalPlaces)??(a.format==="currency"?2:a.format==="percent"?1:0)),onSave:M=>j("decimalPlaces",Number(M)),className:""})})]}),a.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=a==null?void 0:a.formatOptions)==null?void 0:B.currency)||"USD",onValueChange:M=>j("currency",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:w.map(M=>e.jsx(s.SelectItem,{value:M.value,className:"text-xs",children:M.label},M.value))})]})]}),["number","currency"].includes(a.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=a==null?void 0:a.formatOptions)==null?void 0:D.useSuffix)??!1,onCheckedChange:M=>j("useSuffix",M)})]}),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:((E=a==null?void 0:a.formatOptions)==null?void 0:E.locale)||"en-US",onValueChange:M=>j("locale",M),children:[e.jsx(s.SelectTrigger,{className:"h-8 text-xs flex-1",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:y.map(M=>e.jsx(s.SelectItem,{value:M.value,className:"text-xs",children:M.label},M.value))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium",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(De,{type:"number",placeholder:"12",value:String(((A=a==null?void 0:a.font)==null?void 0:A.size)||12),onSave:M=>g("size",Number(M)),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=a==null?void 0:a.font)==null?void 0:F.weight)||"normal",onValueChange:M=>g("weight",M),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:(a==null?void 0:a.color)==="auto"||!(a!=null&&a.color)?"auto":"custom",onValueChange:M=>{M==="auto"&&f("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(De,{type:"number",placeholder:"0",value:String((a==null?void 0:a.rotation)||0),onSave:M=>f("rotation",Number(M)),className:""})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"degrees"})]})]})]})]})})]})}function jl(){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(ca,{}),e.jsx(da,{}),e.jsx(ua,{}),e.jsx(ma,{})]})]})}const yl=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."]})]}),bl=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."]})]}),vl=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 Nl(){const t=s.useEditorStore(n=>n.card.type);function a(n){const r=["kpi","table","text","map","custom"],l=o=>r.includes(n)?o:e.jsxs(e.Fragment,{children:[o,e.jsx(jl,{})]});switch(n){case"stackedBar":case"stackedLine":return l(e.jsx(cl,{}));case"tornado":case"pyramid":return l(e.jsx(ds,{docContent:yl,cardType:n}));case"kpi":return e.jsx(al,{});case"line":case"bar":return l(e.jsx(Qr,{cardType:n}));case"range":return l(e.jsx(ds,{docContent:bl,cardType:n}));case"pie":case"doughnut":case"polarArea":case"radar":case"funnel":return l(e.jsx(ds,{cardType:n}));case"bubble":case"scatter":return l(e.jsx(Wr,{cardType:n}));case"table":return e.jsx(dl,{cardType:n});case"text":return e.jsx(ds,{docContent:vl,cardType:n,suffix:"Visual"});case"map":return e.jsx(ol,{});case"custom":return e.jsx(Yr,{});default:return l(e.jsx(Zr,{}))}}return e.jsxs(s.ScrollArea,{className:"h-full w-full text-sm",children:[a(t),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})}function ha({label:t,column:a,functions:n,onFunctionChange:r}){let l=n[0];"aggregate"in a?l=n.find(c=>c.value===a.aggregate)||n[0]:"granularity"in a&&(l=n.find(c=>c.value===a.granularity)||n[0]);function o(c){r(c)}return e.jsx(je,{className:"flex h-8 w-8 justify-center overflow-clip rounded-none border-none bg-muted px-0 [&>svg]:hidden",icon:l.logo,options:n,value:l.value,onValueChange:c=>o(c),label:t,showPlaceholderLabel:!1})}const Cl=[{label:"Sum",value:"SUM",logo:e.jsx(Nt,{className:"size-3.5"})},{label:"Count",value:"COUNT",logo:e.jsx(Te,{className:"size-3.5"})},{label:"Unique",value:"DISTINCT",logo:e.jsx($a,{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 Sl({column:t}){const{updateMetricColumnOld:a}=s.useEditorActions();let n=Cl;s.isTextDataType(t.type)&&(n=n.filter(l=>["COUNT","DISTINCT"].includes(l.value))),s.isNumberDataType(t.type)&&(n=n.filter(l=>!["DISTINCT"].includes(l.value)));function r(l){const o={...t,aggregate:l,label:as(t.name,l)};a(t.id,o)}return e.jsx(ha,{column:t,functions:n,onFunctionChange:l=>r(l),label:"Aggregation"})}const wl=[{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 Dl({column:t}){const{updateGroupByColumnOld:a}=s.useEditorActions();function n(r){const l={...t,granularity:r,label:Qe(t.name,r)};a(t.id,l)}return e.jsx(ha,{column:t,functions:wl,onFunctionChange:r=>n(r),label:"Granularity"})}function kl({col:t,onChange:a,droppableId:n}){const{columns:r}=s.useDataColumns(),l=I.useMemo(()=>{let i=[];(n===ze||n===Ve||n===_e)&&(i=r);const u=i==null?void 0:i.filter(d=>d.column_name!==t.name);return u==null?void 0:u.map(d=>({id:d.column_name,value:d.column_name}))},[r,n,t.name]),o=[{id:t.name,value:t.name}];function c(i){const u=r==null?void 0:r.find(d=>{var m;return d.column_name===((m=i[0])==null?void 0:m.id)});u&&a(u)}return l!=null&&l.length?e.jsx(s.ComboBox2,{multiple:!1,options:l,selectedOptions:o,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 xa({column:t}){const a=s.useEditorStore(u=>u.card.type),n=s.useEditorStore(u=>{var d,m;return(m=(d=u.card)==null?void 0:d.config)==null?void 0:m.metricColumns}),r=(n==null?void 0:n.map(u=>u.label))||[],l=r==null?void 0:r.find(u=>u===t.label||u===t.name),o=l?r.indexOf(l):-1;function c(){return e.jsx("div",{className:"pr-1",children:l&&e.jsx(la,{idx:o,col:l,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(oa,{})]})}return e.jsxs("div",{className:"space-y-1",children:[["stackedBar","stackedLine","bar","line"].includes(a)&&c(),["pie","doughnut"].includes(a)&&i()]})}function Tl({column:t,type:a,onRemoveColumn:n,droppableId:r}){const[l,o]=I.useState(!1),{updateGroupByColumnOld:c,updateMetricColumnOld:i,updatePivotByColumnOld:u}=s.useEditorActions(),{attributes:d,listeners:m,setNodeRef:h,transform:f,transition:g,isDragging:j}=s.useSortable({id:t.id,data:{type:a}}),x=f?{opacity:j?.5:void 0,transform:s.CSS.Translate.toString(f),transition:g}:void 0,b=s.isTextDataType(t.type);function p(w){const y=s.isNumberDataType(w.data_type),k=s.isTextDataType(w.data_type),S=s.isDateDataType(w.data_type),R=y?"number":k?"string":S?"date":"string";if(r===ze){if(k){const C={id:t.id,name:w.column_name,type:R,role:"groupby"};c(t.id,C)}if(S){const C={id:t.id,name:w.column_name,type:R,role:"groupby",label:Qe(w.column_name,"month"),granularity:"month"};c(t.id,C)}}if(r===_e){if(k){const C={id:t.id,name:w.column_name,type:R,role:"groupby"};u(t.id,C)}if(S){const C={id:t.id,name:w.column_name,type:R,label:Qe(w.column_name,"month"),granularity:"month",role:"groupby"};u(t.id,C)}}if(r===Ve){const C={id:t.id,name:w.column_name,type:R,role:"metric",label:as(w.column_name,"SUM"),aggregate:y?"SUM":"COUNT"};i(t.id,C)}}function v(){if(r===Ve)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(xa,{column:t})})}function T(){const w=s.isDateDataType(t.type);if(r===Ve)return e.jsx(Sl,{column:t});if((r===ze||r===_e)&&w)return e.jsx(Dl,{column:t})}function L(){return e.jsx("div",{className:s.cn("grow",{"pl-3":(r===ze||r===_e)&&b}),children:e.jsx(kl,{col:t,onChange:p,droppableId:r})})}function N(){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:()=>o(!l),children:l?e.jsx(mn,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")}):e.jsx(yt,{className:s.cn("size-3 cursor-pointer items-center justify-center rounded-r-sm text-muted-foreground")})})})}return e.jsx("div",{...m,...d,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:[N(),T(),L()]}),l&&v()]}),e.jsx("div",{className:s.cn("opacity-0 transition-opacity duration-200 group-hover:opacity-100",{hidden:l}),children:e.jsx("button",{onClick:()=>n(t.id),children:e.jsx(s.X,{className:"size-3 cursor-pointer text-muted-foreground"})})})]})})}function Es({id:t,label:a,columns:n,previewColumns:r,sortableType:l,onRemoveColumn:o}){var x,b;const{setNodeRef:c,isOver:i,over:u}=s.useDroppable({id:t}),d=s.useDndStore(p=>p.activeId),m=s.useEditorStore(p=>{var v;return(v=p.card)==null?void 0:v.type}),h=i||((b=(x=u==null?void 0:u.data)==null?void 0:x.current)==null?void 0:b.type)===l,f=d?r:n,g=l===fs?"Rows":l===gs?"Pivot Columns":"Columns";function j(){if(!f||f.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:n==null?void 0:n.map(p=>p.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:a}),m!=="table"&&e.jsx("span",{className:"text-xs text-muted-foreground/50",children:g})]}),j(),e.jsx("div",{className:"space-y-2",children:f==null?void 0:f.map(p=>p.id===Yt.id?e.jsx(El,{},p.id):e.jsx(Tl,{droppableId:t,type:l,column:p,onRemoveColumn:o},p.id))})]})})}function El(){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 pa({children:t,id:a,type:n}){const{attributes:r,listeners:l,setNodeRef:o,transform:c,transition:i,isDragging:u}=s.useSortable({id:a,data:{type:n}}),d=c?{opacity:u?.5:void 0,transform:s.CSS.Translate.toString(c),transition:i}:void 0;return e.jsx("div",{...l,...r,ref:o,style:d,children:t})}function Il(){const t=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.orderBy})||[],a=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.groupByColumns})||[],n=s.useEditorStore(p=>{var v;return(v=p.card.queryConfig)==null?void 0:v.metricColumns})||[],{addOrderByColumn:r,removeOrderByColumn:l,updateOrderByColumn:o}=s.useEditorActions(),c=[...a,...n];if(c.length===0)return e.jsx(e.Fragment,{});const i=e.jsx(Ia,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),u=e.jsx(ka,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),d=e.jsx(Ea,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),m=e.jsx(Da,{className:"size-3.5 text-muted-foreground hover:text-foreground"}),h=c==null?void 0:c.filter(p=>!t.some(v=>v.columnId===p.id)).map(p=>({id:p.id,value:p.label||p.name}));function f(p,v){const T=g(p);return T?T.role==="metric"?v==="asc"?d:m:v==="asc"?i:u:null}function g(p){return c.find(v=>v.id===p)}function j(p){const v=t.find(T=>T.columnId===p);if(v){const T={...v,direction:v.direction==="asc"?"desc":"asc"};o(T)}}const x=p=>{r({columnId:p.id,direction:"asc"})};function b(p){const v=t.find(T=>T.columnId===p);v&&l(v)}return e.jsx(s.SortableContext,{items:t.map(p=>Xe(p.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:p=>x(p[0]),selectAllChecked:!1,onSelectAllCheckedChange:()=>{},inputClassName:"h-8 bg-muted border-none"})}),t.map(p=>{var v,T;return e.jsx(pa,{id:Xe(p.columnId),type:Vs,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(yt,{className:"size-3 cursor-move text-muted-foreground hover:text-foreground"}),e.jsx(bs,{className:"w-[175px] text-sm",children:((v=g(p.columnId))==null?void 0:v.label)||((T=g(p.columnId))==null?void 0:T.name)})]}),e.jsx("button",{title:p.direction==="asc"?"Ascending":"Descending",onClick:()=>j(p.columnId),className:"rounded-sm p-0",children:f(p.columnId,p.direction)})]}),e.jsx("div",{children:e.jsx("button",{onClick:()=>b(p.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"})})})]})},p.columnId)},Xe(p.columnId))})]})})}function Al(){const t=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.groupByColumns)||[]}),a=s.useEditorStore(b=>b.card.type),n=s.useDndStore(b=>b.previewGroupByColumns),r=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.metricColumns)||[]}),l=s.useDndStore(b=>b.previewMetricColumns),o=s.useEditorStore(b=>{var p;return((p=b.card.queryConfig)==null?void 0:p.pivotColumns)||[]}),c=s.useDndStore(b=>b.previewPivotColumns),{removeColumnFromGroupBy:i,removeColumnFromMetricColumns:u,removeColumnFromPivotBy:d}=s.useEditorActions();function m(b){i(b)}function h(b){u(b)}function f(b){d(b)}let g="Group By",j="Metrics",x="Stack By";return a==="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(ea,{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(Es,{onRemoveColumn:m,sortableType:fs,id:ze,label:g,columns:t,previewColumns:n}),e.jsx(Es,{onRemoveColumn:f,sortableType:gs,id:_e,label:x,columns:o,previewColumns:c}),e.jsx(Es,{onRemoveColumn:h,sortableType:Rs,id:Ve,label:j,columns:r,previewColumns:l}),e.jsx(Il,{})]}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function Ys({children:t,column:a,id:n,sortableType:r,className:l}){const[o,c]=I.useState(!1),{removeEditorFilter:i,clearEditorFilter:u}=s.useEditorActions(),d=s.useEditorStore(h=>{var f,g;return(g=(f=h.card.queryConfig)==null?void 0:f.filters)==null?void 0:g.some(j=>j.filterColumnName===a.name)});function m(h){i(h)}return e.jsx(pa,{id:n,type:r,children:e.jsxs("div",{className:s.cn("group space-y-1 rounded-md bg-muted px-3 py-2",{"border-border":o}),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:a.name}),d&&e.jsx("button",{onClick:()=>u(a),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(a),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",!o&&"rounded-b-md",o&&"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",l),children:t})]})]})})}function Ml({column:t,sortableType:a}){const n=s.useDashboardStore(T=>T.themeStyle),r=s.useEditorStore(T=>{var L,N;return(N=(L=T.card)==null?void 0:L.queryConfig)==null?void 0:N.filters}),l=s.useEditorStore(T=>{var L,N;return(N=(L=T.card.queryConfig)==null?void 0:L.filterColumns)==null?void 0:N.find(w=>w.name===t.name)}),{selectedConnectionId:o,selectedDatabaseName:c,selectedTableName:i}=s.useEditorAside(),u=I.useMemo(()=>{var T;return(T=r==null?void 0:r.find(L=>L.filterColumnName===t.name))==null?void 0:T.filterValue},[r,t.name]),d=I.useMemo(()=>Array.isArray(u)?u.map(T=>({id:T,value:T})):[],[u]),{updateEditorFilterValue:m}=s.useEditorActions(),h={column:t.name,sql:t.sql,id:t.name,connectionId:o,dataType:t.type},{data:f,isLoading:g,isFetching:j,isError:x}=s.useFilterQuery(h),b=I.useMemo(()=>{var L;return h.column?(L=f==null?void 0:f.records)==null?void 0:L.map(N=>{let w=h.column.split(".").slice(-1)[0].replace(/"/g,"");return N[w]===void 0&&(w=w.toLowerCase()),{id:N[w],value:N[w]}}):[]},[f,h.column]);function p(T){const L=T.map(N=>N.id);m(t.name,L)}function v(){return g||j?e.jsx(s.Skeleton,{style:{borderRadius:n==null?void 0:n.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:(l==null?void 0:l.mode)==="exclude",options:b,onChange:p,selectedOptions:d,selectAllChecked:!1,onSelectAllCheckedChange:()=>{}})}return e.jsx(Ys,{className:"w-60",id:t.id,sortableType:a,column:t,children:v()})}function Ll({columnName:t}){const{setEditorFilterMode:a}=s.useEditorActions(),n=s.useEditorStore(l=>{var o,c;return(c=(o=l.card.queryConfig)==null?void 0:o.filterColumns)==null?void 0:c.find(i=>i.name===t)});function r(){(n==null?void 0:n.mode)==="exclude"?a(t,"include"):a(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((n==null?void 0:n.mode)==="exclude"?"exclude":"include")})}function Rl({open:t,setOpen:a,dateRange:n,setDateRange:r,containerClassName:l,inputClassName:o,title:c,onApply:i,onClear:u}){const d=s.useDashboardStore(m=>m.themeStyle);return e.jsx("div",{className:s.cn("grid gap-2",l),children:e.jsxs(s.Popover,{open:t,onOpenChange:a,children:[e.jsx(s.PopoverTrigger,{style:{borderRadius:d==null?void 0:d.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",!n&&"text-muted-foreground",o),children:[e.jsx(s.Calendar,{className:"mr-2 h-4 w-4"}),n!=null&&n.from?n.to?e.jsxs(e.Fragment,{children:[s.format(n.from,"LLL dd, y")," -"," ",s.format(n.to,"LLL dd, y")]}):s.format(n.from,"LLL dd, y"):e.jsx("span",{children:"Pick a date"})]})}),e.jsxs(s.PopoverContent,{style:{borderRadius:d==null?void 0:d.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:n==null?void 0:n.from,selected:n,onSelect:r,numberOfMonths:2}),e.jsxs("div",{className:"flex justify-end gap-2 px-4 py-3",children:[e.jsx(s.Button,{style:{borderRadius:d==null?void 0:d.controlInputRadius},size:"sm",variant:"outline",onClick:m=>{m.stopPropagation(),i(n),a(!1)},children:"Apply"}),e.jsx(s.Button,{style:{borderRadius:d==null?void 0:d.controlInputRadius},size:"sm",variant:"outline",onClick:u,children:"Clear"})]})]})]})})}function Ol({column:t,sortableType:a}){const[n,r]=I.useState(!1),{selectedConnectionId:l,selectedDatabaseName:o,selectedTableName:c}=s.useEditorAside(),i={column:t.name,sql:t.sql,id:t.name,connectionId:l,title:"",dataType:t.type},{isLoading:u,isFetching:d,isError:m,data:h}=s.useFilterQuery(i),f=h==null?void 0:h.records,{dateRange:g,setDateRange:j,initialDateRange:x}=s.useDateRangeFromRecords(f),{updateEditorFilterValue:b}=s.useEditorActions();function p(L){var w,y;const N={gte:(w=L==null?void 0:L.from)==null?void 0:w.toISOString(),lte:(y=L==null?void 0:L.to)==null?void 0:y.toISOString()};b(t.name,N)}function v(){b(t.name,null,!0),j(x)}function T(){return u||d?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"}):f?e.jsx(Rl,{title:i.title,open:n,inputClassName:"h-8",setOpen:r,dateRange:g,setDateRange:j,onApply:p,onClear:v}):e.jsx(s.Label,{className:"flex h-8 w-72 items-center bg-muted px-2",children:"No Data"})}return e.jsx(Ys,{className:"w-72",id:t.id,sortableType:a,column:t,children:T()})}function Bl({id:t,label:a,columns:n,previewColumns:r,sortableType:l}){var j,x;const{setNodeRef:o,isOver:c,over:i}=s.useDroppable({id:t}),u=s.useDndStore(b=>b.activeId),d={},m=c||((x=(j=i==null?void 0:i.data)==null?void 0:j.current)==null?void 0:x.type)===l;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 f(b){const p=s.isDateDataType(b.type);return b.id===Yt.id?e.jsx(Ys,{id:b.id,sortableType:l,column:b,children:e.jsx(Fl,{})},b.id):p?e.jsx(Ol,{droppableId:t,sortableType:l,column:b},b.id):e.jsx(Ml,{droppableId:t,sortableType:l,column:b},b.id)}const g=u?r:n;return e.jsx(s.SortableContext,{items:n==null?void 0:n.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:o,style:d,children:[e.jsx(s.Label,{className:"text-sm",children:a}),h(),e.jsx("div",{className:"flex flex-wrap items-center gap-4",children:g==null?void 0:g.map(b=>f(b))})]})})}function Fl(){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 Pl(){const t=s.useEditorStore(l=>{var o;return((o=l.card.queryConfig)==null?void 0:o.filterColumns)||[]}),a=s.useDndStore(l=>l.previewFilterColumns),{removeColumnFromFilterColumns:n}=s.useEditorActions();function r(l){n(l)}return e.jsx("section",{className:"size-full px-4 pb-4",children:e.jsx(Bl,{onRemoveColumn:r,sortableType:Bs,id:Os,label:"Filters",columns:t,previewColumns:a})})}function zl(){const t=s.useEditorStore(o=>o.card),a=s.useEditorStore(o=>o.showAIDialog),{setShowAIDialog:n}=s.useEditorActions(),{data:r,errorMessage: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(js,{}),!a&&e.jsxs(s.Button,{onClick:()=>n(!0),variant:"secondary",size:"sm",children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"Assistant"]}),e.jsx(Qt,{sql:r==null?void 0:r.sql,error: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(Us,{}),e.jsx(_s,{variant:"default"})]})]})}function Vl(){const t=I.useRef(null),a=I.useRef(null),n=s.useEditorStore(i=>i.isShowingVisual),r=s.useEditorStore(i=>i.showAIDialog),l=s.useEditorStore(i=>i.isDevMode);I.useEffect(()=>{var i,u,d,m;r?((i=t.current)==null||i.resize(0),(u=a.current)==null||u.resize(0)):((d=t.current)==null||d.resize(25),(m=a.current)==null||m.resize(25))},[r]);function o(){return e.jsxs(e.Fragment,{children:[e.jsx(s.ResizablePanel,{role:"query-section",className:"flex",minSize:20,defaultSize:40,children:e.jsx(Mr,{})}),e.jsx(s.ResizableHandle,{withHandle:!0}),e.jsx(s.ResizablePanel,{className:"pb-1",role:"visual-section",minSize:0,defaultSize:60,children:n&&!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(Nl,{})})}),!r&&e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:40,defaultSize:75,maxSize:100,children:e.jsx(cs,{})})]}):e.jsx(cs,{})})]})}function c(){return e.jsx(e.Fragment,{children:e.jsx("div",{className:"grow","data-biz-mode-container":"",children:n?e.jsxs(s.ResizablePanelGroup,{direction:"horizontal",children:[e.jsx(e.Fragment,{children:e.jsx(s.ResizablePanel,{ref:a,defaultSize:25,maxSize:30,children:e.jsx(Al,{})})}),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(zl,{}),e.jsx(Pl,{})]}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{minSize:60,defaultSize:80,children:e.jsx(cs,{})})]})})]}):e.jsx(cs,{})})})}return e.jsx(s.ResizablePanelGroup,{direction:"vertical",className:"min-h-[250px] min-w-full max-w-lg",children:l?o():c()})}function _l(t){s.useAIInteractionStore(q=>q.currentAIContext);const[a,n]=I.useState(""),[r,l]=I.useState(null),{authToken:o}=s.useSemaphorContext(),c=s.useEditorStore(q=>{var ee;return(ee=q==null?void 0:q.card)==null?void 0:ee.sql}),i=s.useEditorStore(q=>q.isDevMode),u=s.useEditorStore(q=>{var ee;return(ee=q==null?void 0:q.card)==null?void 0:ee.python}),{setCardPython:d,setCardSql:m,setRunSql:h,switchCardType:f,setQueryConfig:g}=s.useEditorActions(),j=s.useEditorStore(q=>q.currentAssitantScope)||[],x=s.useEditorStore(q=>q.userInputForAI),b=s.useEditorStore(q=>q.triggerAIRun),p=s.useEditorStore(q=>q.card),v=s.useEditorStore(q=>q.selectedDatabaseName),T=s.useEditorStore(q=>q.selectedTableName),L=s.useEditorStore(q=>q.selectedConnectionId),N=s.useEditorStore(q=>q.selectedSchemaName),w=s.useDashboardStore(q=>q.dashboard.aiScopeTables),{errorMessage:y,refetch:k,data:S}=s.useDashboardCardQuery(p),{setTriggerAIRun:R,setCurrentAssitantScope:C,setCardConfig:B}=s.useEditorActions(),{selectedDatamodelName:D,connectionType:E,selectedDatamodelId:A}=s.useEditorAside(),{messages:F,setMessages:M,regenerate:O,error:z,sendMessage:P,status:H,addToolResult:X,stop:Q,clearError:Y}=s.useChat({transport:new s.DefaultChatTransport({api:"https://semaphor.cloud/api/v1/assistant",headers:()=>({Authorization:`Bearer ${o==null?void 0:o.accessToken}`}),body:()=>{const q=s.useAIInteractionStore.getState();return{random:Math.random(),assistantId:"editor-assistant",isDevMode:i,aiContext:q.currentAIContext,reasoningEffort:q.reasoningEffort,showReasoning:q.showReasoning}},credentials:"omit",prepareSendMessagesRequest:({messages:q,body:ee})=>({body:{...ee,messages:s.cleanupIncompleteMessages(q)}})}),onError:q=>{console.log("on error",q)},onToolCall:K,onFinish(){n("")}});I.useEffect(()=>{b&&x&&(P({role:"user",parts:[{type:"text",text:x}]}),R(!1))},[b,x,P,R]);async function K({toolCall:q}){var ee,oe,W,J,re,de,Se,be,fe,se,te,ue,ve,rs,ls,os;if(["createChartFromSql","createForecast"].includes(q.toolName)){const Je=((ee=q.input)==null?void 0:ee.sql)??((oe=q.args)==null?void 0:oe.sql),Ae=((W=q.input)==null?void 0:W.python)??((J=q.args)==null?void 0:J.python),me=((re=q.input)==null?void 0:re.chartType)??((de=q.args)==null?void 0:de.chartType);f(me),m(Je),d(Ae),h(!0),X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",message:"Let the user know that chart is created"}})}else if(q.toolName==="getUserSql"){if(!c){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",message:"No SQL found"}});return}X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",sql:c,python:u||""}})}else if(q.toolName==="generateQueryConfig"){n("Generating query config...");const Je=((Se=q.input)==null?void 0:Se.chartType)??((be=q.args)==null?void 0:be.chartType),Ae=((fe=q.input)==null?void 0:fe.queryConfig)??((se=q.args)==null?void 0:se.queryConfig);((te=q.input)==null?void 0:te.cardConfig)??((ue=q.args)==null||ue.cardConfig),f(Je),B(Ae),m(void 0),d(void 0);const me=await k();if((ve=me==null?void 0:me.data)!=null&&ve.error){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"error",queryConfig:Ae,message:(rs=me==null?void 0:me.data)==null?void 0:rs.error.message}});return}if((ls=me==null?void 0:me.data)!=null&&ls.records){X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:Ae,message:"The data has been visualized"}});return}X({tool:q.toolName,toolCallId:q.toolCallId,output:{status:"success",queryConfig:Ae,message:"The data has been visualized",records:(os=me==null?void 0:me.data)==null?void 0:os.records}})}else n("Analyzing...")}function U(q){const ee=s.removeFromScopeArray(j,q);_(ee)}function _(q){const ee=s.sanitizeAIScope(q);C(ee),M(oe=>[...oe,{id:crypto.randomUUID(),role:"system",parts:[{type:"text",text:`Current scope of tables. Always use the table reference format when generating SQL | ${JSON.stringify(ee)}`}]}])}function V(){const q={databaseName:v||"",schemaName:N||"",tableName:T||"",datamodelId:A||"",datamodelName:s.resolveDatamodelName(D),connectionId:L||"",connectionType:E||""},ee=s.dedup([...j,q]);_(ee)}function $(){const q={databaseName:v||"",schemaName:N||"",tableName:T||"",datamodelName:s.resolveDatamodelName(D),connectionId:L||"",connectionType:E||"",datamodelId:A||""};if(!s.isInAiScopeArray([...w||[],...j],q)||j.length===0){const oe=s.dedup([...w||[],...j,q]).filter(W=>W.connectionId===q.connectionId);_(oe)}}const Z=!["ready","error"].includes(H),ne=s.getErrorMessage(z);return{messages:F,setMessages:M,sendMessage:P,regenerate:O,isLoading:Z,handleSetAIScope:$,handleAddCurrentTableToScope:V,removeFromCurrentSelections:U,currentAssitantScope:j,setCurrentAssitantScope:C,stop:Q,status:H,toolStatus:a,llmUsage:r,onFinish:t,errorMessage:ne,clearError:Y}}const Ul=[{title:"Help me write a query for",subtitle:"orders by month"},{title:"Create a bar chart for",subtitle:"sales by category"}];function ut(){const t=I.useRef(null),[a,n]=I.useState(!1),[r,l]=I.useState(s.isDevEnv),[o,c]=I.useState(!1),[i,u]=I.useState(!1),d=s.useCurrentAIContext(),{setCurrentAIContext:m}=s.useAIActions(),{clearQueue:h}=s.useQueueActions(),{clearFileAttachments:f}=s.useFileActions(),g=s.useFileAttachments("editor"),j=s.useDashboardStore(se=>se.dashboard.aiContext),x=s.useEditorStore(se=>se.card.dataSource),b=s.useEditorStore(se=>se.actions.setCardSql),p=s.useEditorStore(se=>se.actions.setRunSql),v=s.useEditorStore(se=>se.showAIDialog),T=s.useDashboardStore(se=>se.handleOpenAssistantProfile),{setShowAIDialog:L,setCardPython:N}=s.useEditorActions(),{setDataSource:w}=s.useEditorActions(),{assistantProfile:y}=s.useAssistantProfile(),{messages:k,setMessages:S,sendMessage:R,isLoading:C,stop:B,status:D,llmUsage:E,errorMessage:A,clearError:F}=_l(),[M,O]=I.useState(""),z=se=>{O(se.target.value)},P=se=>{se.preventDefault();const te=M.trim();if(!te&&g.length===0)return;const ue=[];te&&ue.push({type:"text",text:te}),g.forEach(ve=>{ve.data&&ue.push({type:"file",mediaType:ve.type,filename:ve.name,url:`data:${ve.type};base64,${ve.data}`})}),R({role:"user",parts:ue}),O(""),f("editor"),Z({force:!0})},{visibleMessages:H,hasMoreMessages:X,totalMessageCount:Q,loadMoreMessages:Y,resetMessageWindow:K}=s.useMessageWindow(k,{maxVisibleMessages:15,initialLoadCount:10,loadMoreCount:5}),{scrollRef:U,isAtBottom:_,hasNewMessages:V,newMessageCount:$,scrollToBottom:Z,handleScroll:ne,resetNewMessageCount:q}=s.useAutoScroll(H,{threshold:50,delay:0,dependencies:[D,k.length]});I.useEffect(()=>{var se;v&&((se=t.current)==null||se.focus(),m({selectedEntities:(x==null?void 0:x.selectedEntities)||[]}))},[v,x,m]),s.useAutoSubmitQueue({assistantType:"editor",status:D,isLoading:C,sendMessage:R});const{hasActiveTools:ee}=s.useActiveToolStatus(k);function oe(se,te){te==="sql"?(b(se),p(!0)):te==="python"&&(N(se),p(!0))}function W(){var se;(se=j==null?void 0:j.selectedEntities)==null||se[0],u(!0)}function J(){d.selectedEntities.length===0&&m({selectedEntities:(j==null?void 0:j.selectedEntities)||[]})}function re(se){J();const te={role:"user",parts:[{type:"text",text:se.title+" "+se.subtitle}]};R(te)}function de(se){J(),R({role:"user",parts:[{type:"text",text:se}]})}function Se(){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:a,onCheckedChange:n,children:"Token Usage"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:r,onCheckedChange:l,children:"Tool Invocations"}),e.jsx(s.DropdownMenuCheckboxItem,{checked:o,onCheckedChange:c,children:"System Message"})]})]})}function be(){return e.jsx("div",{"data-role":"header",children:e.jsx("div",{className:"text-lg font-semibold",children:"Assistant"})})}const fe=(M==null?void 0:M.length)===0&&(k==null?void 0:k.filter(se=>se.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:[be(),T&&e.jsx(s.Button,{variant:"outline",size:"sm",className:"h-7 p-2",onClick:T,children:(y==null?void 0:y.name)||"Default Profile"}),e.jsxs("div",{"data-role":"header-actions",className:"flex items-center",children:[Se(),s.isDevEnv,e.jsx(s.IconButton,{tooltip:"Add Context",className:"h-7 p-2 text-muted-foreground/50 hover:text-foreground",onClick:W,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:()=>{S([]),h("editor"),F(),K()},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:()=>{L(!1)},children:e.jsx(s.ArrowRightToLine,{className:"size-4"})})]})]}),e.jsx(s.CustomScrollArea,{ref:U,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:Y,className:"text-xs",children:["Load ",Math.min(5,Q-H.length)," more messages (",Q-H.length," hidden)"]})}),e.jsx(s.PrintMessages,{messages:H,showTools:r,handleRun:oe,showSystemMessage:o}),!ee&&e.jsx(s.AssistantStatus,{status:D,errorMessage:A})]})}),!_&&e.jsx("div",{className:"absolute bottom-24 right-8 z-10",children:e.jsxs(s.Button,{onClick:()=>{Z({force:!0}),q()},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:$>9?"9+":$})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[fe&&!y&&e.jsx(s.Placeholders,{onClick:re,placeholders:Ul}),e.jsx("div",{children:fe&&y&&e.jsx(s.SeedQuestions,{seedQuestions:y.seedQuestions||[],handleSeedQuestionClick:de})})]}),e.jsx(s.PendingMessagesDisplay,{assistantType:"editor",className:"mb-3"}),e.jsx(s.ChatInputWithContext,{ref:t,setInput:O,stop:B,input:M,handleInputChange:z,handleSubmit:se=>{J(),P(se),Z({force:!0})},isLoading:C,status:D,assistantType:"editor",onFocus:()=>{}})]}),E&&a&&e.jsx("div",{className:"flex h-8 items-center justify-between",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:["Usage: ",E.inputTokens," prompt tokens, ",E.outputTokens," ","completion tokens, ",E.totalTokens," total tokens"]})}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(x==null?void 0:x.selectedEntities)||[],open:i,onOpenChange:u,dataSource:x||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}const Gs=t=>{var C;const{updateCardConfig:a,updateGroupByColumn:n,updateMetricColumn:r,updatePivotByColumn:l,updateSortByColumn:o,removeGroupByColumn:c,removeMetricColumn:i,removePivotByColumn:u,removeSortByColumn:d}=s.useEditorActions(),m=s.useEditorStore(B=>B.card.type),h=t==null?void 0:t.id,f=I.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=I.useCallback((B,D)=>{if(h)switch(B){case"groupBy":{a(h,{groupByColumns:D});break}case"metrics":{a(h,{metricColumns:D});break}case"pivotBy":{a(h,{pivotByColumns:D});break}case"sortBy":{a(h,{sortByColumns:D});break}}},[h,a]),j=I.useCallback((B,D,E)=>{if(!h)return;const F=f(B)[D];if(F)switch(B){case"groupBy":n(h,F.id,{label:E});break;case"metrics":r(h,F.id,{label:E});break;case"pivotBy":l(h,F.id,{label:E});break;case"sortBy":o(h,F.id,{label:E});break}},[h,f,n,r,l,o]),x=I.useCallback((B,D)=>{if(!h)return;const A=f("metrics")[B];A&&r(h,A.id,{aggregate:D,label:s.getAggregationLabel(A.name,D)})},[h,f,r]),b=I.useCallback((B,D,E)=>{if(!h)return;const F=f("groupBy")[B];if(!F)return;const M={dateFormat:D};D==="custom"&&E?M.customFormat=E:M.customFormat=void 0,n(h,F.id,M)},[h,f,n]),p=I.useCallback((B,D)=>{if(!h)return;const A=f("groupBy")[B];A&&n(h,A.id,{granularity:D})},[h,f,n]),v=I.useCallback((B,D)=>{if(!h)return;const A=f("metrics")[B];A&&r(h,A.id,{aliasTemplate:D})},[h,f,r]),T=I.useCallback((B,D)=>{if(console.log("handleValueAliasesChange",B,D),!h)return;console.log("handleValueAliasesChange",B,D);const A=f("metrics")[B];A&&(console.log("handleValueAliasesChange",D),r(h,A.id,{valueAliases:D}))},[h,f,r]),L=I.useCallback(B=>{h&&a(h,{comparisonType:B})},[h,a]),N=I.useCallback(B=>{h&&a(h,{showTrendline:B})},[h,a]),w=I.useCallback(B=>{h&&a(h,{trendlineWindow:B})},[h,a]),y=I.useCallback(B=>{h&&a(h,{trendlineGranularity:B})},[h,a]),k=I.useCallback(B=>{h&&a(h,{targetValue:B})},[h,a]),S=I.useCallback(B=>{var z;if(!h)return;const D=[...f("groupBy"),...f("pivotBy"),...f("metrics"),...f("sortBy")],E=(z=t==null?void 0:t.config)==null?void 0:z.joinPlan,A=s.validateEntityConsistency(B,D,E);if(!A.isValid){A.showError&&s.showJoinRequiredNotification();return}const F=s.getSmartContainerForField(B,D),M=f(F);if(s.fieldAlreadyExists(B,M))return;const O=s.getNewField(B,F,M);O&&g(F,[...M,O])},[h,(C=t==null?void 0:t.config)==null?void 0:C.joinPlan,f,g]),R=I.useCallback((B,D)=>{if(!h)return;const A=f(B)[D];if(A){if(B!=="sortBy"){const F=f("sortBy"),M=F.filter(O=>!(O.name===A.name&&O.qualifiedEntityName===A.qualifiedEntityName));M.length!==F.length&&a(h,{sortByColumns:M})}switch(B){case"groupBy":c(h,A.id);break;case"metrics":i(h,A.id);break;case"pivotBy":u(h,A.id);break;case"sortBy":d(h,A.id);break}}},[h,f,c,i,u,d,a]);return{getFieldsForContainer:f,setFieldsForContainer:g,updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:p,handleAliasTemplateChange:v,handleValueAliasesChange:T,removeField:R,handleFieldClick:S,handleKpiComparisonTypeChange:L,handleKpiShowTrendlineChange:N,handleKpiTrendlineWindowChange:w,handleKpiTrendlineGranularityChange:y,handleKpiTargetValueChange:k,cardType:m}};function $l({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 ql({field:t}){const{attributes:a,listeners:n,setNodeRef:r,transform:l,transition:o,isDragging:c}=s.useSortable({id:t.id}),[i,u]=I.useState(!1),d=s.useEditorStore(j=>j.card),{handleFieldClick:m}=Gs(d),h={transform:s.CSS.Transform.toString(l),transition:o};s.getDataType(t.dataType);const f=j=>{const x=(j||"").toLowerCase();switch(s.getDataType(x)){case"number":return Te;case"date":return s.Calendar;case"boolean":return Ue;case"json":return Ze;case"geo":return es;default:return ye}},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(ye,{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(Te,{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(Ue,{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(Ze,{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(es,{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(ns,{className:"h-3 w-3"})}):null};return f(t.dataType),e.jsxs("div",{ref:r,style:h,...a,...n,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$1,{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-sm 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($l,{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(Ct,{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(fn,{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 Yl(){const[t,a]=I.useState(""),[n,r]=I.useState("all"),l=s.useEditorStore(T=>T.card.dataSource),{columns:o=[],columnGroups:c=[],isLoading:i,error:u}=s.useColumns(),d=o.filter(T=>T.name.toLowerCase().includes(t.toLowerCase())||T.dataType.toLowerCase().includes(t.toLowerCase())||T.qualifiedEntityName&&T.qualifiedEntityName.toLowerCase().includes(t.toLowerCase())),m=T=>{if(T.dataType==="number"||T.dataType==="integer"||T.dataType==="float"||T.dataType==="decimal"||T.dataType==="currency")return"metrics";const L=s.getDataType(T.dataType);return["date","string","boolean"].includes(L)?"dimensions":L==="number"?"metrics":"dimensions"},f=(n==="all"?d:d.filter(T=>m(T)===n)).reduce((T,L)=>{const N=L.qualifiedEntityName||"Other Fields";return T[N]||(T[N]={label:s.toLabel(L.entityName),fields:[]}),T[N].fields.push(L),T},{}),j=Object.keys(f),x=d.filter(T=>m(T)==="dimensions").length,b=d.filter(T=>m(T)==="metrics").length,p=d.filter(T=>m(T)==="calculated").length,v=d.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"})}):u?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:u.message||"Failed to load column data"})]}):!l||!l.selectedEntities||l.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:[o.length>0&&e.jsxs("div",{className:"relative mb-4",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:t,onChange:T=>a(T.target.value)})]}),v&&e.jsx(s.Tabs,{defaultValue:"all",value:n,onValueChange:T=>r(T),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:d.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(ns,{className:"size-4 shrink-0"}),e.jsx("span",{className:"ml-2 text-xs font-semibold",children:p})]})]})})]}),e.jsxs(s.CustomScrollArea,{className:"py-2",children:[e.jsx(s.Accordion,{type:"multiple",defaultValue:j,className:"space-y-2",children:Object.entries(f).map(([T,L])=>{const N=c.find(w=>w.entityName===T)||{entityName:T,label:L.label};return e.jsxs(s.AccordionItem,{value:T,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",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-primary",children:N.label||N.entityName}),e.jsx(s.Badge,{variant:"secondary",className:"rounded-full text-xs text-muted-foreground group-hover:bg-background",children:L.fields.length})]})}),e.jsx(s.AccordionContent,{className:"pb-2",children:e.jsx("div",{className:"space-y-1",children:L.fields.map(w=>e.jsx(ql,{field:w},w.id))})})]},T)})}),Object.keys(f).length===0&&o.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(f).length===0&&o.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 Gl(){return e.jsxs("div",{className:" h-full flex flex-col items-center",children:[" ",e.jsx(Yl,{})," "]})}function Kl({initialJoinPlan:t,availableDataSources:a}){const[n,r]=I.useState(t),[l,o]=I.useState(new Set),c=()=>{const w=n.joins.length>0?Math.max(...n.joins.map(k=>k.sequence))+1:1,y={id:`join-${Date.now()}`,source:{type:"table",name:"",database:"",schema:""},target:{type:"table",name:"",database:"",schema:""},joinType:"INNER",sequence:w,joinKeyGroups:[{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}]};r({...n,joins:[...n.joins,y]}),o(new Set([...l,y.id]))},i=w=>{r({...n,joins:n.joins.filter(y=>y.id!==w)}),o(new Set([...l].filter(y=>y!==w)))},u=(w,y)=>{var C,B;const k=n.joins.find(D=>D.id===w);if(!k)return;const S={...k,...y},R=n.joins.map(D=>D.id===w?S:D);if((C=S.source)!=null&&C.name&&((B=S.target)!=null&&B.name)&&S.joinKeyGroups[0].keys.length===0){const D=a.find(M=>{var O;return M.name===((O=S.source)==null?void 0:O.name)}),E=a.find(M=>{var O;return M.name===((O=S.target)==null?void 0:O.name)}),A={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:(E==null?void 0:E.name)||"",entityName:(E==null?void 0:E.name)||"",entityType:(E==null?void 0:E.type)||"table"},operator:"="},F=[...S.joinKeyGroups];F[0]={...F[0],keys:[A]},S.joinKeyGroups=F,R[R.findIndex(M=>M.id===w)]=S}r({...n,joins:R})};return{joinPlan:n,expandedJoins:l,setJoinPlan:r,addJoin:c,removeJoin:i,updateJoin:u,moveJoinUp:w=>{const y=n.joins.findIndex(k=>k.id===w);if(y>0){const k=[...n.joins],S={...k[y]},R={...k[y-1]};k[y]=R,k[y-1]=S,k.forEach((B,D)=>{B.sequence=D+1});const C={...n,joins:k};r(C)}},moveJoinDown:w=>{const y=n.joins.findIndex(k=>k.id===w);if(y<n.joins.length-1){const k=[...n.joins],S={...k[y]},R={...k[y+1]};k[y]=R,k[y+1]=S,k.forEach((B,D)=>{B.sequence=D+1});const C={...n,joins:k};r(C)}},toggleJoinExpansion:w=>{const y=new Set(l);y.has(w)?y.delete(w):y.add(w),o(y)},getAvailableSourceEntities:w=>{if(n.joins.length===0)return a;const y=n.joins.findIndex(S=>S.id===w);if(y===0)return a;const k=new Set;return n.baseEntity.name&&k.add(n.baseEntity.name),n.joins.slice(0,y).forEach(S=>{k.add(S.source.name),k.add(S.target.name)}),a.filter(S=>k.has(S.name))},getAvailableTargetEntities:w=>a.filter(y=>y.name!==w),addJoinKeyGroup:w=>{const y=n.joins.find(S=>S.id===w);if(!y)return;const k=[...y.joinKeyGroups,{id:"group-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),operator:"AND",keys:[]}];u(w,{joinKeyGroups:k})},updateGroupOperator:(w,y,k)=>{const S=n.joins.find(C=>C.id===w);if(!S)return;const R=[...S.joinKeyGroups];R[y]={...R[y],operator:k},u(w,{joinKeyGroups:R})},removeJoinKeyGroup:(w,y)=>{const k=n.joins.find(R=>R.id===w);if(!k)return;const S=[...k.joinKeyGroups];S.splice(y,1),u(w,{joinKeyGroups:S})},addJoinKey:(w,y)=>{const k=n.joins.find(D=>D.id===w);if(!k)return;const S=a.find(D=>D.name===k.source.name),R=a.find(D=>D.name===k.target.name),C=[...k.joinKeyGroups],B={id:`key-${Date.now()}`,source:{id:`source-${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"},target:{id:`target-${Date.now()}`,name:"",dataType:"",label:"",qualifiedFieldName:"",entityId:(R==null?void 0:R.name)||"",entityName:(R==null?void 0:R.name)||"",entityType:(R==null?void 0:R.type)||"table"},operator:"="};C[y]={...C[y],keys:[...C[y].keys,B]},u(w,{joinKeyGroups:C})},updateJoinKey:(w,y,k,S,R)=>{const C=n.joins.find(F=>F.id===w);if(!C)return;const B=a.find(F=>F.name===C.source.name),D=a.find(F=>F.name===C.target.name),E=[...C.joinKeyGroups],A=E[y].keys[k];S==="sourceColumnName"&&B?E[y].keys[k]={...A,source:{...A.source,name:R}}:S==="targetColumnName"&&D?E[y].keys[k]={...A,target:{...A.target,name:R}}:S==="operator"&&(E[y].keys[k]={...A,operator:R}),u(w,{joinKeyGroups:E})},removeJoinKey:(w,y,k)=>{const S=n.joins.find(C=>C.id===w);if(!S)return;const R=[...S.joinKeyGroups];R[y].keys.splice(k,1),u(w,{joinKeyGroups:R})},generateSQLPreview:()=>{const w=[...n.joins].sort((S,R)=>S.sequence-R.sequence),y=n.baseEntity;if(!y.name)return"SELECT * FROM table -- Please select a base entity";let k=`SELECT *
340
+ FROM ${y.name}`;return w.forEach(S=>{const R=a.find(D=>D.name===S.target.name);if(!R)return;const C=S.joinKeyGroups.filter(D=>D.keys&&D.keys.length>0).map(D=>{const E=D.keys.filter(A=>{var F,M,O,z;return((F=A.source)==null?void 0:F.name)&&((M=A.target)==null?void 0:M.name)&&((O=A.source)==null?void 0:O.entityName)&&((z=A.target)==null?void 0:z.entityName)}).map(A=>`${A.source.entityName}.${A.source.name} ${A.operator} ${A.target.entityName}.${A.target.name}`);return E.length>1?`(${E.join(` ${D.operator} `)})`:E[0]}).filter(Boolean),B=C.length>1?C.join(" OR "):C[0]||"condition_here";k+=`
341
341
  ${S.joinType} JOIN ${R.name}
342
- ON ${F}`}),k},isValidConfiguration:()=>!(!n.baseEntity.name||n.joins.some(S=>!S.source.name||!S.target.name)||n.joins.some(S=>S.joinKeyGroups.some(R=>R.keys.length===0))||n.joins.some(S=>S.joinKeyGroups.some(R=>R.keys.some(C=>!C.source.name||!C.target.name||!C.operator))))}}function Hl({joinPlan:t,availableDataSources:a,onSave:n,onRemove:r,onCancel:l}){const{setCardConfig:o}=s.useEditorActions();s.useEditorStore(C=>C.card.config);const{columnGroups:c}=s.useColumns(),{joinPlan:i,expandedJoins:u,setJoinPlan:d,addJoin:m,removeJoin:h,updateJoin:f,moveJoinUp:g,moveJoinDown:j,toggleJoinExpansion:x,getAvailableSourceEntities:b,getAvailableTargetEntities:p,addJoinKeyGroup:v,updateGroupOperator:T,removeJoinKeyGroup:L,addJoinKey:N,updateJoinKey:w,removeJoinKey:y,generateSQLPreview:k,isValidConfiguration:S}=Kl({initialJoinPlan:t,availableDataSources:a}),R=C=>{const F=c.find(D=>D.entityName===C);return(F==null?void 0:F.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:C=>{const F=a.find(D=>D.name===C);d({...i,baseEntity:{connectionId:(F==null?void 0:F.connectionId)||"",connectionType:(F==null?void 0:F.connectionType)||"none",type:(F==null?void 0:F.type)||"table",name:C,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 base entity..."})}),e.jsx(s.SelectContent,{children:a.map(C=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:C.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:C.type}),C.name,e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]})},C.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:k()})]}),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(C=>{const F=a.find(A=>A.name===C.source.name),D=a.find(A=>A.name===C.target.name),E=u.has(C.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:C.sequence}),e.jsxs(s.CardTitle,{className:"text-sm",children:["Join ",C.sequence,F&&D&&e.jsxs("span",{className:"ml-2 font-normal text-gray-600",children:["(",F.name," → ",D.name,")"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>g(C.id),disabled:C.sequence===1,children:e.jsx(s.ArrowUp,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>j(C.id),disabled:C.sequence===i.joins.length,children:e.jsx(s.ArrowDown,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>x(C.id),children:E?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(C.id),children:e.jsx(s.X,{className:"h-4 w-4"})})]})]})}),E&&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:C.source.name,onValueChange:A=>{const B=a.find(M=>M.name===A);f(C.id,{source:{connectionId:(B==null?void 0:B.connectionId)||"",connectionType:(B==null?void 0:B.connectionType)||"none",type:(B==null?void 0:B.type)||"table",name:A,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 source..."})}),e.jsx(s.SelectContent,{children:b(C.id).map(A=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:A.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:A.type}),A.name]})},A.name))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Join Type"}),e.jsxs(s.Select,{value:C.joinType,onValueChange:A=>f(C.id,{joinType:A}),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:C.target.name,onValueChange:A=>{const B=a.find(M=>M.name===A);f(C.id,{target:{connectionId:(B==null?void 0:B.connectionId)||"",connectionType:(B==null?void 0:B.connectionType)||"none",type:(B==null?void 0:B.type)||"table",name:A,database:B==null?void 0:B.database,schema:B==null?void 0:B.schema}})},disabled:!C.source.name,children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Select target..."})}),e.jsx(s.SelectContent,{children:C.source.name?p(C.source.name).map(A=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:A.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:A.type}),A.name,A.name===C.source.name&&e.jsx(s.Badge,{variant:"outline",className:"text-xs text-yellow-600",children:"(Self-join)"})]})},A.name)):[]})]})]})]}),C.source.name&&C.target.name&&F&&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:()=>v(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition Group"]})]}),C.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:C.joinKeyGroups.map((A,B)=>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 ",B+1]}),B>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:A.operator,onValueChange:M=>T(C.id,B,M),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:()=>L(C.id,B),children:e.jsx(s.Trash2,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[A.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:A.keys.map((M,O)=>e.jsxs("div",{className:"flex flex-col items-start gap-2 rounded-md border p-2 sm:flex-row sm:items-center",children:[O>0&&e.jsx("div",{className:"self-center rounded-md bg-gray-100 px-2 py-1 text-xs font-medium",children:A.operator}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:flex-1",children:e.jsxs(s.Select,{value:M.source.name,onValueChange:z=>w(C.id,B,O,"sourceColumnName",z),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Source column"})}),e.jsx(s.SelectContent,{children:R(C.source.name).map(z=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:z.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsx("span",{children:z.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:z.dataType})]})},z.name))})]})}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:w-20",children:e.jsxs(s.Select,{value:M.operator,onValueChange:z=>w(C.id,B,O,"operator",z),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:M.target.name,onValueChange:z=>w(C.id,B,O,"targetColumnName",z),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Target column"})}),e.jsx(s.SelectContent,{children:R(C.target.name).map(z=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:z.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between hover:bg-muted",children:[e.jsx("span",{children:z.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:z.dataType})]})},z.name))})]})}),e.jsx(s.Button,{type:"button",variant:"ghost",size:"sm",className:"self-center",onClick:()=>y(C.id,B,O),children:e.jsx(s.X,{className:"size-3.5"})})]},M.id||O))}),e.jsxs(s.Button,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>N(C.id,B),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition"]})]})]},A.id))})]})]})]},C.id)})})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t pt-4",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>{r(),l()},children:"Remove All"}),e.jsx(s.Button,{variant:"outline",onClick:l,children:"Cancel"}),e.jsx(s.Button,{onClick:()=>n(i),disabled:!S(),children:"Save"})]})]})}function mt({children:t,open:a,onOpenChange:n,joinPlan:r,availableDataSources:l,onRemove:o,onSave:c,onCancel:i}){return e.jsxs(s.Dialog,{open:a,onOpenChange:n,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(Hl,{joinPlan:r,availableDataSources:l,onSave:c,onCancel:i,onRemove:o})]}),t]})}function Ql({joins:t,baseEntityId:a,availableDataSources:n,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 l=[...t].sort((c,i)=>c.sequence-i.sequence),o=n.find(c=>c.name===a);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:o==null?void 0:o.type}),e.jsx("span",{className:"text-xs font-medium",children:o==null?void 0:o.name}),e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]}),l.map(c=>{const i=n.find(u=>u.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((l,o)=>l.sequence-o.sequence).map((l,o)=>{const c=n.find(u=>u.name===l.source.name),i=n.find(u=>u.name===l.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:o+1}),e.jsx(s.Badge,{variant:"outline",className:"shrink-0 text-xs",children:l.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:[l.joinKeyGroups.reduce((u,d)=>u+d.keys.length,0)," ","condition",l.joinKeyGroups.reduce((u,d)=>u+d.keys.length,0)>1?"s":""]})]},l.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 Wl(){var m,h;const t=s.useEditorStore(f=>f.card),a=s.useEditorStore(f=>f.actions.updateCardConfig),n=((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,l]=I.useState(!1),o=((h=t==null?void 0:t.dataSource)==null?void 0:h.selectedEntities)||[],c=f=>{a(t.id,{...t==null?void 0:t.config,joinPlan:f}),l(!1)},i=()=>{a(t.id,{...t==null?void 0:t.config,joinPlan:void 0})},u=()=>{l(!1)},d=()=>{const f=[...n.joins].sort((x,b)=>x.sequence-b.sequence),g=n.baseEntity;if(!g.name)return"SELECT * FROM table -- Please select a base entity";let j=`SELECT *
342
+ ON ${B}`}),k},isValidConfiguration:()=>!(!n.baseEntity.name||n.joins.some(S=>!S.source.name||!S.target.name)||n.joins.some(S=>S.joinKeyGroups.some(R=>R.keys.length===0))||n.joins.some(S=>S.joinKeyGroups.some(R=>R.keys.some(C=>!C.source.name||!C.target.name||!C.operator))))}}function Hl({joinPlan:t,availableDataSources:a,onSave:n,onRemove:r,onCancel:l}){const{setCardConfig:o}=s.useEditorActions();s.useEditorStore(C=>C.card.config);const{columnGroups:c}=s.useColumns(),{joinPlan:i,expandedJoins:u,setJoinPlan:d,addJoin:m,removeJoin:h,updateJoin:f,moveJoinUp:g,moveJoinDown:j,toggleJoinExpansion:x,getAvailableSourceEntities:b,getAvailableTargetEntities:p,addJoinKeyGroup:v,updateGroupOperator:T,removeJoinKeyGroup:L,addJoinKey:N,updateJoinKey:w,removeJoinKey:y,generateSQLPreview:k,isValidConfiguration:S}=Kl({initialJoinPlan:t,availableDataSources:a}),R=C=>{const B=c.find(D=>D.entityName===C);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:C=>{const B=a.find(D=>D.name===C);d({...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:C,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:a.map(C=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:C.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:C.type}),C.name,e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]})},C.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:k()})]}),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(C=>{const B=a.find(A=>A.name===C.source.name),D=a.find(A=>A.name===C.target.name),E=u.has(C.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:C.sequence}),e.jsxs(s.CardTitle,{className:"text-sm",children:["Join ",C.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(C.id),disabled:C.sequence===1,children:e.jsx(s.ArrowUp,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>j(C.id),disabled:C.sequence===i.joins.length,children:e.jsx(s.ArrowDown,{className:"h-4 w-4"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>x(C.id),children:E?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(C.id),children:e.jsx(s.X,{className:"h-4 w-4"})})]})]})}),E&&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:C.source.name,onValueChange:A=>{const F=a.find(M=>M.name===A);f(C.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:A,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(C.id).map(A=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:A.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:A.type}),A.name]})},A.name))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{children:"Join Type"}),e.jsxs(s.Select,{value:C.joinType,onValueChange:A=>f(C.id,{joinType:A}),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:C.target.name,onValueChange:A=>{const F=a.find(M=>M.name===A);f(C.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:A,database:F==null?void 0:F.database,schema:F==null?void 0:F.schema}})},disabled:!C.source.name,children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Select target..."})}),e.jsx(s.SelectContent,{children:C.source.name?p(C.source.name).map(A=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:A.name,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:A.type}),A.name,A.name===C.source.name&&e.jsx(s.Badge,{variant:"outline",className:"text-xs text-yellow-600",children:"(Self-join)"})]})},A.name)):[]})]})]})]}),C.source.name&&C.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:()=>v(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition Group"]})]}),C.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:C.joinKeyGroups.map((A,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:A.operator,onValueChange:M=>T(C.id,F,M),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:()=>L(C.id,F),children:e.jsx(s.Trash2,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[A.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:A.keys.map((M,O)=>e.jsxs("div",{className:"flex flex-col items-start gap-2 rounded-md border p-2 sm:flex-row sm:items-center",children:[O>0&&e.jsx("div",{className:"self-center rounded-md bg-gray-100 px-2 py-1 text-xs font-medium",children:A.operator}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:flex-1",children:e.jsxs(s.Select,{value:M.source.name,onValueChange:z=>w(C.id,F,O,"sourceColumnName",z),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Source column"})}),e.jsx(s.SelectContent,{children:R(C.source.name).map(z=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:z.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsx("span",{children:z.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:z.dataType})]})},z.name))})]})}),e.jsx("div",{className:"mb-2 w-full sm:mb-0 sm:w-20",children:e.jsxs(s.Select,{value:M.operator,onValueChange:z=>w(C.id,F,O,"operator",z),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:M.target.name,onValueChange:z=>w(C.id,F,O,"targetColumnName",z),children:[e.jsx(s.SelectTrigger,{children:e.jsx(s.SelectValue,{placeholder:"Target column"})}),e.jsx(s.SelectContent,{children:R(C.target.name).map(z=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:z.name,children:e.jsxs("div",{className:"flex w-full items-center justify-between hover:bg-muted",children:[e.jsx("span",{children:z.name}),e.jsx(s.Badge,{variant:"outline",className:"ml-2 text-xs",children:z.dataType})]})},z.name))})]})}),e.jsx(s.Button,{type:"button",variant:"ghost",size:"sm",className:"self-center",onClick:()=>y(C.id,F,O),children:e.jsx(s.X,{className:"size-3.5"})})]},M.id||O))}),e.jsxs(s.Button,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>N(C.id,F),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Condition"]})]})]},A.id))})]})]})]},C.id)})})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t pt-4",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>{r(),l()},children:"Remove All"}),e.jsx(s.Button,{variant:"outline",onClick:l,children:"Cancel"}),e.jsx(s.Button,{onClick:()=>n(i),disabled:!S(),children:"Save"})]})]})}function mt({children:t,open:a,onOpenChange:n,joinPlan:r,availableDataSources:l,onRemove:o,onSave:c,onCancel:i}){return e.jsxs(s.Dialog,{open:a,onOpenChange:n,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(Hl,{joinPlan:r,availableDataSources:l,onSave:c,onCancel:i,onRemove:o})]}),t]})}function Ql({joins:t,baseEntityId:a,availableDataSources:n,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 l=[...t].sort((c,i)=>c.sequence-i.sequence),o=n.find(c=>c.name===a);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:o==null?void 0:o.type}),e.jsx("span",{className:"text-xs font-medium",children:o==null?void 0:o.name}),e.jsx(s.Badge,{variant:"outline",className:"text-xs text-green-600",children:"BASE"})]}),l.map(c=>{const i=n.find(u=>u.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((l,o)=>l.sequence-o.sequence).map((l,o)=>{const c=n.find(u=>u.name===l.source.name),i=n.find(u=>u.name===l.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:o+1}),e.jsx(s.Badge,{variant:"outline",className:"shrink-0 text-xs",children:l.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:[l.joinKeyGroups.reduce((u,d)=>u+d.keys.length,0)," ","condition",l.joinKeyGroups.reduce((u,d)=>u+d.keys.length,0)>1?"s":""]})]},l.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 Wl(){var m,h;const t=s.useEditorStore(f=>f.card),a=s.useEditorStore(f=>f.actions.updateCardConfig),n=((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,l]=I.useState(!1),o=((h=t==null?void 0:t.dataSource)==null?void 0:h.selectedEntities)||[],c=f=>{a(t.id,{...t==null?void 0:t.config,joinPlan:f}),l(!1)},i=()=>{a(t.id,{...t==null?void 0:t.config,joinPlan:void 0})},u=()=>{l(!1)},d=()=>{const f=[...n.joins].sort((x,b)=>x.sequence-b.sequence),g=n.baseEntity;if(!g.name)return"SELECT * FROM table -- Please select a base entity";let j=`SELECT *
343
343
  FROM ${g.name}`;return f.forEach(x=>{const b=o.find(T=>T.name===x.target.name);if(!b)return;const p=x.joinKeyGroups.filter(T=>T.keys&&T.keys.length>0).map(T=>{const L=T.keys.filter(N=>{var w,y,k,S;return((w=N.source)==null?void 0:w.name)&&((y=N.target)==null?void 0:y.name)&&((k=N.source)==null?void 0:k.entityName)&&((S=N.target)==null?void 0:S.entityName)}).map(N=>`${N.source.entityName}.${N.source.name} ${N.operator} ${N.target.entityName}.${N.target.name}`);return L.length>1?`(${L.join(` ${T.operator} `)})`:L[0]}).filter(Boolean),v=p.length>1?p.join(" OR "):p[0]||"condition_here";j+=`
344
344
  ${x.joinType} JOIN ${b.name}
345
- ON ${v}`}),j};return o.length<2?null:e.jsx(e.Fragment,{children:e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[n.joins.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-6 text-xs font-semibold",onClick:()=>l(!0),children:[e.jsx(s.Link,{className:s.cn("mr-1 h-3 w-3",{"text-blue-500":n.joins.length>0,"text-gray-500":n.joins.length===0})}),"Join",n.joins.length>1?"s":""," (",n.joins.length,")"]})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-md overflow-hidden p-0",children:e.jsx(Ql,{joins:n.joins,baseEntityId:n.baseEntity.name,availableDataSources:o,generateSQLPreview:d})})]})}),e.jsx(mt,{open:r,onOpenChange:l,joinPlan:n,availableDataSources:o,onSave:c,onCancel:u,onRemove:i,children:e.jsx("div",{})})]}),n.joins.length===0&&e.jsx(mt,{open:r,onOpenChange:l,joinPlan:n,availableDataSources:o,onSave:c,onCancel:u,onRemove:i,children:e.jsxs(s.Button,{onClick:()=>l(!0),variant:"outline",size:"sm",className:"w-full",children:[e.jsx(s.Link,{className:"mr-3 size-4"}),"Configure Joins"]})})]})})})}function Jl({open:t,onOpenChange:a}){const[n,r]=I.useState([]),{updateDataSource:l}=s.useEditorActions(),o=s.useDashboardStore(x=>x.dashboard.aiContext),c=(o==null?void 0:o.selectedEntities)||[];I.useEffect(()=>{t&&r([])},[t]);const i=x=>{r(b=>b.some(v=>v.name===x.name&&v.type===x.type)?b.filter(v=>!(v.name===x.name&&v.type===x.type)):[...b,x])},u=()=>{r([...c])},d=()=>{r([])},m=()=>{if(n.length===0)return;const x=n[0],b=x.connectionId||"",p=x.connectionType||"",T=n.some(N=>N.type==="dataset")?"semanticDomain":"database";l({connectionId:b,connectionType:p,mode:T,selectedEntities:n}),a(!1)},h=x=>{switch(x.type){case"table":return e.jsx(s.Table,{className:"h-4 w-4"});case"view":return e.jsx(gn,{className:"h-4 w-4"});case"model":return e.jsx(za,{className:"h-4 w-4"});case"dataset":return e.jsx(s.Database,{className:"h-4 w-4"});case"file":case"url":case"upload":return e.jsx(s.FileText,{className:"h-4 w-4"});default:return e.jsx(s.Database,{className:"h-4 w-4"})}},f=x=>"label"in x&&x.label?x.label:x.name,g=x=>{if("description"in x&&x.description)return x.description;const b=[];return x.database&&b.push(x.database),x.schema&&b.push(x.schema),x.name&&b.push(x.name),b.join(".")},j=x=>n.some(b=>b.name===x.name&&b.type===x.type);return c.length===0?e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"max-w-md",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"No Data Available"}),e.jsx(s.DialogDescription,{children:"No entities are currently available in the AI context. Please add some data sources to the dashboard first."})]}),e.jsx(s.DialogFooter,{children:e.jsx(s.Button,{onClick:()=>a(!1),children:"Close"})})]})}):e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"flex max-w-2xl flex-col",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Select Data to Analyze"}),e.jsx(s.DialogDescription,{children:"Choose entities from the dashboard's context"})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"sm",onClick:u,disabled:n.length===c.length,children:"Select All"}),e.jsx(s.Button,{variant:"outline",size:"sm",onClick:d,disabled:n.length===0,children:"Clear All"})]}),e.jsxs(s.Badge,{variant:"secondary",children:[n.length," of ",c.length," selected"]})]}),e.jsx(s.Separator,{}),e.jsx(s.ScrollArea,{className:"h-64",children:e.jsx("div",{className:"space-y-2",children:c.map((x,b)=>e.jsxs("div",{className:s.cn("flex items-center gap-3 rounded-lg border p-3 transition-colors hover:bg-muted/50",j(x)&&"border-primary bg-primary/5"),children:[e.jsx(s.Checkbox,{checked:j(x),onCheckedChange:()=>i(x)}),e.jsx("div",{className:"flex items-center gap-2 text-muted-foreground",children:h(x)}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate font-medium",children:f(x)}),e.jsx("div",{className:"truncate text-sm text-muted-foreground",children:g(x)})]}),e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:x.type})]},`${x.type}-${x.name}-${b}`))})})]}),e.jsx(s.DialogFooter,{children:e.jsx("div",{className:"flex w-full justify-between",children:e.jsxs("div",{className:"flex grow justify-end gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsxs(s.Button,{onClick:m,disabled:n.length===0,children:["Select"," ",n.length>0?`(${n.length})`:""]})]})})})]})})}function Xl({entity:t,title:a,maxDetails:n=10}){const l=s.getEntityDetails(t).slice(0,n),o=l.find(i=>i.label==="Description"),c=l.filter(i=>i.label==="Description"?!1:!["Connection","Database","Schema"].includes(i.label));return e.jsx(s.TooltipContent,{side:"top",className:"ml-5 max-w-xs",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-sm font-medium",children:a||s.getDisplayName(t)}),o&&e.jsxs("div",{className:"border-t border-border pt-2",children:[e.jsx("div",{className:"mb-1 text-xs text-muted-foreground",children:"Description:"}),e.jsx("div",{className:"text-xs leading-relaxed",children:o.value})]}),c.length>0&&e.jsx("div",{className:"space-y-0.5",children:c.map((i,u)=>e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsxs("span",{className:"mr-2 text-muted-foreground",children:[i.label,":"]}),e.jsx("span",{className:"font-mono",children:i.value})]},u))})]})})}function Zl({entities:t}){return e.jsx(s.TooltipContent,{side:"top",className:"ml-5 max-w-xs",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"text-sm font-medium",children:[t.length," more entities"]}),e.jsx("div",{className:"space-y-1",children:t.map((a,n)=>{const r=s.getEntityDetails(a),l=r.find(c=>c.label==="Description"),o=r.filter(c=>c.label==="Description"?!1:!["Connection","Database","Schema"].includes(c.label)).slice(0,3);return e.jsxs("div",{className:"border-b border-border pb-1 last:border-b-0",children:[e.jsx("div",{className:"text-xs font-medium",children:s.getDisplayName(a)}),l&&e.jsxs("div",{className:"mb-1 mt-1",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Description:"}),e.jsx("div",{className:"text-xs leading-relaxed",children:l.value})]}),o.length>0&&e.jsx("div",{className:"mt-1 space-y-0.5",children:o.map((c,i)=>e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsxs("span",{className:"mr-2 text-muted-foreground",children:[c.label,":"]}),e.jsx("span",{className:"font-mono",children:c.value})]},i))})]},`remaining-${a.type}-${a.name}-${n}`)})})]})})}function eo({isVisible:t,onToggleVisibility:a}){const[n,r]=I.useState(!1),[l,o]=I.useState(!1),[c,i]=I.useState(!0),u=s.useEditorStore(f=>f.card.dataSource);Ie();const{updateDataSource:d}=s.useEditorActions(),m={connectionId:"",connectionType:"",mode:"database",selectedEntities:[]},h={...m,...u,selectedEntities:(u==null?void 0:u.selectedEntities)||[]};return e.jsxs("div",{className:s.cn("flex flex-col overflow-hidden bg-background transition-all duration-300 ease-in-out",{"w-[325px]":t,"w-0":!t}),children:[e.jsxs("div",{children:[e.jsx("div",{className:s.cn("p-4 px-6",{"pb-0":!c}),children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{className:"flex cursor-pointer items-center gap-2",children:[e.jsx("h2",{className:"text-brand-100 font-semibold",children:"Data Source"}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>i(!c),className:"h-6 w-6 p-0",children:c?e.jsx(s.ChevronDown,{className:"h-4 w-4"}):e.jsx(s.ChevronRight,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",onClick:a,title:"Hide Data Source Panel",children:e.jsx(s.EyeOff,{className:"h-3.5 w-3.5"})}),e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7",onClick:()=>r(!0),children:[e.jsx(s.Plus,{className:"mr-1 h-3.5 w-3.5"}),"Add"]})]})]})}),e.jsxs("div",{className:`overflow-hidden px-6 ${c?"max-h-96 space-y-4":"max-h-0 py-0 opacity-0"}`,children:[h.selectedEntities.length>0&&e.jsx(s.TooltipProvider$1,{children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[h.selectedEntities.slice(0,3).map((f,g)=>e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Badge,{variant:"secondary",className:"group relative cursor-pointer pr-6 text-xs transition-colors hover:border-red-200 hover:bg-red-50 dark:hover:border-red-800 dark:hover:bg-red-950",children:[s.getDisplayName(f),e.jsx("button",{onClick:j=>{j.stopPropagation();const x=h.selectedEntities.filter(b=>!(b.name===f.name&&b.type===f.type));d({...m,...u,selectedEntities:x})},className:"absolute right-1 top-1/2 -translate-y-1/2 rounded-full p-0.5 hover:bg-red-100",children:e.jsx(s.X,{className:"h-2.5 w-2.5 group-hover:text-red-500"})})]})}),e.jsx(Xl,{entity:f})]},`${f.type}-${f.name}-${g}`)),h.selectedEntities.length>3&&e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Badge,{variant:"outline",className:"text-xs",children:["+",h.selectedEntities.length-3," more"]})}),e.jsx(Zl,{entities:h.selectedEntities.slice(3)})]})]})}),e.jsx(Wl,{})]})]}),e.jsx(Gl,{}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(u==null?void 0:u.selectedEntities)||[],dialogMode:"dataSource",open:n,onOpenChange:r,dataSource:h,fallbackDataSource:m}),e.jsx(Jl,{open:l,onOpenChange:o})]})}const so="chart-selector-standard-first";function to(){const[t,a]=s.useLocalStorageState(so,!0);return{standardFirst:t,updatePreference:a}}const ht=({pluginVisual:t,index:a,onSelect:n})=>{const r=ys(t.icon||""),l=t.name.charAt(0).toUpperCase(),o=s.getAutoDetectedChartIcon(t.name);return e.jsx(s.CommandItem,{value:`${t.name} custom visual plugin component`,onSelect:n,className:"group flex items-center gap-2",children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[r?e.jsx(r,{className:"h-4 w-4"}):o||e.jsx("div",{className:"flex h-4 w-4 items-center justify-center rounded bg-muted text-xs font-medium",children:l}),e.jsx("span",{children:t.name})]}),e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{tabIndex:0,className:"opacity-0 outline-none transition-opacity group-hover:opacity-100",children:e.jsx(s.Info,{className:"ml-1 h-3.5 w-3.5 text-muted-foreground"})})}),e.jsx(s.TooltipContent,{side:"right",children:t.pluginName})]})]})},`${t.url}-${t.name}-${a}`)},xt=["default","standardPlugin","customPlugin"];function ao({selectedChart:t,onChartChange:a}){var L;const[n,r]=I.useState(!1),{data:l}=Zt();to();const c=((L=s.useEditorStore(N=>N.card).customCardPreferences)==null?void 0:L.url)||"";Ps(c);const{setCardType:i,setCardPreferences:u,setIsDevMode:d}=s.useEditorStore(N=>N.actions),{setCardCustomCfg:m,setCustomCardPreferences:h,setQueryConfig:f}=s.useEditorActions(),[g,j]=s.useLocalStorageState("chart-section-active",null),x=I.useMemo(()=>g?[g,...xt.filter(N=>N!==g)]:xt,[g]);function b(N){m(null),u({}),i(N),["custom","text","map"].includes(N)&&(d(!0),f(void 0)),a(N),r(!1)}function p(N){m(null),u({}),i("custom"),h({type:"component",visualType:"single",url:N.url,componentName:N.name,icon:N.icon,pluginChartType:N.chartType}),f(void 0),a("custom"),r(!1)}const v=()=>{var w;if(t==="custom"){const y=s.useEditorStore.getState().card;return((w=y==null?void 0:y.customCardPreferences)==null?void 0:w.componentName)||"Custom Visual"}const N=s.chartTypes.find(y=>y.id===t);return(N==null?void 0:N.label)||"Select chart type"},T=()=>{var w,y;if(t==="custom"){const k=s.useEditorStore.getState().card,S=(w=k==null?void 0:k.customCardPreferences)==null?void 0:w.icon,R=(y=k==null?void 0:k.customCardPreferences)==null?void 0:y.componentName;if(S&&R)return e.jsx(no,{icon:S,componentName:R});if(R){const C=s.getAutoDetectedChartIcon(R);if(C)return C}return e.jsx(ss,{className:"h-4 w-4"})}const N=s.chartTypes.find(k=>k.id===t);if(N){const k=N.icon;return e.jsx(k,{className:"h-4 w-4"})}return e.jsx(ss,{className:"h-4 w-4"})};return e.jsx("div",{className:"mb-6",children:e.jsxs(s.Popover,{open:n,onOpenChange:r,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":n,className:"w-full justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[T(),e.jsx("span",{children:v()})]}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"w-[300px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search chart types..."}),e.jsxs(s.CommandList,{className:"mb-2 max-h-[300px]",children:[e.jsx(s.CommandEmpty,{children:"No chart type found."}),x.map(N=>{if(N==="default")return e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"flex items-center gap-2",children:"Default Visuals"})}),e.jsx(s.TooltipContent,{side:"right",children:"These are the standard visuals available in Semaphor"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="default",onCheckedChange:w=>j(w?"default":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:s.chartTypes.map(w=>{const y=w.icon;return e.jsx(s.CommandItem,{value:`${w.label} ${w.id} chart graph visualization`,onSelect:()=>b(w.id),className:"flex items-center gap-2",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{className:"h-4 w-4"}),e.jsx("span",{children:w.label})]})},w.id)})},"default");if(N==="standardPlugin"){const w=l.filter(y=>y.pluginType==="standard");return w.length?e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsx("p",{children:"Standard Visuals"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="standardPlugin",onCheckedChange:y=>j(y?"standardPlugin":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:w.filter(y=>y.componentType==="chart").map((y,k)=>e.jsx(ht,{pluginVisual:y,index:k,onSelect:()=>p(y)},`${y.url}-${y.name}-${k}`))},"standardPlugin"):null}if(N==="customPlugin"){const w=l.filter(y=>y.pluginType==="custom");return w.length?e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("span",{className:"flex items-center gap-2",children:["Custom Visuals",e.jsx(s.Info,{className:"h-3.5 w-3.5 text-muted-foreground"})]})}),e.jsx(s.TooltipContent,{side:"right",children:"External visuals that are specific to your project"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="customPlugin",onCheckedChange:y=>j(y?"customPlugin":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:w.map((y,k)=>e.jsx(ht,{pluginVisual:y,index:k,onSelect:()=>p(y)},`${y.url}-${y.name}-${k}`))},"customPlugin"):null}return null})]})]})})]})})}const no=({icon:t,componentName:a})=>{const n=ys(),r=s.getAutoDetectedChartIcon(a);return n?e.jsx(n,{className:"h-4 w-4"}):r||e.jsx(ss,{className:"h-4 w-4"})},ro=[{id:"table",icon:s.Table2,label:"Table"},{id:"bar",icon:s.ChartColumnIncreasing,label:"Bar Chart"},{id:"line",icon:s.ChartLine,label:"Line Chart"},{id:"stackedBar",icon:s.ChartColumnStacked,label:"Stacked Bar",requiresPivot:!0},{id:"pie",icon:s.ChartPie,label:"Pie Chart"},{id:"doughnut",icon:s.Donut,label:"Donut Chart"},{id:"kpi",icon:s.TiSortNumerically,label:"KPI"}];function lo({selectedChart:t,onChartChange:a}){var l;const n=s.useEditorStore(o=>o.card),r=((l=n==null?void 0:n.config)==null?void 0:l.pivotByColumns)&&n.config.pivotByColumns.length>0;return e.jsx("div",{className:"flex items-center gap-1",children:ro.map(o=>{if(o.requiresPivot&&!r)return null;const c=o.icon,i=t===o.id;return e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"ghost",size:"sm",onClick:()=>a(o.id),className:s.cn("h-8 w-8 p-0",i&&"bg-accent text-accent-foreground"),children:[e.jsx(c,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:o.label})]})}),e.jsx(s.TooltipContent,{side:"bottom",children:e.jsx("p",{children:o.label})})]},o.id)})})}const Ks=({dataType:t})=>{const a=s.getDataType(t);return a==="string"?e.jsx("span",{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(ye,{className:"h-3 w-3"})}):a==="number"?e.jsx("span",{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(Te,{className:"h-3 w-3"})}):a==="date"?e.jsx("span",{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"})}):a==="boolean"?e.jsx("span",{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(Ue,{className:"h-3 w-3"})}):e.jsx("span",{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(ye,{className:"h-3 w-3"})})};function oo({aliasTemplate:t,onAliasTemplateChange:a}){var u;const[n,r]=I.useState(t),[l,o]=I.useState(!1),c=(u=s.useEditorStore(d=>{var m;return(m=d.card.config)==null?void 0:m.pivotByColumns}))==null?void 0:u[0],i=c?`e.g. Min Sales in {{${c.name}}}`:"e.g. Min Sales in {{region}}";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-gray-600",children:"Pivot Alias Template"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Input$1,{placeholder:i,value:l?n:t,onChange:d=>{r(d.target.value),o(!0)},onFocus:()=>o(!0),onPointerDown:d=>d.stopPropagation(),className:"h-8 text-xs",onKeyDown:d=>{d.key==="Enter"&&l&&n!==t?(a(n),o(!1)):d.key==="Escape"&&(r(t),o(!1))},"aria-label":"Edit alias template"}),l&&n!==t&&e.jsxs(e.Fragment,{children:[e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm alias template",onClick:()=>{a(n),o(!1)},children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel alias template edit",onClick:()=>{r(t),o(!1)},children:e.jsx(s.X,{className:"h-4 w-4 text-gray-400"})})]})]})]})}function io({valueAliases:t,onValueAliasesChange:a}){const[n,r]=I.useState(null),[l,o]=I.useState(""),[c,i]=I.useState(""),u=()=>{a({...t,"":""})},d=h=>{const f={...t};delete f[h],a(f)},m=h=>{const f={...t};delete f[h],f[l]=c,a(f),r(null)};return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Pivot Value Aliases"}),e.jsxs("div",{className:"space-y-2",children:[Object.entries(t).map(([h,f],g)=>e.jsx("div",{className:"flex items-center gap-2",children:n===h?e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:l,onChange:j=>o(j.target.value),className:"h-8 w-24 text-xs",onPointerDown:j=>j.stopPropagation(),onKeyDown:j=>{j.key==="Enter"?m(h):j.key==="Escape"&&r(null)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:c,onChange:j=>i(j.target.value),className:"h-8 w-24 text-xs",onPointerDown:j=>j.stopPropagation(),onKeyDown:j=>{j.key==="Enter"?m(h):j.key==="Escape"&&r(null)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm value alias edit",onClick:()=>m(h),children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel value alias edit",onClick:()=>r(null),children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]}):e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:h,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),o(h),i(f)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:f,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),o(h),i(f)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>d(h),"aria-label":"Remove value alias",children:e.jsx(s.X,{className:"h-3 w-3"})})]})},h+g)),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"mt-1 h-8 text-xs",onClick:u,children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Value Alias"]})]})]})}function co({field:t,searchQuery:a="",limit:n=500}){const{authToken:r}=s.useSemaphorContext(),l=s.useEditorStore(u=>u.card),o=l==null?void 0:l.dataSource,c=["attribute-values",t.entityName,t.name,a,n],i=s.useQuery({queryKey:c,queryFn:async()=>{if(!(o!=null&&o.connectionId))return console.warn("No connection ID available for attribute values query"),[];try{const u={groupByColumns:[{...t,role:"groupby"}],metricColumns:[],filters:a?{id:"search-filter",logicalOperator:"AND",negate:!1,conditions:[{id:"search-condition",field:t,operator:"contains",value:a}],groups:[]}:void 0,rowLimit:n},d={connection_id:o.connectionId,cardConfig:u,cardDataSource:o,cache_config:s.getCacheConfig({card:l})};console.log("requestBody",d);const m=await s.postRequestRegular("https://semaphor.cloud/api/v1/query",(r==null?void 0:r.accessToken)||"",d);if(m!=null&&m.error)return console.error("Error fetching attribute values:",m.error),[];const h=t.name;return((m==null?void 0:m.records)||[]).map(g=>{const j=g[h]||g[t.alias||h]||g[t.label];return{id:j||"",value:j||"",label:String(j||"(empty)")}})}catch(u){return console.error("Error fetching attribute values:",u),[]}},enabled:!!t&&!!(o!=null&&o.connectionId),staleTime:5*60*1e3,gcTime:10*60*1e3});return{values:i.data||[],isLoading:i.isLoading,isFetching:i.isFetching,isError:i.isError,error:i.error,refetch:i.refetch}}function uo({open:t,onOpenChange:a,availableFields:n,existingFilters:r,editingCondition:l,onSave:o}){var T,L;const c=!!l,[i,u]=I.useState(c?"values":"fields"),[d,m]=I.useState(""),[h,f]=I.useState({id:(l==null?void 0:l.id)||s.v4(),field:(l==null?void 0:l.field)||null,selectedValues:l?Array.isArray(l.value)?l.value:[l.value]:[]}),g=n.filter(N=>{var y;return c?!1:!((y=r==null?void 0:r.conditions)==null?void 0:y.some(k=>k.field.id===N.id))&&N.label.toLowerCase().includes(d.toLowerCase())}),j=N=>{f({...h,field:N}),u("values")},x=()=>{if(h.field&&h.selectedValues.length>0){const N={id:h.id,field:h.field,operator:"in",value:h.selectedValues};let w;if(c){const y=((r==null?void 0:r.conditions)||[]).map(k=>k.id===l.id?N:k);w={...r,conditions:y}}else{const y=(r==null?void 0:r.conditions)||[];w={id:(r==null?void 0:r.id)||s.v4(),logicalOperator:"AND",negate:!1,conditions:[...y,N],groups:[]}}o(w),a(!1)}},b=()=>{if(!c||!l)return;const N=((r==null?void 0:r.conditions)||[]).filter(w=>w.id!==l.id);if(N.length>0){const w={...r,conditions:N};o(w)}else o(void 0);a(!1)},p=N=>{f({...h,selectedValues:N})},v=()=>{c&&l?(f({id:l.id,field:l.field,selectedValues:Array.isArray(l.value)?l.value:[l.value]}),u("values")):(f({id:s.v4(),field:null,selectedValues:[]}),u("fields")),m("")};return I.useEffect(()=>{t&&v()},[t,c,l]),e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"max-w-2xl",children:[e.jsx(s.DialogHeader,{children:e.jsx(s.DialogTitle,{children:c?`Edit Filter: ${(T=h.field)==null?void 0:T.label}`:i==="fields"?"Select Field to Filter":`Select Values for ${(L=h.field)==null?void 0:L.label}`})}),e.jsxs("div",{className:"space-y-4",children:[!c&&(r==null?void 0:r.conditions)&&r.conditions.length>0&&i==="fields"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Current Filters:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.conditions.map(N=>e.jsxs("div",{className:"flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[e.jsxs("span",{className:"font-medium",children:[N.field.label,":"]}),e.jsx("span",{className:"text-muted-foreground",children:Array.isArray(N.value)?`${N.value.length} values`:String(N.value)})]},N.id))})]}),i==="fields"&&!c?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search fields...",value:d,onChange:N=>m(N.target.value),className:"pl-10"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 max-h-[400px] overflow-y-auto",children:g.map(N=>e.jsxs(s.Button,{variant:"outline",className:"justify-start h-auto py-2 px-3",onClick:()=>j(N),children:[e.jsx(Ks,{dataType:s.getDataType(N.dataType)}),e.jsxs("div",{className:"ml-2 text-left",children:[e.jsx("div",{className:"text-sm font-medium",children:N.label}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[N.entityName,".",N.name]})]})]},N.id))}),g.length===0&&d&&e.jsxs("div",{className:"text-center py-4 text-sm text-muted-foreground",children:['No fields found matching "',d,'"']}),g.length===0&&!d&&n.length>0&&e.jsx("div",{className:"text-center py-4 text-sm text-muted-foreground",children:"All available fields are already filtered"})]}):e.jsx(mo,{field:h.field,selectedValues:h.selectedValues,onValuesChange:p,onBack:c?void 0:()=>u("fields")}),e.jsxs("div",{className:"flex justify-between pt-4 border-t",children:[e.jsx("div",{children:c?e.jsx(s.Button,{variant:"destructive",onClick:b,children:"Delete Filter"}):e.jsx(s.Button,{variant:"outline",onClick:v,children:"Reset"})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsx(s.Button,{onClick:x,disabled:!h.field||h.selectedValues.length===0,children:"Apply"})]})]})]})]})})}function mo({field:t,selectedValues:a,onValuesChange:n,onBack:r}){const[l,o]=I.useState(""),{values:c,isLoading:i,isFetching:u}=co({field:t,searchQuery:l,limit:500}),d=l?c.filter(f=>String(f.value).toLowerCase().includes(l.toLowerCase())):c,m=f=>{const g=a.includes(f);n(g?a.filter(j=>j!==f):[...a,f])},h=()=>{a.length===d.length&&d.length>0?n([]):n(d.map(f=>f.value))};return e.jsxs("div",{className:"space-y-4",children:[r&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:r,children:"← Back"}),e.jsxs(s.Label,{className:"text-sm font-medium",children:["Select values for ",t.label]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search values...",value:l,onChange:f=>o(f.target.value),className:"pl-10"})]}),i||u?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(s.LoaderCircle,{className:"h-6 w-6 animate-spin"})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b",children:[e.jsx(s.Checkbox,{checked:a.length===d.length&&d.length>0,onCheckedChange:h}),e.jsxs(s.Label,{className:"text-sm",children:["Select All (",d.length,")"]})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-1",children:d.map(f=>e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-muted/50 rounded cursor-pointer",onClick:()=>m(f.value),children:[e.jsx(s.Checkbox,{checked:a.includes(f.value),onCheckedChange:()=>m(f.value)}),e.jsx(bs,{className:"text-sm",children:f.label})]},f.id))})]})]})}function ho({field:t,zone:a,index:n,sortDirection:r,onSortDirectionChange:l,hasPivotColumns:o=!1,cardType:c}){var Ws,Js,Xs;const{attributes:i,listeners:u,setNodeRef:d,transform:m,transition:h,isDragging:f}=s.useSortable({id:t.id}),g=s.useEditorStore(G=>G.card),{updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:p,handleAliasTemplateChange:v,handleValueAliasesChange:T,removeField:L,handleKpiComparisonTypeChange:N,handleKpiShowTrendlineChange:w,handleKpiTrendlineWindowChange:y,handleKpiTrendlineGranularityChange:k,handleKpiTargetValueChange:S}=Gs(g),[R,C]=I.useState(!1),[F,D]=I.useState(!1),[E,A]=I.useState(null),[B,M]=I.useState(t.dateFormat||"YYYY-MM-DD"),[O,z]=I.useState(t.customFormat||""),[P,H]=I.useState(!!t.customFormat),[X,Q]=I.useState(t.granularity||"day"),[Y,K]=I.useState(t.aliasTemplate||""),[U,_]=I.useState(t.valueAliases||{}),[V,$]=I.useState((Ws=t.parameters)==null?void 0:Ws.filters),Z=G=>{G==="custom"?H(!0):(H(!1),M(G),a==="groupBy"&&b(n,G,""))},ne=G=>{z(G),a==="groupBy"&&b(n,"custom",G)},q=G=>{var he;Q(G);const ce=(he=se(G)[0])==null?void 0:he.value;ce&&!P&&(M(ce),a==="groupBy"&&b(n,ce,"")),a==="groupBy"&&p(n,G)},ee=G=>{K(G),a==="metrics"&&v(n,G)},oe=G=>{_(G),a==="metrics"&&T(n,G)},W=G=>{j(a,n,G)},J=G=>{var ie;if($(G),a==="metrics"){const ce={...t,parameters:{...t.parameters,filters:G}},he=[...((ie=g.config)==null?void 0:ie.metricColumns)||[]];he[n]=ce,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:he})}D(!1)},re=()=>{L(a,n)},de={transform:s.CSS.Transform.toString(m),transition:h},Se=s.getDataType(t.dataType),be=Se==="date",fe=c==="kpi",se=G=>{switch(G){case"day":return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"MM/DD/YYYY",label:"01/15/2024 (MM/DD/YYYY)"},{value:"DD/MM/YYYY",label:"15/01/2024 (DD/MM/YYYY)"},{value:"MMMM DD, YYYY",label:"January 15, 2024 (MMMM DD, YYYY)"},{value:"MMM DD, YYYY",label:"Jan 15, 2024 (MMM DD, YYYY)"},{value:"DD MMM YYYY",label:"15 Jan 2024 (DD MMM YYYY)"},{value:"custom",label:"Custom Format..."}];case"week":return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"Week of MMM DD, YYYY",label:"Week of Jan 15, 2024"},{value:"Week of MMMM DD, YYYY",label:"Week of January 15, 2024"},{value:"YYYY-WW",label:"2024-W03 (YYYY-WW)"},{value:"custom",label:"Custom Format..."}];case"month":return[{value:"MMM YYYY",label:"Jan 2024 (MMM YYYY)"},{value:"MMMM YYYY",label:"January 2024 (MMMM YYYY)"},{value:"YYYY-MM",label:"2024-01 (YYYY-MM)"},{value:"MM/YYYY",label:"01/2024 (MM/YYYY)"},{value:"YYYY MMM",label:"2024 Jan (YYYY MMM)"},{value:"custom",label:"Custom Format..."}];case"quarter":return[{value:"Q1 YYYY",label:"Q1 2024 (Q1 YYYY)"},{value:"YYYY Q1",label:"2024 Q1 (YYYY Q1)"},{value:"1st Quarter YYYY",label:"1st Quarter 2024"},{value:"YYYY-Q1",label:"2024-Q1 (YYYY-Q1)"},{value:"Quarter 1, YYYY",label:"Quarter 1, 2024"},{value:"custom",label:"Custom Format..."}];case"year":return[{value:"YYYY",label:"2024 (YYYY)"},{value:"YY",label:"24 (YY)"},{value:"custom",label:"Custom Format..."}];default:return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"MM/DD/YYYY",label:"01/15/2024 (MM/DD/YYYY)"},{value:"DD/MM/YYYY",label:"15/01/2024 (DD/MM/YYYY)"},{value:"MMMM DD, YYYY",label:"January 15, 2024 (MMMM DD, YYYY)"},{value:"MMM DD, YYYY",label:"Jan 15, 2024 (MMM DD, YYYY)"},{value:"DD MMM YYYY",label:"15 Jan 2024 (DD MMM YYYY)"},{value:"YYYY-MM",label:"2024-01 (YYYY-MM)"},{value:"MMMM YYYY",label:"January 2024 (MMMM YYYY)"},{value:"custom",label:"Custom Format..."}]}},te=se(X),ue=a!=="pivotBy",ve=be&&a==="groupBy",rs=!fe&&be&&a==="groupBy",ls=fe&&be&&a==="groupBy",os=fe&&a==="metrics"&&((Js=g.config)==null?void 0:Js.comparisonType)==="target",Je=a==="metrics",Ae=()=>e.jsx("div",{onPointerDown:G=>{G.stopPropagation()},className:"cursor-default overflow-hidden text-ellipsis whitespace-nowrap px-0.5 text-xs text-gray-500",children:`${t.entityName}.${t.name}`}),me=()=>ue?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Label"}),e.jsx(De,{value:t.label??"",onSave:W,placeholder:"Display label...",type:"text"})]}):null,Qs=()=>ve?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Granularity"}),e.jsxs(s.Select,{value:X,onValueChange:q,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsx(s.SelectContent,{children:["day","week","month","quarter","year"].map(G=>e.jsx(s.SelectItem,{className:"text-xs",value:G,children:s.toTitleCase(G)},G))})]})]}):null,ga=()=>rs?e.jsxs(e.Fragment,{children:[Qs(),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Date Format"}),e.jsxs(s.Select,{value:P?"custom":B,onValueChange:Z,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select date format..."})}),e.jsx(s.SelectContent,{children:te.map(G=>e.jsx(s.SelectItem,{className:"text-xs",value:G.value,children:G.label},G.value))})]}),P&&e.jsxs("div",{className:"mt-2 space-y-1",children:[e.jsx(s.Input$1,{placeholder:"Enter custom format (e.g., YYYY-MM-DD HH:mm)",value:O,onChange:G=>{G.stopPropagation(),ne(G.target.value)},onClick:G=>G.stopPropagation(),className:"h-8 text-xs"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Examples: YYYY-MM-DD, MM/DD/YY, DD-MMM-YYYY HH:mm"})]})]})]}):null,ja=()=>{var G,ie,ce,he,Me;return ls?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Comparison Type"}),e.jsxs(s.Select,{value:((G=g.config)==null?void 0:G.comparisonType)||"none",onValueChange:N,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select comparison type..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"No Comparison"}),e.jsx(s.SelectItem,{value:"previous_period",children:"Previous Period"}),e.jsx(s.SelectItem,{value:"same_period_last_year",children:"Same Period Last Year"}),e.jsx(s.SelectItem,{value:"target",children:"Target Value"})]})]})]}),e.jsx("div",{className:"space-y-1",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Show Trendline"}),e.jsx(s.SmallSwitch,{checked:((ie=g.config)==null?void 0:ie.showTrendline)||!1,onCheckedChange:w})]})}),((ce=g.config)==null?void 0:ce.showTrendline)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Window"}),e.jsx(s.Input$1,{type:"number",min:"1",max:"365",value:((he=g.config)==null?void 0:he.trendlineWindow)||30,onChange:is=>{const Ca=parseInt(is.target.value)||30;y(Ca)},className:"h-8 text-xs",placeholder:"30"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Granularity"}),e.jsxs(s.Select,{value:((Me=g.config)==null?void 0:Me.trendlineGranularity)||"day",onValueChange:k,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"day",children:"Day"}),e.jsx(s.SelectItem,{value:"week",children:"Week"}),e.jsx(s.SelectItem,{value:"month",children:"Month"})]})]})]})]})]}):null},ya=()=>{var G,ie;return os?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Target Value"}),e.jsx(De,{value:((G=g.config)==null?void 0:G.targetValue)!==void 0&&((ie=g.config)==null?void 0:ie.targetValue)!==null?String(g.config.targetValue):"",onSave:ce=>{!isNaN(Number(ce))&&ce!==null?S(Number(ce)):S(0)},placeholder:"Enter target value...",type:"text"})]}):null},ba=()=>Je?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Aggregation"}),e.jsxs(s.Select,{value:t.aggregate,onValueChange:G=>{x(n,G)},children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select function..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"COUNT",children:"Count"}),e.jsx(s.SelectItem,{className:"text-xs",value:"DISTINCT",children:"Count Distinct"}),s.getDataType(t.dataType)==="number"&&e.jsxs(e.Fragment,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"SUM",children:"Sum"}),e.jsx(s.SelectItem,{className:"text-xs",value:"AVG",children:"Average"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MIN",children:"Min"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MAX",children:"Max"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MEDIAN",children:"Median"})]})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Attribute Filters"}),(V==null?void 0:V.conditions)&&V.conditions.length>0&&e.jsx("div",{className:"mb-2 space-y-1",children:V.conditions.map(G=>e.jsxs("div",{className:"flex cursor-pointer items-center gap-2 rounded bg-muted/50 p-2 text-xs transition-colors hover:bg-muted/70",onClick:()=>{A(G),D(!0)},children:[e.jsxs("span",{className:"font-medium",children:[G.field.label,":"]}),e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"cursor-help text-muted-foreground",children:Array.isArray(G.value)?G.value.length===1?String(G.value[0]):G.value.length<=2?G.value.join(", "):`${G.value.slice(0,2).join(", ")} +${G.value.length-2}`:String(G.value)})}),Array.isArray(G.value)&&G.value.length>1&&e.jsx(s.TooltipContent,{side:"top",className:"max-w-[300px]",children:e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"mb-1 font-medium",children:["Selected values (",G.value.length,"):"]}),e.jsx("div",{className:"max-h-[200px] overflow-y-auto",children:G.value.map((ie,ce)=>e.jsx("div",{children:String(ie)},ce))})]})})]})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-auto h-4 w-4 p-0",onClick:ie=>{var he;ie.stopPropagation();const ce=V.conditions.filter(Me=>Me.id!==G.id);if(ce.length>0){const Me={...V,conditions:ce};J(Me)}else if($(void 0),a==="metrics"){const Me={...t,parameters:{...t.parameters,filters:void 0}},is=[...((he=g.config)==null?void 0:he.metricColumns)||[]];is[n]=Me,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:is})}},children:e.jsx(s.X,{className:"h-3 w-3"})})]},G.id))}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>{A(null),D(!0)},children:[e.jsx(s.Filter,{className:"mr-2 h-3 w-3"}),"Add attribute filter"]})]}),e.jsx(xa,{column:t}),o&&e.jsxs(e.Fragment,{children:[e.jsx(oo,{aliasTemplate:Y,onAliasTemplateChange:ee}),e.jsx(io,{valueAliases:U,onValueAliasesChange:oe})]})]}):null,{columns:va=[]}=s.useColumns(),Na=(V==null?void 0:V.conditions)&&V.conditions.length>0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:d,style:de,...i,...u,className:`group mx-auto flex w-full flex-col gap-2 rounded border border-border bg-background p-2 transition-all hover:shadow-sm dark:border-gray-800 ${f?"z-50 scale-95 opacity-50":"border-slate-200"} ${a==="filters"?"cursor-default":"cursor-move"}`,children:[e.jsxs("div",{className:"flex grow items-center gap-2",children:[e.jsx(Ks,{dataType:Se}),e.jsx(bs,{className:s.cn("w-[140px] flex-1 text-sm",Na&&"w-[120px]"),children:s.getMetricDisplayLabel(t)}),a==="metrics"&&((Xs=V==null?void 0:V.conditions)==null?void 0:Xs.length)&&!R&&e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-1 rounded bg-primary/10 px-1.5 py-0.5 text-xs",children:[e.jsx(s.Filter,{className:"h-3 w-3"}),e.jsx("span",{children:V.conditions.length})]})}),e.jsx(s.TooltipContent,{side:"top",children:e.jsx("div",{className:"text-xs",children:V.conditions.map(G=>e.jsxs("div",{children:[G.field.label,":"," ",Array.isArray(G.value)?`${G.value.length} values`:String(G.value)]},G.id))})})]})}),a!=="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 opacity-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),C(!R)},children:e.jsx(s.ChevronDown,{className:`h-3 w-3 transition-transform ${R?"rotate-180":""}`})}),a==="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),console.log("DraggableField - Current sortDirection:",r);const ie=r==="asc"?"desc":"asc";console.log("DraggableField - New direction to set:",ie),l(ie)},children:r==="asc"?e.jsx(s.ArrowUp,{className:"h-3 w-3"}):e.jsx(s.ArrowDown,{className:"h-3 w-3"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 opacity-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),re()},children:e.jsx(s.X,{className:"h-3 w-3"})})]}),R&&e.jsxs("div",{className:"space-y-3",children:[Ae(),me(),c==="kpi"&&Qs(),ga(),ja(),ya(),ba()]})]}),F&&e.jsx(uo,{open:F,onOpenChange:G=>{D(G),G||A(null)},availableFields:va,existingFilters:V,editingCondition:E,onSave:G=>{var ie;if(G)J(G);else if($(void 0),a==="metrics"){const ce={...t,parameters:{...t.parameters,filters:void 0}},he=[...((ie=g.config)==null?void 0:ie.metricColumns)||[]];he[n]=ce,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:he})}A(null)}})]})}function xo({concept:t}){const a=()=>{switch(t){case"groupBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Rows = Group By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that define how your data is grouped into rows."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-100 text-xs font-medium dark:bg-blue-200/20",children:"Product"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Sales"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Profit"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/50 text-xs font-medium dark:bg-blue-200/20",children:"Electronics"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$5,200"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$1,300"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/30 text-xs font-medium dark:bg-blue-300/20",children:"Clothing"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$3,100"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$620"})]}),e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/20 text-xs font-medium dark:bg-blue-200/20",children:"Food"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$2,400"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$480"})]})]})]});case"pivotBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Columns = Pivot By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that split your data into multiple columns or series."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Region"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"North"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"South"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"East"})]}),e.jsxs("div",{className:"flex border-b py-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$2,300"}),e.jsx("div",{className:"w-1/4 bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$1,800"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$3,400"})]}),e.jsxs("div",{className:"flex py-1",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$460"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$360"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$680"})]})]})]});case"metrics":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Metrics = Values (Cells)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that represent the values shown in your visualization."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"col-span-1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q2"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q3"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"rounded bg-blue-100 p-1 text-center text-xs dark:bg-blue-300/20",children:"$2,300"}),e.jsx("div",{className:"rounded bg-blue-200 p-1 text-center text-xs dark:bg-blue-400/20",children:"$3,100"}),e.jsx("div",{className:"rounded bg-blue-300 p-1 text-center text-xs dark:bg-blue-500/20",children:"$4,200"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"rounded bg-green-100 p-1 text-center text-xs dark:bg-green-300/20",children:"$460"}),e.jsx("div",{className:"rounded bg-green-200 p-1 text-center text-xs dark:bg-green-400/20",children:"$620"}),e.jsx("div",{className:"rounded bg-green-300 p-1 text-center text-xs dark:bg-green-500/20",children:"$840"})]})]})]});default:return null}};return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:300,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.CircleHelp,{className:"size-4 text-muted-foreground hover:text-foreground"})}),e.jsx(s.TooltipContent,{side:"right",align:"start",className:"p-3",children:a()})]})})}function us({zone:t,fields:a,label:n,placeholder:r,shouldShow:l,hasPivotColumns:o=!1}){const{isOver:c,setNodeRef:i}=s.useDroppable({id:t}),{updateSortByColumn:u}=s.useEditorActions(),d=s.useEditorStore(j=>j.card),m=s.useEditorStore(j=>j.card.type),h=a.length>0,f=(j,x)=>{var p;!((p=d.config)!=null&&p.sortByColumns)||d.config.sortByColumns.findIndex(v=>v.id===j)===-1||u(d.id,j,{direction:x})};if(t==="sortBy"&&l===!1)return null;const g=t!=="sortBy"&&m!=="kpi";return e.jsxs("div",{className:"mb-4 w-full",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(s.Label,{className:s.cn("block text-sm font-medium",{}),children:n}),g&&e.jsx(xo,{concept:t})]}),e.jsx("div",{ref:i,className:`rounded-lg border-2 border-dashed p-1 transition-all ${c?"border-blue-500 bg-blue-50 dark:bg-blue-950":h?"border-blue-200 bg-blue-50/30 dark:border-blue-800 dark:bg-blue-950/30":"min-h-[60px] border-muted-foreground/20 bg-background"}`,children:a.length===0?e.jsx("div",{className:"flex min-h-[40px] items-center justify-center text-sm text-gray-400",children:r}):e.jsx(s.SortableContext,{items:a.map(j=>j.id),strategy:s.verticalListSortingStrategy,children:e.jsx("div",{className:"flex flex-wrap gap-1",children:a.map((j,x)=>{const p=j.direction;return e.jsx("div",{className:"flex w-full items-center gap-2",children:e.jsx("div",{className:"flex-1",children:e.jsx(ho,{field:j,zone:t,index:x,sortDirection:p,onSortDirectionChange:v=>f(j.id,v),hasPivotColumns:o,cardType:m})})},j.id)})})})})]})}const pt=[{value:"green",color:"#16a34a",label:"Green"},{value:"red",color:"#dc2626",label:"Red"},{value:"neutral",color:"#6b7280",label:"Neutral"}],po=["#16a34a","#dc2626","#6b7280","#2563eb","#ca8a04","#7c3aed","#0891b2","#e11d48","#ea580c"];function Is({value:t,onChange:a,label:n}){const[r,l]=I.useState(!1),[o,c]=I.useState(!1),i=()=>{const u=pt.find(d=>d.value===t);return u?u.color:t.startsWith("#")?t:pt[2].color};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:r,onOpenChange:l,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx("button",{className:"size-5 rounded border-2 border-input shadow-sm transition-all hover:scale-110 hover:border-gray-400",style:{backgroundColor:i()},"aria-label":`Change color for ${n}`})}),e.jsx(s.PopoverContent,{align:"start",className:"w-auto p-2",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"grid grid-cols-3 items-center justify-items-center gap-1",children:po.map(u=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border-2 transition-all",i()===u?"border-gray-900":"border-transparent"),style:{backgroundColor:u},onClick:()=>{a(u),l(!1)},children:e.jsx("span",{className:"sr-only",children:u})},u))}),e.jsx("button",{className:"w-full rounded border border-input px-2 py-1 text-xs hover:bg-muted",onClick:()=>{c(!0),l(!1)},children:"Custom color..."})]})})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:n})]}),o&&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:()=>c(!1)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(ia,{color:i(),onColorChange:u=>{a(u),c(!1)},onClose:()=>c(!1)})})]})]})}const ms={difference:{label:"Difference",description:"Shows the exact difference between two values.",formula:"Primary - Secondary",example:"Sales increased by $5,000 compared to last year."},change:{label:"Change",description:"Shows the percentage increase or decrease between two values.",formula:"(Primary - Secondary) / Secondary × 100%",example:"Year-over-year sales change of 25%."},change_difference:{label:"Change (difference)",description:"Shows both the percentage change and the exact difference between two values.",formula:`% Change: (Primary - Secondary) / Secondary × 100%
346
- Difference: Primary - Secondary`,example:"Sales grew by 25% ($5,000) compared to last year."},ratio:{label:"Ratio",description:"Shows how much of one value is covered by another — useful for quotas and benchmarks.",formula:"Primary / Secondary × 100%",example:"You've achieved 80% of your sales quota."}};function fo(){var i,u,d,m,h,f,g,j,x,b;const t=s.useEditorStore(p=>p.card),{setCardPreferences:a}=s.useEditorActions(),n=((i=t.config)==null?void 0:i.metricColumns)||[],r=((u=t.config)==null?void 0:u.groupByColumns)||[];if(!(t.type==="kpi"&&(n.length>=2&&r.length===0||n.length>=1&&r.length>0)))return null;const o=((m=(d=t.preferences)==null?void 0:d.kpiVisualOptions)==null?void 0:m.metricComparison)||{},c=p=>{var T;const v={...t.preferences,kpiVisualOptions:{...(T=t.preferences)==null?void 0:T.kpiVisualOptions,metricComparison:{...o,...p}}};a(v)};return e.jsxs(s.AccordionItem,{value:"comparison",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ya,{className:"h-4 w-4"}),e.jsx("span",{children:"Comparison"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"enable-comparison",className:"text-xs",children:"Enable Metric Comparison"}),e.jsx(s.SmallSwitch,{id:"enable-comparison",checked:o.enabled||!1,onCheckedChange:p=>c({enabled:p,...p&&!o.calculationType?{calculationType:"difference"}:{}})})]}),o.enabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"calculation-type",className:"text-xs font-medium uppercase text-muted-foreground",children:"Calculated as"}),e.jsxs(s.Select,{value:o.calculationType||"difference",onValueChange:p=>c({calculationType:p}),children:[e.jsx(s.SelectTrigger,{id:"calculation-type",className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Object.entries(ms).map(([p,v])=>e.jsx(s.SelectItem,{value:p,className:"text-xs",children:v.label},p))})]}),(()=>{var v,T,L;const p=o.calculationType||"difference";return e.jsxs("div",{className:"space-y-2 rounded-md bg-muted/50 p-2 text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:(v=ms[p])==null?void 0:v.description}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Formula:"})," ",e.jsx("code",{className:"rounded bg-background px-1 py-0.5 text-[10px]",children:(T=ms[p])==null?void 0:T.formula})]}),e.jsxs("div",{className:"border-t pt-1 italic text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Example:"})," ",(L=ms[p])==null?void 0:L.example]})]})})()]}),e.jsx(qs,{formatOptions:o.formatOptions||{},onFormatOptionsChange:p=>c({formatOptions:p}),showTitle:!0,title:"COMPARISON FORMAT"}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Indicator"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:o.position||"left",onValueChange:p=>c({position:p}),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"top",className:"text-xs",children:"Top"}),e.jsx(s.SelectItem,{value:"left",className:"text-xs",children:"Left"}),e.jsx(s.SelectItem,{value:"right",className:"text-xs",children:"Right"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-arrow",checked:o.showArrow!==!1,onCheckedChange:p=>c({showArrow:p})}),e.jsx(s.Label,{htmlFor:"show-arrow",className:"cursor-pointer text-xs text-muted-foreground",children:"Arrow"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-color",checked:o.showColor!==!1,onCheckedChange:p=>c({showColor:p})}),e.jsx(s.Label,{htmlFor:"show-color",className:"cursor-pointer text-xs text-muted-foreground",children:"Color"})]}),o.showColor!==!1&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-3",children:[e.jsx(Is,{value:((h=o.colorConfig)==null?void 0:h.increase)||"green",onChange:p=>c({colorConfig:{...o.colorConfig,increase:p}}),label:"Primary > Secondary"}),e.jsx(Is,{value:((f=o.colorConfig)==null?void 0:f.decrease)||"red",onChange:p=>c({colorConfig:{...o.colorConfig,decrease:p}}),label:"Primary < Secondary"}),e.jsx(Is,{value:((g=o.colorConfig)==null?void 0:g.noChange)||"neutral",onChange:p=>c({colorConfig:{...o.colorConfig,noChange:p}}),label:"Primary = Secondary"})]})]}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Label"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"conditional-label",checked:o.conditionalLabel||!1,onCheckedChange:p=>c({conditionalLabel:p})}),e.jsx(s.Label,{htmlFor:"conditional-label",className:"cursor-pointer text-xs text-muted-foreground",children:"Conditional"})]}),o.conditionalLabel?e.jsxs("div",{className:"space-y-3 border-l-2 border-muted pl-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-increase",className:"text-xs text-muted-foreground",children:["Primary ",">"," Secondary"]}),e.jsx(s.Input,{id:"label-increase",type:"text",value:((j=o.conditionalLabels)==null?void 0:j.increase)??"Increase",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,increase:p.target.value}}),placeholder:"Increase",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-decrease",className:"text-xs text-muted-foreground",children:["Primary ","<"," Secondary"]}),e.jsx(s.Input,{id:"label-decrease",type:"text",value:((x=o.conditionalLabels)==null?void 0:x.decrease)??"Decrease",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,decrease:p.target.value}}),placeholder:"Decrease",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-no-change",className:"text-xs text-muted-foreground",children:"Primary = Secondary"}),e.jsx(s.Input,{id:"label-no-change",type:"text",value:((b=o.conditionalLabels)==null?void 0:b.noChange)??"No change",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,noChange:p.target.value}}),placeholder:"No change",className:"h-7 text-xs"})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-name",className:"text-xs text-muted-foreground",children:"Name"}),e.jsx(s.Input,{id:"label-name",type:"text",value:o.labelName??"",onChange:p=>c({labelName:p.target.value}),placeholder:"e.g. Versus, Compared to",className:"h-7 text-xs"})]})]})]})]})]})}function go(){var l,o;const t=s.useEditorStore(c=>c.card),{setCardPreferences:a}=s.useEditorActions();if(t.type!=="kpi")return null;const n=((o=(l=t.preferences)==null?void 0:l.kpiVisualOptions)==null?void 0:o.formatOptions)||{},r=c=>{var u;const i={...t.preferences,kpiVisualOptions:{...(u=t.preferences)==null?void 0:u.kpiVisualOptions,formatOptions:c}};a(i)};return e.jsxs(s.AccordionItem,{value:"kpi-format",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Te,{className:"h-4 w-4"}),e.jsx("span",{children:"Number Format"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:e.jsx(qs,{formatOptions:n,onFormatOptionsChange:r,showTitle:!1})})]})}function jo({groupByFields:t,pivotByFields:a,metricsFields:n,sortByFields:r}){const l=s.useEditorStore(j=>{var x;return((x=j.card.customCardPreferences)==null?void 0:x.url)&&j.card.type==="custom"}),o=s.useEditorStore(j=>j.card),c=o==null?void 0:o.type,i=t.length>0||n.length>0,u=c!=="kpi",d=c!=="kpi"&&i,m=["pie","doughnut","polar","funnel"].includes(c),h=u&&!m,f=()=>c==="kpi"?{label:"Trend By",placeholder:"Drop fields to trend data"}:{label:"Rows",placeholder:"Drop fields to group data"},g=()=>c==="kpi"?{label:"Metric",placeholder:"Drop field for KPI"}:{label:"Metrics",placeholder:"Drop fields to measure"};return e.jsxs(s.Accordion,{type:"single",collapsible:!0,defaultValue:"fields",className:"w-full",children:[e.jsxs(s.AccordionItem,{value:"fields",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(en,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"FIELDS"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pt-2",children:[e.jsx(us,{zone:"groupBy",fields:t,label:f().label,placeholder:f().placeholder}),h&&e.jsx(us,{zone:"pivotBy",fields:a,label:"Columns",placeholder:"Drop fields to pivot data"}),e.jsx(us,{zone:"metrics",fields:n,label:g().label,placeholder:g().placeholder,hasPivotColumns:a.length>0}),d&&e.jsx(us,{zone:"sortBy",fields:r,label:"Sort By",placeholder:"Drop fields from Rows or Metrics"})]})]}),!l&&e.jsxs(s.AccordionItem,{value:"configuration",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Settings,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"CONFIGURATION"})]})}),e.jsx(s.AccordionContent,{className:"rounded-md border border-border bg-muted/50 px-3 py-0",children:e.jsxs(s.Accordion,{type:"single",collapsible:!0,className:"w-full",children:[e.jsx(go,{}),e.jsx(fo,{}),e.jsx(ca,{}),e.jsx(da,{}),e.jsx(ua,{}),e.jsx(ma,{})]})})]})]})}function yo({selectedChart:t,onChartChange:a,groupByFields:n,pivotByFields:r,metricsFields:l,sortByFields:o}){const c=s.useEditorStore(h=>h.showAIDialog),i=n.length>0||r.length>0||l.length>0,{setShowAIDialog:u}=s.useEditorActions(),d=s.useEditorStore(h=>h.card),{data:m}=s.useDashboardCardQuery(d);return e.jsxs("div",{"data-content":"Chart Configuration Panel",className:"flex w-[350px] flex-col",children:[e.jsxs("div",{className:"space-y-4 px-6 pt-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("h2",{className:"font-semibold",children:"Chart Configuration"})}),e.jsx(ao,{selectedChart:t,onChartChange:a}),e.jsx(lo,{selectedChart:t,onChartChange:a})]}),e.jsxs("div",{className:s.cn("flex justify-end gap-2 px-6 py-6"),children:[e.jsx("div",{className:s.cn("invisible",{visible:i||m}),children:e.jsx(js,{})}),!c&&e.jsxs(s.Button,{onClick:()=>u(!c),variant:"outline",className:"h-8",size:"sm",children:[e.jsx(s.Sparkles,{className:"mr-2 size-4"}),"AI"]})]}),e.jsxs(s.ScrollArea,{className:"w-full flex-1 basis-0 px-6 pb-6",children:[e.jsx(jo,{groupByFields:n,pivotByFields:r,metricsFields:l,sortByFields:o}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function bo({initialFilters:t,availableFields:a}={}){const[n,r]=I.useState(t||{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[],groups:[]});s.useEditorStore(N=>N.card.dataSource);const{columns:l,isLoading:o}=s.useColumns(),i=a||l||[],u={id:"default",qualifiedFieldName:"default",name:"default",dataType:"string",label:"Default",entityId:"default",entityName:"Default",entityType:"table"},d=N=>{const w=y=>{if(y.id===N){const k=i[0]||u,S=s.getDataType(k.dataType)==="date";return{...y,conditions:[...y.conditions,{id:`condition-${Date.now()}`,field:k,operator:S?"between":"=",value:S?[]:""}]}}return{...y,groups:y.groups.map(w)}};r(w(n))},m=N=>{const w=y=>{if(y.id===N){const k=i[0]||u,S=s.getDataType(k.dataType)==="date";return{...y,groups:[...y.groups,{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[{id:`condition-${Date.now()}`,field:k,operator:S?"between":"=",value:S?[]:""}],groups:[]}]}}return{...y,groups:y.groups.map(w)}};r(w(n))},h=(N,w)=>{const y=k=>k.id===N?{...k,conditions:k.conditions.filter(S=>S.id!==w)}:{...k,groups:k.groups.map(y)};r(y(n))},f=(N,w)=>{const y=k=>k.id===N?{...k,groups:k.groups.filter(S=>S.id!==w)}:{...k,groups:k.groups.map(y)};r(y(n))},g=(N,w,y,k)=>{if(y==="field")throw new Error("Use a dedicated method to update the field property with a Field object");const S=R=>R.id===N?{...R,conditions:R.conditions.map(C=>C.id===w?{...C,[y]:k}:C)}:{...R,groups:R.groups.map(S)};r(S(n))},j=(N,w,y)=>{const k=S=>S.id===N?{...S,conditions:S.conditions.map(R=>R.id===w?{...R,...y}:R)}:{...S,groups:S.groups.map(k)};r(k(n))},x=(N,w)=>{const y=k=>k.id===N?{...k,logicalOperator:w}:{...k,groups:k.groups.map(y)};r(y(n))},b=(N,w)=>{const y=k=>k.id===N?{...k,negate:w}:{...k,groups:k.groups.map(y)};r(y(n))},p=(N,w,y)=>{const k=S=>S.id===N?{...S,conditions:s.arrayMove(S.conditions,w,y)}:{...S,groups:S.groups.map(k)};r(k(n))},v=(N,w,y)=>{const k=S=>S.id===N?{...S,groups:s.arrayMove(S.groups,w,y)}:{...S,groups:S.groups.map(k)};r(k(n))},T=N=>{if(!N||N.conditions.length===0&&N.groups.length===0)return"-- No filters defined";const w=k=>{let S="";typeof k.field=="object"?S=k.field.entityName?`${k.field.entityName}.${k.field.name}`:k.field.name:S=String(k.field);const R=k.operator;let C=k.value;if(k.field.dataType==="string"&&!["in","not in"].includes(k.operator))typeof C=="string"?C=`'${C}'`:Array.isArray(C)&&(C=`'${C.join(", ")}'`);else if(k.field.dataType==="date"||k.field.dataType==="datetime"||k.field.dataType==="timestamp")if(k.operator==="between"&&Array.isArray(C)&&C.length===2){const F=C[0]?`'${C[0]}'`:"NULL",D=C[1]?`'${C[1]}'`:"NULL";return`${S} BETWEEN ${F} AND ${D}`}else if((k.operator==="in"||k.operator==="not in")&&Array.isArray(C)){const F=C.map(D=>D?`'${D}'`:"NULL").join(", ");return`${S} ${R} (${F})`}else typeof C=="string"||C instanceof Date?C=`'${C}'`:Array.isArray(C)&&C.length>0&&(C=`'${C[0]}'`);else if(["in","not in"].includes(k.operator)){let F=[];Array.isArray(C)?F=C.map(D=>typeof D=="string"?`'${D}'`:String(D)):typeof C=="string"?F=C.split(",").map(D=>{const E=D.trim();return k.field.dataType==="string"?`'${E}'`:E}):typeof C=="number"&&(F=[String(C)]),C=`(${F.join(", ")})`}switch(R){case"contains":return typeof C=="string"?`${S} LIKE '%${C.replace(/'/g,"")}'`:`${S} LIKE '%${String(C)}'`;case"startsWith":return typeof C=="string"?`${S} LIKE '${C.replace(/'/g,"")}%'`:`${S} LIKE '${String(C)}%'`;case"endsWith":return typeof C=="string"?`${S} LIKE '%${C.replace(/'/g,"")}'`:`${S} LIKE '%${String(C)}'`;case"isNull":return`${S} IS NULL`;case"isNotNull":return`${S} IS NOT NULL`;default:return`${S} ${R} ${C}`}},y=k=>{const S=k.conditions.map(w),R=k.groups.map(E=>y(E)),C=[...S,...R].filter(Boolean);if(C.length===0)return"";const F=C.join(` ${k.logicalOperator} `),D=C.length>1?`(${F})`:F;return k.negate?`NOT ${D}`:D};return y(N)},L=n.conditions.length>0||n.groups.length>0;return{currentFilters:n,setCurrentFilters:r,availableFields:i,isLoading:o,addCondition:d,addGroup:m,removeCondition:h,removeGroup:f,updateCondition:g,updateConditionFields:j,updateGroupOperator:x,updateGroupNegate:b,reorderConditions:p,reorderGroups:v,generateSQLPreview:T,hasAnyFilters:L}}function vo({children:t,className:a,delayDuration:n}){return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:n,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:s.cn("w-[200px] overflow-hidden text-ellipsis whitespace-nowrap text-sm",a),children:t})}),e.jsx(s.PortalTooltipContent,{children:t})]})})}const No=t=>{switch(t){case"table":return e.jsx(s.Table,{className:"h-3 w-3"});case"view":return e.jsx(s.Eye,{className:"h-3 w-3"});case"dataset":return e.jsx(s.ChartColumn,{className:"h-3 w-3"});case"file":return e.jsx(s.File,{className:"h-3 w-3"});default:return e.jsx(s.Table,{className:"h-3 w-3"})}},Co=t=>{if(t.qualifiedEntityName){const a=t.qualifiedEntityName.split(".");return a.length>1?a[0]:"default"}return"default"};function So({value:t,onValueChange:a,availableFields:n,placeholder:r="Select field",className:l="w-64"}){const[o,c]=I.useState(!1),i=I.useMemo(()=>{const u={};return n.forEach(d=>{const m=Co(d);u[m]||(u[m]={}),u[m][d.entityId]||(u[m][d.entityId]=[]),u[m][d.entityId].push(d)}),u},[n]);return e.jsxs(s.Popover,{modal:!0,open:o,onOpenChange:c,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":o,className:s.cn("justify-between",!t&&"text-muted-foreground",l),children:[t?e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(vo,{children:[t.entityName,".",t.name]})}):r,e.jsx(s.ChevronsUpDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-80 p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search fields...",className:"h-9"}),e.jsx(s.CommandEmpty,{children:"No fields found."}),e.jsx(s.CommandList,{className:"max-h-80",children:Object.entries(i).map(([u,d])=>e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Database,{className:"h-3 w-3"}),u]}),children:Object.entries(d).map(([m,h])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 bg-gray-50/50 px-2 py-1 text-xs font-medium text-gray-600",children:[No(h[0].entityType),e.jsx("span",{children:h[0].entityName})]}),h.map((f,g)=>e.jsxs(s.CommandItem,{value:f.id,onSelect:()=>{a(f),c(!1)},className:"overflow-x-auto",children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",(t==null?void 0:t.id)===f.id?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"",children:f.name})}),e.jsx("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:f.description&&e.jsx("span",{children:f.description})})]})]},f.id+g))]},`${u}-${m}`))},u))})]})})]})}function Hs(t){var j;const a=s.useEditorStore(x=>x.card),{authToken:n}=s.useSemaphorContext(),r=s.useEditorStore(x=>x.card.config),l=r==null?void 0:r.joinPlan,o={...t,alias:t.name,label:"value",role:"groupby"},c={...t,role:"metric",label:"count",alias:"count",aggregate:"COUNT"},i={...o,role:"sortby",direction:"asc"},u={joinPlan:l,groupByColumns:[o],metricColumns:[c],sortByColumns:[i]},d=((j=a.dataSource)==null?void 0:j.connectionId)||a.connectionId,{data:m,isPending:h,error:f}=s.useQuery({queryKey:["filterValues",t.entityId,t.name,t.qualifiedEntityName],queryFn:async()=>{try{return await s.postRequestRegular("https://semaphor.cloud/api/v1/query",(n==null?void 0:n.accessToken)||"",{connection_id:d,cardConfig:u,cardDataSource:a.dataSource})}catch(x){console.log(t),console.error("error",x)}},enabled:!!d,refetchOnMount:!0,refetchOnWindowFocus:!1});return{filterValues:((m==null?void 0:m.records)||[]).map(x=>({label:x.value||"BLANK",value:x.value||"BLANK",count:(x==null?void 0:x.count)||0})),isPending:h,error:f}}function wo({field:t,selected:a,onChange:n,placeholder:r="Select items...",className:l}){const[o,c]=pe.useState(!1),{filterValues:i}=Hs(t),u=m=>{n(a.filter(h=>h!==m))},d=m=>{a.includes(m)?n(a.filter(h=>h!==m)):n([...a,m])};return e.jsx("div",{className:s.cn("w-full",l),children:e.jsxs(s.Popover,{open:o,onOpenChange:c,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":o,className:"h-auto min-h-10 w-full justify-between p-2",children:[e.jsx("div",{className:"flex flex-1 flex-wrap gap-1",children:a.length>0?a.map(m=>{const h=i.find(f=>f.value===m);return e.jsxs(s.Badge,{variant:"secondary",className:"text-xs",children:[h==null?void 0:h.label,e.jsx("div",{className:"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2",onKeyDown:f=>{f.key==="Enter"&&u(m)},onMouseDown:f=>{f.preventDefault(),f.stopPropagation()},onClick:f=>{f.stopPropagation(),u(m)},children:e.jsx(s.X,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},m)}):e.jsx("span",{className:"text-muted-foreground",children:r})}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-fit overflow-auto p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No results found."}),e.jsx(s.CommandGroup,{children:i.map((m,h)=>e.jsxs(s.CommandItem,{onSelect:()=>d(m.value),children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",a.includes(m.value)?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex grow items-center justify-between gap-4",children:[e.jsx("span",{children:m.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:m.count})]})]},m.value+h))})]})]})})]})})}function Do({field:t,value:a,onChange:n,placeholder:r="Select value...",className:l}){const{filterValues:o,isPending:c,error:i}=Hs(t);return c?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):i?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsxs(s.Select,{value:a,onValueChange:n,children:[e.jsx(s.SelectTrigger,{className:l||"flex-1",children:e.jsx(s.SelectValue,{placeholder:r,children:a})}),e.jsx(s.SelectContent,{children:o.map((u,d)=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:u.value,children:u.label},u.value+d))})]})}function ko({value:t,operator:a,onChange:n,className:r}){var u;const{tokenProps:l}=s.useSemaphorContext(),o=(u=l==null?void 0:l.params)==null?void 0:u.timeZone,c=I.useMemo(()=>{if(t){if(a==="between"||a==="not between"){if(Array.isArray(t)&&t.length===2){const d=t[0]?new Date(t[0]):void 0,m=t[1]?new Date(t[1]):void 0;if(d&&m)return{from:d,to:m}}}else if(a==="="||a==="!="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:d,to:d}}}else if(a===">"||a===">="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:d,to:void 0}}}else if(a==="<"||a==="<="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:void 0,to:d}}}else if((a==="in"||a==="not in")&&Array.isArray(t)&&t.length>0){const d=new Date(t[0]),m=t.length>1?new Date(t[t.length-1]):d;if(!isNaN(d.getTime()))return{from:d,to:m}}}},[t,a]),i=d=>{if(!d){n(void 0);return}if(d.from&&d.to)n([d.from.toISOString(),d.to.toISOString()]);else if(d.from){const m=new Date(d.from);m.setHours(23,59,59,999),n([d.from.toISOString(),m.toISOString()])}else if(d.to){const m=new Date(d.to);m.setHours(0,0,0,0),n([m.toISOString(),d.to.toISOString()])}};return e.jsx(s.DateRangePicker,{value:c,onChange:i,timezone:o,showRelativeTab:!0,className:r,placeholder:"Select date..."})}const To=["=","!=",">",">=","<","<=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],Eo=["=","!=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],Io=["=","!=",">",">=","<","<=","in","not in","isNull","isNotNull"],Ao=["=","!=","isNull","isNotNull"],Mo=["between","isNull","isNotNull"],Lo={"=":"Equals","!=":"Not Equals",">":"Greater Than",">=":"Greater Than or Equal","<":"Less Than","<=":"Less Than or Equal",contains:"Contains",startsWith:"Starts With",endsWith:"Ends With",in:"In","not in":"Not In",between:"Between",isNull:"Is Null",isNotNull:"Is Not Null"};function ft(t){return Lo[t]||s.titleCase(t)}function Ro(t){switch(t){case"string":return Eo;case"number":return Io;case"boolean":return Ao;case"date":return Mo;default:return To}}function fa({condition:t,index:a,groupId:n,groupLogicalOperator:r,onUpdateCondition:l,onRemoveCondition:o,onUpdateGroupOperator:c,availableFields:i,updateConditionFields:u}){const{attributes:d,listeners:m,setNodeRef:h,transform:f,transition:g,isDragging:j}=s.useSortable({id:t.id}),{isPending:x,error:b}=Hs(t.field),p={transform:s.CSS.Transform.toString(f),transition:g};return e.jsxs("div",{ref:h,style:p,className:`mb-2 flex items-center gap-2 rounded p-2 hover:bg-muted/50 ${j?"z-50 opacity-50":""}`,children:[e.jsx("div",{...d,...m,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 flex-shrink-0 text-gray-400"})}),a>0&&e.jsxs(s.Select,{value:r,onValueChange:v=>c(n,v),children:[e.jsx(s.SelectTrigger,{className:"w-24",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"AND",children:"AND"}),e.jsx(s.SelectItem,{value:"OR",children:"OR"})]})]}),a===0&&e.jsx("div",{className:"w-24"}),e.jsx(So,{value:t.field,onValueChange:v=>{const T=v,L=s.getDataType(T.dataType)==="date";u(n,t.id,{field:T,value:"",operator:L?"between":"="})},availableFields:i,placeholder:"Select field",className:"w-64"}),e.jsxs(s.Select,{value:t.operator,onValueChange:v=>{v==="in"||v==="not in"?u(n,t.id,{operator:v,value:[]}):v==="isNull"||v==="isNotNull"?u(n,t.id,{operator:v,value:null}):u(n,t.id,{operator:v,value:""})},children:[e.jsx(s.SelectTrigger,{className:"w-44",children:e.jsx(s.SelectValue,{children:t.operator?ft(t.operator):""})}),e.jsx(s.SelectContent,{children:Ro(s.getDataType(t.field.dataType)).map(v=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:v,children:ft(v)},v))})]}),t.operator==="isNull"||t.operator==="isNotNull"?e.jsx("div",{className:"flex-1"}):s.getDataType(t.field.dataType)==="string"?t.operator==="in"||t.operator==="not in"?x?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):b?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsx(wo,{field:t.field,selected:Array.isArray(t.value)&&t.value.every(v=>typeof v=="string")?t.value:[],onChange:v=>u(n,t.id,{value:v}),placeholder:`Select values for ${t.operator}...`,className:"flex-1"}):["contains","startsWith","endsWith"].includes(t.operator)?e.jsx(s.Input$1,{value:typeof t.value=="string"?t.value:"",onChange:v=>u(n,t.id,{value:v.target.value}),className:"flex-1",placeholder:t.operator.charAt(0).toUpperCase()+t.operator.slice(1)+"..."}):e.jsx(Do,{field:t.field,value:typeof t.value=="string"?t.value:"",onChange:v=>u(n,t.id,{value:v}),placeholder:"Select value...",className:"flex-1"}):s.getDataType(t.field.dataType)==="boolean"?e.jsxs(s.Select,{value:typeof t.value=="boolean"?String(t.value):"",onValueChange:v=>u(n,t.id,{value:v==="true"}),children:[e.jsx(s.SelectTrigger,{className:"flex-1",children:e.jsx(s.SelectValue,{placeholder:"Select value..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"true",children:"True"}),e.jsx(s.SelectItem,{value:"false",children:"False"})]})]}):s.getDataType(t.field.dataType)==="date"?e.jsx(ko,{value:t.value,operator:t.operator,onChange:v=>u(n,t.id,{value:v}),className:"flex-1"}):e.jsx(s.Input$1,{value:typeof t.value=="string"||typeof t.value=="number"?t.value:"",onChange:v=>l(n,t.id,"value",v.target.value),className:"flex-1",placeholder:t.operator==="in"||t.operator==="not in"?"value1, value2, value3":"Value"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 flex-shrink-0 p-0",onClick:()=>o(n,t.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]})}function Oo({group:t,depth:a,parentGroupId:n,onUpdateGroupOperator:r,onUpdateGroupNegate:l,onRemoveGroup:o,onUpdateCondition:c,onUpdateField:i,onRemoveCondition:u,onReorderConditions:d,onReorderGroups:m,onAddCondition:h,onAddGroup:f,availableFields:g,renderFilterGroup:j,updateConditionFields:x}){const{attributes:b,listeners:p,setNodeRef:v,transform:T,transition:L,isDragging:N}=s.useSortable({id:t.id}),w={transform:s.CSS.Transform.toString(T),transition:L},y=S=>{const{active:R,over:C}=S;if(C&&R.id!==C.id){const F=t.conditions.findIndex(E=>E.id===R.id),D=t.conditions.findIndex(E=>E.id===C.id);F!==-1&&D!==-1&&d(t.id,F,D)}},k=S=>{const{active:R,over:C}=S;if(C&&R.id!==C.id&&n){const F=t.groups.findIndex(E=>E.id===R.id),D=t.groups.findIndex(E=>E.id===C.id);F!==-1&&D!==-1&&m(n,F,D)}};return e.jsxs("div",{ref:v,style:w,className:`rounded-lg ${a>0?"mt-2 border border-border":""} ${N?"z-50 opacity-50":""}`,children:[a>0&&e.jsxs("div",{className:"flex items-center justify-between rounded-t-lg bg-muted p-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{...b,...p,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(s.Button,{variant:t.negate?"default":"outline",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>l(t.id,!t.negate),children:"NOT"}),e.jsxs(s.Select,{value:t.logicalOperator,onValueChange:S=>r(t.id,S),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"AND",children:"AND"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"OR",children:"OR"})]})]}),e.jsx("span",{className:"text-sm font-medium",children:"Group"})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>n&&o(n,t.id),children:e.jsx(s.Trash2,{className:"h-3 w-3"})})]}),e.jsxs("div",{className:`p-3 ${a>0?"":"px-0"}`,children:[e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:y,children:e.jsx(s.SortableContext,{items:t.conditions.map(S=>S.id),strategy:s.verticalListSortingStrategy,children:t.conditions.map((S,R)=>e.jsx(fa,{condition:S,index:R,groupId:t.id,groupLogicalOperator:t.logicalOperator,onUpdateCondition:c,onUpdateField:i,onRemoveCondition:u,onUpdateGroupOperator:r,availableFields:g,updateConditionFields:x},S.id))})}),e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:k,children:e.jsx(s.SortableContext,{items:t.groups.map(S=>S.id),strategy:s.verticalListSortingStrategy,children:t.groups.map(S=>j(S,a+1,t.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>h(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>f(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})]})}function Fo({filters:t,availableFields:a,onSave:n,onClearAll:r,onCancel:l}){const{currentFilters:o,availableFields:c,isLoading:i,addCondition:u,addGroup:d,removeCondition:m,removeGroup:h,updateCondition:f,updateConditionFields:g,updateGroupOperator:j,updateGroupNegate:x,reorderConditions:b,reorderGroups:p,generateSQLPreview:v,hasAnyFilters:T,setCurrentFilters:L}=bo({initialFilters:t,availableFields:a}),N=s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),[w,y]=I.useState(!1),k=(C,F,D)=>{const E=A=>A.id===C?{...A,conditions:A.conditions.map(B=>B.id===F?{...B,field:D,dataType:D.dataType}:B)}:{...A,groups:A.groups.map(E)};L(E(o))},S=(C,F=0,D)=>F===0?e.jsx("div",{className:"rounded-lg",children:e.jsxs("div",{className:"p-3 px-0",children:[e.jsx(s.DndContext,{sensors:N,collisionDetection:s.closestCenter,onDragEnd:E=>{const{active:A,over:B}=E;if(B&&A.id!==B.id){const M=C.conditions.findIndex(z=>z.id===A.id),O=C.conditions.findIndex(z=>z.id===B.id);M!==-1&&O!==-1&&b(C.id,M,O)}},children:e.jsx(s.SortableContext,{items:C.conditions.map(E=>E.id),strategy:s.verticalListSortingStrategy,children:C.conditions.map((E,A)=>e.jsx(fa,{condition:E,index:A,groupId:C.id,groupLogicalOperator:C.logicalOperator,onUpdateCondition:f,onUpdateField:k,onRemoveCondition:m,onUpdateGroupOperator:j,availableFields:c,updateConditionFields:g},E.id))})}),e.jsx(s.DndContext,{sensors:N,collisionDetection:s.closestCenter,onDragEnd:E=>{const{active:A,over:B}=E;if(B&&A.id!==B.id){const M=C.groups.findIndex(z=>z.id===A.id),O=C.groups.findIndex(z=>z.id===B.id);M!==-1&&O!==-1&&p(C.id,M,O)}},children:e.jsx(s.SortableContext,{items:C.groups.map(E=>E.id),strategy:s.verticalListSortingStrategy,children:C.groups.map(E=>S(E,F+1,C.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",className:"h-7 text-xs",variant:"outline",onClick:()=>u(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),w&&e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>d(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})},C.id):e.jsx(Oo,{group:C,depth:F,parentGroupId:D,onUpdateGroupOperator:j,onUpdateGroupNegate:x,onRemoveGroup:h,onUpdateCondition:f,onUpdateField:k,onRemoveCondition:m,onReorderConditions:b,onReorderGroups:p,onAddCondition:u,onAddGroup:d,availableFields:c,renderFilterGroup:S,updateConditionFields:g},C.id),R=s.getFilterCount(t);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Card,{children:e.jsx(s.CardContent,{className:"p-4",children:e.jsxs("div",{className:"space-y-4",children:[i?e.jsxs("div",{className:"flex items-center justify-center p-4",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600"}),e.jsx("span",{className:"ml-2 text-sm text-gray-600",children:"Loading columns..."})]}):S(o),e.jsx("div",{className:"mt-4 border-t border-border pt-4",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Checkbox,{id:"advanced-mode",checked:w,onCheckedChange:C=>y(!!C)}),e.jsx("label",{htmlFor:"advanced-mode",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Advanced mode (enable grouping)"})]})}),T&&e.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[e.jsx("div",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"SQL WHERE Clause Preview"}),e.jsx("div",{className:"overflow-x-auto rounded-md border bg-muted p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:v(o)})})]})]})})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"outline",onClick:l,children:"Cancel"}),R>0&&e.jsx(s.Button,{variant:"outline",size:"sm",onClick:r,children:"Clear All"}),e.jsx(s.Button,{size:"sm",onClick:()=>n(T?o:null),children:"Apply Filters"})]})]})}function Bo({cardId:t,filters:a,onFiltersChange:n,onClearFilters:r,availableFields:l,isOpen:o,onOpenChange:c}){const i=d=>{n(t,d),c(!1)},u=()=>{r(t),c(!1)};return e.jsxs(s.Dialog,{modal:!1,open:o,onOpenChange:c,children:[o&&e.jsx("div",{className:"pointer-events-none fixed inset-0 z-40 bg-background/80 backdrop-blur-sm"}),e.jsxs(s.DialogContent,{className:"max-h-[80vh] max-w-4xl overflow-y-auto",onInteractOutside:d=>{d.preventDefault()},children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Card Filters"}),e.jsx(s.DialogDescription,{children:"Add filters to the card to limit the data that is displayed."})]}),e.jsx(Fo,{filters:a,availableFields:l,onSave:i,onCancel:()=>c(!1),onClearAll:u})]})]})}function Po({activeCardId:t,sourceFields:a,getFieldsForContainer:n,setFieldsForContainer:r}){var g;const[l,o]=I.useState(null),c=s.useEditorStore(j=>j.card),i=(g=c==null?void 0:c.config)==null?void 0:g.joinPlan,u=[...a,...n("groupBy"),...n("pivotBy"),...n("metrics"),...n("sortBy")],d=I.useCallback(j=>j.startsWith("card-")?null:j.startsWith("source-")||a.find(x=>x.id===j)?"source":n("groupBy").find(x=>x.id===j)?"groupBy":n("metrics").find(x=>x.id===j)?"metrics":n("pivotBy").find(x=>x.id===j)?"pivotBy":n("sortBy").find(x=>x.id===j)?"sortBy":null,[a,n]),m=I.useCallback(j=>{o(j.active.id)},[]),h=I.useCallback(j=>{const{active:x,over:b}=j;if(!b||!t){o(null);return}const p=x.id,v=b.id,T=d(p),L=d(v)||v;if(T==="source"&&L==="sortBy"){o(null);return}if(T==="source"&&L!=="source"&&L!=="sortBy"){const N=[...a].find(S=>S.id===p);if(!N){o(null);return}const w=[...n("groupBy"),...n("pivotBy"),...n("metrics"),...n("sortBy")];if(w.length>0){const S=w[0].qualifiedEntityName;if(!S){o(null);return}if(S!==N.qualifiedEntityName&&N.qualifiedEntityName)if(i){if(!s.areEntitiesJoined(S,N.qualifiedEntityName,i)){s.showJoinRequiredNotification(),o(null);return}}else{s.showJoinRequiredNotification(),o(null);return}}const y=n(L);if(s.fieldAlreadyExists(N,y)){o(null);return}const k=s.getNewField(N,L,y);o(null),r(L,[...y,k]);return}if(T&&L&&T!=="source"&&L!=="source"&&T!==L){const N=n(T),w=n(L),y=N.find(R=>R.id===p);if(!y){o(null);return}const k=s.getNewField(y,L,w);if(o(null),L==="sortBy"){if(T==="pivotBy"){o(null);return}s.fieldAlreadyExists(y,w)||r(L,[...w,k]);return}const S=N.filter(R=>R.id!==p);r(T,S),r(L,[...w,k]);return}if(T&&L&&T===L&&T!=="source"){const N=n(T),w=N.findIndex(k=>k.id===p),y=N.findIndex(k=>k.id===v);if(w!==y){const k=s.arrayMove(N,w,y);r(T,k)}}o(null)},[t,a,n,r,d,i]),f=l?u.find(j=>j.id===l):null;return{activeId:l,activeField:f,handleDragStart:m,handleDragEnd:h}}function zo({dashboardFilterCount:t=0,cardFilterCount:a=0,clickFilterCount:n=0,onClick:r,className:l,showIcon:o=!0}){const c=t+a+n,i=c>0,u=t>0,d=a>0,m=n>0,h=e.jsxs(e.Fragment,{children:[o&&e.jsx(s.Filter,{className:"h-3.5 w-3.5"}),i&&e.jsx("span",{className:"font-medium",children:c})]}),f=e.jsx(s.Button,{variant:i?"secondary":"outline",size:"sm",onClick:r,className:s.cn("h-8 gap-1.5 transition-all",l),children:h});return i?e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:200,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:f}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"p-2 text-xs",children:e.jsxs("div",{className:"space-y-1.5",children:[u&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-purple-500"}),e.jsxs("span",{children:[t," Dashboard filter",t!==1?"s":""]})]}),d&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-blue-500"}),e.jsxs("span",{children:[a," Card filter",a!==1?"s":""]})]}),m&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-500"}),e.jsxs("span",{children:[n," Click filter",n!==1?"s":""]})]})]})})]})}):f}function Vo({onAdvancedToggle:t,onDebugToggle:a,onAccept:n}){const{currentUser:r}=Ie();r==null||r.role;const[l,o]=I.useState(!1),c=s.useEditorStore(p=>p.isDevMode),i=s.useEditorStore(p=>p.card),u=s.useEditorStore(p=>p.card.dataSource);s.isExplorerCard(i);const{config:d}=I.useContext(s.SemaphorContext).tokenProps,m=(d==null?void 0:d.showAdvancedMode)!==!1,{setIsDevMode:h}=s.useEditorActions(),f=s.useEditorStore(p=>p.showAIDialog),g=s.useEditorStore(p=>p.frame),j=s.useManagementStore(p=>p.selectedVisual),x=(j==null?void 0:j.id)===(g==null?void 0:g.id),{setShowAIDialog:b}=s.useEditorActions();return e.jsxs("div",{className:s.cn("flex items-center justify-between px-6 py-3",f&&"justify-end",!m&&"justify-end"),children:[m&&t&&!f&&e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.SmallSwitch,{className:s.cn("",{}),checked:c,onCheckedChange:()=>h(!c),id:"advanced-mode"}),e.jsx("label",{htmlFor:"advanced-mode",className:"text-sm font-medium",children:"Advanced Mode"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[(r==null?void 0:r.type)!=="tenant"&&e.jsxs(s.DropdownMenu,{modal:!1,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 p-0",children:e.jsx(s.EllipsisVertical,{className:"size-3.5"})})}),e.jsx(s.DropdownMenuContent,{align:"end",children:e.jsxs(s.DropdownMenuItem,{onClick:()=>{o(!0)},children:[e.jsx(s.Database,{className:"mr-2 h-4 w-4"}),"Set Data Context"]})})]}),e.jsx(Us,{}),n&&!x&&e.jsx(_s,{variant:"default"}),x&&e.jsx(Ar,{}),a&&s.isDevEnv]}),l&&e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(u==null?void 0:u.selectedEntities)||[],open:l,onOpenChange:o,dataSource:u||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}function _o({activeView:t,onViewChange:a}){const n=s.useEditorStore(l=>l.card),{errorMessage:r}=s.useDashboardCardQuery(n);return e.jsx(s.Tabs,{value:t,onValueChange:l=>a(l),children:e.jsxs(s.TabsList,{className:"h-9 w-fit gap-1 bg-background p-0",children:[e.jsx(s.TabsTrigger,{value:"chart",className:"rounded-md transition data-[state=active]:bg-muted",children:"Chart"}),e.jsx(s.TabsTrigger,{value:"table",className:"rounded-md transition data-[state=active]:bg-muted",children:"Results"}),n.type!=="kpi"&&e.jsx(s.TabsTrigger,{value:"sql",className:s.cn("rounded-md transition data-[state=active]:bg-muted",r&&"text-destructive data-[state=active]:bg-destructive/10 data-[state=active]:text-destructive"),children:r?"Error":"Info"})]})})}const Uo=[{value:"10",label:"Top 10"},{value:"20",label:"Top 20"},{value:"50",label:"Top 50"},{value:"100",label:"Top 100"},{value:"200",label:"Top 200"},{value:"500",label:"Top 500"},{value:"1000",label:"Top 1000"}];function $o(){var u,d;const t=s.useEditorStore(m=>m.card),{updateRowLimit:a}=s.useEditorActions(),[n,r]=I.useState(!1),[l,o]=I.useState(""),c=m=>{if(m==="custom"){r(!0);return}r(!1),a(t.id,parseInt(m))},i=m=>{const h=m.target.value;o(h),h&&!isNaN(parseInt(h))&&a(t.id,parseInt(h))};return e.jsx("div",{className:"flex items-center gap-2",children:n?e.jsx(s.Input,{type:"number",value:l,onChange:i,className:"h-7 w-24",placeholder:"Enter limit",min:1}):e.jsxs(s.Select,{value:((d=(u=t.config)==null?void 0:u.rowLimit)==null?void 0:d.toString())||"100",onValueChange:c,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-24 border-none px-1 [&>svg]:hidden",children:e.jsx(s.SelectValue,{placeholder:"Select limit"})}),e.jsx(s.SelectContent,{children:Uo.map(m=>e.jsx(s.SelectItem,{value:m.value,children:m.label},m.value))})]})})}function qo({isOpen:t,onClose:a}){const n=Ot(a,{enabled:t}),r=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.url)||""}),l=s.useEditorStore(m=>m.card),o=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.pluginChartType)||""}),c=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.settings)||{}}),{data:i}=s.useDashboardCardQuery(l),{getCard:u}=s.useCustomVisual(r),d=I.useMemo(()=>!r||r.trim()===""?null:u("Chart Settings"),[u,r]);return e.jsx("div",{ref:n,className:s.cn("absolute right-0 top-0 z-40 h-full w-[350px] border-l bg-background shadow-lg transition-transform duration-300",t?"translate-x-0":"translate-x-full"),style:{willChange:"transform"},tabIndex:t?0:-1,"aria-hidden":!t,children:e.jsxs("div",{className:"flex h-full flex-col p-4 px-5 pr-4",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-base font-semibold",children:"Chart Settings"}),e.jsx(s.IconButton,{"aria-label":"Hide Chart Settings",tooltip:"Hide",onClick:a,className:"h-7 p-2 text-muted-foreground hover:text-foreground",children:e.jsx(s.X,{className:"size-3.5"})})]}),e.jsx("div",{className:"h-full min-h-0 flex-1",children:d&&e.jsx(I.Suspense,{fallback:e.jsx("div",{children:"Loading chart settings..."}),children:e.jsx(d,{chartData:(i==null?void 0:i.records)||[],chartType:o,settings:c})})})]})})}function Yo({activeView:t,onViewChange:a,showDebug:n,onDebugToggle:r,onAccept:l,onClear:o,onAdvancedToggle:c,onFiltersClick:i,filterCount:u,activeCard:d,columns:m,columnsLoading:h,columnsError:f}){var P;const g=s.useEditorStore(H=>H.card),j=s.useDashboardStore(H=>H.filterValues),x=(j==null?void 0:j.length)||0,{updateCardConfig:b,setCard:p,updateCardInFrame:v,setCardId:T}=s.useEditorActions(),{updateCardId:L}=s.useDashboardActions(),[N,w]=I.useState(null),y=s.useEditorStore(H=>H.showAIDialog),[k,S]=I.useState(!1),R=s.useEditorStore(H=>{var X;return((X=H.card.customCardPreferences)==null?void 0:X.url)&&H.card.type==="custom"}),{data:C,errorMessage:F,isLoading:D,isFetching:E,pagination:A}=s.useDashboardCardQuery(d),B=(H,X)=>{const Q={...d,paginationConfig:{page:H+1,pageSize:X}};p(Q),v(Q)};function M(){return e.jsx("div",{className:"border-b border-border bg-background p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Active Card Config"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(g.config||{},null,2)})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Dashboard Filters"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(j||{},null,2)})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Card Data Source State"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(d.dataSource||{},null,2)})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-2 text-sm font-medium",children:["Columns (",m.length,")"]}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:h?"Loading...":f?"Error loading columns":JSON.stringify(m.slice(0,5),null,2)})]})]})})}const O=H=>{if(!g.config)return;if(!H.length){b(g.id,{...g.config,sortByColumns:[]});return}const X=g.config,Q=H.map(({id:Y,desc:K})=>{var $,Z;const U=($=X.metricColumns)==null?void 0:$.find(ne=>ne.label===Y),_=(Z=X.groupByColumns)==null?void 0:Z.find(ne=>ne.label===Y),V=U||_;return V?{id:s.getFieldId("sortBy",V),name:V.name,dataType:V.dataType,label:V.label,qualifiedEntityName:V.qualifiedEntityName,entityId:V.entityId,entityName:V.entityName,entityType:V.entityType,role:"sortby",direction:K?"desc":"asc"}:null}).filter(Y=>Y!==null);b(g.id,{...X,sortByColumns:Q})},z=I.useMemo(()=>{var H,X;return(X=(H=g.config)==null?void 0:H.sortByColumns)==null?void 0:X.map(Q=>({id:Q.label,desc:Q.direction==="desc"}))},[(P=g.config)==null?void 0:P.sortByColumns]);return e.jsxs("div",{className:"relative flex w-0 grow flex-col",children:[e.jsx(Vo,{showDebug:n,onDebugToggle:r,onAccept:l,onClear:o,onAdvancedToggle:c,onFiltersClick:i,filterCount:u}),n&&M(),e.jsxs("div",{className:"group/visualization relative flex h-full max-w-full grow flex-col pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 px-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t==="chart"&&y&&e.jsx(sa,{variant:"outline"}),e.jsx(_o,{activeView:t,onViewChange:a}),i&&e.jsx(zo,{dashboardFilterCount:x,cardFilterCount:u,onClick:i,className:"h-8"}),e.jsx("div",{className:"ml-2",children:e.jsx($o,{})}),y&&e.jsx(js,{})]}),e.jsx("div",{className:s.cn("flex grow items-center justify-end"),children:t==="chart"&&e.jsx(ta,{})})]}),!k&&R&&e.jsx(s.IconButton,{"aria-label":"Open Chart Settings",tooltip:"Open Chart Settings",onClick:()=>S(!0),className:"absolute right-5 top-1/2 z-40 size-10 -translate-y-1/2 rounded-full border border-border bg-background shadow-lg hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:e.jsx(s.Settings2,{className:"size-4"})}),e.jsxs("div",{className:"mt-3 flex grow flex-col",children:[t==="chart"&&e.jsx("div",{className:"flex grow flex-col pb-6",children:e.jsx(aa,{})}),t==="table"&&(C==null?void 0:C.records)&&e.jsx("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 p-6",children:e.jsx(s.TableVisual,{card:d,data:(C==null?void 0:C.records)||[],paginationMetadata:A,onPaginationChange:B,isLoading:D||E,onSortChange:O,sortState:z})}),t==="sql"&&e.jsx("div",{className:"p-6",children:e.jsxs("div",{className:"rounded-md bg-background",children:[e.jsxs("div",{className:"mb-2",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Card ID:"}),e.jsx(s.EditableText,{value:g.id,onSave:H=>{const X=s.sanitizeCardId(H);if(!X){w("Card ID cannot be empty");return}const Q=L(g.id,X);if(Q.success){T(X);const Y={...g,id:X};p(Y),v(Y),w(null),s.ue.success("Card ID updated successfully")}else w(Q.error||"Failed to update Card ID"),s.ue.error(Q.error||"Failed to update Card ID")},isEditable:!0,placeholder:"Enter card ID",displayClassName:"font-mono text-xs text-muted-foreground hover:text-foreground",inputClassName:"font-mono text-xs"}),e.jsx(s.CopyButton,{text:g.id,className:"h-5 w-5"})]}),N&&e.jsx("p",{className:"text-xs text-destructive",children:N})]}),(C==null?void 0:C.sql)&&e.jsx("h3",{className:"mb-3 font-mono text-xs font-medium",children:"Generated SQL Query"}),e.jsx(Ht,{sql:C==null?void 0:C.sql,error:F})]})})]}),e.jsx(qo,{isOpen:k,onClose:()=>S(!1)})]})]})}function Go({activeField:t}){const[a,n]=I.useState(!0);return I.useEffect(()=>{t&&n(!0)},[t]),t?e.jsxs("div",{className:`flex max-w-[300px] items-center gap-2 rounded-lg border border-blue-500 bg-background p-2 shadow-lg transition-all duration-200 ${a?"scale-100 opacity-100":"scale-95 opacity-0"}`,children:[e.jsx(s.GripVertical,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),e.jsx(Ks,{dataType:t.dataType}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm dark:text-muted-foreground",children:t.label||t.name})]}):null}const Ko=()=>{const t=console.error;console.error=(...r)=>{r.length>0&&typeof r[0]=="string"&&r[0].includes("ResizeObserver loop completed with undelivered notifications")||t.apply(console,r)};const a=r=>{if(r.message&&(r.message.includes("ResizeObserver loop completed with undelivered notifications")||r.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),r.stopPropagation(),!1},n=r=>{var l;if((l=r.reason)!=null&&l.message&&(r.reason.message.includes("ResizeObserver loop completed with undelivered notifications")||r.reason.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),!1};return window.addEventListener("error",a,!0),window.addEventListener("unhandledrejection",n,!0),()=>{console.error=t,window.removeEventListener("error",a,!0),window.removeEventListener("unhandledrejection",n,!0)}};function Ho(){var Q,Y;const[t,a]=I.useState("chart"),[n,r]=I.useState(!1),[l,o]=I.useState(!1),[c,i]=I.useState(!0),u=s.useEditorStore(K=>K.showAIDialog),d=s.useDashboardStore(K=>K.isVisualEditing),{setCardType:m}=s.useEditorActions(),h=s.useEditorStore(K=>K.card.type);I.useEffect(()=>Ko(),[]);const f=()=>{console.log("Accept clicked - would save/apply current configuration")},g=()=>{console.log("Clear clicked - would reset all configurations")},j=()=>{console.log("Advanced mode toggled")},x=()=>{o(!0)},b=K=>{m(K)},p=s.useEditorStore(K=>K.frame),v=s.useEditorStore(K=>K.card);s.useEditorStore(K=>K.activeTabCardId),s.useEditorStore(K=>K.actions.getAvailableFields);const{addCard:T,removeCard:L,updateCard:N,setActiveCard:w,updateFilters:y}=s.useEditorActions(),{columns:k=[],isLoading:S,error:R}=s.useColumns(),C=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),F=v,{getFieldsForContainer:D,setFieldsForContainer:E}=Gs(F),{activeField:A,handleDragStart:B,handleDragEnd:M}=Po({activeCardId:p.activeCardId,sourceFields:k,getFieldsForContainer:D,setFieldsForContainer:E}),O=(K,U)=>{U&&y(K,U)},z=K=>{var U;N(K,{config:{...(U=p.cards.find(_=>_.id===K))==null?void 0:U.config,filters:void 0}})},P=k,H=K=>{if(!K)return 0;let U=K.conditions.length;return K.groups.forEach(_=>{U+=H(_)}),U},X=H(((Q=F==null?void 0:F.config)==null?void 0:Q.filters)||null);return e.jsxs(s.DndContext,{sensors:C,collisionDetection:s.closestCenter,onDragStart:B,onDragEnd:M,children:[e.jsxs("div",{className:"flex h-full grow",children:[e.jsx(eo,{isVisible:c,onToggleVisibility:()=>i(!c)}),e.jsxs("div",{className:"flex flex-1 transition-all duration-300 ease-in-out",children:[!u&&e.jsx(yo,{selectedChart:h,onChartChange:b,groupByFields:D("groupBy"),pivotByFields:D("pivotBy"),metricsFields:D("metrics"),sortByFields:D("sortBy")}),e.jsx(Yo,{selectedChart:h,activeView:t,onViewChange:a,showDebug:n,onDebugToggle:()=>r(!n),onAccept:f,onClear:g,onAdvancedToggle:j,onFiltersClick:x,filterCount:X,activeCard:F,dataSourceState:v.dataSource||s.EMPTY_DATA_SOURCE,columns:k,columnsLoading:S,columnsError:R,getFieldsForContainer:D,cards:p.cards,activeCardId:p.activeCardId,addCard:T,setActiveCard:w})]}),!c&&d&&e.jsx("div",{className:"fixed left-6 top-[105px] z-50",children:e.jsx(s.Button,{size:"sm",variant:"outline",className:"h-10 w-10 rounded-full border-border bg-background p-0 shadow-lg hover:bg-muted",onClick:()=>i(!0),title:"Show Data Source Panel",children:e.jsx(s.Database,{className:"h-4 w-4"})})})]}),F&&e.jsx(Bo,{cardId:F.id,filters:((Y=F.config)==null?void 0:Y.filters)||null,onFiltersChange:O,onClearFilters:z,availableFields:P,isOpen:l,onOpenChange:o}),e.jsx(s.DragOverlay,{dropAnimation:null,children:e.jsx(Go,{activeField:A||null})})]})}function Qo({authToken:t,onSave:a,onClose:n}){const r=I.useRef(null),l=s.useEditorStore(v=>v.showAIDialog),o=s.useEditorStore(v=>v.isDevMode),{setAuthToken:c}=s.useDashboardActions(),{setShowAIDialog:i,setOnSave:u,setOnClose:d}=s.useEditorActions(),{handleDragOver:m,handleDragEnd:h,handleDragStart:f,handleDragCancel:g,sensors:j}=Sr();I.useEffect(()=>{a&&u(a),n&&d(n)},[a,u,n,d]),I.useEffect(()=>{t&&t.accessToken&&c(t)},[t,c]),I.useEffect(()=>{var v,T;l?((v=r.current)==null||v.resize(40),i(!0)):(i(!1),(T=r.current)==null||T.resize(0))},[l,i]);function x(v){v<1?i(!1):l||i(!0)}function b(){return e.jsxs(e.Fragment,{children:[e.jsx(Gt,{type:"main"}),e.jsxs(s.ResizablePanelGroup,{"data-content":"editor-main",className:"grow",direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] rounded-none",children:e.jsx(Vl,{})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:x,defaultSize:0,children:e.jsx(ut,{})})]})]})}function p(){return e.jsxs(s.ResizablePanelGroup,{"data-content":"explorer",className:"flex grow",direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] grow rounded-none",children:e.jsx(Ho,{})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:x,defaultSize:0,children:e.jsx(ut,{})})]})}return e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:o?e.jsx(s.DndContext,{sensors:j,onDragStart:f,onDragEnd:h,onDragOver:m,onDragCancel:g,children:e.jsx("section",{className:"isolate flex h-full grow","data-content":"editor-panel",children:b()})}):p()})}function Wo(){s.useDashboardStore(c=>c.selectedCardId);const t=s.useDashboardStore(c=>c.selectedSheetId),{setIsVisualEditing:a}=s.useDashboardStore(c=>c.actions),n=s.useDashboardStore(c=>c.isVisualEditing),r=s.useDashboardStore(c=>c.actions.updateFrame);function l(c){t&&(r(t,c),a(!1))}function o(){a(!1)}return e.jsx("div",{role:"editor-container",className:s.cn("flex-1 grow basis-0 overflow-auto",{"max-h-0 overflow-hidden":!n}),children:e.jsx(Qo,{onSave:l,onClose:o})})}function Jo({column:t}){return e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger$1,{className:"shrink-0",asChild:!0,children:s.isTextDataType(t.data_type)?e.jsx(s.TextIcon,{className:"size-3 text-muted-foreground"}):s.isNumberDataType(t.data_type)?e.jsx(Te,{className:"size-3 text-muted-foreground"}):s.isDateDataType(t.data_type)?e.jsx(s.Calendar,{className:"size-3 text-muted-foreground"}):s.isBooleanDataType(t.data_type)?e.jsx(Ue,{className:"size-3 text-muted-foreground"}):t.data_type.startsWith("json")?e.jsx(Ra,{className:"size-3 text-muted-foreground"}):e.jsx(s.QuestionMarkIcon,{className:"size-3 text-muted-foreground"})}),e.jsx(s.TooltipContent,{children:e.jsx("p",{className:"text-xs",children:t.data_type})})]})}function Xo(){const t=s.useEditorStore(o=>o.selectedDatabaseName),a=s.useEditorStore(o=>o.selectedTableName),n=s.useDashboardStore(o=>o.dashboard.filters)||[],{columns:r}=s.useEditorAside(),{assignFilter:l}=$s();return e.jsx(s.ScrollArea,{className:"flex-1 basis-0 flex-col px-3",children:r==null?void 0:r.map(o=>{const c=n==null?void 0:n.find(i=>i.column===s.fmt(o.column_name)&&i.table===a&&i.database===t);return e.jsx("div",{onClick:()=>l(o),className:s.cn("group flex cursor-pointer items-center justify-between border border-dashed border-background px-3 py-[6px] text-sm transition-colors hover:bg-muted/50",{"bg-muted":c}),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Jo,{column:o}),e.jsx("span",{children:o.column_name})]})},o.column_name)})})}function Zo({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function ei(){const[t,a]=I.useState(""),[n,r]=I.useState("all"),l=s.useDashboardStore(p=>p.dashboard.filters)||[],{assignFilter:o}=$s(),c=s.useEditorStore(p=>p.card.dataSource),{columns:i=[],isLoading:u,error:d}=s.useColumns(),m=i.filter(p=>p.name.toLowerCase().includes(t.toLowerCase())||p.dataType.toLowerCase().includes(t.toLowerCase())||p.label&&p.label.toLowerCase().includes(t.toLowerCase())),h=p=>{const v=s.getDataType(p.dataType);return v==="number"?"metrics":(["date","string","boolean"].includes(v),"dimensions")},f=n==="all"?m:m.filter(p=>h(p)===n),g=m.filter(p=>h(p)==="dimensions").length,j=m.filter(p=>h(p)==="metrics").length,x=p=>{const v={column_name:p.name,data_type:p.dataType,label:p.label,description:p.description};o(v,"dashboard",p)};if(u)return e.jsx("div",{className:"flex h-full grow flex-col items-center justify-center px-3",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading fields"})});if(d)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-3",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"})]});if(!c||!c.selectedEntities||c.selectedEntities.length===0)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-6 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"})]});if(i.length===0)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-6 py-8 text-center",children:[e.jsx("p",{className:"text-sm text-gray-500",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"})]});const b=m.length>0;return e.jsxs("div",{className:"flex h-full grow flex-col pb-4",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-3 px-3 pt-3",children:[i.length>0&&e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:t,onChange:p=>a(p.target.value)})]}),b&&e.jsx(s.Tabs,{defaultValue:"all",value:n,onValueChange:p=>r(p),children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-3",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:m.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:g})]}),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:j})]})]})})]}),e.jsxs(s.ScrollArea,{className:"flex-1 basis-0 flex-col px-3 pt-3",children:[f.length===0&&t&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:['No fields found matching "',t,'"']}),f.length===0&&!t&&n!=="all"&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:["No ",n," fields found"]}),f.map(p=>{const v=l==null?void 0:l.some(T=>{var L;return T.title===p.name||((L=T.column)==null?void 0:L.includes(p.name))});return e.jsx("div",{onClick:()=>x(p),className:s.cn("group flex cursor-pointer items-center justify-between border border-dashed border-background px-3 py-[6px] text-sm transition-colors hover:bg-muted/50",{"bg-muted":v}),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Zo,{dataType:p.dataType}),e.jsx("span",{children:p.label||p.name})]})},p.id)})]})]})}function si(){var r;const t=s.useDashboardStore(l=>l.actions.setShowFilters),a=s.useCurrentActiveCard(),n=a&&((r=a.dataSource)==null?void 0:r.selectedEntities)&&a.dataSource.selectedEntities.length>0;return e.jsxs("section",{className:"relative flex min-w-[320px] grow flex-col border-l px-1",children:[e.jsxs("div",{className:"mt-4 flex items-center justify-between gap-2 px-3",children:[e.jsx(s.Label,{className:"px-2 text-lg",children:"Filters"}),e.jsx(s.Button,{onClick:()=>t(!1),className:"h-7 w-7 p-0",variant:"ghost",children:e.jsx(s.Cross2Icon,{})})]}),e.jsx("div",{className:"flex grow",children:n?e.jsx(ei,{}):e.jsx(Gt,{type:"filter",ColumnsComponent:()=>e.jsx(Xo,{})})})]})}function ti(){const t=s.useDashboardStore(r=>r.dashboard.filters),a=s.useDashboardStore(r=>r.theme),n=t==null?void 0:t.filter(r=>r.hide);return n!=null&&n.length?e.jsx("div",{className:s.cn("mb-1 flex items-center gap-2 border-y px-0.5 pb-0.5",{"bg-[repeating-linear-gradient(45deg,_#ffffff_0_3px,_#f3f3f3_3px_6px)]":a==="light","bg-[repeating-linear-gradient(45deg,_#18171d_0_3px,_#272729_3px_6px)]":a==="dark"}),children:n==null?void 0:n.map(r=>e.jsxs("div",{className:"flex min-w-[250px] max-w-fit flex-col gap-1 p-2",children:[e.jsx(s.FilterHeader,{filter:r}),e.jsx(s.FilterComponent,{filter:r})]},r.id))}):null}function ai(){const t=s.useDashboardStore(r=>r.showFilters),a=s.useDashboardStore(r=>r.isVisualEditing),n=s.useDashboardStore(r=>r.isDashboardEditing);return e.jsxs("div",{role:"dashboard-plus-main",className:s.cn("",{"max-h-0 overflow-hidden":a,"flex grow overflow-auto":!a}),children:[e.jsxs("section",{className:"flex grow flex-col",children:[n&&e.jsx(ti,{}),e.jsx(s.DashboardTabs,{})]}),t&&e.jsx("div",{role:"filter-aside-container",className:"flex",children:e.jsx(si,{})})]})}function ni(){const t=s.useDashboardStore(l=>l.dashboard),a=s.useDashboardStore(l=>l.actions.setDashboard),n=s.useDashboardStore(l=>l.showDashboardJSON),r=s.useDashboardStore(l=>l.actions.setShowDashboardJSON);return e.jsxs("div",{className:s.cn("relative p-2",{hidden:!n}),children:[e.jsxs(s.Button,{variant:"secondary",size:"sm",className:"absolute right-2 top-2 z-10 h-8",onClick:()=>r(!1),children:[e.jsx(s.X,{className:"mr-2 h-4 w-4"}),"Close"]}),e.jsx(s.de,{onChange:l=>{if(l)try{JSON.parse(l),a(JSON.parse(l))}catch{}},defaultLanguage:"json",className:"h-[550px] overflow-y-auto",value:JSON.stringify(t,null,2),options:{minimap:{enabled:!1},glyphMargin:!1,wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:12,renderLineHighlight:"none"}})]})}function ri({showControls:t=!1,showFooter:a=!0,...n}){return typeof window>"u"?null:e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:e.jsxs(s.SemaphorContextProvider,{dashboardProps:n,children:[e.jsx(s.$e,{}),e.jsxs(s.UXProvider,{children:[e.jsx(ni,{}),e.jsxs("main",{className:"relative flex h-full w-full flex-col",children:[t&&e.jsx(jr,{}),e.jsxs(s.DashboardPanel,{...n,children:[e.jsx(Wo,{}),e.jsx(ai,{})]})]})]})]})})}exports.DashboardPlus=ri;exports.ResourceManagementPanel=qt;exports.ScheduleDashboard=kt;exports.SelectComponent=He;exports.cleanCard=St;exports.downloadPdf=Dt;exports.getDashbaordStateWithoutData=xs;
345
+ ON ${v}`}),j};return o.length<2?null:e.jsx(e.Fragment,{children:e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[n.joins.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-6 text-xs font-semibold",onClick:()=>l(!0),children:[e.jsx(s.Link,{className:s.cn("mr-1 h-3 w-3",{"text-blue-500":n.joins.length>0,"text-gray-500":n.joins.length===0})}),"Join",n.joins.length>1?"s":""," (",n.joins.length,")"]})}),e.jsx(s.TooltipContent,{side:"right",className:"max-w-md overflow-hidden p-0",children:e.jsx(Ql,{joins:n.joins,baseEntityId:n.baseEntity.name,availableDataSources:o,generateSQLPreview:d})})]})}),e.jsx(mt,{open:r,onOpenChange:l,joinPlan:n,availableDataSources:o,onSave:c,onCancel:u,onRemove:i,children:e.jsx("div",{})})]}),n.joins.length===0&&e.jsx(mt,{open:r,onOpenChange:l,joinPlan:n,availableDataSources:o,onSave:c,onCancel:u,onRemove:i,children:e.jsxs(s.Button,{onClick:()=>l(!0),variant:"outline",size:"sm",className:"w-full",children:[e.jsx(s.Link,{className:"mr-3 size-4"}),"Configure Joins"]})})]})})})}function Jl({open:t,onOpenChange:a}){const[n,r]=I.useState([]),{updateDataSource:l}=s.useEditorActions(),o=s.useDashboardStore(x=>x.dashboard.aiContext),c=(o==null?void 0:o.selectedEntities)||[];I.useEffect(()=>{t&&r([])},[t]);const i=x=>{r(b=>b.some(v=>v.name===x.name&&v.type===x.type)?b.filter(v=>!(v.name===x.name&&v.type===x.type)):[...b,x])},u=()=>{r([...c])},d=()=>{r([])},m=()=>{if(n.length===0)return;const x=n[0],b=x.connectionId||"",p=x.connectionType||"",T=n.some(N=>N.type==="dataset")?"semanticDomain":"database";l({connectionId:b,connectionType:p,mode:T,selectedEntities:n}),a(!1)},h=x=>{switch(x.type){case"table":return e.jsx(s.Table,{className:"h-4 w-4"});case"view":return e.jsx(gn,{className:"h-4 w-4"});case"model":return e.jsx(za,{className:"h-4 w-4"});case"dataset":return e.jsx(s.Database,{className:"h-4 w-4"});case"file":case"url":case"upload":return e.jsx(s.FileText,{className:"h-4 w-4"});default:return e.jsx(s.Database,{className:"h-4 w-4"})}},f=x=>"label"in x&&x.label?x.label:x.name,g=x=>{if("description"in x&&x.description)return x.description;const b=[];return x.database&&b.push(x.database),x.schema&&b.push(x.schema),x.name&&b.push(x.name),b.join(".")},j=x=>n.some(b=>b.name===x.name&&b.type===x.type);return c.length===0?e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"max-w-md",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"No Data Available"}),e.jsx(s.DialogDescription,{children:"No entities are currently available in the AI context. Please add some data sources to the dashboard first."})]}),e.jsx(s.DialogFooter,{children:e.jsx(s.Button,{onClick:()=>a(!1),children:"Close"})})]})}):e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"flex max-w-2xl flex-col",children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Select Data to Analyze"}),e.jsx(s.DialogDescription,{children:"Choose entities from the dashboard's context"})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"sm",onClick:u,disabled:n.length===c.length,children:"Select All"}),e.jsx(s.Button,{variant:"outline",size:"sm",onClick:d,disabled:n.length===0,children:"Clear All"})]}),e.jsxs(s.Badge,{variant:"secondary",children:[n.length," of ",c.length," selected"]})]}),e.jsx(s.Separator,{}),e.jsx(s.ScrollArea,{className:"h-64",children:e.jsx("div",{className:"space-y-2",children:c.map((x,b)=>e.jsxs("div",{className:s.cn("flex items-center gap-3 rounded-lg border p-3 transition-colors hover:bg-muted/50",j(x)&&"border-primary bg-primary/5"),children:[e.jsx(s.Checkbox,{checked:j(x),onCheckedChange:()=>i(x)}),e.jsx("div",{className:"flex items-center gap-2 text-muted-foreground",children:h(x)}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate font-medium",children:f(x)}),e.jsx("div",{className:"truncate text-sm text-muted-foreground",children:g(x)})]}),e.jsx(s.Badge,{variant:"outline",className:"text-xs",children:x.type})]},`${x.type}-${x.name}-${b}`))})})]}),e.jsx(s.DialogFooter,{children:e.jsx("div",{className:"flex w-full justify-between",children:e.jsxs("div",{className:"flex grow justify-end gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsxs(s.Button,{onClick:m,disabled:n.length===0,children:["Select"," ",n.length>0?`(${n.length})`:""]})]})})})]})})}function Xl({entity:t,title:a,maxDetails:n=10}){const l=s.getEntityDetails(t).slice(0,n),o=l.find(i=>i.label==="Description"),c=l.filter(i=>i.label==="Description"?!1:!["Connection","Database","Schema"].includes(i.label));return e.jsx(s.TooltipContent,{side:"top",className:"ml-5 max-w-xs",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-sm font-medium",children:a||s.getDisplayName(t)}),o&&e.jsxs("div",{className:"border-t border-border pt-2",children:[e.jsx("div",{className:"mb-1 text-xs text-muted-foreground",children:"Description:"}),e.jsx("div",{className:"text-xs leading-relaxed",children:o.value})]}),c.length>0&&e.jsx("div",{className:"space-y-0.5",children:c.map((i,u)=>e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsxs("span",{className:"mr-2 text-muted-foreground",children:[i.label,":"]}),e.jsx("span",{className:"font-mono",children:i.value})]},u))})]})})}function Zl({entities:t}){return e.jsx(s.TooltipContent,{side:"top",className:"ml-5 max-w-xs",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"text-sm font-medium",children:[t.length," more entities"]}),e.jsx("div",{className:"space-y-1",children:t.map((a,n)=>{const r=s.getEntityDetails(a),l=r.find(c=>c.label==="Description"),o=r.filter(c=>c.label==="Description"?!1:!["Connection","Database","Schema"].includes(c.label)).slice(0,3);return e.jsxs("div",{className:"border-b border-border pb-1 last:border-b-0",children:[e.jsx("div",{className:"text-xs font-medium",children:s.getDisplayName(a)}),l&&e.jsxs("div",{className:"mb-1 mt-1",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Description:"}),e.jsx("div",{className:"text-xs leading-relaxed",children:l.value})]}),o.length>0&&e.jsx("div",{className:"mt-1 space-y-0.5",children:o.map((c,i)=>e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsxs("span",{className:"mr-2 text-muted-foreground",children:[c.label,":"]}),e.jsx("span",{className:"font-mono",children:c.value})]},i))})]},`remaining-${a.type}-${a.name}-${n}`)})})]})})}function eo({isVisible:t,onToggleVisibility:a}){const[n,r]=I.useState(!1),[l,o]=I.useState(!1),[c,i]=I.useState(!0),u=s.useEditorStore(f=>f.card.dataSource);Ie();const{updateDataSource:d}=s.useEditorActions(),m={connectionId:"",connectionType:"",mode:"database",selectedEntities:[]},h={...m,...u,selectedEntities:(u==null?void 0:u.selectedEntities)||[]};return e.jsxs("div",{className:s.cn("flex flex-col overflow-hidden bg-background transition-all duration-300 ease-in-out",{"w-[325px]":t,"w-0":!t}),children:[e.jsxs("div",{children:[e.jsx("div",{className:s.cn("p-4 px-6",{"pb-0":!c}),children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{className:"flex cursor-pointer items-center gap-2",children:[e.jsx("h2",{className:"text-brand-100 font-semibold",children:"Data Source"}),e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:()=>i(!c),className:"h-6 w-6 p-0",children:c?e.jsx(s.ChevronDown,{className:"h-4 w-4"}):e.jsx(s.ChevronRight,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-muted-foreground hover:text-foreground",onClick:a,title:"Hide Data Source Panel",children:e.jsx(s.EyeOff,{className:"h-3.5 w-3.5"})}),e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7",onClick:()=>r(!0),children:[e.jsx(s.Plus,{className:"mr-1 h-3.5 w-3.5"}),"Add"]})]})]})}),e.jsxs("div",{className:`overflow-hidden px-6 ${c?"max-h-96 space-y-4":"max-h-0 py-0 opacity-0"}`,children:[h.selectedEntities.length>0&&e.jsx(s.TooltipProvider$1,{children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[h.selectedEntities.slice(0,3).map((f,g)=>e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Badge,{variant:"secondary",className:"group relative cursor-pointer pr-6 text-xs transition-colors hover:border-red-200 hover:bg-red-50 dark:hover:border-red-800 dark:hover:bg-red-950",children:[s.getDisplayName(f),e.jsx("button",{onClick:j=>{j.stopPropagation();const x=h.selectedEntities.filter(b=>!(b.name===f.name&&b.type===f.type));d({...m,...u,selectedEntities:x})},className:"absolute right-1 top-1/2 -translate-y-1/2 rounded-full p-0.5 hover:bg-red-100",children:e.jsx(s.X,{className:"h-2.5 w-2.5 group-hover:text-red-500"})})]})}),e.jsx(Xl,{entity:f})]},`${f.type}-${f.name}-${g}`)),h.selectedEntities.length>3&&e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Badge,{variant:"outline",className:"text-xs",children:["+",h.selectedEntities.length-3," more"]})}),e.jsx(Zl,{entities:h.selectedEntities.slice(3)})]})]})}),e.jsx(Wl,{})]})]}),e.jsx(Gl,{}),e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(u==null?void 0:u.selectedEntities)||[],dialogMode:"dataSource",open:n,onOpenChange:r,dataSource:h,fallbackDataSource:m}),e.jsx(Jl,{open:l,onOpenChange:o})]})}const so="chart-selector-standard-first";function to(){const[t,a]=s.useLocalStorageState(so,!0);return{standardFirst:t,updatePreference:a}}const ht=({pluginVisual:t,index:a,onSelect:n})=>{const r=ys(t.icon||""),l=t.name.charAt(0).toUpperCase(),o=s.getAutoDetectedChartIcon(t.name);return e.jsx(s.CommandItem,{value:`${t.name} custom visual plugin component`,onSelect:n,className:"group flex items-center gap-2",children:e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[r?e.jsx(r,{className:"h-4 w-4"}):o||e.jsx("div",{className:"flex h-4 w-4 items-center justify-center rounded bg-muted text-xs font-medium",children:l}),e.jsx("span",{children:t.name})]}),e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{tabIndex:0,className:"opacity-0 outline-none transition-opacity group-hover:opacity-100",children:e.jsx(s.Info,{className:"ml-1 h-3.5 w-3.5 text-muted-foreground"})})}),e.jsx(s.TooltipContent,{side:"right",children:t.pluginName})]})]})},`${t.url}-${t.name}-${a}`)},xt=["default","standardPlugin","customPlugin"];function ao({selectedChart:t,onChartChange:a}){var L;const[n,r]=I.useState(!1),{data:l}=Zt();to();const c=((L=s.useEditorStore(N=>N.card).customCardPreferences)==null?void 0:L.url)||"";Ps(c);const{setCardType:i,setCardPreferences:u,setIsDevMode:d}=s.useEditorStore(N=>N.actions),{setCardCustomCfg:m,setCustomCardPreferences:h,setQueryConfig:f}=s.useEditorActions(),[g,j]=s.useLocalStorageState("chart-section-active",null),x=I.useMemo(()=>g?[g,...xt.filter(N=>N!==g)]:xt,[g]);function b(N){m(null),u({}),i(N),["custom","text","map"].includes(N)&&(d(!0),f(void 0)),a(N),r(!1)}function p(N){m(null),u({}),i("custom"),h({type:"component",visualType:"single",url:N.url,componentName:N.name,icon:N.icon,pluginChartType:N.chartType}),f(void 0),a("custom"),r(!1)}const v=()=>{var w;if(t==="custom"){const y=s.useEditorStore.getState().card;return((w=y==null?void 0:y.customCardPreferences)==null?void 0:w.componentName)||"Custom Visual"}const N=s.chartTypes.find(y=>y.id===t);return(N==null?void 0:N.label)||"Select chart type"},T=()=>{var w,y;if(t==="custom"){const k=s.useEditorStore.getState().card,S=(w=k==null?void 0:k.customCardPreferences)==null?void 0:w.icon,R=(y=k==null?void 0:k.customCardPreferences)==null?void 0:y.componentName;if(S&&R)return e.jsx(no,{icon:S,componentName:R});if(R){const C=s.getAutoDetectedChartIcon(R);if(C)return C}return e.jsx(ss,{className:"h-4 w-4"})}const N=s.chartTypes.find(k=>k.id===t);if(N){const k=N.icon;return e.jsx(k,{className:"h-4 w-4"})}return e.jsx(ss,{className:"h-4 w-4"})};return e.jsx("div",{className:"mb-6",children:e.jsxs(s.Popover,{open:n,onOpenChange:r,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":n,className:"w-full justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[T(),e.jsx("span",{children:v()})]}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"w-[300px] p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search chart types..."}),e.jsxs(s.CommandList,{className:"mb-2 max-h-[300px]",children:[e.jsx(s.CommandEmpty,{children:"No chart type found."}),x.map(N=>{if(N==="default")return e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"flex items-center gap-2",children:"Default Visuals"})}),e.jsx(s.TooltipContent,{side:"right",children:"These are the standard visuals available in Semaphor"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="default",onCheckedChange:w=>j(w?"default":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:s.chartTypes.map(w=>{const y=w.icon;return e.jsx(s.CommandItem,{value:`${w.label} ${w.id} chart graph visualization`,onSelect:()=>b(w.id),className:"flex items-center gap-2",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{className:"h-4 w-4"}),e.jsx("span",{children:w.label})]})},w.id)})},"default");if(N==="standardPlugin"){const w=l.filter(y=>y.pluginType==="standard");return w.length?e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsx("p",{children:"Standard Visuals"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="standardPlugin",onCheckedChange:y=>j(y?"standardPlugin":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:w.filter(y=>y.componentType==="chart").map((y,k)=>e.jsx(ht,{pluginVisual:y,index:k,onSelect:()=>p(y)},`${y.url}-${y.name}-${k}`))},"standardPlugin"):null}if(N==="customPlugin"){const w=l.filter(y=>y.pluginType==="custom");return w.length?e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"group flex w-full items-center justify-between",children:[e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("span",{className:"flex items-center gap-2",children:["Custom Visuals",e.jsx(s.Info,{className:"h-3.5 w-3.5 text-muted-foreground"})]})}),e.jsx(s.TooltipContent,{side:"right",children:"External visuals that are specific to your project"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",children:"Show on top"}),e.jsx(s.Switch,{checked:g==="customPlugin",onCheckedChange:y=>j(y?"customPlugin":null),className:"scale-75"})]})]}),className:"[&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",children:w.map((y,k)=>e.jsx(ht,{pluginVisual:y,index:k,onSelect:()=>p(y)},`${y.url}-${y.name}-${k}`))},"customPlugin"):null}return null})]})]})})]})})}const no=({icon:t,componentName:a})=>{const n=ys(),r=s.getAutoDetectedChartIcon(a);return n?e.jsx(n,{className:"h-4 w-4"}):r||e.jsx(ss,{className:"h-4 w-4"})},ro=[{id:"table",icon:s.Table2,label:"Table"},{id:"bar",icon:s.ChartColumnIncreasing,label:"Bar Chart"},{id:"line",icon:s.ChartLine,label:"Line Chart"},{id:"stackedBar",icon:s.ChartColumnStacked,label:"Stacked Bar",requiresPivot:!0},{id:"pie",icon:s.ChartPie,label:"Pie Chart"},{id:"doughnut",icon:s.Donut,label:"Donut Chart"},{id:"kpi",icon:s.TiSortNumerically,label:"KPI"}];function lo({selectedChart:t,onChartChange:a}){var l;const n=s.useEditorStore(o=>o.card),r=((l=n==null?void 0:n.config)==null?void 0:l.pivotByColumns)&&n.config.pivotByColumns.length>0;return e.jsx("div",{className:"flex items-center gap-1",children:ro.map(o=>{if(o.requiresPivot&&!r)return null;const c=o.icon,i=t===o.id;return e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"ghost",size:"sm",onClick:()=>a(o.id),className:s.cn("h-8 w-8 p-0",i&&"bg-accent text-accent-foreground"),children:[e.jsx(c,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:o.label})]})}),e.jsx(s.TooltipContent,{side:"bottom",children:e.jsx("p",{children:o.label})})]},o.id)})})}const Ks=({dataType:t})=>{const a=s.getDataType(t);return a==="string"?e.jsx("span",{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(ye,{className:"h-3 w-3"})}):a==="number"?e.jsx("span",{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(Te,{className:"h-3 w-3"})}):a==="date"?e.jsx("span",{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"})}):a==="boolean"?e.jsx("span",{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(Ue,{className:"h-3 w-3"})}):e.jsx("span",{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(ye,{className:"h-3 w-3"})})};function oo({aliasTemplate:t,onAliasTemplateChange:a}){var u;const[n,r]=I.useState(t),[l,o]=I.useState(!1),c=(u=s.useEditorStore(d=>{var m;return(m=d.card.config)==null?void 0:m.pivotByColumns}))==null?void 0:u[0],i=c?`e.g. Min Sales in {{${c.name}}}`:"e.g. Min Sales in {{region}}";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-gray-600",children:"Pivot Alias Template"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Input$1,{placeholder:i,value:l?n:t,onChange:d=>{r(d.target.value),o(!0)},onFocus:()=>o(!0),onPointerDown:d=>d.stopPropagation(),className:"h-8 text-xs",onKeyDown:d=>{d.key==="Enter"&&l&&n!==t?(a(n),o(!1)):d.key==="Escape"&&(r(t),o(!1))},"aria-label":"Edit alias template"}),l&&n!==t&&e.jsxs(e.Fragment,{children:[e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm alias template",onClick:()=>{a(n),o(!1)},children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel alias template edit",onClick:()=>{r(t),o(!1)},children:e.jsx(s.X,{className:"h-4 w-4 text-gray-400"})})]})]})]})}function io({valueAliases:t,onValueAliasesChange:a}){const[n,r]=I.useState(null),[l,o]=I.useState(""),[c,i]=I.useState(""),u=()=>{a({...t,"":""})},d=h=>{const f={...t};delete f[h],a(f)},m=h=>{const f={...t};delete f[h],f[l]=c,a(f),r(null)};return e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Pivot Value Aliases"}),e.jsxs("div",{className:"space-y-2",children:[Object.entries(t).map(([h,f],g)=>e.jsx("div",{className:"flex items-center gap-2",children:n===h?e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:l,onChange:j=>o(j.target.value),className:"h-8 w-24 text-xs",onPointerDown:j=>j.stopPropagation(),onKeyDown:j=>{j.key==="Enter"?m(h):j.key==="Escape"&&r(null)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:c,onChange:j=>i(j.target.value),className:"h-8 w-24 text-xs",onPointerDown:j=>j.stopPropagation(),onKeyDown:j=>{j.key==="Enter"?m(h):j.key==="Escape"&&r(null)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Confirm value alias edit",onClick:()=>m(h),children:e.jsx(s.Check,{className:"h-4 w-4 text-green-600"})}),e.jsx(s.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 p-0","aria-label":"Cancel value alias edit",onClick:()=>r(null),children:e.jsx(s.X,{className:"h-4 w-4 text-muted-foreground"})})]}):e.jsxs(e.Fragment,{children:[e.jsx(s.Input$1,{placeholder:"Value key",value:h,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),o(h),i(f)},"aria-label":"Edit value alias key"}),e.jsx(s.Input$1,{placeholder:"Alias label",value:f,className:"h-8 w-24 text-xs",readOnly:!0,onClick:()=>{r(h),o(h),i(f)},"aria-label":"Edit value alias label"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:()=>d(h),"aria-label":"Remove value alias",children:e.jsx(s.X,{className:"h-3 w-3"})})]})},h+g)),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"mt-1 h-8 text-xs",onClick:u,children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"})," Add Value Alias"]})]})]})}function co({field:t,searchQuery:a="",limit:n=500}){const{authToken:r}=s.useSemaphorContext(),l=s.useEditorStore(u=>u.card),o=l==null?void 0:l.dataSource,c=["attribute-values",t.entityName,t.name,a,n],i=s.useQuery({queryKey:c,queryFn:async()=>{if(!(o!=null&&o.connectionId))return console.warn("No connection ID available for attribute values query"),[];try{const u={groupByColumns:[{...t,role:"groupby"}],metricColumns:[],filters:a?{id:"search-filter",logicalOperator:"AND",negate:!1,conditions:[{id:"search-condition",field:t,operator:"contains",value:a}],groups:[]}:void 0,rowLimit:n},d={connection_id:o.connectionId,cardConfig:u,cardDataSource:o,cache_config:s.getCacheConfig({card:l})};console.log("requestBody",d);const m=await s.postRequestRegular("https://semaphor.cloud/api/v1/query",(r==null?void 0:r.accessToken)||"",d);if(m!=null&&m.error)return console.error("Error fetching attribute values:",m.error),[];const h=t.name;return((m==null?void 0:m.records)||[]).map(g=>{const j=g[h]||g[t.alias||h]||g[t.label];return{id:j||"",value:j||"",label:String(j||"(empty)")}})}catch(u){return console.error("Error fetching attribute values:",u),[]}},enabled:!!t&&!!(o!=null&&o.connectionId),staleTime:5*60*1e3,gcTime:10*60*1e3});return{values:i.data||[],isLoading:i.isLoading,isFetching:i.isFetching,isError:i.isError,error:i.error,refetch:i.refetch}}function uo({open:t,onOpenChange:a,availableFields:n,existingFilters:r,editingCondition:l,onSave:o}){var T,L;const c=!!l,[i,u]=I.useState(c?"values":"fields"),[d,m]=I.useState(""),[h,f]=I.useState({id:(l==null?void 0:l.id)||s.v4(),field:(l==null?void 0:l.field)||null,selectedValues:l?Array.isArray(l.value)?l.value:[l.value]:[]}),g=n.filter(N=>{var y;return c?!1:!((y=r==null?void 0:r.conditions)==null?void 0:y.some(k=>k.field.id===N.id))&&N.label.toLowerCase().includes(d.toLowerCase())}),j=N=>{f({...h,field:N}),u("values")},x=()=>{if(h.field&&h.selectedValues.length>0){const N={id:h.id,field:h.field,operator:"in",value:h.selectedValues};let w;if(c){const y=((r==null?void 0:r.conditions)||[]).map(k=>k.id===l.id?N:k);w={...r,conditions:y}}else{const y=(r==null?void 0:r.conditions)||[];w={id:(r==null?void 0:r.id)||s.v4(),logicalOperator:"AND",negate:!1,conditions:[...y,N],groups:[]}}o(w),a(!1)}},b=()=>{if(!c||!l)return;const N=((r==null?void 0:r.conditions)||[]).filter(w=>w.id!==l.id);if(N.length>0){const w={...r,conditions:N};o(w)}else o(void 0);a(!1)},p=N=>{f({...h,selectedValues:N})},v=()=>{c&&l?(f({id:l.id,field:l.field,selectedValues:Array.isArray(l.value)?l.value:[l.value]}),u("values")):(f({id:s.v4(),field:null,selectedValues:[]}),u("fields")),m("")};return I.useEffect(()=>{t&&v()},[t,c,l]),e.jsx(s.Dialog,{open:t,onOpenChange:a,children:e.jsxs(s.DialogContent,{className:"max-w-2xl",children:[e.jsx(s.DialogHeader,{children:e.jsx(s.DialogTitle,{children:c?`Edit Filter: ${(T=h.field)==null?void 0:T.label}`:i==="fields"?"Select Field to Filter":`Select Values for ${(L=h.field)==null?void 0:L.label}`})}),e.jsxs("div",{className:"space-y-4",children:[!c&&(r==null?void 0:r.conditions)&&r.conditions.length>0&&i==="fields"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Current Filters:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.conditions.map(N=>e.jsxs("div",{className:"flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[e.jsxs("span",{className:"font-medium",children:[N.field.label,":"]}),e.jsx("span",{className:"text-muted-foreground",children:Array.isArray(N.value)?`${N.value.length} values`:String(N.value)})]},N.id))})]}),i==="fields"&&!c?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search fields...",value:d,onChange:N=>m(N.target.value),className:"pl-10"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 max-h-[400px] overflow-y-auto",children:g.map(N=>e.jsxs(s.Button,{variant:"outline",className:"justify-start h-auto py-2 px-3",onClick:()=>j(N),children:[e.jsx(Ks,{dataType:s.getDataType(N.dataType)}),e.jsxs("div",{className:"ml-2 text-left",children:[e.jsx("div",{className:"text-sm font-medium",children:N.label}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[N.entityName,".",N.name]})]})]},N.id))}),g.length===0&&d&&e.jsxs("div",{className:"text-center py-4 text-sm text-muted-foreground",children:['No fields found matching "',d,'"']}),g.length===0&&!d&&n.length>0&&e.jsx("div",{className:"text-center py-4 text-sm text-muted-foreground",children:"All available fields are already filtered"})]}):e.jsx(mo,{field:h.field,selectedValues:h.selectedValues,onValuesChange:p,onBack:c?void 0:()=>u("fields")}),e.jsxs("div",{className:"flex justify-between pt-4 border-t",children:[e.jsx("div",{children:c?e.jsx(s.Button,{variant:"destructive",onClick:b,children:"Delete Filter"}):e.jsx(s.Button,{variant:"outline",onClick:v,children:"Reset"})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsx(s.Button,{onClick:x,disabled:!h.field||h.selectedValues.length===0,children:"Apply"})]})]})]})]})})}function mo({field:t,selectedValues:a,onValuesChange:n,onBack:r}){const[l,o]=I.useState(""),{values:c,isLoading:i,isFetching:u}=co({field:t,searchQuery:l,limit:500}),d=l?c.filter(f=>String(f.value).toLowerCase().includes(l.toLowerCase())):c,m=f=>{const g=a.includes(f);n(g?a.filter(j=>j!==f):[...a,f])},h=()=>{a.length===d.length&&d.length>0?n([]):n(d.map(f=>f.value))};return e.jsxs("div",{className:"space-y-4",children:[r&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Button,{variant:"ghost",size:"sm",onClick:r,children:"← Back"}),e.jsxs(s.Label,{className:"text-sm font-medium",children:["Select values for ",t.label]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(s.Input$1,{placeholder:"Search values...",value:l,onChange:f=>o(f.target.value),className:"pl-10"})]}),i||u?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(s.LoaderCircle,{className:"h-6 w-6 animate-spin"})}):e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b",children:[e.jsx(s.Checkbox,{checked:a.length===d.length&&d.length>0,onCheckedChange:h}),e.jsxs(s.Label,{className:"text-sm",children:["Select All (",d.length,")"]})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-1",children:d.map(f=>e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-muted/50 rounded cursor-pointer",onClick:()=>m(f.value),children:[e.jsx(s.Checkbox,{checked:a.includes(f.value),onCheckedChange:()=>m(f.value)}),e.jsx(bs,{className:"text-sm",children:f.label})]},f.id))})]})]})}function ho({field:t,zone:a,index:n,sortDirection:r,onSortDirectionChange:l,hasPivotColumns:o=!1,cardType:c}){var Ws,Js,Xs;const{attributes:i,listeners:u,setNodeRef:d,transform:m,transition:h,isDragging:f}=s.useSortable({id:t.id}),g=s.useEditorStore(G=>G.card),{updateLabel:j,handleAggregationChange:x,handleDateFormatChange:b,handleGranularityChange:p,handleAliasTemplateChange:v,handleValueAliasesChange:T,removeField:L,handleKpiComparisonTypeChange:N,handleKpiShowTrendlineChange:w,handleKpiTrendlineWindowChange:y,handleKpiTrendlineGranularityChange:k,handleKpiTargetValueChange:S}=Gs(g),[R,C]=I.useState(!1),[B,D]=I.useState(!1),[E,A]=I.useState(null),[F,M]=I.useState(t.dateFormat||"YYYY-MM-DD"),[O,z]=I.useState(t.customFormat||""),[P,H]=I.useState(!!t.customFormat),[X,Q]=I.useState(t.granularity||"day"),[Y,K]=I.useState(t.aliasTemplate||""),[U,_]=I.useState(t.valueAliases||{}),[V,$]=I.useState((Ws=t.parameters)==null?void 0:Ws.filters),Z=G=>{G==="custom"?H(!0):(H(!1),M(G),a==="groupBy"&&b(n,G,""))},ne=G=>{z(G),a==="groupBy"&&b(n,"custom",G)},q=G=>{var he;Q(G);const ce=(he=se(G)[0])==null?void 0:he.value;ce&&!P&&(M(ce),a==="groupBy"&&b(n,ce,"")),a==="groupBy"&&p(n,G)},ee=G=>{K(G),a==="metrics"&&v(n,G)},oe=G=>{_(G),a==="metrics"&&T(n,G)},W=G=>{j(a,n,G)},J=G=>{var ie;if($(G),a==="metrics"){const ce={...t,parameters:{...t.parameters,filters:G}},he=[...((ie=g.config)==null?void 0:ie.metricColumns)||[]];he[n]=ce,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:he})}D(!1)},re=()=>{L(a,n)},de={transform:s.CSS.Transform.toString(m),transition:h},Se=s.getDataType(t.dataType),be=Se==="date",fe=c==="kpi",se=G=>{switch(G){case"day":return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"MM/DD/YYYY",label:"01/15/2024 (MM/DD/YYYY)"},{value:"DD/MM/YYYY",label:"15/01/2024 (DD/MM/YYYY)"},{value:"MMMM DD, YYYY",label:"January 15, 2024 (MMMM DD, YYYY)"},{value:"MMM DD, YYYY",label:"Jan 15, 2024 (MMM DD, YYYY)"},{value:"DD MMM YYYY",label:"15 Jan 2024 (DD MMM YYYY)"},{value:"custom",label:"Custom Format..."}];case"week":return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"Week of MMM DD, YYYY",label:"Week of Jan 15, 2024"},{value:"Week of MMMM DD, YYYY",label:"Week of January 15, 2024"},{value:"YYYY-WW",label:"2024-W03 (YYYY-WW)"},{value:"custom",label:"Custom Format..."}];case"month":return[{value:"MMM YYYY",label:"Jan 2024 (MMM YYYY)"},{value:"MMMM YYYY",label:"January 2024 (MMMM YYYY)"},{value:"YYYY-MM",label:"2024-01 (YYYY-MM)"},{value:"MM/YYYY",label:"01/2024 (MM/YYYY)"},{value:"YYYY MMM",label:"2024 Jan (YYYY MMM)"},{value:"custom",label:"Custom Format..."}];case"quarter":return[{value:"Q1 YYYY",label:"Q1 2024 (Q1 YYYY)"},{value:"YYYY Q1",label:"2024 Q1 (YYYY Q1)"},{value:"1st Quarter YYYY",label:"1st Quarter 2024"},{value:"YYYY-Q1",label:"2024-Q1 (YYYY-Q1)"},{value:"Quarter 1, YYYY",label:"Quarter 1, 2024"},{value:"custom",label:"Custom Format..."}];case"year":return[{value:"YYYY",label:"2024 (YYYY)"},{value:"YY",label:"24 (YY)"},{value:"custom",label:"Custom Format..."}];default:return[{value:"MM-DD-YYYY",label:"01-15-2024 (MM-DD-YYYY)"},{value:"YYYY-MM-DD",label:"2024-01-15 (YYYY-MM-DD)"},{value:"MM/DD/YYYY",label:"01/15/2024 (MM/DD/YYYY)"},{value:"DD/MM/YYYY",label:"15/01/2024 (DD/MM/YYYY)"},{value:"MMMM DD, YYYY",label:"January 15, 2024 (MMMM DD, YYYY)"},{value:"MMM DD, YYYY",label:"Jan 15, 2024 (MMM DD, YYYY)"},{value:"DD MMM YYYY",label:"15 Jan 2024 (DD MMM YYYY)"},{value:"YYYY-MM",label:"2024-01 (YYYY-MM)"},{value:"MMMM YYYY",label:"January 2024 (MMMM YYYY)"},{value:"custom",label:"Custom Format..."}]}},te=se(X),ue=a!=="pivotBy",ve=be&&a==="groupBy",rs=!fe&&be&&a==="groupBy",ls=fe&&be&&a==="groupBy",os=fe&&a==="metrics"&&((Js=g.config)==null?void 0:Js.comparisonType)==="target",Je=a==="metrics",Ae=()=>e.jsx("div",{onPointerDown:G=>{G.stopPropagation()},className:"cursor-default overflow-hidden text-ellipsis whitespace-nowrap px-0.5 text-xs text-gray-500",children:`${t.entityName}.${t.name}`}),me=()=>ue?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Label"}),e.jsx(De,{value:t.label??"",onSave:W,placeholder:"Display label...",type:"text"})]}):null,Qs=()=>ve?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Granularity"}),e.jsxs(s.Select,{value:X,onValueChange:q,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsx(s.SelectContent,{children:["day","week","month","quarter","year"].map(G=>e.jsx(s.SelectItem,{className:"text-xs",value:G,children:s.toTitleCase(G)},G))})]})]}):null,ga=()=>rs?e.jsxs(e.Fragment,{children:[Qs(),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Date Format"}),e.jsxs(s.Select,{value:P?"custom":F,onValueChange:Z,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select date format..."})}),e.jsx(s.SelectContent,{children:te.map(G=>e.jsx(s.SelectItem,{className:"text-xs",value:G.value,children:G.label},G.value))})]}),P&&e.jsxs("div",{className:"mt-2 space-y-1",children:[e.jsx(s.Input$1,{placeholder:"Enter custom format (e.g., YYYY-MM-DD HH:mm)",value:O,onChange:G=>{G.stopPropagation(),ne(G.target.value)},onClick:G=>G.stopPropagation(),className:"h-8 text-xs"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Examples: YYYY-MM-DD, MM/DD/YY, DD-MMM-YYYY HH:mm"})]})]})]}):null,ja=()=>{var G,ie,ce,he,Me;return ls?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Comparison Type"}),e.jsxs(s.Select,{value:((G=g.config)==null?void 0:G.comparisonType)||"none",onValueChange:N,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select comparison type..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"none",children:"No Comparison"}),e.jsx(s.SelectItem,{value:"previous_period",children:"Previous Period"}),e.jsx(s.SelectItem,{value:"same_period_last_year",children:"Same Period Last Year"}),e.jsx(s.SelectItem,{value:"target",children:"Target Value"})]})]})]}),e.jsx("div",{className:"space-y-1",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Show Trendline"}),e.jsx(s.SmallSwitch,{checked:((ie=g.config)==null?void 0:ie.showTrendline)||!1,onCheckedChange:w})]})}),((ce=g.config)==null?void 0:ce.showTrendline)&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Window"}),e.jsx(s.Input$1,{type:"number",min:"1",max:"365",value:((he=g.config)==null?void 0:he.trendlineWindow)||30,onChange:is=>{const Ca=parseInt(is.target.value)||30;y(Ca)},className:"h-8 text-xs",placeholder:"30"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Trendline Granularity"}),e.jsxs(s.Select,{value:((Me=g.config)==null?void 0:Me.trendlineGranularity)||"day",onValueChange:k,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select granularity..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"day",children:"Day"}),e.jsx(s.SelectItem,{value:"week",children:"Week"}),e.jsx(s.SelectItem,{value:"month",children:"Month"})]})]})]})]})]}):null},ya=()=>{var G,ie;return os?e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Target Value"}),e.jsx(De,{value:((G=g.config)==null?void 0:G.targetValue)!==void 0&&((ie=g.config)==null?void 0:ie.targetValue)!==null?String(g.config.targetValue):"",onSave:ce=>{!isNaN(Number(ce))&&ce!==null?S(Number(ce)):S(0)},placeholder:"Enter target value...",type:"text"})]}):null},ba=()=>Je?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Aggregation"}),e.jsxs(s.Select,{value:t.aggregate,onValueChange:G=>{x(n,G)},children:[e.jsx(s.SelectTrigger,{className:"h-8 w-full text-xs",children:e.jsx(s.SelectValue,{placeholder:"Select function..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"COUNT",children:"Count"}),e.jsx(s.SelectItem,{className:"text-xs",value:"DISTINCT",children:"Count Distinct"}),s.getDataType(t.dataType)==="number"&&e.jsxs(e.Fragment,{children:[e.jsx(s.SelectItem,{className:"text-xs",value:"SUM",children:"Sum"}),e.jsx(s.SelectItem,{className:"text-xs",value:"AVG",children:"Average"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MIN",children:"Min"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MAX",children:"Max"}),e.jsx(s.SelectItem,{className:"text-xs",value:"MEDIAN",children:"Median"})]})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(s.Label,{className:"text-xs font-medium text-muted-foreground",children:"Attribute Filters"}),(V==null?void 0:V.conditions)&&V.conditions.length>0&&e.jsx("div",{className:"mb-2 space-y-1",children:V.conditions.map(G=>e.jsxs("div",{className:"flex cursor-pointer items-center gap-2 rounded bg-muted/50 p-2 text-xs transition-colors hover:bg-muted/70",onClick:()=>{A(G),D(!0)},children:[e.jsxs("span",{className:"font-medium",children:[G.field.label,":"]}),e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"cursor-help text-muted-foreground",children:Array.isArray(G.value)?G.value.length===1?String(G.value[0]):G.value.length<=2?G.value.join(", "):`${G.value.slice(0,2).join(", ")} +${G.value.length-2}`:String(G.value)})}),Array.isArray(G.value)&&G.value.length>1&&e.jsx(s.TooltipContent,{side:"top",className:"max-w-[300px]",children:e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"mb-1 font-medium",children:["Selected values (",G.value.length,"):"]}),e.jsx("div",{className:"max-h-[200px] overflow-y-auto",children:G.value.map((ie,ce)=>e.jsx("div",{children:String(ie)},ce))})]})})]})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"ml-auto h-4 w-4 p-0",onClick:ie=>{var he;ie.stopPropagation();const ce=V.conditions.filter(Me=>Me.id!==G.id);if(ce.length>0){const Me={...V,conditions:ce};J(Me)}else if($(void 0),a==="metrics"){const Me={...t,parameters:{...t.parameters,filters:void 0}},is=[...((he=g.config)==null?void 0:he.metricColumns)||[]];is[n]=Me,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:is})}},children:e.jsx(s.X,{className:"h-3 w-3"})})]},G.id))}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-8 w-full justify-start text-xs",onClick:()=>{A(null),D(!0)},children:[e.jsx(s.Filter,{className:"mr-2 h-3 w-3"}),"Add attribute filter"]})]}),e.jsx(xa,{column:t}),o&&e.jsxs(e.Fragment,{children:[e.jsx(oo,{aliasTemplate:Y,onAliasTemplateChange:ee}),e.jsx(io,{valueAliases:U,onValueAliasesChange:oe})]})]}):null,{columns:va=[]}=s.useColumns(),Na=(V==null?void 0:V.conditions)&&V.conditions.length>0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:d,style:de,...i,...u,className:`group mx-auto flex w-full flex-col gap-2 rounded border border-border bg-background p-2 transition-all hover:shadow-sm dark:border-gray-800 ${f?"z-50 scale-95 opacity-50":"border-slate-200"} ${a==="filters"?"cursor-default":"cursor-move"}`,children:[e.jsxs("div",{className:"flex grow items-center gap-2",children:[e.jsx(Ks,{dataType:Se}),e.jsx(bs,{className:s.cn("w-[140px] flex-1 text-sm",Na&&"w-[120px]"),children:s.getMetricDisplayLabel(t)}),a==="metrics"&&((Xs=V==null?void 0:V.conditions)==null?void 0:Xs.length)&&!R&&e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-1 rounded bg-primary/10 px-1.5 py-0.5 text-xs",children:[e.jsx(s.Filter,{className:"h-3 w-3"}),e.jsx("span",{children:V.conditions.length})]})}),e.jsx(s.TooltipContent,{side:"top",children:e.jsx("div",{className:"text-xs",children:V.conditions.map(G=>e.jsxs("div",{children:[G.field.label,":"," ",Array.isArray(G.value)?`${G.value.length} values`:String(G.value)]},G.id))})})]})}),a!=="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 opacity-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),C(!R)},children:e.jsx(s.ChevronDown,{className:`h-3 w-3 transition-transform ${R?"rotate-180":""}`})}),a==="sortBy"&&e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),console.log("DraggableField - Current sortDirection:",r);const ie=r==="asc"?"desc":"asc";console.log("DraggableField - New direction to set:",ie),l(ie)},children:r==="asc"?e.jsx(s.ArrowUp,{className:"h-3 w-3"}):e.jsx(s.ArrowDown,{className:"h-3 w-3"})}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0 opacity-0 group-hover:opacity-100",onClick:G=>{G.stopPropagation(),re()},children:e.jsx(s.X,{className:"h-3 w-3"})})]}),R&&e.jsxs("div",{className:"space-y-3",children:[Ae(),me(),c==="kpi"&&Qs(),ga(),ja(),ya(),ba()]})]}),B&&e.jsx(uo,{open:B,onOpenChange:G=>{D(G),G||A(null)},availableFields:va,existingFilters:V,editingCondition:E,onSave:G=>{var ie;if(G)J(G);else if($(void 0),a==="metrics"){const ce={...t,parameters:{...t.parameters,filters:void 0}},he=[...((ie=g.config)==null?void 0:ie.metricColumns)||[]];he[n]=ce,s.useEditorStore.getState().actions.updateCardConfig(g.id,{metricColumns:he})}A(null)}})]})}function xo({concept:t}){const a=()=>{switch(t){case"groupBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Rows = Group By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that define how your data is grouped into rows."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-100 text-xs font-medium dark:bg-blue-200/20",children:"Product"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Sales"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"Profit"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/50 text-xs font-medium dark:bg-blue-200/20",children:"Electronics"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$5,200"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$1,300"})]}),e.jsxs("div",{className:"flex border-b dark:border-border",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/30 text-xs font-medium dark:bg-blue-300/20",children:"Clothing"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$3,100"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$620"})]}),e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"w-1/3 bg-blue-200/20 text-xs font-medium dark:bg-blue-200/20",children:"Food"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$2,400"}),e.jsx("div",{className:"w-1/3 text-center text-xs",children:"$480"})]})]})]});case"pivotBy":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Columns = Pivot By"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that split your data into multiple columns or series."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"flex border-b pb-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Region"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"North"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"South"}),e.jsx("div",{className:"w-1/4 rounded-t bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"East"})]}),e.jsxs("div",{className:"flex border-b py-1 dark:border-border",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$2,300"}),e.jsx("div",{className:"w-1/4 bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$1,800"}),e.jsx("div",{className:"w-1/4 bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$3,400"})]}),e.jsxs("div",{className:"flex py-1",children:[e.jsx("div",{className:"w-1/4 text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$460"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-100 text-center text-xs dark:bg-purple-400/20",children:"$360"}),e.jsx("div",{className:"w-1/4 rounded-b bg-purple-50 text-center text-xs dark:bg-purple-300/20",children:"$680"})]})]})]});case"metrics":return e.jsxs("div",{className:"w-64 space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Metrics = Values (Cells)"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fields that represent the values shown in your visualization."}),e.jsxs("div",{className:"rounded-md border bg-white p-2 dark:border-muted dark:bg-muted",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"col-span-1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q1"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q2"}),e.jsx("div",{className:"col-span-1 text-center text-xs font-medium",children:"Q3"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Sales"}),e.jsx("div",{className:"rounded bg-blue-100 p-1 text-center text-xs dark:bg-blue-300/20",children:"$2,300"}),e.jsx("div",{className:"rounded bg-blue-200 p-1 text-center text-xs dark:bg-blue-400/20",children:"$3,100"}),e.jsx("div",{className:"rounded bg-blue-300 p-1 text-center text-xs dark:bg-blue-500/20",children:"$4,200"})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-4 gap-1",children:[e.jsx("div",{className:"text-xs font-medium",children:"Profit"}),e.jsx("div",{className:"rounded bg-green-100 p-1 text-center text-xs dark:bg-green-300/20",children:"$460"}),e.jsx("div",{className:"rounded bg-green-200 p-1 text-center text-xs dark:bg-green-400/20",children:"$620"}),e.jsx("div",{className:"rounded bg-green-300 p-1 text-center text-xs dark:bg-green-500/20",children:"$840"})]})]})]});default:return null}};return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:300,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx(s.CircleHelp,{className:"size-4 text-muted-foreground hover:text-foreground"})}),e.jsx(s.TooltipContent,{side:"right",align:"start",className:"p-3",children:a()})]})})}function us({zone:t,fields:a,label:n,placeholder:r,shouldShow:l,hasPivotColumns:o=!1}){const{isOver:c,setNodeRef:i}=s.useDroppable({id:t}),{updateSortByColumn:u}=s.useEditorActions(),d=s.useEditorStore(j=>j.card),m=s.useEditorStore(j=>j.card.type),h=a.length>0,f=(j,x)=>{var p;!((p=d.config)!=null&&p.sortByColumns)||d.config.sortByColumns.findIndex(v=>v.id===j)===-1||u(d.id,j,{direction:x})};if(t==="sortBy"&&l===!1)return null;const g=t!=="sortBy"&&m!=="kpi";return e.jsxs("div",{className:"mb-4 w-full",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(s.Label,{className:s.cn("block text-sm font-medium",{}),children:n}),g&&e.jsx(xo,{concept:t})]}),e.jsx("div",{ref:i,className:`rounded-lg border-2 border-dashed p-1 transition-all ${c?"border-blue-500 bg-blue-50 dark:bg-blue-950":h?"border-blue-200 bg-blue-50/30 dark:border-blue-800 dark:bg-blue-950/30":"min-h-[60px] border-muted-foreground/20 bg-background"}`,children:a.length===0?e.jsx("div",{className:"flex min-h-[40px] items-center justify-center text-sm text-gray-400",children:r}):e.jsx(s.SortableContext,{items:a.map(j=>j.id),strategy:s.verticalListSortingStrategy,children:e.jsx("div",{className:"flex flex-wrap gap-1",children:a.map((j,x)=>{const p=j.direction;return e.jsx("div",{className:"flex w-full items-center gap-2",children:e.jsx("div",{className:"flex-1",children:e.jsx(ho,{field:j,zone:t,index:x,sortDirection:p,onSortDirectionChange:v=>f(j.id,v),hasPivotColumns:o,cardType:m})})},j.id)})})})})]})}const pt=[{value:"green",color:"#16a34a",label:"Green"},{value:"red",color:"#dc2626",label:"Red"},{value:"neutral",color:"#6b7280",label:"Neutral"}],po=["#16a34a","#dc2626","#6b7280","#2563eb","#ca8a04","#7c3aed","#0891b2","#e11d48","#ea580c"];function Is({value:t,onChange:a,label:n}){const[r,l]=I.useState(!1),[o,c]=I.useState(!1),i=()=>{const u=pt.find(d=>d.value===t);return u?u.color:t.startsWith("#")?t:pt[2].color};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(s.Popover,{open:r,onOpenChange:l,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsx("button",{className:"size-5 rounded border-2 border-input shadow-sm transition-all hover:scale-110 hover:border-gray-400",style:{backgroundColor:i()},"aria-label":`Change color for ${n}`})}),e.jsx(s.PopoverContent,{align:"start",className:"w-auto p-2",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"grid grid-cols-3 items-center justify-items-center gap-1",children:po.map(u=>e.jsx("button",{className:s.cn("h-5 w-5 rounded border-2 transition-all",i()===u?"border-gray-900":"border-transparent"),style:{backgroundColor:u},onClick:()=>{a(u),l(!1)},children:e.jsx("span",{className:"sr-only",children:u})},u))}),e.jsx("button",{className:"w-full rounded border border-input px-2 py-1 text-xs hover:bg-muted",onClick:()=>{c(!0),l(!1)},children:"Custom color..."})]})})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:n})]}),o&&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:()=>c(!1)}),e.jsx("div",{className:"relative rounded-lg bg-white shadow-lg",children:e.jsx(ia,{color:i(),onColorChange:u=>{a(u),c(!1)},onClose:()=>c(!1)})})]})]})}const ms={difference:{label:"Difference",description:"Shows the exact difference between two values.",formula:"Primary - Secondary",example:"Sales increased by $5,000 compared to last year."},change:{label:"Change",description:"Shows the percentage increase or decrease between two values.",formula:"(Primary - Secondary) / Secondary × 100%",example:"Year-over-year sales change of 25%."},change_difference:{label:"Change (difference)",description:"Shows both the percentage change and the exact difference between two values.",formula:`% Change: (Primary - Secondary) / Secondary × 100%
346
+ Difference: Primary - Secondary`,example:"Sales grew by 25% ($5,000) compared to last year."},ratio:{label:"Ratio",description:"Shows how much of one value is covered by another — useful for quotas and benchmarks.",formula:"Primary / Secondary × 100%",example:"You've achieved 80% of your sales quota."}};function fo(){var i,u,d,m,h,f,g,j,x,b;const t=s.useEditorStore(p=>p.card),{setCardPreferences:a}=s.useEditorActions(),n=((i=t.config)==null?void 0:i.metricColumns)||[],r=((u=t.config)==null?void 0:u.groupByColumns)||[];if(!(t.type==="kpi"&&(n.length>=2&&r.length===0||n.length>=1&&r.length>0)))return null;const o=((m=(d=t.preferences)==null?void 0:d.kpiVisualOptions)==null?void 0:m.metricComparison)||{},c=p=>{var T;const v={...t.preferences,kpiVisualOptions:{...(T=t.preferences)==null?void 0:T.kpiVisualOptions,metricComparison:{...o,...p}}};a(v)};return e.jsxs(s.AccordionItem,{value:"comparison",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ya,{className:"h-4 w-4"}),e.jsx("span",{children:"Comparison"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{htmlFor:"enable-comparison",className:"text-xs",children:"Enable Metric Comparison"}),e.jsx(s.SmallSwitch,{id:"enable-comparison",checked:o.enabled||!1,onCheckedChange:p=>c({enabled:p,...p&&!o.calculationType?{calculationType:"difference"}:{}})})]}),o.enabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"calculation-type",className:"text-xs font-medium uppercase text-muted-foreground",children:"Calculated as"}),e.jsxs(s.Select,{value:o.calculationType||"difference",onValueChange:p=>c({calculationType:p}),children:[e.jsx(s.SelectTrigger,{id:"calculation-type",className:"h-7 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:Object.entries(ms).map(([p,v])=>e.jsx(s.SelectItem,{value:p,className:"text-xs",children:v.label},p))})]}),(()=>{var v,T,L;const p=o.calculationType||"difference";return e.jsxs("div",{className:"space-y-2 rounded-md bg-muted/50 p-2 text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:(v=ms[p])==null?void 0:v.description}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Formula:"})," ",e.jsx("code",{className:"rounded bg-background px-1 py-0.5 text-[10px]",children:(T=ms[p])==null?void 0:T.formula})]}),e.jsxs("div",{className:"border-t pt-1 italic text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Example:"})," ",(L=ms[p])==null?void 0:L.example]})]})})()]}),e.jsx(qs,{formatOptions:o.formatOptions||{},onFormatOptionsChange:p=>c({formatOptions:p}),showTitle:!0,title:"COMPARISON FORMAT"}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Indicator"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s.Label,{className:"text-xs text-muted-foreground",children:"Position"}),e.jsxs(s.Select,{value:o.position||"left",onValueChange:p=>c({position:p}),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20 text-xs",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"top",className:"text-xs",children:"Top"}),e.jsx(s.SelectItem,{value:"left",className:"text-xs",children:"Left"}),e.jsx(s.SelectItem,{value:"right",className:"text-xs",children:"Right"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-arrow",checked:o.showArrow!==!1,onCheckedChange:p=>c({showArrow:p})}),e.jsx(s.Label,{htmlFor:"show-arrow",className:"cursor-pointer text-xs text-muted-foreground",children:"Arrow"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"show-color",checked:o.showColor!==!1,onCheckedChange:p=>c({showColor:p})}),e.jsx(s.Label,{htmlFor:"show-color",className:"cursor-pointer text-xs text-muted-foreground",children:"Color"})]}),o.showColor!==!1&&e.jsxs("div",{className:"space-y-2 border-l-2 border-muted pl-3",children:[e.jsx(Is,{value:((h=o.colorConfig)==null?void 0:h.increase)||"green",onChange:p=>c({colorConfig:{...o.colorConfig,increase:p}}),label:"Primary > Secondary"}),e.jsx(Is,{value:((f=o.colorConfig)==null?void 0:f.decrease)||"red",onChange:p=>c({colorConfig:{...o.colorConfig,decrease:p}}),label:"Primary < Secondary"}),e.jsx(Is,{value:((g=o.colorConfig)==null?void 0:g.noChange)||"neutral",onChange:p=>c({colorConfig:{...o.colorConfig,noChange:p}}),label:"Primary = Secondary"})]})]}),e.jsxs("div",{className:"space-y-3 border-t pt-3",children:[e.jsx(s.Label,{className:"text-xs font-medium uppercase text-muted-foreground",children:"Label"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Checkbox,{id:"conditional-label",checked:o.conditionalLabel||!1,onCheckedChange:p=>c({conditionalLabel:p})}),e.jsx(s.Label,{htmlFor:"conditional-label",className:"cursor-pointer text-xs text-muted-foreground",children:"Conditional"})]}),o.conditionalLabel?e.jsxs("div",{className:"space-y-3 border-l-2 border-muted pl-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-increase",className:"text-xs text-muted-foreground",children:["Primary ",">"," Secondary"]}),e.jsx(s.Input,{id:"label-increase",type:"text",value:((j=o.conditionalLabels)==null?void 0:j.increase)??"Increase",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,increase:p.target.value}}),placeholder:"Increase",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(s.Label,{htmlFor:"label-decrease",className:"text-xs text-muted-foreground",children:["Primary ","<"," Secondary"]}),e.jsx(s.Input,{id:"label-decrease",type:"text",value:((x=o.conditionalLabels)==null?void 0:x.decrease)??"Decrease",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,decrease:p.target.value}}),placeholder:"Decrease",className:"h-7 text-xs"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-no-change",className:"text-xs text-muted-foreground",children:"Primary = Secondary"}),e.jsx(s.Input,{id:"label-no-change",type:"text",value:((b=o.conditionalLabels)==null?void 0:b.noChange)??"No change",onChange:p=>c({conditionalLabels:{...o.conditionalLabels,noChange:p.target.value}}),placeholder:"No change",className:"h-7 text-xs"})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(s.Label,{htmlFor:"label-name",className:"text-xs text-muted-foreground",children:"Name"}),e.jsx(s.Input,{id:"label-name",type:"text",value:o.labelName??"",onChange:p=>c({labelName:p.target.value}),placeholder:"e.g. Versus, Compared to",className:"h-7 text-xs"})]})]})]})]})]})}function go(){var l,o;const t=s.useEditorStore(c=>c.card),{setCardPreferences:a}=s.useEditorActions();if(t.type!=="kpi")return null;const n=((o=(l=t.preferences)==null?void 0:l.kpiVisualOptions)==null?void 0:o.formatOptions)||{},r=c=>{var u;const i={...t.preferences,kpiVisualOptions:{...(u=t.preferences)==null?void 0:u.kpiVisualOptions,formatOptions:c}};a(i)};return e.jsxs(s.AccordionItem,{value:"kpi-format",className:"border-none",children:[e.jsx(s.AccordionTrigger,{className:"flex items-center gap-2 py-2 text-sm hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Te,{className:"h-4 w-4"}),e.jsx("span",{children:"Number Format"})]})}),e.jsx(s.AccordionContent,{className:"space-y-4 pb-4 pt-2",children:e.jsx(qs,{formatOptions:n,onFormatOptionsChange:r,showTitle:!1})})]})}function jo({groupByFields:t,pivotByFields:a,metricsFields:n,sortByFields:r}){const l=s.useEditorStore(j=>{var x;return((x=j.card.customCardPreferences)==null?void 0:x.url)&&j.card.type==="custom"}),o=s.useEditorStore(j=>j.card),c=o==null?void 0:o.type,i=t.length>0||n.length>0,u=c!=="kpi",d=c!=="kpi"&&i,m=["pie","doughnut","polar","funnel"].includes(c),h=u&&!m,f=()=>c==="kpi"?{label:"Trend By",placeholder:"Drop fields to trend data"}:{label:"Rows",placeholder:"Drop fields to group data"},g=()=>c==="kpi"?{label:"Metric",placeholder:"Drop field for KPI"}:{label:"Metrics",placeholder:"Drop fields to measure"};return e.jsxs(s.Accordion,{type:"single",collapsible:!0,defaultValue:"fields",className:"w-full",children:[e.jsxs(s.AccordionItem,{value:"fields",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(en,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"FIELDS"})]})}),e.jsxs(s.AccordionContent,{className:"space-y-4 pt-2",children:[e.jsx(us,{zone:"groupBy",fields:t,label:f().label,placeholder:f().placeholder}),h&&e.jsx(us,{zone:"pivotBy",fields:a,label:"Columns",placeholder:"Drop fields to pivot data"}),e.jsx(us,{zone:"metrics",fields:n,label:g().label,placeholder:g().placeholder,hasPivotColumns:a.length>0}),d&&e.jsx(us,{zone:"sortBy",fields:r,label:"Sort By",placeholder:"Drop fields from Rows or Metrics"})]})]}),!l&&e.jsxs(s.AccordionItem,{value:"configuration",className:"border-b-0",children:[e.jsx(s.AccordionTrigger,{className:"flex w-full items-center gap-2 py-2 text-sm font-medium hover:no-underline",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Settings,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{children:"CONFIGURATION"})]})}),e.jsx(s.AccordionContent,{className:"rounded-md border border-border bg-muted/50 px-3 py-0",children:e.jsxs(s.Accordion,{type:"single",collapsible:!0,className:"w-full",children:[e.jsx(go,{}),e.jsx(fo,{}),e.jsx(ca,{}),e.jsx(da,{}),e.jsx(ua,{}),e.jsx(ma,{})]})})]})]})}function yo({selectedChart:t,onChartChange:a,groupByFields:n,pivotByFields:r,metricsFields:l,sortByFields:o}){const c=s.useEditorStore(h=>h.showAIDialog),i=n.length>0||r.length>0||l.length>0,{setShowAIDialog:u}=s.useEditorActions(),d=s.useEditorStore(h=>h.card),{data:m}=s.useDashboardCardQuery(d);return e.jsxs("div",{"data-content":"Chart Configuration Panel",className:"flex w-[350px] flex-col",children:[e.jsxs("div",{className:"space-y-4 px-6 pt-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("h2",{className:"font-semibold",children:"Chart Configuration"})}),e.jsx(ao,{selectedChart:t,onChartChange:a}),e.jsx(lo,{selectedChart:t,onChartChange:a})]}),e.jsxs("div",{className:s.cn("flex justify-end gap-2 px-6 py-6"),children:[e.jsx("div",{className:s.cn("invisible",{visible:i||m}),children:e.jsx(js,{})}),!c&&e.jsxs(s.Button,{onClick:()=>u(!c),variant:"outline",className:"h-8",size:"sm",children:[e.jsx(s.Sparkles,{className:"mr-2 size-4"}),"AI"]})]}),e.jsxs(s.ScrollArea,{className:"w-full flex-1 basis-0 px-6 pb-6",children:[e.jsx(jo,{groupByFields:n,pivotByFields:r,metricsFields:l,sortByFields:o}),e.jsx(s.ScrollBar,{orientation:"horizontal"})]})]})}function bo({initialFilters:t,availableFields:a}={}){const[n,r]=I.useState(t||{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[],groups:[]});s.useEditorStore(N=>N.card.dataSource);const{columns:l,isLoading:o}=s.useColumns(),i=a||l||[],u={id:"default",qualifiedFieldName:"default",name:"default",dataType:"string",label:"Default",entityId:"default",entityName:"Default",entityType:"table"},d=N=>{const w=y=>{if(y.id===N){const k=i[0]||u,S=s.getDataType(k.dataType)==="date";return{...y,conditions:[...y.conditions,{id:`condition-${Date.now()}`,field:k,operator:S?"between":"=",value:S?[]:""}]}}return{...y,groups:y.groups.map(w)}};r(w(n))},m=N=>{const w=y=>{if(y.id===N){const k=i[0]||u,S=s.getDataType(k.dataType)==="date";return{...y,groups:[...y.groups,{id:`group-${Date.now()}`,logicalOperator:"AND",negate:!1,conditions:[{id:`condition-${Date.now()}`,field:k,operator:S?"between":"=",value:S?[]:""}],groups:[]}]}}return{...y,groups:y.groups.map(w)}};r(w(n))},h=(N,w)=>{const y=k=>k.id===N?{...k,conditions:k.conditions.filter(S=>S.id!==w)}:{...k,groups:k.groups.map(y)};r(y(n))},f=(N,w)=>{const y=k=>k.id===N?{...k,groups:k.groups.filter(S=>S.id!==w)}:{...k,groups:k.groups.map(y)};r(y(n))},g=(N,w,y,k)=>{if(y==="field")throw new Error("Use a dedicated method to update the field property with a Field object");const S=R=>R.id===N?{...R,conditions:R.conditions.map(C=>C.id===w?{...C,[y]:k}:C)}:{...R,groups:R.groups.map(S)};r(S(n))},j=(N,w,y)=>{const k=S=>S.id===N?{...S,conditions:S.conditions.map(R=>R.id===w?{...R,...y}:R)}:{...S,groups:S.groups.map(k)};r(k(n))},x=(N,w)=>{const y=k=>k.id===N?{...k,logicalOperator:w}:{...k,groups:k.groups.map(y)};r(y(n))},b=(N,w)=>{const y=k=>k.id===N?{...k,negate:w}:{...k,groups:k.groups.map(y)};r(y(n))},p=(N,w,y)=>{const k=S=>S.id===N?{...S,conditions:s.arrayMove(S.conditions,w,y)}:{...S,groups:S.groups.map(k)};r(k(n))},v=(N,w,y)=>{const k=S=>S.id===N?{...S,groups:s.arrayMove(S.groups,w,y)}:{...S,groups:S.groups.map(k)};r(k(n))},T=N=>{if(!N||N.conditions.length===0&&N.groups.length===0)return"-- No filters defined";const w=k=>{let S="";typeof k.field=="object"?S=k.field.entityName?`${k.field.entityName}.${k.field.name}`:k.field.name:S=String(k.field);const R=k.operator;let C=k.value;if(k.field.dataType==="string"&&!["in","not in"].includes(k.operator))typeof C=="string"?C=`'${C}'`:Array.isArray(C)&&(C=`'${C.join(", ")}'`);else if(k.field.dataType==="date"||k.field.dataType==="datetime"||k.field.dataType==="timestamp")if(k.operator==="between"&&Array.isArray(C)&&C.length===2){const B=C[0]?`'${C[0]}'`:"NULL",D=C[1]?`'${C[1]}'`:"NULL";return`${S} BETWEEN ${B} AND ${D}`}else if((k.operator==="in"||k.operator==="not in")&&Array.isArray(C)){const B=C.map(D=>D?`'${D}'`:"NULL").join(", ");return`${S} ${R} (${B})`}else typeof C=="string"||C instanceof Date?C=`'${C}'`:Array.isArray(C)&&C.length>0&&(C=`'${C[0]}'`);else if(["in","not in"].includes(k.operator)){let B=[];Array.isArray(C)?B=C.map(D=>typeof D=="string"?`'${D}'`:String(D)):typeof C=="string"?B=C.split(",").map(D=>{const E=D.trim();return k.field.dataType==="string"?`'${E}'`:E}):typeof C=="number"&&(B=[String(C)]),C=`(${B.join(", ")})`}switch(R){case"contains":return typeof C=="string"?`${S} LIKE '%${C.replace(/'/g,"")}'`:`${S} LIKE '%${String(C)}'`;case"startsWith":return typeof C=="string"?`${S} LIKE '${C.replace(/'/g,"")}%'`:`${S} LIKE '${String(C)}%'`;case"endsWith":return typeof C=="string"?`${S} LIKE '%${C.replace(/'/g,"")}'`:`${S} LIKE '%${String(C)}'`;case"isNull":return`${S} IS NULL`;case"isNotNull":return`${S} IS NOT NULL`;default:return`${S} ${R} ${C}`}},y=k=>{const S=k.conditions.map(w),R=k.groups.map(E=>y(E)),C=[...S,...R].filter(Boolean);if(C.length===0)return"";const B=C.join(` ${k.logicalOperator} `),D=C.length>1?`(${B})`:B;return k.negate?`NOT ${D}`:D};return y(N)},L=n.conditions.length>0||n.groups.length>0;return{currentFilters:n,setCurrentFilters:r,availableFields:i,isLoading:o,addCondition:d,addGroup:m,removeCondition:h,removeGroup:f,updateCondition:g,updateConditionFields:j,updateGroupOperator:x,updateGroupNegate:b,reorderConditions:p,reorderGroups:v,generateSQLPreview:T,hasAnyFilters:L}}function vo({children:t,className:a,delayDuration:n}){return e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:n,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:e.jsx("div",{className:s.cn("w-[200px] overflow-hidden text-ellipsis whitespace-nowrap text-sm",a),children:t})}),e.jsx(s.PortalTooltipContent,{children:t})]})})}const No=t=>{switch(t){case"table":return e.jsx(s.Table,{className:"h-3 w-3"});case"view":return e.jsx(s.Eye,{className:"h-3 w-3"});case"dataset":return e.jsx(s.ChartColumn,{className:"h-3 w-3"});case"file":return e.jsx(s.File,{className:"h-3 w-3"});default:return e.jsx(s.Table,{className:"h-3 w-3"})}},Co=t=>{if(t.qualifiedEntityName){const a=t.qualifiedEntityName.split(".");return a.length>1?a[0]:"default"}return"default"};function So({value:t,onValueChange:a,availableFields:n,placeholder:r="Select field",className:l="w-64"}){const[o,c]=I.useState(!1),i=I.useMemo(()=>{const u={};return n.forEach(d=>{const m=Co(d);u[m]||(u[m]={}),u[m][d.entityId]||(u[m][d.entityId]=[]),u[m][d.entityId].push(d)}),u},[n]);return e.jsxs(s.Popover,{modal:!0,open:o,onOpenChange:c,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":o,className:s.cn("justify-between",!t&&"text-muted-foreground",l),children:[t?e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(vo,{children:[t.entityName,".",t.name]})}):r,e.jsx(s.ChevronsUpDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-80 p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search fields...",className:"h-9"}),e.jsx(s.CommandEmpty,{children:"No fields found."}),e.jsx(s.CommandList,{className:"max-h-80",children:Object.entries(i).map(([u,d])=>e.jsx(s.CommandGroup,{heading:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s.Database,{className:"h-3 w-3"}),u]}),children:Object.entries(d).map(([m,h])=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 bg-gray-50/50 px-2 py-1 text-xs font-medium text-gray-600",children:[No(h[0].entityType),e.jsx("span",{children:h[0].entityName})]}),h.map((f,g)=>e.jsxs(s.CommandItem,{value:f.id,onSelect:()=>{a(f),c(!1)},className:"overflow-x-auto",children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",(t==null?void 0:t.id)===f.id?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"",children:f.name})}),e.jsx("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:f.description&&e.jsx("span",{children:f.description})})]})]},f.id+g))]},`${u}-${m}`))},u))})]})})]})}function Hs(t){var j;const a=s.useEditorStore(x=>x.card),{authToken:n}=s.useSemaphorContext(),r=s.useEditorStore(x=>x.card.config),l=r==null?void 0:r.joinPlan,o={...t,alias:t.name,label:"value",role:"groupby"},c={...t,role:"metric",label:"count",alias:"count",aggregate:"COUNT"},i={...o,role:"sortby",direction:"asc"},u={joinPlan:l,groupByColumns:[o],metricColumns:[c],sortByColumns:[i]},d=((j=a.dataSource)==null?void 0:j.connectionId)||a.connectionId,{data:m,isPending:h,error:f}=s.useQuery({queryKey:["filterValues",t.entityId,t.name,t.qualifiedEntityName],queryFn:async()=>{try{return await s.postRequestRegular("https://semaphor.cloud/api/v1/query",(n==null?void 0:n.accessToken)||"",{connection_id:d,cardConfig:u,cardDataSource:a.dataSource})}catch(x){console.log(t),console.error("error",x)}},enabled:!!d,refetchOnMount:!0,refetchOnWindowFocus:!1});return{filterValues:((m==null?void 0:m.records)||[]).map(x=>({label:x.value||"BLANK",value:x.value||"BLANK",count:(x==null?void 0:x.count)||0})),isPending:h,error:f}}function wo({field:t,selected:a,onChange:n,placeholder:r="Select items...",className:l}){const[o,c]=pe.useState(!1),{filterValues:i}=Hs(t),u=m=>{n(a.filter(h=>h!==m))},d=m=>{a.includes(m)?n(a.filter(h=>h!==m)):n([...a,m])};return e.jsx("div",{className:s.cn("w-full",l),children:e.jsxs(s.Popover,{open:o,onOpenChange:c,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",role:"combobox","aria-expanded":o,className:"h-auto min-h-10 w-full justify-between p-2",children:[e.jsx("div",{className:"flex flex-1 flex-wrap gap-1",children:a.length>0?a.map(m=>{const h=i.find(f=>f.value===m);return e.jsxs(s.Badge,{variant:"secondary",className:"text-xs",children:[h==null?void 0:h.label,e.jsx("div",{className:"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2",onKeyDown:f=>{f.key==="Enter"&&u(m)},onMouseDown:f=>{f.preventDefault(),f.stopPropagation()},onClick:f=>{f.stopPropagation(),u(m)},children:e.jsx(s.X,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},m)}):e.jsx("span",{className:"text-muted-foreground",children:r})}),e.jsx(s.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-fit overflow-auto p-0",align:"start",children:e.jsxs(s.Command,{children:[e.jsx(s.CommandInput,{placeholder:"Search..."}),e.jsxs(s.CommandList,{children:[e.jsx(s.CommandEmpty,{children:"No results found."}),e.jsx(s.CommandGroup,{children:i.map((m,h)=>e.jsxs(s.CommandItem,{onSelect:()=>d(m.value),children:[e.jsx(s.Check,{className:s.cn("mr-2 h-4 w-4",a.includes(m.value)?"opacity-100":"opacity-0")}),e.jsxs("div",{className:"flex grow items-center justify-between gap-4",children:[e.jsx("span",{children:m.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:m.count})]})]},m.value+h))})]})]})})]})})}function Do({field:t,value:a,onChange:n,placeholder:r="Select value...",className:l}){const{filterValues:o,isPending:c,error:i}=Hs(t);return c?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):i?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsxs(s.Select,{value:a,onValueChange:n,children:[e.jsx(s.SelectTrigger,{className:l||"flex-1",children:e.jsx(s.SelectValue,{placeholder:r,children:a})}),e.jsx(s.SelectContent,{children:o.map((u,d)=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:u.value,children:u.label},u.value+d))})]})}function ko({value:t,operator:a,onChange:n,className:r}){var u;const{tokenProps:l}=s.useSemaphorContext(),o=(u=l==null?void 0:l.params)==null?void 0:u.timeZone,c=I.useMemo(()=>{if(t){if(a==="between"||a==="not between"){if(Array.isArray(t)&&t.length===2){const d=t[0]?new Date(t[0]):void 0,m=t[1]?new Date(t[1]):void 0;if(d&&m)return{from:d,to:m}}}else if(a==="="||a==="!="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:d,to:d}}}else if(a===">"||a===">="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:d,to:void 0}}}else if(a==="<"||a==="<="){if(!Array.isArray(t)&&t){const d=new Date(t);if(!isNaN(d.getTime()))return{from:void 0,to:d}}}else if((a==="in"||a==="not in")&&Array.isArray(t)&&t.length>0){const d=new Date(t[0]),m=t.length>1?new Date(t[t.length-1]):d;if(!isNaN(d.getTime()))return{from:d,to:m}}}},[t,a]),i=d=>{if(!d){n(void 0);return}if(d.from&&d.to)n([d.from.toISOString(),d.to.toISOString()]);else if(d.from){const m=new Date(d.from);m.setHours(23,59,59,999),n([d.from.toISOString(),m.toISOString()])}else if(d.to){const m=new Date(d.to);m.setHours(0,0,0,0),n([m.toISOString(),d.to.toISOString()])}};return e.jsx(s.DateRangePicker,{value:c,onChange:i,timezone:o,showRelativeTab:!0,className:r,placeholder:"Select date..."})}const To=["=","!=",">",">=","<","<=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],Eo=["=","!=","contains","startsWith","endsWith","in","not in","isNull","isNotNull"],Io=["=","!=",">",">=","<","<=","in","not in","isNull","isNotNull"],Ao=["=","!=","isNull","isNotNull"],Mo=["between","isNull","isNotNull"],Lo={"=":"Equals","!=":"Not Equals",">":"Greater Than",">=":"Greater Than or Equal","<":"Less Than","<=":"Less Than or Equal",contains:"Contains",startsWith:"Starts With",endsWith:"Ends With",in:"In","not in":"Not In",between:"Between",isNull:"Is Null",isNotNull:"Is Not Null"};function ft(t){return Lo[t]||s.titleCase(t)}function Ro(t){switch(t){case"string":return Eo;case"number":return Io;case"boolean":return Ao;case"date":return Mo;default:return To}}function fa({condition:t,index:a,groupId:n,groupLogicalOperator:r,onUpdateCondition:l,onRemoveCondition:o,onUpdateGroupOperator:c,availableFields:i,updateConditionFields:u}){const{attributes:d,listeners:m,setNodeRef:h,transform:f,transition:g,isDragging:j}=s.useSortable({id:t.id}),{isPending:x,error:b}=Hs(t.field),p={transform:s.CSS.Transform.toString(f),transition:g};return e.jsxs("div",{ref:h,style:p,className:`mb-2 flex items-center gap-2 rounded p-2 hover:bg-muted/50 ${j?"z-50 opacity-50":""}`,children:[e.jsx("div",{...d,...m,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 flex-shrink-0 text-gray-400"})}),a>0&&e.jsxs(s.Select,{value:r,onValueChange:v=>c(n,v),children:[e.jsx(s.SelectTrigger,{className:"w-24",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"AND",children:"AND"}),e.jsx(s.SelectItem,{value:"OR",children:"OR"})]})]}),a===0&&e.jsx("div",{className:"w-24"}),e.jsx(So,{value:t.field,onValueChange:v=>{const T=v,L=s.getDataType(T.dataType)==="date";u(n,t.id,{field:T,value:"",operator:L?"between":"="})},availableFields:i,placeholder:"Select field",className:"w-64"}),e.jsxs(s.Select,{value:t.operator,onValueChange:v=>{v==="in"||v==="not in"?u(n,t.id,{operator:v,value:[]}):v==="isNull"||v==="isNotNull"?u(n,t.id,{operator:v,value:null}):u(n,t.id,{operator:v,value:""})},children:[e.jsx(s.SelectTrigger,{className:"w-44",children:e.jsx(s.SelectValue,{children:t.operator?ft(t.operator):""})}),e.jsx(s.SelectContent,{children:Ro(s.getDataType(t.field.dataType)).map(v=>e.jsx(s.SelectItem,{className:"hover:bg-muted",value:v,children:ft(v)},v))})]}),t.operator==="isNull"||t.operator==="isNotNull"?e.jsx("div",{className:"flex-1"}):s.getDataType(t.field.dataType)==="string"?t.operator==="in"||t.operator==="not in"?x?e.jsxs("div",{className:"flex flex-1 items-center justify-center p-2 text-xs text-gray-500",children:[e.jsx(s.LoaderCircle,{className:"mr-2 size-3.5 animate-spin"})," Loading values..."]}):b?e.jsx("div",{className:"flex-1 p-2 text-xs text-red-500",children:"Error loading values"}):e.jsx(wo,{field:t.field,selected:Array.isArray(t.value)&&t.value.every(v=>typeof v=="string")?t.value:[],onChange:v=>u(n,t.id,{value:v}),placeholder:`Select values for ${t.operator}...`,className:"flex-1"}):["contains","startsWith","endsWith"].includes(t.operator)?e.jsx(s.Input$1,{value:typeof t.value=="string"?t.value:"",onChange:v=>u(n,t.id,{value:v.target.value}),className:"flex-1",placeholder:t.operator.charAt(0).toUpperCase()+t.operator.slice(1)+"..."}):e.jsx(Do,{field:t.field,value:typeof t.value=="string"?t.value:"",onChange:v=>u(n,t.id,{value:v}),placeholder:"Select value...",className:"flex-1"}):s.getDataType(t.field.dataType)==="boolean"?e.jsxs(s.Select,{value:typeof t.value=="boolean"?String(t.value):"",onValueChange:v=>u(n,t.id,{value:v==="true"}),children:[e.jsx(s.SelectTrigger,{className:"flex-1",children:e.jsx(s.SelectValue,{placeholder:"Select value..."})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{value:"true",children:"True"}),e.jsx(s.SelectItem,{value:"false",children:"False"})]})]}):s.getDataType(t.field.dataType)==="date"?e.jsx(ko,{value:t.value,operator:t.operator,onChange:v=>u(n,t.id,{value:v}),className:"flex-1"}):e.jsx(s.Input$1,{value:typeof t.value=="string"||typeof t.value=="number"?t.value:"",onChange:v=>l(n,t.id,"value",v.target.value),className:"flex-1",placeholder:t.operator==="in"||t.operator==="not in"?"value1, value2, value3":"Value"}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 flex-shrink-0 p-0",onClick:()=>o(n,t.id),children:e.jsx(s.X,{className:"h-3 w-3"})})]})}function Oo({group:t,depth:a,parentGroupId:n,onUpdateGroupOperator:r,onUpdateGroupNegate:l,onRemoveGroup:o,onUpdateCondition:c,onUpdateField:i,onRemoveCondition:u,onReorderConditions:d,onReorderGroups:m,onAddCondition:h,onAddGroup:f,availableFields:g,renderFilterGroup:j,updateConditionFields:x}){const{attributes:b,listeners:p,setNodeRef:v,transform:T,transition:L,isDragging:N}=s.useSortable({id:t.id}),w={transform:s.CSS.Transform.toString(T),transition:L},y=S=>{const{active:R,over:C}=S;if(C&&R.id!==C.id){const B=t.conditions.findIndex(E=>E.id===R.id),D=t.conditions.findIndex(E=>E.id===C.id);B!==-1&&D!==-1&&d(t.id,B,D)}},k=S=>{const{active:R,over:C}=S;if(C&&R.id!==C.id&&n){const B=t.groups.findIndex(E=>E.id===R.id),D=t.groups.findIndex(E=>E.id===C.id);B!==-1&&D!==-1&&m(n,B,D)}};return e.jsxs("div",{ref:v,style:w,className:`rounded-lg ${a>0?"mt-2 border border-border":""} ${N?"z-50 opacity-50":""}`,children:[a>0&&e.jsxs("div",{className:"flex items-center justify-between rounded-t-lg bg-muted p-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{...b,...p,className:"cursor-grab active:cursor-grabbing",children:e.jsx(s.GripVertical,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(s.Button,{variant:t.negate?"default":"outline",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>l(t.id,!t.negate),children:"NOT"}),e.jsxs(s.Select,{value:t.logicalOperator,onValueChange:S=>r(t.id,S),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-20",children:e.jsx(s.SelectValue,{})}),e.jsxs(s.SelectContent,{children:[e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"AND",children:"AND"}),e.jsx(s.SelectItem,{className:"hover:bg-muted",value:"OR",children:"OR"})]})]}),e.jsx("span",{className:"text-sm font-medium",children:"Group"})]}),e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>n&&o(n,t.id),children:e.jsx(s.Trash2,{className:"h-3 w-3"})})]}),e.jsxs("div",{className:`p-3 ${a>0?"":"px-0"}`,children:[e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:y,children:e.jsx(s.SortableContext,{items:t.conditions.map(S=>S.id),strategy:s.verticalListSortingStrategy,children:t.conditions.map((S,R)=>e.jsx(fa,{condition:S,index:R,groupId:t.id,groupLogicalOperator:t.logicalOperator,onUpdateCondition:c,onUpdateField:i,onRemoveCondition:u,onUpdateGroupOperator:r,availableFields:g,updateConditionFields:x},S.id))})}),e.jsx(s.DndContext,{sensors:s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:s.closestCenter,onDragEnd:k,children:e.jsx(s.SortableContext,{items:t.groups.map(S=>S.id),strategy:s.verticalListSortingStrategy,children:t.groups.map(S=>j(S,a+1,t.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>h(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>f(t.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})]})}function Bo({filters:t,availableFields:a,onSave:n,onClearAll:r,onCancel:l}){const{currentFilters:o,availableFields:c,isLoading:i,addCondition:u,addGroup:d,removeCondition:m,removeGroup:h,updateCondition:f,updateConditionFields:g,updateGroupOperator:j,updateGroupNegate:x,reorderConditions:b,reorderGroups:p,generateSQLPreview:v,hasAnyFilters:T,setCurrentFilters:L}=bo({initialFilters:t,availableFields:a}),N=s.useSensors(s.useSensor(s.PointerSensor),s.useSensor(s.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),[w,y]=I.useState(!1),k=(C,B,D)=>{const E=A=>A.id===C?{...A,conditions:A.conditions.map(F=>F.id===B?{...F,field:D,dataType:D.dataType}:F)}:{...A,groups:A.groups.map(E)};L(E(o))},S=(C,B=0,D)=>B===0?e.jsx("div",{className:"rounded-lg",children:e.jsxs("div",{className:"p-3 px-0",children:[e.jsx(s.DndContext,{sensors:N,collisionDetection:s.closestCenter,onDragEnd:E=>{const{active:A,over:F}=E;if(F&&A.id!==F.id){const M=C.conditions.findIndex(z=>z.id===A.id),O=C.conditions.findIndex(z=>z.id===F.id);M!==-1&&O!==-1&&b(C.id,M,O)}},children:e.jsx(s.SortableContext,{items:C.conditions.map(E=>E.id),strategy:s.verticalListSortingStrategy,children:C.conditions.map((E,A)=>e.jsx(fa,{condition:E,index:A,groupId:C.id,groupLogicalOperator:C.logicalOperator,onUpdateCondition:f,onUpdateField:k,onRemoveCondition:m,onUpdateGroupOperator:j,availableFields:c,updateConditionFields:g},E.id))})}),e.jsx(s.DndContext,{sensors:N,collisionDetection:s.closestCenter,onDragEnd:E=>{const{active:A,over:F}=E;if(F&&A.id!==F.id){const M=C.groups.findIndex(z=>z.id===A.id),O=C.groups.findIndex(z=>z.id===F.id);M!==-1&&O!==-1&&p(C.id,M,O)}},children:e.jsx(s.SortableContext,{items:C.groups.map(E=>E.id),strategy:s.verticalListSortingStrategy,children:C.groups.map(E=>S(E,B+1,C.id))})}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs(s.Button,{size:"sm",className:"h-7 text-xs",variant:"outline",onClick:()=>u(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Condition"]}),w&&e.jsxs(s.Button,{variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>d(C.id),children:[e.jsx(s.Plus,{className:"mr-1 h-3 w-3"}),"Add Group"]})]})]})},C.id):e.jsx(Oo,{group:C,depth:B,parentGroupId:D,onUpdateGroupOperator:j,onUpdateGroupNegate:x,onRemoveGroup:h,onUpdateCondition:f,onUpdateField:k,onRemoveCondition:m,onReorderConditions:b,onReorderGroups:p,onAddCondition:u,onAddGroup:d,availableFields:c,renderFilterGroup:S,updateConditionFields:g},C.id),R=s.getFilterCount(t);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(s.Card,{children:e.jsx(s.CardContent,{className:"p-4",children:e.jsxs("div",{className:"space-y-4",children:[i?e.jsxs("div",{className:"flex items-center justify-center p-4",children:[e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600"}),e.jsx("span",{className:"ml-2 text-sm text-gray-600",children:"Loading columns..."})]}):S(o),e.jsx("div",{className:"mt-4 border-t border-border pt-4",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.Checkbox,{id:"advanced-mode",checked:w,onCheckedChange:C=>y(!!C)}),e.jsx("label",{htmlFor:"advanced-mode",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Advanced mode (enable grouping)"})]})}),T&&e.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[e.jsx("div",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"SQL WHERE Clause Preview"}),e.jsx("div",{className:"overflow-x-auto rounded-md border bg-muted p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:v(o)})})]})]})})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(s.Button,{size:"sm",variant:"outline",onClick:l,children:"Cancel"}),R>0&&e.jsx(s.Button,{variant:"outline",size:"sm",onClick:r,children:"Clear All"}),e.jsx(s.Button,{size:"sm",onClick:()=>n(T?o:null),children:"Apply Filters"})]})]})}function Fo({cardId:t,filters:a,onFiltersChange:n,onClearFilters:r,availableFields:l,isOpen:o,onOpenChange:c}){const i=d=>{n(t,d),c(!1)},u=()=>{r(t),c(!1)};return e.jsxs(s.Dialog,{modal:!1,open:o,onOpenChange:c,children:[o&&e.jsx("div",{className:"pointer-events-none fixed inset-0 z-40 bg-background/80 backdrop-blur-sm"}),e.jsxs(s.DialogContent,{className:"max-h-[80vh] max-w-4xl overflow-y-auto",onInteractOutside:d=>{d.preventDefault()},children:[e.jsxs(s.DialogHeader,{children:[e.jsx(s.DialogTitle,{children:"Card Filters"}),e.jsx(s.DialogDescription,{children:"Add filters to the card to limit the data that is displayed."})]}),e.jsx(Bo,{filters:a,availableFields:l,onSave:i,onCancel:()=>c(!1),onClearAll:u})]})]})}function Po({activeCardId:t,sourceFields:a,getFieldsForContainer:n,setFieldsForContainer:r}){var g;const[l,o]=I.useState(null),c=s.useEditorStore(j=>j.card),i=(g=c==null?void 0:c.config)==null?void 0:g.joinPlan,u=[...a,...n("groupBy"),...n("pivotBy"),...n("metrics"),...n("sortBy")],d=I.useCallback(j=>j.startsWith("card-")?null:j.startsWith("source-")||a.find(x=>x.id===j)?"source":n("groupBy").find(x=>x.id===j)?"groupBy":n("metrics").find(x=>x.id===j)?"metrics":n("pivotBy").find(x=>x.id===j)?"pivotBy":n("sortBy").find(x=>x.id===j)?"sortBy":null,[a,n]),m=I.useCallback(j=>{o(j.active.id)},[]),h=I.useCallback(j=>{const{active:x,over:b}=j;if(!b||!t){o(null);return}const p=x.id,v=b.id,T=d(p),L=d(v)||v;if(L==="sortBy"){if(T==="source"){const N=a.find(y=>y.id===p);if(!N){o(null);return}if(!(n("groupBy").some(y=>y.name===N.name&&y.qualifiedEntityName===N.qualifiedEntityName)||n("metrics").some(y=>y.name===N.name&&y.qualifiedEntityName===N.qualifiedEntityName))){o(null);return}}else if(T==="pivotBy"){o(null);return}else if(T!=="groupBy"&&T!=="metrics"&&T!=="sortBy"){o(null);return}}if(T==="source"&&L==="sortBy"){const N=[...a].find(k=>k.id===p);if(!N){o(null);return}const w=n("sortBy");if(s.fieldAlreadyExists(N,w)){o(null);return}const y=s.getNewField(N,"sortBy",w);o(null),r("sortBy",[...w,y]);return}if(T==="source"&&L!=="source"&&L!=="sortBy"){const N=[...a].find(S=>S.id===p);if(!N){o(null);return}const w=[...n("groupBy"),...n("pivotBy"),...n("metrics"),...n("sortBy")];if(w.length>0){const S=w[0].qualifiedEntityName;if(!S){o(null);return}if(S!==N.qualifiedEntityName&&N.qualifiedEntityName)if(i){if(!s.areEntitiesJoined(S,N.qualifiedEntityName,i)){s.showJoinRequiredNotification(),o(null);return}}else{s.showJoinRequiredNotification(),o(null);return}}const y=n(L);if(s.fieldAlreadyExists(N,y)){o(null);return}const k=s.getNewField(N,L,y);o(null),r(L,[...y,k]);return}if(T&&L&&T!=="source"&&L!=="source"&&T!==L){const N=n(T),w=n(L),y=N.find(R=>R.id===p);if(!y){o(null);return}const k=s.getNewField(y,L,w);if(o(null),L==="sortBy"){s.fieldAlreadyExists(y,w)||r(L,[...w,k]);return}const S=N.filter(R=>R.id!==p);r(T,S),r(L,[...w,k]);return}if(T&&L&&T===L&&T!=="source"){const N=n(T),w=N.findIndex(k=>k.id===p),y=N.findIndex(k=>k.id===v);if(w!==y){const k=s.arrayMove(N,w,y);r(T,k)}}o(null)},[t,a,n,r,d,i]),f=l?u.find(j=>j.id===l):null;return{activeId:l,activeField:f,handleDragStart:m,handleDragEnd:h}}function zo({dashboardFilterCount:t=0,cardFilterCount:a=0,clickFilterCount:n=0,onClick:r,className:l,showIcon:o=!0}){const c=t+a+n,i=c>0,u=t>0,d=a>0,m=n>0,h=e.jsxs(e.Fragment,{children:[o&&e.jsx(s.Filter,{className:"h-3.5 w-3.5"}),i&&e.jsx("span",{className:"font-medium",children:c})]}),f=e.jsx(s.Button,{variant:i?"secondary":"outline",size:"sm",onClick:r,className:s.cn("h-8 gap-1.5 transition-all",l),children:h});return i?e.jsx(s.TooltipProvider$1,{children:e.jsxs(s.Tooltip,{delayDuration:200,children:[e.jsx(s.TooltipTrigger,{asChild:!0,children:f}),e.jsx(s.TooltipContent,{side:"bottom",align:"start",className:"p-2 text-xs",children:e.jsxs("div",{className:"space-y-1.5",children:[u&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-purple-500"}),e.jsxs("span",{children:[t," Dashboard filter",t!==1?"s":""]})]}),d&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-blue-500"}),e.jsxs("span",{children:[a," Card filter",a!==1?"s":""]})]}),m&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-500"}),e.jsxs("span",{children:[n," Click filter",n!==1?"s":""]})]})]})})]})}):f}function Vo({onAdvancedToggle:t,onDebugToggle:a,onAccept:n}){const{currentUser:r}=Ie();r==null||r.role;const[l,o]=I.useState(!1),c=s.useEditorStore(p=>p.isDevMode),i=s.useEditorStore(p=>p.card),u=s.useEditorStore(p=>p.card.dataSource);s.isExplorerCard(i);const{config:d}=I.useContext(s.SemaphorContext).tokenProps,m=(d==null?void 0:d.showAdvancedMode)!==!1,{setIsDevMode:h}=s.useEditorActions(),f=s.useEditorStore(p=>p.showAIDialog),g=s.useEditorStore(p=>p.frame),j=s.useManagementStore(p=>p.selectedVisual),x=(j==null?void 0:j.id)===(g==null?void 0:g.id),{setShowAIDialog:b}=s.useEditorActions();return e.jsxs("div",{className:s.cn("flex items-center justify-between px-6 py-3",f&&"justify-end",!m&&"justify-end"),children:[m&&t&&!f&&e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s.SmallSwitch,{className:s.cn("",{}),checked:c,onCheckedChange:()=>h(!c),id:"advanced-mode"}),e.jsx("label",{htmlFor:"advanced-mode",className:"text-sm font-medium",children:"Advanced Mode"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[(r==null?void 0:r.type)!=="tenant"&&e.jsxs(s.DropdownMenu,{modal:!1,children:[e.jsx(s.DropdownMenuTrigger,{asChild:!0,children:e.jsx(s.Button,{variant:"ghost",size:"sm",className:"h-8 p-0",children:e.jsx(s.EllipsisVertical,{className:"size-3.5"})})}),e.jsx(s.DropdownMenuContent,{align:"end",children:e.jsxs(s.DropdownMenuItem,{onClick:()=>{o(!0)},children:[e.jsx(s.Database,{className:"mr-2 h-4 w-4"}),"Set Data Context"]})})]}),e.jsx(Us,{}),n&&!x&&e.jsx(_s,{variant:"default"}),x&&e.jsx(Ar,{}),a&&s.isDevEnv]}),l&&e.jsx(s.DataSourceDialog,{incomingSelectedEntities:(u==null?void 0:u.selectedEntities)||[],open:l,onOpenChange:o,dataSource:u||s.EMPTY_DATA_SOURCE,fallbackDataSource:s.EMPTY_DATA_SOURCE,dialogMode:"aiContext"})]})}function _o({activeView:t,onViewChange:a}){const n=s.useEditorStore(l=>l.card),{errorMessage:r}=s.useDashboardCardQuery(n);return e.jsx(s.Tabs,{value:t,onValueChange:l=>a(l),children:e.jsxs(s.TabsList,{className:"h-9 w-fit gap-1 bg-background p-0",children:[e.jsx(s.TabsTrigger,{value:"chart",className:"rounded-md transition data-[state=active]:bg-muted",children:"Chart"}),e.jsx(s.TabsTrigger,{value:"table",className:"rounded-md transition data-[state=active]:bg-muted",children:"Results"}),n.type!=="kpi"&&e.jsx(s.TabsTrigger,{value:"sql",className:s.cn("rounded-md transition data-[state=active]:bg-muted",r&&"text-destructive data-[state=active]:bg-destructive/10 data-[state=active]:text-destructive"),children:r?"Error":"Info"})]})})}const Uo=[{value:"10",label:"Top 10"},{value:"20",label:"Top 20"},{value:"50",label:"Top 50"},{value:"100",label:"Top 100"},{value:"200",label:"Top 200"},{value:"500",label:"Top 500"},{value:"1000",label:"Top 1000"}];function $o(){var u,d;const t=s.useEditorStore(m=>m.card),{updateRowLimit:a}=s.useEditorActions(),[n,r]=I.useState(!1),[l,o]=I.useState(""),c=m=>{if(m==="custom"){r(!0);return}r(!1),a(t.id,parseInt(m))},i=m=>{const h=m.target.value;o(h),h&&!isNaN(parseInt(h))&&a(t.id,parseInt(h))};return e.jsx("div",{className:"flex items-center gap-2",children:n?e.jsx(s.Input,{type:"number",value:l,onChange:i,className:"h-7 w-24",placeholder:"Enter limit",min:1}):e.jsxs(s.Select,{value:((d=(u=t.config)==null?void 0:u.rowLimit)==null?void 0:d.toString())||"100",onValueChange:c,children:[e.jsx(s.SelectTrigger,{className:"h-8 w-24 border-none px-1 [&>svg]:hidden",children:e.jsx(s.SelectValue,{placeholder:"Select limit"})}),e.jsx(s.SelectContent,{children:Uo.map(m=>e.jsx(s.SelectItem,{value:m.value,children:m.label},m.value))})]})})}function qo({isOpen:t,onClose:a}){const n=Ot(a,{enabled:t}),r=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.url)||""}),l=s.useEditorStore(m=>m.card),o=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.pluginChartType)||""}),c=s.useEditorStore(m=>{var h;return((h=m.card.customCardPreferences)==null?void 0:h.settings)||{}}),{data:i}=s.useDashboardCardQuery(l),{getCard:u}=s.useCustomVisual(r),d=I.useMemo(()=>!r||r.trim()===""?null:u("Chart Settings"),[u,r]);return e.jsx("div",{ref:n,className:s.cn("absolute right-0 top-0 z-40 h-full w-[350px] border-l bg-background shadow-lg transition-transform duration-300",t?"translate-x-0":"translate-x-full"),style:{willChange:"transform"},tabIndex:t?0:-1,"aria-hidden":!t,children:e.jsxs("div",{className:"flex h-full flex-col p-4 px-5 pr-4",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-base font-semibold",children:"Chart Settings"}),e.jsx(s.IconButton,{"aria-label":"Hide Chart Settings",tooltip:"Hide",onClick:a,className:"h-7 p-2 text-muted-foreground hover:text-foreground",children:e.jsx(s.X,{className:"size-3.5"})})]}),e.jsx("div",{className:"h-full min-h-0 flex-1",children:d&&e.jsx(I.Suspense,{fallback:e.jsx("div",{children:"Loading chart settings..."}),children:e.jsx(d,{chartData:(i==null?void 0:i.records)||[],chartType:o,settings:c})})})]})})}function Yo({activeView:t,onViewChange:a,showDebug:n,onDebugToggle:r,onAccept:l,onClear:o,onAdvancedToggle:c,onFiltersClick:i,filterCount:u,activeCard:d,columns:m,columnsLoading:h,columnsError:f}){var P;const g=s.useEditorStore(H=>H.card),j=s.useDashboardStore(H=>H.filterValues),x=(j==null?void 0:j.length)||0,{updateCardConfig:b,setCard:p,updateCardInFrame:v,setCardId:T}=s.useEditorActions(),{updateCardId:L}=s.useDashboardActions(),[N,w]=I.useState(null),y=s.useEditorStore(H=>H.showAIDialog),[k,S]=I.useState(!1),R=s.useEditorStore(H=>{var X;return((X=H.card.customCardPreferences)==null?void 0:X.url)&&H.card.type==="custom"}),{data:C,errorMessage:B,isLoading:D,isFetching:E,pagination:A}=s.useDashboardCardQuery(d),F=(H,X)=>{const Q={...d,paginationConfig:{page:H+1,pageSize:X}};p(Q),v(Q)};function M(){return e.jsx("div",{className:"border-b border-border bg-background p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Active Card Config"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(g.config||{},null,2)})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Dashboard Filters"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(j||{},null,2)})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 text-sm font-medium",children:"Card Data Source State"}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:JSON.stringify(d.dataSource||{},null,2)})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-2 text-sm font-medium",children:["Columns (",m.length,")"]}),e.jsx("pre",{className:"max-h-40 overflow-auto rounded border bg-background p-3 text-xs",children:h?"Loading...":f?"Error loading columns":JSON.stringify(m.slice(0,5),null,2)})]})]})})}const O=H=>{if(!g.config)return;if(!H.length){b(g.id,{...g.config,sortByColumns:[]});return}const X=g.config,Q=H.map(({id:Y,desc:K})=>{var $,Z;const U=($=X.metricColumns)==null?void 0:$.find(ne=>ne.label===Y),_=(Z=X.groupByColumns)==null?void 0:Z.find(ne=>ne.label===Y),V=U||_;return V?{id:s.getFieldId("sortBy",V),name:V.name,dataType:V.dataType,label:V.label,qualifiedEntityName:V.qualifiedEntityName,entityId:V.entityId,entityName:V.entityName,entityType:V.entityType,role:"sortby",direction:K?"desc":"asc"}:null}).filter(Y=>Y!==null);b(g.id,{...X,sortByColumns:Q})},z=I.useMemo(()=>{var H,X;return(X=(H=g.config)==null?void 0:H.sortByColumns)==null?void 0:X.map(Q=>({id:Q.label,desc:Q.direction==="desc"}))},[(P=g.config)==null?void 0:P.sortByColumns]);return e.jsxs("div",{className:"relative flex w-0 grow flex-col",children:[e.jsx(Vo,{showDebug:n,onDebugToggle:r,onAccept:l,onClear:o,onAdvancedToggle:c,onFiltersClick:i,filterCount:u}),n&&M(),e.jsxs("div",{className:"group/visualization relative flex h-full max-w-full grow flex-col pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 px-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t==="chart"&&y&&e.jsx(sa,{variant:"outline"}),e.jsx(_o,{activeView:t,onViewChange:a}),i&&e.jsx(zo,{dashboardFilterCount:x,cardFilterCount:u,onClick:i,className:"h-8"}),e.jsx("div",{className:"ml-2",children:e.jsx($o,{})}),y&&e.jsx(js,{})]}),e.jsx("div",{className:s.cn("flex grow items-center justify-end"),children:t==="chart"&&e.jsx(ta,{})})]}),!k&&R&&e.jsx(s.IconButton,{"aria-label":"Open Chart Settings",tooltip:"Open Chart Settings",onClick:()=>S(!0),className:"absolute right-5 top-1/2 z-40 size-10 -translate-y-1/2 rounded-full border border-border bg-background shadow-lg hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:e.jsx(s.Settings2,{className:"size-4"})}),e.jsxs("div",{className:"mt-3 flex grow flex-col",children:[t==="chart"&&e.jsx("div",{className:"flex grow flex-col pb-6",children:e.jsx(aa,{})}),t==="table"&&(C==null?void 0:C.records)&&e.jsx("div",{className:"relative flex h-full min-h-0 max-w-full flex-1 grow basis-0 p-6",children:e.jsx(s.TableVisual,{card:d,data:(C==null?void 0:C.records)||[],paginationMetadata:A,onPaginationChange:F,isLoading:D||E,onSortChange:O,sortState:z})}),t==="sql"&&e.jsx("div",{className:"p-6",children:e.jsxs("div",{className:"rounded-md bg-background",children:[e.jsxs("div",{className:"mb-2",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Card ID:"}),e.jsx(s.EditableText,{value:g.id,onSave:H=>{const X=s.sanitizeCardId(H);if(!X){w("Card ID cannot be empty");return}const Q=L(g.id,X);if(Q.success){T(X);const Y={...g,id:X};p(Y),v(Y),w(null),s.ue.success("Card ID updated successfully")}else w(Q.error||"Failed to update Card ID"),s.ue.error(Q.error||"Failed to update Card ID")},isEditable:!0,placeholder:"Enter card ID",displayClassName:"font-mono text-xs text-muted-foreground hover:text-foreground",inputClassName:"font-mono text-xs"}),e.jsx(s.CopyButton,{text:g.id,className:"h-5 w-5"})]}),N&&e.jsx("p",{className:"text-xs text-destructive",children:N})]}),(C==null?void 0:C.sql)&&e.jsx("h3",{className:"mb-3 font-mono text-xs font-medium",children:"Generated SQL Query"}),e.jsx(Ht,{sql:C==null?void 0:C.sql,error:B})]})})]}),e.jsx(qo,{isOpen:k,onClose:()=>S(!1)})]})]})}function Go({activeField:t}){const[a,n]=I.useState(!0);return I.useEffect(()=>{t&&n(!0)},[t]),t?e.jsxs("div",{className:`flex max-w-[300px] items-center gap-2 rounded-lg border border-blue-500 bg-background p-2 shadow-lg transition-all duration-200 ${a?"scale-100 opacity-100":"scale-95 opacity-0"}`,children:[e.jsx(s.GripVertical,{className:"h-3 w-3 shrink-0 text-muted-foreground"}),e.jsx(Ks,{dataType:t.dataType}),e.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm dark:text-muted-foreground",children:t.label||t.name})]}):null}const Ko=()=>{const t=console.error;console.error=(...r)=>{r.length>0&&typeof r[0]=="string"&&r[0].includes("ResizeObserver loop completed with undelivered notifications")||t.apply(console,r)};const a=r=>{if(r.message&&(r.message.includes("ResizeObserver loop completed with undelivered notifications")||r.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),r.stopPropagation(),!1},n=r=>{var l;if((l=r.reason)!=null&&l.message&&(r.reason.message.includes("ResizeObserver loop completed with undelivered notifications")||r.reason.message.includes("ResizeObserver loop limit exceeded")))return r.preventDefault(),!1};return window.addEventListener("error",a,!0),window.addEventListener("unhandledrejection",n,!0),()=>{console.error=t,window.removeEventListener("error",a,!0),window.removeEventListener("unhandledrejection",n,!0)}};function Ho(){var Q,Y;const[t,a]=I.useState("chart"),[n,r]=I.useState(!1),[l,o]=I.useState(!1),[c,i]=I.useState(!0),u=s.useEditorStore(K=>K.showAIDialog),d=s.useDashboardStore(K=>K.isVisualEditing),{setCardType:m}=s.useEditorActions(),h=s.useEditorStore(K=>K.card.type);I.useEffect(()=>Ko(),[]);const f=()=>{console.log("Accept clicked - would save/apply current configuration")},g=()=>{console.log("Clear clicked - would reset all configurations")},j=()=>{console.log("Advanced mode toggled")},x=()=>{o(!0)},b=K=>{m(K)},p=s.useEditorStore(K=>K.frame),v=s.useEditorStore(K=>K.card);s.useEditorStore(K=>K.activeTabCardId),s.useEditorStore(K=>K.actions.getAvailableFields);const{addCard:T,removeCard:L,updateCard:N,setActiveCard:w,updateFilters:y}=s.useEditorActions(),{columns:k=[],isLoading:S,error:R}=s.useColumns(),C=s.useSensors(s.useSensor(s.PointerSensor,{activationConstraint:{distance:8}})),B=v,{getFieldsForContainer:D,setFieldsForContainer:E}=Gs(B),{activeField:A,handleDragStart:F,handleDragEnd:M}=Po({activeCardId:p.activeCardId,sourceFields:k,getFieldsForContainer:D,setFieldsForContainer:E}),O=(K,U)=>{U&&y(K,U)},z=K=>{var U;N(K,{config:{...(U=p.cards.find(_=>_.id===K))==null?void 0:U.config,filters:void 0}})},P=k,H=K=>{if(!K)return 0;let U=K.conditions.length;return K.groups.forEach(_=>{U+=H(_)}),U},X=H(((Q=B==null?void 0:B.config)==null?void 0:Q.filters)||null);return e.jsxs(s.DndContext,{sensors:C,collisionDetection:s.closestCenter,onDragStart:F,onDragEnd:M,children:[e.jsxs("div",{className:"flex h-full grow",children:[e.jsx(eo,{isVisible:c,onToggleVisibility:()=>i(!c)}),e.jsxs("div",{className:"flex flex-1 transition-all duration-300 ease-in-out",children:[!u&&e.jsx(yo,{selectedChart:h,onChartChange:b,groupByFields:D("groupBy"),pivotByFields:D("pivotBy"),metricsFields:D("metrics"),sortByFields:D("sortBy")}),e.jsx(Yo,{selectedChart:h,activeView:t,onViewChange:a,showDebug:n,onDebugToggle:()=>r(!n),onAccept:f,onClear:g,onAdvancedToggle:j,onFiltersClick:x,filterCount:X,activeCard:B,dataSourceState:v.dataSource||s.EMPTY_DATA_SOURCE,columns:k,columnsLoading:S,columnsError:R,getFieldsForContainer:D,cards:p.cards,activeCardId:p.activeCardId,addCard:T,setActiveCard:w})]}),!c&&d&&e.jsx("div",{className:"fixed left-6 top-[105px] z-50",children:e.jsx(s.Button,{size:"sm",variant:"outline",className:"h-10 w-10 rounded-full border-border bg-background p-0 shadow-lg hover:bg-muted",onClick:()=>i(!0),title:"Show Data Source Panel",children:e.jsx(s.Database,{className:"h-4 w-4"})})})]}),B&&e.jsx(Fo,{cardId:B.id,filters:((Y=B.config)==null?void 0:Y.filters)||null,onFiltersChange:O,onClearFilters:z,availableFields:P,isOpen:l,onOpenChange:o}),e.jsx(s.DragOverlay,{dropAnimation:null,children:e.jsx(Go,{activeField:A||null})})]})}function Qo({authToken:t,onSave:a,onClose:n}){const r=I.useRef(null),l=s.useEditorStore(v=>v.showAIDialog),o=s.useEditorStore(v=>v.isDevMode),{setAuthToken:c}=s.useDashboardActions(),{setShowAIDialog:i,setOnSave:u,setOnClose:d}=s.useEditorActions(),{handleDragOver:m,handleDragEnd:h,handleDragStart:f,handleDragCancel:g,sensors:j}=Sr();I.useEffect(()=>{a&&u(a),n&&d(n)},[a,u,n,d]),I.useEffect(()=>{t&&t.accessToken&&c(t)},[t,c]),I.useEffect(()=>{var v,T;l?((v=r.current)==null||v.resize(40),i(!0)):(i(!1),(T=r.current)==null||T.resize(0))},[l,i]);function x(v){v<1?i(!1):l||i(!0)}function b(){return e.jsxs(e.Fragment,{children:[e.jsx(Gt,{type:"main"}),e.jsxs(s.ResizablePanelGroup,{"data-content":"editor-main",className:"grow",direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] rounded-none",children:e.jsx(Vl,{})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:x,defaultSize:0,children:e.jsx(ut,{})})]})]})}function p(){return e.jsxs(s.ResizablePanelGroup,{"data-content":"explorer",className:"flex grow",direction:"horizontal",children:[e.jsx(s.ResizablePanel,{className:"min-w-[510px] grow rounded-none",children:e.jsx(Ho,{})}),e.jsx(s.ResizableHandle,{}),e.jsx(s.ResizablePanel,{"data-role":"editor-assistant-panel",ref:r,onResize:x,defaultSize:0,children:e.jsx(ut,{})})]})}return e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:o?e.jsx(s.DndContext,{sensors:j,onDragStart:f,onDragEnd:h,onDragOver:m,onDragCancel:g,children:e.jsx("section",{className:"isolate flex h-full grow","data-content":"editor-panel",children:b()})}):p()})}function Wo(){s.useDashboardStore(c=>c.selectedCardId);const t=s.useDashboardStore(c=>c.selectedSheetId),{setIsVisualEditing:a}=s.useDashboardStore(c=>c.actions),n=s.useDashboardStore(c=>c.isVisualEditing),r=s.useDashboardStore(c=>c.actions.updateFrame);function l(c){t&&(r(t,c),a(!1))}function o(){a(!1)}return e.jsx("div",{role:"editor-container",className:s.cn("flex-1 grow basis-0 overflow-auto",{"max-h-0 overflow-hidden":!n}),children:e.jsx(Qo,{onSave:l,onClose:o})})}function Jo({column:t}){return e.jsxs(s.Tooltip,{children:[e.jsx(s.TooltipTrigger$1,{className:"shrink-0",asChild:!0,children:s.isTextDataType(t.data_type)?e.jsx(s.TextIcon,{className:"size-3 text-muted-foreground"}):s.isNumberDataType(t.data_type)?e.jsx(Te,{className:"size-3 text-muted-foreground"}):s.isDateDataType(t.data_type)?e.jsx(s.Calendar,{className:"size-3 text-muted-foreground"}):s.isBooleanDataType(t.data_type)?e.jsx(Ue,{className:"size-3 text-muted-foreground"}):t.data_type.startsWith("json")?e.jsx(Ra,{className:"size-3 text-muted-foreground"}):e.jsx(s.QuestionMarkIcon,{className:"size-3 text-muted-foreground"})}),e.jsx(s.TooltipContent,{children:e.jsx("p",{className:"text-xs",children:t.data_type})})]})}function Xo(){const t=s.useEditorStore(o=>o.selectedDatabaseName),a=s.useEditorStore(o=>o.selectedTableName),n=s.useDashboardStore(o=>o.dashboard.filters)||[],{columns:r}=s.useEditorAside(),{assignFilter:l}=$s();return e.jsx(s.ScrollArea,{className:"flex-1 basis-0 flex-col px-3",children:r==null?void 0:r.map(o=>{const c=n==null?void 0:n.find(i=>i.column===s.fmt(o.column_name)&&i.table===a&&i.database===t);return e.jsx("div",{onClick:()=>l(o),className:s.cn("group flex cursor-pointer items-center justify-between border border-dashed border-background px-3 py-[6px] text-sm transition-colors hover:bg-muted/50",{"bg-muted":c}),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Jo,{column:o}),e.jsx("span",{children:o.column_name})]})},o.column_name)})})}function Zo({dataType:t}){const a=s.getDataType(t);return a==="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(ye,{className:"h-3 w-3"})}):a==="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(Te,{className:"h-3 w-3"})}):a==="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"})}):a==="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(Ue,{className:"h-3 w-3"})}):a==="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(Ze,{className:"h-3 w-3"})}):a==="geo"?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(es,{className:"h-3 w-3"})}):a==="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(ns,{className:"h-3 w-3"})}):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(ye,{className:"h-3 w-3"})})}function ei(){const[t,a]=I.useState(""),[n,r]=I.useState("all"),l=s.useDashboardStore(p=>p.dashboard.filters)||[],{assignFilter:o}=$s(),c=s.useEditorStore(p=>p.card.dataSource),{columns:i=[],isLoading:u,error:d}=s.useColumns(),m=i.filter(p=>p.name.toLowerCase().includes(t.toLowerCase())||p.dataType.toLowerCase().includes(t.toLowerCase())||p.label&&p.label.toLowerCase().includes(t.toLowerCase())),h=p=>{const v=s.getDataType(p.dataType);return v==="number"?"metrics":(["date","string","boolean"].includes(v),"dimensions")},f=n==="all"?m:m.filter(p=>h(p)===n),g=m.filter(p=>h(p)==="dimensions").length,j=m.filter(p=>h(p)==="metrics").length,x=p=>{const v={column_name:p.name,data_type:p.dataType,label:p.label,description:p.description};o(v,"dashboard",p)};if(u)return e.jsx("div",{className:"flex h-full grow flex-col items-center justify-center px-3",children:e.jsx(s.LoadingDots,{size:"md",color:"muted","aria-label":"Loading fields"})});if(d)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-3",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"})]});if(!c||!c.selectedEntities||c.selectedEntities.length===0)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-6 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"})]});if(i.length===0)return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center px-6 py-8 text-center",children:[e.jsx("p",{className:"text-sm text-gray-500",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"})]});const b=m.length>0;return e.jsxs("div",{className:"flex h-full grow flex-col pb-4",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-3 px-3 pt-3",children:[i.length>0&&e.jsxs("div",{className:"relative",children:[e.jsx(s.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground"}),e.jsx(s.Input$1,{className:"pl-10",type:"text",placeholder:"Search fields...",value:t,onChange:p=>a(p.target.value)})]}),b&&e.jsx(s.Tabs,{defaultValue:"all",value:n,onValueChange:p=>r(p),children:e.jsxs(s.TabsList,{className:"grid h-9 w-full grid-cols-3",children:[e.jsxs(s.TabsTrigger,{value:"all",className:"text-xs",children:["All",e.jsx("span",{className:"ml-2 text-xs font-semibold",children:m.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:g})]}),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:j})]})]})})]}),e.jsxs(s.ScrollArea,{className:"flex-1 basis-0 flex-col px-3 pt-3",children:[f.length===0&&t&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:['No fields found matching "',t,'"']}),f.length===0&&!t&&n!=="all"&&e.jsxs("div",{className:"py-4 text-center text-sm text-gray-500",children:["No ",n," fields found"]}),f.map(p=>{const v=l==null?void 0:l.some(T=>{var L;return T.title===p.name||((L=T.column)==null?void 0:L.includes(p.name))});return e.jsx("div",{onClick:()=>x(p),className:s.cn("group flex cursor-pointer items-center justify-between border border-dashed border-background px-3 py-[6px] text-sm transition-colors hover:bg-muted/50",{"bg-muted":v}),children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Zo,{dataType:p.dataType}),e.jsx("span",{children:p.label||p.name})]})},p.id)})]})]})}function si(){var r;const t=s.useDashboardStore(l=>l.actions.setShowFilters),a=s.useCurrentActiveCard(),n=a&&((r=a.dataSource)==null?void 0:r.selectedEntities)&&a.dataSource.selectedEntities.length>0;return e.jsxs("section",{className:"relative flex min-w-[320px] grow flex-col border-l px-1",children:[e.jsxs("div",{className:"mt-4 flex items-center justify-between gap-2 px-3",children:[e.jsx(s.Label,{className:"px-2 text-lg",children:"Filters"}),e.jsx(s.Button,{onClick:()=>t(!1),className:"h-7 w-7 p-0",variant:"ghost",children:e.jsx(s.Cross2Icon,{})})]}),e.jsx("div",{className:"flex grow",children:n?e.jsx(ei,{}):e.jsx(Gt,{type:"filter",ColumnsComponent:()=>e.jsx(Xo,{})})})]})}function ti(){const t=s.useDashboardStore(r=>r.dashboard.filters),a=s.useDashboardStore(r=>r.theme),n=t==null?void 0:t.filter(r=>r.hide);return n!=null&&n.length?e.jsx("div",{className:s.cn("mb-1 flex items-center gap-2 border-y px-0.5 pb-0.5",{"bg-[repeating-linear-gradient(45deg,_#ffffff_0_3px,_#f3f3f3_3px_6px)]":a==="light","bg-[repeating-linear-gradient(45deg,_#18171d_0_3px,_#272729_3px_6px)]":a==="dark"}),children:n==null?void 0:n.map(r=>e.jsxs("div",{className:"flex min-w-[250px] max-w-fit flex-col gap-1 p-2",children:[e.jsx(s.FilterHeader,{filter:r}),e.jsx(s.FilterComponent,{filter:r})]},r.id))}):null}function ai(){const t=s.useDashboardStore(r=>r.showFilters),a=s.useDashboardStore(r=>r.isVisualEditing),n=s.useDashboardStore(r=>r.isDashboardEditing);return e.jsxs("div",{role:"dashboard-plus-main",className:s.cn("",{"max-h-0 overflow-hidden":a,"flex grow overflow-auto":!a}),children:[e.jsxs("section",{className:"flex grow flex-col",children:[n&&e.jsx(ti,{}),e.jsx(s.DashboardTabs,{})]}),t&&e.jsx("div",{role:"filter-aside-container",className:"flex",children:e.jsx(si,{})})]})}function ni(){const t=s.useDashboardStore(l=>l.dashboard),a=s.useDashboardStore(l=>l.actions.setDashboard),n=s.useDashboardStore(l=>l.showDashboardJSON),r=s.useDashboardStore(l=>l.actions.setShowDashboardJSON);return e.jsxs("div",{className:s.cn("relative p-2",{hidden:!n}),children:[e.jsxs(s.Button,{variant:"secondary",size:"sm",className:"absolute right-2 top-2 z-10 h-8",onClick:()=>r(!1),children:[e.jsx(s.X,{className:"mr-2 h-4 w-4"}),"Close"]}),e.jsx(s.de,{onChange:l=>{if(l)try{JSON.parse(l),a(JSON.parse(l))}catch{}},defaultLanguage:"json",className:"h-[550px] overflow-y-auto",value:JSON.stringify(t,null,2),options:{minimap:{enabled:!1},glyphMargin:!1,wordWrap:"on",scrollbar:{verticalScrollbarSize:0,horizontalScrollbarSize:0},fontSize:12,renderLineHighlight:"none"}})]})}function ri({showControls:t=!1,showFooter:a=!0,...n}){return typeof window>"u"?null:e.jsx(s.ErrorBoundary,{FallbackComponent:s.Fallback,children:e.jsxs(s.SemaphorContextProvider,{dashboardProps:n,children:[e.jsx(s.$e,{}),e.jsxs(s.UXProvider,{children:[e.jsx(ni,{}),e.jsxs("main",{className:"relative flex h-full w-full flex-col",children:[t&&e.jsx(jr,{}),e.jsxs(s.DashboardPanel,{...n,children:[e.jsx(Wo,{}),e.jsx(ai,{})]})]})]})]})})}exports.DashboardPlus=ri;exports.ResourceManagementPanel=qt;exports.ScheduleDashboard=kt;exports.SelectComponent=He;exports.cleanCard=St;exports.downloadPdf=Dt;exports.getDashbaordStateWithoutData=xs;