react-semaphor 0.1.178 → 0.1.180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/chunks/{dashboard-controls-00cjSeD7.js → dashboard-controls-Baw7eUyM.js} +8 -8
  2. package/dist/chunks/{dashboard-controls-C9IWIFfW.js → dashboard-controls-CS3pAVZi.js} +473 -470
  3. package/dist/chunks/{dashboard-json--ke9XK9p.js → dashboard-json-ClalWYi4.js} +1 -1
  4. package/dist/chunks/{dashboard-json-BDjl-3ej.js → dashboard-json-Cz4bNnCC.js} +1 -1
  5. package/dist/chunks/{edit-dashboard-visual-BroCdmtP.js → edit-dashboard-visual-BMElXt-n.js} +30 -35
  6. package/dist/chunks/{edit-dashboard-visual-BBsC9feJ.js → edit-dashboard-visual-DFJ5FJ7y.js} +11 -22
  7. package/dist/chunks/editor-action-buttons-DVWnnC_r.js +11 -0
  8. package/dist/chunks/{editor-action-buttons-CHoiNw7F.js → editor-action-buttons-MtNYw1Bb.js} +57 -45
  9. package/dist/chunks/index-8Crk3ROJ.js +1 -0
  10. package/dist/chunks/index-B4EhQdS9.js +1857 -0
  11. package/dist/chunks/{index-DZjcALSv.js → index-CAeKp6K8.js} +23423 -24714
  12. package/dist/chunks/index-CfPKTeUk.js +1082 -0
  13. package/dist/chunks/notification-bell-2dZI5OV0.js +21 -0
  14. package/dist/chunks/notification-bell-YZ8VqdwA.js +870 -0
  15. package/dist/chunks/{resource-management-panel-C96ElLa5.js → resource-management-panel-Buhi-kvP.js} +1 -1
  16. package/dist/chunks/{resource-management-panel-DE8DnPSl.js → resource-management-panel-pxL28GXq.js} +133 -133
  17. package/dist/chunks/{use-role-aware-display-preferences-Dovp_VmV.js → use-role-aware-display-preferences-B_i2f9tn.js} +1 -1
  18. package/dist/chunks/{use-role-aware-display-preferences-Rd1BhDG4.js → use-role-aware-display-preferences-JljRcjrP.js} +1 -1
  19. package/dist/chunks/{use-visual-utils-BkRr5LoD.js → use-visual-utils-D3HjbsKO.js} +38 -38
  20. package/dist/chunks/{use-visual-utils-Cnju2tnE.js → use-visual-utils-DPEHcmFT.js} +1 -1
  21. package/dist/dashboard/index.cjs +1 -1
  22. package/dist/dashboard/index.js +1 -1
  23. package/dist/format-utils/index.cjs +5 -0
  24. package/dist/format-utils/index.js +451 -0
  25. package/dist/index.cjs +1 -6
  26. package/dist/index.js +133 -126
  27. package/dist/style.css +1 -1
  28. package/dist/surfboard/index.cjs +1 -1
  29. package/dist/surfboard/index.js +1 -1
  30. package/dist/types/format-utils.d.ts +375 -0
  31. package/dist/types/main.d.ts +262 -0
  32. package/package.json +14 -1
  33. package/dist/chunks/editor-action-buttons-JE9t84-4.js +0 -6
  34. package/dist/chunks/index-CdfFCbJb.js +0 -1077
  35. package/dist/chunks/schedule-dashboard-BFa0Uljc.js +0 -416
  36. package/dist/chunks/schedule-dashboard-CzU0ziLB.js +0 -6
@@ -1,4 +1,4 @@
1
- import { b as m, e as t, g as D, f as U, h as b, i as u, j as E, k as g } from "./index-DZjcALSv.js";
1
+ import { b as m, e as t, g as D, f as U, h as b, i as u, j as E, k as g } from "./index-CAeKp6K8.js";
2
2
  import { useMemo as i } from "react";
