react-semaphor 0.1.129 → 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.
- package/dist/chunks/{dashboard-controls-CdYJPicU.js → dashboard-controls-CyXjMFyG.js} +3 -3
- package/dist/chunks/{dashboard-controls-D9rqbD5g.js → dashboard-controls-D0NNMMTV.js} +1 -1
- package/dist/chunks/{dashboard-export-dialog-BjqND5hL.js → dashboard-export-dialog-74K44GrY.js} +1 -1
- package/dist/chunks/{dashboard-export-dialog-DNF_PQZb.js → dashboard-export-dialog-QHSc2H4A.js} +3 -3
- package/dist/chunks/{dashboard-json-Dtshd-QS.js → dashboard-json-B1EghOQb.js} +1 -1
- package/dist/chunks/{dashboard-json-xVrkPU1h.js → dashboard-json-CBKxJ8vr.js} +1 -1
- package/dist/chunks/edit-dashboard-visual-BbJWSwV8.js +195 -0
- package/dist/chunks/{edit-dashboard-visual-VEw_9V-L.js → edit-dashboard-visual-hxtJTX_r.js} +1506 -1430
- package/dist/chunks/{editor-action-buttons-C3KskLE0.js → editor-action-buttons-C-kNSpbT.js} +1 -1
- package/dist/chunks/{editor-action-buttons-BFF_pszh.js → editor-action-buttons-DVUG-IfI.js} +2 -2
- package/dist/chunks/{index-vRQsO2Ki.js → index-BwqkWrot.js} +5177 -5152
- package/dist/chunks/{index-Df1tIEqs.js → index-Dv8xdR3_.js} +68 -68
- package/dist/chunks/{resource-management-panel-C2Ee-LoN.js → resource-management-panel-BZsjvW6g.js} +1 -1
- package/dist/chunks/{resource-management-panel-DBZxxjm6.js → resource-management-panel-DzZ_mzro.js} +2 -2
- package/dist/chunks/{use-visual-utils-Cdg5yE9F.js → use-visual-utils-BWlOHrm7.js} +1 -1
- package/dist/chunks/{use-visual-utils-BMr6v4np.js → use-visual-utils-DtS7MAqv.js} +1 -1
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +4 -4
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +1 -1
- package/dist/types/dashboard.d.ts +17 -0
- package/dist/types/main.d.ts +17 -0
- package/dist/types/surfboard.d.ts +17 -0
- package/dist/types/types.d.ts +17 -0
- package/package.json +1 -1
- package/dist/chunks/edit-dashboard-visual-YSsXOgAP.js +0 -195
package/dist/chunks/{resource-management-panel-C2Ee-LoN.js → resource-management-panel-BZsjvW6g.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-
|
|
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.
|
package/dist/chunks/{resource-management-panel-DBZxxjm6.js → resource-management-panel-DzZ_mzro.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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");
|
package/dist/dashboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
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;
|
package/dist/dashboard/index.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
package/dist/surfboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
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;
|
package/dist/surfboard/index.js
CHANGED
|
@@ -1247,6 +1247,7 @@ export declare type TCardPreferences = {
|
|
|
1247
1247
|
bulletConfig?: TBulletConfig;
|
|
1248
1248
|
heatmapConfig?: THeatmapConfig;
|
|
1249
1249
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1250
|
+
funnelConfig?: TFunnelConfig;
|
|
1250
1251
|
tablePrefs?: TablePreferences;
|
|
1251
1252
|
allowDownload?: boolean;
|
|
1252
1253
|
customVisualCode?: string;
|
|
@@ -1487,6 +1488,22 @@ export declare type TFrame = {
|
|
|
1487
1488
|
activeCardId: string;
|
|
1488
1489
|
};
|
|
1489
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
|
+
|
|
1490
1507
|
export declare type THeatmapConfig = {
|
|
1491
1508
|
colorMode?: 'continuous' | 'stepped';
|
|
1492
1509
|
steps?: number;
|
package/dist/types/main.d.ts
CHANGED
|
@@ -2180,6 +2180,7 @@ export declare type TCardPreferences = {
|
|
|
2180
2180
|
bulletConfig?: TBulletConfig;
|
|
2181
2181
|
heatmapConfig?: THeatmapConfig;
|
|
2182
2182
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
2183
|
+
funnelConfig?: TFunnelConfig;
|
|
2183
2184
|
tablePrefs?: TablePreferences;
|
|
2184
2185
|
allowDownload?: boolean;
|
|
2185
2186
|
customVisualCode?: string;
|
|
@@ -2422,6 +2423,22 @@ export declare type TFrame = {
|
|
|
2422
2423
|
activeCardId: string;
|
|
2423
2424
|
};
|
|
2424
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
|
+
|
|
2425
2442
|
export declare type THeatmapConfig = {
|
|
2426
2443
|
colorMode?: 'continuous' | 'stepped';
|
|
2427
2444
|
steps?: number;
|
|
@@ -1252,6 +1252,7 @@ export declare type TCardPreferences = {
|
|
|
1252
1252
|
bulletConfig?: TBulletConfig;
|
|
1253
1253
|
heatmapConfig?: THeatmapConfig;
|
|
1254
1254
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1255
|
+
funnelConfig?: TFunnelConfig;
|
|
1255
1256
|
tablePrefs?: TablePreferences;
|
|
1256
1257
|
allowDownload?: boolean;
|
|
1257
1258
|
customVisualCode?: string;
|
|
@@ -1492,6 +1493,22 @@ export declare type TFrame = {
|
|
|
1492
1493
|
activeCardId: string;
|
|
1493
1494
|
};
|
|
1494
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
|
+
|
|
1495
1512
|
export declare type THeatmapConfig = {
|
|
1496
1513
|
colorMode?: 'continuous' | 'stepped';
|
|
1497
1514
|
steps?: number;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1244,6 +1244,7 @@ export declare type TCardPreferences = {
|
|
|
1244
1244
|
bulletConfig?: TBulletConfig;
|
|
1245
1245
|
heatmapConfig?: THeatmapConfig;
|
|
1246
1246
|
bubbleScatterConfig?: TBubbleScatterConfig;
|
|
1247
|
+
funnelConfig?: TFunnelConfig;
|
|
1247
1248
|
tablePrefs?: TablePreferences;
|
|
1248
1249
|
allowDownload?: boolean;
|
|
1249
1250
|
customVisualCode?: string;
|
|
@@ -1484,6 +1485,22 @@ export declare type TFrame = {
|
|
|
1484
1485
|
activeCardId: string;
|
|
1485
1486
|
};
|
|
1486
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
|
+
|
|
1487
1504
|
export declare type THeatmapConfig = {
|
|
1488
1505
|
colorMode?: 'continuous' | 'stepped';
|
|
1489
1506
|
steps?: number;
|