react-semaphor 0.1.207 → 0.1.209

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 (37) hide show
  1. package/dist/chunks/{dashboard-controls-HlEsqiRq.js → dashboard-controls-BNTI4r0_.js} +581 -553
  2. package/dist/chunks/{dashboard-controls-CwMm9_ki.js → dashboard-controls-Dcpx9_an.js} +8 -8
  3. package/dist/chunks/{dashboard-json-DoYcT7tI.js → dashboard-json-BjOqpGbW.js} +1 -1
  4. package/dist/chunks/{dashboard-json-CI8wIOzY.js → dashboard-json-kIoBtmBF.js} +1 -1
  5. package/dist/chunks/{dashboard-summary-settings-dialog-ioe7ZyFE.js → dashboard-summary-settings-dialog-BoX18wiA.js} +1 -1
  6. package/dist/chunks/{dashboard-summary-settings-dialog-eQcHYcAI.js → dashboard-summary-settings-dialog-CO1SwHHD.js} +1 -1
  7. package/dist/chunks/{edit-dashboard-visual-Cl_qfIV_.js → edit-dashboard-visual-B9HuGExj.js} +2 -2
  8. package/dist/chunks/{edit-dashboard-visual-BotbTTiL.js → edit-dashboard-visual-DG4VLoJF.js} +1108 -1122
  9. package/dist/chunks/editor-action-buttons-CDTIx_Jc.js +11 -0
  10. package/dist/chunks/editor-action-buttons-CszdZ4Fw.js +345 -0
  11. package/dist/chunks/{index-CqOQuBxB.js → index-D0TdW88i.js} +24716 -24254
  12. package/dist/chunks/index-DSA80lEg.js +1104 -0
  13. package/dist/chunks/{notification-bell-BSBRPw38.js → notification-bell-D2V1-ARa.js} +1 -1
  14. package/dist/chunks/{notification-bell-BI-XywDI.js → notification-bell-DFiRaeJQ.js} +52 -52
  15. package/dist/chunks/resource-management-panel-BhiWNPcw.js +6 -0
  16. package/dist/chunks/resource-management-panel-DS_WEv1x.js +902 -0
  17. package/dist/chunks/{use-role-aware-display-preferences-BWghO18e.js → use-role-aware-display-preferences-D8j5_cnK.js} +1 -1
  18. package/dist/chunks/{use-role-aware-display-preferences-C-m9KEuJ.js → use-role-aware-display-preferences-DfihB5pN.js} +1 -1
  19. package/dist/chunks/{use-visual-utils-BbVM0bck.js → use-visual-utils-BfLXO_vi.js} +34 -34
  20. package/dist/chunks/{use-visual-utils-DHmGIepC.js → use-visual-utils-CzcVz3zB.js} +1 -1
  21. package/dist/dashboard/index.cjs +1 -1
  22. package/dist/dashboard/index.js +1 -1
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.js +5 -5
  25. package/dist/style.css +1 -1
  26. package/dist/surfboard/index.cjs +1 -1
  27. package/dist/surfboard/index.js +2 -2
  28. package/dist/types/dashboard.d.ts +12 -1
  29. package/dist/types/main.d.ts +13 -1
  30. package/dist/types/surfboard.d.ts +12 -1
  31. package/dist/types/types.d.ts +12 -1
  32. package/package.json +1 -1
  33. package/dist/chunks/editor-action-buttons-B0-mScSZ.js +0 -340
  34. package/dist/chunks/editor-action-buttons-CcXUQDy4.js +0 -11
  35. package/dist/chunks/index-plgMsXq1.js +0 -1104
  36. package/dist/chunks/resource-management-panel-D0q51oXw.js +0 -6
  37. package/dist/chunks/resource-management-panel-Z8x52dx2.js +0 -914
