semaphor 0.0.36 → 0.0.37

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.
@@ -32407,8 +32407,7 @@ function BX({ card: e }) {
32407
32407
  /* @__PURE__ */ x.jsx(p1, { children: /* @__PURE__ */ x.jsx(
32408
32408
  ZK,
32409
32409
  {
32410
- className: "size-4 text-muted-foreground/40 ",
32411
- strokeWidth: 3
32410
+ className: "size-4 text-muted-foreground/40 "
32412
32411
  }
32413
32412
  ) }),
32414
32413
  /* @__PURE__ */ x.jsx(
@@ -327,7 +327,7 @@ Valid keys: `+JSON.stringify(Object.keys(M),null," "));var U=we(de,ie,le,ve,pe+
327
327
  *
328
328
  * This source code is licensed under the ISC license.
329
329
  * See the LICENSE file in the root directory of this source tree.
330
- */const _6=Pt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function GO({number:e,format:t,useSuffix:n=!1,customSuffix:r="",currency:i="",locale:o="en-US"}){let s=1,a=r,l=o;const c=t.includes(".")?t.split(".")[1].length:0;n&&!r&&(e>=1e9?(s=1e9,a="B"):e>=1e7&&o==="en-IN"?(s=1e7,a="Cr"):e>=1e5&&o==="en-IN"?(s=1e5,a="L"):e>=1e6?(s=1e6,a="M"):e>=1e3&&(s=1e3,a="K"));const u=e/s,f={maximumFractionDigits:c,minimumFractionDigits:c};if(i){f.style="currency",f.currency=i;try{new Intl.NumberFormat("en-US",f).format(0)}catch{f.currency="USD"}}try{new Intl.NumberFormat(o,f).format(0)}catch{l="en-US"}let p=new Intl.NumberFormat(l,f).format(u);return n&&(p+=a),p}function YO({card:e,isLoading:t}){var x,_,S,C,P,O,k,A,L,F,$,B,V,oe,ee,j,J,q;const n=he(K=>K.actions.setCardTitle),r=he(K=>K.actions.setCardDescription),i=he(K=>K.isVisualEditing),o=me(K=>K.card),s=me(K=>K.actions.setCard);me(K=>K.actions.setNumberFormat);const a=he(K=>K.selectedSheetId),l=e.data,c=Object.keys((l==null?void 0:l[0])||{}),u=(x=l==null?void 0:l[0])==null?void 0:x[c[0]],f=(_=l==null?void 0:l[0])==null?void 0:_[c==null?void 0:c[1]],g=!!e.data&&e.data.length>0;function p(K){i?s({...o,title:K}):n(a,e.id,K)}function v(K){i?s({...o,description:K}):r(a,e.id,K)}const y=f&&f-u!==0?(u-f)/f:null;return w.jsxs("div",{className:"overflow-scroll kpi-card grow flex flex-col",children:[w.jsxs(Wf,{className:"grow pb-3 ",children:[w.jsx(Xo,{text:i?o.title:e.title,onSave:p,children:w.jsxs("div",{className:"flex gap-2 items-center",children:[w.jsx(Uf,{className:" text-muted-foreground font-medium text-base ",children:e.title}),!e.refreshInterval&&t&&w.jsx(Al,{className:"w-4 h-4 animate-spin text-muted-foreground"})]})}),g&&w.jsxs("div",{className:" text-foreground flex flex-wrap gap-3 items-end ",children:[w.jsx("p",{className:"text-3xl font-semibold",children:GO({number:u,format:((C=(S=e.preferences)==null?void 0:S.formatNumber)==null?void 0:C.format)||"",useSuffix:!!((O=(P=e.preferences)==null?void 0:P.formatNumber)!=null&&O.suffix),customSuffix:"",locale:((A=(k=e.preferences)==null?void 0:k.formatNumber)==null?void 0:A.locale)||"",currency:((F=(L=e.preferences)==null?void 0:L.formatNumber)==null?void 0:F.currency)||""})}),f&&w.jsxs("span",{className:" text-base font-normal text-muted-foreground min-w-fit",children:["from  ",GO({number:f,format:((B=($=e.preferences)==null?void 0:$.formatNumber)==null?void 0:B.format)||"",useSuffix:!!((oe=(V=e.preferences)==null?void 0:V.formatNumber)!=null&&oe.suffix),customSuffix:"",locale:((j=(ee=e.preferences)==null?void 0:ee.formatNumber)==null?void 0:j.locale)||"",currency:((q=(J=e.preferences)==null?void 0:J.formatNumber)==null?void 0:q.currency)||""})]})]})]}),y&&w.jsxs(qf,{className:" grow gap-1 items-start pb-4 text-sm ",children:[w.jsx(S6,{children:y}),w.jsxs("div",{className:" text-muted-foreground flex gap-1 ",children:[y>0?"up ":"down ",w.jsx(Xo,{text:e.description||"",onSave:v,children:e.description})]})]})]})}function S6({children:e}){const t=e>0?w.jsx(O2,{className:"h-4 w-4"}):w.jsx(E2,{className:"h-4 w-4"}),n=`${Math.abs(e*100).toFixed(0)}%`;return w.jsxs("div",{className:ke(" flex items-center",{"text-green-600":e>0,"text-destructive":e<0}),children:[t,w.jsx("span",{className:"ml-[1px]",children:n})]})}var Il=1e3,Nl=Il*60,Rl=Nl*60,ha=Rl*24,C6=ha*7,E6=ha*365.25,O6=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return P6(e);if(n==="number"&&isFinite(e))return t.long?D6(e):k6(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function P6(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*E6;case"weeks":case"week":case"w":return n*C6;case"days":case"day":case"d":return n*ha;case"hours":case"hour":case"hrs":case"hr":case"h":return n*Rl;case"minutes":case"minute":case"mins":case"min":case"m":return n*Nl;case"seconds":case"second":case"secs":case"sec":case"s":return n*Il;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function k6(e){var t=Math.abs(e);return t>=ha?Math.round(e/ha)+"d":t>=Rl?Math.round(e/Rl)+"h":t>=Nl?Math.round(e/Nl)+"m":t>=Il?Math.round(e/Il)+"s":e+"ms"}function D6(e){var t=Math.abs(e);return t>=ha?Jh(e,t,ha,"day"):t>=Rl?Jh(e,t,Rl,"hour"):t>=Nl?Jh(e,t,Nl,"minute"):t>=Il?Jh(e,t,Il,"second"):e+" ms"}function Jh(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+" "+r+(i?"s":"")}const M6=Nc(O6);function T6(e){he(l=>l.bookmarkKey);const t=he(l=>l.dashboard.baseQueries),{authToken:n}=ao(),r=he(l=>l.filterValues),i=he(l=>l.isDashboardEditing),o=M6((e==null?void 0:e.refreshInterval)||"0"),s=bw(e.sql,t);return gi({queryKey:[e.id,s],queryFn:()=>jc("https://semaphor.cloud/api/v1/query",(n==null?void 0:n.accessToken)||"",{connection_id:e.connectionId,sql:s,active_filters:r}),refetchInterval:o,enabled:!!e.connectionId&&!i})}function pa({data:e,cfg:t,customCfg:n}){const{dimensionKeys:r,metricKeys:i}=xo(e),o=Lz(i,e),s=$b(o,n),a=r[0],l=k2(e,a),c=jb((t==null?void 0:t.options)||{},(n==null?void 0:n.options)||{});return{type:(n==null?void 0:n.type)||(t==null?void 0:t.type)||"bar",data:{labels:l,datasets:s},options:c}}function A6(e){return{...e,type:"bar",options:{...e==null?void 0:e.options,indexAxis:"y",scales:{x:{display:!0},y:{display:!0}}}}}function I6(e){return{...e,type:"bar",options:{...e==null?void 0:e.options,scales:{x:{display:!0},y:{display:!0}}}}}function N6(e){var n,r,i,o;return{...e,type:"bar",options:{...e==null?void 0:e.options,scales:{x:{...(r=(n=e==null?void 0:e.options)==null?void 0:n.scales)==null?void 0:r.x,display:!0,stacked:!0},y:{...(o=(i=e==null?void 0:e.options)==null?void 0:i.scales)==null?void 0:o.y,display:!0,stacked:!0}}}}}function R6(e){return{...e,type:"line",options:{...e==null?void 0:e.options,scales:{x:{display:!0},y:{display:!0}}}}}function KO(e,t){return{...t,type:e,options:{...t==null?void 0:t.options,scales:{x:{display:!1},y:{display:!1}}}}}function L6(e){return{...e,type:"radar",options:{...e==null?void 0:e.options,scales:{x:{display:!1},y:{display:!1}}}}}function _0({data:e,cardType:t="bar",cfg:n,customCfg:r,provider:i="chartjs",userSettings:o}){if(t==="bar"){const s=I6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="horizontalBar"){const s=A6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="stackedBar"){const s=N6(n),{dimensionKeys:a,metricKeys:l}=xo(e),c=P2({dataArray:e,groupKey:a[0],pivotKey:a[1],valueKey:l[0]});return pa({data:c,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="line"){const s=R6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="pie"||t==="doughnut"){const s=KO(t,n),{dimensionKeys:a,metricKeys:l}=xo(e),c=$z(l,e),u=$b(c,r),f=a[0],g=k2(e,f),p=jb((s==null?void 0:s.options)||{},(r==null?void 0:r.options)||{});return{type:t,data:{labels:g,datasets:u},options:p}}if(t==="radar"){const s=L6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="bubble"||t==="scatter"){const{metricKeys:s}=xo(e);if(s.length<3){console.log("Bubble charts require 3 numeric columns");return}const a=Fz(e),l=$b(a,r),c={plugins:{datalabels:{display:!0}},scales:{x:{title:{display:!0,text:s[0]},beginAtZero:!0,ticks:{precision:0}},y:{title:{display:!0,text:s[1]},beginAtZero:!0,ticks:{precision:0}}}},u=jb(c,(r==null?void 0:r.options)||{});return{type:t,data:{datasets:l},options:u}}if(t==="polarArea"){const s=KO(t,n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}return pa({data:e,cfg:n,customCfg:r,cardType:t,userSettings:o,provider:i})}function F6({chart:e,elementIndex:t,datasetIndex:n,cardType:r,cfg:i,apply:o}){const s=he.getState().theme;if(!i)return;const a=s==="dark"?"rgb(238,238,238,0.2)":"rgb(238,238,238,0.8)";["bar","line","horizontalBar","bubble","scatter"].includes(r)&&j6(e,t,i,o,a),["pie","doughnut","polarArea"].includes(r)&&z6(e,t,i,o,a),r==="stackedBar"&&$6({chart:e,elementIndex:t,datasetIndex:n,cfg:i,apply:o,blurColor:a})}function $6(e){var a,l,c,u;const{chart:t,elementIndex:n,datasetIndex:r,cfg:i,apply:o,blurColor:s}=e;o?(l=(a=t==null?void 0:t.data)==null?void 0:a.datasets)==null||l.forEach((f,g)=>{var p,v;typeof f.backgroundColor=="string"&&(f.backgroundColor=new Array(f.data.length).fill(f.backgroundColor),f.borderColor=new Array(f.data.length).fill(f.borderColor)),f.backgroundColor=(p=f==null?void 0:f.backgroundColor)==null?void 0:p.map((y,x)=>x===n&&g===r?y:s),f.borderColor=(v=f==null?void 0:f.borderColor)==null?void 0:v.map((y,x)=>x===n&&g===r?y:s)}):(u=(c=t==null?void 0:t.data)==null?void 0:c.datasets)==null||u.forEach((f,g)=>{var p,v,y,x,_,S;f.backgroundColor=new Array(f.data.length).fill((y=(v=(p=i==null?void 0:i.data)==null?void 0:p.datasets)==null?void 0:v[g])==null?void 0:y.backgroundColor),f.borderColor=new Array(f.data.length).fill((S=(_=(x=i==null?void 0:i.data)==null?void 0:x.datasets)==null?void 0:_[g])==null?void 0:S.borderColor)}),t==null||t.update()}function j6(e,t,n,r,i){var o,s,a,l;console.log("clicked index",t),r?(s=(o=e==null?void 0:e.data)==null?void 0:o.datasets)==null||s.forEach(c=>{var u,f;typeof c.backgroundColor=="string"&&(c.backgroundColor=new Array(c.data.length).fill(c.backgroundColor),c.borderColor=new Array(c.data.length).fill(c.borderColor)),c.backgroundColor=(u=c==null?void 0:c.backgroundColor)==null?void 0:u.map((g,p)=>p===t?g:i),c.borderColor=(f=c==null?void 0:c.borderColor)==null?void 0:f.map((g,p)=>p===t?g:i)}):(l=(a=e==null?void 0:e.data)==null?void 0:a.datasets)==null||l.forEach((c,u)=>{var f,g,p,v,y,x;c.backgroundColor=new Array(c.data.length).fill((p=(g=(f=n==null?void 0:n.data)==null?void 0:f.datasets)==null?void 0:g[u])==null?void 0:p.backgroundColor),c.borderColor=new Array(c.data.length).fill((x=(y=(v=n==null?void 0:n.data)==null?void 0:v.datasets)==null?void 0:y[u])==null?void 0:x.borderColor)}),e==null||e.update()}function z6(e,t,n,r,i){var o,s,a,l;r?(s=(o=e==null?void 0:e.data)==null?void 0:o.datasets)==null||s.forEach(c=>{var u,f;c.backgroundColor=(u=c==null?void 0:c.backgroundColor)==null?void 0:u.map((g,p)=>p===t?g:i),c.borderColor=(f=c==null?void 0:c.borderColor)==null?void 0:f.map((g,p)=>p===t?g:i)}):(l=(a=e==null?void 0:e.data)==null?void 0:a.datasets)==null||l.forEach((c,u)=>{var f,g,p,v,y,x,_,S;typeof c.backgroundColor=="string"&&(c.backgroundColor=(p=(g=(f=n==null?void 0:n.data)==null?void 0:f.datasets)==null?void 0:g[u])==null?void 0:p.backgroundColor,c.borderColor=(x=(y=(v=n==null?void 0:n.data)==null?void 0:v.datasets)==null?void 0:y[u])==null?void 0:x.borderColor),c.backgroundColor=(_=c==null?void 0:c.backgroundColor)==null?void 0:_.map((C,P)=>{var O;return(O=n.data.datasets[u].backgroundColor)==null?void 0:O[P]}),c.borderColor=(S=c==null?void 0:c.borderColor)==null?void 0:S.map((C,P)=>{var O;return(O=n.data.datasets[u].borderColor)==null?void 0:O[P]})}),e==null||e.update()}function B6(e,t,n,r){var i,o;try{if(!e||!e.data)return;const{dimensionKeys:s,metricKeys:a}=xo(e.data);if(["bar","horizontalBar","line","pie","doughnut","radar","polarArea"].includes(e.type)){const l=s[0],c=(i=e.data[n])==null?void 0:i[l];return[{columnName:l,columnValue:c,metric:a[t],value:r}]}if(e.type==="stackedBar"){const l=P2({dataArray:e.data,groupKey:s[0],pivotKey:s[1],valueKey:a[0]}),c=s[0],u=(o=l[n])==null?void 0:o[c],f=s[1],{metricKeys:g}=xo(l),p=g[t];return[{columnName:c,columnValue:u,metric:a[0],value:r},{columnName:f,columnValue:p,metric:a[0],value:r}]}if(e.type==="bubble"||e.type==="scatter"){const l=s[0],c=r.label;return[{columnName:l,columnValue:c,metric1:a[0],value1:r.x,metric2:a[1],value2:r.y,metric3:a==null?void 0:a[2],value3:r==null?void 0:r.r}]}}catch(s){console.error("Error in getAdhocFilter",s)}}function V6(e){var s,a;const[t]=m.useState({id:"",title:"",type:"bar",data:[]}),{getCard:n}=Gc(),r=n(e),i=XO(r||t),o={...r,data:((s=i==null?void 0:i.data)==null?void 0:s.records)||[]};return{...i,data:((a=i==null?void 0:i.data)==null?void 0:a.records)||[],card:o}}function XO(e){var B,V,oe;const{onChartElementClicked:t}=ao(),[n,r]=m.useState(0),i=((B=e==null?void 0:e.preferences)==null?void 0:B.filterOnClickColumnIndex)===void 0?0:(V=e.preferences)==null?void 0:V.filterOnClickColumnIndex,o=he(ee=>ee.bookmarkKey);he(ee=>ee.isVisualEditing);const s=he(ee=>ee.filteringCards),a=he(ee=>ee.selectedSheetId);he(ee=>ee.selectedCardId),he(ee=>ee.isDashboardEditing);const l=he(ee=>ee.themeStyle),c=he(ee=>ee.filterValues),u=(oe=e==null?void 0:e.preferences)==null?void 0:oe.onClickFilter,{addFrame:f,addFilteringCard:g,setFrameCardData:p,getSelectedFrame:v,addOrUpdateFilterValue:y,addOrUpdateFilterValues:x,removeFilterValue:_,removeFilteringCard:S}=Gc(),{data:C,isLoading:P,isFetching:O,isError:k,refetch:A}=T6(e),L=s==null?void 0:s.find(ee=>ee.id===e.id);let F;e.data&&e.data.length>0&&(F=_0({data:e.data,cardType:e.type,cfg:e.cfg,customCfg:e.customCfg})),m.useEffect(()=>{!C||!C.records||p(a,e.id,(C==null?void 0:C.records)||[])},[C,a,e.id,p,c]),m.useEffect(()=>{e.data&&r(n+1)},[e.data,e.type,e.cfg,e.customCfg,l]),m.useEffect(()=>{e.connectionId&&!L&&A()},[c,o]);function $(ee,j,J,q){var M,H;let K=!1;if(!e.data)return;const G=B6(e,j,J,q);if(t==null||t(e,G),!!(((M=e==null?void 0:e.preferences)==null?void 0:M.onClickFilter)??[]).length){if(L){const ne=e.id;_(ne),S(e)}else{if(K=!0,!G)return;const ne=[];G.forEach((N,le)=>{const ve=u==null?void 0:u.find(de=>de.columnIndex===le);if(!ve)return;const pe={filterId:e.id+"-"+le,connectionId:e==null?void 0:e.connectionId,tableName:e.lastSelectedTable,name:N.columnName,expression:ve.expression,valueType:vf(G[ve.columnIndex].columnValue),operation:"=",values:[G[ve.columnIndex].columnValue]};ne.push(pe)}),e.id,e==null||e.connectionId,e.lastSelectedTable,G[i].columnName,(H=e.preferences)==null||H.filterOnClickField,vf(G[i].columnValue),G[i].columnValue,x(ne),g(e)}F6({chart:ee,elementIndex:J,datasetIndex:j,cardType:e.type,cfg:F,apply:K})}}return{isError:k,isLoading:P,isFetching:O,data:C,visualKey:n,handleDatapointClick:$,cfg:F}}function H6(e,t){const n=he(u=>u.selectedSheetId),r=he(u=>u.selectedFrameId),i=he(u=>u.isDashboardEditing),o=he(u=>u.isVisualEditing),{addFrame:s,getSelectedFrame:a,setSelectedFrameId:l}=he(u=>u.actions);m.useEffect(()=>{const u=g=>{if(i&&((g.metaKey||g.ctrlKey)&&g.key==="c"&&navigator.clipboard.writeText(JSON.stringify(a())),(g.ctrlKey||g.metaKey)&&g.key==="v"))try{navigator.clipboard.readText().then(p=>{try{const v=JSON.parse(p);if(v&&v.id){v.id=qo();const y=v.activeCardId;v.cards.forEach(x=>{const _=x.id;x.id=qo(),_===y&&(v.activeCardId=x.id,x.title=`${x.title} (Copy)`)}),s(n,v),l(v.id)}}catch(v){console.error("Failed to parse clipboard contents: ",v)}})}catch(p){console.error("Failed to read clipboard contents: ",p)}},f=t==null?void 0:t.current;return f==null||f.addEventListener("keydown",u),()=>{f==null||f.removeEventListener("keydown",u)}},[i,n,a,s,t,l]),m.useEffect(()=>{r===e.id&&i&&!o&&c()},[r,e.id,i,o]);function c(){const u=t==null?void 0:t.current;u==null||u.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}}let S0;const QO="HoverCard",[ZO,zfe]=Dn(QO,[zi]),C0=zi(),[W6,E0]=ZO(QO),U6=e=>{const{__scopeHoverCard:t,children:n,open:r,defaultOpen:i,onOpenChange:o,openDelay:s=700,closeDelay:a=300}=e,l=C0(t),c=m.useRef(0),u=m.useRef(0),f=m.useRef(!1),g=m.useRef(!1),[p=!1,v]=Zn({prop:r,defaultProp:i,onChange:o}),y=m.useCallback(()=>{clearTimeout(u.current),c.current=window.setTimeout(()=>v(!0),s)},[s,v]),x=m.useCallback(()=>{clearTimeout(c.current),!f.current&&!g.current&&(u.current=window.setTimeout(()=>v(!1),a))},[a,v]),_=m.useCallback(()=>v(!1),[v]);return m.useEffect(()=>()=>{clearTimeout(c.current),clearTimeout(u.current)},[]),m.createElement(W6,{scope:t,open:p,onOpenChange:v,onOpen:y,onClose:x,onDismiss:_,hasSelectionRef:f,isPointerDownOnContentRef:g},m.createElement(Iu,l,n))},q6="HoverCardTrigger",G6=m.forwardRef((e,t)=>{const{__scopeHoverCard:n,...r}=e,i=E0(q6,n),o=C0(n);return m.createElement(Nu,se({asChild:!0},o),m.createElement(He.a,se({"data-state":i.open?"open":"closed"},r,{ref:t,onPointerEnter:Oe(e.onPointerEnter,ep(i.onOpen)),onPointerLeave:Oe(e.onPointerLeave,ep(i.onClose)),onFocus:Oe(e.onFocus,i.onOpen),onBlur:Oe(e.onBlur,i.onClose),onTouchStart:Oe(e.onTouchStart,s=>s.preventDefault())})))}),Y6="HoverCardPortal",[Bfe,K6]=ZO(Y6,{forceMount:void 0}),O0="HoverCardContent",X6=m.forwardRef((e,t)=>{const n=K6(O0,e.__scopeHoverCard),{forceMount:r=n.forceMount,...i}=e,o=E0(O0,e.__scopeHoverCard);return m.createElement(yn,{present:r||o.open},m.createElement(Q6,se({"data-state":o.open?"open":"closed"},i,{onPointerEnter:Oe(e.onPointerEnter,ep(o.onOpen)),onPointerLeave:Oe(e.onPointerLeave,ep(o.onClose)),ref:t})))}),Q6=m.forwardRef((e,t)=>{const{__scopeHoverCard:n,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:o,onInteractOutside:s,...a}=e,l=E0(O0,n),c=C0(n),u=m.useRef(null),f=st(t,u),[g,p]=m.useState(!1);return m.useEffect(()=>{if(g){const v=document.body;return S0=v.style.userSelect||v.style.webkitUserSelect,v.style.userSelect="none",v.style.webkitUserSelect="none",()=>{v.style.userSelect=S0,v.style.webkitUserSelect=S0}}},[g]),m.useEffect(()=>{if(u.current){const v=()=>{p(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var y;((y=document.getSelection())===null||y===void 0?void 0:y.toString())!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",v),()=>{document.removeEventListener("pointerup",v),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),m.useEffect(()=>{u.current&&Z6(u.current).forEach(y=>y.setAttribute("tabindex","-1"))}),m.createElement(El,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:s,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:Oe(o,v=>{v.preventDefault()}),onDismiss:l.onDismiss},m.createElement(Ru,se({},c,a,{onPointerDown:Oe(a.onPointerDown,v=>{v.currentTarget.contains(v.target)&&p(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:f,style:{...a.style,userSelect:g?"text":void 0,WebkitUserSelect:g?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})))});function ep(e){return t=>t.pointerType==="touch"?void 0:e()}function Z6(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;n.nextNode();)t.push(n.currentNode);return t}const J6=U6,eH=G6,JO=X6,P0=J6,k0=eH,tp=ue.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},i)=>w.jsx(JO,{ref:i,align:t,sideOffset:n,className:ke("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));tp.displayName=JO.displayName;function tH({card:e}){const{setCardInfo:t}=Gc();return w.jsxs(P0,{openDelay:0,children:[w.jsx(k0,{children:w.jsx(d6,{className:"size-4 text-muted-foreground/40 ",strokeWidth:3})}),w.jsx(tp,{align:"start",className:"w-[300px] ",onMouseDown:n=>n.stopPropagation(),children:w.jsx(Xo,{type:"textarea",text:e.info||"",onSave:n=>t(e.id,n),children:w.jsx("p",{className:"text-sm text-muted-foreground",children:e.info||"Add Info"})})})]})}function nH({frame:e,footer:t,className:n,...r}){const{customCards:i}=ao(),o=m.useRef(null),s=he(F=>F.themeStyle),a=he(F=>F.selectedSheetId),l=he(F=>F.selectedFrameId),c=he(F=>F.isDashboardEditing),u=e.cards.find(F=>F.id===e.activeCardId);H6(e,o);const{isError:f,isLoading:g,isFetching:p,cfg:v,visualKey:y,handleDatapointClick:x}=XO(u),{setCardTitle:_,setCardDescription:S,setSelectedFrameId:C}=Gc();function P(F){F.stopPropagation(),C(e.id)}function O(){if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.replaceDefault){const $=F.content;if($)return w.jsx($,{card:u})}}return u.type==="kpi"?w.jsx(YO,{isLoading:g||p,card:u}):L}function k(){if(f)return w.jsx("p",{className:"text-sm",children:"Oops! It seems like something went wrong. Please review your connection or filters."});if(u.type==="table"&&u.data&&u.data.length>0)return w.jsxs(Tl,{children:[w.jsx(m0,{data:u.data}),w.jsx($u,{orientation:"horizontal"})]});if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.content){const $=F.content;return w.jsx($,{card:u})}}if(v)return w.jsx(w2,{cfg:v,onDatapointClick:x},y)}function A(){if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.footer){const $=F.footer;if($)return w.jsx($,{card:u})}}return t||null}if(!u.id)return null;const L=w.jsxs(w.Fragment,{children:[w.jsxs(Wf,{className:" pb-4",children:[w.jsxs("div",{className:"flex items-center gap-2",children:[w.jsx(Xo,{text:u.title,onSave:F=>_(a,u.id,F),children:w.jsx(Uf,{className:"text-base",children:u.title})}),(c||u.info)&&w.jsx(tH,{card:u}),u.refreshInterval&&w.jsxs(Jb,{children:[w.jsx(sO,{className:"pr-1",children:w.jsx("div",{className:ke("h-2 w-2 rounded-full bg-green-500 transition-opacity",{"opacity-10":g||p})})}),w.jsx(Hh,{side:"right",align:"center",children:w.jsx("p",{className:"text-xs",children:`Realtime (${u==null?void 0:u.refreshInterval})`})})]}),!u.refreshInterval&&(g||p)&&w.jsx(Al,{className:"w-4 h-4 animate-spin text-muted-foreground"})]}),w.jsx(Xo,{text:(u==null?void 0:u.description)||"",onSave:F=>S(a,u.id,F),children:w.jsxs(Uv,{children:[" ",u.description]})})]}),w.jsx(qf,{className:" grow flex flex-col pb-0 relative overflow-auto ",children:k()}),w.jsx(WS,{children:A()})]});return w.jsxs(Wv,{tabIndex:-1,ref:o,role:"dashboard-card",onClick:P,className:ke(" relative h-full flex flex-col rounded-sm",{"border-dashed border-foreground/50 ":l===e.id&&c},s==null?void 0:s.dashboardCard,n),...r,children:[w.jsx(jz,{frame:e}),O()]})}const rH=HS.WidthProvider(HS.Responsive);function iH(){var x,_,S,C;const e=he(P=>P.isDashboardEditing);he(P=>P.currentBreakpoint);const t=he(P=>P.themeStyle),n=he(P=>P.selectedSheetId);(x=he(P=>{var O,k;return(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.filter(A=>A.id===n)}))==null||x[0].layout;const r=(_=he(P=>{var O,k;return(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.filter(A=>A.id===n)}))==null?void 0:_[0].layouts,i=he(P=>{var O,k,A;return(A=(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.find(L=>L.id===n))==null?void 0:A.frames}),{getSelectedSheet:o,getSelectedSheetLayout:s,getSelectedSheetLayouts:a,setSheetLayout:l,setSheetLayouts:c,setCurrentBreakpoint:u}=he(P=>P.actions),f=o(),g=m.useCallback(P=>{u(P)},[]),p=m.useCallback((P,O)=>{f!=null&&f.id&&c(f.id,O)},[f==null?void 0:f.id,c]);if(!n)return null;const v=(P,O)=>w.jsx(eP,{className:" after:content-none",ref:O,handleAxis:P});function y(){return i==null?void 0:i.map(P=>w.jsx("div",{role:"dashboard-card-container",className:ke("group",t==null?void 0:t.dashboardCardContainer),children:w.jsx(nH,{frame:P})},P.id))}return w.jsx(w.Fragment,{children:w.jsx(rH,{margin:((S=t==null?void 0:t.gridLayout)==null?void 0:S.margin)||[10,10],isDraggable:e,resizeHandles:e?["sw","nw","ne","se","e","w"]:[],className:ke((C=t==null?void 0:t.gridLayout)==null?void 0:C.className),layouts:r,cols:{lg:48,md:36,sm:24,xs:12,xxs:6},rowHeight:48,onBreakpointChange:g,onLayoutChange:p,resizeHandle:v,children:y()})})}const eP=m.forwardRef(({className:e,handleAxis:t,...n},r)=>w.jsx("div",{ref:r,className:ke(`z-10 react-resizable-handle react-resizable-handle-${t} absolute border-foreground/40 `,{"group-hover:border-2 group-hover:border-r-0 group-hover:border-b-0 border-foreground/40":t==="nw","group-hover:border-2 group-hover:border-l-0 group-hover:border-b-0 border-foreground/40":t==="ne","group-hover:border-2 group-hover:border-r-0 group-hover:border-t-0 border-foreground/40":t==="sw","group-hover:border-2 group-hover:border-l-0 group-hover:border-t-0 border-foreground/40":t==="se","group-hover:border-2 group-hover:border-b-0 group-hover:border-t-0 group-hover:border-l-0 border-foreground/40 ":t==="e","group-hover:border-2 group-hover:border-b-0 group-hover:border-t-0 group-hover:border-r-0 border-foreground/40":t==="w"},e),...n}));eP.displayName="ResizeHandle";/**
330
+ */const _6=Pt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function GO({number:e,format:t,useSuffix:n=!1,customSuffix:r="",currency:i="",locale:o="en-US"}){let s=1,a=r,l=o;const c=t.includes(".")?t.split(".")[1].length:0;n&&!r&&(e>=1e9?(s=1e9,a="B"):e>=1e7&&o==="en-IN"?(s=1e7,a="Cr"):e>=1e5&&o==="en-IN"?(s=1e5,a="L"):e>=1e6?(s=1e6,a="M"):e>=1e3&&(s=1e3,a="K"));const u=e/s,f={maximumFractionDigits:c,minimumFractionDigits:c};if(i){f.style="currency",f.currency=i;try{new Intl.NumberFormat("en-US",f).format(0)}catch{f.currency="USD"}}try{new Intl.NumberFormat(o,f).format(0)}catch{l="en-US"}let p=new Intl.NumberFormat(l,f).format(u);return n&&(p+=a),p}function YO({card:e,isLoading:t}){var x,_,S,C,P,O,k,A,L,F,$,B,V,oe,ee,j,J,q;const n=he(K=>K.actions.setCardTitle),r=he(K=>K.actions.setCardDescription),i=he(K=>K.isVisualEditing),o=me(K=>K.card),s=me(K=>K.actions.setCard);me(K=>K.actions.setNumberFormat);const a=he(K=>K.selectedSheetId),l=e.data,c=Object.keys((l==null?void 0:l[0])||{}),u=(x=l==null?void 0:l[0])==null?void 0:x[c[0]],f=(_=l==null?void 0:l[0])==null?void 0:_[c==null?void 0:c[1]],g=!!e.data&&e.data.length>0;function p(K){i?s({...o,title:K}):n(a,e.id,K)}function v(K){i?s({...o,description:K}):r(a,e.id,K)}const y=f&&f-u!==0?(u-f)/f:null;return w.jsxs("div",{className:"overflow-scroll kpi-card grow flex flex-col",children:[w.jsxs(Wf,{className:"grow pb-3 ",children:[w.jsx(Xo,{text:i?o.title:e.title,onSave:p,children:w.jsxs("div",{className:"flex gap-2 items-center",children:[w.jsx(Uf,{className:" text-muted-foreground font-medium text-base ",children:e.title}),!e.refreshInterval&&t&&w.jsx(Al,{className:"w-4 h-4 animate-spin text-muted-foreground"})]})}),g&&w.jsxs("div",{className:" text-foreground flex flex-wrap gap-3 items-end ",children:[w.jsx("p",{className:"text-3xl font-semibold",children:GO({number:u,format:((C=(S=e.preferences)==null?void 0:S.formatNumber)==null?void 0:C.format)||"",useSuffix:!!((O=(P=e.preferences)==null?void 0:P.formatNumber)!=null&&O.suffix),customSuffix:"",locale:((A=(k=e.preferences)==null?void 0:k.formatNumber)==null?void 0:A.locale)||"",currency:((F=(L=e.preferences)==null?void 0:L.formatNumber)==null?void 0:F.currency)||""})}),f&&w.jsxs("span",{className:" text-base font-normal text-muted-foreground min-w-fit",children:["from  ",GO({number:f,format:((B=($=e.preferences)==null?void 0:$.formatNumber)==null?void 0:B.format)||"",useSuffix:!!((oe=(V=e.preferences)==null?void 0:V.formatNumber)!=null&&oe.suffix),customSuffix:"",locale:((j=(ee=e.preferences)==null?void 0:ee.formatNumber)==null?void 0:j.locale)||"",currency:((q=(J=e.preferences)==null?void 0:J.formatNumber)==null?void 0:q.currency)||""})]})]})]}),y&&w.jsxs(qf,{className:" grow gap-1 items-start pb-4 text-sm ",children:[w.jsx(S6,{children:y}),w.jsxs("div",{className:" text-muted-foreground flex gap-1 ",children:[y>0?"up ":"down ",w.jsx(Xo,{text:e.description||"",onSave:v,children:e.description})]})]})]})}function S6({children:e}){const t=e>0?w.jsx(O2,{className:"h-4 w-4"}):w.jsx(E2,{className:"h-4 w-4"}),n=`${Math.abs(e*100).toFixed(0)}%`;return w.jsxs("div",{className:ke(" flex items-center",{"text-green-600":e>0,"text-destructive":e<0}),children:[t,w.jsx("span",{className:"ml-[1px]",children:n})]})}var Il=1e3,Nl=Il*60,Rl=Nl*60,ha=Rl*24,C6=ha*7,E6=ha*365.25,O6=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return P6(e);if(n==="number"&&isFinite(e))return t.long?D6(e):k6(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function P6(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*E6;case"weeks":case"week":case"w":return n*C6;case"days":case"day":case"d":return n*ha;case"hours":case"hour":case"hrs":case"hr":case"h":return n*Rl;case"minutes":case"minute":case"mins":case"min":case"m":return n*Nl;case"seconds":case"second":case"secs":case"sec":case"s":return n*Il;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function k6(e){var t=Math.abs(e);return t>=ha?Math.round(e/ha)+"d":t>=Rl?Math.round(e/Rl)+"h":t>=Nl?Math.round(e/Nl)+"m":t>=Il?Math.round(e/Il)+"s":e+"ms"}function D6(e){var t=Math.abs(e);return t>=ha?Jh(e,t,ha,"day"):t>=Rl?Jh(e,t,Rl,"hour"):t>=Nl?Jh(e,t,Nl,"minute"):t>=Il?Jh(e,t,Il,"second"):e+" ms"}function Jh(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+" "+r+(i?"s":"")}const M6=Nc(O6);function T6(e){he(l=>l.bookmarkKey);const t=he(l=>l.dashboard.baseQueries),{authToken:n}=ao(),r=he(l=>l.filterValues),i=he(l=>l.isDashboardEditing),o=M6((e==null?void 0:e.refreshInterval)||"0"),s=bw(e.sql,t);return gi({queryKey:[e.id,s],queryFn:()=>jc("https://semaphor.cloud/api/v1/query",(n==null?void 0:n.accessToken)||"",{connection_id:e.connectionId,sql:s,active_filters:r}),refetchInterval:o,enabled:!!e.connectionId&&!i})}function pa({data:e,cfg:t,customCfg:n}){const{dimensionKeys:r,metricKeys:i}=xo(e),o=Lz(i,e),s=$b(o,n),a=r[0],l=k2(e,a),c=jb((t==null?void 0:t.options)||{},(n==null?void 0:n.options)||{});return{type:(n==null?void 0:n.type)||(t==null?void 0:t.type)||"bar",data:{labels:l,datasets:s},options:c}}function A6(e){return{...e,type:"bar",options:{...e==null?void 0:e.options,indexAxis:"y",scales:{x:{display:!0},y:{display:!0}}}}}function I6(e){return{...e,type:"bar",options:{...e==null?void 0:e.options,scales:{x:{display:!0},y:{display:!0}}}}}function N6(e){var n,r,i,o;return{...e,type:"bar",options:{...e==null?void 0:e.options,scales:{x:{...(r=(n=e==null?void 0:e.options)==null?void 0:n.scales)==null?void 0:r.x,display:!0,stacked:!0},y:{...(o=(i=e==null?void 0:e.options)==null?void 0:i.scales)==null?void 0:o.y,display:!0,stacked:!0}}}}}function R6(e){return{...e,type:"line",options:{...e==null?void 0:e.options,scales:{x:{display:!0},y:{display:!0}}}}}function KO(e,t){return{...t,type:e,options:{...t==null?void 0:t.options,scales:{x:{display:!1},y:{display:!1}}}}}function L6(e){return{...e,type:"radar",options:{...e==null?void 0:e.options,scales:{x:{display:!1},y:{display:!1}}}}}function _0({data:e,cardType:t="bar",cfg:n,customCfg:r,provider:i="chartjs",userSettings:o}){if(t==="bar"){const s=I6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="horizontalBar"){const s=A6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="stackedBar"){const s=N6(n),{dimensionKeys:a,metricKeys:l}=xo(e),c=P2({dataArray:e,groupKey:a[0],pivotKey:a[1],valueKey:l[0]});return pa({data:c,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="line"){const s=R6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="pie"||t==="doughnut"){const s=KO(t,n),{dimensionKeys:a,metricKeys:l}=xo(e),c=$z(l,e),u=$b(c,r),f=a[0],g=k2(e,f),p=jb((s==null?void 0:s.options)||{},(r==null?void 0:r.options)||{});return{type:t,data:{labels:g,datasets:u},options:p}}if(t==="radar"){const s=L6(n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}if(t==="bubble"||t==="scatter"){const{metricKeys:s}=xo(e);if(s.length<3){console.log("Bubble charts require 3 numeric columns");return}const a=Fz(e),l=$b(a,r),c={plugins:{datalabels:{display:!0}},scales:{x:{title:{display:!0,text:s[0]},beginAtZero:!0,ticks:{precision:0}},y:{title:{display:!0,text:s[1]},beginAtZero:!0,ticks:{precision:0}}}},u=jb(c,(r==null?void 0:r.options)||{});return{type:t,data:{datasets:l},options:u}}if(t==="polarArea"){const s=KO(t,n);return pa({data:e,cfg:s,customCfg:r,cardType:t,userSettings:o,provider:i})}return pa({data:e,cfg:n,customCfg:r,cardType:t,userSettings:o,provider:i})}function F6({chart:e,elementIndex:t,datasetIndex:n,cardType:r,cfg:i,apply:o}){const s=he.getState().theme;if(!i)return;const a=s==="dark"?"rgb(238,238,238,0.2)":"rgb(238,238,238,0.8)";["bar","line","horizontalBar","bubble","scatter"].includes(r)&&j6(e,t,i,o,a),["pie","doughnut","polarArea"].includes(r)&&z6(e,t,i,o,a),r==="stackedBar"&&$6({chart:e,elementIndex:t,datasetIndex:n,cfg:i,apply:o,blurColor:a})}function $6(e){var a,l,c,u;const{chart:t,elementIndex:n,datasetIndex:r,cfg:i,apply:o,blurColor:s}=e;o?(l=(a=t==null?void 0:t.data)==null?void 0:a.datasets)==null||l.forEach((f,g)=>{var p,v;typeof f.backgroundColor=="string"&&(f.backgroundColor=new Array(f.data.length).fill(f.backgroundColor),f.borderColor=new Array(f.data.length).fill(f.borderColor)),f.backgroundColor=(p=f==null?void 0:f.backgroundColor)==null?void 0:p.map((y,x)=>x===n&&g===r?y:s),f.borderColor=(v=f==null?void 0:f.borderColor)==null?void 0:v.map((y,x)=>x===n&&g===r?y:s)}):(u=(c=t==null?void 0:t.data)==null?void 0:c.datasets)==null||u.forEach((f,g)=>{var p,v,y,x,_,S;f.backgroundColor=new Array(f.data.length).fill((y=(v=(p=i==null?void 0:i.data)==null?void 0:p.datasets)==null?void 0:v[g])==null?void 0:y.backgroundColor),f.borderColor=new Array(f.data.length).fill((S=(_=(x=i==null?void 0:i.data)==null?void 0:x.datasets)==null?void 0:_[g])==null?void 0:S.borderColor)}),t==null||t.update()}function j6(e,t,n,r,i){var o,s,a,l;console.log("clicked index",t),r?(s=(o=e==null?void 0:e.data)==null?void 0:o.datasets)==null||s.forEach(c=>{var u,f;typeof c.backgroundColor=="string"&&(c.backgroundColor=new Array(c.data.length).fill(c.backgroundColor),c.borderColor=new Array(c.data.length).fill(c.borderColor)),c.backgroundColor=(u=c==null?void 0:c.backgroundColor)==null?void 0:u.map((g,p)=>p===t?g:i),c.borderColor=(f=c==null?void 0:c.borderColor)==null?void 0:f.map((g,p)=>p===t?g:i)}):(l=(a=e==null?void 0:e.data)==null?void 0:a.datasets)==null||l.forEach((c,u)=>{var f,g,p,v,y,x;c.backgroundColor=new Array(c.data.length).fill((p=(g=(f=n==null?void 0:n.data)==null?void 0:f.datasets)==null?void 0:g[u])==null?void 0:p.backgroundColor),c.borderColor=new Array(c.data.length).fill((x=(y=(v=n==null?void 0:n.data)==null?void 0:v.datasets)==null?void 0:y[u])==null?void 0:x.borderColor)}),e==null||e.update()}function z6(e,t,n,r,i){var o,s,a,l;r?(s=(o=e==null?void 0:e.data)==null?void 0:o.datasets)==null||s.forEach(c=>{var u,f;c.backgroundColor=(u=c==null?void 0:c.backgroundColor)==null?void 0:u.map((g,p)=>p===t?g:i),c.borderColor=(f=c==null?void 0:c.borderColor)==null?void 0:f.map((g,p)=>p===t?g:i)}):(l=(a=e==null?void 0:e.data)==null?void 0:a.datasets)==null||l.forEach((c,u)=>{var f,g,p,v,y,x,_,S;typeof c.backgroundColor=="string"&&(c.backgroundColor=(p=(g=(f=n==null?void 0:n.data)==null?void 0:f.datasets)==null?void 0:g[u])==null?void 0:p.backgroundColor,c.borderColor=(x=(y=(v=n==null?void 0:n.data)==null?void 0:v.datasets)==null?void 0:y[u])==null?void 0:x.borderColor),c.backgroundColor=(_=c==null?void 0:c.backgroundColor)==null?void 0:_.map((C,P)=>{var O;return(O=n.data.datasets[u].backgroundColor)==null?void 0:O[P]}),c.borderColor=(S=c==null?void 0:c.borderColor)==null?void 0:S.map((C,P)=>{var O;return(O=n.data.datasets[u].borderColor)==null?void 0:O[P]})}),e==null||e.update()}function B6(e,t,n,r){var i,o;try{if(!e||!e.data)return;const{dimensionKeys:s,metricKeys:a}=xo(e.data);if(["bar","horizontalBar","line","pie","doughnut","radar","polarArea"].includes(e.type)){const l=s[0],c=(i=e.data[n])==null?void 0:i[l];return[{columnName:l,columnValue:c,metric:a[t],value:r}]}if(e.type==="stackedBar"){const l=P2({dataArray:e.data,groupKey:s[0],pivotKey:s[1],valueKey:a[0]}),c=s[0],u=(o=l[n])==null?void 0:o[c],f=s[1],{metricKeys:g}=xo(l),p=g[t];return[{columnName:c,columnValue:u,metric:a[0],value:r},{columnName:f,columnValue:p,metric:a[0],value:r}]}if(e.type==="bubble"||e.type==="scatter"){const l=s[0],c=r.label;return[{columnName:l,columnValue:c,metric1:a[0],value1:r.x,metric2:a[1],value2:r.y,metric3:a==null?void 0:a[2],value3:r==null?void 0:r.r}]}}catch(s){console.error("Error in getAdhocFilter",s)}}function V6(e){var s,a;const[t]=m.useState({id:"",title:"",type:"bar",data:[]}),{getCard:n}=Gc(),r=n(e),i=XO(r||t),o={...r,data:((s=i==null?void 0:i.data)==null?void 0:s.records)||[]};return{...i,data:((a=i==null?void 0:i.data)==null?void 0:a.records)||[],card:o}}function XO(e){var B,V,oe;const{onChartElementClicked:t}=ao(),[n,r]=m.useState(0),i=((B=e==null?void 0:e.preferences)==null?void 0:B.filterOnClickColumnIndex)===void 0?0:(V=e.preferences)==null?void 0:V.filterOnClickColumnIndex,o=he(ee=>ee.bookmarkKey);he(ee=>ee.isVisualEditing);const s=he(ee=>ee.filteringCards),a=he(ee=>ee.selectedSheetId);he(ee=>ee.selectedCardId),he(ee=>ee.isDashboardEditing);const l=he(ee=>ee.themeStyle),c=he(ee=>ee.filterValues),u=(oe=e==null?void 0:e.preferences)==null?void 0:oe.onClickFilter,{addFrame:f,addFilteringCard:g,setFrameCardData:p,getSelectedFrame:v,addOrUpdateFilterValue:y,addOrUpdateFilterValues:x,removeFilterValue:_,removeFilteringCard:S}=Gc(),{data:C,isLoading:P,isFetching:O,isError:k,refetch:A}=T6(e),L=s==null?void 0:s.find(ee=>ee.id===e.id);let F;e.data&&e.data.length>0&&(F=_0({data:e.data,cardType:e.type,cfg:e.cfg,customCfg:e.customCfg})),m.useEffect(()=>{!C||!C.records||p(a,e.id,(C==null?void 0:C.records)||[])},[C,a,e.id,p,c]),m.useEffect(()=>{e.data&&r(n+1)},[e.data,e.type,e.cfg,e.customCfg,l]),m.useEffect(()=>{e.connectionId&&!L&&A()},[c,o]);function $(ee,j,J,q){var M,H;let K=!1;if(!e.data)return;const G=B6(e,j,J,q);if(t==null||t(e,G),!!(((M=e==null?void 0:e.preferences)==null?void 0:M.onClickFilter)??[]).length){if(L){const ne=e.id;_(ne),S(e)}else{if(K=!0,!G)return;const ne=[];G.forEach((N,le)=>{const ve=u==null?void 0:u.find(de=>de.columnIndex===le);if(!ve)return;const pe={filterId:e.id+"-"+le,connectionId:e==null?void 0:e.connectionId,tableName:e.lastSelectedTable,name:N.columnName,expression:ve.expression,valueType:vf(G[ve.columnIndex].columnValue),operation:"=",values:[G[ve.columnIndex].columnValue]};ne.push(pe)}),e.id,e==null||e.connectionId,e.lastSelectedTable,G[i].columnName,(H=e.preferences)==null||H.filterOnClickField,vf(G[i].columnValue),G[i].columnValue,x(ne),g(e)}F6({chart:ee,elementIndex:J,datasetIndex:j,cardType:e.type,cfg:F,apply:K})}}return{isError:k,isLoading:P,isFetching:O,data:C,visualKey:n,handleDatapointClick:$,cfg:F}}function H6(e,t){const n=he(u=>u.selectedSheetId),r=he(u=>u.selectedFrameId),i=he(u=>u.isDashboardEditing),o=he(u=>u.isVisualEditing),{addFrame:s,getSelectedFrame:a,setSelectedFrameId:l}=he(u=>u.actions);m.useEffect(()=>{const u=g=>{if(i&&((g.metaKey||g.ctrlKey)&&g.key==="c"&&navigator.clipboard.writeText(JSON.stringify(a())),(g.ctrlKey||g.metaKey)&&g.key==="v"))try{navigator.clipboard.readText().then(p=>{try{const v=JSON.parse(p);if(v&&v.id){v.id=qo();const y=v.activeCardId;v.cards.forEach(x=>{const _=x.id;x.id=qo(),_===y&&(v.activeCardId=x.id,x.title=`${x.title} (Copy)`)}),s(n,v),l(v.id)}}catch(v){console.error("Failed to parse clipboard contents: ",v)}})}catch(p){console.error("Failed to read clipboard contents: ",p)}},f=t==null?void 0:t.current;return f==null||f.addEventListener("keydown",u),()=>{f==null||f.removeEventListener("keydown",u)}},[i,n,a,s,t,l]),m.useEffect(()=>{r===e.id&&i&&!o&&c()},[r,e.id,i,o]);function c(){const u=t==null?void 0:t.current;u==null||u.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}}let S0;const QO="HoverCard",[ZO,zfe]=Dn(QO,[zi]),C0=zi(),[W6,E0]=ZO(QO),U6=e=>{const{__scopeHoverCard:t,children:n,open:r,defaultOpen:i,onOpenChange:o,openDelay:s=700,closeDelay:a=300}=e,l=C0(t),c=m.useRef(0),u=m.useRef(0),f=m.useRef(!1),g=m.useRef(!1),[p=!1,v]=Zn({prop:r,defaultProp:i,onChange:o}),y=m.useCallback(()=>{clearTimeout(u.current),c.current=window.setTimeout(()=>v(!0),s)},[s,v]),x=m.useCallback(()=>{clearTimeout(c.current),!f.current&&!g.current&&(u.current=window.setTimeout(()=>v(!1),a))},[a,v]),_=m.useCallback(()=>v(!1),[v]);return m.useEffect(()=>()=>{clearTimeout(c.current),clearTimeout(u.current)},[]),m.createElement(W6,{scope:t,open:p,onOpenChange:v,onOpen:y,onClose:x,onDismiss:_,hasSelectionRef:f,isPointerDownOnContentRef:g},m.createElement(Iu,l,n))},q6="HoverCardTrigger",G6=m.forwardRef((e,t)=>{const{__scopeHoverCard:n,...r}=e,i=E0(q6,n),o=C0(n);return m.createElement(Nu,se({asChild:!0},o),m.createElement(He.a,se({"data-state":i.open?"open":"closed"},r,{ref:t,onPointerEnter:Oe(e.onPointerEnter,ep(i.onOpen)),onPointerLeave:Oe(e.onPointerLeave,ep(i.onClose)),onFocus:Oe(e.onFocus,i.onOpen),onBlur:Oe(e.onBlur,i.onClose),onTouchStart:Oe(e.onTouchStart,s=>s.preventDefault())})))}),Y6="HoverCardPortal",[Bfe,K6]=ZO(Y6,{forceMount:void 0}),O0="HoverCardContent",X6=m.forwardRef((e,t)=>{const n=K6(O0,e.__scopeHoverCard),{forceMount:r=n.forceMount,...i}=e,o=E0(O0,e.__scopeHoverCard);return m.createElement(yn,{present:r||o.open},m.createElement(Q6,se({"data-state":o.open?"open":"closed"},i,{onPointerEnter:Oe(e.onPointerEnter,ep(o.onOpen)),onPointerLeave:Oe(e.onPointerLeave,ep(o.onClose)),ref:t})))}),Q6=m.forwardRef((e,t)=>{const{__scopeHoverCard:n,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:o,onInteractOutside:s,...a}=e,l=E0(O0,n),c=C0(n),u=m.useRef(null),f=st(t,u),[g,p]=m.useState(!1);return m.useEffect(()=>{if(g){const v=document.body;return S0=v.style.userSelect||v.style.webkitUserSelect,v.style.userSelect="none",v.style.webkitUserSelect="none",()=>{v.style.userSelect=S0,v.style.webkitUserSelect=S0}}},[g]),m.useEffect(()=>{if(u.current){const v=()=>{p(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var y;((y=document.getSelection())===null||y===void 0?void 0:y.toString())!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",v),()=>{document.removeEventListener("pointerup",v),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),m.useEffect(()=>{u.current&&Z6(u.current).forEach(y=>y.setAttribute("tabindex","-1"))}),m.createElement(El,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:s,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:Oe(o,v=>{v.preventDefault()}),onDismiss:l.onDismiss},m.createElement(Ru,se({},c,a,{onPointerDown:Oe(a.onPointerDown,v=>{v.currentTarget.contains(v.target)&&p(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:f,style:{...a.style,userSelect:g?"text":void 0,WebkitUserSelect:g?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})))});function ep(e){return t=>t.pointerType==="touch"?void 0:e()}function Z6(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;n.nextNode();)t.push(n.currentNode);return t}const J6=U6,eH=G6,JO=X6,P0=J6,k0=eH,tp=ue.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},i)=>w.jsx(JO,{ref:i,align:t,sideOffset:n,className:ke("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));tp.displayName=JO.displayName;function tH({card:e}){const{setCardInfo:t}=Gc();return w.jsxs(P0,{openDelay:0,children:[w.jsx(k0,{children:w.jsx(d6,{className:"size-4 text-muted-foreground/40 "})}),w.jsx(tp,{align:"start",className:"w-[300px] ",onMouseDown:n=>n.stopPropagation(),children:w.jsx(Xo,{type:"textarea",text:e.info||"",onSave:n=>t(e.id,n),children:w.jsx("p",{className:"text-sm text-muted-foreground",children:e.info||"Add Info"})})})]})}function nH({frame:e,footer:t,className:n,...r}){const{customCards:i}=ao(),o=m.useRef(null),s=he(F=>F.themeStyle),a=he(F=>F.selectedSheetId),l=he(F=>F.selectedFrameId),c=he(F=>F.isDashboardEditing),u=e.cards.find(F=>F.id===e.activeCardId);H6(e,o);const{isError:f,isLoading:g,isFetching:p,cfg:v,visualKey:y,handleDatapointClick:x}=XO(u),{setCardTitle:_,setCardDescription:S,setSelectedFrameId:C}=Gc();function P(F){F.stopPropagation(),C(e.id)}function O(){if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.replaceDefault){const $=F.content;if($)return w.jsx($,{card:u})}}return u.type==="kpi"?w.jsx(YO,{isLoading:g||p,card:u}):L}function k(){if(f)return w.jsx("p",{className:"text-sm",children:"Oops! It seems like something went wrong. Please review your connection or filters."});if(u.type==="table"&&u.data&&u.data.length>0)return w.jsxs(Tl,{children:[w.jsx(m0,{data:u.data}),w.jsx($u,{orientation:"horizontal"})]});if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.content){const $=F.content;return w.jsx($,{card:u})}}if(v)return w.jsx(w2,{cfg:v,onDatapointClick:x},y)}function A(){if(i&&i.length>0){const F=i.find($=>$.cardId===u.id);if(F&&F.footer){const $=F.footer;if($)return w.jsx($,{card:u})}}return t||null}if(!u.id)return null;const L=w.jsxs(w.Fragment,{children:[w.jsxs(Wf,{className:" pb-4",children:[w.jsxs("div",{className:"flex items-center gap-2",children:[w.jsx(Xo,{text:u.title,onSave:F=>_(a,u.id,F),children:w.jsx(Uf,{className:"text-base",children:u.title})}),(c||u.info)&&w.jsx(tH,{card:u}),u.refreshInterval&&w.jsxs(Jb,{children:[w.jsx(sO,{className:"pr-1",children:w.jsx("div",{className:ke("h-2 w-2 rounded-full bg-green-500 transition-opacity",{"opacity-10":g||p})})}),w.jsx(Hh,{side:"right",align:"center",children:w.jsx("p",{className:"text-xs",children:`Realtime (${u==null?void 0:u.refreshInterval})`})})]}),!u.refreshInterval&&(g||p)&&w.jsx(Al,{className:"w-4 h-4 animate-spin text-muted-foreground"})]}),w.jsx(Xo,{text:(u==null?void 0:u.description)||"",onSave:F=>S(a,u.id,F),children:w.jsxs(Uv,{children:[" ",u.description]})})]}),w.jsx(qf,{className:" grow flex flex-col pb-0 relative overflow-auto ",children:k()}),w.jsx(WS,{children:A()})]});return w.jsxs(Wv,{tabIndex:-1,ref:o,role:"dashboard-card",onClick:P,className:ke(" relative h-full flex flex-col rounded-sm",{"border-dashed border-foreground/50 ":l===e.id&&c},s==null?void 0:s.dashboardCard,n),...r,children:[w.jsx(jz,{frame:e}),O()]})}const rH=HS.WidthProvider(HS.Responsive);function iH(){var x,_,S,C;const e=he(P=>P.isDashboardEditing);he(P=>P.currentBreakpoint);const t=he(P=>P.themeStyle),n=he(P=>P.selectedSheetId);(x=he(P=>{var O,k;return(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.filter(A=>A.id===n)}))==null||x[0].layout;const r=(_=he(P=>{var O,k;return(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.filter(A=>A.id===n)}))==null?void 0:_[0].layouts,i=he(P=>{var O,k,A;return(A=(k=(O=P.dashboard)==null?void 0:O.sheets)==null?void 0:k.find(L=>L.id===n))==null?void 0:A.frames}),{getSelectedSheet:o,getSelectedSheetLayout:s,getSelectedSheetLayouts:a,setSheetLayout:l,setSheetLayouts:c,setCurrentBreakpoint:u}=he(P=>P.actions),f=o(),g=m.useCallback(P=>{u(P)},[]),p=m.useCallback((P,O)=>{f!=null&&f.id&&c(f.id,O)},[f==null?void 0:f.id,c]);if(!n)return null;const v=(P,O)=>w.jsx(eP,{className:" after:content-none",ref:O,handleAxis:P});function y(){return i==null?void 0:i.map(P=>w.jsx("div",{role:"dashboard-card-container",className:ke("group",t==null?void 0:t.dashboardCardContainer),children:w.jsx(nH,{frame:P})},P.id))}return w.jsx(w.Fragment,{children:w.jsx(rH,{margin:((S=t==null?void 0:t.gridLayout)==null?void 0:S.margin)||[10,10],isDraggable:e,resizeHandles:e?["sw","nw","ne","se","e","w"]:[],className:ke((C=t==null?void 0:t.gridLayout)==null?void 0:C.className),layouts:r,cols:{lg:48,md:36,sm:24,xs:12,xxs:6},rowHeight:48,onBreakpointChange:g,onLayoutChange:p,resizeHandle:v,children:y()})})}const eP=m.forwardRef(({className:e,handleAxis:t,...n},r)=>w.jsx("div",{ref:r,className:ke(`z-10 react-resizable-handle react-resizable-handle-${t} absolute border-foreground/40 `,{"group-hover:border-2 group-hover:border-r-0 group-hover:border-b-0 border-foreground/40":t==="nw","group-hover:border-2 group-hover:border-l-0 group-hover:border-b-0 border-foreground/40":t==="ne","group-hover:border-2 group-hover:border-r-0 group-hover:border-t-0 border-foreground/40":t==="sw","group-hover:border-2 group-hover:border-l-0 group-hover:border-t-0 border-foreground/40":t==="se","group-hover:border-2 group-hover:border-b-0 group-hover:border-t-0 group-hover:border-l-0 border-foreground/40 ":t==="e","group-hover:border-2 group-hover:border-b-0 group-hover:border-t-0 group-hover:border-r-0 border-foreground/40":t==="w"},e),...n}));eP.displayName="ResizeHandle";/**
331
331
  * react-virtual
332
332
  *
333
333
  * Copyright (c) TanStack
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.0.36",
8
+ "version": "0.0.37",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",