react-semaphor 0.1.128 → 0.1.130

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 (28) hide show
  1. package/dist/chunks/{dashboard-controls-I6kqudDF.js → dashboard-controls-CyXjMFyG.js} +3 -3
  2. package/dist/chunks/{dashboard-controls-Dd27T34x.js → dashboard-controls-D0NNMMTV.js} +1 -1
  3. package/dist/chunks/{dashboard-export-dialog-CiZbDQ5t.js → dashboard-export-dialog-74K44GrY.js} +1 -1
  4. package/dist/chunks/{dashboard-export-dialog-DEOlAtvs.js → dashboard-export-dialog-QHSc2H4A.js} +3 -3
  5. package/dist/chunks/{dashboard-json-A6ShtMJP.js → dashboard-json-B1EghOQb.js} +1 -1
  6. package/dist/chunks/{dashboard-json-D_muUlA0.js → dashboard-json-CBKxJ8vr.js} +1 -1
  7. package/dist/chunks/edit-dashboard-visual-BbJWSwV8.js +195 -0
  8. package/dist/chunks/{edit-dashboard-visual-KhJjpeit.js → edit-dashboard-visual-hxtJTX_r.js} +1506 -1430
  9. package/dist/chunks/{editor-action-buttons-cJ_lq4jv.js → editor-action-buttons-C-kNSpbT.js} +1 -1
  10. package/dist/chunks/{editor-action-buttons-umPHWm3K.js → editor-action-buttons-DVUG-IfI.js} +2 -2
  11. package/dist/chunks/{index-Bko2LZ3Y.js → index-BwqkWrot.js} +20867 -20658
  12. package/dist/chunks/{index-CM_yfKlN.js → index-Dv8xdR3_.js} +219 -219
  13. package/dist/chunks/{resource-management-panel-DvgyBS2t.js → resource-management-panel-BZsjvW6g.js} +1 -1
  14. package/dist/chunks/{resource-management-panel-DAdIhRme.js → resource-management-panel-DzZ_mzro.js} +2 -2
  15. package/dist/chunks/{use-visual-utils-80E0OR0x.js → use-visual-utils-BWlOHrm7.js} +1 -1
  16. package/dist/chunks/{use-visual-utils-C7QMpNLz.js → use-visual-utils-DtS7MAqv.js} +1 -1
  17. package/dist/dashboard/index.cjs +1 -1
  18. package/dist/dashboard/index.js +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/surfboard/index.cjs +1 -1
  22. package/dist/surfboard/index.js +1 -1
  23. package/dist/types/dashboard.d.ts +26 -0
  24. package/dist/types/main.d.ts +26 -0
  25. package/dist/types/surfboard.d.ts +26 -0
  26. package/dist/types/types.d.ts +26 -0
  27. package/package.json +1 -1
  28. package/dist/chunks/edit-dashboard-visual-BgRPk31F.js +0 -195
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-CM_yfKlN.js"),m=require("react"),re=require("./use-visual-utils-80E0OR0x.js"),ue=require("./use-click-outside-B9T3lmcw.js");/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-Dv8xdR3_.js"),m=require("react"),re=require("./use-visual-utils-BWlOHrm7.js"),ue=require("./use-click-outside-B9T3lmcw.js");/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as a, Fragment as me } from "react/jsx-runtime";
2
- import { b as Ke, u as de, f as qe, an as ne, b4 as We, b5 as Ye, c as ee, b6 as Qe, aF as Xe, aG as Ze, B as J, aH as $e, aI as ke, aJ as Y, b7 as ce, L as ie, b8 as et, b9 as tt, ba as st, bb as Ne, bc as pe, bd as at, be as nt, I as it, bf as we, bg as re, bh as Ce, bi as ve, bj as rt, J as ye, R as Se, bk as Ve, aN as Ee, aO as Le, aP as Ae, aR as Te, aS as Oe, aT as Pe, aU as Re, aV as Ie, bl as ot, bm as lt, bn as Ue, bo as je, bp as Me, bq as dt, br as Fe, bs as ct, aD as ae, am as ut, bt as ht, bu as ze, bv as mt, bw as pt, ar as ft, as as gt, at as Dt, au as xt, av as Nt, aw as be, ax as ue, aA as bt, bx as wt, by as Ct, bz as vt, bA as yt } from "./index-Bko2LZ3Y.js";
2
+ import { b as Ke, u as de, f as qe, an as ne, b4 as We, b5 as Ye, c as ee, b6 as Qe, aF as Xe, aG as Ze, B as J, aH as $e, aI as ke, aJ as Y, b7 as ce, L as ie, b8 as et, b9 as tt, ba as st, bb as Ne, bc as pe, bd as at, be as nt, I as it, bf as we, bg as re, bh as Ce, bi as ve, bj as rt, J as ye, R as Se, bk as Ve, aN as Ee, aO as Le, aP as Ae, aR as Te, aS as Oe, aT as Pe, aU as Re, aV as Ie, bl as ot, bm as lt, bn as Ue, bo as je, bp as Me, bq as dt, br as Fe, bs as ct, aD as ae, am as ut, bt as ht, bu as ze, bv as mt, bw as pt, ar as ft, as as gt, at as Dt, au as xt, av as Nt, aw as be, ax as ue, aA as bt, bx as wt, by as Ct, bz as vt, bA as yt } from "./index-BwqkWrot.js";
3
3
  import St, { useState as g, useEffect as he } from "react";
