react-semaphor 0.1.325 → 0.1.326

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 (57) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +260 -226
  3. package/dist/brand-studio/index.cjs +2 -2
  4. package/dist/brand-studio/index.js +7 -6
  5. package/dist/chunks/{braces-C7BeIXvM.js → braces-DVaMJoCd.js} +1 -1
  6. package/dist/chunks/{braces-ZjRH2Kl7.js → braces-dHeaioTd.js} +1 -1
  7. package/dist/chunks/{calendar-preferences-dialog-DHhT6Sja.js → calendar-preferences-dialog--2jD-eKu.js} +6 -5
  8. package/dist/chunks/calendar-preferences-dialog-mqU_uOmY.js +1 -0
  9. package/dist/chunks/{chevrons-up-down-CA-XvN1o.js → chevrons-up-down-CLbzBHoI.js} +1 -1
  10. package/dist/chunks/{chevrons-up-down-Cuilz9aY.js → chevrons-up-down-DNQE-uEp.js} +1 -1
  11. package/dist/chunks/{dashboard-briefing-launcher-DZiFMK8I.js → dashboard-briefing-launcher-DguNfFr8.js} +1 -1
  12. package/dist/chunks/{dashboard-briefing-launcher-BzIxRlzW.js → dashboard-briefing-launcher-DsjXUPFq.js} +29 -28
  13. package/dist/chunks/{dashboard-controls-DVwsWny9.js → dashboard-controls-DgNkM1yT.js} +10 -9
  14. package/dist/chunks/{dashboard-controls-BX693lE0.js → dashboard-controls-XCa9PZuU.js} +1 -1
  15. package/dist/chunks/dashboard-json-DiBd65Xf.js +1 -0
  16. package/dist/chunks/{dashboard-json-D15C_I9e.js → dashboard-json-DkA6Bf0Y.js} +7 -6
  17. package/dist/chunks/{edit-dashboard-visual-90_qEgRc.js → edit-dashboard-visual-BC9eOc4U.js} +2 -2
  18. package/dist/chunks/{edit-dashboard-visual-wQyJEcVH.js → edit-dashboard-visual-Q5hW5MXk.js} +11 -9
  19. package/dist/chunks/{index-YTk9Hab2.js → index-B1-46PoR.js} +213 -213
  20. package/dist/chunks/index-BxM99sFL.js +1 -0
  21. package/dist/chunks/index-CuHybtft.js +51 -0
  22. package/dist/chunks/{index-CffvIaZO.js → index-DwfDwtv2.js} +20578 -20474
  23. package/dist/chunks/{palette-CanPG11m.js → palette-DpcvHAiY.js} +1 -1
  24. package/dist/chunks/{palette-D96DOM7E.js → palette-DtmNws9a.js} +1 -1
  25. package/dist/chunks/{resource-management-panel-DlnrD0y-.js → resource-management-panel-CGwWKZOP.js} +1 -1
  26. package/dist/chunks/{resource-management-panel-CLoO2DL3.js → resource-management-panel-D2oAQkKi.js} +6 -5
  27. package/dist/chunks/{save-DxkSzUTZ.js → save-BY7WF62U.js} +1 -1
  28. package/dist/chunks/{save-CqrBQKG6.js → save-Cv_XRb94.js} +1 -1
  29. package/dist/chunks/{switch-BXICAlvS.js → switch-5aQ_jcLH.js} +39 -39
  30. package/dist/chunks/{switch-Deo2Ltmj.js → switch-j3AThLFk.js} +2580 -2628
  31. package/dist/chunks/{use-create-flow-overlay-state-DocFanjO.js → use-create-flow-overlay-state-BQPXP0AM.js} +1 -1
  32. package/dist/chunks/{use-create-flow-overlay-state-DsPoCfMu.js → use-create-flow-overlay-state-CP6GDQAX.js} +29 -28
  33. package/dist/chunks/{use-visual-utils-BdO22fQZ.js → use-visual-utils-CSXU-96k.js} +2 -2
  34. package/dist/chunks/{use-visual-utils-DSbXQQD1.js → use-visual-utils-NpOW5uZ1.js} +1 -1
  35. package/dist/chunks/validators-DJUMR5An.js +2 -0
  36. package/dist/chunks/validators-DvTxl9i0.js +352 -0
  37. package/dist/dashboard/index.cjs +1 -1
  38. package/dist/dashboard/index.js +1 -1
  39. package/dist/dashboard-authoring/index.cjs +3 -3
  40. package/dist/dashboard-authoring/index.js +168 -136
  41. package/dist/data-app-sdk/index.cjs +1 -0
  42. package/dist/data-app-sdk/index.js +512 -0
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.js +141 -140
  45. package/dist/surfboard/index.cjs +1 -1
  46. package/dist/surfboard/index.js +2 -2
  47. package/dist/types/analytics-protocol.d.ts +325 -2
  48. package/dist/types/dashboard-authoring.d.ts +23 -1
  49. package/dist/types/dashboard.d.ts +6 -1
  50. package/dist/types/data-app-sdk.d.ts +378 -0
  51. package/dist/types/main.d.ts +117 -2
  52. package/dist/types/shared.d.ts +1 -0
  53. package/dist/types/surfboard.d.ts +6 -1
  54. package/dist/types/types.d.ts +6 -1
  55. package/package.json +6 -1
  56. package/dist/chunks/calendar-preferences-dialog-BxeROxyq.js +0 -1
  57. package/dist/chunks/dashboard-json-DxNEFM-p.js +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=require("../chunks/index-BxM99sFL.js"),T=require("react/jsx-runtime"),u=require("react"),P=require("../chunks/validators-DJUMR5An.js");function q(t){var e;return{version:1,kind:"metric",id:t.id,label:t.label,source:g(t),metric:t.metric,metrics:t.metrics,dateField:t.dateField?d(t.dateField,"date"):void 0,timeGrain:t.timeGrain,dimensions:(e=t.dimensions)==null?void 0:e.map(n=>d(n,"dimension")),comparison:L(t.comparison),inputs:b(t.inputs),limit:t.limit}}function E(t){if("sort"in t)throw new Error("useSemaphorRecords supports orderBy for a single deterministic sort. Multiple sort clauses are not supported by the analytics protocol yet.");if(!F(t))throw new Error("useSemaphorRecords needs at least one field, dimension, or measure.");const e=V(t.fields,t.dimensions,t.measures);return{version:1,kind:"records",id:t.id,label:t.label,source:g(t),fields:e,measures:t.measures,dateField:t.dateField?d(t.dateField,"date"):void 0,timeGrain:t.timeGrain,orderBy:t.orderBy,inputs:b(t.inputs),limit:t.limit}}function R(t){return{version:1,kind:"inputOptions",id:t.id,label:t.label,source:g(t),field:d(t.field,"dimension"),search:t.search,limit:t.limit}}function w(t){if("toAnalyticsInput"in t){const e=t.toAnalyticsInput();return{inputId:e.inputId,field:e.field}}return{inputId:t.inputId,field:t.field}}function _(t){const e=b(t);return e.length>0?e:void 0}function x(t){return(t||[]).map(j)}function A(t){return x(t).filter(e=>e.isActive)}function O(t){return t.kind==="filter"?{inputId:t.id,kind:t.kind,label:t.label,field:d(t.field,"dimension"),operator:t.operator||"in",source:t.source}:{inputId:t.id,kind:t.kind,label:t.label}}function $(t=[]){return t.map(e=>typeof e=="object"?e:{label:String(e),value:e})}function h(t){return t==null?!1:Array.isArray(t)?t.length>0:typeof t=="string"?t.trim().length>0:!0}function j(t){return"toAnalyticsInput"in t?t.toAnalyticsInput():"kind"in t&&"isActive"in t?t:{...t,kind:"filter",isActive:h(t.value),value:t.value}}function g(t){if("source"in t&&t.source)return t.source;const e=t.datasetName||t.dataset;if(!e)throw new Error("Semaphor data app source needs datasetName or dataset.");return{kind:"semantic",domainId:t.domainId,datasetName:e,datasetId:t.datasetId,connectionId:t.connectionId,label:t.sourceLabel}}function F(t){var e,n,r;return!!((e=t.fields)!=null&&e.length||(n=t.dimensions)!=null&&n.length||(r=t.measures)!=null&&r.length)}function N(t){return!!(t!=null&&t.length)}function V(t,e,n){const r=[],o=new Set,a=i=>{const c=`${i.role||""}:${i.name}`;o.has(c)||(o.add(c),r.push(i))};return N(t)&&t.map(i=>d(i)).forEach(a),e==null||e.map(i=>d(i,"dimension")).forEach(a),n==null||n.map(i=>d(i,"measure")).forEach(a),r}function d(t,e){return typeof t=="string"?e?{name:t,role:e}:{name:t}:{...t,role:t.role||e}}function b(t){return(t||[]).map(w)}function L(t){if(!(!t||t==="none"))return typeof t=="object"?t:t==="same_period_last_year"?{kind:"previous_year"}:{kind:t}}function M(){return{executeMetric:(t,e)=>S(t,e),executeRecords:(t,e)=>S(t,e),executeInputOptions:(t,e)=>S(t,e)}}async function S(t,e){if(!e.token)throw new Error("SemaphorDataAppProvider needs a token to execute queries.");const n=await fetch(Q(e),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify({intent:t,activeInputs:e.activeInputs,resultShape:t.kind})}),r=await z(n);if(!n.ok||r.error)throw new Error(r.error||`Semaphor Data App query failed with status ${n.status}.`);return r}async function z(t){const e=await t.text().catch(()=>"");if(!e.trim())return t.ok?{error:"Semaphor Data App query returned an empty response."}:{};try{return JSON.parse(e)}catch{return t.ok?{error:"Semaphor Data App query returned invalid JSON.",details:e}:{error:U(t,e),details:e}}}function U(t,e){const n=t.statusText?` ${t.statusText}`:"",r=e.replace(/\s+/g," ").trim();return r?`Semaphor Data App query failed with status ${t.status}${n}: ${r.slice(0,240)}`:`Semaphor Data App query failed with status ${t.status}${n}.`}function Q(t){const e=G(t).replace(/\/+$/,"");return e?e.endsWith("/api")?`${e}/v1/data-app/query`:`${e}/api/v1/data-app/query`:"/api/v1/data-app/query"}function G(t){if(t.apiBaseUrl)return t.apiBaseUrl;if(!t.token)return"";try{return K.jwtDecode(t.token).apiServiceUrl||""}catch{return""}}const C=u.createContext({});function J({token:t,apiBaseUrl:e,executor:n,children:r}){const o=u.useMemo(()=>M(),[]),a=n||o,i=u.useMemo(()=>({token:t,apiBaseUrl:e,executor:a}),[e,a,t]);return T.jsx(C.Provider,{value:i,children:r})}function B(){return u.useContext(C)}const I={value:null},H={records:[]},v={options:[]};function W(t){const e=A(t.inputs);try{const n=q(t),r=k(n);return r?{error:r,activeInputs:e,queryKey:l(void 0,e,r),idleData:I}:{intent:n,error:null,activeInputs:e,queryKey:l(n,e),idleData:I}}catch(n){const r=f(n);return{error:r,activeInputs:e,queryKey:l(void 0,e,r),idleData:I}}}function X(t){const e=A(t.inputs),n=H;try{const r=E(t),o=k(r);return o?{error:o,activeInputs:e,queryKey:l(void 0,e,o),idleData:n}:{intent:r,error:null,activeInputs:e,queryKey:l(r,e),idleData:n}}catch(r){const o=f(r);return{error:o,activeInputs:e,queryKey:l(void 0,e,o),idleData:n}}}function Y(t){try{const e=R(t),n=k(e);return n?{error:n,queryKey:l(void 0,void 0,n),idleData:v}:{intent:e,error:null,queryKey:l(e),idleData:v}}catch(e){const n=f(e);return{error:n,queryKey:l(void 0,void 0,n),idleData:v}}}function f(t){return t instanceof Error?t:new Error(String(t))}function k(t){const e=P.validateSemaphorAnalyticsIntent(t);if(e.ok)return null;const n=e.errors.map(r=>r.path?`${r.code} at ${r.path}: ${r.message}`:`${r.code}: ${r.message}`).join("; ");return new Error(`Invalid Semaphor analytics intent. ${n}`)}function l(t,e,n){return JSON.stringify({intent:t,activeInputs:e,error:n==null?void 0:n.message})}function Z(t){const[e,n]=u.useState(t.defaultValue),r=Object.prototype.hasOwnProperty.call(t,"value"),o=r?t.value:e,a=u.useMemo(()=>$(t.options),[t.options]),i=u.useCallback(s=>{var m;(m=t.onValueChange)==null||m.call(t,s),r||n(s)},[r,t]),c=u.useCallback(()=>i(void 0),[i]);return u.useMemo(()=>{const s=O(t);return{id:t.id,kind:t.kind,label:t.label,field:s.field,operator:s.operator,source:s.source,controlRole:t.kind==="control"?t.role:void 0,value:o,options:a,isActive:h(o),setValue:i,clear:c,toAnalyticsInput:()=>({inputId:s.inputId,field:s.field,kind:t.kind,label:t.label,value:o,isActive:h(o),operator:s.operator,source:s.source,controlRole:t.kind==="control"?t.role:void 0})}},[c,a,i,t,o])}function tt(t){const e=u.useMemo(()=>W(t),[t]),n=u.useCallback(a=>{var i;return e.intent?(i=a.executor)==null?void 0:i.executeMetric(e.intent,a):void 0},[e.intent]),r=D(e.queryKey,n,e.idleData,e.activeInputs),o=e.error?e.idleData:r.data;return{id:t.id,intent:e.intent,value:(o==null?void 0:o.value)??null,metrics:o==null?void 0:o.metrics,comparisonValue:o==null?void 0:o.comparisonValue,delta:o==null?void 0:o.delta,deltaPercent:o==null?void 0:o.deltaPercent,records:o==null?void 0:o.records,status:e.error?"error":r.status,isLoading:!e.error&&r.status==="loading",error:e.error||r.error}}function et(t){const e=u.useMemo(()=>X(t),[t]),n=u.useCallback(a=>{var i;return e.intent?(i=a.executor)==null?void 0:i.executeRecords(e.intent,a):void 0},[e.intent]),r=D(e.queryKey,n,e.idleData,e.activeInputs),o=e.error?e.idleData:r.data;return{id:t.id,intent:e.intent,records:(o==null?void 0:o.records)||[],columns:o==null?void 0:o.columns,rowCount:o==null?void 0:o.rowCount,status:e.error?"error":r.status,isLoading:!e.error&&r.status==="loading",error:e.error||r.error}}function rt(t){const e=u.useMemo(()=>Y(t),[t]),n=u.useCallback(a=>{var i;return e.intent?(i=a.executor)==null?void 0:i.executeInputOptions(e.intent,a):void 0},[e.intent]),r=D(e.queryKey,n,e.idleData),o=e.error?e.idleData:r.data;return{id:t.id,intent:e.intent,options:(o==null?void 0:o.options)||[],status:e.error?"error":r.status,isLoading:!e.error&&r.status==="loading",error:e.error||r.error}}function D(t,e,n,r){const o=B(),a=u.useRef(e),i=u.useRef(r),[c,s]=u.useState({status:"idle",data:n,error:null});return a.current=e,i.current=r,u.useEffect(()=>{let m;try{m=a.current({...o,activeInputs:i.current})}catch(p){s({status:"error",data:n,error:f(p)});return}if(!m){s({status:"idle",data:n,error:null});return}let y=!1;return s(p=>({status:"loading",data:p.data,error:null})),m.then(p=>{y||s({status:"success",data:p,error:null})}).catch(p=>{y||s({status:"error",data:n,error:f(p)})}),()=>{y=!0}},[n,t,o]),c}exports.SemaphorDataAppProvider=J;exports.createSemaphorDataAppExecutor=M;exports.hasSemaphorInputValue=h;exports.normalizeSemaphorInputOptions=$;exports.toSemaphorActiveInputSnapshots=A;exports.toSemaphorInputBinding=w;exports.toSemaphorInputBindings=_;exports.toSemaphorInputOptionsIntent=R;exports.toSemaphorInputSnapshots=x;exports.toSemaphorInputSpec=O;exports.toSemaphorMetricIntent=q;exports.toSemaphorRecordsIntent=E;exports.useSemaphorDataAppRuntime=B;exports.useSemaphorInput=Z;exports.useSemaphorInputOptions=rt;exports.useSemaphorMetric=tt;exports.useSemaphorRecords=et;