@@ -1 +1 @@
1
- "use strict";const a=require("./index-plgMsXq1.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-DSA80lEg.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,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-CqOQuBxB.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-D0TdW88i.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,4 +1,4 @@
1
- import { bT as G, l as Y, bP as J, bQ as K, bU as X, by as Q, bs as Z, u as v, bV as q, bW as ee, I as $, bX as te, bA as f } from "./index-CqOQuBxB.js";
1
+ import { bI as G, l as J, bJ as K, bK as Y, bL as X, by as _, bs as Z, u as v, bM as q, bN as ee, I as V, bO as te, bA as f } from "./index-D0TdW88i.js";
2
2
  import { useState as j, useEffect as re, useCallback as A } from "react";
3
3
  function se(e) {
4
4
  const a = e.toUpperCase().indexOf("WHERE"), t = e.toUpperCase().indexOf("GROUP BY"), r = e.toUpperCase().indexOf("LIMIT"), s = e.toUpperCase().indexOf("ORDER BY");
@@ -96,7 +96,7 @@ async function k(e, a, t, r) {
96
96
  if (n)
97
97
  return console.log("Using cached visual data for:", t), { data: n, fromCache: !0 };
98
98
  console.log("Fetching visual data from network for:", t);
99
- const i = $.loading("Loading visual...", {
99
+ const i = V.loading("Loading visual...", {
100
100
  position: "top-center"
101
101
  });
102
102
  try {
@@ -111,12 +111,12 @@ async function k(e, a, t, r) {
111
111
  if (!o.ok)
112
112
  throw new Error("Failed to load visual");
113
113
  const d = await o.json();
114
- return r.setQueryData(s, d), $.dismiss(i), { data: d, fromCache: !1 };
114
+ return r.setQueryData(s, d), V.dismiss(i), { data: d, fromCache: !1 };
115
115
  } catch (o) {
116
- throw $.dismiss(i), o;
116
+ throw V.dismiss(i), o;
117
117
  }
118
118
  }
119
- function _(e) {
119
+ function H(e) {
120
120
  if (typeof e == "string")
121
121
  return JSON.parse(e);
122
122
  if (typeof e == "object")
@@ -128,7 +128,7 @@ function ce(e, a) {
128
128
  const t = (e == null ? void 0 : e.frameObject) ?? ((n = e == null ? void 0 : e.visual) == null ? void 0 : n.frameObject);
129
129
  if (!t)
130
130
  return !1;
131
- const r = _(t);
131
+ const r = H(t);
132
132
  if (!(r != null && r.cards) || r.cards.length === 0)
133
133
  return !1;
134
134
  const s = (i = r.cards) == null ? void 0 : i.find(
@@ -143,7 +143,7 @@ function ce(e, a) {
143
143
  }
144
144
  function ie() {
145
145
  var S;
146
- const { setCardSql: e } = Q(), a = f((c) => c.frame), t = f((c) => c.card), r = f((c) => c.isDevMode), s = oe(
146
+ const { setCardSql: e } = _(), a = f((c) => c.frame), t = f((c) => c.card), r = f((c) => c.isDevMode), s = oe(
147
147
  ((S = t.customCardPreferences) == null ? void 0 : S.url) || ""
148
148
  ), n = f(
149
149
  (c) => c.selectedSchemaName
@@ -204,7 +204,7 @@ function ie() {
204
204
  ]) };
205
205
  }
206
206
  function ue() {
207
- const { authToken: e, tokenProps: a } = Y(), t = J(), r = K(), { selectVisual: s } = X(), {
207
+ const { authToken: e, tokenProps: a } = J(), t = K(), r = Y(), { selectVisual: s } = X(), {
208
208
  setFrame: n,
209
209
  setCard: i,
210
210
  setIsDevMode: o,
@@ -212,26 +212,26 @@ function ue() {
212
212
  setActiveTabCardId: m,
213
213
  updateDataSource: h,
214
214
  setQueryResultColumns: p,
215
- setSelectedConnectionId: V,
215
+ setSelectedConnectionId: $,
216
216
  setSelectedDatabaseName: S,
217
217
  setSelectedSchemaName: c,
218
218
  setSelectedTableName: C,
219
219
  setSelectedDatamodelId: U,
220
220
  setFilterValues: w,
221
221
  setApplyFilters: I
222
- } = Q(), {
222
+ } = _(), {
223
223
  setIsDashboardEditing: b,
224
224
  setIsVisualEditing: D,
225
225
  setSelectedFrameId: N,
226
- clearSelectedFrameId: T,
227
- addFrame: O,
228
- setIsDashboardPanelOpen: P
229
- } = Z(), y = v((l) => l.selectedSheetId), W = v((l) => l.selectedFrameId), x = v((l) => l.dashboard), B = v((l) => l.filterValues), E = q((r == null ? void 0 : r.id) || "", {
226
+ clearSelectedFrameId: O,
227
+ addFrame: M,
228
+ setIsDashboardPanelOpen: T
229
+ } = Z(), y = v((l) => l.selectedSheetId), x = v((l) => l.selectedFrameId), B = v((l) => l.dashboard), L = v((l) => l.filterValues), E = q((r == null ? void 0 : r.id) || "", {
230
230
  enabled: !!(r != null && r.id) && !!(e != null && e.accessToken)
231
- }), H = A(
231
+ }), Q = A(
232
232
  async (l) => {
233
233
  try {
234
- s(l), T();
234
+ s(l), O();
235
235
  const { data: g, fromCache: u } = await k(
236
236
  a.apiServiceUrl,
237
237
  (e == null ? void 0 : e.accessToken) || "",
@@ -246,7 +246,7 @@ function ue() {
246
246
  setActiveTabCardId: m,
247
247
  updateDataSource: h,
248
248
  setQueryResultColumns: p,
249
- setSelectedConnectionId: V,
249
+ setSelectedConnectionId: $,
250
250
  setSelectedDatabaseName: S,
251
251
  setSelectedSchemaName: c,
252
252
  setSelectedTableName: C,
@@ -255,10 +255,10 @@ function ue() {
255
255
  setApplyFilters: I,
256
256
  setIsDashboardEditing: b,
257
257
  setIsVisualEditing: D,
258
- dashboard: x,
258
+ dashboard: B,
259
259
  selectedSheetId: y,
260
- selectedFrameId: W,
261
- filterValues: B
260
+ selectedFrameId: x,
261
+ filterValues: L
262
262
  }))
263
263
  throw new Error("Failed to setup editor with visual data");
264
264
  return { success: !0, fromCache: u };
@@ -280,18 +280,18 @@ function ue() {
280
280
  m,
281
281
  h,
282
282
  p,
283
- V,
283
+ $,
284
284
  S,
285
285
  c,
286
286
  C,
287
287
  U,
288
288
  w,
289
289
  I,
290
- T,
291
- x,
290
+ O,
291
+ B,
292
292
  y,
293
- W,
294
- B
293
+ x,
294
+ L
295
295
  ]
296
296
  ), z = A(
297
297
  async (l) => {
@@ -302,23 +302,23 @@ function ue() {
302
302
  success: !1,
303
303
  error: "No sheet selected. Please select a sheet first."
304
304
  };
305
- const { data: u, fromCache: R } = await k(
305
+ const { data: u, fromCache: P } = await k(
306
306
  a.apiServiceUrl,
307
307
  (e == null ? void 0 : e.accessToken) || "",
308
308
  l.id,
309
309
  t
310
- ), M = (u == null ? void 0 : u.frameObject) ?? ((g = u == null ? void 0 : u.visual) == null ? void 0 : g.frameObject);
311
- if (!M)
310
+ ), R = (u == null ? void 0 : u.frameObject) ?? ((g = u == null ? void 0 : u.visual) == null ? void 0 : g.frameObject);
311
+ if (!R)
312
312
  return { success: !1, error: "Visual has no frame data" };
313
- const F = _(M);
313
+ const F = H(R);
314
314
  if (!(F != null && F.cards) || F.cards.length === 0)
315
315
  return { success: !1, error: "Visual frame is malformed" };
316
- const L = {
316
+ const W = {
317
317
  ...ee(F),
318
318
  visualId: l.id
319
319
  // Link this frame to the library visual
320
320
  };
321
- return O(y, L, "end"), b(!0), N(L.id), P(!1), { success: !0, fromCache: R };
321
+ return M(y, W, "end"), b(!0), N(W.id), T(!1), { success: !0, fromCache: P };
322
322
  } catch (u) {
323
323
  return console.error("Error adding visual:", u), { success: !1, error: "Failed to add visual to dashboard" };
324
324
  }
@@ -329,10 +329,10 @@ function ue() {
329
329
  t,
330
330
  s,
331
331
  y,
332
- O,
332
+ M,
333
333
  b,
334
334
  N,
335
- P
335
+ T
336
336
  ]
337
337
  );
338
338
  return {
@@ -340,7 +340,7 @@ function ue() {
340
340
  isLoading: E.isLoading,
341
341
  isError: E.isError,
342
342
  error: E.error,
343
- handleEditLibraryVisual: H,
343
+ handleEditLibraryVisual: Q,
344
344
  handleAddLibraryVisual: z,
345
345
  getUpdatedFrame: ie().getUpdatedFrame,
346
346
  refetch: E.refetch
@@ -1 +1 @@
1
- "use strict";const a=require("./index-plgMsXq1.js"),g=require("react");function H(e){const n=e.toUpperCase().indexOf("WHERE"),t=e.toUpperCase().indexOf("GROUP BY"),r=e.toUpperCase().indexOf("LIMIT"),s=e.toUpperCase().indexOf("ORDER BY");let c=e.length;if(s!==-1&&(c=s),r!==-1&&r<c&&(c=r),n!==-1){const d=e.substring(0,n),o=e.substring(n);return`${d} {{ filters | where }} AND ${o.substring(6)}`}else if(t!==-1){const d=e.substring(0,t),o=e.substring(t);return`${d} {{ filters | where }} ${o}`}else{const d=e.substring(0,c),o=e.substring(c);return console.log("beforeClause",d),console.log("afterClause",o),o?`${d} {{ filters | where }} ${o}`:`${d.replace(/;$/,"")} {{ filters | where }}`}}function k(e){const[n,t]=g.useState(null),[r,s]=g.useState(null),c=a.useEnsureReactGlobals();return g.useEffect(()=>{if(!e||e.trim()===""){t(null),s(null);return}if(!c)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),s(null)}catch(o){const l=o instanceof Error?o.message:"Unknown error";console.error("Failed to load remote chart store:",l),s(l),t(null)}})()},[e,c]),n}function Q(e,n){if(e.length===0)return"";const t=e.find(r=>{var s,c;return((s=r.customCardPreferences)==null?void 0:s.visualType)==="multiple"||!!((c=r.customCardPreferences)!=null&&c.dataInputCardIds)});if(t)return t.id;if(n){const r=e.find(s=>s.id===n);if(r){const s=r.tabTitle;if(s=="All__Header")return e[0].id;if(s&&s.endsWith("__Header")){const d=s.split("__")[0],o=e.find(l=>l.tabTitle===d);return o?o.id:e[0].id}return n}}return e[0].id}const z=e=>{if(!e||!("detailTableBackup"in e))return e;const{detailTableBackup:n,...t}=e;return t};async function M(e,n,t,r){if(!n||!t)throw new Error("Missing auth token or visual ID");const s=["resource-by-id","visual",t],c=r.getQueryData(s);if(c)return console.log("Using cached visual data for:",t),{data:c,fromCache:!0};console.log("Fetching visual data from network for:",t);const d=a.ue.loading("Loading visual...",{position:"top-center"});try{const o=await fetch(`${e}/management/v1/visuals/${t}`,{headers:{Authorization:`Bearer ${n}`}});if(!o.ok)throw new Error("Failed to load visual");const l=await o.json();return r.setQueryData(s,l),a.ue.dismiss(d),{data:l,fromCache:!1}}catch(o){throw a.ue.dismiss(d),o}}function L(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function G(e,n){var c,d;const t=(e==null?void 0:e.frameObject)??((c=e==null?void 0:e.visual)==null?void 0:c.frameObject);if(!t)return!1;const r=L(t);if(!(r!=null&&r.cards)||r.cards.length===0)return!1;const s=(d=r.cards)==null?void 0:d.find(o=>o.id===r.activeCardId);return s?(a.setupEditorWithCard({...n,frame:r,card:s,visualId:(e==null?void 0:e.id)||r.visualId}),!0):!1}function Y(){var C;const{setCardSql:e}=a.useEditorActions(),n=a.useEditorStore(i=>i.frame),t=a.useEditorStore(i=>i.card),r=a.useEditorStore(i=>i.isDevMode),s=k(((C=t.customCardPreferences)==null?void 0:C.url)||""),c=a.useEditorStore(i=>i.selectedSchemaName),d=a.useEditorStore(i=>i.selectedDatamodelId),o=a.useEditorStore(i=>i.selectedDatabaseName),l=a.useEditorStore(i=>i.selectedTableName),h=a.useEditorStore(i=>i.selectedConnectionId),m=a.useEditorStore(i=>i.isShowingVisual),p=t.sql;return{getUpdatedFrame:g.useCallback(()=>{var I;let i=p;p&&!p.includes("{{")&&(i=H(p),e(i));const w=(I=s==null?void 0:s.getState())==null?void 0:I.settings,v={...t,dataSource:t.dataSource||{mode:"directSource"},lastSelectedSchema:c,lastSelectedDatamodelId:d,lastSelectedDatabase:o,lastSelectedTable:l,connectionId:h,sql:r?i:void 0,python:r?t.python:void 0,config:r?void 0:z(t.config),customCfg:m?t.customCfg:null,preferences:t.preferences,...w&&{customCardPreferences:{...t.customCardPreferences,settings:w}}},E=n.cards.map(S=>S.id===t.id?v:S);return{...n,cards:E,activeCardId:Q(E,n.activeCardId)}},[t,n,r,m,c,d,o,l,h,e,s,p])}}function J(){const{authToken:e,tokenProps:n}=a.useSemaphorContext(),t=a.useQueryClient(),r=a.useSelectedVisual(),{selectVisual:s}=a.useManagementActions(),{setFrame:c,setCard:d,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:p,setSelectedConnectionId:D,setSelectedDatabaseName:C,setSelectedSchemaName:i,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I}=a.useEditorActions(),{setIsDashboardEditing:S,setIsVisualEditing:V,setSelectedFrameId:$,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=a.useDashboardActions(),y=a.useDashboardStore(u=>u.selectedSheetId),O=a.useDashboardStore(u=>u.selectedFrameId),T=a.useDashboardStore(u=>u.dashboard),x=a.useDashboardStore(u=>u.filterValues),F=a.useVisualById((r==null?void 0:r.id)||"",{enabled:!!(r!=null&&r.id)&&!!(e!=null&&e.accessToken)}),j=g.useCallback(async u=>{try{s(u),A();const{data:b,fromCache:f}=await M(n.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t);if(!G(b,{setFrame:c,setCard:d,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:p,setSelectedConnectionId:D,setSelectedDatabaseName:C,setSelectedSchemaName:i,setSelectedTableName:w,setSelectedDatamodelId:v,setFilterValues:E,setApplyFilters:I,setIsDashboardEditing:S,setIsVisualEditing:V,dashboard:T,selectedSheetId:y,selectedFrameId:O,filterValues:x}))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,n.apiServiceUrl,t,s,c,d,S,V,o,l,h,m,p,D,C,i,w,v,E,I,A,T,y,O,x]),_=g.useCallback(async u=>{var b;try{if(s(u),!y)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:f,fromCache:B}=await M(n.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t),P=(f==null?void 0:f.frameObject)??((b=f==null?void 0:f.visual)==null?void 0:b.frameObject);if(!P)return{success:!1,error:"Visual has no frame data"};const U=L(P);if(!(U!=null&&U.cards)||U.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const W={...a.cloneFrameWithNewIds(U),visualId:u.id};return N(y,W,"end"),S(!0),$(W.id),R(!1),{success:!0,fromCache:B}}catch(f){return console.error("Error adding visual:",f),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,n.apiServiceUrl,t,s,y,N,S,$,R]);return{visual:F.data,isLoading:F.isLoading,isError:F.isError,error:F.error,handleEditLibraryVisual:j,handleAddLibraryVisual:_,getUpdatedFrame:Y().getUpdatedFrame,refetch:F.refetch}}exports.useRemoteChartStore=k;exports.useVisualUtils=J;
1
+ "use strict";const a=require("./index-DSA80lEg.js"),g=require("react");function H(e){const n=e.toUpperCase().indexOf("WHERE"),t=e.toUpperCase().indexOf("GROUP BY"),r=e.toUpperCase().indexOf("LIMIT"),s=e.toUpperCase().indexOf("ORDER BY");let c=e.length;if(s!==-1&&(c=s),r!==-1&&r<c&&(c=r),n!==-1){const d=e.substring(0,n),o=e.substring(n);return`${d} {{ filters | where }} AND ${o.substring(6)}`}else if(t!==-1){const d=e.substring(0,t),o=e.substring(t);return`${d} {{ filters | where }} ${o}`}else{const d=e.substring(0,c),o=e.substring(c);return console.log("beforeClause",d),console.log("afterClause",o),o?`${d} {{ filters | where }} ${o}`:`${d.replace(/;$/,"")} {{ filters | where }}`}}function k(e){const[n,t]=g.useState(null),[r,s]=g.useState(null),c=a.useEnsureReactGlobals();return g.useEffect(()=>{if(!e||e.trim()===""){t(null),s(null);return}if(!c)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),s(null)}catch(o){const l=o instanceof Error?o.message:"Unknown error";console.error("Failed to load remote chart store:",l),s(l),t(null)}})()},[e,c]),n}function Q(e,n){if(e.length===0)return"";const t=e.find(r=>{var s,c;return((s=r.customCardPreferences)==null?void 0:s.visualType)==="multiple"||!!((c=r.customCardPreferences)!=null&&c.dataInputCardIds)});if(t)return t.id;if(n){const r=e.find(s=>s.id===n);if(r){const s=r.tabTitle;if(s=="All__Header")return e[0].id;if(s&&s.endsWith("__Header")){const d=s.split("__")[0],o=e.find(l=>l.tabTitle===d);return o?o.id:e[0].id}return n}}return e[0].id}const z=e=>{if(!e||!("detailTableBackup"in e))return e;const{detailTableBackup:n,...t}=e;return t};async function W(e,n,t,r){if(!n||!t)throw new Error("Missing auth token or visual ID");const s=["resource-by-id","visual",t],c=r.getQueryData(s);if(c)return console.log("Using cached visual data for:",t),{data:c,fromCache:!0};console.log("Fetching visual data from network for:",t);const d=a.ue.loading("Loading visual...",{position:"top-center"});try{const o=await fetch(`${e}/management/v1/visuals/${t}`,{headers:{Authorization:`Bearer ${n}`}});if(!o.ok)throw new Error("Failed to load visual");const l=await o.json();return r.setQueryData(s,l),a.ue.dismiss(d),{data:l,fromCache:!1}}catch(o){throw a.ue.dismiss(d),o}}function L(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function G(e,n){var c,d;const t=(e==null?void 0:e.frameObject)??((c=e==null?void 0:e.visual)==null?void 0:c.frameObject);if(!t)return!1;const r=L(t);if(!(r!=null&&r.cards)||r.cards.length===0)return!1;const s=(d=r.cards)==null?void 0:d.find(o=>o.id===r.activeCardId);return s?(a.setupEditorWithCard({...n,frame:r,card:s,visualId:(e==null?void 0:e.id)||r.visualId}),!0):!1}function Y(){var C;const{setCardSql:e}=a.useEditorActions(),n=a.useEditorStore(i=>i.frame),t=a.useEditorStore(i=>i.card),r=a.useEditorStore(i=>i.isDevMode),s=k(((C=t.customCardPreferences)==null?void 0:C.url)||""),c=a.useEditorStore(i=>i.selectedSchemaName),d=a.useEditorStore(i=>i.selectedDatamodelId),o=a.useEditorStore(i=>i.selectedDatabaseName),l=a.useEditorStore(i=>i.selectedTableName),h=a.useEditorStore(i=>i.selectedConnectionId),m=a.useEditorStore(i=>i.isShowingVisual),p=t.sql;return{getUpdatedFrame:g.useCallback(()=>{var I;let i=p;p&&!p.includes("{{")&&(i=H(p),e(i));const E=(I=s==null?void 0:s.getState())==null?void 0:I.settings,v={...t,dataSource:t.dataSource||{mode:"directSource"},lastSelectedSchema:c,lastSelectedDatamodelId:d,lastSelectedDatabase:o,lastSelectedTable:l,connectionId:h,sql:r?i:void 0,python:r?t.python:void 0,config:r?void 0:z(t.config),customCfg:m?t.customCfg:null,preferences:t.preferences,...E&&{customCardPreferences:{...t.customCardPreferences,settings:E}}},w=n.cards.map(S=>S.id===t.id?v:S);return{...n,cards:w,activeCardId:Q(w,n.activeCardId)}},[t,n,r,m,c,d,o,l,h,e,s,p])}}function J(){const{authToken:e,tokenProps:n}=a.useSemaphorContext(),t=a.useQueryClient(),r=a.useSelectedVisual(),{selectVisual:s}=a.useManagementActions(),{setFrame:c,setCard:d,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:p,setSelectedConnectionId:D,setSelectedDatabaseName:C,setSelectedSchemaName:i,setSelectedTableName:E,setSelectedDatamodelId:v,setFilterValues:w,setApplyFilters:I}=a.useEditorActions(),{setIsDashboardEditing:S,setIsVisualEditing:V,setSelectedFrameId:$,clearSelectedFrameId:A,addFrame:R,setIsDashboardPanelOpen:N}=a.useDashboardActions(),y=a.useDashboardStore(u=>u.selectedSheetId),O=a.useDashboardStore(u=>u.selectedFrameId),T=a.useDashboardStore(u=>u.dashboard),x=a.useDashboardStore(u=>u.filterValues),F=a.useVisualById((r==null?void 0:r.id)||"",{enabled:!!(r!=null&&r.id)&&!!(e!=null&&e.accessToken)}),j=g.useCallback(async u=>{try{s(u),A();const{data:b,fromCache:f}=await W(n.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t);if(!G(b,{setFrame:c,setCard:d,setIsDevMode:o,initializeModeDrafts:l,setActiveTabCardId:h,updateDataSource:m,setQueryResultColumns:p,setSelectedConnectionId:D,setSelectedDatabaseName:C,setSelectedSchemaName:i,setSelectedTableName:E,setSelectedDatamodelId:v,setFilterValues:w,setApplyFilters:I,setIsDashboardEditing:S,setIsVisualEditing:V,dashboard:T,selectedSheetId:y,selectedFrameId:O,filterValues:x}))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,n.apiServiceUrl,t,s,c,d,S,V,o,l,h,m,p,D,C,i,E,v,w,I,A,T,y,O,x]),_=g.useCallback(async u=>{var b;try{if(s(u),!y)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:f,fromCache:B}=await W(n.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,t),M=(f==null?void 0:f.frameObject)??((b=f==null?void 0:f.visual)==null?void 0:b.frameObject);if(!M)return{success:!1,error:"Visual has no frame data"};const U=L(M);if(!(U!=null&&U.cards)||U.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...a.cloneLinkedFrameWithSourceMapping(U),visualId:u.id};return R(y,P,"end"),S(!0),$(P.id),N(!1),{success:!0,fromCache:B}}catch(f){return console.error("Error adding visual:",f),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,n.apiServiceUrl,t,s,y,R,S,$,N]);return{visual:F.data,isLoading:F.isLoading,isError:F.isError,error:F.error,handleEditLibraryVisual:j,handleAddLibraryVisual:_,getUpdatedFrame:Y().getUpdatedFrame,refetch:F.refetch}}exports.useRemoteChartStore=k;exports.useVisualUtils=J;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-plgMsXq1.js"),o=require("../chunks/common-types-CfJLrTJd.js");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=o.EMPTY_SELECTION;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-DSA80lEg.js"),o=require("../chunks/common-types-CfJLrTJd.js");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=o.EMPTY_SELECTION;
@@ -1,4 +1,4 @@
1
- import { D as a } from "../chunks/index-CqOQuBxB.js";
1
+ import { D as a } from "../chunks/index-D0TdW88i.js";
2
2
  import { E as s } from "../chunks/common-types-DhqlRVrq.js";
3
3
  export {
4
4
  a as Dashboard,
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-plgMsXq1.js"),j=require("./chunks/common-types-CfJLrTJd.js"),D=require("./chunks/dashboard-summary-settings-dialog-ioe7ZyFE.js"),t=require("react/jsx-runtime"),C=require("react"),v=require("./chunks/resource-management-panel-D0q51oXw.js"),N=require("./types/index.cjs");require("react-dom");const c=require("./chunks/notification-bell-BSBRPw38.js");function P(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const o in r)if(o!=="default"){const i=Object.getOwnPropertyDescriptor(r,o);Object.defineProperty(a,o,i.get?i:{enumerable:!0,get:()=>r[o]})}}return a.default=r,Object.freeze(a)}const h=P(C);function M(r){const{displayPreferences:a,...o}=r,i={...o,id:r.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:i,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:r.cardId}),t.jsx(e.UXProvider,{children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:a,children:t.jsx(e.Container,{type:"visual",...i,children:t.jsx(_,{cardId:r.cardId})})})})]})})}function _({cardId:r}){const a=e.useDashboardStore(n=>{var l;return(l=n.dashboard)==null?void 0:l.sheets}),{card:o,frame:i}=C.useMemo(()=>{const n=a==null?void 0:a.flatMap(s=>s.frames),l=n==null?void 0:n.flatMap(s=>s==null?void 0:s.cards),x=l==null?void 0:l.find(s=>(s==null?void 0:s.id)===r),u=n==null?void 0:n.find(s=>{var p;return(p=s==null?void 0:s.cards)==null?void 0:p.find(m=>(m==null?void 0:m.id)===r)});return{card:x,frame:u}},[a,r]);return!o||!i?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${r}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:n,resetErrorBoundary:l})=>t.jsx(e.FallbackVisual,{error:n,resetErrorBoundary:l,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:o,frame:i})})})}function I({name:r,items:a,value:o,onChange:i,isLoading:n,isError:l,refetch:x,className:u,icon:s,showNone:p=!1}){const m=h.useRef(null),[f,y]=h.useState(!1),[E,S]=h.useState("100%"),g=p?[...a||[],{id:"none",name:"None"}]:a;h.useLayoutEffect(()=>{m.current&&S(m.current.offsetWidth)},[]);function b(){var d;return n?"Loading...":l?"Error":o?(d=a==null?void 0:a.find(A=>A.id===o))==null?void 0:d.name:`Select ${r}`}function T(d,A){i(A),y(!1)}return t.jsxs(e.Popover,{open:f,onOpenChange:y,children:[t.jsx(e.PopoverTrigger,{asChild:!0,children:t.jsxs(e.Button,{ref:m,variant:"outline",role:"combobox","aria-expanded":f,className:e.cn("flex h-9 w-full justify-between",u),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[s&&t.jsx("div",{className:"mr-2",children:s}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:b()})]}),t.jsx(e.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(e.PopoverContent,{className:"w-full p-0",style:{minWidth:E},children:t.jsxs(e.Command,{children:[t.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[t.jsx(e.CommandInput,{className:"h-9",placeholder:"Search..."}),t.jsx(e.IconButton,{className:"h-7",onClick:x,children:t.jsx(e.RefreshCw,{className:e.cn("size-3.5 opacity-50",n&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",r==null?void 0:r.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:g==null?void 0:g.map(d=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:d.name,onSelect:A=>T(A,d.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(e.Check,{className:e.cn("size-4",o===d.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:d.name,children:d.name})]})},d.id))})]})]})})]})}function R(r,a){C.useEffect(()=>(r&&a&&(window.__SEMAPHOR_PRINT_STATE__={...a}),()=>{r&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[r,a])}function w(){var l,x;const{quotasQuery:r,usageQuery:a}=e.useAlertQuotas(),o=((l=r.data)==null?void 0:l.quotas)||[],i=((x=a.data)==null?void 0:x.usage)||[],n=new Map(i.map(u=>[u.tenantId||"org",u]));return t.jsxs("div",{className:"space-y-4 p-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("h2",{className:"text-xl font-semibold",children:"Alert Quotas"}),t.jsx(e.Button,{variant:"outline",size:"sm",onClick:()=>{r.refetch(),a.refetch()},children:"Refresh"})]}),r.isLoading||a.isLoading?t.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading quota usage..."}):null,t.jsx("div",{className:"overflow-hidden rounded-lg border",children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{className:"bg-muted/40",children:t.jsxs("tr",{children:[t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Tenant"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Active Alerts"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Max Active"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Min Cadence"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Max Context Sources"})]})}),t.jsx("tbody",{children:o.map(u=>{const s=u.tenantId||"org",p=n.get(s);return t.jsxs("tr",{className:"border-t",children:[t.jsx("td",{className:"px-3 py-2",children:s}),t.jsx("td",{className:"px-3 py-2",children:(p==null?void 0:p.activeAlerts)??0}),t.jsx("td",{className:"px-3 py-2",children:u.policy.maxActiveAlerts}),t.jsxs("td",{className:"px-3 py-2",children:[u.policy.minCadenceMinutes," min"]}),t.jsx("td",{className:"px-3 py-2",children:u.policy.maxContextSources})]},s)})})]})})]})}exports.AlertCreationDialog=e.AlertCreationDialog;exports.AlertManagementPage=e.AlertManagementPage;exports.AlertsApiError=e.AlertsApiError;exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.CardAlertIndicator=e.CardAlertIndicator;exports.CardSummary=e.CardSummary;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.Dashboard=e.Dashboard;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.ResourceType=e.ResourceType;exports.SemaphorContextProvider=e.SemaphorContextProvider;exports.SemaphorDataProvider=e.SemaphorQueryClient;exports.SemaphorQueryClient=e.SemaphorQueryClient;exports.ShareDialog=e.ShareDialog;exports.SummaryCard=e.SummaryCard;exports.Surfboard=e.DashboardPlus;exports.backtestAlert=e.backtestAlert;exports.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createAlert=e.createAlert;exports.createEmptyKpiConfig=e.createEmptyKpiConfig;exports.createExport=e.createExport;exports.createSqlGenConfig=e.createSqlGenConfig;exports.deleteAlert=e.deleteAlert;exports.downloadPdf=e.downloadPdf;exports.emitDashboardLoad=e.emitDashboardLoad;exports.emitDashboardUnload=e.emitDashboardUnload;exports.fmt=e.fmt;exports.formatFileSize=e.formatFileSize;exports.getAlert=e.getAlert;exports.getAlertContextSources=e.getAlertContextSources;exports.getAlertHistory=e.getAlertHistory;exports.getAlertQuotaUsage=e.getAlertQuotaUsage;exports.getAlertRunDeliveries=e.getAlertRunDeliveries;exports.getAlertRunSteps=e.getAlertRunSteps;exports.getAlertRuns=e.getAlertRuns;exports.getAlertState=e.getAlertState;exports.getColumnDataType=e.getColumnDataType;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.getFilterValueType=e.getFilterValueType;exports.getFormattedTableNameForQuery=e.getFormattedTableNameForQuery;exports.getQualifiedTableName=e.getQualifiedTableName;exports.getSql=e.getSql;exports.interpretAlertContext=e.interpretAlertContext;exports.invalidateToken=e.invalidateToken;exports.isBooleanDataType=e.isBooleanDataType;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.isColumnInSqlGen=e.isColumnInSqlGen;exports.isDateDataType=e.isDateDataType;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.isNumberDataType=e.isNumberDataType;exports.isTextDataType=e.isTextDataType;exports.listAlertQuotas=e.listAlertQuotas;exports.listAlerts=e.listAlerts;exports.previewAlertDeliverable=e.previewAlertDeliverable;exports.resolveDataType=e.resolveDataType;exports.resolveDatamodelName=e.resolveDatamodelName;exports.triggerAlertNow=e.triggerAlertNow;exports.updateAlert=e.updateAlert;exports.updateAlertContextSources=e.updateAlertContextSources;exports.updateAlertQuota=e.updateAlertQuota;exports.useActiveExports=e.useActiveExports;exports.useAlertActions=e.useAlertActions;exports.useAlertBacktest=e.useAlertBacktest;exports.useAlertContextBuilder=e.useAlertContextBuilder;exports.useAlertDeliveries=e.useAlertDeliveries;exports.useAlertDetail=e.useAlertDetail;exports.useAlertDraft=e.useAlertDraft;exports.useAlertFilters=e.useAlertFilters;exports.useAlertHistory=e.useAlertHistory;exports.useAlertQuotas=e.useAlertQuotas;exports.useAlertRuns=e.useAlertRuns;exports.useAlertState=e.useAlertState;exports.useAlertStore=e.useAlertStore;exports.useAlerts=e.useAlerts;exports.useAlertsBootstrap=e.useAlertsBootstrap;exports.useAlertsById=e.useAlertsById;exports.useAlertsForCard=e.useAlertsForCard;exports.useCard=e.useCard;exports.useCardAlertMap=e.useCardAlertMap;exports.useCardSummary=e.useCardSummary;exports.useCurrentActiveCard=e.useCurrentActiveCard;exports.useCurrentCardConfig=e.useCurrentCardConfig;exports.useCurrentSheetActiveCards=e.useCurrentSheetActiveCards;exports.useDashboardActions=e.useDashboardActions;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardStore=e.useDashboardStore;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorActions=e.useEditorActions;exports.useEditorAside=e.useEditorAside;exports.useEditorStore=e.useEditorStore;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useSelectedAlertId=e.useSelectedAlertId;exports.useTextFilterHook=e.useTextFilterHook;exports.EMPTY_SELECTION=j.EMPTY_SELECTION;exports.CalendarPreferencesDialog=D.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=D.DashboardSummarySettingsDialog;exports.ResourceManagementPanel=v.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=N.DEFAULT_CALENDAR_CONTEXT;exports.AdvancedModeToggle=c.AdvancedModeToggle;exports.ExportNotificationItem=c.ExportNotificationItem;exports.ExportNotificationList=c.ExportNotificationList;exports.NotificationBell=c.NotificationBell;exports.ScheduleDashboard=c.ScheduleDashboard;exports.UnsavedChangesAlert=c.UnsavedChangesAlert;exports.VisualEditingControls=c.VisualEditingControls;exports.useExportPolling=c.useExportPolling;exports.useExportRecovery=c.useExportRecovery;exports.usePristineSnapshotInitializer=c.usePristineSnapshotInitializer;exports.Combobox=I;exports.TenantQuotaPage=w;exports.Visual=M;exports.useExposePrintState=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-DSA80lEg.js"),j=require("./chunks/common-types-CfJLrTJd.js"),D=require("./chunks/dashboard-summary-settings-dialog-BoX18wiA.js"),t=require("react/jsx-runtime"),C=require("react"),v=require("./chunks/resource-management-panel-BhiWNPcw.js"),N=require("./types/index.cjs");require("react-dom");const c=require("./chunks/notification-bell-D2V1-ARa.js");function P(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const o in r)if(o!=="default"){const i=Object.getOwnPropertyDescriptor(r,o);Object.defineProperty(a,o,i.get?i:{enumerable:!0,get:()=>r[o]})}}return a.default=r,Object.freeze(a)}const h=P(C);function M(r){const{displayPreferences:a,...o}=r,i={...o,id:r.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:i,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:r.cardId}),t.jsx(e.UXProvider,{children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:a,children:t.jsx(e.Container,{type:"visual",...i,children:t.jsx(_,{cardId:r.cardId})})})})]})})}function _({cardId:r}){const a=e.useDashboardStore(n=>{var l;return(l=n.dashboard)==null?void 0:l.sheets}),{card:o,frame:i}=C.useMemo(()=>{const n=a==null?void 0:a.flatMap(s=>s.frames),l=n==null?void 0:n.flatMap(s=>s==null?void 0:s.cards),x=l==null?void 0:l.find(s=>(s==null?void 0:s.id)===r),u=n==null?void 0:n.find(s=>{var p;return(p=s==null?void 0:s.cards)==null?void 0:p.find(m=>(m==null?void 0:m.id)===r)});return{card:x,frame:u}},[a,r]);return!o||!i?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${r}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:n,resetErrorBoundary:l})=>t.jsx(e.FallbackVisual,{error:n,resetErrorBoundary:l,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:o,frame:i})})})}function I({name:r,items:a,value:o,onChange:i,isLoading:n,isError:l,refetch:x,className:u,icon:s,showNone:p=!1}){const m=h.useRef(null),[f,y]=h.useState(!1),[E,S]=h.useState("100%"),g=p?[...a||[],{id:"none",name:"None"}]:a;h.useLayoutEffect(()=>{m.current&&S(m.current.offsetWidth)},[]);function b(){var d;return n?"Loading...":l?"Error":o?(d=a==null?void 0:a.find(A=>A.id===o))==null?void 0:d.name:`Select ${r}`}function T(d,A){i(A),y(!1)}return t.jsxs(e.Popover,{open:f,onOpenChange:y,children:[t.jsx(e.PopoverTrigger,{asChild:!0,children:t.jsxs(e.Button,{ref:m,variant:"outline",role:"combobox","aria-expanded":f,className:e.cn("flex h-9 w-full justify-between",u),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[s&&t.jsx("div",{className:"mr-2",children:s}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:b()})]}),t.jsx(e.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(e.PopoverContent,{className:"w-full p-0",style:{minWidth:E},children:t.jsxs(e.Command,{children:[t.jsxs("div",{className:"flex h-9 items-center justify-between border-b pr-1",children:[t.jsx(e.CommandInput,{className:"h-9",placeholder:"Search..."}),t.jsx(e.IconButton,{className:"h-7",onClick:x,children:t.jsx(e.RefreshCw,{className:e.cn("size-3.5 opacity-50",n&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",r==null?void 0:r.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:g==null?void 0:g.map(d=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:d.name,onSelect:A=>T(A,d.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(e.Check,{className:e.cn("size-4",o===d.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:d.name,children:d.name})]})},d.id))})]})]})})]})}function R(r,a){C.useEffect(()=>(r&&a&&(window.__SEMAPHOR_PRINT_STATE__={...a}),()=>{r&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[r,a])}function w(){var l,x;const{quotasQuery:r,usageQuery:a}=e.useAlertQuotas(),o=((l=r.data)==null?void 0:l.quotas)||[],i=((x=a.data)==null?void 0:x.usage)||[],n=new Map(i.map(u=>[u.tenantId||"org",u]));return t.jsxs("div",{className:"space-y-4 p-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("h2",{className:"text-xl font-semibold",children:"Alert Quotas"}),t.jsx(e.Button,{variant:"outline",size:"sm",onClick:()=>{r.refetch(),a.refetch()},children:"Refresh"})]}),r.isLoading||a.isLoading?t.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading quota usage..."}):null,t.jsx("div",{className:"overflow-hidden rounded-lg border",children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{className:"bg-muted/40",children:t.jsxs("tr",{children:[t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Tenant"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Active Alerts"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Max Active"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Min Cadence"}),t.jsx("th",{className:"px-3 py-2 text-left font-medium",children:"Max Context Sources"})]})}),t.jsx("tbody",{children:o.map(u=>{const s=u.tenantId||"org",p=n.get(s);return t.jsxs("tr",{className:"border-t",children:[t.jsx("td",{className:"px-3 py-2",children:s}),t.jsx("td",{className:"px-3 py-2",children:(p==null?void 0:p.activeAlerts)??0}),t.jsx("td",{className:"px-3 py-2",children:u.policy.maxActiveAlerts}),t.jsxs("td",{className:"px-3 py-2",children:[u.policy.minCadenceMinutes," min"]}),t.jsx("td",{className:"px-3 py-2",children:u.policy.maxContextSources})]},s)})})]})})]})}exports.AlertCreationDialog=e.AlertCreationDialog;exports.AlertManagementPage=e.AlertManagementPage;exports.AlertsApiError=e.AlertsApiError;exports.CALCULATED_FIELD_ENTITY_MARKER=e.CALCULATED_FIELD_ENTITY_MARKER;exports.CardAlertIndicator=e.CardAlertIndicator;exports.CardSummary=e.CardSummary;exports.DATE_FORMAT_VALUES=e.DATE_FORMAT_VALUES;exports.Dashboard=e.Dashboard;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;exports.PivotMarkerEnum=e.PivotMarkerEnum;exports.ResourceType=e.ResourceType;exports.SemaphorContextProvider=e.SemaphorContextProvider;exports.SemaphorDataProvider=e.SemaphorQueryClient;exports.SemaphorQueryClient=e.SemaphorQueryClient;exports.ShareDialog=e.ShareDialog;exports.SummaryCard=e.SummaryCard;exports.Surfboard=e.DashboardPlus;exports.backtestAlert=e.backtestAlert;exports.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createAlert=e.createAlert;exports.createEmptyKpiConfig=e.createEmptyKpiConfig;exports.createExport=e.createExport;exports.createSqlGenConfig=e.createSqlGenConfig;exports.deleteAlert=e.deleteAlert;exports.downloadPdf=e.downloadPdf;exports.emitDashboardLoad=e.emitDashboardLoad;exports.emitDashboardUnload=e.emitDashboardUnload;exports.fmt=e.fmt;exports.formatFileSize=e.formatFileSize;exports.getAlert=e.getAlert;exports.getAlertContextSources=e.getAlertContextSources;exports.getAlertHistory=e.getAlertHistory;exports.getAlertQuotaUsage=e.getAlertQuotaUsage;exports.getAlertRunDeliveries=e.getAlertRunDeliveries;exports.getAlertRunSteps=e.getAlertRunSteps;exports.getAlertRuns=e.getAlertRuns;exports.getAlertState=e.getAlertState;exports.getColumnDataType=e.getColumnDataType;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.getFilterValueType=e.getFilterValueType;exports.getFormattedTableNameForQuery=e.getFormattedTableNameForQuery;exports.getQualifiedTableName=e.getQualifiedTableName;exports.getSql=e.getSql;exports.interpretAlertContext=e.interpretAlertContext;exports.invalidateToken=e.invalidateToken;exports.isBooleanDataType=e.isBooleanDataType;exports.isCalculatedDimension=e.isCalculatedDimension;exports.isCalculatedField=e.isCalculatedField;exports.isCalculatedMetric=e.isCalculatedMetric;exports.isColumnInSqlGen=e.isColumnInSqlGen;exports.isDateDataType=e.isDateDataType;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.isNumberDataType=e.isNumberDataType;exports.isTextDataType=e.isTextDataType;exports.listAlertQuotas=e.listAlertQuotas;exports.listAlerts=e.listAlerts;exports.previewAlertDeliverable=e.previewAlertDeliverable;exports.resolveDataType=e.resolveDataType;exports.resolveDatamodelName=e.resolveDatamodelName;exports.triggerAlertNow=e.triggerAlertNow;exports.updateAlert=e.updateAlert;exports.updateAlertContextSources=e.updateAlertContextSources;exports.updateAlertQuota=e.updateAlertQuota;exports.useActiveExports=e.useActiveExports;exports.useAlertActions=e.useAlertActions;exports.useAlertBacktest=e.useAlertBacktest;exports.useAlertContextBuilder=e.useAlertContextBuilder;exports.useAlertDeliveries=e.useAlertDeliveries;exports.useAlertDetail=e.useAlertDetail;exports.useAlertDraft=e.useAlertDraft;exports.useAlertFilters=e.useAlertFilters;exports.useAlertHistory=e.useAlertHistory;exports.useAlertQuotas=e.useAlertQuotas;exports.useAlertRuns=e.useAlertRuns;exports.useAlertState=e.useAlertState;exports.useAlertStore=e.useAlertStore;exports.useAlerts=e.useAlerts;exports.useAlertsBootstrap=e.useAlertsBootstrap;exports.useAlertsById=e.useAlertsById;exports.useAlertsForCard=e.useAlertsForCard;exports.useCard=e.useCard;exports.useCardAlertMap=e.useCardAlertMap;exports.useCardSummary=e.useCardSummary;exports.useCurrentActiveCard=e.useCurrentActiveCard;exports.useCurrentCardConfig=e.useCurrentCardConfig;exports.useCurrentSheetActiveCards=e.useCurrentSheetActiveCards;exports.useDashboardActions=e.useDashboardActions;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardStore=e.useDashboardStore;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorActions=e.useEditorActions;exports.useEditorAside=e.useEditorAside;exports.useEditorStore=e.useEditorStore;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useSelectedAlertId=e.useSelectedAlertId;exports.useTextFilterHook=e.useTextFilterHook;exports.EMPTY_SELECTION=j.EMPTY_SELECTION;exports.CalendarPreferencesDialog=D.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=D.DashboardSummarySettingsDialog;exports.ResourceManagementPanel=v.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=N.DEFAULT_CALENDAR_CONTEXT;exports.AdvancedModeToggle=c.AdvancedModeToggle;exports.ExportNotificationItem=c.ExportNotificationItem;exports.ExportNotificationList=c.ExportNotificationList;exports.NotificationBell=c.NotificationBell;exports.ScheduleDashboard=c.ScheduleDashboard;exports.UnsavedChangesAlert=c.UnsavedChangesAlert;exports.VisualEditingControls=c.VisualEditingControls;exports.useExportPolling=c.useExportPolling;exports.useExportRecovery=c.useExportRecovery;exports.usePristineSnapshotInitializer=c.usePristineSnapshotInitializer;exports.Combobox=I;exports.TenantQuotaPage=w;exports.Visual=M;exports.useExposePrintState=R;
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import { T as y, U as T, V as P, W as _, Y as w, Z as M, _ as I, u as R, $ as g, a0 as F, P as L, s as k, B as E, a1 as B, c as A, t as Q, v as U, w as V, a2 as q, a3 as z, x as H, y as O, z as j, A as W, E as G, a4 as K } from "./chunks/index-CqOQuBxB.js";
2
- import { a5 as ie, a6 as de, a7 as ce, a8 as ue, a9 as me, aa as pe, ab as he, D as be, ac as fe, ad as Ae, ae as xe, af as Ce, ag as ge, ah as ye, ah as Ee, ai as Ne, aj as De, a as ve, ak as Se, al as Te, am as Pe, an as _e, ao as we, ap as Me, aq as Ie, ar as Re, as as Fe, at as Le, au as ke, av as Be, aw as Qe, ax as Ue, ay as Ve, az as qe, aA as ze, aB as He, aC as Oe, aD as je, aE as We, aF as Ge, aG as Ke, aH as Ye, aI as $e, aJ as Xe, aK as Ze, aL as Je, aM as ea, aN as aa, aO as sa, aP as ta, aQ as ra, aR as oa, aS as na, aT as la, aU as ia, aV as da, aW as ca, aX as ua, aY as ma, aZ as pa, a_ as ha, a$ as ba, b0 as fa, b1 as Aa, b2 as xa, b3 as Ca, b4 as ga, b5 as ya, b6 as Ea, b7 as Na, b8 as Da, b9 as va, ba as Sa, bb as Ta, bc as Pa, bd as _a, be as wa, bf as Ma, bg as Ia, bh as Ra, bi as Fa, bj as La, bk as ka, bl as Ba, bm as Qa, bn as Ua, bo as Va, bp as qa, bq as za, br as Ha, bs as Oa, bt as ja, bu as Wa, bv as Ga, bw as Ka, bx as Ya, by as $a, bz as Xa, bA as Za, bB as Ja, bC as es, bD as as, bE as ss, bF as ts, bG as rs, bH as os } from "./chunks/index-CqOQuBxB.js";
1
+ import { T as y, U as T, V as P, W as _, Y as w, Z as M, _ as I, u as R, $ as g, a0 as F, P as L, s as k, B as E, a1 as B, c as A, t as Q, v as U, w as V, a2 as q, a3 as z, x as H, y as O, z as j, A as W, E as G, a4 as K } from "./chunks/index-D0TdW88i.js";
2
+ import { a5 as ie, a6 as de, a7 as ce, a8 as ue, a9 as me, aa as pe, ab as he, D as be, ac as fe, ad as Ae, ae as xe, af as Ce, ag as ge, ah as ye, ah as Ee, ai as Ne, aj as De, a as ve, ak as Se, al as Te, am as Pe, an as _e, ao as we, ap as Me, aq as Ie, ar as Re, as as Fe, at as Le, au as ke, av as Be, aw as Qe, ax as Ue, ay as Ve, az as qe, aA as ze, aB as He, aC as Oe, aD as je, aE as We, aF as Ge, aG as Ke, aH as Ye, aI as $e, aJ as Xe, aK as Ze, aL as Je, aM as ea, aN as aa, aO as sa, aP as ta, aQ as ra, aR as oa, aS as na, aT as la, aU as ia, aV as da, aW as ca, aX as ua, aY as ma, aZ as pa, a_ as ha, a$ as ba, b0 as fa, b1 as Aa, b2 as xa, b3 as Ca, b4 as ga, b5 as ya, b6 as Ea, b7 as Na, b8 as Da, b9 as va, ba as Sa, bb as Ta, bc as Pa, bd as _a, be as wa, bf as Ma, bg as Ia, bh as Ra, bi as Fa, bj as La, bk as ka, bl as Ba, bm as Qa, bn as Ua, bo as Va, bp as qa, bq as za, br as Ha, bs as Oa, bt as ja, bu as Wa, bv as Ga, bw as Ka, bx as Ya, by as $a, bz as Xa, bA as Za, bB as Ja, bC as es, bD as as, bE as ss, bF as ts, bG as rs, bH as os } from "./chunks/index-D0TdW88i.js";
3
3
  import { E as ls } from "./chunks/common-types-DhqlRVrq.js";
4
- import { C as ds, D as cs } from "./chunks/dashboard-summary-settings-dialog-eQcHYcAI.js";
4
+ import { C as ds, D as cs } from "./chunks/dashboard-summary-settings-dialog-CO1SwHHD.js";
5
5
  import { jsx as e, jsxs as o } from "react/jsx-runtime";
6
6
  import * as b from "react";
7
7
  import { useMemo as Y, useEffect as $ } from "react";
8
- import { ResourceManagementPanel as ms } from "./chunks/resource-management-panel-Z8x52dx2.js";
8
+ import { ResourceManagementPanel as ms } from "./chunks/resource-management-panel-DS_WEv1x.js";
9
9
  import { DEFAULT_CALENDAR_CONTEXT as hs } from "./types/index.js";
10
10
  import "react-dom";
11
- import { A as fs, E as As, a as xs, N as Cs, S as gs, U as ys, V as Es, u as Ns, b as Ds, c as vs } from "./chunks/notification-bell-BI-XywDI.js";
11
+ import { A as fs, E as As, a as xs, N as Cs, S as gs, U as ys, V as Es, u as Ns, b as Ds, c as vs } from "./chunks/notification-bell-DFiRaeJQ.js";
12
12
  function se(a) {
13
13
  const { displayPreferences: s, ...i } = a, c = {
14
14
  ...i,