4
- import { a as Be } from "./use-visual-utils-C7QMpNLz.js";
4
+ import { a as Be } from "./use-visual-utils-DtS7MAqv.js";
5
5
  import { u as Vt } from "./use-click-outside-CMeO_QFI.js";
6
6
  /**
7
7
  * @license lucide-react v0.453.0 - ISC
@@ -1 +1 @@
1
- "use strict";const o=require("./index-CM_yfKlN.js"),b=require("react");function _(e){const a=e.toUpperCase().indexOf("WHERE"),r=e.toUpperCase().indexOf("GROUP BY"),t=e.toUpperCase().indexOf("LIMIT"),d=e.toUpperCase().indexOf("ORDER BY");let c=e.length;if(d!==-1&&(c=d),t!==-1&&t<c&&(c=t),a!==-1){const n=e.substring(0,a),s=e.substring(a);return`${n} {{ filters | where }} AND ${s.substring(6)}`}else if(r!==-1){const n=e.substring(0,r),s=e.substring(r);return`${n} {{ filters | where }} ${s}`}else{const n=e.substring(0,c),s=e.substring(c);return console.log("beforeClause",n),console.log("afterClause",s),s?`${n} {{ filters | where }} ${s}`:`${n.replace(/;$/,"")} {{ filters | where }}`}}function B(e){const[a,r]=b.useState(null),[t,d]=b.useState(null),c=o.useEnsureReactGlobals();return b.useEffect(()=>{if(!e||e.trim()===""){r(null),d(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 m=await import(l);if(typeof m.useChartStore!="function")throw new Error("useChartStore is not a function");r(()=>m.useChartStore),d(null)}catch(s){const l=s instanceof Error?s.message:"Unknown error";console.error("Failed to load remote chart store:",l),d(l),r(null)}})()},[e,c]),a}function H(e,a){if(e.length===0)return"";if(a){const r=e.find(t=>t.id===a);if(r){const t=r.tabTitle;if(t=="All__Header")return e[0].id;if(t&&t.endsWith("__Header")){const c=t.split("__")[0],n=e.find(s=>s.tabTitle===c);return n?n.id:e[0].id}return a}}return e[0].id}async function j(e,a,r,t){if(!a||!r)throw new Error("Missing auth token or visual ID");const d=["resource-by-id","visual",r],c=t.getQueryData(d);if(c)return console.log("Using cached visual data for:",r),{data:c,fromCache:!0};console.log("Fetching visual data from network for:",r);const n=o.ue.loading("Loading visual...",{position:"top-center"});try{const s=await fetch(`${e}/management/v1/visuals/${r}`,{headers:{Authorization:`Bearer ${a}`}});if(!s.ok)throw new Error("Failed to load visual");const l=await s.json();return t.setQueryData(d,l),o.ue.dismiss(n),{data:l,fromCache:!1}}catch(s){throw o.ue.dismiss(n),s}}function T(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function Q(e,a){var c,n;const r=(e==null?void 0:e.frameObject)??((c=e==null?void 0:e.visual)==null?void 0:c.frameObject);if(!r)return!1;const t=T(r);if(!(t!=null&&t.cards)||t.cards.length===0)return!1;const d=(n=t.cards)==null?void 0:n.find(s=>s.id===t.activeCardId);return d?(o.setupEditorWithCard({...a,frame:t,card:d,visualId:(e==null?void 0:e.id)||t.visualId}),!0):!1}function G(){var g;const{setCardSql:e}=o.useEditorActions(),a=o.useEditorStore(i=>i.frame),r=o.useEditorStore(i=>i.card),t=B(((g=r.customCardPreferences)==null?void 0:g.url)||""),d=o.useEditorStore(i=>i.selectedSchemaName),c=o.useEditorStore(i=>i.selectedDatamodelId),n=o.useEditorStore(i=>i.selectedDatabaseName),s=o.useEditorStore(i=>i.selectedTableName),l=o.useEditorStore(i=>i.selectedConnectionId),m=o.useEditorStore(i=>i.isShowingVisual),f=r.sql;return{getUpdatedFrame:b.useCallback(()=>{var E;let i=f;f&&!f.includes("{{")&&(i=_(f),e(i));const C=(E=t==null?void 0:t.getState())==null?void 0:E.settings,U={...r,dataSource:r.dataSource||{mode:"directSource"},lastSelectedSchema:d,lastSelectedDatamodelId:c,lastSelectedDatabase:n,lastSelectedTable:s,connectionId:l,sql:i,customCfg:m?r.customCfg:null,preferences:r.preferences,...C&&{customCardPreferences:{...r.customCardPreferences,settings:C}}},w=a.cards.map(S=>S.id===r.id?U:S);return{...a,cards:w,activeCardId:H(w,a.activeCardId)}},[r,a,m,d,c,n,s,l,e,t,f])}}function z(){const{authToken:e,tokenProps:a}=o.useSemaphorContext(),r=o.useQueryClient(),t=o.useSelectedVisual(),{selectVisual:d}=o.useManagementActions(),{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E}=o.useEditorActions(),{setIsDashboardEditing:S,setIsVisualEditing:$,setSelectedFrameId:v,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=o.useDashboardActions(),I=o.useDashboardStore(u=>u.selectedSheetId),D=o.useDashboardStore(u=>u.selectedFrameId),O=o.useDashboardStore(u=>u.dashboard),x=o.useDashboardStore(u=>u.filterValues),y=o.useVisualById((t==null?void 0:t.id)||"",{enabled:!!(t!=null&&t.id)&&!!(e!=null&&e.accessToken)}),M=b.useCallback(async u=>{try{d(u),A();const{data:p,fromCache:h}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r);if(!Q(p,{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E,setIsDashboardEditing:S,setIsVisualEditing:$,dashboard:O,selectedSheetId:I,selectedFrameId:D,filterValues:x}))throw new Error("Failed to setup editor with visual data");return{success:!0,fromCache:h}}catch(p){return console.error("Error editing visual:",p),{success:!1,error:"Failed to load visual for editing"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,c,n,S,$,s,l,m,f,V,g,i,C,U,w,E,A,O,I,D,x]),k=b.useCallback(async u=>{var p;try{if(d(u),!I)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:h,fromCache:W}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r),L=(h==null?void 0:h.frameObject)??((p=h==null?void 0:h.visual)==null?void 0:p.frameObject);if(!L)return{success:!1,error:"Visual has no frame data"};const F=T(L);if(!(F!=null&&F.cards)||F.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...o.cloneFrameWithNewIds(F),visualId:u.id};return N(I,P,"end"),S(!0),v(P.id),R(!1),{success:!0,fromCache:W}}catch(h){return console.error("Error adding visual:",h),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,I,N,S,v,R]);return{visual:y.data,isLoading:y.isLoading,isError:y.isError,error:y.error,handleEditLibraryVisual:M,handleAddLibraryVisual:k,getUpdatedFrame:G().getUpdatedFrame,refetch:y.refetch}}exports.useRemoteChartStore=B;exports.useVisualUtils=z;
1
+ "use strict";const o=require("./index-Dv8xdR3_.js"),b=require("react");function _(e){const a=e.toUpperCase().indexOf("WHERE"),r=e.toUpperCase().indexOf("GROUP BY"),t=e.toUpperCase().indexOf("LIMIT"),d=e.toUpperCase().indexOf("ORDER BY");let c=e.length;if(d!==-1&&(c=d),t!==-1&&t<c&&(c=t),a!==-1){const n=e.substring(0,a),s=e.substring(a);return`${n} {{ filters | where }} AND ${s.substring(6)}`}else if(r!==-1){const n=e.substring(0,r),s=e.substring(r);return`${n} {{ filters | where }} ${s}`}else{const n=e.substring(0,c),s=e.substring(c);return console.log("beforeClause",n),console.log("afterClause",s),s?`${n} {{ filters | where }} ${s}`:`${n.replace(/;$/,"")} {{ filters | where }}`}}function B(e){const[a,r]=b.useState(null),[t,d]=b.useState(null),c=o.useEnsureReactGlobals();return b.useEffect(()=>{if(!e||e.trim()===""){r(null),d(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 m=await import(l);if(typeof m.useChartStore!="function")throw new Error("useChartStore is not a function");r(()=>m.useChartStore),d(null)}catch(s){const l=s instanceof Error?s.message:"Unknown error";console.error("Failed to load remote chart store:",l),d(l),r(null)}})()},[e,c]),a}function H(e,a){if(e.length===0)return"";if(a){const r=e.find(t=>t.id===a);if(r){const t=r.tabTitle;if(t=="All__Header")return e[0].id;if(t&&t.endsWith("__Header")){const c=t.split("__")[0],n=e.find(s=>s.tabTitle===c);return n?n.id:e[0].id}return a}}return e[0].id}async function j(e,a,r,t){if(!a||!r)throw new Error("Missing auth token or visual ID");const d=["resource-by-id","visual",r],c=t.getQueryData(d);if(c)return console.log("Using cached visual data for:",r),{data:c,fromCache:!0};console.log("Fetching visual data from network for:",r);const n=o.ue.loading("Loading visual...",{position:"top-center"});try{const s=await fetch(`${e}/management/v1/visuals/${r}`,{headers:{Authorization:`Bearer ${a}`}});if(!s.ok)throw new Error("Failed to load visual");const l=await s.json();return t.setQueryData(d,l),o.ue.dismiss(n),{data:l,fromCache:!1}}catch(s){throw o.ue.dismiss(n),s}}function T(e){if(typeof e=="string")return JSON.parse(e);if(typeof e=="object")return e;throw new Error("Invalid frame object format")}function Q(e,a){var c,n;const r=(e==null?void 0:e.frameObject)??((c=e==null?void 0:e.visual)==null?void 0:c.frameObject);if(!r)return!1;const t=T(r);if(!(t!=null&&t.cards)||t.cards.length===0)return!1;const d=(n=t.cards)==null?void 0:n.find(s=>s.id===t.activeCardId);return d?(o.setupEditorWithCard({...a,frame:t,card:d,visualId:(e==null?void 0:e.id)||t.visualId}),!0):!1}function G(){var g;const{setCardSql:e}=o.useEditorActions(),a=o.useEditorStore(i=>i.frame),r=o.useEditorStore(i=>i.card),t=B(((g=r.customCardPreferences)==null?void 0:g.url)||""),d=o.useEditorStore(i=>i.selectedSchemaName),c=o.useEditorStore(i=>i.selectedDatamodelId),n=o.useEditorStore(i=>i.selectedDatabaseName),s=o.useEditorStore(i=>i.selectedTableName),l=o.useEditorStore(i=>i.selectedConnectionId),m=o.useEditorStore(i=>i.isShowingVisual),f=r.sql;return{getUpdatedFrame:b.useCallback(()=>{var E;let i=f;f&&!f.includes("{{")&&(i=_(f),e(i));const C=(E=t==null?void 0:t.getState())==null?void 0:E.settings,U={...r,dataSource:r.dataSource||{mode:"directSource"},lastSelectedSchema:d,lastSelectedDatamodelId:c,lastSelectedDatabase:n,lastSelectedTable:s,connectionId:l,sql:i,customCfg:m?r.customCfg:null,preferences:r.preferences,...C&&{customCardPreferences:{...r.customCardPreferences,settings:C}}},w=a.cards.map(S=>S.id===r.id?U:S);return{...a,cards:w,activeCardId:H(w,a.activeCardId)}},[r,a,m,d,c,n,s,l,e,t,f])}}function z(){const{authToken:e,tokenProps:a}=o.useSemaphorContext(),r=o.useQueryClient(),t=o.useSelectedVisual(),{selectVisual:d}=o.useManagementActions(),{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E}=o.useEditorActions(),{setIsDashboardEditing:S,setIsVisualEditing:$,setSelectedFrameId:v,clearSelectedFrameId:A,addFrame:N,setIsDashboardPanelOpen:R}=o.useDashboardActions(),I=o.useDashboardStore(u=>u.selectedSheetId),D=o.useDashboardStore(u=>u.selectedFrameId),O=o.useDashboardStore(u=>u.dashboard),x=o.useDashboardStore(u=>u.filterValues),y=o.useVisualById((t==null?void 0:t.id)||"",{enabled:!!(t!=null&&t.id)&&!!(e!=null&&e.accessToken)}),M=b.useCallback(async u=>{try{d(u),A();const{data:p,fromCache:h}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r);if(!Q(p,{setFrame:c,setCard:n,setIsDevMode:s,setActiveTabCardId:l,updateDataSource:m,setQueryResultColumns:f,setSelectedConnectionId:V,setSelectedDatabaseName:g,setSelectedSchemaName:i,setSelectedTableName:C,setSelectedDatamodelId:U,setFilterValues:w,setApplyFilters:E,setIsDashboardEditing:S,setIsVisualEditing:$,dashboard:O,selectedSheetId:I,selectedFrameId:D,filterValues:x}))throw new Error("Failed to setup editor with visual data");return{success:!0,fromCache:h}}catch(p){return console.error("Error editing visual:",p),{success:!1,error:"Failed to load visual for editing"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,c,n,S,$,s,l,m,f,V,g,i,C,U,w,E,A,O,I,D,x]),k=b.useCallback(async u=>{var p;try{if(d(u),!I)return{success:!1,error:"No sheet selected. Please select a sheet first."};const{data:h,fromCache:W}=await j(a.apiServiceUrl,(e==null?void 0:e.accessToken)||"",u.id,r),L=(h==null?void 0:h.frameObject)??((p=h==null?void 0:h.visual)==null?void 0:p.frameObject);if(!L)return{success:!1,error:"Visual has no frame data"};const F=T(L);if(!(F!=null&&F.cards)||F.cards.length===0)return{success:!1,error:"Visual frame is malformed"};const P={...o.cloneFrameWithNewIds(F),visualId:u.id};return N(I,P,"end"),S(!0),v(P.id),R(!1),{success:!0,fromCache:W}}catch(h){return console.error("Error adding visual:",h),{success:!1,error:"Failed to add visual to dashboard"}}},[e==null?void 0:e.accessToken,a.apiServiceUrl,r,d,I,N,S,v,R]);return{visual:y.data,isLoading:y.isLoading,isError:y.isError,error:y.error,handleEditLibraryVisual:M,handleAddLibraryVisual:k,getUpdatedFrame:G().getUpdatedFrame,refetch:y.refetch}}exports.useRemoteChartStore=B;exports.useVisualUtils=z;
@@ -1,4 +1,4 @@
1
- import { al as G, am as z, h as Y, i as J, an as K, e as _, g as X, u as U, ao as Z, ap as q, l as v, aq as ee, f as h } from "./index-Bko2LZ3Y.js";
1
+ import { al as G, am as z, h as Y, i as J, an as K, e as _, g as X, u as U, ao as Z, ap as q, l as v, aq as ee, f as h } from "./index-BwqkWrot.js";
2
2
  import { useState as T, useEffect as te, useCallback as V } from "react";
3
3
  function re(e) {
4
4
  const o = e.toUpperCase().indexOf("WHERE"), r = e.toUpperCase().indexOf("GROUP BY"), t = e.toUpperCase().indexOf("LIMIT"), i = e.toUpperCase().indexOf("ORDER BY");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-CM_yfKlN.js"),r=require("../types/index.cjs");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-Dv8xdR3_.js"),r=require("../types/index.cjs");exports.Dashboard=e.Dashboard;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
@@ -1,4 +1,4 @@
1
- import { D as a } from "../chunks/index-Bko2LZ3Y.js";
1
+ import { D as a } from "../chunks/index-BwqkWrot.js";
2
2
  import { EMPTY_SELECTION as e } from "../types/index.js";
3
3
  export {
4
4
  a as Dashboard,
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-CM_yfKlN.js"),S=require("./types/index.cjs"),a=require("react/jsx-runtime"),g=require("react"),j=require("./chunks/resource-management-panel-DvgyBS2t.js"),u=require("./chunks/dashboard-export-dialog-CiZbDQ5t.js");require("react-dom");function P(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const s in r)if(s!=="default"){const i=Object.getOwnPropertyDescriptor(r,s);Object.defineProperty(t,s,i.get?i:{enumerable:!0,get:()=>r[s]})}}return t.default=r,Object.freeze(t)}const C=P(g);/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-Dv8xdR3_.js"),S=require("./types/index.cjs"),a=require("react/jsx-runtime"),g=require("react"),j=require("./chunks/resource-management-panel-BZsjvW6g.js"),u=require("./chunks/dashboard-export-dialog-74K44GrY.js");require("react-dom");function P(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const s in r)if(s!=="default"){const i=Object.getOwnPropertyDescriptor(r,s);Object.defineProperty(t,s,i.get?i:{enumerable:!0,get:()=>r[s]})}}return t.default=r,Object.freeze(t)}const C=P(g);/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { b as S, E as y, F as P, S as w, U as M, m as k, n as A, u as F, o as g, p as L, P as R, q as I, B as V, c as v, r as _, s as U, t as B, v as W, I as j, w as q, x as z, y as H, z as O, C as G } from "./chunks/index-Bko2LZ3Y.js";
2
- import { Y as oa, Z as na, D as ta, M as ia, a1 as la, R as da, H as ca, H as ua, J as ha, a as pa, Q as fa, ak as ma, a8 as Ca, V as va, N as ba, O as Da, a2 as ga, aa as ya, a9 as xa, ad as Ea, ae as Na, a7 as Ta, T as Sa, a6 as Pa, $ as wa, a0 as Ma, _ as ka, ab as Aa, a5 as Fa, a4 as La, a3 as Ra, af as Ia, ac as Va, K as _a, ah as Ua, aj as Ba, ai as Wa, g as ja, W as qa, A as za, e as Ha, ag as Oa, f as Ga, G as Qa } from "./chunks/index-Bko2LZ3Y.js";
1
+ import { b as S, E as y, F as P, S as w, U as M, m as k, n as A, u as F, o as g, p as L, P as R, q as I, B as V, c as v, r as _, s as U, t as B, v as W, I as j, w as q, x as z, y as H, z as O, C as G } from "./chunks/index-BwqkWrot.js";
2
+ import { Y as oa, Z as na, D as ta, M as ia, a1 as la, R as da, H as ca, H as ua, J as ha, a as pa, Q as fa, ak as ma, a8 as Ca, V as va, N as ba, O as Da, a2 as ga, aa as ya, a9 as xa, ad as Ea, ae as Na, a7 as Ta, T as Sa, a6 as Pa, $ as wa, a0 as Ma, _ as ka, ab as Aa, a5 as Fa, a4 as La, a3 as Ra, af as Ia, ac as Va, K as _a, ah as Ua, aj as Ba, ai as Wa, g as ja, W as qa, A as za, e as Ha, ag as Oa, f as Ga, G as Qa } from "./chunks/index-BwqkWrot.js";
3
3
  import { EMPTY_SELECTION as Ya } from "./types/index.js";
4
4
  import { jsx as a, jsxs as l } from "react/jsx-runtime";
5
5
  import * as p from "react";
6
6
  import { useMemo as Q } from "react";
7
- import { ResourceManagementPanel as Ja } from "./chunks/resource-management-panel-DAdIhRme.js";
8
- import { A as Za, D as ae, S as ee, U as se, V as re, u as oe } from "./chunks/dashboard-export-dialog-DEOlAtvs.js";
7
+ import { ResourceManagementPanel as Ja } from "./chunks/resource-management-panel-DzZ_mzro.js";
8
+ import { A as Za, D as ae, S as ee, U as se, V as re, u as oe } from "./chunks/dashboard-export-dialog-QHSc2H4A.js";
9
9
  import "react-dom";
10
10
  /**
11
11
  * @license lucide-react v0.453.0 - ISC
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-CM_yfKlN.js"),r=require("../types/index.cjs");exports.Surfboard=e.DashboardPlus;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-Dv8xdR3_.js"),r=require("../types/index.cjs");exports.Surfboard=e.DashboardPlus;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;
@@ -1,4 +1,4 @@
1
- import { a } from "../chunks/index-Bko2LZ3Y.js";
1
+ import { a } from "../chunks/index-BwqkWrot.js";
2
2
  import { EMPTY_SELECTION as E } from "../types/index.js";
3
3
  export {
4
4
  E as EMPTY_SELECTION,
@@ -271,6 +271,7 @@ declare interface ColumnSettings {
271
271
  timezone?: string;
272
272
  sourceTimezone?: string;
273
273
  };
274
+ linkFormat: LinkFormat;
274
275
  colorRanges: ColorRange_2[];
275
276
  }
276
277
 
@@ -835,6 +836,14 @@ export declare type KPICardProps = {
835
836
 
836
837
  export declare type Level = 'database' | 'schema' | 'table';
837
838
 
839
+ declare interface LinkFormat {
840
+ urlTemplate: string;
841
+ labelType: 'value' | 'static' | 'column';
842
+ staticLabel?: string;
843
+ labelColumn?: string;
844
+ openInNewTab: boolean;
845
+ }
846
+
838
847
  export declare type LoadingProps = {
839
848
  message?: string;
840
849
  };
@@ -1238,6 +1247,7 @@ export declare type TCardPreferences = {
1238
1247
  bulletConfig?: TBulletConfig;
1239
1248
  heatmapConfig?: THeatmapConfig;
1240
1249
  bubbleScatterConfig?: TBubbleScatterConfig;
1250
+ funnelConfig?: TFunnelConfig;
1241
1251
  tablePrefs?: TablePreferences;
1242
1252
  allowDownload?: boolean;
1243
1253
  customVisualCode?: string;
@@ -1478,6 +1488,22 @@ export declare type TFrame = {
1478
1488
  activeCardId: string;
1479
1489
  };
1480
1490
 
1491
+ export declare type TFunnelConfig = {
1492
+ /**
1493
+ * How to calculate percentage in tooltips and data labels.
1494
+ * - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
1495
+ * - 'percentOfFirst': First stage = 100%, others relative to first
1496
+ */
1497
+ percentMode?: TFunnelPercentMode;
1498
+ };
1499
+
1500
+ /**
1501
+ * Tooltip/data label percentage calculation mode for funnel charts.
1502
+ * - 'percentOfTotal': Percentage relative to sum of all values (default)
1503
+ * - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
1504
+ */
1505
+ export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
1506
+
1481
1507
  export declare type THeatmapConfig = {
1482
1508
  colorMode?: 'continuous' | 'stepped';
1483
1509
  steps?: number;
@@ -576,6 +576,7 @@ declare interface ColumnSettings {
576
576
  timezone?: string;
577
577
  sourceTimezone?: string;
578
578
  };
579
+ linkFormat: LinkFormat;
579
580
  colorRanges: ColorRange_2[];
580
581
  }