@@ -0,0 +1,512 @@
1
+ import { j as x } from "../chunks/index-CuHybtft.js";
2
+ import { jsx as $ } from "react/jsx-runtime";
3
+ import { createContext as O, useMemo as f, useContext as K, useState as q, useCallback as p, useRef as E, useEffect as C } from "react";
4
+ import { v as B } from "../chunks/validators-DvTxl9i0.js";
5
+ function T(t) {
6
+ var r;
7
+ return {
8
+ version: 1,
9
+ kind: "metric",
10
+ id: t.id,
11
+ label: t.label,
12
+ source: g(t),
13
+ metric: t.metric,
14
+ metrics: t.metrics,
15
+ dateField: t.dateField ? d(t.dateField, "date") : void 0,
16
+ timeGrain: t.timeGrain,
17
+ dimensions: (r = t.dimensions) == null ? void 0 : r.map((n) => d(n, "dimension")),
18
+ comparison: Q(t.comparison),
19
+ inputs: D(t.inputs),
20
+ limit: t.limit
21
+ };
22
+ }
23
+ function _(t) {
24
+ if ("sort" in t)
25
+ throw new Error(
26
+ "useSemaphorRecords supports orderBy for a single deterministic sort. Multiple sort clauses are not supported by the analytics protocol yet."
27
+ );
28
+ if (!L(t))
29
+ throw new Error(
30
+ "useSemaphorRecords needs at least one field, dimension, or measure."
31
+ );
32
+ const r = z(
33
+ t.fields,
34
+ t.dimensions,
35
+ t.measures
36
+ );
37
+ return {
38
+ version: 1,
39
+ kind: "records",
40
+ id: t.id,
41
+ label: t.label,
42
+ source: g(t),
43
+ fields: r,
44
+ measures: t.measures,
45
+ dateField: t.dateField ? d(t.dateField, "date") : void 0,
46
+ timeGrain: t.timeGrain,
47
+ orderBy: t.orderBy,
48
+ inputs: D(t.inputs),
49
+ limit: t.limit
50
+ };
51
+ }
52
+ function F(t) {
53
+ return {
54
+ version: 1,
55
+ kind: "inputOptions",
56
+ id: t.id,
57
+ label: t.label,
58
+ source: g(t),
59
+ field: d(t.field, "dimension"),
60
+ search: t.search,
61
+ limit: t.limit
62
+ };
63
+ }
64
+ function M(t) {
65
+ if ("toAnalyticsInput" in t) {
66
+ const r = t.toAnalyticsInput();
67
+ return {
68
+ inputId: r.inputId,
69
+ field: r.field
70
+ };
71
+ }
72
+ return {
73
+ inputId: t.inputId,
74
+ field: t.field
75
+ };
76
+ }
77
+ function ut(t) {
78
+ const r = D(t);
79
+ return r.length > 0 ? r : void 0;
80
+ }
81
+ function N(t) {
82
+ return (t || []).map(V);
83
+ }
84
+ function w(t) {
85
+ return N(t).filter((r) => r.isActive);
86
+ }
87
+ function P(t) {
88
+ return t.kind === "filter" ? {
89
+ inputId: t.id,
90
+ kind: t.kind,
91
+ label: t.label,
92
+ field: d(t.field, "dimension"),
93
+ operator: t.operator || "in",
94
+ source: t.source
95
+ } : {
96
+ inputId: t.id,
97
+ kind: t.kind,
98
+ label: t.label
99
+ };
100
+ }
101
+ function j(t = []) {
102
+ return t.map(
103
+ (r) => typeof r == "object" ? r : {
104
+ label: String(r),
105
+ value: r
106
+ }
107
+ );
108
+ }
109
+ function A(t) {
110
+ return t == null ? !1 : Array.isArray(t) ? t.length > 0 : typeof t == "string" ? t.trim().length > 0 : !0;
111
+ }
112
+ function V(t) {
113
+ return "toAnalyticsInput" in t ? t.toAnalyticsInput() : "kind" in t && "isActive" in t ? t : {
114
+ ...t,
115
+ kind: "filter",
116
+ isActive: A(
117
+ t.value
118
+ ),
119
+ value: t.value
120
+ };
121
+ }
122
+ function g(t) {
123
+ if ("source" in t && t.source)
124
+ return t.source;
125
+ const r = t.datasetName || t.dataset;
126
+ if (!r)
127
+ throw new Error("Semaphor data app source needs datasetName or dataset.");
128
+ return {
129
+ kind: "semantic",
130
+ domainId: t.domainId,
131
+ datasetName: r,
132
+ datasetId: t.datasetId,
133
+ connectionId: t.connectionId,
134
+ label: t.sourceLabel
135
+ };
136
+ }
137
+ function L(t) {
138
+ var r, n, e;
139
+ return !!((r = t.fields) != null && r.length || (n = t.dimensions) != null && n.length || (e = t.measures) != null && e.length);
140
+ }
141
+ function U(t) {
142
+ return !!(t != null && t.length);
143
+ }
144
+ function z(t, r, n) {
145
+ const e = [], o = /* @__PURE__ */ new Set(), a = (i) => {
146
+ const l = `${i.role || ""}:${i.name}`;
147
+ o.has(l) || (o.add(l), e.push(i));
148
+ };
149
+ return U(t) && t.map((i) => d(i)).forEach(a), r == null || r.map((i) => d(i, "dimension")).forEach(a), n == null || n.map((i) => d(i, "measure")).forEach(a), e;
150
+ }
151
+ function d(t, r) {
152
+ return typeof t == "string" ? r ? { name: t, role: r } : { name: t } : {
153
+ ...t,
154
+ role: t.role || r
155
+ };
156
+ }
157
+ function D(t) {
158
+ return (t || []).map(M);
159
+ }
160
+ function Q(t) {
161
+ if (!(!t || t === "none"))
162
+ return typeof t == "object" ? t : t === "same_period_last_year" ? { kind: "previous_year" } : { kind: t };
163
+ }
164
+ function G() {
165
+ return {
166
+ executeMetric: (t, r) => v(t, r),
167
+ executeRecords: (t, r) => v(t, r),
168
+ executeInputOptions: (t, r) => v(t, r)
169
+ };
170
+ }
171
+ async function v(t, r) {
172
+ if (!r.token)
173
+ throw new Error("SemaphorDataAppProvider needs a token to execute queries.");
174
+ const n = await fetch(W(r), {
175
+ method: "POST",
176
+ headers: {
177
+ "Content-Type": "application/json",
178
+ Authorization: `Bearer ${r.token}`
179
+ },
180
+ body: JSON.stringify({
181
+ intent: t,
182
+ activeInputs: r.activeInputs,
183
+ resultShape: t.kind
184
+ })
185
+ }), e = await J(n);
186
+ if (!n.ok || e.error)
187
+ throw new Error(
188
+ e.error || `Semaphor Data App query failed with status ${n.status}.`
189
+ );
190
+ return e;
191
+ }
192
+ async function J(t) {
193
+ const r = await t.text().catch(() => "");
194
+ if (!r.trim())
195
+ return t.ok ? {
196
+ error: "Semaphor Data App query returned an empty response."
197
+ } : {};
198
+ try {
199
+ return JSON.parse(r);
200
+ } catch {
201
+ return t.ok ? {
202
+ error: "Semaphor Data App query returned invalid JSON.",
203
+ details: r
204
+ } : {
205
+ error: H(t, r),
206
+ details: r
207
+ };
208
+ }
209
+ }
210
+ function H(t, r) {
211
+ const n = t.statusText ? ` ${t.statusText}` : "", e = r.replace(/\s+/g, " ").trim();
212
+ return e ? `Semaphor Data App query failed with status ${t.status}${n}: ${e.slice(0, 240)}` : `Semaphor Data App query failed with status ${t.status}${n}.`;
213
+ }
214
+ function W(t) {
215
+ const r = X(t).replace(/\/+$/, "");
216
+ return r ? r.endsWith("/api") ? `${r}/v1/data-app/query` : `${r}/api/v1/data-app/query` : "/api/v1/data-app/query";
217
+ }
218
+ function X(t) {
219
+ if (t.apiBaseUrl)
220
+ return t.apiBaseUrl;
221
+ if (!t.token)
222
+ return "";
223
+ try {
224
+ return x(t.token).apiServiceUrl || "";
225
+ } catch {
226
+ return "";
227
+ }
228
+ }
229
+ const R = O({});
230
+ function st({
231
+ token: t,
232
+ apiBaseUrl: r,
233
+ executor: n,
234
+ children: e
235
+ }) {
236
+ const o = f(() => G(), []), a = n || o, i = f(
237
+ () => ({ token: t, apiBaseUrl: r, executor: a }),
238
+ [r, a, t]
239
+ );
240
+ return /* @__PURE__ */ $(R.Provider, { value: i, children: e });
241
+ }
242
+ function Y() {
243
+ return K(R);
244
+ }
245
+ const I = { value: null }, Z = { records: [] }, S = { options: [] };
246
+ function tt(t) {
247
+ const r = w(t.inputs);
248
+ try {
249
+ const n = T(t), e = k(n);
250
+ return e ? {
251
+ error: e,
252
+ activeInputs: r,
253
+ queryKey: s(void 0, r, e),
254
+ idleData: I
255
+ } : {
256
+ intent: n,
257
+ error: null,
258
+ activeInputs: r,
259
+ queryKey: s(n, r),
260
+ idleData: I
261
+ };
262
+ } catch (n) {
263
+ const e = h(n);
264
+ return {
265
+ error: e,
266
+ activeInputs: r,
267
+ queryKey: s(void 0, r, e),
268
+ idleData: I
269
+ };
270
+ }
271
+ }
272
+ function rt(t) {
273
+ const r = w(t.inputs), n = Z;
274
+ try {
275
+ const e = _(t), o = k(e);
276
+ return o ? {
277
+ error: o,
278
+ activeInputs: r,
279
+ queryKey: s(void 0, r, o),
280
+ idleData: n
281
+ } : {
282
+ intent: e,
283
+ error: null,
284
+ activeInputs: r,
285
+ queryKey: s(e, r),
286
+ idleData: n
287
+ };
288
+ } catch (e) {
289
+ const o = h(e);
290
+ return {
291
+ error: o,
292
+ activeInputs: r,
293
+ queryKey: s(void 0, r, o),
294
+ idleData: n
295
+ };
296
+ }
297
+ }
298
+ function et(t) {
299
+ try {
300
+ const r = F(t), n = k(r);
301
+ return n ? {
302
+ error: n,
303
+ queryKey: s(void 0, void 0, n),
304
+ idleData: S
305
+ } : {
306
+ intent: r,
307
+ error: null,
308
+ queryKey: s(r),
309
+ idleData: S
310
+ };
311
+ } catch (r) {
312
+ const n = h(r);
313
+ return {
314
+ error: n,
315
+ queryKey: s(void 0, void 0, n),
316
+ idleData: S
317
+ };
318
+ }
319
+ }
320
+ function h(t) {
321
+ return t instanceof Error ? t : new Error(String(t));
322
+ }
323
+ function k(t) {
324
+ const r = B(t);
325
+ if (r.ok)
326
+ return null;
327
+ const n = r.errors.map(
328
+ (e) => e.path ? `${e.code} at ${e.path}: ${e.message}` : `${e.code}: ${e.message}`
329
+ ).join("; ");
330
+ return new Error(`Invalid Semaphor analytics intent. ${n}`);
331
+ }
332
+ function s(t, r, n) {
333
+ return JSON.stringify({
334
+ intent: t,
335
+ activeInputs: r,
336
+ error: n == null ? void 0 : n.message
337
+ });
338
+ }
339
+ function dt(t) {
340
+ const [r, n] = q(t.defaultValue), e = Object.prototype.hasOwnProperty.call(t, "value"), o = e ? t.value : r, a = f(
341
+ () => j(t.options),
342
+ [t.options]
343
+ ), i = p(
344
+ (u) => {
345
+ var m;
346
+ (m = t.onValueChange) == null || m.call(t, u), e || n(u);
347
+ },
348
+ [e, t]
349
+ ), l = p(() => i(void 0), [i]);
350
+ return f(() => {
351
+ const u = P(t);
352
+ return {
353
+ id: t.id,
354
+ kind: t.kind,
355
+ label: t.label,
356
+ field: u.field,
357
+ operator: u.operator,
358
+ source: u.source,
359
+ controlRole: t.kind === "control" ? t.role : void 0,
360
+ value: o,
361
+ options: a,
362
+ isActive: A(o),
363
+ setValue: i,
364
+ clear: l,
365
+ toAnalyticsInput: () => ({
366
+ inputId: u.inputId,
367
+ field: u.field,
368
+ kind: t.kind,
369
+ label: t.label,
370
+ value: o,
371
+ isActive: A(o),
372
+ operator: u.operator,
373
+ source: u.source,
374
+ controlRole: t.kind === "control" ? t.role : void 0
375
+ })
376
+ };
377
+ }, [l, a, i, t, o]);
378
+ }
379
+ function lt(t) {
380
+ const r = f(() => tt(t), [t]), n = p(
381
+ (a) => {
382
+ var i;
383
+ return r.intent ? (i = a.executor) == null ? void 0 : i.executeMetric(r.intent, a) : void 0;
384
+ },
385
+ [r.intent]
386
+ ), e = b(
387
+ r.queryKey,
388
+ n,
389
+ r.idleData,
390
+ r.activeInputs
391
+ ), o = r.error ? r.idleData : e.data;
392
+ return {
393
+ id: t.id,
394
+ intent: r.intent,
395
+ value: (o == null ? void 0 : o.value) ?? null,
396
+ metrics: o == null ? void 0 : o.metrics,
397
+ comparisonValue: o == null ? void 0 : o.comparisonValue,
398
+ delta: o == null ? void 0 : o.delta,
399
+ deltaPercent: o == null ? void 0 : o.deltaPercent,
400
+ records: o == null ? void 0 : o.records,
401
+ status: r.error ? "error" : e.status,
402
+ isLoading: !r.error && e.status === "loading",
403
+ error: r.error || e.error
404
+ };
405
+ }
406
+ function ct(t) {
407
+ const r = f(() => rt(t), [t]), n = p(
408
+ (a) => {
409
+ var i;
410
+ return r.intent ? (i = a.executor) == null ? void 0 : i.executeRecords(r.intent, a) : void 0;
411
+ },
412
+ [r.intent]
413
+ ), e = b(
414
+ r.queryKey,
415
+ n,
416
+ r.idleData,
417
+ r.activeInputs
418
+ ), o = r.error ? r.idleData : e.data;
419
+ return {
420
+ id: t.id,
421
+ intent: r.intent,
422
+ records: (o == null ? void 0 : o.records) || [],
423
+ columns: o == null ? void 0 : o.columns,
424
+ rowCount: o == null ? void 0 : o.rowCount,
425
+ status: r.error ? "error" : e.status,
426
+ isLoading: !r.error && e.status === "loading",
427
+ error: r.error || e.error
428
+ };
429
+ }
430
+ function ft(t) {
431
+ const r = f(() => et(t), [t]), n = p(
432
+ (a) => {
433
+ var i;
434
+ return r.intent ? (i = a.executor) == null ? void 0 : i.executeInputOptions(r.intent, a) : void 0;
435
+ },
436
+ [r.intent]
437
+ ), e = b(
438
+ r.queryKey,
439
+ n,
440
+ r.idleData
441
+ ), o = r.error ? r.idleData : e.data;
442
+ return {
443
+ id: t.id,
444
+ intent: r.intent,
445
+ options: (o == null ? void 0 : o.options) || [],
446
+ status: r.error ? "error" : e.status,
447
+ isLoading: !r.error && e.status === "loading",
448
+ error: r.error || e.error
449
+ };
450
+ }
451
+ function b(t, r, n, e) {
452
+ const o = Y(), a = E(r), i = E(e), [l, u] = q({
453
+ status: "idle",
454
+ data: n,
455
+ error: null
456
+ });
457
+ return a.current = r, i.current = e, C(() => {
458
+ let m;
459
+ try {
460
+ m = a.current({
461
+ ...o,
462
+ activeInputs: i.current
463
+ });
464
+ } catch (c) {
465
+ u({
466
+ status: "error",
467
+ data: n,
468
+ error: h(c)
469
+ });
470
+ return;
471
+ }
472
+ if (!m) {
473
+ u({ status: "idle", data: n, error: null });
474
+ return;
475
+ }
476
+ let y = !1;
477
+ return u((c) => ({
478
+ status: "loading",
479
+ data: c.data,
480
+ error: null
481
+ })), m.then((c) => {
482
+ y || u({ status: "success", data: c, error: null });
483
+ }).catch((c) => {
484
+ y || u({
485
+ status: "error",
486
+ data: n,
487
+ error: h(c)
488
+ });
489
+ }), () => {
490
+ y = !0;
491
+ };
492
+ }, [n, t, o]), l;
493
+ }
494
+ export {
495
+ st as SemaphorDataAppProvider,
496
+ G as createSemaphorDataAppExecutor,
497
+ A as hasSemaphorInputValue,
498
+ j as normalizeSemaphorInputOptions,
499
+ w as toSemaphorActiveInputSnapshots,
500
+ M as toSemaphorInputBinding,
501
+ ut as toSemaphorInputBindings,
502
+ F as toSemaphorInputOptionsIntent,
503
+ N as toSemaphorInputSnapshots,
504
+ P as toSemaphorInputSpec,
505
+ T as toSemaphorMetricIntent,
506
+ _ as toSemaphorRecordsIntent,
507
+ Y as useSemaphorDataAppRuntime,
508
+ dt as useSemaphorInput,
509
+ ft as useSemaphorInputOptions,
510
+ lt as useSemaphorMetric,
511
+ ct as useSemaphorRecords
512
+ };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-YTk9Hab2.js"),d=require("./chunks/common-types-C73-Ud1-.js"),P=require("./chunks/calendar-preferences-dialog-BxeROxyq.js"),t=require("react/jsx-runtime"),a=require("./chunks/switch-BXICAlvS.js"),C=require("react"),N=require("./chunks/resource-management-panel-DlnrD0y-.js"),y=require("./types/index.cjs"),_=require("./chunks/use-debounced-dirty-check-XHSwAefL.js");require("react-dom");require("./chunks/index-DRlMUglg.js");const r=require("./chunks/dashboard-briefing-launcher-DZiFMK8I.js"),S=require("./chunks/normalize-dashboard-for-dirty-check-BXRUMVb2.js");function R(o){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const n in o)if(n!=="default"){const u=Object.getOwnPropertyDescriptor(o,n);Object.defineProperty(i,n,u.get?u:{enumerable:!0,get:()=>o[n]})}}return i.default=o,Object.freeze(i)}const h=R(C);function j(o){const{displayPreferences:i,cardId:n,...u}=o,s={...u,id:o.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:s,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:o.cardId}),t.jsx(e.UXProvider,{appearance:o.appearance,children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:i,children:t.jsx(e.Container,{type:"visual",cardId:n,...s,children:t.jsx(w,{cardId:n})})})})]})})}function w({cardId:o}){const i=a.useDashboardStore(s=>{var c;return(c=s.dashboard)==null?void 0:c.sheets}),{card:n,frame:u}=C.useMemo(()=>{const s=i==null?void 0:i.flatMap(l=>l.frames),c=s==null?void 0:s.flatMap(l=>l==null?void 0:l.cards),D=c==null?void 0:c.find(l=>(l==null?void 0:l.id)===o),E=s==null?void 0:s.find(l=>{var p;return(p=l==null?void 0:l.cards)==null?void 0:p.find(g=>(g==null?void 0:g.id)===o)});return{card:D,frame:E}},[i,o]);return!n||!u?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${o}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:s,resetErrorBoundary:c})=>t.jsx(e.FallbackVisual,{error:s,resetErrorBoundary:c,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:u})})})}function M(o,i,n,u){C.useEffect(()=>{o&&!n&&i&&u(e.cloneDeep(i))},[o,n,i,u])}function L({name:o,items:i,value:n,onChange:u,isLoading:s,isError:c,refetch:D,className:E,icon:l,showNone:p=!1}){const g=h.useRef(null),[b,T]=h.useState(!1),[B,A]=h.useState("100%"),x=p?[...i||[],{id:"none",name:"None"}]:i;h.useLayoutEffect(()=>{g.current&&A(g.current.offsetWidth)},[]);function F(){var f;return s?"Loading...":c?"Error":n?(f=i==null?void 0:i.find(m=>m.id===n))==null?void 0:f.name:`Select ${o}`}function v(f,m){u(m),T(!1)}return t.jsxs(a.Popover,{open:b,onOpenChange:T,children:[t.jsx(a.PopoverTrigger,{asChild:!0,children:t.jsxs(a.Button,{ref:g,variant:"outline",role:"combobox","aria-expanded":b,className:a.cn("flex h-9 w-full justify-between",E),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[l&&t.jsx("div",{className:"mr-2",children:l}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:F()})]}),t.jsx(a.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(a.PopoverContent,{className:"w-full p-0",style:{minWidth:B},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:a.cn("size-3.5 opacity-50",s&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",o==null?void 0:o.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:x==null?void 0:x.map(f=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:f.name,onSelect:m=>v(m,f.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Check,{className:a.cn("size-4",n===f.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:f.name,children:f.name})]})},f.id))})]})]})})]})}function I(o,i){C.useEffect(()=>(o&&i&&(window.__SEMAPHOR_PRINT_STATE__={...i}),()=>{o&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[o,i])}exports.CardSummary=e.CardSummary;exports.Dashboard=e.Dashboard;exports.DashboardCreateDialogBase=e.DashboardCreateDialogBase;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;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.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createExport=e.createExport;exports.downloadDocumentPdf=e.downloadDocumentPdf;exports.downloadPdf=e.downloadPdf;exports.formatFileSize=e.formatFileSize;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.useActiveExports=e.useActiveExports;exports.useAddNewFrame=e.useAddNewFrame;exports.useCard=e.useCard;exports.useCardSummary=e.useCardSummary;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorAside=e.useEditorAside;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useTextFilterHook=e.useTextFilterHook;exports.CALCULATED_FIELD_ENTITY_MARKER=d.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=d.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=d.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=d.EMPTY_SELECTION;exports.PivotMarkerEnum=d.PivotMarkerEnum;exports.getFieldRuntimeColumnName=d.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=d.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=d.hasCalculatedFormulaInputs;exports.isCalculatedDimension=d.isCalculatedDimension;exports.isCalculatedField=d.isCalculatedField;exports.isCalculatedMetric=d.isCalculatedMetric;exports.CalendarPreferencesDialog=P.CalendarPreferencesDialog;exports.createEmptyKpiConfig=a.createEmptyKpiConfig;exports.createSqlGenConfig=a.createSqlGenConfig;exports.emitDashboardLoad=a.emitDashboardLoad;exports.emitDashboardUnload=a.emitDashboardUnload;exports.fmt=a.fmt;exports.getColumnDataType=a.getColumnDataType;exports.getFilterValueType=a.getFilterValueType;exports.getFormattedTableNameForQuery=a.getFormattedTableNameForQuery;exports.getQualifiedTableName=a.getQualifiedTableName;exports.getSql=a.getSql;exports.invalidateToken=a.invalidateToken;exports.isBooleanDataType=a.isBooleanDataType;exports.isColumnInSqlGen=a.isColumnInSqlGen;exports.isDateDataType=a.isDateDataType;exports.isNumberDataType=a.isNumberDataType;exports.isTextDataType=a.isTextDataType;exports.resolveDataType=a.resolveDataType;exports.resolveDatamodelName=a.resolveDatamodelName;exports.useCurrentActiveCard=a.useCurrentActiveCard;exports.useCurrentCardConfig=a.useCurrentCardConfig;exports.useCurrentSheetActiveCards=a.useCurrentSheetActiveCards;exports.useDashboardActions=a.useDashboardActions;exports.useDashboardStore=a.useDashboardStore;exports.useEditorActions=a.useEditorActions;exports.useEditorStore=a.useEditorStore;exports.ResourceManagementPanel=N.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=y.DEFAULT_CALENDAR_CONTEXT;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=y.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.useDebouncedDirtyCheck=_.useDebouncedDirtyCheck;exports.AdvancedModeToggle=r.AdvancedModeToggle;exports.BriefingAuthor=r.BriefingAuthor;exports.BriefingsApiError=r.BriefingsApiError;exports.DashboardBriefingLauncher=r.DashboardBriefingLauncher;exports.DashboardControlsSettings=r.DashboardControlsSettings;exports.DashboardFilterControlsButton=r.DashboardFilterControlsButton;exports.DashboardFilterControlsLauncher=r.DashboardFilterControlsLauncher;exports.DocumentControlsSettings=r.DocumentControlsSettings;exports.ExportNotificationItem=r.ExportNotificationItem;exports.ExportNotificationList=r.ExportNotificationList;exports.NotificationBell=r.NotificationBell;exports.UnsavedChangesAlert=r.UnsavedChangesAlert;exports.VisualEditingControls=r.VisualEditingControls;exports.WatchDashboardButton=r.WatchDashboardButton;exports.applyBriefingFormPatch=r.applyBriefingFormPatch;exports.briefingFormDraftToCreateRequest=r.briefingFormDraftToCreateRequest;exports.briefingFormDraftToUpdateRequest=r.briefingFormDraftToUpdateRequest;exports.briefingToFormDraft=r.briefingToFormDraft;exports.cancelBriefingRun=r.cancelBriefingRun;exports.createBriefing=r.createBriefing;exports.createBriefingFormDraft=r.createBriefingFormDraft;exports.deleteBriefing=r.deleteBriefing;exports.deleteBriefingRun=r.deleteBriefingRun;exports.getBriefing=r.getBriefing;exports.getBriefingArtifact=r.getBriefingArtifact;exports.getBriefingEvidence=r.getBriefingEvidence;exports.getBriefingPreviewRun=r.getBriefingPreviewRun;exports.getBriefingRun=r.getBriefingRun;exports.listBriefingRuns=r.listBriefingRuns;exports.listBriefingTenantSummaries=r.listBriefingTenantSummaries;exports.listBriefings=r.listBriefings;exports.pauseBriefing=r.pauseBriefing;exports.polishBriefingText=r.polishBriefingText;exports.previewBriefingPlan=r.previewBriefingPlan;exports.resumeBriefing=r.resumeBriefing;exports.runBriefingNow=r.runBriefingNow;exports.runBriefingPreview=r.runBriefingPreview;exports.updateBriefing=r.updateBriefing;exports.useExportPolling=r.useExportPolling;exports.useExportRecovery=r.useExportRecovery;exports.validateBriefingFormDraft=r.validateBriefingFormDraft;exports.normalizeDashboardForDirtyCheck=S.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=S.serializeDashboardForDirtyCheck;exports.Combobox=L;exports.Visual=j;exports.useExposePrintState=I;exports.usePristineSnapshotInitializer=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/index-B1-46PoR.js"),d=require("./chunks/common-types-C73-Ud1-.js"),P=require("./chunks/calendar-preferences-dialog-mqU_uOmY.js"),t=require("react/jsx-runtime"),a=require("./chunks/switch-5aQ_jcLH.js"),C=require("react"),N=require("./chunks/resource-management-panel-CGwWKZOP.js"),y=require("./types/index.cjs"),_=require("./chunks/use-debounced-dirty-check-XHSwAefL.js");require("react-dom");require("./chunks/index-DRlMUglg.js");const r=require("./chunks/dashboard-briefing-launcher-DguNfFr8.js"),S=require("./chunks/normalize-dashboard-for-dirty-check-BXRUMVb2.js");require("./chunks/index-BxM99sFL.js");function R(o){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const n in o)if(n!=="default"){const u=Object.getOwnPropertyDescriptor(o,n);Object.defineProperty(i,n,u.get?u:{enumerable:!0,get:()=>o[n]})}}return i.default=o,Object.freeze(i)}const h=R(C);function j(o){const{displayPreferences:i,cardId:n,...u}=o,s={...u,id:o.dashboardId};return t.jsx(e.ErrorBoundary,{FallbackComponent:e.Fallback,children:t.jsxs(e.SemaphorContextProvider,{dashboardProps:s,children:[t.jsx(e.SemaphorReadyIndicator,{componentType:"visual",componentId:o.cardId}),t.jsx(e.UXProvider,{appearance:o.appearance,children:t.jsx(e.DisplayPreferencesProvider,{displayPreferences:i,children:t.jsx(e.Container,{type:"visual",cardId:n,...s,children:t.jsx(w,{cardId:n})})})})]})})}function w({cardId:o}){const i=a.useDashboardStore(s=>{var c;return(c=s.dashboard)==null?void 0:c.sheets}),{card:n,frame:u}=C.useMemo(()=>{const s=i==null?void 0:i.flatMap(l=>l.frames),c=s==null?void 0:s.flatMap(l=>l==null?void 0:l.cards),D=c==null?void 0:c.find(l=>(l==null?void 0:l.id)===o),E=s==null?void 0:s.find(l=>{var p;return(p=l==null?void 0:l.cards)==null?void 0:p.find(g=>(g==null?void 0:g.id)===o)});return{card:D,frame:E}},[i,o]);return!n||!u?t.jsx(e.FallbackVisual,{error:new Error("Card not found"),resetErrorBoundary:()=>{},customerFacingMessage:`Card not found with ID: ${o}`}):t.jsx("main",{className:"flex h-full grow flex-col",children:t.jsx(e.ErrorBoundary,{FallbackComponent:({error:s,resetErrorBoundary:c})=>t.jsx(e.FallbackVisual,{error:s,resetErrorBoundary:c,customerFacingMessage:"Error creating visual. Please try again."}),children:t.jsx(e.DashboardCard,{card:n,frame:u})})})}function M(o,i,n,u){C.useEffect(()=>{o&&!n&&i&&u(e.cloneDeep(i))},[o,n,i,u])}function L({name:o,items:i,value:n,onChange:u,isLoading:s,isError:c,refetch:D,className:E,icon:l,showNone:p=!1}){const g=h.useRef(null),[b,T]=h.useState(!1),[B,A]=h.useState("100%"),x=p?[...i||[],{id:"none",name:"None"}]:i;h.useLayoutEffect(()=>{g.current&&A(g.current.offsetWidth)},[]);function F(){var f;return s?"Loading...":c?"Error":n?(f=i==null?void 0:i.find(m=>m.id===n))==null?void 0:f.name:`Select ${o}`}function v(f,m){u(m),T(!1)}return t.jsxs(a.Popover,{open:b,onOpenChange:T,children:[t.jsx(a.PopoverTrigger,{asChild:!0,children:t.jsxs(a.Button,{ref:g,variant:"outline",role:"combobox","aria-expanded":b,className:a.cn("flex h-9 w-full justify-between",E),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[l&&t.jsx("div",{className:"mr-2",children:l}),t.jsx("span",{className:"max-w-[150px] overflow-hidden truncate text-ellipsis whitespace-nowrap",children:F()})]}),t.jsx(a.ChevronDown,{className:"size-4 opacity-50"})]})}),t.jsx(a.PopoverContent,{className:"w-full p-0",style:{minWidth:B},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:a.cn("size-3.5 opacity-50",s&&"animate-spin")})})]}),t.jsxs(e.CommandList,{children:[t.jsxs(e.CommandEmpty,{children:["No ",o==null?void 0:o.toLowerCase()," found."]}),t.jsx(e.CommandGroup,{children:x==null?void 0:x.map(f=>t.jsx(e.CommandItem,{className:"overflow-x-auto",value:f.name,onSelect:m=>v(m,f.id),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Check,{className:a.cn("size-4",n===f.id?"opacity-100":"opacity-0")}),t.jsx("div",{title:f.name,children:f.name})]})},f.id))})]})]})})]})}function I(o,i){C.useEffect(()=>(o&&i&&(window.__SEMAPHOR_PRINT_STATE__={...i}),()=>{o&&window.__SEMAPHOR_PRINT_STATE__&&delete window.__SEMAPHOR_PRINT_STATE__}),[o,i])}exports.CardSummary=e.CardSummary;exports.Dashboard=e.Dashboard;exports.DashboardCreateDialogBase=e.DashboardCreateDialogBase;exports.DashboardExportDialog=e.DashboardExportDialog;exports.DashboardWC=e.DashboardWC;exports.ExportError=e.ExportError;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.cancelExport=e.cancelExport;exports.cloneDeep=e.cloneDeep;exports.createExport=e.createExport;exports.downloadDocumentPdf=e.downloadDocumentPdf;exports.downloadPdf=e.downloadPdf;exports.formatFileSize=e.formatFileSize;exports.getDownloadUrl=e.getDownloadUrl;exports.getExportStatus=e.getExportStatus;exports.getExports=e.getExports;exports.isExportComplete=e.isExportComplete;exports.isExportInProgress=e.isExportInProgress;exports.useActiveExports=e.useActiveExports;exports.useAddNewFrame=e.useAddNewFrame;exports.useCard=e.useCard;exports.useCardSummary=e.useCardSummary;exports.useDashboardById=e.useDashboardById;exports.useDashboardQuery=e.useDashboardQuery;exports.useDashboardSummary=e.useDashboardSummary;exports.useDataColumns=e.useDataColumns;exports.useDateFilterHook=e.useDateFilterHook;exports.useEditorAside=e.useEditorAside;exports.useExportActions=e.useExportActions;exports.useExportStore=e.useExportStore;exports.useInProgressExportsCount=e.useInProgressExportsCount;exports.useManagementStore=e.useManagementStore;exports.useResourceManagement=e.useResourceManagement;exports.useTextFilterHook=e.useTextFilterHook;exports.CALCULATED_FIELD_ENTITY_MARKER=d.CALCULATED_FIELD_ENTITY_MARKER;exports.CONTROL_CARD_DEFAULT_VALUE=d.CONTROL_CARD_DEFAULT_VALUE;exports.DATE_FORMAT_VALUES=d.DATE_FORMAT_VALUES;exports.EMPTY_SELECTION=d.EMPTY_SELECTION;exports.PivotMarkerEnum=d.PivotMarkerEnum;exports.getFieldRuntimeColumnName=d.getFieldRuntimeColumnName;exports.hasCalculatedFieldMarker=d.hasCalculatedFieldMarker;exports.hasCalculatedFormulaInputs=d.hasCalculatedFormulaInputs;exports.isCalculatedDimension=d.isCalculatedDimension;exports.isCalculatedField=d.isCalculatedField;exports.isCalculatedMetric=d.isCalculatedMetric;exports.CalendarPreferencesDialog=P.CalendarPreferencesDialog;exports.createEmptyKpiConfig=a.createEmptyKpiConfig;exports.createSqlGenConfig=a.createSqlGenConfig;exports.emitDashboardLoad=a.emitDashboardLoad;exports.emitDashboardUnload=a.emitDashboardUnload;exports.fmt=a.fmt;exports.getColumnDataType=a.getColumnDataType;exports.getFilterValueType=a.getFilterValueType;exports.getFormattedTableNameForQuery=a.getFormattedTableNameForQuery;exports.getQualifiedTableName=a.getQualifiedTableName;exports.getSql=a.getSql;exports.invalidateToken=a.invalidateToken;exports.isBooleanDataType=a.isBooleanDataType;exports.isColumnInSqlGen=a.isColumnInSqlGen;exports.isDateDataType=a.isDateDataType;exports.isNumberDataType=a.isNumberDataType;exports.isTextDataType=a.isTextDataType;exports.resolveDataType=a.resolveDataType;exports.resolveDatamodelName=a.resolveDatamodelName;exports.useCurrentActiveCard=a.useCurrentActiveCard;exports.useCurrentCardConfig=a.useCurrentCardConfig;exports.useCurrentSheetActiveCards=a.useCurrentSheetActiveCards;exports.useDashboardActions=a.useDashboardActions;exports.useDashboardStore=a.useDashboardStore;exports.useEditorActions=a.useEditorActions;exports.useEditorStore=a.useEditorStore;exports.ResourceManagementPanel=N.ResourceManagementPanel;exports.DEFAULT_CALENDAR_CONTEXT=y.DEFAULT_CALENDAR_CONTEXT;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=y.DEFAULT_SEMANTIC_DOMAIN_ACCESS;exports.useDebouncedDirtyCheck=_.useDebouncedDirtyCheck;exports.AdvancedModeToggle=r.AdvancedModeToggle;exports.BriefingAuthor=r.BriefingAuthor;exports.BriefingsApiError=r.BriefingsApiError;exports.DashboardBriefingLauncher=r.DashboardBriefingLauncher;exports.DashboardControlsSettings=r.DashboardControlsSettings;exports.DashboardFilterControlsButton=r.DashboardFilterControlsButton;exports.DashboardFilterControlsLauncher=r.DashboardFilterControlsLauncher;exports.DocumentControlsSettings=r.DocumentControlsSettings;exports.ExportNotificationItem=r.ExportNotificationItem;exports.ExportNotificationList=r.ExportNotificationList;exports.NotificationBell=r.NotificationBell;exports.UnsavedChangesAlert=r.UnsavedChangesAlert;exports.VisualEditingControls=r.VisualEditingControls;exports.WatchDashboardButton=r.WatchDashboardButton;exports.applyBriefingFormPatch=r.applyBriefingFormPatch;exports.briefingFormDraftToCreateRequest=r.briefingFormDraftToCreateRequest;exports.briefingFormDraftToUpdateRequest=r.briefingFormDraftToUpdateRequest;exports.briefingToFormDraft=r.briefingToFormDraft;exports.cancelBriefingRun=r.cancelBriefingRun;exports.createBriefing=r.createBriefing;exports.createBriefingFormDraft=r.createBriefingFormDraft;exports.deleteBriefing=r.deleteBriefing;exports.deleteBriefingRun=r.deleteBriefingRun;exports.getBriefing=r.getBriefing;exports.getBriefingArtifact=r.getBriefingArtifact;exports.getBriefingEvidence=r.getBriefingEvidence;exports.getBriefingPreviewRun=r.getBriefingPreviewRun;exports.getBriefingRun=r.getBriefingRun;exports.listBriefingRuns=r.listBriefingRuns;exports.listBriefingTenantSummaries=r.listBriefingTenantSummaries;exports.listBriefings=r.listBriefings;exports.pauseBriefing=r.pauseBriefing;exports.polishBriefingText=r.polishBriefingText;exports.previewBriefingPlan=r.previewBriefingPlan;exports.resumeBriefing=r.resumeBriefing;exports.runBriefingNow=r.runBriefingNow;exports.runBriefingPreview=r.runBriefingPreview;exports.updateBriefing=r.updateBriefing;exports.useExportPolling=r.useExportPolling;exports.useExportRecovery=r.useExportRecovery;exports.validateBriefingFormDraft=r.validateBriefingFormDraft;exports.normalizeDashboardForDirtyCheck=S.normalizeDashboardForDirtyCheck;exports.serializeDashboardForDirtyCheck=S.serializeDashboardForDirtyCheck;exports.Combobox=L;exports.Visual=j;exports.useExposePrintState=I;exports.usePristineSnapshotInitializer=M;