react-semaphor 0.1.215 → 0.1.216

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 (35) hide show
  1. package/dist/chunks/{dashboard-controls-DO8B0l2Z.js → dashboard-controls-AyLbHPY7.js} +9 -9
  2. package/dist/chunks/{dashboard-controls-gCssNmJm.js → dashboard-controls-CE14Z5GT.js} +9 -8
  3. package/dist/chunks/{dashboard-json-DqjdMwqj.js → dashboard-json-BlcehrzA.js} +1 -1
  4. package/dist/chunks/{dashboard-json-BZdOqyyK.js → dashboard-json-CB-PjFQp.js} +1 -1
  5. package/dist/chunks/{dashboard-summary-settings-dialog-BxEopSPW.js → dashboard-summary-settings-dialog-95pmx2I6.js} +1 -1
  6. package/dist/chunks/{dashboard-summary-settings-dialog-Diz1-VIZ.js → dashboard-summary-settings-dialog-ZzGDw_NF.js} +1 -1
  7. package/dist/chunks/{edit-dashboard-visual-Bq0O78OS.js → edit-dashboard-visual-BCzL8qte.js} +2 -2
  8. package/dist/chunks/{edit-dashboard-visual-CWytKzAl.js → edit-dashboard-visual-DE2g9so9.js} +1 -1
  9. package/dist/chunks/{editor-action-buttons-D3hMMbWz.js → editor-action-buttons-BkCIjblw.js} +1 -1
  10. package/dist/chunks/{editor-action-buttons-CdrejHS2.js → editor-action-buttons-CL_G2bSD.js} +2 -2
  11. package/dist/chunks/{index-BkklWRT2.js → index-BL3sySXQ.js} +162 -162
  12. package/dist/chunks/{index-Cxj7oWTZ.js → index-C0uTSIns.js} +10798 -10782
  13. package/dist/chunks/normalize-dashboard-for-dirty-check-B7NQDI1H.js +1 -0
  14. package/dist/chunks/normalize-dashboard-for-dirty-check-Bn27S0PN.js +69 -0
  15. package/dist/chunks/{notification-bell-BTWYtgvh.js → notification-bell-DZukXqhn.js} +3 -3
  16. package/dist/chunks/{notification-bell-D1NnHIWO.js → notification-bell-ym2iwJpw.js} +1 -1
  17. package/dist/chunks/{resource-management-panel-DATz276M.js → resource-management-panel-BVKxC2EW.js} +1 -1
  18. package/dist/chunks/{resource-management-panel-BnRwLkjR.js → resource-management-panel-DGVVs8UM.js} +3 -3
  19. package/dist/chunks/use-debounced-dirty-check-BwAbnX_5.js +59 -0
  20. package/dist/chunks/use-debounced-dirty-check-XHSwAefL.js +1 -0
  21. package/dist/chunks/{use-role-aware-display-preferences-ASD7plKm.js → use-role-aware-display-preferences-c-dmtisM.js} +1 -1
  22. package/dist/chunks/{use-role-aware-display-preferences-DP-Ng_hb.js → use-role-aware-display-preferences-v3z-8Fyh.js} +1 -1
  23. package/dist/chunks/{use-visual-utils-873PUDHm.js → use-visual-utils-Ba5nPP3L.js} +1 -1
  24. package/dist/chunks/{use-visual-utils-C_9jH8bu.js → use-visual-utils-CaYg_mFN.js} +1 -1
  25. package/dist/dashboard/index.cjs +1 -1
  26. package/dist/dashboard/index.js +1 -1
  27. package/dist/index.cjs +1 -1
  28. package/dist/index.js +19 -18
  29. package/dist/shared/index.cjs +1 -1
  30. package/dist/shared/index.js +5 -4
  31. package/dist/surfboard/index.cjs +1 -1
  32. package/dist/surfboard/index.js +2 -2
  33. package/package.json +1 -1
  34. package/dist/chunks/normalize-dashboard-for-dirty-check-D9x96J2F.js +0 -1
  35. package/dist/chunks/normalize-dashboard-for-dirty-check-XKgH3GFX.js +0 -119