581
582
 
@@ -1643,6 +1644,14 @@ export declare type KPICardProps = {
1643
1644
 
1644
1645
  export declare type Level = 'database' | 'schema' | 'table';
1645
1646
 
1647
+ declare interface LinkFormat {
1648
+ urlTemplate: string;
1649
+ labelType: 'value' | 'static' | 'column';
1650
+ staticLabel?: string;
1651
+ labelColumn?: string;
1652
+ openInNewTab: boolean;
1653
+ }
1654
+
1646
1655
  export declare type LoadingProps = {
1647
1656
  message?: string;
1648
1657
  };
@@ -2171,6 +2180,7 @@ export declare type TCardPreferences = {
2171
2180
  bulletConfig?: TBulletConfig;
2172
2181
  heatmapConfig?: THeatmapConfig;
2173
2182
  bubbleScatterConfig?: TBubbleScatterConfig;
2183
+ funnelConfig?: TFunnelConfig;
2174
2184
  tablePrefs?: TablePreferences;
2175
2185
  allowDownload?: boolean;
2176
2186
  customVisualCode?: string;
@@ -2413,6 +2423,22 @@ export declare type TFrame = {
2413
2423
  activeCardId: string;
2414
2424
  };
2415
2425
 
2426
+ export declare type TFunnelConfig = {
2427
+ /**
2428
+ * How to calculate percentage in tooltips and data labels.
2429
+ * - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
2430
+ * - 'percentOfFirst': First stage = 100%, others relative to first
2431
+ */
2432
+ percentMode?: TFunnelPercentMode;
2433
+ };
2434
+
2435
+ /**
2436
+ * Tooltip/data label percentage calculation mode for funnel charts.
2437
+ * - 'percentOfTotal': Percentage relative to sum of all values (default)
2438
+ * - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
2439
+ */
2440
+ export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
2441
+
2416
2442
  export declare type THeatmapConfig = {
2417
2443
  colorMode?: 'continuous' | 'stepped';
2418
2444
  steps?: number;
@@ -271,6 +271,7 @@ declare interface ColumnSettings {
271
271
  timezone?: string;
272
272
  sourceTimezone?: string;
273
273
  };
274
+ linkFormat: LinkFormat;
274
275
  colorRanges: ColorRange_2[];
275
276
  }
276
277
 
@@ -838,6 +839,14 @@ export declare type KPICardProps = {
838
839
 
839
840
  export declare type Level = 'database' | 'schema' | 'table';
840
841
 
842
+ declare interface LinkFormat {
843
+ urlTemplate: string;
844
+ labelType: 'value' | 'static' | 'column';
845
+ staticLabel?: string;
846
+ labelColumn?: string;
847
+ openInNewTab: boolean;
848
+ }
849
+
841
850
  export declare type LoadingProps = {
842
851
  message?: string;
843
852
  };
@@ -1243,6 +1252,7 @@ export declare type TCardPreferences = {
1243
1252
  bulletConfig?: TBulletConfig;
1244
1253
  heatmapConfig?: THeatmapConfig;
1245
1254
  bubbleScatterConfig?: TBubbleScatterConfig;
1255
+ funnelConfig?: TFunnelConfig;
1246
1256
  tablePrefs?: TablePreferences;
1247
1257
  allowDownload?: boolean;
1248
1258
  customVisualCode?: string;
@@ -1483,6 +1493,22 @@ export declare type TFrame = {
1483
1493
  activeCardId: string;
1484
1494
  };
1485
1495
 
1496
+ export declare type TFunnelConfig = {
1497
+ /**
1498
+ * How to calculate percentage in tooltips and data labels.
1499
+ * - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
1500
+ * - 'percentOfFirst': First stage = 100%, others relative to first
1501
+ */
1502
+ percentMode?: TFunnelPercentMode;
1503
+ };
1504
+
1505
+ /**
1506
+ * Tooltip/data label percentage calculation mode for funnel charts.
1507
+ * - 'percentOfTotal': Percentage relative to sum of all values (default)
1508
+ * - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
1509
+ */
1510
+ export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
1511
+
1486
1512
  export declare type THeatmapConfig = {
1487
1513
  colorMode?: 'continuous' | 'stepped';
1488
1514
  steps?: number;
@@ -270,6 +270,7 @@ declare interface ColumnSettings {
270
270
  timezone?: string;
271
271
  sourceTimezone?: string;
272
272
  };
273
+ linkFormat: LinkFormat;
273
274
  colorRanges: ColorRange_2[];
274
275
  }
275
276
 
@@ -832,6 +833,14 @@ export declare type KPICardProps = {
832
833
 
833
834
  export declare type Level = 'database' | 'schema' | 'table';
834
835
 
836
+ declare interface LinkFormat {
837
+ urlTemplate: string;
838
+ labelType: 'value' | 'static' | 'column';
839
+ staticLabel?: string;
840
+ labelColumn?: string;
841
+ openInNewTab: boolean;
842
+ }
843
+
835
844
  export declare type LoadingProps = {
836
845
  message?: string;
837
846
  };
@@ -1235,6 +1244,7 @@ export declare type TCardPreferences = {
1235
1244
  bulletConfig?: TBulletConfig;
1236
1245
  heatmapConfig?: THeatmapConfig;
1237
1246
  bubbleScatterConfig?: TBubbleScatterConfig;
1247
+ funnelConfig?: TFunnelConfig;
1238
1248
  tablePrefs?: TablePreferences;
1239
1249
  allowDownload?: boolean;
1240
1250
  customVisualCode?: string;
@@ -1475,6 +1485,22 @@ export declare type TFrame = {
1475
1485
  activeCardId: string;
1476
1486
  };
1477
1487
 
1488
+ export declare type TFunnelConfig = {
1489
+ /**
1490
+ * How to calculate percentage in tooltips and data labels.
1491
+ * - 'percentOfTotal': Each stage shows % of total sum (default/current behavior)
1492
+ * - 'percentOfFirst': First stage = 100%, others relative to first
1493
+ */
1494
+ percentMode?: TFunnelPercentMode;
1495
+ };
1496
+
1497
+ /**
1498
+ * Tooltip/data label percentage calculation mode for funnel charts.
1499
+ * - 'percentOfTotal': Percentage relative to sum of all values (default)
1500
+ * - 'percentOfFirst': Percentage relative to the first stage value (first stage = 100%)
1501
+ */
1502
+ export declare type TFunnelPercentMode = 'percentOfTotal' | 'percentOfFirst';
1503
+
1478
1504
  export declare type THeatmapConfig = {
1479
1505
  colorMode?: 'continuous' | 'stepped';
1480
1506
  steps?: number;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.128",
8
+ "version": "0.1.130",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",