react-semaphor 0.1.381 → 0.1.383
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/DATA_APP_SDK.md +238 -0
- package/README.md +7 -0
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +45 -41
- package/dist/brand-studio/index.cjs +4 -4
- package/dist/brand-studio/index.js +28 -28
- package/dist/chunks/analyze-result-contract-CtXfp3nv.js +1 -0
- package/dist/chunks/analyze-result-contract-DuhlklhI.js +102 -0
- package/dist/chunks/{braces-DOxxfERN.js → braces--20GzUQh.js} +1 -1
- package/dist/chunks/{braces-BT-ZyB-g.js → braces-C0Vh_Mft.js} +1 -1
- package/dist/chunks/{calendar-preferences-dialog-Dsgs8WDv.js → calendar-preferences-dialog-B-VsxhsA.js} +4 -4
- package/dist/chunks/calendar-preferences-dialog-DE67Z3oQ.js +1 -0
- package/dist/chunks/catalog-field-grounding-Bnx-3tE0.js +1 -0
- package/dist/chunks/catalog-field-grounding-CJKAqtiC.js +100 -0
- package/dist/chunks/{dashboard-briefing-launcher-Coks66cV.js → dashboard-briefing-launcher-BIj3X7b3.js} +108 -107
- package/dist/chunks/dashboard-briefing-launcher-Czx6BcXW.js +80 -0
- package/dist/chunks/dashboard-controls-BP-DcPFs.js +52 -0
- package/dist/chunks/{dashboard-controls-BfkcnIdy.js → dashboard-controls-BXxucM4f.js} +115 -114
- package/dist/chunks/dashboard-json-BNwshkK2.js +1 -0
- package/dist/chunks/{dashboard-json-DjXi4cI6.js → dashboard-json-C6oZuipD.js} +9 -9
- package/dist/chunks/edit-dashboard-visual-BAprin3J.js +178 -0
- package/dist/chunks/{edit-dashboard-visual-DOW1Ap1N.js → edit-dashboard-visual-CmfrI_L3.js} +1278 -1277
- package/dist/chunks/{index-CkoRCh3g.js → index-4W_ElSBJ.js} +219 -239
- package/dist/chunks/{index-DlprYjr6.js → index-icb12JV1.js} +900 -952
- package/dist/chunks/{layout-grid-DccceHv4.js → layout-grid-B7-klXiK.js} +1 -1
- package/dist/chunks/{layout-grid-DTbOIOsE.js → layout-grid-DV89AC9_.js} +1 -1
- package/dist/chunks/operators-C8TxpM4C.js +48 -0
- package/dist/chunks/operators-DrTQsJXv.js +1 -0
- package/dist/chunks/{palette-DCzLwqIw.js → palette-5IwhMbSF.js} +1 -1
- package/dist/chunks/{palette-SimHJELn.js → palette-Dj-dgPYh.js} +1 -1
- package/dist/chunks/{save-zNVYH02T.js → save-16C6YSW2.js} +1 -1
- package/dist/chunks/{save-D2O96E5A.js → save-C5fwVdTF.js} +1 -1
- package/dist/chunks/search-0LmWwZzW.js +57 -0
- package/dist/chunks/search-Dq1Mbb03.js +21 -0
- package/dist/chunks/{source-identity-Dj3dryN9.js → source-identity-CN4xiyKJ.js} +5 -5
- package/dist/chunks/{switch-DMPsMpHW.js → switch-DUdaHFZQ.js} +2328 -2414
- package/dist/chunks/{switch-Jhyl63RF.js → switch-bdJp0Bkw.js} +29 -54
- package/dist/chunks/use-create-flow-overlay-state-BIHKf_XK.js +21 -0
- package/dist/chunks/{use-create-flow-overlay-state-r5JKyXU8.js → use-create-flow-overlay-state-YvqCp6Zo.js} +75 -75
- package/dist/chunks/{validators-CtNmgsvG.js → validators-CHPH6ORs.js} +641 -498
- package/dist/chunks/validators-lWo8m0Q7.js +1 -0
- package/dist/chunks/x-B_cx7LwM.js +26 -0
- package/dist/chunks/x-IdR_js6f.js +139 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +105 -92
- package/dist/data-app-builder/index.cjs +23 -23
- package/dist/data-app-builder/index.js +17 -15
- package/dist/data-app-sdk/index.cjs +68 -1
- package/dist/data-app-sdk/index.js +2731 -384
- package/dist/data-app-sdk-adapters/index.cjs +1 -0
- package/dist/data-app-sdk-adapters/index.js +383 -0
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +1073 -6
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -15
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/analytics-protocol.d.ts +58 -31
- package/dist/types/dashboard-assistant.d.ts +40 -15
- package/dist/types/dashboard-authoring.d.ts +36 -16
- package/dist/types/dashboard.d.ts +8 -8
- package/dist/types/data-app-builder.d.ts +35 -11
- package/dist/types/data-app-sdk-adapters.d.ts +733 -0
- package/dist/types/data-app-sdk-validation.d.ts +85 -25
- package/dist/types/data-app-sdk.d.ts +217 -147
- package/dist/types/main.d.ts +35 -11
- package/dist/types/shared.d.ts +8 -8
- package/dist/types/surfboard.d.ts +8 -8
- package/dist/types/types.d.ts +8 -8
- package/package.json +9 -2
- package/src/data-app-sdk/README.md +240 -0
- package/dist/chunks/calendar-preferences-dialog-iZs8XqyH.js +0 -1
- package/dist/chunks/catalog-field-grounding-8L9I0zdg.js +0 -1
- package/dist/chunks/catalog-field-grounding-BK4BX8sZ.js +0 -200
- package/dist/chunks/dashboard-briefing-launcher-B5vPTl8P.js +0 -80
- package/dist/chunks/dashboard-controls-Dyqye6fh.js +0 -52
- package/dist/chunks/dashboard-json-CV_LnO9x.js +0 -1
- package/dist/chunks/edit-dashboard-visual-yinO0yU-.js +0 -178
- package/dist/chunks/index-BxM99sFL.js +0 -1
- package/dist/chunks/index-CuHybtft.js +0 -51
- package/dist/chunks/use-create-flow-overlay-state-NsqFPwdB.js +0 -21
- package/dist/chunks/validation-BM3-ShHV.js +0 -1003
- package/dist/chunks/validation-BVpqRFar.js +0 -1
- package/dist/chunks/validators-jpoYhpHh.js +0 -1
|
@@ -2,10 +2,12 @@ import { jsx as r, jsxs as c, Fragment as re } from "react/jsx-runtime";
|
|
|
2
2
|
import * as Yn from "react";
|
|
3
3
|
import { useContext as Zn, useState as x, useRef as oe, useMemo as ze, useEffect as W, useCallback as Ot } from "react";
|
|
4
4
|
import * as Xn from "react-dom/client";
|
|
5
|
-
import { ae as ea, af as ta, ag as Ir, ah as jr, ai as zr, aj as ra, ak as Wr, al as Hr, am as Jr, an as Vr, ao as _r, ap as Ur, aq as Gr, ar as na, as as aa, at as oa, au as Ht, av as on, x as Kr, aw as sa, ax as Vt, ay as _t, az as sn, aA as ia, aB as la
|
|
6
|
-
import {
|
|
5
|
+
import { ae as ea, af as ta, ag as Ir, ah as jr, ai as zr, aj as ra, ak as Wr, al as Hr, am as Jr, an as Vr, ao as _r, ap as Ur, aq as Gr, ar as na, as as aa, at as oa, au as Ht, av as on, x as Kr, aw as sa, ax as Vt, ay as _t, az as sn, aA as ia, aB as la } from "../chunks/index-icb12JV1.js";
|
|
6
|
+
import { B as H, P as it, a as lt, b as dt, $ as da, a0 as ca, a1 as ua, a2 as pa, a3 as ha, e as me, R as ma, d as Ut } from "../chunks/switch-DUdaHFZQ.js";
|
|
7
7
|
import { loadSemaphorBrowserRuntime as ot } from "../data-app-builder-browser-runtime/index.js";
|
|
8
|
-
import {
|
|
8
|
+
import { c as $e, X as Je } from "../chunks/x-IdR_js6f.js";
|
|
9
|
+
import { S as fa } from "../chunks/save-16C6YSW2.js";
|
|
10
|
+
import { S as ga } from "../chunks/search-0LmWwZzW.js";
|
|
9
11
|
/**
|
|
10
12
|
* @license lucide-react v0.453.0 - ISC
|
|
11
13
|
*
|
|
@@ -957,7 +959,7 @@ function qa({
|
|
|
957
959
|
] })
|
|
958
960
|
] });
|
|
959
961
|
}
|
|
960
|
-
function
|
|
962
|
+
function ko({
|
|
961
963
|
projectId: e,
|
|
962
964
|
projectName: a,
|
|
963
965
|
dataAppId: s,
|
|
@@ -2668,18 +2670,18 @@ function Ya({
|
|
|
2668
2670
|
}
|
|
2669
2671
|
)
|
|
2670
2672
|
] }),
|
|
2671
|
-
/* @__PURE__ */ c(
|
|
2673
|
+
/* @__PURE__ */ c(da, { value: pt, onValueChange: mn, children: [
|
|
2672
2674
|
/* @__PURE__ */ r(
|
|
2673
|
-
|
|
2675
|
+
ca,
|
|
2674
2676
|
{
|
|
2675
2677
|
"aria-label": "Generation model",
|
|
2676
2678
|
title: "Model used to generate changes",
|
|
2677
2679
|
className: "h-7 w-auto gap-1.5 border-0 bg-transparent px-1.5 text-[11px] text-muted-foreground shadow-none hover:text-foreground focus:ring-0",
|
|
2678
|
-
children: /* @__PURE__ */ r(
|
|
2680
|
+
children: /* @__PURE__ */ r(ua, { placeholder: "Model" })
|
|
2679
2681
|
}
|
|
2680
2682
|
),
|
|
2681
|
-
/* @__PURE__ */ r(
|
|
2682
|
-
|
|
2683
|
+
/* @__PURE__ */ r(pa, { align: "start", children: Jt.map((t) => /* @__PURE__ */ r(
|
|
2684
|
+
ha,
|
|
2683
2685
|
{
|
|
2684
2686
|
value: t.id,
|
|
2685
2687
|
className: "text-[12px]",
|
|
@@ -2888,7 +2890,7 @@ function Ya({
|
|
|
2888
2890
|
disabled: X || ee,
|
|
2889
2891
|
title: "Reset the app to a blank development template",
|
|
2890
2892
|
children: [
|
|
2891
|
-
/* @__PURE__ */ r(
|
|
2893
|
+
/* @__PURE__ */ r(ma, { className: "h-3.5 w-3.5" }),
|
|
2892
2894
|
"Reset app"
|
|
2893
2895
|
]
|
|
2894
2896
|
}
|
|
@@ -2915,7 +2917,7 @@ function Ya({
|
|
|
2915
2917
|
title: "Save the current local source snapshot as a Semaphor draft",
|
|
2916
2918
|
onClick: () => void Er(),
|
|
2917
2919
|
children: [
|
|
2918
|
-
Ye === "saving" ? /* @__PURE__ */ r(me, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ r(
|
|
2920
|
+
Ye === "saving" ? /* @__PURE__ */ r(me, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ r(fa, { className: "h-3.5 w-3.5" }),
|
|
2919
2921
|
"Save draft"
|
|
2920
2922
|
]
|
|
2921
2923
|
}
|
|
@@ -3151,7 +3153,7 @@ function Za({ code: e, lang: a }) {
|
|
|
3151
3153
|
}
|
|
3152
3154
|
)
|
|
3153
3155
|
] }),
|
|
3154
|
-
/* @__PURE__ */ r("div", { className: "overflow-x-auto bg-background", children: /* @__PURE__ */ r(
|
|
3156
|
+
/* @__PURE__ */ r("div", { className: "overflow-x-auto bg-background", children: /* @__PURE__ */ r(ia, { code: e, language: a || "tsx" }) })
|
|
3155
3157
|
] });
|
|
3156
3158
|
}
|
|
3157
3159
|
const Xa = /(\b[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*\.(?:tsx?|jsx?|mjs|cjs|css|scss|json|mdx?|html?|ya?ml|toml|sql|sh|py|rb|go|rs)\b)/g;
|
|
@@ -3466,7 +3468,7 @@ function lo({
|
|
|
3466
3468
|
e.dataset.primaryDateField
|
|
3467
3469
|
] }) : null,
|
|
3468
3470
|
/* @__PURE__ */ c("label", { className: "mt-3 flex h-8 items-center gap-2 rounded-[5px] border border-border bg-background px-2", children: [
|
|
3469
|
-
/* @__PURE__ */ r(
|
|
3471
|
+
/* @__PURE__ */ r(ga, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
3470
3472
|
/* @__PURE__ */ r(
|
|
3471
3473
|
"input",
|
|
3472
3474
|
{
|
|
@@ -3671,8 +3673,8 @@ function po({
|
|
|
3671
3673
|
] });
|
|
3672
3674
|
}
|
|
3673
3675
|
function ho({ state: e }) {
|
|
3674
|
-
return e === "done" ? /* @__PURE__ */ r(Ut, { className: "h-3.5 w-3.5 text-emerald-600" }) : e === "running" ? /* @__PURE__ */ r(me, { className: "h-3.5 w-3.5 animate-spin text-blue-600" }) : e === "blocked" ? /* @__PURE__ */ r(Je, { className: "h-3.5 w-3.5 text-destructive" }) : /* @__PURE__ */ r(
|
|
3676
|
+
return e === "done" ? /* @__PURE__ */ r(Ut, { className: "h-3.5 w-3.5 text-emerald-600" }) : e === "running" ? /* @__PURE__ */ r(me, { className: "h-3.5 w-3.5 animate-spin text-blue-600" }) : e === "blocked" ? /* @__PURE__ */ r(Je, { className: "h-3.5 w-3.5 text-destructive" }) : /* @__PURE__ */ r(la, { className: "h-2.5 w-2.5 fill-zinc-300 stroke-none" });
|
|
3675
3677
|
}
|
|
3676
3678
|
export {
|
|
3677
|
-
|
|
3679
|
+
ko as DataAppBuilder
|
|
3678
3680
|
};
|
|
@@ -1 +1,68 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../chunks/validation-BVpqRFar.js"),V=require("../chunks/index-BxM99sFL.js"),m=require("react"),N=require("react/jsx-runtime"),z=require("../chunks/validators-jpoYhpHh.js");require("../chunks/catalog-field-grounding-8L9I0zdg.js");const Q=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"],B=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"];function R(e){if(!e)return{};const t=F(e.executionResult),r=L(e,t),n=J(r);return{...e,...Object.keys(r).length?{resultSets:r}:{},...n?{columns:n.columns,records:n.records,rowCount:n.rowCount}:{}}}function L(e,t){const r=U(e.resultSets);for(const i of Q){if(r[i]){r[i]=M(r[i]);continue}const a=W(e[i]);if(!a.length)continue;const s=t.length?t:H(a);r[i]={records:O(a,s),columns:s,rowCount:a.length}}const n=Y(e.executionResult);return n&&n.records.length>0&&!r.records&&(r.records=n),r}function U(e){return Object.fromEntries(Object.entries(e||{}).map(([t,r])=>[t,M(r)]))}function M(e){var t;return{...e,records:O(e.records||[],e.columns||[]),rowCount:e.rowCount??((t=e.records)==null?void 0:t.length)??0}}function J(e){var t;for(const r of B)if((t=e[r])!=null&&t.records.length)return e[r];return Object.values(e).find(r=>r.records.length)||Object.values(e)[0]}function Y(e){const t=e==null?void 0:e.result;if(!(!t||t.kind!=="records"&&t.kind!=="sql"))return{records:O(t.records,t.columns),columns:t.columns,rowCount:t.rowCount??t.records.length}}function F(e){const t=e==null?void 0:e.result;return!t||t.kind!=="records"&&t.kind!=="sql"?[]:t.columns}function W(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object"&&!Array.isArray(t))):[]}function O(e,t){return t.length?e.map(r=>{const n={};return t.forEach((i,a)=>{const s=X(r,{name:i.key,label:i.label,fallbackNames:[i.name,Object.keys(r)[a]]});s!==void 0&&(n[i.key]=s)}),Object.keys(n).length?n:r}):e}function H(e){return Array.from(new Set(e.flatMap(r=>Object.keys(r)))).map(r=>({key:r,name:r,label:r}))}function X(e,t){const r=[t.name,t.label,...t.fallbackNames||[]].filter(n=>!!n);for(const n of r)if(Object.prototype.hasOwnProperty.call(e,n))return e[n]}function G(e){return e}function Z(e){return e}const ee={filter(e){return{...e,kind:"filter"}},control(e){return{...e,kind:"control"}},sqlParam(e){return{...e,kind:"control",role:"sqlParam"}},derivedField(e){return{...e,kind:"derived_field",expressionLanguage:e.expressionLanguage||"semaphor_sql_template"}},metric(e){return{...e,queryKind:"metric"}},analysis(e){return{...e,queryKind:"analysis"}},records(e){return{...e,queryKind:"records"}},inputOptions(e){return{...e,queryKind:"inputOptions"}},sql(e){return{...e,queryKind:"sql"}},matrix(e){return{...e,queryKind:"matrix"}}};function P(){return{executeAnalysis:(e,t,r)=>S(e,t,r??{}).then(R),executeMetric:(e,t)=>S(e,t),executeRecords:(e,t)=>S(e,t),executeInputOptions:(e,t)=>S(e,t),executeSql:(e,t)=>S(e,t),executeMatrix:(e,t)=>S(e,t)}}async function S(e,t,r){if(!t.token)throw new Error("SemaphorDataAppProvider needs a token to execute queries.");const n=ue(t),i=te(e,n);let a;try{a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.token}`},body:JSON.stringify({intent:e,activeInputs:t.activeInputs,...r?{analysisOptions:r}:{},resultShape:e.kind})})}catch(d){throw new Error(`${i}: ${d instanceof Error?d.message:String(d)}`)}const s=await oe(a);if(!a.ok||s.error)throw new Error(`${i}: ${s.error||`Semaphor Data App execution failed with status ${a.status}.`}`);return s}function te(e,t){return[`Semaphor ${e.kind} query`,e.id?`id=${e.id}`:void 0,e.label?`label=${e.label}`:void 0,re(e),`endpoint=${ne(t)}`].filter(r=>!!r).join(" ")}function re(e){const t="source"in e?e.source:void 0;if(!(!t||typeof t!="object")){if(t.kind==="semantic")return`source=${[t.domainId,t.datasetId||t.datasetName].filter(Boolean).join("/")}`;if(t.kind==="physical")return`source=${[t.connectionId,t.databaseName,t.schemaName,t.tableName].filter(Boolean).join("/")}`;if(t.kind==="sql")return t.connectionId?`source=${t.connectionId}`:void 0}}function ne(e){if(!e)return"/api/v1/data-app/execute";try{return new URL(e,"http://localhost").pathname}catch{return e}}async function oe(e){const t=await e.text().catch(()=>"");if(!t.trim())return e.ok?{error:"Semaphor Data App execution returned an empty response."}:{};try{return JSON.parse(t)}catch{return e.ok?{error:"Semaphor Data App execution returned invalid JSON.",details:t}:{error:ie(e,t),details:t}}}function ie(e,t){const r=e.statusText?` ${e.statusText}`:"",n=t.replace(/\s+/g," ").trim();return n?`Semaphor Data App execution failed with status ${e.status}${r}: ${n.slice(0,240)}`:`Semaphor Data App execution failed with status ${e.status}${r}.`}function ue(e){const t=ae(e).replace(/\/+$/,"");return t?t.endsWith("/api")?`${t}/v1/data-app/execute`:`${t}/api/v1/data-app/execute`:"/api/v1/data-app/execute"}function ae(e){if(e.apiBaseUrl)return e.apiBaseUrl;if(!e.token)return"";try{return V.jwtDecode(e.token).apiServiceUrl||""}catch{return""}}const b=m.createContext({});function j(){if(!(typeof window>"u"))return window.__SEMAPHOR_DATA_APP_RUNTIME__}function T(){return m.useContext(b)}function se({token:e,apiBaseUrl:t,executor:r,children:n}){var o;const i=j(),a=((o=i==null?void 0:i.authToken)==null?void 0:o.accessToken)||e,s=(i==null?void 0:i.dataApiBaseUrl)||(i==null?void 0:i.apiBaseUrl)||t,d=m.useMemo(()=>P(),[]),c=r||d,l=m.useMemo(()=>({token:a,apiBaseUrl:s,executor:c}),[s,c,a]);return N.jsx(b.Provider,{value:l,children:n})}const g={value:null},x={},ce={records:[]},k={options:[]},le={records:[]},D={};function de(e){const t=u.toSemaphorActiveInputSnapshots(e.inputs),r=u.toSemaphorAnalysisQueryOptions(e);try{const n=u.toSemaphorAnalysisIntent(e),i=y(n);return i?{error:i,activeInputs:t,analysisOptions:r,queryKey:h(void 0,t,i,r),idleData:x}:{intent:n,error:null,activeInputs:t,analysisOptions:r,queryKey:h(n,t,void 0,r),idleData:x}}catch(n){const i=f(n);return{error:i,activeInputs:t,analysisOptions:r,queryKey:h(void 0,t,i,r),idleData:x}}}function pe(e){const t=u.toSemaphorActiveInputSnapshots(e.inputs);try{const r=u.toSemaphorMetricIntent(e),n=y(r);return n?{error:n,activeInputs:t,queryKey:h(void 0,t,n),idleData:g}:{intent:r,error:null,activeInputs:t,queryKey:h(r,t),idleData:g}}catch(r){const n=f(r);return{error:n,activeInputs:t,queryKey:h(void 0,t,n),idleData:g}}}function me(e){const t=u.toSemaphorActiveInputSnapshots(e.inputs),r=ce;try{const n=u.toSemaphorRecordsIntent(e),i=y(n);return i?{error:i,activeInputs:t,queryKey:h(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:h(n,t),idleData:r}}catch(n){const i=f(n);return{error:i,activeInputs:t,queryKey:h(void 0,t,i),idleData:r}}}function he(e){try{const t=u.toSemaphorInputOptionsIntent(e),r=y(t);return r?{error:r,queryKey:h(void 0,void 0,r),idleData:k}:{intent:t,error:null,queryKey:h(t),idleData:k}}catch(t){const r=f(t);return{error:r,queryKey:h(void 0,void 0,r),idleData:k}}}function fe(e){const t=u.toSemaphorActiveInputSnapshots(e.inputs),r=le;try{const n=u.toSemaphorSqlIntent(e),i=y(n);return i?{error:i,activeInputs:t,queryKey:h(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:h(n,t),idleData:r}}catch(n){const i=f(n);return{error:i,activeInputs:t,queryKey:h(void 0,t,i),idleData:r}}}function Se(e){const t=u.toSemaphorActiveInputSnapshots(e.inputs);try{const r=u.toSemaphorMatrixIntent(e),n=y(r);return n?{error:n,activeInputs:t,queryKey:h(void 0,t,n),idleData:D}:{intent:r,error:null,activeInputs:t,queryKey:h(r,t),idleData:D}}catch(r){const n=f(r);return{error:n,activeInputs:t,queryKey:h(void 0,t,n),idleData:D}}}function f(e){return e instanceof Error?e:new Error(String(e))}function y(e){const t=z.validateSemaphorAnalyticsIntent(e);if(t.ok)return null;const r=t.errors.map(n=>n.path?`${n.code} at ${n.path}: ${n.message}`:`${n.code}: ${n.message}`).join("; ");return new Error(`Invalid Semaphor analytics intent. ${r}`)}function h(e,t,r,n){return JSON.stringify({intent:e,activeInputs:t,analysisOptions:n,error:r==null?void 0:r.message})}function ye(e){const[t,r]=m.useState(e.defaultValue),n=Object.prototype.hasOwnProperty.call(e,"value"),i=n?e.value:t,a=m.useMemo(()=>u.normalizeSemaphorInputOptions(e.options),[e.options]),s=m.useCallback(c=>{var o;const l=c;(o=e.onValueChange)==null||o.call(e,l),n||r(l)},[n,e]),d=m.useCallback(()=>s(void 0),[s]);return m.useMemo(()=>{const c=u.toSemaphorInputSpec(e);return{id:e.id,kind:e.kind,label:e.label,field:c.field,operator:c.operator,controlRole:e.kind==="control"?e.role:void 0,value:i,options:a,isActive:u.hasSemaphorInputValue(i),setValue:s,clear:d,toAnalyticsInput:()=>({inputId:c.inputId,field:c.field,kind:e.kind,label:e.label,value:i,isActive:u.hasSemaphorInputValue(i),operator:c.operator,controlRole:e.kind==="control"?e.role:void 0})}},[d,a,s,e,i])}function ve(e){const[t,r]=m.useState(()=>Ae(e));return m.useEffect(()=>{r(n=>{let i=n;for(const a of e)!Object.prototype.hasOwnProperty.call(i,a.id)&&a.defaultValue!==void 0&&(i={...i,[a.id]:a.defaultValue});return i})},[e]),m.useMemo(()=>e.map(n=>{const i=Object.prototype.hasOwnProperty.call(n,"value"),a=i?n.value:t[n.id],s=u.normalizeSemaphorInputOptions(n.options),d=o=>{var p;(p=n.onValueChange)==null||p.call(n,o),i||r(v=>({...v,[n.id]:o}))},c=()=>d(void 0),l=u.toSemaphorInputSpec(n);return{id:n.id,kind:n.kind,label:n.label,field:l.field,operator:l.operator,controlRole:n.kind==="control"?n.role:void 0,value:a,options:s,isActive:u.hasSemaphorInputValue(a),setValue:d,clear:c,toAnalyticsInput:()=>({inputId:l.inputId,field:l.field,kind:n.kind,label:n.label,value:a,isActive:u.hasSemaphorInputValue(a),operator:l.operator,controlRole:n.kind==="control"?n.role:void 0})}}),[e,t])}function qe(e,t={}){const r=m.useMemo(()=>t.inputs?{...e,inputs:t.inputs}:e,[t.inputs,e]),n=m.useMemo(()=>{switch(r.queryKind){case"metric":return{queryKind:r.queryKind,request:pe(r)};case"analysis":return{queryKind:r.queryKind,request:de(r)};case"records":return{queryKind:r.queryKind,request:me(r)};case"inputOptions":return{queryKind:r.queryKind,request:he(r)};case"sql":return{queryKind:r.queryKind,request:fe(r)};case"matrix":return{queryKind:r.queryKind,request:Se(r)};default:return E(r)}},[r]),i=m.useCallback(o=>{var v,q,K,w,C,I,$,A,_;const p=n.request;if(p.intent)switch(n.queryKind){case"metric":return(v=o.executor)==null?void 0:v.executeMetric(p.intent,o);case"analysis":return(K=(q=o.executor)==null?void 0:q.executeAnalysis)==null?void 0:K.call(q,p.intent,o,p.analysisOptions);case"records":return(w=o.executor)==null?void 0:w.executeRecords(p.intent,o);case"inputOptions":return(C=o.executor)==null?void 0:C.executeInputOptions(p.intent,o);case"sql":return($=(I=o.executor)==null?void 0:I.executeSql)==null?void 0:$.call(I,p.intent,o);case"matrix":return(_=(A=o.executor)==null?void 0:A.executeMatrix)==null?void 0:_.call(A,p.intent,o);default:return E(n)}},[n]),a=Ie(n.request.queryKey,i,n.request.idleData,n.request.activeInputs),s=n.request.error?n.request.idleData:a.data,d=n.request.error?"error":a.status,c=!n.request.error&&a.status==="loading",l=n.request.error||a.error;switch(n.queryKind){case"metric":{const o=s;return{id:r.id,intent:n.request.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,executionResult:o==null?void 0:o.executionResult,status:d,isLoading:c,error:l}}case"analysis":{const o=R(s);return{id:r.id,intent:n.request.intent,...o||{},status:d,isLoading:c,error:l}}case"records":{const o=s;return{id:r.id,intent:n.request.intent,records:(o==null?void 0:o.records)||[],columns:o==null?void 0:o.columns,rowCount:o==null?void 0:o.rowCount,pagination:o==null?void 0:o.pagination,executionResult:o==null?void 0:o.executionResult,status:d,isLoading:c,error:l}}case"inputOptions":{const o=s;return{id:r.id,intent:n.request.intent,options:(o==null?void 0:o.options)||[],executionResult:o==null?void 0:o.executionResult,status:d,isLoading:c,error:l}}case"sql":{const o=s;return{id:r.id,intent:n.request.intent,records:(o==null?void 0:o.records)||[],columns:o==null?void 0:o.columns,rowCount:o==null?void 0:o.rowCount,pagination:o==null?void 0:o.pagination,output:o==null?void 0:o.output,rowLimitExceeded:o==null?void 0:o.rowLimitExceeded,executionResult:o==null?void 0:o.executionResult,status:d,isLoading:c,error:l}}case"matrix":{const o=s;return{id:r.id,intent:n.request.intent,matrixResult:o==null?void 0:o.matrixResult,grid:o==null?void 0:o.grid,expansion:o==null?void 0:o.expansion,executionResult:o==null?void 0:o.executionResult,status:d,isLoading:c,error:l}}default:return E(n)}}function Ie(e,t,r,n){const i=T(),a=m.useRef(t),s=m.useRef(n),[d,c]=m.useState({status:"idle",data:r,error:null});return a.current=t,s.current=n,m.useEffect(()=>{let l;try{l=a.current({...i,activeInputs:s.current})}catch(p){c({status:"error",data:r,error:f(p)});return}if(!l){c({status:"idle",data:r,error:null});return}let o=!1;return c(p=>({status:"loading",data:p.data,error:null})),l.then(p=>{o||c({status:"success",data:p,error:null})}).catch(p=>{o||c({status:"error",data:r,error:f(p)})}),()=>{o=!0}},[r,e,i]),d}function Ae(e){return Object.fromEntries(e.filter(t=>t.defaultValue!==void 0).map(t=>[t.id,t.defaultValue]))}function E(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}exports.hasSemaphorInputValue=u.hasSemaphorInputValue;exports.normalizeSemaphorAnalysisQueryOptions=u.normalizeSemaphorAnalysisQueryOptions;exports.normalizeSemaphorInputOptions=u.normalizeSemaphorInputOptions;exports.toSemaphorActiveInputSnapshots=u.toSemaphorActiveInputSnapshots;exports.toSemaphorAnalysisIntent=u.toSemaphorAnalysisIntent;exports.toSemaphorAnalysisQueryOptions=u.toSemaphorAnalysisQueryOptions;exports.toSemaphorInputBinding=u.toSemaphorInputBinding;exports.toSemaphorInputBindings=u.toSemaphorInputBindings;exports.toSemaphorInputOptionsIntent=u.toSemaphorInputOptionsIntent;exports.toSemaphorInputSnapshots=u.toSemaphorInputSnapshots;exports.toSemaphorInputSpec=u.toSemaphorInputSpec;exports.toSemaphorMatrixIntent=u.toSemaphorMatrixIntent;exports.toSemaphorMetricIntent=u.toSemaphorMetricIntent;exports.toSemaphorRecordsIntent=u.toSemaphorRecordsIntent;exports.toSemaphorSqlIntent=u.toSemaphorSqlIntent;exports.validateSemaphorDataAppQuerySpecs=u.validateSemaphorDataAppQuerySpecs;exports.SemaphorDataAppContext=b;exports.SemaphorDataAppProvider=se;exports.createSemaphorQueryExecutor=P;exports.defineSemaphorDataApp=G;exports.defineSemaphorInput=Z;exports.normalizeSemaphorAnalysisPayload=R;exports.readWindowRuntime=j;exports.semaphor=ee;exports.useSemaphorDataAppRuntime=T;exports.useSemaphorInput=ye;exports.useSemaphorInputs=ve;exports.useSemaphorQuery=qe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../data-app-sdk-adapters/index.cjs"),s=require("react/jsx-runtime"),d=require("react"),ee=require("../chunks/search-Dq1Mbb03.js"),ze=require("../chunks/x-B_cx7LwM.js"),pt=require("../chunks/validators-lWo8m0Q7.js");require("../chunks/analyze-result-contract-CtXfp3nv.js");function J(e,t,r={}){return{...r,name:e,role:t}}function ft(e){return e}function mt(e){return e}const ht={source:{semantic(e){return{...e,kind:"semantic"}},sql(e){return{...e,kind:"sql"}}},field:{measure(e,t){return J(e,"measure",t)},dimension(e,t){return J(e,"dimension",t)},date(e,t){return J(e,"date",t)},id(e,t){return J(e,"id",t)}},filter(e){return{...e,kind:"filter"}},bindInput(e,t){return{toAnalyticsInput(){const[r]=b.toSemaphorInputSnapshots([e]),n=b.toSemaphorInputBinding({...t,inputId:t.inputId||r.inputId});return{...r,inputId:n.inputId,...n.kind?{kind:n.kind}:{},...n.controlRole?{controlRole:n.controlRole}:{},...n.operator?{operator:n.operator}:{},...n.field?{field:n.field}:{},...n.relationshipHint?{relationshipHint:n.relationshipHint}:{}}}}},control(e){return{...e,kind:"control"}},sqlParam(e){return{...e,kind:"control",role:"sqlParam"}},derivedField(e){return{...e,kind:"derived_field",expressionLanguage:e.expressionLanguage||"semaphor_sql_template"}},metric(e){return{...e,queryKind:"metric"}},analysis(e){return{...e,queryKind:"analysis"}},records(e){return{...e,queryKind:"records"}},inputOptions(e){return{...e,queryKind:"inputOptions"}},sql(e){return{...e,queryKind:"sql"}},matrix(e){return{...e,queryKind:"matrix"}}},ue=10,le=100,gt=25,yt=500,Ve={enabled:!1,queries:[],getQuery:()=>{},getQueries:()=>[]},be=d.createContext(null),Se=d.createContext(null),Ie=d.createContext(void 0),$=[];function vt({debug:e,children:t}){const r=d.useMemo(()=>pr(e),[e]),[n,i]=d.useReducer(nr,r,Ze),u=d.useRef(n),l=d.useId(),[c,p]=d.useState({open:!1});u.current=n,d.useEffect(()=>{i({type:"config",config:r})},[r]),d.useEffect(()=>{if(!n.enabled||!n.exposeWindowBridge||typeof window>"u")return;const v=lr(()=>u.current);return xt({ownerId:l,bridge:v}),()=>{bt(l)}},[l,n.enabled,n.exposeWindowBridge]);const f=d.useMemo(()=>({state:n,dispatch:i}),[n]),g=d.useCallback(v=>{p({open:!0,focus:v})},[]),h=d.useCallback(()=>{p(v=>({...v,open:!1}))},[]),y=d.useCallback(v=>{p({open:!0,focus:v})},[]),m=d.useMemo(()=>({open:c.open,focus:c.focus,openDevtools:g,closeDevtools:h,focusTrace:y}),[h,y,g,c.focus,c.open]);return s.jsx(be.Provider,{value:f,children:s.jsx(Se.Provider,{value:m,children:t})})}function xt(e){const t=$.findIndex(r=>r.ownerId===e.ownerId);t>=0&&$.splice(t,1),$.push(e),Pe()}function bt(e){const t=$.findIndex(r=>r.ownerId===e);t>=0&&$.splice(t,1),Pe()}function Pe(){if(typeof window>"u")return;const e=$[$.length-1];e?window.__SEMAPHOR_DEVTOOLS__=e.bridge:delete window.__SEMAPHOR_DEVTOOLS__}function St({id:e,title:t,children:r}){const n=d.useMemo(()=>({id:e,title:t}),[e,t]);return s.jsx(Ie.Provider,{value:n,children:r})}function It({buttonPosition:e="bottom-right",initialIsOpen:t=!1,panelPosition:r="right",className:n,style:i}={}){const u=we(),l=d.useContext(Se),[c,p]=d.useState(""),[f,g]=d.useState(!1),h=d.useRef(null),y=d.useRef(null),m=l==null?void 0:l.openDevtools,v=l==null?void 0:l.closeDevtools,R=(l==null?void 0:l.open)===!0;d.useEffect(()=>{Xe()},[]),d.useEffect(()=>{t&&u.enabled&&(m==null||m())},[t,u.enabled,m]),d.useEffect(()=>{if(!R||!v)return;const I=q=>{var E,T;const C=q.target;C instanceof Node&&((E=h.current)!=null&&E.contains(C)||(T=y.current)!=null&&T.contains(C)||v())};return document.addEventListener("pointerdown",I,!0),document.addEventListener("mousedown",I,!0),document.addEventListener("click",I,!0),()=>{document.removeEventListener("pointerdown",I,!0),document.removeEventListener("mousedown",I,!0),document.removeEventListener("click",I,!0)}},[v,R]);const o=d.useMemo(()=>Ot(u.queries),[u.queries]),x=d.useMemo(()=>Lt(u.queries,c),[u.queries,c]),A=d.useMemo(()=>Bt(x),[x]),k=d.useMemo(()=>Qe(x,l==null?void 0:l.focus)||x[0],[x,l==null?void 0:l.focus]);return!u.enabled||!l?null:s.jsxs(s.Fragment,{children:[s.jsxs("button",{ref:h,type:"button","aria-label":"Open Semaphor DevTools",title:"Open Semaphor DevTools",className:n?`${O} ${n}`:O,style:{...a.launcher,...Jt(e),...Yt(o.severity),...i},onClick:()=>l.openDevtools(),children:[s.jsx(jt,{}),s.jsx("span",{style:a.launcherText,children:o.total}),o.issueCount>0?s.jsx("span",{style:a.launcherIssueCount,children:o.issueCount}):null]}),l.open?s.jsxs("div",{ref:y,role:"dialog","aria-label":"Semaphor DevTools","aria-modal":"false",className:O,style:{...a.panel,...Xt(r),...f?a.panelFullscreen:null},children:[s.jsxs("div",{style:a.panelHeader,children:[s.jsxs("div",{style:a.panelTitleBlock,children:[s.jsx("div",{style:a.panelTitle,children:"Semaphor DevTools"}),s.jsxs("div",{style:a.panelSubtitle,children:[o.total," queries · ",o.loading," loading ·"," ",o.failed," failed"]})]}),s.jsxs("div",{style:a.panelActions,children:[s.jsx("button",{type:"button","aria-label":f?"Exit fullscreen Semaphor DevTools":"Enter fullscreen Semaphor DevTools",title:f?"Exit fullscreen Semaphor DevTools":"Enter fullscreen Semaphor DevTools",style:a.iconButton,onClick:()=>g(I=>!I),children:f?s.jsx(ee.Minimize2,{size:15}):s.jsx(ee.Maximize2,{size:15})}),s.jsx("button",{type:"button","aria-label":"Close Semaphor DevTools",style:a.iconButton,onClick:l.closeDevtools,children:s.jsx(ze.X,{size:15})})]})]}),s.jsxs("label",{style:a.searchBox,children:[s.jsx(ee.Search,{size:14}),s.jsx("input",{"aria-label":"Search Semaphor traces",value:c,onChange:I=>p(I.currentTarget.value),placeholder:"Search traces",style:a.searchInput})]}),s.jsxs("div",{style:{...a.panelBody,...Zt(r)},children:[s.jsx("div",{style:{...a.queryList,...er()},"aria-label":"Registered queries",children:x.length?A.map(I=>s.jsxs("div",{style:a.queryGroup,children:[s.jsxs("div",{style:a.queryGroupHeader,children:[s.jsx("span",{children:I.title}),s.jsx("span",{style:a.queryGroupCount,children:I.traces.length})]}),I.traces.length?I.traces.map(q=>{var D;const C=Mt(q,k),E=qe(q),T=He(q.queryKind),S=se(q);return s.jsxs("button",{type:"button",title:`${E} · ${T} · ${S}`,style:{...a.queryListItem,...C?a.queryListItemSelected:null},onClick:()=>l.focusTrace({traceId:q.traceId,queryId:q.queryId,viewId:q.viewId}),children:[s.jsxs("span",{style:a.queryListItemHeader,children:[s.jsx(Et,{status:(D=q.latestAttempt)==null?void 0:D.status}),s.jsx("span",{style:a.queryListTitle,title:E,children:E}),s.jsx("span",{style:a.queryListKindChip,children:T})]}),s.jsx("span",{className:`${O}-source`,style:a.queryListSource,title:S,children:S})]},ve(q))}):s.jsx("div",{style:a.queryGroupEmpty,children:"No input traces"})]},I.title)):s.jsx("div",{style:a.emptyState,children:"No matching traces"})}),s.jsx(Rt,{trace:k})]})]}):null]})}function wt({queryId:e,viewId:t,label:r,className:n,style:i}={}){var h,y;const u=we(),l=d.useContext(Se),c=d.useContext(Ie);d.useEffect(()=>{Xe()},[]);const p=t||(c==null?void 0:c.id),f=d.useMemo(()=>Kt(u.queries,{queryId:e,viewId:p}),[u.queries,e,p]);if(!u.enabled||!l||!f)return null;const g=r||`Inspect ${qe(f)}`;return s.jsxs("button",{type:"button","aria-label":g,title:g,className:n?`${O} ${n}`:O,style:{...a.inspectButton,...tr((h=f.latestAttempt)==null?void 0:h.status),...i},onClick:()=>l.openDevtools({traceId:f.traceId,queryId:f.queryId,viewId:f.viewId}),children:[s.jsx(ee.Eye,{size:13}),s.jsx("span",{style:a.inspectButtonText,children:((y=f.latestAttempt)==null?void 0:y.status)||"idle"})]})}function we(){const e=d.useContext(be);return!e||!e.state.enabled?Ve:ne(e.state)}function qt({spec:e,queryKind:t,queryKey:r,intent:n,activeInputs:i,debug:u}){const l=d.useContext(be),c=d.useContext(Ie),p=!!(l!=null&&l.state.enabled),f=l==null?void 0:l.dispatch,g=fr(e),h=e.label,y=d.useMemo(()=>JSON.stringify(e),[e]),m=d.useMemo(()=>JSON.stringify(i||[]),[i]),v=d.useMemo(()=>JSON.stringify(n||null),[n]),R=d.useRef(e),o=d.useRef(y),x=d.useRef(n),A=d.useRef(v),k=d.useRef(i),I=d.useRef(m);o.current!==y&&(o.current=y,R.current=e),A.current!==v&&(A.current=v,x.current=n),I.current!==m&&(I.current=m,k.current=i);const q=R.current,C=x.current,E=k.current,T=d.useId(),S=d.useMemo(()=>g||`query_${it(r)}`,[r,g]),D=(u==null?void 0:u.viewId)||(c==null?void 0:c.id),Ae=(u==null?void 0:u.title)||(c==null?void 0:c.title),K=d.useMemo(()=>[D||"unscoped-view",S,T].join("::"),[S,T,D]),ke=d.useMemo(()=>({traceKey:K,spec:q,queryId:S,queryLabel:h,queryKind:t,builder:mr(t),viewId:D,viewTitle:Ae,intent:C,activeInputs:E,clientWarnings:g?[]:["Query spec is missing an explicit id; using an opaque internal id."]}),[S,t,g,h,q,E,C,K,D,Ae]);d.useEffect(()=>{if(!(!p||!f))return f({type:"register",descriptor:ke}),()=>{f({type:"unregister",traceKey:K})}},[ke,f,p,K]);const L=d.useCallback((j,_)=>{!p||!f||f({type:"event",traceKey:K,event:j,latestAttempt:_})},[f,p,K]),Ce=d.useCallback(()=>{L({type:"query_started",queryId:S,at:Z()},{status:"loading"})},[L,S]),Te=d.useCallback((j,_)=>{const V=Fe(j),P=Ir(j),ct=wr(j);L({type:"query_succeeded",queryId:S,requestId:V,at:Z(),rowCount:P,durationMs:_},{requestId:V,status:"success",durationMs:_,rowCount:P,columnCount:ct,executionResult:_e(j)})},[L,S]),G=d.useCallback((j,_)=>{const V=Fe(j),P=j instanceof Error?j.message:String(j);L({type:"query_failed",queryId:S,requestId:V,at:Z(),errorMessage:P},{requestId:V,status:"error",durationMs:_,errorMessage:P,executionResult:_e(j)})},[L,S]),De=d.useCallback(j=>{L({type:"query_ignored_stale",queryId:S,at:Z(),reason:j})},[L,S]),Oe=d.useCallback(j=>{G(j,0)},[G]),ae=p?l==null?void 0:l.state.entries[K]:void 0;return d.useMemo(()=>({enabled:p,queryId:S,trace:ae?re(ae):void 0,start:Ce,success:Te,failure:G,ignored:De,validationFailure:Oe}),[p,G,De,S,Ce,Te,ae,Oe])}function jt(){return s.jsx("span",{style:a.logoMark,"aria-hidden":!0,children:s.jsxs("svg",{viewBox:"0 0 100 100",fill:"none",width:"16",height:"16",focusable:"false",children:[s.jsx("rect",{x:"20",y:"15",width:"60",height:"12",rx:"6",fill:"currentColor"}),s.jsx("rect",{x:"20",y:"35",width:"40",height:"12",rx:"6",fill:"currentColor"}),s.jsx("rect",{x:"40",y:"55",width:"40",height:"12",rx:"6",fill:"currentColor"}),s.jsx("rect",{x:"20",y:"75",width:"60",height:"12",rx:"6",fill:"currentColor"})]})})}function Rt({trace:e}){var m,v,R,o,x;if(!e)return s.jsx("div",{style:a.detailsPane,children:s.jsx("div",{style:a.emptyState,children:"No traces registered yet"})});const t=e.latestAttempt,r=t==null?void 0:t.executionResult,n=de((m=r==null?void 0:r.validation)==null?void 0:m.warnings),i=de((v=r==null?void 0:r.validation)==null?void 0:v.errors),u=de((R=r==null?void 0:r.coverage)==null?void 0:R.missingObligations),l=r==null?void 0:r.compiledQuery,c=t!=null&&t.errorMessage?[t.errorMessage]:[],p=[...e.clientWarnings,...n,...i,...u],f=se(e),g=e.viewId?`${e.viewId} - ${e.queryId}`:e.queryId,h=e.inputsApplied.length>0,y=!!(l||(o=e.server)!=null&&o.compiledSql);return s.jsxs("div",{style:a.detailsPane,children:[s.jsxs("div",{style:a.detailsHeader,children:[s.jsxs("div",{style:a.detailsHeaderTopRow,children:[s.jsx("span",{"aria-hidden":!0,style:{...a.detailsHeaderStatusDot,...Ye(t==null?void 0:t.status)}}),s.jsx("span",{style:a.detailsTitle,children:qe(e)}),s.jsx("span",{style:a.detailsKindChip,children:He(e.queryKind)})]}),s.jsxs("div",{style:a.detailsCaption,children:[s.jsx("span",{style:{...a.detailsCaptionItem,...a.detailsCaptionItemMono},children:g}),s.jsxs("span",{style:a.detailsCaptionItem,children:[s.jsx("span",{style:a.detailsCaptionLabel,children:"Source"}),s.jsx("span",{style:a.detailsCaptionValue,children:f})]}),s.jsxs("span",{style:a.detailsCaptionItem,children:[s.jsx("span",{style:a.detailsCaptionLabel,children:"Rows"}),s.jsx("span",{style:a.detailsCaptionValue,children:Vt(t==null?void 0:t.rowCount)})]}),s.jsxs("span",{style:a.detailsCaptionItem,children:[s.jsx("span",{style:a.detailsCaptionLabel,children:"Duration"}),s.jsx("span",{style:a.detailsCaptionValue,children:Pt(t==null?void 0:t.durationMs)})]})]})]}),c.length?s.jsx(Le,{tone:"error",title:"Error",items:c}):null,p.length?s.jsx(Le,{tone:"warning",title:"Warnings",items:p}):null,s.jsx(At,{trace:e}),s.jsx(kt,{trace:e}),h?s.jsx(Tt,{inputs:e.inputsApplied}):null,y?s.jsx(te,{title:"Compiled query",children:s.jsx(Dt,{compiledQuery:l,compiledSql:(x=e.server)==null?void 0:x.compiledSql})}):null,s.jsx(te,{title:"Lifecycle events",children:e.recentEvents.length?s.jsx("div",{style:a.eventList,children:e.recentEvents.slice(-5).map((A,k)=>s.jsxs("div",{style:a.eventRow,children:[s.jsx("span",{style:a.eventType,children:Ht(A)}),s.jsx("span",{style:a.eventMeta,children:Ut(A)})]},`${A.type}:${A.at}:${k}`))}):s.jsx("div",{style:a.mutedText,children:"No attempts recorded"})}),s.jsx(te,{title:"Raw trace JSON",children:s.jsx("pre",{style:a.codeBlock,children:Qt(e)})})]})}function Le({tone:e,title:t,items:r}){const n=e==="error"?a.alertCardError:a.alertCardWarning;return s.jsxs("div",{style:{...a.alertCard,...n},children:[s.jsx("div",{style:a.alertCardTitle,children:t}),r.length>1?s.jsx("ul",{style:a.alertCardList,children:r.map((i,u)=>s.jsx("li",{children:i},`${e}-${u}`))}):s.jsx("div",{children:r[0]})]})}function Et({status:e}){return s.jsx("span",{"aria-hidden":!0,style:{...a.statusDot,...Ye(e)}})}function te({title:e,children:t}){return s.jsxs("details",{style:a.disclosure,children:[s.jsx("summary",{style:a.disclosureSummary,children:e}),s.jsx("div",{style:a.disclosureBody,children:t})]})}function At({trace:e}){var u;const t=(u=e.projectionFieldRefs)!=null&&u.length?e.projectionFieldRefs:e.fieldRefs,r=e.inputFieldRefs||[],n=$t(t),i=_t(e,n,t);return s.jsxs("div",{style:a.recipe,children:[s.jsx("div",{style:a.recipeSummary,children:i.map(l=>s.jsxs("div",{style:a.recipeSummaryRow,children:[s.jsx("span",{style:a.recipeSummaryLabel,children:l.label}),s.jsx("span",{style:a.recipeSummaryValue,title:l.value,children:l.value})]},l.label))}),s.jsx(M,{title:"Measures",fields:n.measures}),s.jsx(M,{title:"Time fields",fields:n.timeFields}),s.jsx(M,{title:"Dimensions",fields:n.dimensions,emptyText:"No dimensions selected"}),s.jsx(M,{title:"Identifiers",fields:n.identifiers}),s.jsx(M,{title:"Other fields",fields:n.other}),s.jsx(M,{title:"Input bindings",fields:r})]})}function kt({trace:e}){return!e.sourceRefs.length&&!e.fieldRefs.length?null:s.jsx(te,{title:"Sources and field refs",children:s.jsxs("div",{style:a.traceLineage,children:[s.jsx(Ct,{sources:e.sourceRefs}),s.jsx(M,{title:"All field refs",fields:e.fieldRefs,emptyText:"No field refs captured"})]})})}function Ct({sources:e}){return s.jsxs("div",{style:a.recipeGroup,children:[s.jsxs("div",{style:a.recipeGroupHeader,children:[s.jsx("span",{style:a.recipeGroupTitle,children:"Sources"}),s.jsx("span",{style:a.recipeGroupCount,children:e.length})]}),e.length?s.jsx("div",{style:a.recipeFieldList,children:e.map((t,r)=>s.jsxs("div",{style:a.recipeFieldRow,title:N(t),children:[s.jsx("span",{style:a.recipeFieldName,children:N(t)}),s.jsx("span",{style:a.recipeFieldMeta,children:t.kind})]},`${N(t)}:${r}`))}):s.jsx("div",{style:a.recipeEmptyText,children:"No sources captured"})]})}function M({title:e,fields:t,emptyText:r}){return!t.length&&!r?null:s.jsxs("div",{style:a.recipeGroup,children:[s.jsxs("div",{style:a.recipeGroupHeader,children:[s.jsx("span",{style:a.recipeGroupTitle,children:e}),s.jsx("span",{style:a.recipeGroupCount,children:t.length})]}),t.length?s.jsx("div",{style:a.recipeFieldList,children:t.map((n,i)=>{const u=Ge(n),l=n.dataType&&n.dataType!=="unknown"?n.dataType:void 0,c=n.source?N(n.source):void 0,p=[u,l,c].filter(Boolean).join(" · ");return s.jsxs("div",{style:a.recipeFieldRow,title:p,children:[s.jsx("span",{style:a.recipeFieldName,children:u}),s.jsxs("span",{style:a.recipeFieldMeta,children:[l?s.jsx("span",{children:l}):null,l&&c?s.jsx("span",{style:a.recipeFieldMetaDivider,children:" · "}):null,c?s.jsx("span",{children:c}):null]})]},`${je(n)}:${i}`)})}):s.jsx("div",{style:a.recipeEmptyText,children:r})]})}function Tt({inputs:e}){return s.jsxs("div",{style:a.inputsAppliedBlock,children:[s.jsxs("div",{style:a.inputsAppliedHeader,children:[s.jsx("span",{style:a.inputsAppliedTitle,children:"Inputs applied"}),s.jsx("span",{style:a.inputsAppliedCount,children:e.length})]}),s.jsx("div",{style:a.inputRecipeList,children:e.map(t=>{const r=Je(t);return s.jsxs("div",{style:a.inputRecipeRow,title:r.title,children:[s.jsxs("div",{style:a.inputRecipeHeader,children:[s.jsx("span",{style:a.inputRecipeId,title:t.inputId,children:t.inputId}),r.operator?s.jsx("span",{style:a.inputOperatorBadge,children:r.operator}):null,s.jsx("span",{style:a.inputValuePreview,title:r.value,children:r.value})]}),r.binding?s.jsx("div",{style:a.inputRecipeBinding,title:r.binding,children:r.binding}):null]},t.inputId)})})]})}function Dt({compiledQuery:e,compiledSql:t}){return(e==null?void 0:e.kind)==="sql"?s.jsxs("div",{style:a.compiledQuery,children:[s.jsx(Q,{label:"SQL",value:e.sql}),e.pythonCode?s.jsx(Q,{label:"Python",value:e.pythonCode}):null,e.parameters?s.jsx(Q,{label:"Parameters",value:xe(e.parameters)}):null]}):t?s.jsx(Q,{label:"SQL",value:t}):s.jsx(Q,{label:"Compiled query",value:xe(e)})}function Q({label:e,value:t}){return s.jsxs("div",{style:a.codeBlockGroup,children:[s.jsx("div",{style:a.codeBlockLabel,children:e}),s.jsx("pre",{style:a.codeBlock,children:t})]})}function Ot(e){const t=e.filter(i=>{var u;return((u=i.latestAttempt)==null?void 0:u.status)==="error"}).length,r=e.filter(i=>{var u;return((u=i.latestAttempt)==null?void 0:u.status)==="loading"}).length,n=e.filter(i=>{var u,l,c,p;return i.clientWarnings.length>0||!!((p=(c=(l=(u=i.latestAttempt)==null?void 0:u.executionResult)==null?void 0:l.validation)==null?void 0:c.warnings)!=null&&p.length)}).length;return{total:e.length,failed:t,loading:r,warningCount:n,issueCount:t+n,severity:t?"error":n?"warning":"ok"}}function Lt(e,t){const r=t.trim().toLowerCase();return r?e.filter(n=>[n.queryId,n.queryLabel,n.viewId,n.builder,n.queryKind,se(n)].filter(Boolean).join(" ").toLowerCase().includes(r)):e}function Bt(e){const t=e.filter(i=>i.queryKind==="inputOptions"),r=new Set(t.map(ve));return[{title:"Cards",traces:e.filter(i=>!r.has(ve(i)))},{title:"Inputs",traces:t}]}function Qe(e,t){if(!(!(t!=null&&t.traceId)&&!(t!=null&&t.queryId)&&!(t!=null&&t.viewId)))return t.traceId?e.find(r=>r.traceId===t.traceId):e.find(r=>!(t.queryId&&r.queryId!==t.queryId||t.viewId&&r.viewId!==t.viewId))}function Kt(e,t){if(t.queryId)return Qe(e,t);if(!t.viewId)return;const r=e.filter(n=>n.viewId===t.viewId);return r.length===1?r[0]:void 0}function Mt(e,t){return!!(e&&t&&e.traceId===t.traceId)}function ve(e){return e.traceId}function He(e){switch(e){case"metric":return"metric";case"records":return"records";case"matrix":return"matrix";case"analysis":return"analysis";case"inputOptions":return"inputs";case"sql":return"sql";default:return oe(e)}}function qe(e){return e.queryLabel||e.viewId||e.queryId}function se(e){const t=e.sourceRefs.map(N);return t.length?t.length===1?t[0]:`${t[0]} + ${t.length-1} more`:"No source"}function $t(e){return e.reduce((t,r)=>(r.role==="measure"?t.measures.push(r):r.role==="date"?t.timeFields.push(r):r.role==="dimension"?t.dimensions.push(r):r.role==="id"?t.identifiers.push(r):t.other.push(r),t),{measures:[],timeFields:[],dimensions:[],identifiers:[],other:[]})}function _t(e,t,r){const n=[{label:"Operation",value:Ft(e)}],i=Wt(e,t,r);i&&n.push(i);const u=Nt(t);u&&n.push({label:"Grouped by",value:u});const l=zt(e.inputsApplied);return l&&n.push({label:"Filtered by",value:l}),n.push({label:"Source",value:se(e)}),n}function Ft(e){var t,r;if(e.queryKind==="records"&&((t=e.projectionFieldRefs)!=null&&t.length)&&e.projectionFieldRefs.every(n=>n.role==="measure")&&((r=e.latestAttempt)==null?void 0:r.rowCount)===1)return"KPI query";switch(e.queryKind){case"metric":return"KPI query";case"records":return"Records query";case"matrix":return"Matrix query";case"analysis":return"Analysis query";case"inputOptions":return"Input options query";case"sql":return"SQL query";default:return oe(e.queryKind)}}function Wt(e,t,r){if(e.queryKind==="records")return{label:t.measures.length?"Computes":"Selects",value:H(r)};if(e.queryKind==="inputOptions")return{label:"Options from",value:H(r)};if(t.measures.length)return{label:"Computes",value:H(t.measures)};if(r.length)return{label:"Uses",value:H(r)};if(e.queryKind==="sql")return{label:"Inspect",value:"Open compiled query for SQL or Python."}}function Nt(e){const t=[...e.dimensions,...e.timeFields];return t.length?H(t):void 0}function zt(e){if(e.length)return Ue(e.map(t=>{const r=Je(t);return[t.inputId,r.operator,r.value].filter(Boolean).join(" ")}))}function H(e){return Ue(e.map(Ge))}function Ue(e){const t=e.filter(Boolean);return t.length===0?"-":t.length===1?t[0]:t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t[t.length-1]}`}function Ge(e){return[e.aggregate,e.label||e.name].filter(Boolean).join(" ")}function Je(e){var l,c,p;const t=e.valuePreview||"redacted",r=((l=e.fieldRef)==null?void 0:l.label)||((c=e.fieldRef)==null?void 0:c.name),n=(p=e.fieldRef)!=null&&p.source?N(e.fieldRef.source):void 0,i=[r?`on ${r}`:void 0,n].filter(Boolean).join(" · "),u=[e.inputId,e.operator,t,i].filter(Boolean).join(" - ");return{operator:e.operator,value:t,binding:i,title:u}}function N(e){return e.kind==="semantic"?e.datasetName||e.datasetId||e.domainId:e.kind==="physical"?[e.schemaName,e.tableName].filter(Boolean).join(".")||e.tableName:e.connectionId?`SQL ${e.connectionId}`:"SQL source"}function Vt(e){return typeof e=="number"?e.toLocaleString():"-"}function Pt(e){return typeof e=="number"?`${Math.round(e)}ms`:"-"}function Qt(e){return xe(e)}function xe(e){return JSON.stringify(e,null,2)??"undefined"}function Ht(e){switch(e.type){case"query_started":return"Started";case"query_succeeded":return"Succeeded";case"query_failed":return"Failed";case"query_ignored_stale":return"Ignored stale";case"input_changed":return"Input changed";default:return Gt(e)}}function Ut(e){return[e.at,"durationMs"in e&&typeof e.durationMs=="number"?`${Math.round(e.durationMs)}ms`:void 0,"rowCount"in e&&typeof e.rowCount=="number"?`${e.rowCount} rows`:void 0,"reason"in e?e.reason:void 0,"errorMessage"in e?e.errorMessage:void 0].filter(Boolean).join(" - ")}function Gt(e){throw new Error(`Unsupported Semaphor trace event: ${JSON.stringify(e)}`)}function de(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Jt(e){return e==="relative"?{position:"relative",top:"auto",right:"auto",bottom:"auto",left:"auto"}:{top:e.startsWith("top")?20:"auto",right:e.endsWith("right")?20:"auto",bottom:e.startsWith("bottom")?20:"auto",left:e.endsWith("left")?20:"auto"}}function Yt(e){return e==="error"?{borderColor:"var(--sd-error-border)",background:"var(--sd-error-bg)",color:"var(--sd-error-fg)"}:e==="warning"?{borderColor:"var(--sd-warning-border)",background:"var(--sd-warning-bg)",color:"var(--sd-warning-fg)"}:{borderColor:"var(--sd-success-border)",background:"var(--sd-success-bg)",color:"var(--sd-success-fg)"}}function Xt(e){return e==="right"?{top:16,right:16,bottom:16,left:"auto",width:"min(720px, calc(100vw - 32px))",height:"auto",borderRadius:6}:{top:"auto",right:16,bottom:16,left:16,width:"auto",height:"min(420px, 45vh)",borderRadius:6}}function Zt(e){return e==="right"?{gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)"}:{gridTemplateColumns:"minmax(260px, 340px) minmax(0, 1fr)"}}function er(e){return{borderRight:"1px solid var(--sd-border)",borderBottom:0}}function Ye(e){return e==="error"?{background:"var(--sd-error-dot)"}:e==="success"?{background:"var(--sd-success-dot)"}:e==="loading"?{background:"var(--sd-loading-dot)"}:{background:"var(--sd-idle-dot)"}}function tr(e){return e==="error"?{borderColor:"var(--sd-error-border)",color:"var(--sd-error-fg)"}:e==="success"?{borderColor:"var(--sd-success-border)",color:"var(--sd-success-fg)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-border)",color:"var(--sd-fg-muted)"}}const Be="semaphor-devtools-stylesheet",O="semaphor-devtools",rr=`
|
|
2
|
+
.${O} {
|
|
3
|
+
--sd-bg: #ffffff;
|
|
4
|
+
--sd-bg-muted: #fafafa;
|
|
5
|
+
--sd-bg-raised: #ffffff;
|
|
6
|
+
--sd-bg-accent: #f4f4f5;
|
|
7
|
+
--sd-fg: #18181b;
|
|
8
|
+
--sd-fg-muted: #71717a;
|
|
9
|
+
--sd-fg-subtle: #a1a1aa;
|
|
10
|
+
--sd-border: #e4e4e7;
|
|
11
|
+
--sd-border-soft: #f4f4f5;
|
|
12
|
+
--sd-border-strong: #d4d4d8;
|
|
13
|
+
--sd-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
|
|
14
|
+
--sd-success-bg: #f0fdf4;
|
|
15
|
+
--sd-success-fg: #166534;
|
|
16
|
+
--sd-success-border: #bbf7d0;
|
|
17
|
+
--sd-success-dot: #16a34a;
|
|
18
|
+
--sd-warning-bg: #fff7ed;
|
|
19
|
+
--sd-warning-fg: #9a3412;
|
|
20
|
+
--sd-warning-border: #fed7aa;
|
|
21
|
+
--sd-warning-dot: #f59e0b;
|
|
22
|
+
--sd-error-bg: #fef2f2;
|
|
23
|
+
--sd-error-fg: #991b1b;
|
|
24
|
+
--sd-error-border: #fecaca;
|
|
25
|
+
--sd-error-dot: #dc2626;
|
|
26
|
+
--sd-loading-bg: #eff6ff;
|
|
27
|
+
--sd-loading-fg: #1d4ed8;
|
|
28
|
+
--sd-loading-border: #bfdbfe;
|
|
29
|
+
--sd-loading-dot: #2563eb;
|
|
30
|
+
--sd-idle-dot: #94a3b8;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@media (prefers-color-scheme: dark) {
|
|
34
|
+
.${O} {
|
|
35
|
+
--sd-bg: #09090b;
|
|
36
|
+
--sd-bg-muted: #18181b;
|
|
37
|
+
--sd-bg-raised: #18181b;
|
|
38
|
+
--sd-bg-accent: #1f1f23;
|
|
39
|
+
--sd-fg: #fafafa;
|
|
40
|
+
--sd-fg-muted: #a1a1aa;
|
|
41
|
+
--sd-fg-subtle: #71717a;
|
|
42
|
+
--sd-border: #27272a;
|
|
43
|
+
--sd-border-soft: #1f1f23;
|
|
44
|
+
--sd-border-strong: #3f3f46;
|
|
45
|
+
--sd-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
|
|
46
|
+
--sd-success-bg: rgba(34, 197, 94, 0.12);
|
|
47
|
+
--sd-success-fg: #86efac;
|
|
48
|
+
--sd-success-border: rgba(34, 197, 94, 0.35);
|
|
49
|
+
--sd-warning-bg: rgba(249, 115, 22, 0.12);
|
|
50
|
+
--sd-warning-fg: #fdba74;
|
|
51
|
+
--sd-warning-border: rgba(249, 115, 22, 0.35);
|
|
52
|
+
--sd-error-bg: rgba(239, 68, 68, 0.12);
|
|
53
|
+
--sd-error-fg: #fca5a5;
|
|
54
|
+
--sd-error-border: rgba(239, 68, 68, 0.35);
|
|
55
|
+
--sd-loading-bg: rgba(59, 130, 246, 0.12);
|
|
56
|
+
--sd-loading-fg: #93c5fd;
|
|
57
|
+
--sd-loading-border: rgba(59, 130, 246, 0.35);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.${O}-source {
|
|
62
|
+
display: -webkit-box;
|
|
63
|
+
-webkit-line-clamp: 2;
|
|
64
|
+
-webkit-box-orient: vertical;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
word-break: break-all;
|
|
67
|
+
}
|
|
68
|
+
`;function Xe(){if(typeof document>"u"||document.getElementById(Be))return;const e=document.createElement("style");e.id=Be,e.textContent=rr,document.head.appendChild(e)}const Y='ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',X="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",ce={color:"var(--sd-fg-muted)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},a={launcher:{position:"fixed",bottom:20,zIndex:2147483e3,display:"inline-flex",alignItems:"center",gap:7,height:36,minWidth:36,padding:"0 10px",borderWidth:1,borderStyle:"solid",borderRadius:6,boxShadow:"var(--sd-shadow)",font:`600 12px/1.2 ${Y}`,cursor:"pointer"},launcherText:{fontVariantNumeric:"tabular-nums"},launcherIssueCount:{display:"grid",minWidth:16,height:16,placeItems:"center",borderRadius:8,background:"currentColor",color:"var(--sd-bg)",fontSize:10,lineHeight:"16px"},logoMark:{display:"grid",width:18,height:18,placeItems:"center",flex:"0 0 auto",borderRadius:4,background:"var(--sd-fg)",color:"var(--sd-bg)"},panel:{position:"fixed",top:16,right:16,bottom:16,zIndex:2147483001,width:"min(720px, calc(100vw - 32px))",display:"flex",flexDirection:"column",overflow:"hidden",border:"1px solid var(--sd-border)",borderRadius:6,background:"var(--sd-bg)",color:"var(--sd-fg)",boxShadow:"var(--sd-shadow)",font:`13px/1.4 ${Y}`},panelFullscreen:{top:0,right:0,bottom:0,left:0,width:"100vw",height:"100vh",borderRadius:0},panelHeader:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 12px",borderBottom:"1px solid var(--sd-border)"},panelTitleBlock:{minWidth:0},panelTitle:{fontSize:13,fontWeight:600},panelSubtitle:{marginTop:2,color:"var(--sd-fg-muted)",fontSize:11},panelActions:{display:"flex",alignItems:"center",gap:6},iconButton:{display:"grid",width:28,height:28,placeItems:"center",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:5,background:"var(--sd-bg)",color:"var(--sd-fg-muted)",cursor:"pointer"},searchBox:{display:"flex",alignItems:"center",gap:8,margin:10,height:28,padding:"0 8px",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:5,color:"var(--sd-fg-muted)"},searchInput:{minWidth:0,flex:1,border:0,outline:0,background:"transparent",color:"var(--sd-fg)",font:`12px/1.4 ${Y}`},panelBody:{display:"grid",gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)",minHeight:0,flex:1,borderTop:"1px solid var(--sd-border-soft)"},queryList:{minHeight:0,overflowY:"auto",padding:8,borderRight:"1px solid var(--sd-border)",background:"var(--sd-bg-muted)"},queryGroup:{display:"grid",gap:3,marginBottom:8},queryGroupHeader:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"4px 6px 3px",...ce},queryGroupCount:{color:"var(--sd-fg-subtle)",fontVariantNumeric:"tabular-nums"},queryGroupEmpty:{padding:"7px 8px",color:"var(--sd-fg-subtle)",fontSize:11},queryListItem:{display:"grid",gap:3,width:"100%",padding:"7px 8px",borderWidth:1,borderStyle:"solid",borderColor:"transparent",borderRadius:5,background:"transparent",color:"var(--sd-fg)",textAlign:"left",cursor:"pointer"},queryListItemSelected:{borderColor:"var(--sd-border-strong)",background:"var(--sd-bg-raised)"},queryListItemHeader:{display:"flex",alignItems:"center",gap:7,minWidth:0},statusDot:{width:7,height:7,flex:"0 0 auto",borderRadius:999},queryListTitle:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:650,color:"var(--sd-fg)"},queryListKindChip:{flex:"0 0 auto",color:"var(--sd-fg-subtle)",fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},queryListSource:{minWidth:0,paddingLeft:14,color:"var(--sd-fg-muted)",fontSize:11,lineHeight:1.35},detailsPane:{minHeight:0,overflowY:"auto",padding:16},detailsHeader:{display:"grid",gap:6,marginBottom:14},detailsHeaderTopRow:{display:"flex",alignItems:"center",gap:8,minWidth:0},detailsHeaderStatusDot:{width:8,height:8,flex:"0 0 auto",borderRadius:999},detailsTitle:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:14,fontWeight:700,color:"var(--sd-fg)"},detailsKindChip:{flex:"0 0 auto",padding:"2px 6px",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},detailsCaption:{display:"flex",flexWrap:"wrap",alignItems:"center",columnGap:10,rowGap:2,color:"var(--sd-fg-muted)",fontSize:11},detailsCaptionItem:{display:"inline-flex",alignItems:"center",gap:4},detailsCaptionItemMono:{fontFamily:X},detailsCaptionLabel:{color:"var(--sd-fg-subtle)"},detailsCaptionValue:{color:"var(--sd-fg)",fontVariantNumeric:"tabular-nums"},disclosure:{marginTop:16},disclosureSummary:{cursor:"pointer",...ce},disclosureBody:{marginTop:8},alertCard:{marginTop:12,padding:"8px 10px",borderWidth:1,borderStyle:"solid",borderRadius:5,fontSize:12,lineHeight:1.45},alertCardError:{borderColor:"var(--sd-error-border)",background:"var(--sd-error-bg)",color:"var(--sd-error-fg)"},alertCardWarning:{borderColor:"var(--sd-warning-border)",background:"var(--sd-warning-bg)",color:"var(--sd-warning-fg)"},alertCardTitle:{fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em",fontSize:10,marginBottom:4},alertCardList:{margin:0,paddingLeft:16,display:"grid",gap:3},recipe:{display:"grid",gap:12},traceLineage:{display:"grid",gap:12},recipeSummary:{display:"grid",gap:4,padding:"8px 10px",border:"1px solid var(--sd-border)",borderRadius:5,background:"var(--sd-bg-muted)",color:"var(--sd-fg)",fontSize:12},recipeSummaryRow:{display:"grid",gridTemplateColumns:"76px minmax(0, 1fr)",gap:8,minWidth:0,alignItems:"baseline"},recipeSummaryLabel:{color:"var(--sd-fg-subtle)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},recipeSummaryValue:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg)",fontSize:12},recipeGroup:{display:"grid",gap:4},recipeGroupHeader:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:8,paddingBottom:4,borderBottom:"1px solid var(--sd-border-soft)"},recipeGroupTitle:{color:"var(--sd-fg-muted)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},recipeGroupCount:{color:"var(--sd-fg-subtle)",fontSize:10,fontVariantNumeric:"tabular-nums"},recipeFieldList:{display:"grid"},recipeEmptyText:{padding:"5px 0",color:"var(--sd-fg-subtle)",fontSize:11},recipeFieldRow:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(0, auto)",alignItems:"center",gap:10,minHeight:26,padding:"4px 0",borderBottom:"1px solid var(--sd-border-soft)"},recipeFieldName:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg)",fontSize:12,fontWeight:500},recipeFieldMeta:{minWidth:0,display:"inline-flex",alignItems:"baseline",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg-subtle)",fontSize:11,textAlign:"right"},recipeFieldMetaDivider:{color:"var(--sd-fg-subtle)",margin:"0 4px"},inputsAppliedBlock:{marginTop:16,padding:"10px 12px",border:"1px solid var(--sd-border)",borderLeft:"2px solid var(--sd-fg-muted)",borderRadius:5,background:"var(--sd-bg-muted)"},inputsAppliedHeader:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:8,marginBottom:6},inputsAppliedTitle:{color:"var(--sd-fg)",fontSize:10,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.08em"},inputsAppliedCount:{color:"var(--sd-fg-subtle)",fontSize:10,fontVariantNumeric:"tabular-nums"},inputRecipeList:{display:"grid"},inputRecipeRow:{display:"grid",gap:2,minWidth:0,padding:"6px 0",borderBottom:"1px solid var(--sd-border-soft)"},inputRecipeHeader:{display:"flex",alignItems:"center",gap:8,minWidth:0},inputRecipeId:{flex:"0 0 auto",maxWidth:"40%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg)",fontFamily:X,fontSize:11,fontWeight:600},inputOperatorBadge:{display:"inline-flex",flex:"0 0 auto",alignItems:"center",height:16,padding:"0 5px",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)",fontFamily:X,fontSize:10,textTransform:"uppercase",letterSpacing:"0.06em"},inputValuePreview:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg)",fontSize:12,textAlign:"right"},inputRecipeBinding:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg-muted)",fontSize:11},eventList:{display:"grid"},eventRow:{display:"grid",gridTemplateColumns:"96px minmax(0, 1fr)",gap:10,padding:"6px 0",borderBottom:"1px solid var(--sd-border-soft)"},eventType:{color:"var(--sd-fg)",fontWeight:600,fontSize:12},eventMeta:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg-muted)",fontSize:11},mutedText:{color:"var(--sd-fg-muted)",fontSize:12},compiledQuery:{display:"grid",gap:10},codeBlockGroup:{display:"grid",gap:5},codeBlockLabel:{...ce},codeBlock:{maxHeight:260,margin:0,overflow:"auto",padding:"8px 10px",border:"1px solid var(--sd-border)",borderRadius:5,background:"var(--sd-bg-muted)",color:"var(--sd-fg)",fontFamily:X,fontSize:11,lineHeight:1.5,whiteSpace:"pre-wrap"},emptyState:{padding:10,color:"var(--sd-fg-muted)",textAlign:"center",fontSize:12},inspectButton:{display:"inline-flex",alignItems:"center",gap:5,height:24,maxWidth:"100%",padding:"0 7px",borderWidth:1,borderStyle:"solid",borderRadius:5,background:"var(--sd-bg)",font:`600 11px/1 ${Y}`,cursor:"pointer"},inspectButtonText:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}};function Ze(e){return{...e,order:[],entries:{},sequence:0}}function nr(e,t){if(t.type==="config")return t.config.enabled?{...e,...t.config}:Ze(t.config);if(!e.enabled)return e;switch(t.type){case"register":return ar(ir(e,t.descriptor));case"unregister":return sr(e,t.traceKey);case"event":return or(e,t);default:return e}}function ir(e,t){const r=e.entries[t.traceKey],n=r?e.sequence:e.sequence+1,i=Re(),u={...r||ur(t),...et(t),traceKey:t.traceKey,latestAttempt:(r==null?void 0:r.latestAttempt)||{status:"idle"},recentEvents:(r==null?void 0:r.recentEvents)||[],mounted:!0,registeredAt:(r==null?void 0:r.registeredAt)||n,lastEventAt:(r==null?void 0:r.lastEventAt)||i};return{...e,sequence:n,order:r?e.order:[...e.order,t.traceKey],entries:{...e.entries,[t.traceKey]:u}}}function sr(e,t){const r=e.entries[t];return r?{...e,entries:{...e.entries,[t]:{...r,mounted:!1}}}:e}function or(e,t){const r=e.entries[t.traceKey];if(!r)return e;const n=Re(),i=[...r.recentEvents,t.event].slice(-e.maxEventsPerQuery);return{...e,entries:{...e.entries,[t.traceKey]:{...r,latestAttempt:t.latestAttempt?{...r.latestAttempt,...t.latestAttempt}:r.latestAttempt,recentEvents:i,lastEventAt:n}}}}function ar(e){if(e.order.length<=e.maxQueries)return e;const t=e.order.map(i=>e.entries[i]).filter(i=>!!i).sort((i,u)=>i.mounted!==u.mounted?i.mounted?1:-1:i.lastEventAt-u.lastEventAt),r=e.order.length-e.maxQueries,n=new Set(t.slice(0,r).map(i=>i.traceKey));return n.size?{...e,order:e.order.filter(i=>!n.has(i)),entries:Object.fromEntries(Object.entries(e.entries).filter(([i])=>!n.has(i)))}:e}function ur(e){const t=Re();return{...et(e),traceKey:e.traceKey,latestAttempt:{status:"idle"},recentEvents:[],mounted:!0,registeredAt:0,lastEventAt:t}}function et(e){const t=vr(e.spec),r=xr(e.spec,e.activeInputs);return{traceId:it(e.traceKey),viewId:e.viewId,queryId:e.queryId,queryLabel:e.queryLabel||e.viewTitle,queryKind:e.queryKind,builder:e.builder,sourceRefs:yr(e.intent),projectionFieldRefs:t,inputFieldRefs:r,fieldRefs:br(e.intent),inputsApplied:(e.activeInputs||[]).map(n=>({inputId:n.inputId,fieldRef:n.field,operator:n.operator,valuePreview:hr(n)})),recentEvents:[],clientWarnings:e.clientWarnings}}function re(e){const{traceKey:t,mounted:r,registeredAt:n,lastEventAt:i,...u}=e;return u}function ne(e){return e.enabled?{enabled:!0,queries:e.order.map(r=>e.entries[r]).filter(r=>!!r).map(re),getQuery:r=>{const n=Object.values(e.entries).find(i=>i.queryId===r);return n?re(n):void 0},getQueries:r=>Object.values(e.entries).filter(n=>n.queryId===r).map(re)}:Ve}function lr(e){return{snapshot:()=>dr(ne(e())),getQuery:t=>Ke(ne(e()).getQuery(t)),getQueries:t=>ne(e()).getQueries(t).map(r=>Ke(r)).filter(r=>!!r)}}function dr(e){if(!e.enabled)return e;const t=e.queries.map(tt);return{enabled:e.enabled,queries:t,getQuery:r=>t.find(n=>n.queryId===r),getQueries:r=>t.filter(n=>n.queryId===r)}}function Ke(e){return e?tt(e):void 0}function tt(e){var t;return(t=e==null?void 0:e.latestAttempt)!=null&&t.executionResult?{...e,latestAttempt:{...e.latestAttempt,executionResult:cr(e.latestAttempt.executionResult)}}:e}function cr(e){const{compiledQuery:t,intent:r,result:n,...i}=e;return i}function pr(e){return e===void 0||e===!1?{enabled:!1,exposeWindowBridge:!1,maxEventsPerQuery:ue,maxQueries:le}:e===!0?{enabled:!0,exposeWindowBridge:!1,maxEventsPerQuery:ue,maxQueries:le}:{enabled:e.enabled!==!1,exposeWindowBridge:e.exposeWindowBridge===!0,maxEventsPerQuery:Me(e.maxEventsPerQuery,ue,gt),maxQueries:Me(e.maxQueries,le,yt)}}function Me(e,t,r){return e===void 0||!Number.isFinite(e)||!Number.isInteger(e)||e<=0?t:Math.min(e,r)}function fr(e){return typeof e.id=="string"&&e.id.trim()?e.id:void 0}function mr(e){switch(e){case"metric":return"semaphor.metric";case"records":return"semaphor.records";case"matrix":return"semaphor.matrix";case"analysis":return"semaphor.analysis";case"inputOptions":return"semaphor.inputOptions";case"sql":return"semaphor.sql";default:return oe(e)}}function oe(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function hr(e){if(gr(e))return;const t=e.value;if(t!==void 0){if(Array.isArray(t)){const r=t.filter(n=>typeof n=="string"||typeof n=="number"||typeof n=="boolean").map(n=>String(n));if(r.length===t.length&&r.length>0){const n=r.slice(0,3).join(", "),i=r.length>3?`, +${r.length-3} more`:"";return $e(`${n}${i}`)}return`${t.length} selected`}return typeof t=="number"||typeof t=="boolean"?String(t):typeof t=="string"?$e(t):t&&typeof t=="object"?`object(${Object.keys(t).slice(0,5).join(",")})`:String(t)}}function $e(e){return e.length>80?`${e.slice(0,77)}...`:e}function gr(e){var r;const t=[e.inputId,e.label,(r=e.field)==null?void 0:r.name].filter(Boolean).join(" ").toLowerCase();return["token","secret","password","email","phone","ssn"].some(n=>t.includes(n))}function yr(e){const t=new Map;return ie(e,r=>{Sr(r)&&t.set(nt(r),r)}),[...t.values()]}function vr(e){switch(e.queryKind){case"metric":case"analysis":return W([...e.measures||[],e.primaryMeasure,e.dateField,...e.dimensions||[]]);case"records":return W(e.fields||[]);case"inputOptions":return W([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]]);case"sql":return W(e.fields||[]);case"matrix":return W([...(e.rows||[]).map(pe),...(e.columns||[]).map(pe),...(e.values||[]).map(pe)]);default:return oe(e)}}function xr(e,t){const r=[...(e.inputs||[]).map(rt),...(t||[]).map(n=>n.field)];return W(r)}function W(e){const t=new Map;return e.forEach(r=>{r&&U(r)&&t.set(je(r),r)}),[...t.values()]}function rt(e){if(!e||typeof e!="object")return;const t=e.toAnalyticsInput;if(typeof t=="function"){const n=t.call(e);return rt(n)}const r=e.field;return U(r)?r:void 0}function pe(e){if(U(e))return e;if(!e||typeof e!="object")return;const t=e.field;return U(t)?t:void 0}function br(e){const t=new Map;return ie(e,r=>{U(r)&&t.set(je(r),r)}),[...t.values()]}function ie(e,t){if(!(!e||typeof e!="object")){if(t(e),Array.isArray(e)){e.forEach(r=>ie(r,t));return}Object.values(e).forEach(r=>ie(r,t))}}function Sr(e){if(!e||typeof e!="object")return!1;const t=e;return t.kind==="semantic"?typeof t.domainId=="string"&&typeof t.datasetName=="string":t.kind==="physical"?typeof t.connectionId=="string"&&typeof t.tableName=="string":t.kind==="sql"?typeof t.connectionId=="string":!1}function U(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.name=="string"&&(t.source!==void 0||t.role!==void 0||t.dataType!==void 0||t.aggregate!==void 0)}function nt(e){return e.kind==="semantic"?[e.kind,e.domainId,e.datasetId||e.datasetName].join(":"):e.kind==="physical"?[e.kind,e.connectionId,e.databaseName,e.schemaName,e.tableName].join(":"):[e.kind,e.connectionId].join(":")}function je(e){return[e.name,e.role,e.aggregate,e.source?nt(e.source):""].join(":")}function Ir(e){const t=e;return typeof(t==null?void 0:t.rowCount)=="number"?t.rowCount:Array.isArray(t==null?void 0:t.records)?t.records.length:void 0}function wr(e){const t=e;return Array.isArray(t==null?void 0:t.columns)?t.columns.length:void 0}function _e(e){const t=e;return t==null?void 0:t.executionResult}function Fe(e){const t=e;return typeof(t==null?void 0:t.requestId)=="string"?t.requestId:void 0}function it(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function Z(){return new Date().toISOString()}function Re(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const qr=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"],jr=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"];function st(e){if(!e)return{};const t=Cr(e.executionResult),r=Rr(e,t),n=Ar(r);return{...e,...Object.keys(r).length?{resultSets:r}:{},...n?{columns:n.columns,records:n.records,rowCount:n.rowCount}:{}}}function Rr(e,t){const r=Er(e.resultSets);for(const i of qr){if(r[i]){r[i]=ot(r[i]);continue}const u=Tr(e[i]);if(!u.length)continue;const l=t.length?t:Dr(u);r[i]={records:Ee(u,l),columns:l,rowCount:u.length}}const n=kr(e.executionResult);return n&&n.records.length>0&&!r.records&&(r.records=n),r}function Er(e){return Object.fromEntries(Object.entries(e||{}).map(([t,r])=>[t,ot(r)]))}function ot(e){var t;return{...e,records:Ee(e.records||[],e.columns||[]),rowCount:e.rowCount??((t=e.records)==null?void 0:t.length)??0}}function Ar(e){var t;for(const r of jr)if((t=e[r])!=null&&t.records.length)return e[r];return Object.values(e).find(r=>r.records.length)||Object.values(e)[0]}function kr(e){const t=e==null?void 0:e.result;if(!(!t||t.kind!=="records"&&t.kind!=="sql"))return{records:Ee(t.records,t.columns),columns:t.columns,rowCount:t.rowCount??t.records.length}}function Cr(e){const t=e==null?void 0:e.result;return!t||t.kind!=="records"&&t.kind!=="sql"?[]:t.columns}function Tr(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object"&&!Array.isArray(t))):[]}function Ee(e,t){return t.length?e.map(r=>{const n={};return t.forEach((i,u)=>{const l=Or(r,{name:i.key,label:i.label,fallbackNames:[i.name,Object.keys(r)[u]]});l!==void 0&&(n[i.key]=l)}),Object.keys(n).length?n:r}):e}function Dr(e){return Array.from(new Set(e.flatMap(r=>Object.keys(r)))).map(r=>({key:r,name:r,label:r}))}function Or(e,t){const r=[t.name,t.label,...t.fallbackNames||[]].filter(n=>!!n);for(const n of r)if(Object.prototype.hasOwnProperty.call(e,n))return e[n]}function at(){return{executeAnalysis:(e,t,r)=>F(e,t,r??{}).then(st),executeMetric:(e,t)=>F(e,t),executeRecords:(e,t)=>F(e,t),executeInputOptions:(e,t)=>F(e,t),executeSql:(e,t)=>F(e,t),executeMatrix:(e,t)=>F(e,t)}}async function F(e,t,r){if(!t.token)throw new Error("SemaphorDataAppProvider needs a token to execute queries.");const n=Fr(t),i=Br(e,n);let u;try{u=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.token}`},body:JSON.stringify({intent:e,activeInputs:t.activeInputs,...r?{analysisOptions:r}:{},resultShape:e.kind})})}catch(c){throw new Error(`${i}: ${c instanceof Error?c.message:String(c)}`)}const l=await $r(u);if(!u.ok||l.error)throw Lr(`${i}: ${l.error||`Semaphor Data App execution failed with status ${u.status}.`}`,l);return l}function Lr(e,t){const r=new Error(e);return t.requestId&&(r.requestId=t.requestId),t.details!==void 0&&(r.details=t.details),t.executionResult!==void 0&&(r.executionResult=t.executionResult),r}function Br(e,t){return[`Semaphor ${e.kind} query`,e.id?`id=${e.id}`:void 0,e.label?`label=${e.label}`:void 0,Kr(e),`endpoint=${Mr(t)}`].filter(r=>!!r).join(" ")}function Kr(e){const t="source"in e?e.source:void 0;if(!(!t||typeof t!="object")){if(t.kind==="semantic")return`source=${[t.domainId,t.datasetId||t.datasetName].filter(Boolean).join("/")}`;if(t.kind==="physical")return`source=${[t.connectionId,t.databaseName,t.schemaName,t.tableName].filter(Boolean).join("/")}`;if(t.kind==="sql")return t.connectionId?`source=${t.connectionId}`:void 0}}function Mr(e){if(!e)return"/api/v1/data-app/execute";try{return new URL(e,"http://localhost").pathname}catch{return e}}async function $r(e){const t=await e.text().catch(()=>"");if(!t.trim())return e.ok?{error:"Semaphor Data App execution returned an empty response."}:{};try{return JSON.parse(t)}catch{return e.ok?{error:"Semaphor Data App execution returned invalid JSON.",details:t}:{error:_r(e,t),details:t}}}function _r(e,t){const r=e.statusText?` ${e.statusText}`:"",n=t.replace(/\s+/g," ").trim();return n?`Semaphor Data App execution failed with status ${e.status}${r}: ${n.slice(0,240)}`:`Semaphor Data App execution failed with status ${e.status}${r}.`}function Fr(e){const t=Wr(e).replace(/\/+$/,"");return t?t.endsWith("/api")?`${t}/v1/data-app/execute`:`${t}/api/v1/data-app/execute`:"/api/v1/data-app/execute"}function Wr(e){if(e.apiBaseUrl)return e.apiBaseUrl;if(!e.token)return"";try{return ze.jwtDecode(e.token).apiServiceUrl||""}catch{return""}}const ut=d.createContext({});function Nr(){if(!(typeof window>"u"))return window.__SEMAPHOR_DATA_APP_RUNTIME__}function zr(){return d.useContext(ut)}const fe={value:null},me={},Vr={records:[]},he={options:[]},Pr={records:[]},ge={};function Qr(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs),r=b.toSemaphorAnalysisQueryOptions(e);try{const n=b.toSemaphorAnalysisIntent(e),i=z(n);return i?{error:i,activeInputs:t,analysisOptions:r,queryKey:w(void 0,t,i,r),idleData:me}:{intent:n,error:null,activeInputs:t,analysisOptions:r,queryKey:w(n,t,void 0,r),idleData:me}}catch(n){const i=B(n);return{error:i,activeInputs:t,analysisOptions:r,queryKey:w(void 0,t,i,r),idleData:me}}}function Hr(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs);try{const r=b.toSemaphorMetricIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:fe}:{intent:r,error:null,activeInputs:t,queryKey:w(r,t),idleData:fe}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:fe}}}function Ur(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs),r=Vr;try{const n=b.toSemaphorRecordsIntent(e),i=z(n);return i?{error:i,activeInputs:t,queryKey:w(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:w(n,t),idleData:r}}catch(n){const i=B(n);return{error:i,activeInputs:t,queryKey:w(void 0,t,i),idleData:r}}}function Gr(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs);try{const r=b.toSemaphorInputOptionsIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:he}:{intent:r,error:null,activeInputs:t,queryKey:w(r,t),idleData:he}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:he}}}function Jr(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs),r=Pr;try{const n=b.toSemaphorSqlIntent(e),i=z(n);return i?{error:i,activeInputs:t,queryKey:w(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:w(n,t),idleData:r}}catch(n){const i=B(n);return{error:i,activeInputs:t,queryKey:w(void 0,t,i),idleData:r}}}function Yr(e){const t=b.toSemaphorActiveInputSnapshots(e.inputs);try{const r=b.toSemaphorMatrixIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:ge}:{intent:r,error:null,activeInputs:t,queryKey:w(r,t),idleData:ge}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:w(void 0,t,n),idleData:ge}}}function B(e){return e instanceof Error?e:new Error(String(e))}function z(e){const t=pt.validateSemaphorAnalyticsIntent(e);if(t.ok)return null;const r=t.errors.map(n=>n.path?`${n.code} at ${n.path}: ${n.message}`:`${n.code}: ${n.message}`).join("; ");return new Error(`Invalid Semaphor analytics intent. ${r}`)}function w(e,t,r,n){return JSON.stringify({intent:e,activeInputs:t,analysisOptions:n,error:r==null?void 0:r.message})}function Xr(e){const[t,r]=d.useState(e.defaultValue),n=Object.prototype.hasOwnProperty.call(e,"value"),i=n?e.value:t,u=d.useMemo(()=>b.normalizeSemaphorInputOptions(e.options),[e.options]),l=d.useCallback(p=>{var g;const f=p;(g=e.onValueChange)==null||g.call(e,f),n||r(f)},[n,e]),c=d.useCallback(()=>l(void 0),[l]);return d.useMemo(()=>{const p=b.toSemaphorInputSpec(e);return{id:e.id,kind:e.kind,label:e.label,field:p.field,operator:p.operator,relationshipHint:p.relationshipHint,controlRole:e.kind==="control"?e.role:void 0,value:i,options:u,isActive:b.hasSemaphorInputValue(i),setValue:l,clear:c,toAnalyticsInput:()=>({inputId:p.inputId,field:p.field,kind:e.kind,label:e.label,value:i,isActive:b.hasSemaphorInputValue(i),operator:p.operator,relationshipHint:p.relationshipHint,controlRole:e.kind==="control"?e.role:void 0})}},[c,u,l,e,i])}function Zr(e){const[t,r]=d.useState(()=>sn(e));return d.useEffect(()=>{r(n=>{let i=n;for(const u of e)!Object.prototype.hasOwnProperty.call(i,u.id)&&u.defaultValue!==void 0&&(i={...i,[u.id]:u.defaultValue});return i})},[e]),d.useMemo(()=>e.map(n=>{const i=Object.prototype.hasOwnProperty.call(n,"value"),u=i?n.value:t[n.id],l=b.normalizeSemaphorInputOptions(n.options),c=g=>{var h;(h=n.onValueChange)==null||h.call(n,g),i||r(y=>({...y,[n.id]:g}))},p=()=>c(void 0),f=b.toSemaphorInputSpec(n);return{id:n.id,kind:n.kind,label:n.label,field:f.field,operator:f.operator,relationshipHint:f.relationshipHint,controlRole:n.kind==="control"?n.role:void 0,value:u,options:l,isActive:b.hasSemaphorInputValue(u),setValue:c,clear:p,toAnalyticsInput:()=>({inputId:f.inputId,field:f.field,kind:n.kind,label:n.label,value:u,isActive:b.hasSemaphorInputValue(u),operator:f.operator,relationshipHint:f.relationshipHint,controlRole:n.kind==="control"?n.role:void 0})}}),[e,t])}function en(e,t){const r=(t==null?void 0:t.status)==="success"?t.options:void 0,n=d.useMemo(()=>tn(r),[r]);d.useEffect(()=>{lt(e.value,r)||e.clear()},[e,n,t==null?void 0:t.status,r])}function lt(e,t){if(!b.hasSemaphorInputValue(e)||t===void 0)return!0;const r=new Set(t.map(i=>We(i.value)));return(Array.isArray(e)?e:[e]).every(i=>r.has(We(i)))}function tn(e){return JSON.stringify((e||[]).map(t=>t.value))}function We(e){return`${typeof e}:${String(e)}`}function rn(e,t={}){const r=d.useMemo(()=>t.inputs?{...e,inputs:t.inputs}:e,[t.inputs,e]),n=d.useMemo(()=>{switch(r.queryKind){case"metric":return{queryKind:r.queryKind,request:Hr(r)};case"analysis":return{queryKind:r.queryKind,request:Qr(r)};case"records":return{queryKind:r.queryKind,request:Ur(r)};case"inputOptions":return{queryKind:r.queryKind,request:Gr(r)};case"sql":return{queryKind:r.queryKind,request:Jr(r)};case"matrix":return{queryKind:r.queryKind,request:Yr(r)};default:return ye(r)}},[r]),i=qt({spec:r,queryKind:n.queryKind,queryKey:n.request.queryKey,intent:n.request.intent,activeInputs:n.request.activeInputs,debug:t.debug}),u=d.useRef(null),l=d.useMemo(()=>({start:i.start,success:i.success,failure:i.failure,ignored:i.ignored}),[i.failure,i.ignored,i.start,i.success]),c=d.useCallback(o=>{var A,k,I,q,C,E,T,S,D;const x=n.request;if(x.intent)switch(n.queryKind){case"metric":return(A=o.executor)==null?void 0:A.executeMetric(x.intent,o);case"analysis":return(I=(k=o.executor)==null?void 0:k.executeAnalysis)==null?void 0:I.call(k,x.intent,o,x.analysisOptions);case"records":return(q=o.executor)==null?void 0:q.executeRecords(x.intent,o);case"inputOptions":return(C=o.executor)==null?void 0:C.executeInputOptions(x.intent,o);case"sql":return(T=(E=o.executor)==null?void 0:E.executeSql)==null?void 0:T.call(E,x.intent,o);case"matrix":return(D=(S=o.executor)==null?void 0:S.executeMatrix)==null?void 0:D.call(S,x.intent,o);default:return ye(n)}},[n]),p=nn(n.request.queryKey,c,n.request.idleData,n.request.activeInputs,l),f=i.queryId,g=i.validationFailure;d.useEffect(()=>{const o=n.request.error;if(!o){u.current=null;return}const x=`${f}:${o.message}`;u.current!==x&&(u.current=x,g(o))},[n.request.error,n.request.queryKey,f,g]);const h=n.request.error?n.request.idleData:p.data,y=n.request.error?"error":p.status,m=!n.request.error&&p.status==="loading",v=n.request.error||p.error,R=i.trace;switch(n.queryKind){case"metric":{const o=h;return{id:r.id,intent:n.request.intent,value:(o==null?void 0:o.value)??null,measures:o==null?void 0:o.measures,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,executionResult:o==null?void 0:o.executionResult,status:y,isLoading:m,error:v,trace:R}}case"analysis":{const o=st(h);return{id:r.id,intent:n.request.intent,...o||{},status:y,isLoading:m,error:v,trace:R}}case"records":{const o=h;return{id:r.id,intent:n.request.intent,records:(o==null?void 0:o.records)||[],columns:o==null?void 0:o.columns,rowCount:o==null?void 0:o.rowCount,pagination:o==null?void 0:o.pagination,executionResult:o==null?void 0:o.executionResult,status:y,isLoading:m,error:v,trace:R}}case"inputOptions":{const o=h;return{id:r.id,intent:n.request.intent,options:(o==null?void 0:o.options)||[],executionResult:o==null?void 0:o.executionResult,status:y,isLoading:m,error:v,trace:R}}case"sql":{const o=h;return{id:r.id,intent:n.request.intent,records:(o==null?void 0:o.records)||[],columns:o==null?void 0:o.columns,rowCount:o==null?void 0:o.rowCount,pagination:o==null?void 0:o.pagination,output:o==null?void 0:o.output,rowLimitExceeded:o==null?void 0:o.rowLimitExceeded,executionResult:o==null?void 0:o.executionResult,status:y,isLoading:m,error:v,trace:R}}case"matrix":{const o=h;return{id:r.id,intent:n.request.intent,matrixResult:o==null?void 0:o.matrixResult,grid:o==null?void 0:o.grid,expansion:o==null?void 0:o.expansion,executionResult:o==null?void 0:o.executionResult,status:y,isLoading:m,error:v,trace:R}}default:return ye(n)}}function nn(e,t,r,n,i){const u=zr(),l=d.useRef(t),c=d.useRef(n),[p,f]=d.useState({status:"idle",data:r,error:null});return l.current=t,c.current=n,d.useEffect(()=>{let g;try{g=l.current({...u,activeInputs:c.current})}catch(m){i==null||i.failure(m,0),f({status:"error",data:r,error:B(m)});return}if(!g){f({status:"idle",data:r,error:null});return}let h=!1;const y=dt();return i==null||i.start(),f(m=>({status:"loading",data:m.data,error:null})),g.then(m=>{h?i==null||i.ignored("superseded"):(i==null||i.success(m,Ne(y)),f({status:"success",data:m,error:null}))}).catch(m=>{h?i==null||i.ignored("superseded"):(i==null||i.failure(m,Ne(y)),f({status:"error",data:r,error:B(m)}))}),()=>{h=!0}},[r,e,u,i]),p}function dt(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function Ne(e){return Math.max(0,Math.round(dt()-e))}function sn(e){return Object.fromEntries(e.filter(t=>t.defaultValue!==void 0).map(t=>[t.id,t.defaultValue]))}function ye(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function on({token:e,apiBaseUrl:t,executor:r,debug:n,children:i}){var h;const u=Nr(),l=((h=u==null?void 0:u.authToken)==null?void 0:h.accessToken)||e,c=(u==null?void 0:u.dataApiBaseUrl)||(u==null?void 0:u.apiBaseUrl)||t,p=d.useMemo(()=>at(),[]),f=r||p,g=d.useMemo(()=>({token:l,apiBaseUrl:c,executor:f}),[c,f,l]);return s.jsx(vt,{debug:n,children:s.jsx(ut.Provider,{value:g,children:i})})}exports.SemaphorDataAppProvider=on;exports.SemaphorDevtools=It;exports.SemaphorDevtoolsInspectButton=wt;exports.SemaphorViewBoundary=St;exports.createSemaphorQueryExecutor=at;exports.defineSemaphorDataApp=ft;exports.defineSemaphorInput=mt;exports.isSemaphorInputValueValidForOptions=lt;exports.semaphor=ht;exports.useClearInvalidSemaphorInputValue=en;exports.useSemaphorDevtools=we;exports.useSemaphorInput=Xr;exports.useSemaphorInputs=Zr;exports.useSemaphorQuery=rn;
|