3
3
  function S() {
4
4
  const { displayPreferences: n, shouldShowElement: c } = m(), { currentUser: a, userContext: s } = t(), r = i(
@@ -1 +1 @@
1
- "use strict";const a=require("./index-CdfFCbJb.js"),n=require("react");function f(){const{displayPreferences:c,shouldShowElement:o}=a.useDisplayPreferences(),{currentUser:e,userContext:s}=a.useCurrentUserInfo(),i=n.useMemo(()=>a.getRoleBasedDisplayOverrides(e),[e]),t=n.useMemo(()=>r=>i&&i[r]!==void 0&&i[r]===!1?!1:o(r),[i,o,c]),p=n.useMemo(()=>{var r,d,l,u,h;return{canEdit:((r=s==null?void 0:s.permissions)==null?void 0:r.canEdit)??a.canUserEdit(e),canUseFilters:((d=s==null?void 0:s.permissions)==null?void 0:d.canEdit)??a.canUserUseFilters(e),canManageDashboards:((l=s==null?void 0:s.permissions)==null?void 0:l.canCreateDashboard)??a.canUserManageDashboards(e),canCreateDashboards:((u=s==null?void 0:s.permissions)==null?void 0:u.canCreateDashboard)??a.canUserCreateDashboards(e),canAccessVisuals:((h=s==null?void 0:s.permissions)==null?void 0:h.canEdit)??a.canUserAccessVisuals(e)}},[e,s]);return{displayPreferences:c,shouldShowElement:t,permissions:p,currentUser:e}}exports.useRoleAwareDisplayPreferences=f;
1
+ "use strict";const a=require("./index-CfPKTeUk.js"),n=require("react");function f(){const{displayPreferences:c,shouldShowElement:o}=a.useDisplayPreferences(),{currentUser:e,userContext:s}=a.useCurrentUserInfo(),i=n.useMemo(()=>a.getRoleBasedDisplayOverrides(e),[e]),t=n.useMemo(()=>r=>i&&i[r]!==void 0&&i[r]===!1?!1:o(r),[i,o,c]),p=n.useMemo(()=>{var r,d,l,u,h;return{canEdit:((r=s==null?void 0:s.permissions)==null?void 0:r.canEdit)??a.canUserEdit(e),canUseFilters:((d=s==null?void 0:s.permissions)==null?void 0:d.canEdit)??a.canUserUseFilters(e),canManageDashboards:((l=s==null?void 0:s.permissions)==null?void 0:l.canCreateDashboard)??a.canUserManageDashboards(e),canCreateDashboards:((u=s==null?void 0:s.permissions)==null?void 0:u.canCreateDashboard)??a.canUserCreateDashboards(e),canAccessVisuals:((h=s==null?void 0:s.permissions)==null?void 0:h.canEdit)??a.canUserAccessVisuals(e)}},[e,s]);return{displayPreferences:c,shouldShowElement:t,permissions:p,currentUser:e}}exports.useRoleAwareDisplayPreferences=f;
@@ -1,5 +1,5 @@
1
- import { az as G, aA as Y, p as J, q as K, aB as X, m as z, o as Z, u as v, aC as q, aD as ee, t as V, aE as te, n as f } from "./index-DZjcALSv.js";
2
- import { useState as T, useEffect as re, useCallback as A } from "react";
1
+ import { aM as G, aN as Y, aH as J, aI as K, aO as X, av as Q, as as Z, u as v, aP as q, aQ as ee, aL as V, aR as te, au as f } from "./index-CAeKp6K8.js";
2
+ import { useState as T, useEffect as re, useCallback as N } from "react";
3
3
  function se(e) {
4
4
  const o = e.toUpperCase().indexOf("WHERE"), t = e.toUpperCase().indexOf("GROUP BY"), r = e.toUpperCase().indexOf("LIMIT"), n = e.toUpperCase().indexOf("ORDER BY");
5
5
  let i = e.length;
@@ -75,7 +75,7 @@ function ae(e, o) {
75
75
  }
76
76
  return e[0].id;
77
77
  }
78
- async function _(e, o, t, r) {
78
+ async function H(e, o, t, r) {
79
79
  if (!o || !t)
80
80
  throw new Error("Missing auth token or visual ID");
81
81
  const n = ["resource-by-id", "visual", t], i = r.getQueryData(n);
@@ -102,7 +102,7 @@ async function _(e, o, t, r) {
102
102
  throw V.dismiss(c), s;
103
103
  }
104
104
  }
105
- function H(e) {
105
+ function _(e) {
106
106
  if (typeof e == "string")
107
107
  return JSON.parse(e);
108
108
  if (typeof e == "object")
@@ -114,7 +114,7 @@ function ne(e, o) {
114
114
  const t = (e == null ? void 0 : e.frameObject) ?? ((i = e == null ? void 0 : e.visual) == null ? void 0 : i.frameObject);
115
115
  if (!t)
116
116
  return !1;
117
- const r = H(t);
117
+ const r = _(t);
118
118
  if (!(r != null && r.cards) || r.cards.length === 0)
119
119
  return !1;
120
120
  const n = (c = r.cards) == null ? void 0 : c.find(
@@ -129,7 +129,7 @@ function ne(e, o) {
129
129
  }
130
130
  function ce() {
131
131
  var S;
132
- const { setCardSql: e } = z(), o = f((a) => a.frame), t = f((a) => a.card), r = f((a) => a.isDevMode), n = oe(
132
+ const { setCardSql: e } = Q(), o = f((a) => a.frame), t = f((a) => a.card), r = f((a) => a.isDevMode), n = oe(
133
133
  ((S = t.customCardPreferences) == null ? void 0 : S.url) || ""
134
134
  ), i = f(
135
135
  (a) => a.selectedSchemaName
@@ -140,7 +140,7 @@ function ce() {
140
140
  ), d = f((a) => a.selectedTableName), m = f(
141
141
  (a) => a.selectedConnectionId
142
142
  ), h = f((a) => a.isShowingVisual), p = t.sql;
143
- return { getUpdatedFrame: A(() => {
143
+ return { getUpdatedFrame: N(() => {
144
144
  var I;
145
145
  let a = p;
146
146
  p && !p.includes("{{") && (a = se(p), e(a));
@@ -205,20 +205,20 @@ function le() {
205
205
  setSelectedDatamodelId: U,
206
206
  setFilterValues: C,
207
207
  setApplyFilters: I
208
- } = z(), {
208
+ } = Q(), {
209
209
  setIsDashboardEditing: g,
210
- setIsVisualEditing: D,
211
- setSelectedFrameId: N,
212
- clearSelectedFrameId: O,
213
- addFrame: x,
214
- setIsDashboardPanelOpen: R
215
- } = Z(), y = v((l) => l.selectedSheetId), W = v((l) => l.selectedFrameId), M = v((l) => l.dashboard), B = v((l) => l.filterValues), E = q((r == null ? void 0 : r.id) || "", {
210
+ setIsVisualEditing: O,
211
+ setSelectedFrameId: A,
212
+ clearSelectedFrameId: D,
213
+ addFrame: R,
214
+ setIsDashboardPanelOpen: x
215
+ } = Z(), y = v((l) => l.selectedSheetId), M = v((l) => l.selectedFrameId), W = v((l) => l.dashboard), L = v((l) => l.filterValues), E = q((r == null ? void 0 : r.id) || "", {
216
216
  enabled: !!(r != null && r.id) && !!(e != null && e.accessToken)
217
- }), Q = A(
217
+ }), k = N(
218
218
  async (l) => {
219
219
  try {
220
- n(l), O();
221
- const { data: b, fromCache: u } = await _(
220
+ n(l), D();
221
+ const { data: b, fromCache: u } = await H(
222
222
  o.apiServiceUrl,
223
223
  (e == null ? void 0 : e.accessToken) || "",
224
224
  l.id,
@@ -240,11 +240,11 @@ function le() {
240
240
  setFilterValues: C,
241
241
  setApplyFilters: I,
242
242
  setIsDashboardEditing: g,
243
- setIsVisualEditing: D,
244
- dashboard: M,
243
+ setIsVisualEditing: O,
244
+ dashboard: W,
245
245
  selectedSheetId: y,
246
- selectedFrameId: W,
247
- filterValues: B
246
+ selectedFrameId: M,
247
+ filterValues: L
248
248
  }))
249
249
  throw new Error("Failed to setup editor with visual data");
250
250
  return { success: !0, fromCache: u };
@@ -260,7 +260,7 @@ function le() {
260
260
  i,
261
261
  c,
262
262
  g,
263
- D,
263
+ O,
264
264
  s,
265
265
  d,
266
266
  m,
@@ -273,13 +273,13 @@ function le() {
273
273
  U,
274
274
  C,
275
275
  I,
276
- O,
277
- M,
278
- y,
276
+ D,
279
277
  W,
280
- B
278
+ y,
279
+ M,
280
+ L
281
281
  ]
282
- ), k = A(
282
+ ), z = N(
283
283
  async (l) => {
284
284
  var b;
285
285
  try {
@@ -288,23 +288,23 @@ function le() {
288
288
  success: !1,
289
289
  error: "No sheet selected. Please select a sheet first."
290
290
  };
291
- const { data: u, fromCache: L } = await _(
291
+ const { data: u, fromCache: P } = await H(
292
292
  o.apiServiceUrl,
293
293
  (e == null ? void 0 : e.accessToken) || "",
294
294
  l.id,
295
295
  t
296
- ), P = (u == null ? void 0 : u.frameObject) ?? ((b = u == null ? void 0 : u.visual) == null ? void 0 : b.frameObject);
297
- if (!P)
296
+ ), j = (u == null ? void 0 : u.frameObject) ?? ((b = u == null ? void 0 : u.visual) == null ? void 0 : b.frameObject);
297
+ if (!j)
298
298
  return { success: !1, error: "Visual has no frame data" };
299
- const F = H(P);
299
+ const F = _(j);
300
300
  if (!(F != null && F.cards) || F.cards.length === 0)
301
301
  return { success: !1, error: "Visual frame is malformed" };
302
- const j = {
302
+ const B = {
303
303
  ...ee(F),
304
304
  visualId: l.id
305
305
  // Link this frame to the library visual
306
306
  };
307
- return x(y, j, "end"), g(!0), N(j.id), R(!1), { success: !0, fromCache: L };
307
+ return R(y, B, "end"), g(!0), A(B.id), x(!1), { success: !0, fromCache: P };
308
308
  } catch (u) {
309
309
  return console.error("Error adding visual:", u), { success: !1, error: "Failed to add visual to dashboard" };
310
310
  }
@@ -315,10 +315,10 @@ function le() {
315
315
  t,
316
316
  n,
317
317
  y,
318
- x,
318
+ R,
319
319
  g,
320
- N,
321
- R
320
+ A,
321
+ x
322
322
  ]
323
323
  );
324
324
  return {
@@ -326,8 +326,8 @@ function le() {
326
326
  isLoading: E.isLoading,
327
327
  isError: E.isError,
328
328
  error: E.error,
329
- handleEditLibraryVisual: Q,
330
- handleAddLibraryVisual: k,
329
+ handleEditLibraryVisual: k,
330
+ handleAddLibraryVisual: z,
331
331
  getUpdatedFrame: ce().getUpdatedFrame,
332
332
  refetch: E.refetch
333
333
  };
@@ -1 +1 @@
1
- "use strict";const s=require("./index-CdfFCbJb.js"),g=require("react");function H(e){const a=e.toUpperCase().indexOf("WHERE"),t=e.toUpperCase().indexOf("GROUP BY"),r=e.toUpperCase().indexOf("LIMIT"),c=e.toUpperCase().indexOf("ORDER BY");let d=e.length;if(c!==-1&&(d=c),r!==-1&&r<d&&(d=r),a!==-1){const i=e.substring(0,a),o=e.substring(a);return`${i} {{ filters | where }} AND ${o.substring(6)}`}else if(t!==-1){const i=e.substring(0,t),o=e.substring(t);return`${i} {{ filters | where }} ${o}`}else{const i=e.substring(0,d),o=e.substring(d);return console.log("beforeClause",i),console.log("afterClause",o),o?`${i} {{ filters | where }} ${o}`:`${i.replace(/;$/,"")} {{ filters | where }}`}}function B(e){const[a,t]=g.useState(null),[r,c]=g.useState(null),d=s.useEnsureReactGlobals();return g.useEffect(()=>{if(!e||e.trim()===""){t(null),c(null);return}if(!d)return;(async()=>{try{if(!e.startsWith("http://")&&!e.startsWith("https://"))throw new Error(`Invalid URL format: ${e}`);try{new URL(e)}catch{throw new Error(`Invalid URL: ${e}`)}const l=`${e.endsWith("/")?e:`${e}/`}index.js`;try{if(!(await fetch(l,{method:"HEAD"})).ok)throw new Error(`Module not found at ${l}`)}catch{}const h=await import(l);if(typeof h.useChartStore!="function")throw new Error("useChartStore is not a function");t(()=>h.useChartStore),c(null)}catch(o){const l=o instanceof Error?o.message:"Unknown error";console.error("Failed to load remote chart store:",l),c(l),t(null)}})()},[e,d]),a}function Q(e,a){if(e.length===0)return"";if(a){const t=e.find(r=>r.id===a);if(t){const r=t.tabTitle;if(r=="All__Header")return e[0].id;if(r&&r.endsWith("__Header")){const d=r.split("__")[0],i=e.find(o=>o.tabTitle===d);return i?i.id:e[0].id}return a}}return e[0].id}async function j(e,a,t,r){if(!a||!t)throw new Error("Missing auth token or visual ID");const c=["resource-by-id","visual",t],d=r.getQueryData(c);if(d)return console.log("Using cached visual data for:",t),{data:d,fromCache:!0};console.log("Fetching visual data from network for:",t);const i=s.ue.loading("Loading visual...",{position:"top-center"});try{const o=await fetch(`${e}/management/v1/visuals/${t}`,{headers:{Authorization:`Bearer ${a}`}});if(!o.ok)throw new Error("Failed to load visual");const l=await o.json();return r.setQueryData(c,l),s.ue.dismiss(i),{data:l,fromCache:!1}}catch(o){throw s.ue.dismiss(i),o}}function T(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function z(e,a){var d,i;const t=(e==null?void 0:e.frameObject)??((d=e==null?void 0:e.visual)==null?void 0:d.frameObject);if(!t)return!1;const r=T(t);if(!(r!=null&&r.cards)||r.cards.length===0)return!1;const c=(i=r.cards)==null?void 0:i.find(o=>o.id===r.activeCardId);return c?(s.setupEditorWithCard({...a,frame:r,card:c,visualId:(e==null?void 0:e.id)||r.visualId}),!0):!1}function G(){var C;const{setCardSql:e}=s.useEditorActions(),a=s.useEditorStore(n=>n.frame),t=s.useEditorStore(n=>n.card),r=s.useEditorStore(n=>n.isDevMode),c=B(((C=t.customCardPreferences)==null?void 0:C.url)||""),d=s.useEditorStore(n=>n.selectedSchemaName),i=s.useEditorStore(n=>n.selectedDatamodelId),o=s.useEditorStore(n=>n.selectedDatabaseName),l=s.useEditorStore(n=>n.selectedTableName),h=s.useEditorStore(n=>n.selectedConnectionId),m=s.useEditorStore(n=>n.isShowingVisual),S=t.sql;return{getUpdatedFrame:g.useCallback(()=>{var I;let n=S;S&&!S.includes("{{")&&(n=H(S),e(n));const w=(I=c==null?void 0:c.getState())==null?void 0:I.settings,v={...t,dataSource:t.dataSource||{mode:"directSource"},lastSelectedSchema:d,lastSelectedDatamodelId:i,lastSelectedDatabase:o,lastSelectedTable:l,connectionId:h,sql:r?n:void 0,python:r?t.python:void 0,config:r?void 0:t.config,customCfg:m?t.customCfg:null,preferences:t.preferences,...w&&{customCardPreferences:{...t.customCardPreferences,settings:w}}},E=a.cards.map(p=>p.id===t.id?v:p);return{...a,cards:E,activeCardId:Q(E,a.activeCardId)}},[t,a,r,m,d,i,o,l,h,e,c,S])}}function Y(){const{authToken:e,tokenProps:a}=s.useSemaphorContext(),t=s.useQueryClient(),r=s.useSelectedVisual(),{selectVisual:c}=s.useManagementActions(),{setFrame:d,setCard:i,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:S,setSelectedConnectionId:V,setSelectedDatabaseName:C,setSelectedSchemaName:n,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I}=s.useEditorActions(),{setIsDashboardEditing:p,setIsVisualEditing:$,setSelectedFrameId:D,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=s.useDashboardActions(),y=s.useDashboardStore(u=>u.selectedSheetId),O=s.useDashboardStore(u=>u.selectedFrameId),x=s.useDashboardStore(u=>u.dashboard),W=s.useDashboardStore(u=>u.filterValues),F=s.useVisualById((r==null?void 0:r.id)||"",{enabled:!!(r!=null&&r.id)&&!!(e!=null&&e.accessToken)}),k=g.useCallback(async u=>{try{c(u),A();const{data:b,fromCache:f}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t);if(!z(b,{setFrame:d,setCard:i,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:S,setSelectedConnectionId:V,setSelectedDatabaseName:C,setSelectedSchemaName:n,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I,setIsDashboardEditing:p,setIsVisualEditing:$,dashboard:x,selectedSheetId:y,selectedFrameId:O,filterValues:W}))throw new Error("Failed to setup editor with visual data");return{success:!0,fromCache:f}}catch(b){return console.error("Error editing visual:",b),{success:!1,error:"Failed to load visual for editing"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,t,c,d,i,p,$,o,l,h,m,S,V,C,n,w,v,E,I,A,x,y,O,W]),_=g.useCallback(async u=>{var b;try{if(c(u),!y)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:f,fromCache:M}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t),L=(f==null?void 0:f.frameObject)??((b=f==null?void 0:f.visual)==null?void 0:b.frameObject);if(!L)return{success:!1,error:"Visual has no frame data"};const U=T(L);if(!(U!=null&&U.cards)||U.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...s.cloneFrameWithNewIds(U),visualId:u.id};return N(y,P,"end"),p(!0),D(P.id),R(!1),{success:!0,fromCache:M}}catch(f){return console.error("Error adding visual:",f),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,t,c,y,N,p,D,R]);return{visual:F.data,isLoading:F.isLoading,isError:F.isError,error:F.error,handleEditLibraryVisual:k,handleAddLibraryVisual:_,getUpdatedFrame:G().getUpdatedFrame,refetch:F.refetch}}exports.useRemoteChartStore=B;exports.useVisualUtils=Y;
1
+ "use strict";const s=require("./index-CfPKTeUk.js"),g=require("react");function H(e){const a=e.toUpperCase().indexOf("WHERE"),t=e.toUpperCase().indexOf("GROUP BY"),r=e.toUpperCase().indexOf("LIMIT"),c=e.toUpperCase().indexOf("ORDER BY");let d=e.length;if(c!==-1&&(d=c),r!==-1&&r<d&&(d=r),a!==-1){const i=e.substring(0,a),o=e.substring(a);return`${i} {{ filters | where }} AND ${o.substring(6)}`}else if(t!==-1){const i=e.substring(0,t),o=e.substring(t);return`${i} {{ filters | where }} ${o}`}else{const i=e.substring(0,d),o=e.substring(d);return console.log("beforeClause",i),console.log("afterClause",o),o?`${i} {{ filters | where }} ${o}`:`${i.replace(/;$/,"")} {{ filters | where }}`}}function B(e){const[a,t]=g.useState(null),[r,c]=g.useState(null),d=s.useEnsureReactGlobals();return g.useEffect(()=>{if(!e||e.trim()===""){t(null),c(null);return}if(!d)return;(async()=>{try{if(!e.startsWith("http://")&&!e.startsWith("https://"))throw new Error(`Invalid URL format: ${e}`);try{new URL(e)}catch{throw new Error(`Invalid URL: ${e}`)}const l=`${e.endsWith("/")?e:`${e}/`}index.js`;try{if(!(await fetch(l,{method:"HEAD"})).ok)throw new Error(`Module not found at ${l}`)}catch{}const h=await import(l);if(typeof h.useChartStore!="function")throw new Error("useChartStore is not a function");t(()=>h.useChartStore),c(null)}catch(o){const l=o instanceof Error?o.message:"Unknown error";console.error("Failed to load remote chart store:",l),c(l),t(null)}})()},[e,d]),a}function Q(e,a){if(e.length===0)return"";if(a){const t=e.find(r=>r.id===a);if(t){const r=t.tabTitle;if(r=="All__Header")return e[0].id;if(r&&r.endsWith("__Header")){const d=r.split("__")[0],i=e.find(o=>o.tabTitle===d);return i?i.id:e[0].id}return a}}return e[0].id}async function j(e,a,t,r){if(!a||!t)throw new Error("Missing auth token or visual ID");const c=["resource-by-id","visual",t],d=r.getQueryData(c);if(d)return console.log("Using cached visual data for:",t),{data:d,fromCache:!0};console.log("Fetching visual data from network for:",t);const i=s.ue.loading("Loading visual...",{position:"top-center"});try{const o=await fetch(`${e}/management/v1/visuals/${t}`,{headers:{Authorization:`Bearer ${a}`}});if(!o.ok)throw new Error("Failed to load visual");const l=await o.json();return r.setQueryData(c,l),s.ue.dismiss(i),{data:l,fromCache:!1}}catch(o){throw s.ue.dismiss(i),o}}function T(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function z(e,a){var d,i;const t=(e==null?void 0:e.frameObject)??((d=e==null?void 0:e.visual)==null?void 0:d.frameObject);if(!t)return!1;const r=T(t);if(!(r!=null&&r.cards)||r.cards.length===0)return!1;const c=(i=r.cards)==null?void 0:i.find(o=>o.id===r.activeCardId);return c?(s.setupEditorWithCard({...a,frame:r,card:c,visualId:(e==null?void 0:e.id)||r.visualId}),!0):!1}function G(){var C;const{setCardSql:e}=s.useEditorActions(),a=s.useEditorStore(n=>n.frame),t=s.useEditorStore(n=>n.card),r=s.useEditorStore(n=>n.isDevMode),c=B(((C=t.customCardPreferences)==null?void 0:C.url)||""),d=s.useEditorStore(n=>n.selectedSchemaName),i=s.useEditorStore(n=>n.selectedDatamodelId),o=s.useEditorStore(n=>n.selectedDatabaseName),l=s.useEditorStore(n=>n.selectedTableName),h=s.useEditorStore(n=>n.selectedConnectionId),m=s.useEditorStore(n=>n.isShowingVisual),S=t.sql;return{getUpdatedFrame:g.useCallback(()=>{var I;let n=S;S&&!S.includes("{{")&&(n=H(S),e(n));const w=(I=c==null?void 0:c.getState())==null?void 0:I.settings,v={...t,dataSource:t.dataSource||{mode:"directSource"},lastSelectedSchema:d,lastSelectedDatamodelId:i,lastSelectedDatabase:o,lastSelectedTable:l,connectionId:h,sql:r?n:void 0,python:r?t.python:void 0,config:r?void 0:t.config,customCfg:m?t.customCfg:null,preferences:t.preferences,...w&&{customCardPreferences:{...t.customCardPreferences,settings:w}}},E=a.cards.map(p=>p.id===t.id?v:p);return{...a,cards:E,activeCardId:Q(E,a.activeCardId)}},[t,a,r,m,d,i,o,l,h,e,c,S])}}function Y(){const{authToken:e,tokenProps:a}=s.useSemaphorContext(),t=s.useQueryClient(),r=s.useSelectedVisual(),{selectVisual:c}=s.useManagementActions(),{setFrame:d,setCard:i,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:S,setSelectedConnectionId:V,setSelectedDatabaseName:C,setSelectedSchemaName:n,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I}=s.useEditorActions(),{setIsDashboardEditing:p,setIsVisualEditing:$,setSelectedFrameId:D,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=s.useDashboardActions(),y=s.useDashboardStore(u=>u.selectedSheetId),O=s.useDashboardStore(u=>u.selectedFrameId),x=s.useDashboardStore(u=>u.dashboard),W=s.useDashboardStore(u=>u.filterValues),F=s.useVisualById((r==null?void 0:r.id)||"",{enabled:!!(r!=null&&r.id)&&!!(e!=null&&e.accessToken)}),k=g.useCallback(async u=>{try{c(u),A();const{data:b,fromCache:f}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t);if(!z(b,{setFrame:d,setCard:i,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:S,setSelectedConnectionId:V,setSelectedDatabaseName:C,setSelectedSchemaName:n,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I,setIsDashboardEditing:p,setIsVisualEditing:$,dashboard:x,selectedSheetId:y,selectedFrameId:O,filterValues:W}))throw new Error("Failed to setup editor with visual data");return{success:!0,fromCache:f}}catch(b){return console.error("Error editing visual:",b),{success:!1,error:"Failed to load visual for editing"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,t,c,d,i,p,$,o,l,h,m,S,V,C,n,w,v,E,I,A,x,y,O,W]),_=g.useCallback(async u=>{var b;try{if(c(u),!y)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:f,fromCache:M}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t),L=(f==null?void 0:f.frameObject)??((b=f==null?void 0:f.visual)==null?void 0:b.frameObject);if(!L)return{success:!1,error:"Visual has no frame data"};const U=T(L);if(!(U!=null&&U.cards)||U.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...s.cloneFrameWithNewIds(U),visualId:u.id};return N(y,P,"end"),p(!0),D(P.id),R(!1),{success:!0,fromCache:M}}catch(f){return console.error("Error adding visual:",f),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,t,c,y,N,p,D,R]);return{visual:F.data,isLoading:F.isLoading,isError:F.isError,error:F.error,handleEditLibraryVisual:k,handleAddLibraryVisual:_,getUpdatedFrame:G().getUpdatedFrame,refetch:F.refetch}}exports.useRemoteChartStore=B;exports.useVisualUtils=Y;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-CdfFCbJb.js"),r=require("../types/index.cjs");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-CfPKTeUk.js"),r=require("../types/index.cjs");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
@@ -1,4 +1,4 @@
1
- import { D as a } from "../chunks/index-DZjcALSv.js";
1
+ import { D as a } from "../chunks/index-CAeKp6K8.js";
2
2
  import { EMPTY_SELECTION as e } from "../types/index.js";
3
3
  export {
4
4
  a as Dashboard,
@@ -0,0 +1,5 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../chunks/index-8Crk3ROJ.js"),W=[{value:1e12,suffix:"T"},{value:1e9,suffix:"B"},{value:1e7,suffix:"Cr"},{value:1e6,suffix:"M"},{value:1e5,suffix:"L"},{value:1e3,suffix:"K"}];function T(r){const e=Math.abs(r);for(const{value:t,suffix:u}of W)if(e>=t)return{divisor:t,suffix:u};return{divisor:1,suffix:""}}function O(r){try{return new Intl.NumberFormat(r),!0}catch{return!1}}function f(r){return r&&O(r)?r:"en-US"}function w(r,e){if(r==null||isNaN(r))return"";const t=f(e==null?void 0:e.locale);let u=r;if(e!=null&&e.multiplyBy&&(u*=e.multiplyBy),e!=null&&e.useSuffix){const{divisor:c,suffix:l}=T(u);u=u/c;const i=new Intl.NumberFormat(t,{minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2,useGrouping:(e==null?void 0:e.useGrouping)??!0}).format(u);return`${(e==null?void 0:e.prefix)??""}${i}${l}${(e==null?void 0:e.suffix)??""}`}const a=new Intl.NumberFormat(t,{minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2,useGrouping:(e==null?void 0:e.useGrouping)??!0}).format(u);if(e!=null&&e.negativeInParentheses&&u<0){const c=a.replace("-","");return`${(e==null?void 0:e.prefix)??""}(${c})${(e==null?void 0:e.suffix)??""}`}return`${(e==null?void 0:e.prefix)??""}${a}${(e==null?void 0:e.suffix)??""}`}function g(r,e){if(r==null||isNaN(r))return"";const t=f(e==null?void 0:e.locale),u=(e==null?void 0:e.currency)||"USD";if(e!=null&&e.useSuffix){const{divisor:a,suffix:c}=T(r),l=r/a;return`${new Intl.NumberFormat(t,{style:"currency",currency:u,minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(l)}${c}`}return new Intl.NumberFormat(t,{style:"currency",currency:u,minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(r)}function N(r,e){if(r==null||isNaN(r))return"";const t=f(e==null?void 0:e.locale),u=e!=null&&e.alreadyPercent?r/100:r;return new Intl.NumberFormat(t,{style:"percent",minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(u)}function V(r,e){if(r==null||isNaN(r))return"";const t=f(e==null?void 0:e.locale);return new Intl.NumberFormat(t,{notation:"scientific",minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(r)}function D(r,e,t="en-US"){if(r==null||isNaN(r))return"";const u=f((e==null?void 0:e.locale)||t),a=(e==null?void 0:e.style)||"decimal";return a==="percent"?new Intl.NumberFormat(u,{style:"percent",minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(r/100):a==="currency"?new Intl.NumberFormat(u,{style:"currency",currency:(e==null?void 0:e.currency)||"USD",minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(r):new Intl.NumberFormat(u,{minimumFractionDigits:(e==null?void 0:e.minimumFractionDigits)??0,maximumFractionDigits:(e==null?void 0:e.maximumFractionDigits)??2}).format(r)}function z(r,e,t){const u={locale:t==null?void 0:t.locale,currency:t==null?void 0:t.currency,minimumFractionDigits:t==null?void 0:t.decimalPlaces,maximumFractionDigits:t==null?void 0:t.decimalPlaces,useSuffix:t==null?void 0:t.useSuffix,prefix:t==null?void 0:t.prefix,suffix:t==null?void 0:t.suffix,negativeInParentheses:t==null?void 0:t.negativeInParentheses,multiplyBy:t==null?void 0:t.multiplyBy};switch(e){case"currency":return g(r,u);case"percent":return N(r,u);case"scientific":return V(r,u);default:return w(r,u)}}function F(r,e){return r&&r!=="auto"?r:e}function k(r,e=new Date){try{const t={timeZone:r,timeZoneName:"short"},a=new Intl.DateTimeFormat("en-US",t).formatToParts(e).find(c=>c.type==="timeZoneName");return(a==null?void 0:a.value)||r}catch{return r}}function q(r){try{const e={timeZone:r,timeZoneName:"long"},u=new Intl.DateTimeFormat("en-US",e).formatToParts(new Date).find(a=>a.type==="timeZoneName");return(u==null?void 0:u.value)||r}catch{return r}}function b(r,e="auto"){if(!r)return new Date(NaN);const t=r.endsWith("Z"),u=/[+-]\d{2}:?\d{2}$/.test(r),a=/\([A-Z]{3,4}\)$/.test(r);if(e==="auto")return t||u||a?new Date(r):new Date(r+"Z");if(e==="local"){if(t||u){const c=r.replace(/Z$/,"").replace(/[+-]\d{2}:?\d{2}$/,"");return new Date(c)}return new Date(r)}else return e==="UTC"?t?new Date(r):u?new Date(r):new Date(r+"Z"):t||u||a?new Date(r):new Date(r+"Z")}function C(r,e,t){if(r==null)return"";try{const u=typeof r=="string"?b(r,e==null?void 0:e.sourceTimezone):r;if(isNaN(u.getTime()))return String(r);if(e!=null&&e.useRelativeTime)return I(u);const a=e!=null&&e.useCustomFormat&&(e!=null&&e.customFormat)?e.customFormat:(e==null?void 0:e.format)||"MM/dd/yyyy",c=F(e==null?void 0:e.timezone,t||"UTC");return S.formatInTimeZone(u,c,a)}catch{return String(r)}}function I(r){if(r==null)return"";try{const e=typeof r=="string"?S.parseISO(r):r;return isNaN(e.getTime())?String(r):S.formatDistanceToNow(e,{addSuffix:!0})}catch{return String(r)}}function $(r,e,t){return C(r,e,t)}function R(r,e,t){if(r==null)return"";if(!t.useFormattedValues||!e)return String(r);switch(e.type){case"number":return typeof r=="number"?D(r,e.numberFormat,t.locale):String(r);case"date":return $(r,e.dateFormat,t.timezone);case"progress":return typeof r=="number"?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function L(r,e){return e.visibleColumns.map(t=>{const u=r[t],a=e.columnSettings[t];return R(u,a,{useFormattedValues:e.useFormattedValues,timezone:e.timezone,locale:e.locale})})}function s(r,e=","){if(r==null)return"";const t=String(r);return t.includes(e)||t.includes('"')||t.includes(`
2
+ `)||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t}function d(r,e=","){return r.map(t=>s(t,e)).join(e)}function P(r,e={}){const{delimiter:t=",",lineEnding:u=`
3
+ `}=e;return r.map(a=>d(a,t)).join(u)}function v(r,e={}){if(r.length===0)return"";const{delimiter:t=",",lineEnding:u=`
4
+ `,includeHeaders:a=!0,columns:c}=e,l=c||Object.keys(r[0]),i=[];a&&i.push(l);for(const m of r){const y=l.map(h=>{const n=m[h];return n==null?"":String(n)});i.push(y)}return P(i,{delimiter:t,lineEnding:u})}function A(r,e){const t=[];e.includeHeaders&&t.push(d(e.visibleColumns,e.delimiter));for(const u of r){const a=L(u,e);t.push(a.map(c=>s(c,e.delimiter)).join(e.delimiter))}return t}function K(r,e,t=`
5
+ `){return A(r,e).join(t)}function X(r,e,t){return r==null?"":t.useFormattedValues?typeof r=="number"&&(e==null?void 0:e.type)==="number"?D(r,e.numberFormat,t.locale):typeof r=="number"?r.toLocaleString(t.locale):String(r):String(r)}function B(r,e,t){var a,c;const u=[];if(r.isSubtotal&&!r.isGrandTotal){const l=e.groupByColumns.findIndex(i=>i.alias===r.subtotalLevel);e.groupByColumns.forEach((i,m)=>{var y,h,n,x;if(m===l){const M=(h=(y=e.rowAggregates)==null?void 0:y.find(G=>G.groupLevel===r.subtotalLevel))==null?void 0:h.label,U=(x=(n=r.subtotalContext)==null?void 0:n.groupByValues)==null?void 0:x[i.alias];u.push(M??`Subtotal (${U??"Total"})`)}else m<l?u.push(String(r[i.alias]??"")):u.push("")})}else if(r.isGrandTotal){const l=(c=(a=e.rowAggregates)==null?void 0:a.find(i=>i.groupLevel==="ALL"))==null?void 0:c.label;u.push(l||"Grand Total"),e.groupByColumns.slice(1).forEach(()=>u.push(""))}else e.groupByColumns.forEach(l=>{u.push(String(r[l.alias]??""))});return e.pivotSchema.filter(l=>l.isMetricColumn).forEach(l=>{const i=r[l.alias],m=t.columnSettings[l.alias];u.push(X(i,m,t))}),u}function E(r){const e=r.groupByColumns.map(u=>u.label||u.name),t=r.pivotSchema.filter(u=>u.isMetricColumn).map(u=>u.displayLabel||u.metricLabel||u.metricName||u.alias);return[...e,...t]}function _(r,e,t){const u=[];if(t.includeHeaders){const a=E(e);u.push(d(a,t.delimiter))}for(const a of r){const c=B(a,e,t);u.push(c.map(l=>s(l,t.delimiter)).join(t.delimiter))}return u}function Z(r,e,t){for(const u of r){if(u.level<t){e[u.level].push(u.name);for(let a=1;a<u.colspan;a++)e[u.level].push("")}u.children?Z(u.children,e,t):u.columnKey&&e[t].push(u.name)}}function H(r){const e=r.pivotByColumns.length,t=r.groupByColumns.length,u=Array.from({length:e+1},()=>[]);for(let a=0;a<e;a++)u[a].push(...Array(t).fill(""));if(u[e].push(...r.groupByColumns.map(a=>a.label||a.name)),Z(r.columnHeadersTree,u,e),r.showRowTotals){for(let a=0;a<e;a++)u[a].push("");u[e].push("Total")}return u}function J(r,e,t){if(r==null)return"";if(!t.useFormattedValues)return String(r);const u=t.columnSettings[e];return typeof r=="number"&&(u==null?void 0:u.type)==="number"?D(r,u.numberFormat,t.locale):typeof r=="number"?r.toLocaleString(t.locale):String(r)}function j(r,e,t){const u=[];r.fieldValues.forEach((c,l)=>{r.isSubtotal&&l===0?u.push(`${c} Total`):r.isSubtotal?u.push(""):u.push(String(c??""))});let a=0;return e.columnHeaders.forEach(c=>{var m;const l=(m=r.cells[c])==null?void 0:m.value,i=J(l,c,t);u.push(i),e.showRowTotals&&typeof l=="number"&&(a+=l)}),e.showRowTotals&&u.push(a.toLocaleString(t.locale)),u}function Q(r,e,t){const u=[];if(t.includeHeaders){const a=H(e);for(const c of a)u.push(d(c,t.delimiter))}for(const a of r){const c=j(a,e,t);u.push(c.map(l=>s(l,t.delimiter)).join(t.delimiter))}return u}exports.arrayToCSV=P;exports.arrayToCSVRow=d;exports.escapeCSVValue=s;exports.formatAggregateRow=B;exports.formatAggregateTableForCSV=_;exports.formatCellValue=R;exports.formatCurrency=g;exports.formatDate=C;exports.formatDateWithColumnSettings=$;exports.formatNumber=w;exports.formatNumberCustom=z;exports.formatNumberWithColumnSettings=D;exports.formatPercent=N;exports.formatPivotDataRow=j;exports.formatPivotTableForCSV=Q;exports.formatRelativeTime=I;exports.formatRowForExport=L;exports.formatScientific=V;exports.formatTableForCSV=A;exports.generateAggregateHeaders=E;exports.generatePivotHeaders=H;exports.generateTableCSV=K;exports.getTimezoneAbbreviation=k;exports.getTimezoneName=q;exports.objectsToCSV=v;exports.parseWithSourceTimezone=b;exports.resolveTimezone=F;