@@ -0,0 +1 @@
1
+ "use strict";const s=["i","x","y","w","h","minW","minH","maxW","maxH","static","isResizable","isDraggable"];function y(t,e,r){t[e]=r}function a(t){const e={};for(const r of s){const i=t[r];i!==void 0&&((r==="isResizable"||r==="isDraggable")&&i===!0||y(e,r,i))}return e}function o(t){return t?t.map(a).sort((e,r)=>{const i=String(e.i??""),n=String(r.i??"");return i!==n?i.localeCompare(n):Number(e.y??0)-Number(r.y??0)||Number(e.x??0)-Number(r.x??0)||Number(e.h??0)-Number(r.h??0)||Number(e.w??0)-Number(r.w??0)}):[]}function u(t){if(!t)return;const e={};for(const r of Object.keys(t).sort()){const i=t[r];i&&(e[r]=o(i))}return e}function c(t){return JSON.stringify(t,(e,r)=>!r||typeof r!="object"||Array.isArray(r)?r:Object.keys(r).sort().reduce((i,n)=>(i[n]=r[n],i),{}))}function f(t){var e;return t?{...t,sheets:(e=t.sheets)==null?void 0:e.map(r=>{if(!r)return r;const i={...r};return r.layout&&(i.layout=o(r.layout)),r.layouts&&(i.layouts=u(r.layouts)),i})}:null}function m(t){return JSON.stringify(t??null,function(e,r){return e==="layout"&&Array.isArray(r)?o(r):e==="layouts"&&r&&typeof r=="object"&&!Array.isArray(r)?u(r):!r||typeof r!="object"||Array.isArray(r)?r:Object.keys(r).sort().reduce((i,n)=>(i[n]=r[n],i),{})})}function b(t){return c(u(t)??null)}exports.normalizeDashboardForDirtyCheck=f;exports.serializeDashboardForDirtyCheck=m;exports.serializeLayoutsForDirtyCheck=b;
@@ -0,0 +1,69 @@
1
+ const s = [
2
+ "i",
3
+ "x",
4
+ "y",
5
+ "w",
6
+ "h",
7
+ "minW",
8
+ "minH",
9
+ "maxW",
10
+ "maxH",
11
+ "static",
12
+ "isResizable",
13
+ "isDraggable"
14
+ ];
15
+ function y(t, n, r) {
16
+ t[n] = r;
17
+ }
18
+ function f(t) {
19
+ const n = {};
20
+ for (const r of s) {
21
+ const e = t[r];
22
+ e !== void 0 && ((r === "isResizable" || r === "isDraggable") && e === !0 || y(n, r, e));
23
+ }
24
+ return n;
25
+ }
26
+ function o(t) {
27
+ return t ? t.map(f).sort((n, r) => {
28
+ const e = String(n.i ?? ""), i = String(r.i ?? "");
29
+ return e !== i ? e.localeCompare(i) : Number(n.y ?? 0) - Number(r.y ?? 0) || Number(n.x ?? 0) - Number(r.x ?? 0) || Number(n.h ?? 0) - Number(r.h ?? 0) || Number(n.w ?? 0) - Number(r.w ?? 0);
30
+ }) : [];
31
+ }
32
+ function u(t) {
33
+ if (!t) return;
34
+ const n = {};
35
+ for (const r of Object.keys(t).sort()) {
36
+ const e = t[r];
37
+ e && (n[r] = o(e));
38
+ }
39
+ return n;
40
+ }
41
+ function a(t) {
42
+ return JSON.stringify(t, (n, r) => !r || typeof r != "object" || Array.isArray(r) ? r : Object.keys(r).sort().reduce((e, i) => (e[i] = r[i], e), {}));
43
+ }
44
+ function c(t) {
45
+ var n;
46
+ return t ? {
47
+ ...t,
48
+ sheets: (n = t.sheets) == null ? void 0 : n.map((r) => {
49
+ if (!r) return r;
50
+ const e = {
51
+ ...r
52
+ };
53
+ return r.layout && (e.layout = o(r.layout)), r.layouts && (e.layouts = u(r.layouts)), e;
54
+ })
55
+ } : null;
56
+ }
57
+ function m(t) {
58
+ return JSON.stringify(t ?? null, function(n, r) {
59
+ return n === "layout" && Array.isArray(r) ? o(r) : n === "layouts" && r && typeof r == "object" && !Array.isArray(r) ? u(r) : !r || typeof r != "object" || Array.isArray(r) ? r : Object.keys(r).sort().reduce((e, i) => (e[i] = r[i], e), {});
60
+ });
61
+ }
62
+ function b(t) {
63
+ return a(u(t) ?? null);
64
+ }
65
+ export {
66
+ b as a,
67
+ c as n,
68
+ m as s
69
+ };
@@ -1,8 +1,8 @@
1
1
  import K, { useState as D, useRef as M, useCallback as k, useEffect as L, useContext as ee } from "react";
2
- import { bS as te, l as z, bM as T, b6 as B, aT as Q, aS as $, bL as Y, aU as ae, m as se, n as re, o as oe, p as ne, q as ie, L as j, cB as le, cH as ce, G as de, B as I, H as _, a1 as P, V as ue, u as V, W as me, Z, cI as he, cJ as H, I as R, bO as pe, c as U, c8 as fe, c9 as ge, ab as ve, cb as be, cc as F, E as xe, cg as we, c7 as ye, Y as Ce, cK as Ne, cL as Ae, cM as De, cp as Ee, cq as Se, cr as Le, cN as Ie, cs as Te, ct as Ue, cu as ke, cv as Ve, cw as Fe, ay as Me, aI as Pe, X as Re, cO as Oe, cP as ze, cQ as Be, ax as q, ad as $e, bN as _e, P as je, s as He, cR as qe, t as Ge } from "./index-Cxj7oWTZ.js";
2
+ import { bS as te, l as z, bM as T, b6 as B, aT as Q, aS as $, bL as Y, aU as ae, m as se, n as re, o as oe, p as ne, q as ie, L as j, cB as le, cH as ce, G as de, B as I, H as _, a1 as P, V as ue, u as V, W as me, Z, cI as he, cJ as H, I as R, bO as pe, c as U, c8 as fe, c9 as ge, ab as ve, cb as be, cc as F, E as xe, cg as we, c7 as ye, Y as Ce, cK as Ne, cL as Ae, cM as De, cp as Ee, cq as Se, cr as Le, cN as Ie, cs as Te, ct as Ue, cu as ke, cv as Ve, cw as Fe, ay as Me, aI as Pe, X as Re, cO as Oe, cP as ze, cQ as Be, ax as q, ad as $e, bN as _e, P as je, s as He, cR as qe, t as Ge } from "./index-C0uTSIns.js";
3
3
  import { jsx as t, jsxs as o, Fragment as O } from "react/jsx-runtime";
4
- import { V as Xe, E as We, a as Qe, b as Ye, L as Ze, c as Je, d as Ke, C as et } from "./editor-action-buttons-CdrejHS2.js";
5
- import { a as J } from "./use-visual-utils-873PUDHm.js";
4
+ import { V as Xe, E as We, a as Qe, b as Ye, L as Ze, c as Je, d as Ke, C as et } from "./editor-action-buttons-CL_G2bSD.js";
5
+ import { a as J } from "./use-visual-utils-Ba5nPP3L.js";
6
6
  import { c as G } from "./date-formatter-Y8Za1ib3.js";
7
7
  /**
8
8
  * @license lucide-react v0.453.0 - ISC
@@ -1,4 +1,4 @@
1
- "use strict";const f=require("react"),t=require("./index-BkklWRT2.js"),e=require("react/jsx-runtime"),A=require("./editor-action-buttons-D3hMMbWz.js"),U=require("./use-visual-utils-C_9jH8bu.js"),I=require("./date-formatter-Sz6QDaM8.js");/**
1
+ "use strict";const f=require("react"),t=require("./index-BL3sySXQ.js"),e=require("react/jsx-runtime"),A=require("./editor-action-buttons-BkCIjblw.js"),U=require("./use-visual-utils-CaYg_mFN.js"),I=require("./date-formatter-Sz6QDaM8.js");/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-BkklWRT2.js"),c=require("react"),le=require("./use-visual-utils-C_9jH8bu.js"),he=require("./use-role-aware-display-preferences-ASD7plKm.js");/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-BL3sySXQ.js"),c=require("react"),le=require("./use-visual-utils-CaYg_mFN.js"),he=require("./use-role-aware-display-preferences-c-dmtisM.js");/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,8 +1,8 @@
1
1
  import { jsx as e, jsxs as n, Fragment as ge } from "react/jsx-runtime";
2
- import { bS as _e, u as ie, a1 as Ge, W as le, c5 as qe, c6 as Ke, B as U, c7 as pe, c8 as We, c9 as Ye, ca as Ze, cb as $e, cc as Z, H as de, cd as Je, ce as Qe, cf as Xe, cg as ve, ch as De, ci as ke, cj as et, c as re, ck as be, e as ce, cl as ye, cm as Se, cn as tt, au as Ee, as as Ve, co as Le, cp as Ae, cq as Oe, cr as Te, cs as Re, ct as Pe, cu as Ue, cv as je, cw as Fe, cx as st, cy as nt, bO as ae, l as at, cz as Ie, cA as it, m as rt, n as ot, o as lt, p as dt, q as ct, L as Ce, cB as fe, G as ut, cC as ht, cD as mt, cE as pt, bZ as ft, b_ as gt, b$ as Dt, c1 as xt, cF as Nt, cG as wt } from "./index-Cxj7oWTZ.js";
2
+ import { bS as _e, u as ie, a1 as Ge, W as le, c5 as qe, c6 as Ke, B as U, c7 as pe, c8 as We, c9 as Ye, ca as Ze, cb as $e, cc as Z, H as de, cd as Je, ce as Qe, cf as Xe, cg as ve, ch as De, ci as ke, cj as et, c as re, ck as be, e as ce, cl as ye, cm as Se, cn as tt, au as Ee, as as Ve, co as Le, cp as Ae, cq as Oe, cr as Te, cs as Re, ct as Pe, cu as Ue, cv as je, cw as Fe, cx as st, cy as nt, bO as ae, l as at, cz as Ie, cA as it, m as rt, n as ot, o as lt, p as dt, q as ct, L as Ce, cB as fe, G as ut, cC as ht, cD as mt, cE as pt, bZ as ft, b_ as gt, b$ as Dt, c1 as xt, cF as Nt, cG as wt } from "./index-C0uTSIns.js";
3
3
  import vt, { useRef as Ct, useEffect as oe, useState as N } from "react";
4
- import { a as Me } from "./use-visual-utils-873PUDHm.js";
5
- import { u as bt } from "./use-role-aware-display-preferences-DP-Ng_hb.js";
4
+ import { a as Me } from "./use-visual-utils-Ba5nPP3L.js";
5
+ import { u as bt } from "./use-role-aware-display-preferences-v3z-8Fyh.js";
6
6
  /**
7
7
  * @license lucide-react v0.453.0 - ISC
8
8
  *
@@ -0,0 +1,59 @@
1
+ import { useState as C, useRef as m, useEffect as h, useCallback as W } from "react";
2
+ const j = (n) => JSON.stringify(n, (e, r) => !r || typeof r != "object" || Array.isArray(r) ? r : Object.keys(r).sort().reduce((c, l) => (c[l] = r[l], c), {}));
3
+ function O(n, e, r = 300, c = 1e3, l) {
4
+ const [D, f] = C(!1), [I, o] = C(!1), d = m(null), t = m(0), T = m(n), w = m(e), u = l || j;
5
+ h(() => {
6
+ t.current += 1;
7
+ const a = t.current, k = T.current !== n, R = w.current !== e;
8
+ if (T.current = n, w.current = e, e === null) {
9
+ const i = window.setTimeout(() => {
10
+ a === t.current && (f(!1), o(!1));
11
+ }, 0);
12
+ return () => clearTimeout(i);
13
+ }
14
+ if (R && !k) {
15
+ const i = window.setTimeout(() => {
16
+ if (a === t.current) {
17
+ const s = u(n), y = u(e);
18
+ f(s !== y), o(!1);
19
+ }
20
+ }, 0);
21
+ return () => clearTimeout(i);
22
+ }
23
+ const g = k ? window.setTimeout(() => {
24
+ a === t.current && o(!0);
25
+ }, 0) : null, z = setTimeout(() => {
26
+ const i = window.requestIdleCallback || ((s) => window.setTimeout(
27
+ () => s({
28
+ didTimeout: !1,
29
+ timeRemaining: () => 50
30
+ }),
31
+ 1
32
+ ));
33
+ d.current = i(
34
+ (s) => {
35
+ if (s.timeRemaining() > 0 || s.didTimeout) {
36
+ if (a !== t.current) return;
37
+ const y = u(n), P = u(e);
38
+ f(y !== P), o(!1);
39
+ }
40
+ },
41
+ { timeout: c }
42
+ );
43
+ }, r);
44
+ return () => {
45
+ g !== null && clearTimeout(g), clearTimeout(z), d.current !== null && ((window.cancelIdleCallback || window.clearTimeout)(d.current), d.current = null);
46
+ };
47
+ }, [n, e, r, c, u]);
48
+ const b = W(() => {
49
+ f(!1), o(!1);
50
+ }, []);
51
+ return {
52
+ isDirty: e === null ? !1 : D,
53
+ isDirtyPending: e === null ? !1 : I,
54
+ resetDirty: b
55
+ };
56
+ }
57
+ export {
58
+ O as u
59
+ };
@@ -0,0 +1 @@
1
+ "use strict";const t=require("react"),z=n=>JSON.stringify(n,(e,r)=>!r||typeof r!="object"||Array.isArray(r)?r:Object.keys(r).sort().reduce((u,f)=>(u[f]=r[f],u),{}));function P(n,e,r=300,u=1e3,f){const[R,d]=t.useState(!1),[g,o]=t.useState(!1),a=t.useRef(null),i=t.useRef(0),T=t.useRef(n),w=t.useRef(e),l=f||z;t.useEffect(()=>{i.current+=1;const m=i.current,k=T.current!==n,b=w.current!==e;if(T.current=n,w.current=e,e===null){const s=window.setTimeout(()=>{m===i.current&&(d(!1),o(!1))},0);return()=>clearTimeout(s)}if(b&&!k){const s=window.setTimeout(()=>{if(m===i.current){const c=l(n),y=l(e);d(c!==y),o(!1)}},0);return()=>clearTimeout(s)}const D=k?window.setTimeout(()=>{m===i.current&&o(!0)},0):null,I=setTimeout(()=>{const s=window.requestIdleCallback||(c=>window.setTimeout(()=>c({didTimeout:!1,timeRemaining:()=>50}),1));a.current=s(c=>{if(c.timeRemaining()>0||c.didTimeout){if(m!==i.current)return;const y=l(n),h=l(e);d(y!==h),o(!1)}},{timeout:u})},r);return()=>{D!==null&&clearTimeout(D),clearTimeout(I),a.current!==null&&((window.cancelIdleCallback||window.clearTimeout)(a.current),a.current=null)}},[n,e,r,u,l]);const C=t.useCallback(()=>{d(!1),o(!1)},[]);return{isDirty:e===null?!1:R,isDirtyPending:e===null?!1:g,resetDirty:C}}exports.useDebouncedDirtyCheck=P;
@@ -1 +1 @@
1
- "use strict";const a=require("./index-BkklWRT2.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-BL3sySXQ.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-Cxj7oWTZ.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-C0uTSIns.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 { T as G, l as Y, U as J, V as K, W as Z, Y as _, Z as X, u as v, _ as q, $ as ee, I as V, a0 as te, a1 as f } from "./index-Cxj7oWTZ.js";
1
+ import { T as G, l as Y, U as J, V as K, W as Z, Y as _, Z as X, u as v, _ as q, $ as ee, I as V, a0 as te, a1 as f } from "./index-C0uTSIns.js";
2
2
  import { useState as j, useEffect as re, useCallback as D } 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");
@@ -1 +1 @@
1
- "use strict";const a=require("./index-BkklWRT2.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
+ "use strict";const a=require("./index-BL3sySXQ.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-BkklWRT2.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-BL3sySXQ.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-Cxj7oWTZ.js";
1
+ import { D as a } from "../chunks/index-C0uTSIns.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-BkklWRT2.js"),T=require("./chunks/common-types-CfJLrTJd.js"),E=require("./chunks/dashboard-summary-settings-dialog-Diz1-VIZ.js"),t=require("react/jsx-runtime"),g=require("react"),v=require("./chunks/resource-management-panel-DATz276M.js"),P=require("./types/index.cjs"),D=require("./chunks/normalize-dashboard-for-dirty-check-D9x96J2F.js");require("react-dom");const m=require("./chunks/notification-bell-D1NnHIWO.js");function M(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(a,n,i.get?i:{enumerable:!0,get:()=>r[n]})}}return a.default=r,Object.freeze(a)}const A=M(g);function I(r){const{displayPreferences:a,...n}=r,i={...n,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(o=>{var u;return(u=o.dashboard)==null?void 0:u.sheets}),{card:n,frame:i}=g.useMemo(()=>{const o=a==null?void 0:a.flatMap(s=>s.frames),u=o==null?void 0:o.flatMap(s=>s==null?void 0:s.cards),d=u==null?void 0:u.find(s=>(s==null?void 0:s.id)===r),l=o==null?void 0:o.find(s=>{var p;return(p=s==null?void 0:s.cards)==null?void 0:p.find(h=>(h==null?void 0:h.id)===r)});return{card:d,frame:l}},[a,r]);return!n||!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:o,resetErrorBoundary:u})=>t.jsx(e.FallbackVisual,{error:o,resetErrorBoundary:u,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:i})})})}function F({name:r,items:a,value:n,onChange:i,isLoading:o,isError:u,refetch:d,className:l,icon:s,showNone:p=!1}){const h=A.useRef(null),[f,y]=A.useState(!1),[S,b]=A.useState("100%"),C=p?[...a||[],{id:"none",name:"None"}]:a;A.useLayoutEffect(()=>{h.current&&b(h.current.offsetWidth)},[]);function N(){var c;return o?"Loading...":u?"Error":n?(c=a==null?void 0:a.find(x=>x.id===n))==null?void 0:c.name:`Select ${r}`}function j(c,x){i(x),y(!1)}return t.jsxs(e.Popover,{open:f,onOpenChange:y,children:[t.jsx(e.PopoverTrigger,{asChild:!0,children:t.jsxs(e.Button,{ref:h,variant:"outline",role:"combobox","aria-expanded":f,className:e.cn("flex h-9 w-full justify-between",l),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:N()})]}),t.jsx(e.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(e.PopoverContent,{className:"w-full p-0",style:{minWidth:S},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:d,children:t.jsx(e.RefreshCw,{className:e.cn("size-3.5 opacity-50",o&&"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:C==null?void 0:C.map(c=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:c.name,onSelect:x=>j(x,c.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(e.Check,{className:e.cn("size-4",n===c.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:c.name,children:c.name})]})},c.id))})]})]})})]})}function R({triggerButtonClassName:r,variant:a="ghost"}){const[n,i]=g.useState(!1),o=e.useDashboardStore(d=>{var l;return(l=d.dashboard)==null?void 0:l.id}),u=e.useDashboardStore(d=>{var l;return(l=d.dashboard)==null?void 0:l.title});return o?t.jsxs(t.Fragment,{children:[t.jsx(e.IconButton,{tooltip:"Schedule Dashboard",className:e.cn("h-7 p-2",r),buttonProps:{variant:a},onClick:()=>i(!0),children:t.jsx(e.Clock,{className:"size-4"})}),t.jsx(e.EmailScheduleDialog,{open:n,onOpenChange:i,dashboardId:o,dashboardName:u})]}):null}function w(r,a){g.useEffect(()=>(r&&a&&(window.__SEMAPHOR_PRINT_STATE__={...a}),()=>{r&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[r,a])}function k(){var u,d;const{quotasQuery:r,usageQuery:a}=e.useAlertQuotas(),n=((u=r.data)==null?void 0:u.quotas)||[],i=((d=a.data)==null?void 0:d.usage)||[],o=new Map(i.map(l=>[l.tenantId||"org",l]));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:n.map(l=>{const s=l.tenantId||"org",p=o.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:l.policy.maxActiveAlerts}),t.jsxs("td",{className:"px-3 py-2",children:[l.policy.minCadenceMinutes," min"]}),t.jsx("td",{className:"px-3 py-2",children:l.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.EmailScheduleDialog=e.EmailScheduleDialog;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.useAddNewFrame=e.useAddNewFrame;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=T.EMPTY_SELECTION;exports.CalendarPreferencesDialog=E.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=E.DashboardSummarySettingsDialog;exports.ResourceManagementPanel=v.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=P.DEFAULT_CALENDAR_CONTEXT;exports.normalizeDashboardForDirtyCheck=D.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=D.serializeDashboardForDirtyCheck;exports.useDebouncedDirtyCheck=D.useDebouncedDirtyCheck;exports.AdvancedModeToggle=m.AdvancedModeToggle;exports.ExportNotificationItem=m.ExportNotificationItem;exports.ExportNotificationList=m.ExportNotificationList;exports.NotificationBell=m.NotificationBell;exports.UnsavedChangesAlert=m.UnsavedChangesAlert;exports.VisualEditingControls=m.VisualEditingControls;exports.useExportPolling=m.useExportPolling;exports.useExportRecovery=m.useExportRecovery;exports.usePristineSnapshotInitializer=m.usePristineSnapshotInitializer;exports.Combobox=F;exports.ScheduleDashboard=R;exports.TenantQuotaPage=k;exports.Visual=I;exports.useExposePrintState=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-BL3sySXQ.js"),T=require("./chunks/common-types-CfJLrTJd.js"),y=require("./chunks/dashboard-summary-settings-dialog-ZzGDw_NF.js"),t=require("react/jsx-runtime"),g=require("react"),v=require("./chunks/resource-management-panel-BVKxC2EW.js"),P=require("./types/index.cjs"),M=require("./chunks/use-debounced-dirty-check-XHSwAefL.js");require("react-dom");const m=require("./chunks/notification-bell-ym2iwJpw.js"),E=require("./chunks/normalize-dashboard-for-dirty-check-B7NQDI1H.js");function I(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(a,n,i.get?i:{enumerable:!0,get:()=>r[n]})}}return a.default=r,Object.freeze(a)}const A=I(g);function _(r){const{displayPreferences:a,...n}=r,i={...n,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(F,{cardId:r.cardId})})})})]})})}function F({cardId:r}){const a=e.useDashboardStore(o=>{var u;return(u=o.dashboard)==null?void 0:u.sheets}),{card:n,frame:i}=g.useMemo(()=>{const o=a==null?void 0:a.flatMap(s=>s.frames),u=o==null?void 0:o.flatMap(s=>s==null?void 0:s.cards),d=u==null?void 0:u.find(s=>(s==null?void 0:s.id)===r),l=o==null?void 0:o.find(s=>{var p;return(p=s==null?void 0:s.cards)==null?void 0:p.find(h=>(h==null?void 0:h.id)===r)});return{card:d,frame:l}},[a,r]);return!n||!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:o,resetErrorBoundary:u})=>t.jsx(e.FallbackVisual,{error:o,resetErrorBoundary:u,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:i})})})}function R({name:r,items:a,value:n,onChange:i,isLoading:o,isError:u,refetch:d,className:l,icon:s,showNone:p=!1}){const h=A.useRef(null),[D,f]=A.useState(!1),[S,b]=A.useState("100%"),C=p?[...a||[],{id:"none",name:"None"}]:a;A.useLayoutEffect(()=>{h.current&&b(h.current.offsetWidth)},[]);function N(){var c;return o?"Loading...":u?"Error":n?(c=a==null?void 0:a.find(x=>x.id===n))==null?void 0:c.name:`Select ${r}`}function j(c,x){i(x),f(!1)}return t.jsxs(e.Popover,{open:D,onOpenChange:f,children:[t.jsx(e.PopoverTrigger,{asChild:!0,children:t.jsxs(e.Button,{ref:h,variant:"outline",role:"combobox","aria-expanded":D,className:e.cn("flex h-9 w-full justify-between",l),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:N()})]}),t.jsx(e.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(e.PopoverContent,{className:"w-full p-0",style:{minWidth:S},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:d,children:t.jsx(e.RefreshCw,{className:e.cn("size-3.5 opacity-50",o&&"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:C==null?void 0:C.map(c=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:c.name,onSelect:x=>j(x,c.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(e.Check,{className:e.cn("size-4",n===c.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:c.name,children:c.name})]})},c.id))})]})]})})]})}function w({triggerButtonClassName:r,variant:a="ghost"}){const[n,i]=g.useState(!1),o=e.useDashboardStore(d=>{var l;return(l=d.dashboard)==null?void 0:l.id}),u=e.useDashboardStore(d=>{var l;return(l=d.dashboard)==null?void 0:l.title});return o?t.jsxs(t.Fragment,{children:[t.jsx(e.IconButton,{tooltip:"Schedule Dashboard",className:e.cn("h-7 p-2",r),buttonProps:{variant:a},onClick:()=>i(!0),children:t.jsx(e.Clock,{className:"size-4"})}),t.jsx(e.EmailScheduleDialog,{open:n,onOpenChange:i,dashboardId:o,dashboardName:u})]}):null}function k(r,a){g.useEffect(()=>(r&&a&&(window.__SEMAPHOR_PRINT_STATE__={...a}),()=>{r&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[r,a])}function L(){var u,d;const{quotasQuery:r,usageQuery:a}=e.useAlertQuotas(),n=((u=r.data)==null?void 0:u.quotas)||[],i=((d=a.data)==null?void 0:d.usage)||[],o=new Map(i.map(l=>[l.tenantId||"org",l]));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:n.map(l=>{const s=l.tenantId||"org",p=o.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:l.policy.maxActiveAlerts}),t.jsxs("td",{className:"px-3 py-2",children:[l.policy.minCadenceMinutes," min"]}),t.jsx("td",{className:"px-3 py-2",children:l.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.EmailScheduleDialog=e.EmailScheduleDialog;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.useAddNewFrame=e.useAddNewFrame;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=T.EMPTY_SELECTION;exports.CalendarPreferencesDialog=y.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=y.DashboardSummarySettingsDialog;exports.ResourceManagementPanel=v.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=P.DEFAULT_CALENDAR_CONTEXT;exports.useDebouncedDirtyCheck=M.useDebouncedDirtyCheck;exports.AdvancedModeToggle=m.AdvancedModeToggle;exports.ExportNotificationItem=m.ExportNotificationItem;exports.ExportNotificationList=m.ExportNotificationList;exports.NotificationBell=m.NotificationBell;exports.UnsavedChangesAlert=m.UnsavedChangesAlert;exports.VisualEditingControls=m.VisualEditingControls;exports.useExportPolling=m.useExportPolling;exports.useExportRecovery=m.useExportRecovery;exports.usePristineSnapshotInitializer=m.usePristineSnapshotInitializer;exports.normalizeDashboardForDirtyCheck=E.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=E.serializeDashboardForDirtyCheck;exports.Combobox=R;exports.ScheduleDashboard=w;exports.TenantQuotaPage=L;exports.Visual=_;exports.useExposePrintState=k;
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
- import { a2 as D, a3 as w, a4 as _, a5 as I, a6 as M, a7 as R, a8 as F, u as x, a9 as y, aa as k, P as L, s as B, B as E, ab as Q, c as f, t as O, v as z, w as U, ac as N, ad as q, x as H, y as V, z as j, A as W, E as G, ae as K, af as Y, ag as X } from "./chunks/index-Cxj7oWTZ.js";
2
- import { ah as pe, ai as he, aj as be, ak as fe, al as Ae, am as xe, an as Ce, D as ge, ao as ye, ap as De, aq as Ee, ar as Ne, as as Se, at as ve, at as Te, au as Pe, av as we, a as _e, aw as Ie, ax as Me, ay as Re, az as Fe, aA as ke, aB as Le, aC as Be, aD as Qe, aE as Oe, aF as ze, aG as Ue, aH as qe, aI as He, aJ as Ve, aK as je, aL as We, aM as Ge, aN as Ke, aO as Ye, aP as Xe, aQ as $e, aR as Je, aS as Ze, aT as ea, aU as aa, aV as sa, aW as ta, aX as ra, aY as oa, aZ as na, a_ as la, a$ as ia, b0 as da, b1 as ca, b2 as ua, b3 as ma, b4 as pa, b5 as ha, b6 as ba, b7 as fa, b8 as Aa, b9 as xa, ba as Ca, bb as ga, bc as ya, bd as Da, be as Ea, bf as Na, bg as Sa, bh as va, bi as Ta, bj as Pa, bk as wa, bl as _a, bm as Ia, bn as Ma, bo as Ra, bp as Fa, bq as ka, br as La, bs as Ba, bt as Qa, bu as Oa, bv as za, bw as Ua, bx as qa, by as Ha, bz as Va, bA as ja, bB as Wa, bC as Ga, bD as Ka, bE as Ya, Z as Xa, bF as $a, bG as Ja, bH as Za, bI as es, bJ as as, Y as ss, bK as ts, a1 as rs, bL as os, bM as ns, bN as ls, bO as is, bP as ds, bQ as cs, bR as us } from "./chunks/index-Cxj7oWTZ.js";
1
+ import { a2 as D, a3 as w, a4 as _, a5 as I, a6 as M, a7 as R, a8 as F, u as x, a9 as y, aa as k, P as L, s as B, B as E, ab as Q, c as f, t as O, v as z, w as U, ac as N, ad as q, x as H, y as V, z as j, A as W, E as G, ae as K, af as Y, ag as X } from "./chunks/index-C0uTSIns.js";
2
+ import { ah as pe, ai as he, aj as be, ak as fe, al as Ae, am as xe, an as Ce, D as ge, ao as ye, ap as De, aq as Ee, ar as Ne, as as Se, at as ve, at as Te, au as Pe, av as we, a as _e, aw as Ie, ax as Me, ay as Re, az as Fe, aA as ke, aB as Le, aC as Be, aD as Qe, aE as Oe, aF as ze, aG as Ue, aH as qe, aI as He, aJ as Ve, aK as je, aL as We, aM as Ge, aN as Ke, aO as Ye, aP as Xe, aQ as $e, aR as Je, aS as Ze, aT as ea, aU as aa, aV as sa, aW as ta, aX as ra, aY as oa, aZ as na, a_ as la, a$ as ia, b0 as da, b1 as ca, b2 as ua, b3 as ma, b4 as pa, b5 as ha, b6 as ba, b7 as fa, b8 as Aa, b9 as xa, ba as Ca, bb as ga, bc as ya, bd as Da, be as Ea, bf as Na, bg as Sa, bh as va, bi as Ta, bj as Pa, bk as wa, bl as _a, bm as Ia, bn as Ma, bo as Ra, bp as Fa, bq as ka, br as La, bs as Ba, bt as Qa, bu as Oa, bv as za, bw as Ua, bx as qa, by as Ha, bz as Va, bA as ja, bB as Wa, bC as Ga, bD as Ka, bE as Ya, Z as Xa, bF as $a, bG as Ja, bH as Za, bI as es, bJ as as, Y as ss, bK as ts, a1 as rs, bL as os, bM as ns, bN as ls, bO as is, bP as ds, bQ as cs, bR as us } from "./chunks/index-C0uTSIns.js";
3
3
  import { E as ps } from "./chunks/common-types-DhqlRVrq.js";
4
- import { C as bs, D as fs } from "./chunks/dashboard-summary-settings-dialog-BxEopSPW.js";
4
+ import { C as bs, D as fs } from "./chunks/dashboard-summary-settings-dialog-95pmx2I6.js";
5
5
  import { jsx as e, jsxs as n, Fragment as $ } from "react/jsx-runtime";
6
6
  import * as b from "react";
7
7
  import { useMemo as J, useState as Z, useEffect as ee } from "react";
8
- import { ResourceManagementPanel as xs } from "./chunks/resource-management-panel-BnRwLkjR.js";
8
+ import { ResourceManagementPanel as xs } from "./chunks/resource-management-panel-DGVVs8UM.js";
9
9
  import { DEFAULT_CALENDAR_CONTEXT as gs } from "./types/index.js";
10
- import { n as Ds, s as Es, u as Ns } from "./chunks/normalize-dashboard-for-dirty-check-XKgH3GFX.js";
10
+ import { u as Ds } from "./chunks/use-debounced-dirty-check-BwAbnX_5.js";
11
11
  import "react-dom";
12
- import { A as vs, E as Ts, a as Ps, N as ws, U as _s, V as Is, u as Ms, b as Rs, c as Fs } from "./chunks/notification-bell-BTWYtgvh.js";
12
+ import { A as Ns, E as Ss, a as vs, N as Ts, U as Ps, V as ws, u as _s, b as Is, c as Ms } from "./chunks/notification-bell-DZukXqhn.js";
13
+ import { n as Fs, s as ks } from "./chunks/normalize-dashboard-for-dirty-check-Bn27S0PN.js";
13
14
  function ne(a) {
14
15
  const { displayPreferences: s, ...i } = a, d = {
15
16
  ...i,
@@ -236,7 +237,7 @@ function ce() {
236
237
  ] });
237
238
  }
238
239
  export {
239
- vs as AdvancedModeToggle,
240
+ Ns as AdvancedModeToggle,
240
241
  pe as AlertCreationDialog,
241
242
  he as AlertManagementPage,
242
243
  be as AlertsApiError,
@@ -254,9 +255,9 @@ export {
254
255
  ps as EMPTY_SELECTION,
255
256
  Y as EmailScheduleDialog,
256
257
  Ee as ExportError,
257
- Ts as ExportNotificationItem,
258
- Ps as ExportNotificationList,
259
- ws as NotificationBell,
258
+ Ss as ExportNotificationItem,
259
+ vs as ExportNotificationList,
260
+ Ts as NotificationBell,
260
261
  Ne as PivotMarkerEnum,
261
262
  xs as ResourceManagementPanel,
262
263
  Se as ResourceType,
@@ -268,9 +269,9 @@ export {
268
269
  we as SummaryCard,
269
270
  _e as Surfboard,
270
271
  ce as TenantQuotaPage,
271
- _s as UnsavedChangesAlert,
272
+ Ps as UnsavedChangesAlert,
272
273
  ne as Visual,
273
- Is as VisualEditingControls,
274
+ ws as VisualEditingControls,
274
275
  Ie as backtestAlert,
275
276
  Me as cancelExport,
276
277
  Re as cloneDeep,
@@ -314,11 +315,11 @@ export {
314
315
  Aa as isTextDataType,
315
316
  xa as listAlertQuotas,
316
317
  Ca as listAlerts,
317
- Ds as normalizeDashboardForDirtyCheck,
318
+ Fs as normalizeDashboardForDirtyCheck,
318
319
  ga as previewAlertDeliverable,
319
320
  ya as resolveDataType,
320
321
  Da as resolveDatamodelName,
321
- Es as serializeDashboardForDirtyCheck,
322
+ ks as serializeDashboardForDirtyCheck,
322
323
  Ea as triggerAlertNow,
323
324
  Na as updateAlert,
324
325
  Sa as updateAlertContextSources,
@@ -354,18 +355,18 @@ export {
354
355
  Za as useDashboardSummary,
355
356
  es as useDataColumns,
356
357
  as as useDateFilterHook,
357
- Ns as useDebouncedDirtyCheck,
358
+ Ds as useDebouncedDirtyCheck,
358
359
  ss as useEditorActions,
359
360
  ts as useEditorAside,
360
361
  rs as useEditorStore,
361
362
  os as useExportActions,
362
- Ms as useExportPolling,
363
- Rs as useExportRecovery,
363
+ _s as useExportPolling,
364
+ Is as useExportRecovery,
364
365
  ns as useExportStore,
365
366
  de as useExposePrintState,
366
367
  ls as useInProgressExportsCount,
367
368
  is as useManagementStore,
368
- Fs as usePristineSnapshotInitializer,
369
+ Ms as usePristineSnapshotInitializer,
369
370
  ds as useResourceManagement,
370
371
  cs as useSelectedAlertId,
371
372
  us as useTextFilterHook
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/normalize-dashboard-for-dirty-check-D9x96J2F.js");exports.normalizeDashboardForDirtyCheck=e.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=e.serializeDashboardForDirtyCheck;exports.useDebouncedDirtyCheck=e.useDebouncedDirtyCheck;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/use-debounced-dirty-check-XHSwAefL.js"),e=require("../chunks/normalize-dashboard-for-dirty-check-B7NQDI1H.js");exports.useDebouncedDirtyCheck=r.useDebouncedDirtyCheck;exports.normalizeDashboardForDirtyCheck=e.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=e.serializeDashboardForDirtyCheck;
@@ -1,6 +1,7 @@
1
- import { n as a, s as o, u as s } from "../chunks/normalize-dashboard-for-dirty-check-XKgH3GFX.js";
1
+ import { u as o } from "../chunks/use-debounced-dirty-check-BwAbnX_5.js";
2
+ import { n as s, s as i } from "../chunks/normalize-dashboard-for-dirty-check-Bn27S0PN.js";
2
3
  export {
3
- a as normalizeDashboardForDirtyCheck,
4
- o as serializeDashboardForDirtyCheck,
5
- s as useDebouncedDirtyCheck
4
+ s as normalizeDashboardForDirtyCheck,
5
+ i as serializeDashboardForDirtyCheck,
6
+ o as useDebouncedDirtyCheck
6
7
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-BkklWRT2.js"),a=require("../chunks/common-types-CfJLrTJd.js"),e=require("../chunks/dashboard-summary-settings-dialog-Diz1-VIZ.js");exports.Surfboard=r.DashboardPlus;exports.EMPTY_SELECTION=a.EMPTY_SELECTION;exports.CalendarPreferencesDialog=e.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=e.DashboardSummarySettingsDialog;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-BL3sySXQ.js"),a=require("../chunks/common-types-CfJLrTJd.js"),e=require("../chunks/dashboard-summary-settings-dialog-ZzGDw_NF.js");exports.Surfboard=r.DashboardPlus;exports.EMPTY_SELECTION=a.EMPTY_SELECTION;exports.CalendarPreferencesDialog=e.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=e.DashboardSummarySettingsDialog;
@@ -1,6 +1,6 @@
1
- import { a as o } from "../chunks/index-Cxj7oWTZ.js";
1
+ import { a as o } from "../chunks/index-C0uTSIns.js";
2
2
  import { E as s } from "../chunks/common-types-DhqlRVrq.js";
3
- import { C as m, D as t } from "../chunks/dashboard-summary-settings-dialog-BxEopSPW.js";
3
+ import { C as m, D as t } from "../chunks/dashboard-summary-settings-dialog-95pmx2I6.js";
4
4
  export {
5
5
  m as CalendarPreferencesDialog,
6
6
  t as DashboardSummarySettingsDialog,
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.215",
8
+ "version": "0.1.216",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",
@@ -1 +0,0 @@
1
- "use strict";const o=require("react"),N=n=>JSON.stringify(n,(r,e)=>!e||typeof e!="object"||Array.isArray(e)?e:Object.keys(e).sort().reduce((t,i)=>(t[i]=e[i],t),{}));function p(n,r,e=300,t=1e3,i){const[z,a]=o.useState(!1),[C,l]=o.useState(!1),m=o.useRef(null),u=o.useRef(0),D=o.useRef(n),k=o.useRef(r),f=i||N;o.useEffect(()=>{u.current+=1;const y=u.current,T=D.current!==n,I=k.current!==r;if(D.current=n,k.current=r,r===null){const s=window.setTimeout(()=>{y===u.current&&(a(!1),l(!1))},0);return()=>clearTimeout(s)}if(I&&!T){const s=window.setTimeout(()=>{if(y===u.current){const c=f(n),d=f(r);a(c!==d),l(!1)}},0);return()=>clearTimeout(s)}const g=T?window.setTimeout(()=>{y===u.current&&l(!0)},0):null,h=setTimeout(()=>{const s=window.requestIdleCallback||(c=>window.setTimeout(()=>c({didTimeout:!1,timeRemaining:()=>50}),1));m.current=s(c=>{if(c.timeRemaining()>0||c.didTimeout){if(y!==u.current)return;const d=f(n),A=f(r);a(d!==A),l(!1)}},{timeout:t})},e);return()=>{g!==null&&clearTimeout(g),clearTimeout(h),m.current!==null&&((window.cancelIdleCallback||window.clearTimeout)(m.current),m.current=null)}},[n,r,e,t,f]);const R=o.useCallback(()=>{a(!1),l(!1)},[]);return{isDirty:r===null?!1:z,isDirtyPending:r===null?!1:C,resetDirty:R}}const L=["i","x","y","w","h","minW","minH","maxW","maxH","static","isResizable","isDraggable"];function O(n,r,e){n[r]=e}function P(n){const r={};for(const e of L){const t=n[e];t!==void 0&&((e==="isResizable"||e==="isDraggable")&&t===!0||O(r,e,t))}return r}function b(n){return n?n.map(P).sort((r,e)=>{const t=String(r.i??""),i=String(e.i??"");return t!==i?t.localeCompare(i):Number(r.y??0)-Number(e.y??0)||Number(r.x??0)-Number(e.x??0)||Number(r.h??0)-Number(e.h??0)||Number(r.w??0)-Number(e.w??0)}):[]}function w(n){if(!n)return;const r={};for(const e of Object.keys(n).sort()){const t=n[e];t&&(r[e]=b(t))}return r}function j(n){var r;return n?{...n,sheets:(r=n.sheets)==null?void 0:r.map(e=>{if(!e)return e;const t={...e};return e.layout&&(t.layout=b(e.layout)),e.layouts&&(t.layouts=w(e.layouts)),t})}:null}function x(n){return JSON.stringify(n??null,function(r,e){return r==="layout"&&Array.isArray(e)?b(e):r==="layouts"&&e&&typeof e=="object"&&!Array.isArray(e)?w(e):!e||typeof e!="object"||Array.isArray(e)?e:Object.keys(e).sort().reduce((t,i)=>(t[i]=e[i],t),{})})}exports.normalizeDashboardForDirtyCheck=j;exports.serializeDashboardForDirtyCheck=x;exports.useDebouncedDirtyCheck=p;
@@ -1,119 +0,0 @@
1
- import { useState as D, useRef as y, useEffect as h, useCallback as x } from "react";
2
- const L = (n) => JSON.stringify(n, (e, r) => !r || typeof r != "object" || Array.isArray(r) ? r : Object.keys(r).sort().reduce((t, i) => (t[i] = r[i], t), {}));
3
- function F(n, e, r = 300, t = 1e3, i) {
4
- const [C, f] = D(!1), [I, c] = D(!1), a = y(null), o = y(0), T = y(n), g = y(e), l = i || L;
5
- h(() => {
6
- o.current += 1;
7
- const m = o.current, w = T.current !== n, N = g.current !== e;
8
- if (T.current = n, g.current = e, e === null) {
9
- const u = window.setTimeout(() => {
10
- m === o.current && (f(!1), c(!1));
11
- }, 0);
12
- return () => clearTimeout(u);
13
- }
14
- if (N && !w) {
15
- const u = window.setTimeout(() => {
16
- if (m === o.current) {
17
- const s = l(n), d = l(e);
18
- f(s !== d), c(!1);
19
- }
20
- }, 0);
21
- return () => clearTimeout(u);
22
- }
23
- const k = w ? window.setTimeout(() => {
24
- m === o.current && c(!0);
25
- }, 0) : null, R = setTimeout(() => {
26
- const u = window.requestIdleCallback || ((s) => window.setTimeout(
27
- () => s({
28
- didTimeout: !1,
29
- timeRemaining: () => 50
30
- }),
31
- 1
32
- ));
33
- a.current = u(
34
- (s) => {
35
- if (s.timeRemaining() > 0 || s.didTimeout) {
36
- if (m !== o.current) return;
37
- const d = l(n), p = l(e);
38
- f(d !== p), c(!1);
39
- }
40
- },
41
- { timeout: t }
42
- );
43
- }, r);
44
- return () => {
45
- k !== null && clearTimeout(k), clearTimeout(R), a.current !== null && ((window.cancelIdleCallback || window.clearTimeout)(a.current), a.current = null);
46
- };
47
- }, [n, e, r, t, l]);
48
- const A = x(() => {
49
- f(!1), c(!1);
50
- }, []);
51
- return {
52
- isDirty: e === null ? !1 : C,
53
- isDirtyPending: e === null ? !1 : I,
54
- resetDirty: A
55
- };
56
- }
57
- const O = [
58
- "i",
59
- "x",
60
- "y",
61
- "w",
62
- "h",
63
- "minW",
64
- "minH",
65
- "maxW",
66
- "maxH",
67
- "static",
68
- "isResizable",
69
- "isDraggable"
70
- ];
71
- function P(n, e, r) {
72
- n[e] = r;
73
- }
74
- function j(n) {
75
- const e = {};
76
- for (const r of O) {
77
- const t = n[r];
78
- t !== void 0 && ((r === "isResizable" || r === "isDraggable") && t === !0 || P(e, r, t));
79
- }
80
- return e;
81
- }
82
- function b(n) {
83
- return n ? n.map(j).sort((e, r) => {
84
- const t = String(e.i ?? ""), i = String(r.i ?? "");
85
- return t !== i ? t.localeCompare(i) : Number(e.y ?? 0) - Number(r.y ?? 0) || Number(e.x ?? 0) - Number(r.x ?? 0) || Number(e.h ?? 0) - Number(r.h ?? 0) || Number(e.w ?? 0) - Number(r.w ?? 0);
86
- }) : [];
87
- }
88
- function z(n) {
89
- if (!n) return;
90
- const e = {};
91
- for (const r of Object.keys(n).sort()) {
92
- const t = n[r];
93
- t && (e[r] = b(t));
94
- }
95
- return e;
96
- }
97
- function S(n) {
98
- var e;
99
- return n ? {
100
- ...n,
101
- sheets: (e = n.sheets) == null ? void 0 : e.map((r) => {
102
- if (!r) return r;
103
- const t = {
104
- ...r
105
- };
106
- return r.layout && (t.layout = b(r.layout)), r.layouts && (t.layouts = z(r.layouts)), t;
107
- })
108
- } : null;
109
- }
110
- function _(n) {
111
- return JSON.stringify(n ?? null, function(e, r) {
112
- return e === "layout" && Array.isArray(r) ? b(r) : e === "layouts" && r && typeof r == "object" && !Array.isArray(r) ? z(r) : !r || typeof r != "object" || Array.isArray(r) ? r : Object.keys(r).sort().reduce((t, i) => (t[i] = r[i], t), {});
113
- });
114
- }
115
- export {
116
- S as n,
117
- _ as s,
118
- F as u
119
- };