react-semaphor 0.1.387 → 0.1.389
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +260 -99
- package/dist/data-app-sdk/index.cjs +39 -5
- package/dist/data-app-sdk/index.js +1570 -1358
- package/dist/types/analytics-protocol.d.ts +125 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../data-app-sdk-adapters/index.cjs"),s=require("react/jsx-runtime"),d=require("react"),ne=require("../chunks/search-Dq1Mbb03.js"),Ge=require("../chunks/x-B_cx7LwM.js"),St=require("../chunks/validators-lWo8m0Q7.js");require("../chunks/analyze-result-contract-CtXfp3nv.js");function X(e,t,r={}){return{...r,name:e,role:t}}function It(e){return e}function wt(e){return e}const qt={source:{semantic(e){return{...e,kind:"semantic"}},sql(e){return{...e,kind:"sql"}}},field:{measure(e,t){return X(e,"measure",t)},dimension(e,t){return X(e,"dimension",t)},date(e,t){return X(e,"date",t)},id(e,t){return X(e,"id",t)}},filter(e){return{...e,kind:"filter"}},bindInput(e,t){return{toAnalyticsInput(){const[r]=S.toSemaphorInputSnapshots([e]),n=S.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"}}},de=10,ce=100,jt=25,At=500,Je={enabled:!1,queries:[],getQuery:()=>{},getQueries:()=>[]},Ie=d.createContext(null),we=d.createContext(null),qe=d.createContext(void 0),$=[];function Rt({debug:e,children:t}){const r=d.useMemo(()=>Rr(e),[e]),[n,i]=d.useReducer(gr,r,at),o=d.useRef(n),l=d.useId(),[p,c]=d.useState({open:!1});o.current=n,d.useEffect(()=>{i({type:"config",config:r})},[r]),d.useEffect(()=>{if(!n.enabled||!n.exposeWindowBridge||typeof window>"u")return;const x=wr(()=>o.current);return Et({ownerId:l,bridge:x}),()=>{Tt(l)}},[l,n.enabled,n.exposeWindowBridge]);const f=d.useMemo(()=>({state:n,dispatch:i}),[n]),y=d.useCallback(x=>{c({open:!0,focus:x})},[]),h=d.useCallback(()=>{c(x=>({...x,open:!1}))},[]),g=d.useCallback(x=>{c({open:!0,focus:x})},[]),m=d.useMemo(()=>({open:p.open,focus:p.focus,openDevtools:y,closeDevtools:h,focusTrace:g}),[h,g,y,p.focus,p.open]);return s.jsx(Ie.Provider,{value:f,children:s.jsx(we.Provider,{value:m,children:t})})}function Et(e){const t=$.findIndex(r=>r.ownerId===e.ownerId);t>=0&&$.splice(t,1),$.push(e),Ye()}function Tt(e){const t=$.findIndex(r=>r.ownerId===e);t>=0&&$.splice(t,1),Ye()}function Ye(){if(typeof window>"u")return;const e=$[$.length-1];e?window.__SEMAPHOR_DEVTOOLS__=e.bridge:delete window.__SEMAPHOR_DEVTOOLS__}function Ct({id:e,title:t,children:r}){const n=d.useMemo(()=>({id:e,title:t}),[e,t]);return s.jsx(qe.Provider,{value:n,children:r})}function Xe({buttonPosition:e="bottom-right",initialIsOpen:t=!1,panelPosition:r="right",className:n,style:i}={}){const o=je(),l=d.useContext(we),[p,c]=d.useState(""),[f,y]=d.useState(!1),h=d.useRef(null),g=d.useRef(null),m=l==null?void 0:l.openDevtools,x=l==null?void 0:l.closeDevtools,A=(l==null?void 0:l.open)===!0;d.useEffect(()=>{ot()},[]),d.useEffect(()=>{t&&o.enabled&&(m==null||m())},[t,o.enabled,m]),d.useEffect(()=>{if(!A||!x)return;const v=w=>{var R,k;const C=w.target;C instanceof Node&&((R=h.current)!=null&&R.contains(C)||(k=g.current)!=null&&k.contains(C)||x())};return document.addEventListener("pointerdown",v,!0),document.addEventListener("mousedown",v,!0),document.addEventListener("click",v,!0),()=>{document.removeEventListener("pointerdown",v,!0),document.removeEventListener("mousedown",v,!0),document.removeEventListener("click",v,!0)}},[x,A]);const a=d.useMemo(()=>Wt(o.queries),[o.queries]),b=d.useMemo(()=>zt(o.queries,p),[o.queries,p]),D=d.useMemo(()=>Vt(b),[b]),E=d.useMemo(()=>Ze(b,l==null?void 0:l.focus)||b[0],[b,l==null?void 0:l.focus]);return!o.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?`${L} ${n}`:L,style:{...u.launcher,...dr(e),...cr(a.severity),...i},onClick:()=>l.openDevtools(),children:[s.jsx(Lt,{}),s.jsx("span",{style:u.launcherText,children:a.total}),a.issueCount>0?s.jsx("span",{style:u.launcherIssueCount,children:a.issueCount}):null]}),l.open?s.jsxs("div",{ref:g,role:"dialog","aria-label":"Semaphor DevTools","aria-modal":"false",className:L,style:{...u.panel,...pr(r),...f?u.panelFullscreen:null},children:[s.jsxs("div",{style:u.panelHeader,children:[s.jsxs("div",{style:u.panelTitleBlock,children:[s.jsx("div",{style:u.panelTitle,children:"Semaphor DevTools"}),s.jsxs("div",{style:u.panelSubtitle,children:[a.total," queries · ",a.loading," loading ·"," ",a.failed," failed"]})]}),s.jsxs("div",{style:u.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:u.iconButton,onClick:()=>y(v=>!v),children:f?s.jsx(ne.Minimize2,{size:15}):s.jsx(ne.Maximize2,{size:15})}),s.jsx("button",{type:"button","aria-label":"Close Semaphor DevTools",style:u.iconButton,onClick:l.closeDevtools,children:s.jsx(Ge.X,{size:15})})]})]}),s.jsxs("label",{style:u.searchBox,children:[s.jsx(ne.Search,{size:14}),s.jsx("input",{"aria-label":"Search Semaphor traces",value:p,onChange:v=>c(v.currentTarget.value),placeholder:"Search traces",style:u.searchInput})]}),s.jsxs("div",{style:{...u.panelBody,...fr(r)},children:[s.jsx("div",{style:{...u.queryList,...mr()},"aria-label":"Registered queries",children:b.length?D.map(v=>s.jsxs("div",{style:u.queryGroup,children:[s.jsxs("div",{style:u.queryGroupHeader,children:[s.jsx("span",{children:v.title}),s.jsx("span",{style:u.queryGroupCount,children:v.traces.length})]}),v.traces.length?v.traces.map(w=>{var V;const C=Pt(w,E),R=Ae(w),k=tt(w),I=et(w),T=ae(w);return s.jsxs("button",{type:"button",title:`${R} · ${k} · ${T}`,style:{...u.queryListItem,...C?u.queryListItemSelected:null},onClick:()=>l.focusTrace({traceId:w.traceId,queryId:w.queryId,viewId:w.viewId}),children:[s.jsxs("span",{style:u.queryListItemHeader,children:[s.jsx(Bt,{status:(V=w.latestAttempt)==null?void 0:V.status}),s.jsx("span",{style:u.queryListTitle,title:R,children:R}),s.jsx("span",{style:u.queryListKindChip,children:k})]}),s.jsx("span",{className:`${L}-source`,style:u.queryListSource,title:`${I} · ${T}`,children:I}),s.jsx("span",{className:`${L}-source`,style:u.queryListSourceSecondary,title:T,children:T})]},be(w))}):s.jsx("div",{style:u.queryGroupEmpty,children:"No input traces"})]},v.title)):s.jsx("div",{style:u.emptyState,children:"No matching traces"})}),s.jsx(Ot,{trace:E})]})]}):null]})}function kt({queryId:e,viewId:t,label:r,className:n,style:i}={}){var h,g;const o=je(),l=d.useContext(we),p=d.useContext(qe);d.useEffect(()=>{ot()},[]);const c=t||(p==null?void 0:p.id),f=d.useMemo(()=>Ht(o.queries,{queryId:e,viewId:c}),[o.queries,e,c]);if(!o.enabled||!l||!f)return null;const y=r||`Inspect ${Ut(f,!!e)}`;return s.jsxs("button",{type:"button","aria-label":y,title:y,className:n?`${L} ${n}`:L,style:{...u.inspectButton,...yr((h=f.latestAttempt)==null?void 0:h.status),...i},onClick:()=>l.openDevtools({traceId:f.traceId,queryId:f.queryId,viewId:f.viewId}),children:[s.jsx(ne.Eye,{size:13}),s.jsx("span",{style:u.inspectButtonText,children:((g=f.latestAttempt)==null?void 0:g.status)||"idle"})]})}function je(){const e=d.useContext(Ie);return!e||!e.state.enabled?Je:se(e.state)}function Dt({spec:e,queryKind:t,queryKey:r,intent:n,activeInputs:i,debug:o}){const l=d.useContext(Ie),p=d.useContext(qe),c=!!(l!=null&&l.state.enabled),f=l==null?void 0:l.dispatch,y=Er(e),h=e.label,g=d.useMemo(()=>JSON.stringify(e),[e]),m=d.useMemo(()=>JSON.stringify(i||[]),[i]),x=d.useMemo(()=>JSON.stringify(n||null),[n]),A=d.useRef(e),a=d.useRef(g),b=d.useRef(n),D=d.useRef(x),E=d.useRef(i),v=d.useRef(m);a.current!==g&&(a.current=g,A.current=e),D.current!==x&&(D.current=x,b.current=n),v.current!==m&&(v.current=m,E.current=i);const w=A.current,C=b.current,R=E.current,k=d.useId(),I=d.useMemo(()=>y||`query_${pt(r)}`,[r,y]),T=(o==null?void 0:o.viewId)||(p==null?void 0:p.id),V=(o==null?void 0:o.viewTitle)||(o==null?void 0:o.title)||(p==null?void 0:p.title),Ce=o==null?void 0:o.visualType,ke=o==null?void 0:o.sectionTitle,xt=JSON.stringify(Fe(o)||[]),De=d.useMemo(()=>Fe(o),[xt]),K=d.useMemo(()=>[T||"unscoped-view",I,k].join("::"),[I,k,T]),Le=d.useMemo(()=>({traceKey:K,spec:w,queryId:I,queryLabel:h,queryKind:t,builder:Tr(t),viewId:T,viewTitle:V,visualType:Ce,sectionTitle:ke,sourceHints:De,intent:C,activeInputs:R,clientWarnings:y?[]:["Query spec is missing an explicit id; using an opaque internal id."]}),[I,t,y,h,w,R,C,De,ke,K,T,V,Ce]);d.useEffect(()=>{if(!(!c||!f))return f({type:"register",descriptor:Le}),()=>{f({type:"unregister",traceKey:K})}},[Le,f,c,K]);const O=d.useCallback((j,_)=>{!c||!f||f({type:"event",traceKey:K,event:j,latestAttempt:_})},[f,c,K]),Oe=d.useCallback(()=>{O({type:"query_started",queryId:I,at:re()},{status:"loading"})},[O,I]),Be=d.useCallback((j,_)=>{const H=Pe(j),P=Mr(j),bt=$r(j);O({type:"query_succeeded",queryId:I,requestId:H,at:re(),rowCount:P,durationMs:_},{requestId:H,status:"success",durationMs:_,rowCount:P,columnCount:bt,executionResult:He(j)})},[O,I]),Y=d.useCallback((j,_)=>{const H=Pe(j),P=j instanceof Error?j.message:String(j);O({type:"query_failed",queryId:I,requestId:H,at:re(),errorMessage:P},{requestId:H,status:"error",durationMs:_,errorMessage:P,executionResult:He(j)})},[O,I]),Ke=d.useCallback(j=>{O({type:"query_ignored_stale",queryId:I,at:re(),reason:j})},[O,I]),Me=d.useCallback(j=>{Y(j,0)},[Y]),le=c?l==null?void 0:l.state.entries[K]:void 0;return d.useMemo(()=>({enabled:c,queryId:I,trace:le?ie(le):void 0,start:Oe,success:Be,failure:Y,ignored:Ke,validationFailure:Me}),[c,Y,Ke,I,Oe,Be,le,Me])}function Lt(){return s.jsx("span",{style:u.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 Ot({trace:e}){var A,a,b,D,E;if(!e)return s.jsx("div",{style:u.detailsPane,children:s.jsx("div",{style:u.emptyState,children:"No traces registered yet"})});const t=e.latestAttempt,r=t==null?void 0:t.executionResult,n=pe((A=r==null?void 0:r.validation)==null?void 0:A.warnings),i=pe((a=r==null?void 0:r.validation)==null?void 0:a.errors),o=pe((b=r==null?void 0:r.coverage)==null?void 0:b.missingObligations),l=r==null?void 0:r.compiledQuery,p=lr(r),c=((D=e.server)==null?void 0:D.compiledSql)||p.compiledSql,f=t!=null&&t.errorMessage?[t.errorMessage]:[],y=[...e.clientWarnings,...n,...i,...o],h=ae(e),g=et(e),m=e.inputsApplied.length>0,x=!!(l||c);return s.jsxs("div",{style:u.detailsPane,children:[s.jsxs("div",{style:u.detailsHeader,children:[s.jsxs("div",{style:u.detailsHeaderTopRow,children:[s.jsx("span",{"aria-hidden":!0,style:{...u.detailsHeaderStatusDot,...st(t==null?void 0:t.status)}}),s.jsx("span",{style:u.detailsTitle,children:Ae(e)}),s.jsx("span",{style:u.detailsKindChip,children:tt(e)})]}),s.jsxs("div",{style:u.detailsCaption,children:[s.jsxs("span",{style:u.detailsCaptionItem,children:[s.jsx("span",{style:u.detailsCaptionLabel,children:"Query"}),s.jsx("span",{style:{...u.detailsCaptionValue,...u.detailsCaptionItemMono},children:g})]}),s.jsxs("span",{style:u.detailsCaptionItem,children:[s.jsx("span",{style:u.detailsCaptionLabel,children:"Source"}),s.jsx("span",{style:u.detailsCaptionValue,children:h})]}),s.jsxs("span",{style:u.detailsCaptionItem,children:[s.jsx("span",{style:u.detailsCaptionLabel,children:"Rows"}),s.jsx("span",{style:u.detailsCaptionValue,children:nr(t==null?void 0:t.rowCount)})]}),s.jsxs("span",{style:u.detailsCaptionItem,children:[s.jsx("span",{style:u.detailsCaptionLabel,children:"Duration"}),s.jsx("span",{style:u.detailsCaptionValue,children:ir(t==null?void 0:t.durationMs)})]})]})]}),f.length?s.jsx($e,{tone:"error",title:"Error",items:f}):null,y.length?s.jsx($e,{tone:"warning",title:"Warnings",items:y}):null,s.jsx(Kt,{trace:e}),s.jsx(Mt,{trace:e}),(E=e.sourceHints)!=null&&E.length?s.jsx($t,{hints:e.sourceHints}):null,m?s.jsx(Nt,{inputs:e.inputsApplied}):null,x?s.jsx(G,{title:"Compiled query",children:s.jsx(Ft,{compiledQuery:l,compiledSql:c})}):null,s.jsx(G,{title:"Lifecycle events",children:e.recentEvents.length?s.jsx("div",{style:u.eventList,children:e.recentEvents.slice(-5).map((v,w)=>s.jsxs("div",{style:u.eventRow,children:[s.jsx("span",{style:u.eventType,children:or(v)}),s.jsx("span",{style:u.eventMeta,children:ar(v)})]},`${v.type}:${v.at}:${w}`))}):s.jsx("div",{style:u.mutedText,children:"No attempts recorded"})}),s.jsx(G,{title:"Raw trace JSON",children:s.jsx("pre",{style:u.codeBlock,children:sr(e)})})]})}function $e({tone:e,title:t,items:r}){const n=e==="error"?u.alertCardError:u.alertCardWarning;return s.jsxs("div",{style:{...u.alertCard,...n},children:[s.jsx("div",{style:u.alertCardTitle,children:t}),r.length>1?s.jsx("ul",{style:u.alertCardList,children:r.map((i,o)=>s.jsx("li",{children:i},`${e}-${o}`))}):s.jsx("div",{children:r[0]})]})}function Bt({status:e}){return s.jsx("span",{"aria-hidden":!0,style:{...u.statusDot,...st(e)}})}function G({title:e,children:t}){return s.jsxs("details",{style:u.disclosure,children:[s.jsx("summary",{style:u.disclosureSummary,children:e}),s.jsx("div",{style:u.disclosureBody,children:t})]})}function Kt({trace:e}){var o;const t=(o=e.projectionFieldRefs)!=null&&o.length?e.projectionFieldRefs:e.fieldRefs,r=e.inputFieldRefs||[],n=Jt(t),i=Yt(e,n,t);return s.jsxs("div",{style:u.recipe,children:[s.jsx("div",{style:u.recipeSummary,children:i.map(l=>s.jsxs("div",{style:u.recipeSummaryRow,children:[s.jsx("span",{style:u.recipeSummaryLabel,children:l.label}),s.jsx("span",{style:u.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 Mt({trace:e}){return!e.sourceRefs.length&&!e.fieldRefs.length?null:s.jsx(G,{title:"Sources and field refs",children:s.jsxs("div",{style:u.traceLineage,children:[s.jsx(_t,{sources:e.sourceRefs}),s.jsx(M,{title:"All field refs",fields:e.fieldRefs,emptyText:"No field refs captured"})]})})}function $t({hints:e}){return s.jsx(G,{title:"Source hints",children:s.jsx("div",{style:u.recipeFieldList,children:e.map((t,r)=>{const n=rr(t),i=t.component||t.exportName||n||"Source hint",o=[t.exportName&&t.exportName!==i?t.exportName:void 0,n,t.note].filter(Boolean).join(" · ");return s.jsxs("div",{style:u.recipeFieldRow,title:o||i,children:[s.jsx("span",{style:u.recipeFieldName,children:i}),o?s.jsx("span",{style:u.recipeFieldMeta,children:o}):null]},`${i}:${n}:${r}`)})})})}function _t({sources:e}){return s.jsxs("div",{style:u.recipeGroup,children:[s.jsxs("div",{style:u.recipeGroupHeader,children:[s.jsx("span",{style:u.recipeGroupTitle,children:"Sources"}),s.jsx("span",{style:u.recipeGroupCount,children:e.length})]}),e.length?s.jsx("div",{style:u.recipeFieldList,children:e.map((t,r)=>s.jsxs("div",{style:u.recipeFieldRow,title:W(t),children:[s.jsx("span",{style:u.recipeFieldName,children:W(t)}),s.jsx("span",{style:u.recipeFieldMeta,children:t.kind})]},`${W(t)}:${r}`))}):s.jsx("div",{style:u.recipeEmptyText,children:"No sources captured"})]})}function M({title:e,fields:t,emptyText:r}){return!t.length&&!r?null:s.jsxs("div",{style:u.recipeGroup,children:[s.jsxs("div",{style:u.recipeGroupHeader,children:[s.jsx("span",{style:u.recipeGroupTitle,children:e}),s.jsx("span",{style:u.recipeGroupCount,children:t.length})]}),t.length?s.jsx("div",{style:u.recipeFieldList,children:t.map((n,i)=>{const o=nt(n),l=n.dataType&&n.dataType!=="unknown"?n.dataType:void 0,p=n.source?W(n.source):void 0,c=[o,l,p].filter(Boolean).join(" · ");return s.jsxs("div",{style:u.recipeFieldRow,title:c,children:[s.jsx("span",{style:u.recipeFieldName,children:o}),s.jsxs("span",{style:u.recipeFieldMeta,children:[l?s.jsx("span",{children:l}):null,l&&p?s.jsx("span",{style:u.recipeFieldMetaDivider,children:" · "}):null,p?s.jsx("span",{children:p}):null]})]},`${Re(n)}:${i}`)})}):s.jsx("div",{style:u.recipeEmptyText,children:r})]})}function Nt({inputs:e}){return s.jsxs("div",{style:u.inputsAppliedBlock,children:[s.jsxs("div",{style:u.inputsAppliedHeader,children:[s.jsx("span",{style:u.inputsAppliedTitle,children:"Inputs applied"}),s.jsx("span",{style:u.inputsAppliedCount,children:e.length})]}),s.jsx("div",{style:u.inputRecipeList,children:e.map(t=>{const r=it(t);return s.jsxs("div",{style:u.inputRecipeRow,title:r.title,children:[s.jsxs("div",{style:u.inputRecipeHeader,children:[s.jsx("span",{style:u.inputRecipeId,title:t.inputId,children:t.inputId}),r.operator?s.jsx("span",{style:u.inputOperatorBadge,children:r.operator}):null,s.jsx("span",{style:u.inputValuePreview,title:r.value,children:r.value})]}),r.binding?s.jsx("div",{style:u.inputRecipeBinding,title:r.binding,children:r.binding}):null]},t.inputId)})})]})}function Ft({compiledQuery:e,compiledSql:t}){return(e==null?void 0:e.kind)==="sql"?s.jsxs("div",{style:u.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:Se(e.parameters)}):null]}):t?s.jsx(Q,{label:"SQL",value:t}):s.jsx(Q,{label:"Compiled query",value:Se(e)})}function Q({label:e,value:t}){return s.jsxs("div",{style:u.codeBlockGroup,children:[s.jsx("div",{style:u.codeBlockLabel,children:e}),s.jsx("pre",{style:u.codeBlock,children:t})]})}function Wt(e){const t=e.filter(i=>{var o;return((o=i.latestAttempt)==null?void 0:o.status)==="error"}).length,r=e.filter(i=>{var o;return((o=i.latestAttempt)==null?void 0:o.status)==="loading"}).length,n=e.filter(i=>{var o,l,p,c;return i.clientWarnings.length>0||!!((c=(p=(l=(o=i.latestAttempt)==null?void 0:o.executionResult)==null?void 0:l.validation)==null?void 0:p.warnings)!=null&&c.length)}).length;return{total:e.length,failed:t,loading:r,warningCount:n,issueCount:t+n,severity:t?"error":n?"warning":"ok"}}function zt(e,t){const r=t.trim().toLowerCase();return r?e.filter(n=>[n.queryId,n.queryLabel,n.viewId,n.viewTitle,n.visualType,n.sectionTitle,n.builder,n.queryKind,ae(n)].filter(Boolean).join(" ").toLowerCase().includes(r)):e}function Vt(e){const t=e.filter(i=>i.queryKind==="inputOptions"),r=new Set(t.map(be));return[{title:"Cards",traces:e.filter(i=>!r.has(be(i)))},{title:"Inputs",traces:t}]}function Ze(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 Ht(e,t){if(t.queryId)return Ze(e,t);if(!t.viewId)return;const r=e.filter(n=>n.viewId===t.viewId);return r.length===1?r[0]:void 0}function Pt(e,t){return!!(e&&t&&e.traceId===t.traceId)}function be(e){return e.traceId}function Qt(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 ue(e)}}function Ae(e){return e.viewTitle||e.queryLabel||e.viewId||e.queryId}function et(e){return e.viewTitle&&e.queryLabel&&e.queryLabel!==e.viewTitle?`${e.queryLabel} · ${e.queryId}`:e.viewTitle||e.queryLabel?e.queryId:e.viewId?`${e.viewId} · ${e.queryId}`:e.queryId}function tt(e){return Gt(e.visualType)||Qt(e.queryKind)}function Ut(e,t){return t?e.queryLabel||e.queryId:Ae(e)}function Gt(e){if(e)return e.replace(/[_-]+/g," ").replace(/\b\w/g,t=>t.toUpperCase())}function ae(e){const t=e.sourceRefs.map(W);return t.length?t.length===1?t[0]:`${t[0]} + ${t.length-1} more`:"No source"}function Jt(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 Yt(e,t,r){const n=[{label:"Operation",value:Xt(e)}],i=Zt(e,t,r);i&&n.push(i);const o=er(t);o&&n.push({label:"Grouped by",value:o});const l=tr(e.inputsApplied);return l&&n.push({label:"Filtered by",value:l}),n.push({label:"Source",value:ae(e)}),n}function Xt(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 ue(e.queryKind)}}function Zt(e,t,r){if(e.queryKind==="records")return{label:t.measures.length?"Computes":"Selects",value:U(r)};if(e.queryKind==="inputOptions")return{label:"Options from",value:U(r)};if(t.measures.length)return{label:"Computes",value:U(t.measures)};if(r.length)return{label:"Uses",value:U(r)};if(e.queryKind==="sql")return{label:"Inspect",value:"Open compiled query for SQL or Python."}}function er(e){const t=[...e.dimensions,...e.timeFields];return t.length?U(t):void 0}function tr(e){if(e.length)return rt(e.map(t=>{const r=it(t);return[t.inputId,r.operator,r.value].filter(Boolean).join(" ")}))}function U(e){return rt(e.map(nt))}function rt(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 nt(e){return[e.aggregate,e.label||e.name].filter(Boolean).join(" ")}function it(e){var l,p,c;const t=e.valuePreview||"redacted",r=((l=e.fieldRef)==null?void 0:l.label)||((p=e.fieldRef)==null?void 0:p.name),n=(c=e.fieldRef)!=null&&c.source?W(e.fieldRef.source):void 0,i=[r?`on ${r}`:void 0,n].filter(Boolean).join(" · "),o=[e.inputId,e.operator,t,i].filter(Boolean).join(" - ");return{operator:e.operator,value:t,binding:i,title:o}}function W(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 rr(e){if(e.file)return e.line&&e.column?`${e.file}:${e.line}:${e.column}`:e.line?`${e.file}:${e.line}`:e.file}function nr(e){return typeof e=="number"?e.toLocaleString():"-"}function ir(e){return typeof e=="number"?`${Math.round(e)}ms`:"-"}function sr(e){return Se(e)}function Se(e){return JSON.stringify(e,null,2)??"undefined"}function or(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 ur(e)}}function ar(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 ur(e){throw new Error(`Unsupported Semaphor trace event: ${JSON.stringify(e)}`)}function pe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function lr(e){const t=e==null?void 0:e.metadata,r=t&&typeof t=="object"&&!Array.isArray(t)&&"dataAppDebug"in t&&t.dataAppDebug&&typeof t.dataAppDebug=="object"&&!Array.isArray(t.dataAppDebug)?t.dataAppDebug:void 0;return{compiledSql:typeof(r==null?void 0:r.compiledSql)=="string"?r.compiledSql:void 0,queryHash:typeof(r==null?void 0:r.queryHash)=="string"?r.queryHash:void 0}}function dr(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 cr(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 pr(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 fr(e){return e==="right"?{gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)"}:{gridTemplateColumns:"minmax(260px, 340px) minmax(0, 1fr)"}}function mr(e){return{borderRight:"1px solid var(--sd-border)",borderBottom:0}}function st(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 yr(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 _e="semaphor-devtools-stylesheet",L="semaphor-devtools",hr=`
|
|
2
|
-
.${
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("../data-app-sdk-adapters/index.cjs"),i=require("react/jsx-runtime"),l=require("react"),se=require("../chunks/search-Dq1Mbb03.js"),Ye=require("../chunks/x-B_cx7LwM.js"),Sr=require("../chunks/validators-lWo8m0Q7.js");require("../chunks/analyze-result-contract-CtXfp3nv.js");function te(e,r,t={}){return{...t,name:e,role:r}}function Ir(e){return e}function wr(e){return e}const qr={source:{semantic(e){return{...e,kind:"semantic"}},sql(e){return{...e,kind:"sql"}}},field:{measure(e,r){return te(e,"measure",r)},dimension(e,r){return te(e,"dimension",r)},date(e,r){return te(e,"date",r)},id(e,r){return te(e,"id",r)}},filter(e){return{...e,kind:"filter"}},bindInput(e,r){return{toAnalyticsInput(){const[t]=x.toSemaphorInputSnapshots([e]),n=x.toSemaphorInputBinding({...r,inputId:r.inputId||t.inputId});return{...t,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"}}},fe=10,pe=100,jr=25,Rr=500,Xe={enabled:!1,queries:[],getQuery:()=>{},getQueries:()=>[]},je=l.createContext(null),Re=l.createContext(null),Ae=l.createContext(void 0),_=[];function Ar({debug:e,children:r}){const t=l.useMemo(()=>Lt(e),[e]),[n,o]=l.useReducer(wt,t,dr),d=l.useRef(n),u=l.useId(),[f,c]=l.useState({open:!1});d.current=n,l.useEffect(()=>{o({type:"config",config:t})},[t]),l.useEffect(()=>{if(!n.enabled||!n.exposeWindowBridge||typeof window>"u")return;const b=Ct(()=>d.current);return Er({ownerId:u,bridge:b}),()=>{Cr(u)}},[u,n.enabled,n.exposeWindowBridge]);const p=l.useMemo(()=>({state:n,dispatch:o}),[n]),g=l.useCallback(b=>{c({open:!0,focus:b})},[]),h=l.useCallback(()=>{c(b=>({...b,open:!1}))},[]),y=l.useCallback(b=>{c({open:!0,focus:b})},[]),m=l.useMemo(()=>({open:f.open,focus:f.focus,openDevtools:g,closeDevtools:h,focusTrace:y}),[h,y,g,f.focus,f.open]);return i.jsx(je.Provider,{value:p,children:i.jsx(Re.Provider,{value:m,children:r})})}function Er(e){const r=_.findIndex(t=>t.ownerId===e.ownerId);r>=0&&_.splice(r,1),_.push(e),Ze()}function Cr(e){const r=_.findIndex(t=>t.ownerId===e);r>=0&&_.splice(r,1),Ze()}function Ze(){if(typeof window>"u")return;const e=_[_.length-1];e?window.__SEMAPHOR_DEVTOOLS__=e.bridge:delete window.__SEMAPHOR_DEVTOOLS__}function Tr({id:e,title:r,children:t}){const n=l.useMemo(()=>({id:e,title:r}),[e,r]);return i.jsx(Ae.Provider,{value:n,children:t})}function er({buttonPosition:e="bottom-right",initialIsOpen:r=!1,panelPosition:t="right",className:n,style:o}={}){const d=Ee(),u=l.useContext(Re),[f,c]=l.useState(""),[p,g]=l.useState(!1),h=l.useRef(null),y=l.useRef(null),m=u==null?void 0:u.openDevtools,b=u==null?void 0:u.closeDevtools,C=(u==null?void 0:u.open)===!0;l.useEffect(()=>{ar()},[]),l.useEffect(()=>{r&&d.enabled&&(m==null||m())},[r,d.enabled,m]),l.useEffect(()=>{if(!C||!b)return;const v=S=>{var w,A;const R=S.target;R instanceof Node&&((w=h.current)!=null&&w.contains(R)||(A=y.current)!=null&&A.contains(R)||b())};return document.addEventListener("pointerdown",v,!0),document.addEventListener("mousedown",v,!0),document.addEventListener("click",v,!0),()=>{document.removeEventListener("pointerdown",v,!0),document.removeEventListener("mousedown",v,!0),document.removeEventListener("click",v,!0)}},[b,C]);const a=l.useMemo(()=>Ur(d.queries),[d.queries]),I=Gr(a),T=l.useMemo(()=>Jr(d.queries,f),[d.queries,f]),k=l.useMemo(()=>Yr(T),[T]),D=l.useMemo(()=>rr(T,u==null?void 0:u.focus)||T[0],[T,u==null?void 0:u.focus]);return!d.enabled||!u?null:i.jsxs(i.Fragment,{children:[i.jsxs("button",{ref:h,type:"button","aria-label":"Open Semaphor Inspector",title:I,className:n?`${O} ${n}`:O,style:{...s.launcher,...ht(e),...yt(a.severity),...o},onClick:()=>u.openDevtools(),children:[i.jsx(Lr,{}),i.jsx("span",{style:s.launcherText,children:a.total}),a.issueCount>0?i.jsxs("span",{style:s.launcherIssueCount,children:[a.issueCount," issue",a.issueCount===1?"":"s"]}):null]}),u.open?i.jsxs("div",{ref:y,role:"dialog","aria-label":"Semaphor Inspector","aria-modal":"false",className:O,style:{...s.panel,...vt(t),...p?s.panelFullscreen:null},children:[i.jsxs("div",{style:s.panelHeader,children:[i.jsxs("div",{style:s.panelTitleBlock,children:[i.jsx("div",{style:s.panelTitle,children:"Semaphor Inspector"}),i.jsxs("div",{style:s.panelSubtitle,children:[a.total," queries · ",a.loading," loading ·"," ",a.failed," failed"]})]}),i.jsxs("div",{style:s.panelActions,children:[i.jsx("button",{type:"button","aria-label":p?"Exit fullscreen Semaphor Inspector":"Enter fullscreen Semaphor Inspector",title:p?"Exit fullscreen Semaphor Inspector":"Enter fullscreen Semaphor Inspector",style:s.iconButton,onClick:()=>g(v=>!v),children:p?i.jsx(se.Minimize2,{size:15}):i.jsx(se.Maximize2,{size:15})}),i.jsx("button",{type:"button","aria-label":"Close Semaphor Inspector",style:s.iconButton,onClick:u.closeDevtools,children:i.jsx(Ye.X,{size:15})})]})]}),i.jsxs("label",{style:s.searchBox,children:[i.jsx(se.Search,{size:14}),i.jsx("input",{"aria-label":"Search Semaphor traces",value:f,onChange:v=>c(v.currentTarget.value),placeholder:"Search traces",style:s.searchInput})]}),i.jsxs("div",{style:{...s.panelBody,...bt(t)},children:[i.jsx("div",{style:{...s.queryList,...xt()},"aria-label":"Registered queries",children:T.length?k.map(v=>i.jsxs("div",{style:s.queryGroup,children:[i.jsxs("div",{style:s.queryGroupHeader,children:[i.jsx("span",{children:v.title}),i.jsx("span",{style:s.queryGroupCount,children:v.traces.length})]}),v.traces.length?v.traces.map(S=>{var j;const R=Zr(S,D),w=Ce(S),A=ir(S),N=or(S),Q=rt(S,w,N),U=Q.join(" · "),ee=tr(A);return i.jsxs("button",{type:"button",title:`${w} · ${A} · ${U}`,style:{...s.queryListItem,...R?s.queryListItemSelected:null},onClick:()=>u.focusTrace({traceId:S.traceId,queryId:S.queryId,viewId:S.viewId}),children:[i.jsxs("span",{style:s.queryListItemHeader,children:[i.jsx(Br,{status:(j=S.latestAttempt)==null?void 0:j.status}),i.jsx("span",{style:s.queryListTitle,title:w,children:w}),i.jsx("span",{style:{...s.queryListKindChip,...nr(ee)},children:A})]}),i.jsx("span",{className:`${O}-source`,style:s.queryListSource,title:U,children:Q.map(($,G)=>i.jsxs(l.Fragment,{children:[G>0?i.jsx("span",{style:s.queryListSubtitleSep,children:" · "}):null,i.jsx("span",{children:$})]},`${$}:${G}`))})]},we(S))}):i.jsx("div",{style:s.queryGroupEmpty,children:"No input traces"})]},v.title)):i.jsx("div",{style:s.emptyState,children:"No matching traces"})}),i.jsx(Or,{trace:D})]})]}):null]})}function kr({queryId:e,viewId:r,label:t,className:n,style:o}={}){var h,y;const d=Ee(),u=l.useContext(Re),f=l.useContext(Ae);l.useEffect(()=>{ar()},[]);const c=r||(f==null?void 0:f.id),p=l.useMemo(()=>Xr(d.queries,{queryId:e,viewId:c}),[d.queries,e,c]);if(!d.enabled||!u||!p)return null;const g=t||`Inspect ${tt(p,!!e)}`;return i.jsxs("button",{type:"button","aria-label":g,title:g,className:n?`${O} ${n}`:O,style:{...s.inspectButton,...St((h=p.latestAttempt)==null?void 0:h.status),...o},onClick:()=>u.openDevtools({traceId:p.traceId,queryId:p.queryId,viewId:p.viewId}),children:[i.jsx(se.Eye,{size:13}),i.jsx("span",{style:s.inspectButtonText,children:((y=p.latestAttempt)==null?void 0:y.status)||"idle"})]})}function Ee(){const e=l.useContext(je);return!e||!e.state.enabled?Xe:de(e.state)}function Dr({spec:e,queryKind:r,queryKey:t,intent:n,activeInputs:o,debug:d}){const u=l.useContext(je),f=l.useContext(Ae),c=!!(u!=null&&u.state.enabled),p=u==null?void 0:u.dispatch,g=Bt(e),h=e.label,y=l.useMemo(()=>JSON.stringify(e),[e]),m=l.useMemo(()=>JSON.stringify(o||[]),[o]),b=l.useMemo(()=>JSON.stringify(n||null),[n]),C=l.useRef(e),a=l.useRef(y),I=l.useRef(n),T=l.useRef(b),k=l.useRef(o),D=l.useRef(m),v=Ot(d),S=JSON.stringify(v||[]),R=l.useRef(v),w=l.useRef(S);a.current!==y&&(a.current=y,C.current=e),T.current!==b&&(T.current=b,I.current=n),D.current!==m&&(D.current=m,k.current=o),w.current!==S&&(w.current=S,R.current=v);const A=C.current,N=I.current,Q=k.current,U=R.current,ee=l.useId(),j=l.useMemo(()=>g||`query_${pr(t)}`,[t,g]),$=(d==null?void 0:d.viewId)||(f==null?void 0:f.id),G=(d==null?void 0:d.viewTitle)||(d==null?void 0:d.title)||(f==null?void 0:f.title),Le=d==null?void 0:d.visualType,Oe=d==null?void 0:d.sectionTitle,W=l.useMemo(()=>[$||"unscoped-view",j,ee].join("::"),[j,ee,$]),Be=l.useMemo(()=>({traceKey:W,spec:A,queryId:j,queryLabel:h,queryKind:r,builder:Kt(r),viewId:$,viewTitle:G,visualType:Le,sectionTitle:Oe,sourceHints:U,intent:N,activeInputs:Q,clientWarnings:g?[]:["Query spec is missing an explicit id; using an opaque internal id."]}),[j,r,g,h,A,Q,N,U,Oe,W,$,G,Le]);l.useEffect(()=>{if(!(!c||!p))return p({type:"register",descriptor:Be}),()=>{p({type:"unregister",traceKey:W})}},[Be,p,c,W]);const B=l.useCallback((E,z)=>{!c||!p||p({type:"event",traceKey:W,event:E,latestAttempt:z})},[p,c,W]),Ke=l.useCallback(()=>{B({type:"query_started",queryId:j,at:oe()},{status:"loading"})},[B,j]),Me=l.useCallback((E,z)=>{const J=Ue(E),Y=Ht(E),xr=Pt(E);B({type:"query_succeeded",queryId:j,requestId:J,at:oe(),rowCount:Y,durationMs:z},{requestId:J,status:"success",durationMs:z,rowCount:Y,columnCount:xr,executionResult:Qe(E)})},[B,j]),re=l.useCallback((E,z)=>{const J=Ue(E),Y=E instanceof Error?E.message:String(E);B({type:"query_failed",queryId:j,requestId:J,at:oe(),errorMessage:Y},{requestId:J,status:"error",durationMs:z,errorMessage:Y,executionResult:Qe(E)})},[B,j]),Ne=l.useCallback(E=>{B({type:"query_ignored_stale",queryId:j,at:oe(),reason:E})},[B,j]),$e=l.useCallback(E=>{re(E,0)},[re]),ce=c?u==null?void 0:u.state.entries[W]:void 0;return l.useMemo(()=>({enabled:c,queryId:j,trace:ce?ae(ce):void 0,start:Ke,success:Me,failure:re,ignored:Ne,validationFailure:$e}),[c,re,Ne,j,Ke,Me,ce,$e])}function Lr(){return i.jsx("span",{style:s.logoMark,"aria-hidden":!0,children:i.jsxs("svg",{viewBox:"0 0 100 100",fill:"none",width:"16",height:"16",focusable:"false",children:[i.jsx("rect",{x:"20",y:"15",width:"60",height:"12",rx:"6",fill:"currentColor"}),i.jsx("rect",{x:"20",y:"35",width:"40",height:"12",rx:"6",fill:"currentColor"}),i.jsx("rect",{x:"40",y:"55",width:"40",height:"12",rx:"6",fill:"currentColor"}),i.jsx("rect",{x:"20",y:"75",width:"60",height:"12",rx:"6",fill:"currentColor"})]})})}function Or({trace:e}){var k,D,v,S,R;if(!e)return i.jsx("div",{style:s.detailsPane,children:i.jsx("div",{style:s.emptyState,children:"No traces registered yet"})});const r=e.latestAttempt,t=r==null?void 0:r.executionResult,n=ge((k=t==null?void 0:t.validation)==null?void 0:k.warnings),o=ge((D=t==null?void 0:t.validation)==null?void 0:D.errors),d=ge((v=t==null?void 0:t.coverage)==null?void 0:v.missingObligations),u=t==null?void 0:t.compiledQuery,f=gt(t),c=((S=e.server)==null?void 0:S.compiledSql)||f.compiledSql,p=r!=null&&r.errorMessage?[r.errorMessage]:[],g=[...e.clientWarnings,...n,...o,...d],h=e.inputsApplied.length>0,y=!!(u||c),m=ot(e),b=lt(r==null?void 0:r.rowCount),C=ut(r==null?void 0:r.durationMs),a=e.sourceRefs.length,I=ir(e),T=tr(I);return i.jsxs("div",{style:s.detailsPane,children:[i.jsxs("div",{style:s.detailsHeader,children:[i.jsxs("div",{style:s.detailsHeaderTopRow,children:[i.jsx("span",{"aria-hidden":!0,style:{...s.detailsHeaderStatusDot,...sr(r==null?void 0:r.status)}}),i.jsx("span",{style:s.detailsTitle,children:Ce(e)}),i.jsx("span",{style:{...s.detailsKindChip,...nr(T)},children:I})]}),i.jsxs("div",{style:s.metaStrip,children:[i.jsx("span",{style:s.metaStripItem,children:m}),i.jsx("span",{style:s.metaStripDot,children:"·"}),i.jsxs("span",{style:s.metaStripItem,children:[b," rows"]}),i.jsx("span",{style:s.metaStripDot,children:"·"}),i.jsx("span",{style:s.metaStripItem,children:C}),a>0?i.jsxs(i.Fragment,{children:[i.jsx("span",{style:s.metaStripDot,children:"·"}),i.jsx("span",{style:s.metaStripItem,children:a===1?"1 source":`${a} sources`})]}):null]})]}),p.length?i.jsx(We,{tone:"error",title:"Error",items:p}):null,g.length?i.jsx(We,{tone:"warning",title:"Warnings",items:g}):null,i.jsx(Kr,{trace:e}),i.jsx($r,{trace:e}),(R=e.sourceHints)!=null&&R.length?i.jsx(Wr,{hints:e.sourceHints}):null,h?i.jsx(Hr,{inputs:e.inputsApplied}):null,y?i.jsx(X,{title:"Compiled Query",defaultOpen:!0,children:i.jsx(Pr,{compiledQuery:u,compiledSql:c})}):null,i.jsx(X,{title:"Lifecycle Events",children:e.recentEvents.length?i.jsx("div",{style:s.eventList,children:e.recentEvents.slice(-5).map((w,A)=>i.jsxs("div",{style:s.eventRow,children:[i.jsx("span",{style:s.eventType,children:ft(w)}),i.jsx("span",{style:s.eventMeta,children:pt(w)})]},`${w.type}:${w.at}:${A}`))}):i.jsx("div",{style:s.mutedText,children:"No attempts recorded"})}),i.jsx(X,{title:"Raw Trace",children:i.jsx("pre",{style:s.codeBlock,children:ct(e)})})]})}function We({tone:e,title:r,items:t}){const n=e==="error"?s.alertCardError:s.alertCardWarning;return i.jsxs("div",{style:{...s.alertCard,...n},children:[i.jsx("div",{style:s.alertCardTitle,children:r}),t.length>1?i.jsx("ul",{style:s.alertCardList,children:t.map((o,d)=>i.jsx("li",{children:o},`${e}-${d}`))}):i.jsx("div",{children:t[0]})]})}function Br({status:e}){return i.jsx("span",{"aria-hidden":!0,style:{...s.statusDot,...sr(e)}})}function X({title:e,children:r,defaultOpen:t=!1}){const[n,o]=l.useState(t);return i.jsxs("details",{style:s.disclosure,open:n,onToggle:d=>o(d.currentTarget.open),children:[i.jsx("summary",{style:s.disclosureSummary,children:e}),i.jsx("div",{style:s.disclosureBody,children:r})]})}function Kr({trace:e}){var o;const r=(o=e.projectionFieldRefs)!=null&&o.length?e.projectionFieldRefs:e.fieldRefs,t=e.inputFieldRefs||[],n=it(r);return i.jsxs("div",{style:s.recipe,children:[i.jsx(Mr,{sources:e.sourceRefs}),i.jsx(F,{title:"Measures",fields:n.measures}),i.jsx(F,{title:"Time fields",fields:n.timeFields}),i.jsx(F,{title:"Dimensions",fields:n.dimensions,emptyText:"No dimensions selected"}),i.jsx(F,{title:"Identifiers",fields:n.identifiers}),i.jsx(F,{title:"Other fields",fields:n.other}),i.jsx(F,{title:"Input bindings",fields:t})]})}function Mr({sources:e}){return e.length?i.jsxs("div",{style:s.recipeGroup,children:[i.jsxs("div",{style:s.recipeGroupHeader,children:[i.jsx("span",{style:s.recipeGroupTitle,children:"From"}),i.jsx("span",{style:s.recipeGroupCount,children:e.length})]}),i.jsx("div",{style:s.sourcePillRow,children:e.map((r,t)=>i.jsx(Nr,{source:r},`${K(r)}:${t}`))})]}):null}function Nr({source:e}){const r=K(e);return i.jsxs("span",{style:s.sourcePill,title:r,children:[i.jsx("span",{style:s.sourcePillLabel,children:r}),i.jsx("span",{style:s.sourcePillRole,children:e.kind})]})}function $r({trace:e}){return!e.sourceRefs.length&&!e.fieldRefs.length?null:i.jsx(X,{title:"Sources and field refs",children:i.jsxs("div",{style:s.traceLineage,children:[i.jsx(Fr,{sources:e.sourceRefs}),i.jsx(F,{title:"All field refs",fields:e.fieldRefs,emptyText:"No field refs captured"})]})})}function Wr({hints:e}){return i.jsx(X,{title:"Source hints",children:i.jsx("div",{style:s.recipeFieldList,children:e.map((r,t)=>{const n=dt(r),o=r.component||r.exportName||n||"Source hint",d=[r.exportName&&r.exportName!==o?r.exportName:void 0,n,r.note].filter(Boolean).join(" · ");return i.jsxs("div",{style:s.recipeFieldRow,title:d||o,children:[i.jsx("span",{style:s.recipeFieldName,children:o}),d?i.jsx("span",{style:s.recipeFieldMeta,children:d}):null]},`${o}:${n}:${t}`)})})})}function Fr({sources:e}){return i.jsxs("div",{style:s.recipeGroup,children:[i.jsxs("div",{style:s.recipeGroupHeader,children:[i.jsx("span",{style:s.recipeGroupTitle,children:"Sources"}),i.jsx("span",{style:s.recipeGroupCount,children:e.length})]}),e.length?i.jsx("div",{style:s.recipeFieldList,children:e.map((r,t)=>i.jsxs("div",{style:s.recipeFieldRow,title:K(r),children:[i.jsx("span",{style:s.recipeFieldName,children:K(r)}),i.jsx("span",{style:s.recipeFieldMeta,children:r.kind})]},`${K(r)}:${t}`))}):i.jsx("div",{style:s.recipeEmptyText,children:"No sources captured"})]})}function F({title:e,fields:r,emptyText:t}){return!r.length&&!t?null:i.jsxs("div",{style:s.recipeGroup,children:[i.jsxs("div",{style:s.recipeGroupHeader,children:[i.jsx("span",{style:s.recipeGroupTitle,children:e}),i.jsx("span",{style:s.recipeGroupCount,children:r.length})]}),r.length?i.jsx("div",{style:s.fieldChipList,children:r.map((n,o)=>i.jsx(_r,{field:n,groupTitle:e},`${Te(n)}:${o}`))}):i.jsx("div",{style:s.recipeEmptyText,children:t})]})}function _r({field:e,groupTitle:r}){const t=st(e),n=e.label||e.name,o=e.dataType&&e.dataType!=="unknown"?e.dataType:void 0,d=e.source?K(e.source):void 0,u=[t,o,d].filter(Boolean).join(" · "),f=zr(e,r);return i.jsxs("div",{style:s.fieldChip,title:u,children:[i.jsx("span",{style:{...s.fieldGlyph,...f.style},children:f.text}),e.aggregate?i.jsx("span",{style:s.fieldAggBadge,children:e.aggregate}):null,i.jsx("span",{style:s.fieldChipName,children:n}),o?i.jsx("span",{style:s.fieldChipMeta,children:o}):null,o&&d?i.jsx("span",{style:s.fieldChipMetaDot,children:"·"}):null,d?i.jsx("span",{style:s.fieldChipMeta,children:d}):null]})}function zr(e,r){const t=e.dataType,n=e.role;return!!e.aggregate||n==="measure"||r==="Measures"?{text:"Σ",style:{borderColor:"var(--sd-tone-metric-border)",background:"var(--sd-tone-metric-bg)",color:"var(--sd-tone-metric-fg)"}}:t==="date"||t==="datetime"||n==="date"||r==="Time fields"?{text:"◷",style:{borderColor:"var(--sd-tone-date-border)",background:"var(--sd-tone-date-bg)",color:"var(--sd-tone-date-fg)"}}:t==="number"?{text:"#",style:{borderColor:"var(--sd-tone-records-border)",background:"var(--sd-tone-records-bg)",color:"var(--sd-tone-records-fg)"}}:t==="boolean"?{text:"◐",style:{borderColor:"var(--sd-border)",background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)"}}:{text:"A",style:{borderColor:"var(--sd-tone-string-border)",background:"var(--sd-tone-string-bg)",color:"var(--sd-tone-string-fg)"}}}function Hr({inputs:e}){return i.jsxs("div",{style:s.inputsAppliedBlock,children:[i.jsxs("div",{style:s.inputsAppliedHeader,children:[i.jsx("span",{style:s.inputsAppliedTitle,children:"Active Inputs"}),i.jsx("span",{style:s.inputsAppliedCount,children:e.length})]}),i.jsx("div",{style:s.inputRecipeList,children:e.map(r=>{const t=at(r);return i.jsxs("div",{style:s.inputRecipeRow,title:t.title,children:[i.jsxs("div",{style:s.inputRecipeHeader,children:[i.jsx("span",{style:s.inputRecipeId,title:r.inputId,children:r.inputId}),t.operator?i.jsx("span",{style:s.inputOperatorBadge,children:t.operator}):null,i.jsx("span",{style:s.inputValuePreview,title:t.value,children:t.value})]}),t.binding?i.jsx("div",{style:s.inputRecipeBinding,title:t.binding,children:t.binding}):null]},r.inputId)})})]})}function Pr({compiledQuery:e,compiledSql:r}){return(e==null?void 0:e.kind)==="sql"?i.jsxs("div",{style:s.compiledQuery,children:[i.jsx(Fe,{label:"SQL",value:e.sql}),e.pythonCode?i.jsx(me,{label:"Python",value:e.pythonCode}):null,e.parameters?i.jsx(me,{label:"Parameters",value:qe(e.parameters)}):null]}):r?i.jsx(Fe,{label:"SQL",value:r}):i.jsx(me,{label:"Compiled Query",value:qe(e)})}function me({label:e,value:r}){return i.jsxs("div",{style:s.codeBlockGroup,children:[i.jsx("div",{style:s.codeBlockLabel,children:e}),i.jsx("pre",{style:s.codeBlock,children:r})]})}function Fe({label:e,value:r}){return i.jsxs("div",{style:s.codeBlockGroup,children:[i.jsx("div",{style:s.codeBlockLabel,children:e}),i.jsx("pre",{style:s.codeBlock,children:Qr(r)})]})}const Vr=new Set(["SELECT","FROM","JOIN","LEFT","RIGHT","INNER","OUTER","CROSS","ON","USING","WHERE","AND","OR","GROUP","BY","HAVING","ORDER","ASC","DESC","LIMIT","OFFSET","AS","BETWEEN","IN","NOT","NULL","IS","CASE","WHEN","THEN","ELSE","END","DISTINCT","UNION","ALL","WITH"]);function Qr(e){return e.split(/(\s+|,|\(|\))/).map((t,n)=>{if(!t)return null;const o=t.toUpperCase();return Vr.has(o)?i.jsx("span",{style:s.sqlKeyword,children:t},n):t.startsWith("$")||t.startsWith(":")||t.startsWith("?")?i.jsx("span",{style:s.sqlBindParam,children:t},n):i.jsx("span",{children:t},n)})}function Ur(e){const r=e.filter(o=>{var d;return((d=o.latestAttempt)==null?void 0:d.status)==="error"}).length,t=e.filter(o=>{var d;return((d=o.latestAttempt)==null?void 0:d.status)==="loading"}).length,n=e.filter(o=>{var d,u,f,c;return o.clientWarnings.length>0||!!((c=(f=(u=(d=o.latestAttempt)==null?void 0:d.executionResult)==null?void 0:u.validation)==null?void 0:f.warnings)!=null&&c.length)}).length;return{total:e.length,failed:r,loading:t,warningCount:n,issueCount:r+n,severity:r?"error":n?"warning":t?"loading":"ok"}}function Gr(e){return[`${e.total} ${e.total===1?"trace":"traces"}`,`${e.loading} loading`,`${e.failed} failed`,`${e.warningCount} warning${e.warningCount===1?"":"s"}`].join(" · ")}function Jr(e,r){const t=r.trim().toLowerCase();return t?e.filter(n=>[n.queryId,n.queryLabel,n.viewId,n.viewTitle,n.visualType,n.sectionTitle,n.builder,n.queryKind,or(n)].filter(Boolean).join(" ").toLowerCase().includes(t)):e}function Yr(e){const r=e.filter(o=>o.queryKind==="inputOptions"),t=new Set(r.map(we));return[{title:"Views",traces:e.filter(o=>!t.has(we(o)))},{title:"Inputs",traces:r}]}function rr(e,r){if(!(!(r!=null&&r.traceId)&&!(r!=null&&r.queryId)&&!(r!=null&&r.viewId)))return r.traceId?e.find(t=>t.traceId===r.traceId):e.find(t=>!(r.queryId&&t.queryId!==r.queryId||r.viewId&&t.viewId!==r.viewId))}function Xr(e,r){if(r.queryId)return rr(e,r);if(!r.viewId)return;const t=e.filter(n=>n.viewId===r.viewId);return t.length===1?t[0]:void 0}function Zr(e,r){return!!(e&&r&&e.traceId===r.traceId)}function we(e){return e.traceId}function et(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 ue(e)}}function tr(e){const r=e.trim().toLowerCase();return r==="metric"||r==="kpi"?"metric":r==="records"||r==="table"?"records":r==="matrix"||r==="pivot"?"matrix":r==="analysis"?"analysis":r==="inputs"||r==="input options"?"inputs":r==="sql"?"sql":"default"}function nr(e){switch(e){case"metric":return{borderColor:"var(--sd-tone-metric-border)",background:"var(--sd-tone-metric-bg)",color:"var(--sd-tone-metric-fg)"};case"records":return{borderColor:"var(--sd-tone-records-border)",background:"var(--sd-tone-records-bg)",color:"var(--sd-tone-records-fg)"};case"analysis":case"matrix":return{borderColor:"var(--sd-tone-analysis-border)",background:"var(--sd-tone-analysis-bg)",color:"var(--sd-tone-analysis-fg)"};case"inputs":case"sql":case"default":default:return{borderColor:"var(--sd-border)",background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)"}}}function Ce(e){return e.viewTitle||e.queryLabel||e.viewId||e.queryId}function rt(e,r,t){const n=[];return e.queryLabel&&e.queryLabel!==r&&n.push(e.queryLabel),e.queryId&&e.queryId!==r&&e.queryId!==e.queryLabel?n.push(e.queryId):e.viewId&&e.viewId!==r&&e.viewId!==e.queryLabel&&n.push(e.viewId),n.push(t),n}function ir(e){return nt(e.visualType)||et(e.queryKind)}function tt(e,r){return r?e.queryLabel||e.queryId:Ce(e)}function nt(e){if(e)return e.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase())}function or(e){const r=e.sourceRefs.map(K);return r.length?r.length===1?r[0]:`${r[0]} + ${r.length-1} more`:"No source"}function it(e){return e.reduce((r,t)=>(t.role==="measure"?r.measures.push(t):t.role==="date"?r.timeFields.push(t):t.role==="dimension"?r.dimensions.push(t):t.role==="id"?r.identifiers.push(t):r.other.push(t),r),{measures:[],timeFields:[],dimensions:[],identifiers:[],other:[]})}function ot(e){var r,t;if(e.queryKind==="records"&&((r=e.projectionFieldRefs)!=null&&r.length)&&e.projectionFieldRefs.every(n=>n.role==="measure")&&((t=e.latestAttempt)==null?void 0:t.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 ue(e.queryKind)}}function st(e){return[e.aggregate,e.label||e.name].filter(Boolean).join(" ")}function at(e){var u,f,c;const r=e.valuePreview||"redacted",t=((u=e.fieldRef)==null?void 0:u.label)||((f=e.fieldRef)==null?void 0:f.name),n=(c=e.fieldRef)!=null&&c.source?K(e.fieldRef.source):void 0,o=[t?`on ${t}`:void 0,n].filter(Boolean).join(" · "),d=[e.inputId,e.operator,r,o].filter(Boolean).join(" - ");return{operator:e.operator,value:r,binding:o,title:d}}function K(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 dt(e){if(e.file)return e.line&&e.column?`${e.file}:${e.line}:${e.column}`:e.line?`${e.file}:${e.line}`:e.file}function lt(e){return typeof e=="number"?e.toLocaleString():"-"}function ut(e){return typeof e=="number"?`${Math.round(e)}ms`:"-"}function ct(e){return qe(e)}function qe(e){return JSON.stringify(e,null,2)??"undefined"}function ft(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 mt(e)}}function pt(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 mt(e){throw new Error(`Unsupported Semaphor trace event: ${JSON.stringify(e)}`)}function ge(e){return Array.isArray(e)?e.filter(r=>typeof r=="string"):[]}function gt(e){const r=e==null?void 0:e.metadata,t=r&&typeof r=="object"&&!Array.isArray(r)&&"dataAppDebug"in r&&r.dataAppDebug&&typeof r.dataAppDebug=="object"&&!Array.isArray(r.dataAppDebug)?r.dataAppDebug:void 0;return{compiledSql:typeof(t==null?void 0:t.compiledSql)=="string"?t.compiledSql:void 0,queryHash:typeof(t==null?void 0:t.queryHash)=="string"?t.queryHash:void 0}}function ht(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)"}:e==="loading"?{borderColor:"var(--sd-loading-border)",background:"var(--sd-loading-bg)",color:"var(--sd-loading-fg)"}:{borderColor:"var(--sd-success-border)",background:"var(--sd-success-bg)",color:"var(--sd-success-fg)"}}function vt(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 bt(e){return e==="right"?{gridTemplateColumns:"minmax(210px, 280px) minmax(0, 1fr)"}:{gridTemplateColumns:"minmax(260px, 340px) minmax(0, 1fr)"}}function xt(e){return{borderRight:"1px solid var(--sd-border)",borderBottom:0}}function sr(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 St(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 _e="semaphor-devtools-stylesheet",O="semaphor-devtools",It=`
|
|
2
|
+
.${O} {
|
|
3
3
|
--sd-bg: #ffffff;
|
|
4
4
|
--sd-bg-muted: #fafafa;
|
|
5
5
|
--sd-bg-raised: #ffffff;
|
|
@@ -28,10 +28,27 @@
|
|
|
28
28
|
--sd-loading-border: #bfdbfe;
|
|
29
29
|
--sd-loading-dot: #2563eb;
|
|
30
30
|
--sd-idle-dot: #94a3b8;
|
|
31
|
+
--sd-tone-metric-bg: #f5f3ff;
|
|
32
|
+
--sd-tone-metric-fg: #6d28d9;
|
|
33
|
+
--sd-tone-metric-border: #ddd6fe;
|
|
34
|
+
--sd-tone-records-bg: #f0f9ff;
|
|
35
|
+
--sd-tone-records-fg: #0369a1;
|
|
36
|
+
--sd-tone-records-border: #bae6fd;
|
|
37
|
+
--sd-tone-analysis-bg: #fffbeb;
|
|
38
|
+
--sd-tone-analysis-fg: #b45309;
|
|
39
|
+
--sd-tone-analysis-border: #fde68a;
|
|
40
|
+
--sd-tone-date-bg: #fff7ed;
|
|
41
|
+
--sd-tone-date-fg: #c2410c;
|
|
42
|
+
--sd-tone-date-border: #fed7aa;
|
|
43
|
+
--sd-tone-string-bg: #ecfdf5;
|
|
44
|
+
--sd-tone-string-fg: #047857;
|
|
45
|
+
--sd-tone-string-border: #a7f3d0;
|
|
46
|
+
--sd-sql-keyword: #6d28d9;
|
|
47
|
+
--sd-sql-bind: #b45309;
|
|
31
48
|
}
|
|
32
49
|
|
|
33
50
|
@media (prefers-color-scheme: dark) {
|
|
34
|
-
.${
|
|
51
|
+
.${O} {
|
|
35
52
|
--sd-bg: #09090b;
|
|
36
53
|
--sd-bg-muted: #18181b;
|
|
37
54
|
--sd-bg-raised: #18181b;
|
|
@@ -55,14 +72,31 @@
|
|
|
55
72
|
--sd-loading-bg: rgba(59, 130, 246, 0.12);
|
|
56
73
|
--sd-loading-fg: #93c5fd;
|
|
57
74
|
--sd-loading-border: rgba(59, 130, 246, 0.35);
|
|
75
|
+
--sd-tone-metric-bg: rgba(139, 92, 246, 0.14);
|
|
76
|
+
--sd-tone-metric-fg: #c4b5fd;
|
|
77
|
+
--sd-tone-metric-border: rgba(139, 92, 246, 0.4);
|
|
78
|
+
--sd-tone-records-bg: rgba(14, 165, 233, 0.14);
|
|
79
|
+
--sd-tone-records-fg: #7dd3fc;
|
|
80
|
+
--sd-tone-records-border: rgba(14, 165, 233, 0.4);
|
|
81
|
+
--sd-tone-analysis-bg: rgba(245, 158, 11, 0.14);
|
|
82
|
+
--sd-tone-analysis-fg: #fcd34d;
|
|
83
|
+
--sd-tone-analysis-border: rgba(245, 158, 11, 0.4);
|
|
84
|
+
--sd-tone-date-bg: rgba(249, 115, 22, 0.14);
|
|
85
|
+
--sd-tone-date-fg: #fdba74;
|
|
86
|
+
--sd-tone-date-border: rgba(249, 115, 22, 0.4);
|
|
87
|
+
--sd-tone-string-bg: rgba(16, 185, 129, 0.14);
|
|
88
|
+
--sd-tone-string-fg: #6ee7b7;
|
|
89
|
+
--sd-tone-string-border: rgba(16, 185, 129, 0.4);
|
|
90
|
+
--sd-sql-keyword: #c4b5fd;
|
|
91
|
+
--sd-sql-bind: #fcd34d;
|
|
58
92
|
}
|
|
59
93
|
}
|
|
60
94
|
|
|
61
|
-
.${
|
|
95
|
+
.${O}-source {
|
|
62
96
|
display: -webkit-box;
|
|
63
97
|
-webkit-line-clamp: 2;
|
|
64
98
|
-webkit-box-orient: vertical;
|
|
65
99
|
overflow: hidden;
|
|
66
100
|
word-break: break-all;
|
|
67
101
|
}
|
|
68
|
-
`;function ot(){if(typeof document>"u"||document.getElementById(_e))return;const e=document.createElement("style");e.id=_e,e.textContent=hr,document.head.appendChild(e)}const Z='ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',ee="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fe={color:"var(--sd-fg-muted)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},u={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 ${Z}`,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 ${Z}`},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 ${Z}`},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",...fe},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},queryListSourceSecondary:{minWidth:0,paddingLeft:14,color:"var(--sd-fg-subtle)",fontSize:10,lineHeight:1.3},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:ee},detailsCaptionLabel:{color:"var(--sd-fg-subtle)"},detailsCaptionValue:{color:"var(--sd-fg)",fontVariantNumeric:"tabular-nums"},disclosure:{marginTop:16},disclosureSummary:{cursor:"pointer",...fe},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:ee,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:ee,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:{...fe},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:ee,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 ${Z}`,cursor:"pointer"},inspectButtonText:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}};function at(e){return{...e,order:[],entries:{},sequence:0}}function gr(e,t){if(t.type==="config")return t.config.enabled?{...e,...t.config}:at(t.config);if(!e.enabled)return e;switch(t.type){case"register":return Sr(vr(e,t.descriptor));case"unregister":return xr(e,t.traceKey);case"event":return br(e,t);default:return e}}function vr(e,t){const r=e.entries[t.traceKey],n=r?e.sequence:e.sequence+1,i=Ee(),o={...r||Ir(t),...ut(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]:o}}}function xr(e,t){const r=e.entries[t];return r?{...e,entries:{...e.entries,[t]:{...r,mounted:!1}}}:e}function br(e,t){const r=e.entries[t.traceKey];if(!r)return e;const n=Ee(),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 Sr(e){if(e.order.length<=e.maxQueries)return e;const t=e.order.map(i=>e.entries[i]).filter(i=>!!i).sort((i,o)=>i.mounted!==o.mounted?i.mounted?1:-1:i.lastEventAt-o.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 Ir(e){const t=Ee();return{...ut(e),traceKey:e.traceKey,latestAttempt:{status:"idle"},recentEvents:[],mounted:!0,registeredAt:0,lastEventAt:t}}function ut(e){var n;const t=Lr(e.spec),r=Or(e.spec,e.activeInputs);return{traceId:pt(e.traceKey),viewId:e.viewId,viewTitle:e.viewTitle,visualType:e.visualType,sectionTitle:e.sectionTitle,queryId:e.queryId,queryLabel:e.queryLabel,queryKind:e.queryKind,builder:e.builder,sourceRefs:Dr(e.intent),sourceHints:(n=e.sourceHints)!=null&&n.length?e.sourceHints:void 0,projectionFieldRefs:t,inputFieldRefs:r,fieldRefs:Br(e.intent),inputsApplied:(e.activeInputs||[]).map(i=>({inputId:i.inputId,fieldRef:i.field,operator:i.operator,valuePreview:Cr(i)})),recentEvents:[],clientWarnings:e.clientWarnings}}function ie(e){const{traceKey:t,mounted:r,registeredAt:n,lastEventAt:i,...o}=e;return o}function se(e){return e.enabled?{enabled:!0,queries:e.order.map(r=>e.entries[r]).filter(r=>!!r).map(ie),getQuery:r=>{const n=Object.values(e.entries).find(i=>i.queryId===r);return n?ie(n):void 0},getQueries:r=>Object.values(e.entries).filter(n=>n.queryId===r).map(ie)}:Je}function wr(e){return{snapshot:()=>qr(se(e())),getQuery:t=>Ne(se(e()).getQuery(t)),getQueries:t=>se(e()).getQueries(t).map(r=>Ne(r)).filter(r=>!!r)}}function qr(e){if(!e.enabled)return e;const t=e.queries.map(lt);return{enabled:e.enabled,queries:t,getQuery:r=>t.find(n=>n.queryId===r),getQueries:r=>t.filter(n=>n.queryId===r)}}function Ne(e){return e?lt(e):void 0}function lt(e){var t;return(t=e==null?void 0:e.latestAttempt)!=null&&t.executionResult?{...e,latestAttempt:{...e.latestAttempt,executionResult:jr(e.latestAttempt.executionResult)}}:e}function jr(e){const{compiledQuery:t,intent:r,result:n,...i}=e,o=Ar(i.metadata);return{...i,...o?{metadata:o}:{}}}function Ar(e){if(!e||typeof e!="object"||Array.isArray(e))return e;const t=e.dataAppDebug;if(!t||typeof t!="object"||Array.isArray(t))return e;const{compiledSql:r,...n}=t;return{...e,dataAppDebug:n}}function Rr(e){return e===void 0||e===!1?{enabled:!1,exposeWindowBridge:!1,maxEventsPerQuery:de,maxQueries:ce}:e===!0?{enabled:!0,exposeWindowBridge:!1,maxEventsPerQuery:de,maxQueries:ce}:{enabled:e.enabled!==!1,exposeWindowBridge:e.exposeWindowBridge===!0,maxEventsPerQuery:ze(e.maxEventsPerQuery,de,jt),maxQueries:ze(e.maxQueries,ce,At)}}function Fe(e){const r=[e==null?void 0:e.sourceHint,...(e==null?void 0:e.sourceHints)||[]].filter(n=>!!n).map(n=>({file:te(n.file),line:We(n.line),column:We(n.column),exportName:te(n.exportName),component:te(n.component),note:te(n.note)})).filter(n=>!!(n.file||n.line||n.column||n.exportName||n.component||n.note));return r.length?r:void 0}function te(e){if(typeof e!="string")return;const t=e.trim();return t||void 0}function We(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:void 0}function ze(e,t,r){return e===void 0||!Number.isFinite(e)||!Number.isInteger(e)||e<=0?t:Math.min(e,r)}function Er(e){return typeof e.id=="string"&&e.id.trim()?e.id:void 0}function Tr(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 ue(e)}}function ue(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function Cr(e){if(kr(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 Ve(`${n}${i}`)}return`${t.length} selected`}return typeof t=="number"||typeof t=="boolean"?String(t):typeof t=="string"?Ve(t):t&&typeof t=="object"?`object(${Object.keys(t).slice(0,5).join(",")})`:String(t)}}function Ve(e){return e.length>80?`${e.slice(0,77)}...`:e}function kr(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 Dr(e){const t=new Map;return oe(e,r=>{Kr(r)&&t.set(ct(r),r)}),[...t.values()]}function Lr(e){switch(e.queryKind){case"metric":case"analysis":return F([...e.measures||[],e.primaryMeasure,e.dateField,...e.dimensions||[]]);case"records":return F(e.fields||[]);case"inputOptions":return F([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]]);case"sql":return F(e.fields||[]);case"matrix":return F([...(e.rows||[]).map(me),...(e.columns||[]).map(me),...(e.values||[]).map(me)]);default:return ue(e)}}function Or(e,t){const r=[...(e.inputs||[]).map(dt),...(t||[]).map(n=>n.field)];return F(r)}function F(e){const t=new Map;return e.forEach(r=>{r&&J(r)&&t.set(Re(r),r)}),[...t.values()]}function dt(e){if(!e||typeof e!="object")return;const t=e.toAnalyticsInput;if(typeof t=="function"){const n=t.call(e);return dt(n)}const r=e.field;return J(r)?r:void 0}function me(e){if(J(e))return e;if(!e||typeof e!="object")return;const t=e.field;return J(t)?t:void 0}function Br(e){const t=new Map;return oe(e,r=>{J(r)&&t.set(Re(r),r)}),[...t.values()]}function oe(e,t){if(!(!e||typeof e!="object")){if(t(e),Array.isArray(e)){e.forEach(r=>oe(r,t));return}Object.values(e).forEach(r=>oe(r,t))}}function Kr(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 J(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 ct(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 Re(e){return[e.name,e.role,e.aggregate,e.source?ct(e.source):""].join(":")}function Mr(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 $r(e){const t=e;return Array.isArray(t==null?void 0:t.columns)?t.columns.length:void 0}function He(e){const t=e;return t==null?void 0:t.executionResult}function Pe(e){const t=e;return typeof(t==null?void 0:t.requestId)=="string"?t.requestId:void 0}function pt(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 re(){return new Date().toISOString()}function Ee(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const _r=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"],Nr=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"];function ft(e){if(!e)return{};const t=Hr(e.executionResult),r=Fr(e,t),n=zr(r);return{...e,...Object.keys(r).length?{resultSets:r}:{},...n?{columns:n.columns,records:n.records,rowCount:n.rowCount}:{}}}function Fr(e,t){const r=Wr(e.resultSets);for(const i of _r){if(r[i]){r[i]=mt(r[i]);continue}const o=Pr(e[i]);if(!o.length)continue;const l=t.length?t:Qr(o);r[i]={records:Te(o,l),columns:l,rowCount:o.length}}const n=Vr(e.executionResult);return n&&n.records.length>0&&!r.records&&(r.records=n),r}function Wr(e){return Object.fromEntries(Object.entries(e||{}).map(([t,r])=>[t,mt(r)]))}function mt(e){var t;return{...e,records:Te(e.records||[],e.columns||[]),rowCount:e.rowCount??((t=e.records)==null?void 0:t.length)??0}}function zr(e){var t;for(const r of Nr)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 Vr(e){const t=e==null?void 0:e.result;if(!(!t||t.kind!=="records"&&t.kind!=="sql"))return{records:Te(t.records,t.columns),columns:t.columns,rowCount:t.rowCount??t.records.length}}function Hr(e){const t=e==null?void 0:e.result;return!t||t.kind!=="records"&&t.kind!=="sql"?[]:t.columns}function Pr(e){return Array.isArray(e)?e.filter(t=>!!(t&&typeof t=="object"&&!Array.isArray(t))):[]}function Te(e,t){return t.length?e.map(r=>{const n={};return t.forEach((i,o)=>{const l=Ur(r,{name:i.key,label:i.label,fallbackNames:[i.name,Object.keys(r)[o]]});l!==void 0&&(n[i.key]=l)}),Object.keys(n).length?n:r}):e}function Qr(e){return Array.from(new Set(e.flatMap(r=>Object.keys(r)))).map(r=>({key:r,name:r,label:r}))}function Ur(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 yt(){return{executeAnalysis:(e,t,r)=>N(e,t,r??{}).then(ft),executeMetric:(e,t)=>N(e,t),executeRecords:(e,t)=>N(e,t),executeInputOptions:(e,t)=>N(e,t),executeSql:(e,t)=>N(e,t),executeMatrix:(e,t)=>N(e,t)}}async function N(e,t,r){if(!t.token)throw new Error("SemaphorDataAppProvider needs a token to execute queries.");const n=rn(t),i=Yr(e,n);let o;try{o=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,...Jr(t)?{debug:{responseDetail:"debug"}}:{}})})}catch(p){throw new Error(`${i}: ${p instanceof Error?p.message:String(p)}`)}const l=await en(o);if(!o.ok||l.error)throw Gr(`${i}: ${l.error||`Semaphor Data App execution failed with status ${o.status}.`}`,l);return l}function Gr(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 Jr(e){const t=e.debug;return t?t===!0?!0:t.enabled!==!1&&t.requestServerDebug!==!1:!1}function Yr(e,t){return[`Semaphor ${e.kind} query`,e.id?`id=${e.id}`:void 0,e.label?`label=${e.label}`:void 0,Xr(e),`endpoint=${Zr(t)}`].filter(r=>!!r).join(" ")}function Xr(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 Zr(e){if(!e)return"/api/v1/data-app/execute";try{return new URL(e,"http://localhost").pathname}catch{return e}}async function en(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:tn(e,t),details:t}}}function tn(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 rn(e){const t=nn(e).replace(/\/+$/,"");return t?t.endsWith("/api")?`${t}/v1/data-app/execute`:`${t}/api/v1/data-app/execute`:"/api/v1/data-app/execute"}function nn(e){if(e.apiBaseUrl)return e.apiBaseUrl;if(!e.token)return"";try{return Ge.jwtDecode(e.token).apiServiceUrl||""}catch{return""}}const ht=d.createContext({});function sn(){if(!(typeof window>"u"))return window.__SEMAPHOR_DATA_APP_RUNTIME__}function on(){return d.useContext(ht)}const ye={value:null},he={},an={records:[]},ge={options:[]},un={records:[]},ve={};function ln(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs),r=S.toSemaphorAnalysisQueryOptions(e);try{const n=S.toSemaphorAnalysisIntent(e),i=z(n);return i?{error:i,activeInputs:t,analysisOptions:r,queryKey:q(void 0,t,i,r),idleData:he}:{intent:n,error:null,activeInputs:t,analysisOptions:r,queryKey:q(n,t,void 0,r),idleData:he}}catch(n){const i=B(n);return{error:i,activeInputs:t,analysisOptions:r,queryKey:q(void 0,t,i,r),idleData:he}}}function dn(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs);try{const r=S.toSemaphorMetricIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ye}:{intent:r,error:null,activeInputs:t,queryKey:q(r,t),idleData:ye}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ye}}}function cn(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs),r=an;try{const n=S.toSemaphorRecordsIntent(e),i=z(n);return i?{error:i,activeInputs:t,queryKey:q(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:q(n,t),idleData:r}}catch(n){const i=B(n);return{error:i,activeInputs:t,queryKey:q(void 0,t,i),idleData:r}}}function pn(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs);try{const r=S.toSemaphorInputOptionsIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ge}:{intent:r,error:null,activeInputs:t,queryKey:q(r,t),idleData:ge}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ge}}}function fn(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs),r=un;try{const n=S.toSemaphorSqlIntent(e),i=z(n);return i?{error:i,activeInputs:t,queryKey:q(void 0,t,i),idleData:r}:{intent:n,error:null,activeInputs:t,queryKey:q(n,t),idleData:r}}catch(n){const i=B(n);return{error:i,activeInputs:t,queryKey:q(void 0,t,i),idleData:r}}}function mn(e){const t=S.toSemaphorActiveInputSnapshots(e.inputs);try{const r=S.toSemaphorMatrixIntent(e),n=z(r);return n?{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ve}:{intent:r,error:null,activeInputs:t,queryKey:q(r,t),idleData:ve}}catch(r){const n=B(r);return{error:n,activeInputs:t,queryKey:q(void 0,t,n),idleData:ve}}}function B(e){return e instanceof Error?e:new Error(String(e))}function z(e){const t=St.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 q(e,t,r,n){return JSON.stringify({intent:e,activeInputs:t,analysisOptions:n,error:r==null?void 0:r.message})}function yn(e){const[t,r]=d.useState(e.defaultValue),n=Object.prototype.hasOwnProperty.call(e,"value"),i=n?e.value:t,o=d.useMemo(()=>S.normalizeSemaphorInputOptions(e.options),[e.options]),l=d.useCallback(c=>{var y;const f=c;(y=e.onValueChange)==null||y.call(e,f),n||r(f)},[n,e]),p=d.useCallback(()=>l(void 0),[l]);return d.useMemo(()=>{const c=S.toSemaphorInputSpec(e);return{id:e.id,kind:e.kind,label:e.label,field:c.field,operator:c.operator,relationshipHint:c.relationshipHint,controlRole:e.kind==="control"?e.role:void 0,value:i,options:o,isActive:S.hasSemaphorInputValue(i),setValue:l,clear:p,toAnalyticsInput:()=>({inputId:c.inputId,field:c.field,kind:e.kind,label:e.label,value:i,isActive:S.hasSemaphorInputValue(i),operator:c.operator,relationshipHint:c.relationshipHint,controlRole:e.kind==="control"?e.role:void 0})}},[p,o,l,e,i])}function hn(e){const[t,r]=d.useState(()=>Sn(e));return d.useEffect(()=>{r(n=>{let i=n;for(const o of e)!Object.prototype.hasOwnProperty.call(i,o.id)&&o.defaultValue!==void 0&&(i={...i,[o.id]:o.defaultValue});return i})},[e]),d.useMemo(()=>e.map(n=>{const i=Object.prototype.hasOwnProperty.call(n,"value"),o=i?n.value:t[n.id],l=S.normalizeSemaphorInputOptions(n.options),p=y=>{var h;(h=n.onValueChange)==null||h.call(n,y),i||r(g=>({...g,[n.id]:y}))},c=()=>p(void 0),f=S.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:o,options:l,isActive:S.hasSemaphorInputValue(o),setValue:p,clear:c,toAnalyticsInput:()=>({inputId:f.inputId,field:f.field,kind:n.kind,label:n.label,value:o,isActive:S.hasSemaphorInputValue(o),operator:f.operator,relationshipHint:f.relationshipHint,controlRole:n.kind==="control"?n.role:void 0})}}),[e,t])}function gn(e,t){const r=(t==null?void 0:t.status)==="success"?t.options:void 0,n=d.useMemo(()=>vn(r),[r]);d.useEffect(()=>{gt(e.value,r)||e.clear()},[e,n,t==null?void 0:t.status,r])}function gt(e,t){if(!S.hasSemaphorInputValue(e)||t===void 0)return!0;const r=new Set(t.map(i=>Qe(i.value)));return(Array.isArray(e)?e:[e]).every(i=>r.has(Qe(i)))}function vn(e){return JSON.stringify((e||[]).map(t=>t.value))}function Qe(e){return`${typeof e}:${String(e)}`}function xn(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:dn(r)};case"analysis":return{queryKind:r.queryKind,request:ln(r)};case"records":return{queryKind:r.queryKind,request:cn(r)};case"inputOptions":return{queryKind:r.queryKind,request:pn(r)};case"sql":return{queryKind:r.queryKind,request:fn(r)};case"matrix":return{queryKind:r.queryKind,request:mn(r)};default:return xe(r)}},[r]),i=Dt({spec:r,queryKind:n.queryKind,queryKey:n.request.queryKey,intent:n.request.intent,activeInputs:n.request.activeInputs,debug:t.debug}),o=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]),p=d.useCallback(a=>{var D,E,v,w,C,R,k,I,T;const b=n.request;if(b.intent)switch(n.queryKind){case"metric":return(D=a.executor)==null?void 0:D.executeMetric(b.intent,a);case"analysis":return(v=(E=a.executor)==null?void 0:E.executeAnalysis)==null?void 0:v.call(E,b.intent,a,b.analysisOptions);case"records":return(w=a.executor)==null?void 0:w.executeRecords(b.intent,a);case"inputOptions":return(C=a.executor)==null?void 0:C.executeInputOptions(b.intent,a);case"sql":return(k=(R=a.executor)==null?void 0:R.executeSql)==null?void 0:k.call(R,b.intent,a);case"matrix":return(T=(I=a.executor)==null?void 0:I.executeMatrix)==null?void 0:T.call(I,b.intent,a);default:return xe(n)}},[n]),c=bn(n.request.queryKey,p,n.request.idleData,n.request.activeInputs,l),f=i.queryId,y=i.validationFailure;d.useEffect(()=>{const a=n.request.error;if(!a){o.current=null;return}const b=`${f}:${a.message}`;o.current!==b&&(o.current=b,y(a))},[n.request.error,n.request.queryKey,f,y]);const h=n.request.error?n.request.idleData:c.data,g=n.request.error?"error":c.status,m=!n.request.error&&c.status==="loading",x=n.request.error||c.error,A=i.trace;switch(n.queryKind){case"metric":{const a=h;return{id:r.id,intent:n.request.intent,value:(a==null?void 0:a.value)??null,measures:a==null?void 0:a.measures,comparisonValue:a==null?void 0:a.comparisonValue,delta:a==null?void 0:a.delta,deltaPercent:a==null?void 0:a.deltaPercent,records:a==null?void 0:a.records,executionResult:a==null?void 0:a.executionResult,status:g,isLoading:m,error:x,trace:A}}case"analysis":{const a=ft(h);return{id:r.id,intent:n.request.intent,...a||{},status:g,isLoading:m,error:x,trace:A}}case"records":{const a=h;return{id:r.id,intent:n.request.intent,records:(a==null?void 0:a.records)||[],columns:a==null?void 0:a.columns,rowCount:a==null?void 0:a.rowCount,pagination:a==null?void 0:a.pagination,executionResult:a==null?void 0:a.executionResult,status:g,isLoading:m,error:x,trace:A}}case"inputOptions":{const a=h;return{id:r.id,intent:n.request.intent,options:(a==null?void 0:a.options)||[],executionResult:a==null?void 0:a.executionResult,status:g,isLoading:m,error:x,trace:A}}case"sql":{const a=h;return{id:r.id,intent:n.request.intent,records:(a==null?void 0:a.records)||[],columns:a==null?void 0:a.columns,rowCount:a==null?void 0:a.rowCount,pagination:a==null?void 0:a.pagination,output:a==null?void 0:a.output,rowLimitExceeded:a==null?void 0:a.rowLimitExceeded,executionResult:a==null?void 0:a.executionResult,status:g,isLoading:m,error:x,trace:A}}case"matrix":{const a=h;return{id:r.id,intent:n.request.intent,matrixResult:a==null?void 0:a.matrixResult,grid:a==null?void 0:a.grid,expansion:a==null?void 0:a.expansion,executionResult:a==null?void 0:a.executionResult,status:g,isLoading:m,error:x,trace:A}}default:return xe(n)}}function bn(e,t,r,n,i){const o=on(),l=d.useRef(t),p=d.useRef(n),[c,f]=d.useState({status:"idle",data:r,error:null});return l.current=t,p.current=n,d.useEffect(()=>{let y;try{y=l.current({...o,activeInputs:p.current})}catch(m){i==null||i.failure(m,0),f({status:"error",data:r,error:B(m)});return}if(!y){f({status:"idle",data:r,error:null});return}let h=!1;const g=vt();return i==null||i.start(),f(m=>({status:"loading",data:m.data,error:null})),y.then(m=>{h?i==null||i.ignored("superseded"):(i==null||i.success(m,Ue(g)),f({status:"success",data:m,error:null}))}).catch(m=>{h?i==null||i.ignored("superseded"):(i==null||i.failure(m,Ue(g)),f({status:"error",data:r,error:B(m)}))}),()=>{h=!0}},[r,e,o,i]),c}function vt(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function Ue(e){return Math.max(0,Math.round(vt()-e))}function Sn(e){return Object.fromEntries(e.filter(t=>t.defaultValue!==void 0).map(t=>[t.id,t.defaultValue]))}function xe(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function In(e){return!e||typeof e=="boolean"||e.enabled===!1?null:e.autoRenderDevtools===!0?{}:e.autoRenderDevtools?e.autoRenderDevtools:null}function wn({token:e,apiBaseUrl:t,executor:r,debug:n,children:i}){var m;const o=sn(),l=((m=o==null?void 0:o.authToken)==null?void 0:m.accessToken)||e,p=(o==null?void 0:o.dataApiBaseUrl)||(o==null?void 0:o.apiBaseUrl)||t,c=(o==null?void 0:o.debug)??n,f=In(c),y=d.useMemo(()=>yt(),[]),h=r||y,g=d.useMemo(()=>({token:l,apiBaseUrl:p,executor:h,debug:c}),[p,c,h,l]);return s.jsx(Rt,{debug:c,children:s.jsxs(ht.Provider,{value:g,children:[i,f?s.jsx(Xe,{...f}):null]})})}exports.SemaphorDataAppProvider=wn;exports.SemaphorDevtools=Xe;exports.SemaphorDevtoolsInspectButton=kt;exports.SemaphorViewBoundary=Ct;exports.createSemaphorQueryExecutor=yt;exports.defineSemaphorDataApp=It;exports.defineSemaphorInput=wt;exports.isSemaphorInputValueValidForOptions=gt;exports.semaphor=qt;exports.useClearInvalidSemaphorInputValue=gn;exports.useSemaphorDevtools=je;exports.useSemaphorInput=yn;exports.useSemaphorInputs=hn;exports.useSemaphorQuery=xn;
|
|
102
|
+
`;function ar(){if(typeof document>"u"||document.getElementById(_e))return;const e=document.createElement("style");e.id=_e,e.textContent=It,document.head.appendChild(e)}const ne='ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',L="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",he={color:"var(--sd-fg-muted)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.08em"},s={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 ${ne}`,cursor:"pointer"},launcherText:{fontVariantNumeric:"tabular-nums"},launcherIssueCount:{display:"grid",minWidth:18,height:18,padding:"0 6px",placeItems:"center",borderRadius:999,border:"1px solid currentColor",background:"var(--sd-bg)",color:"currentColor",fontSize:10,lineHeight:"18px",whiteSpace:"nowrap"},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 ${ne}`},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 ${ne}`},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",...he},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",display:"inline-flex",alignItems:"center",height:15,padding:"0 5px",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)",fontFamily:L,fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.06em"},queryListSource:{minWidth:0,paddingLeft:14,color:"var(--sd-fg-muted)",fontSize:11,lineHeight:1.35,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},queryListSubtitleSep:{color:"var(--sd-fg-subtle)"},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",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg-muted)",fontFamily:L,fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.06em"},metaStrip:{display:"flex",flexWrap:"wrap",alignItems:"center",columnGap:6,rowGap:2,paddingLeft:16,color:"var(--sd-fg-muted)",fontSize:11},metaStripItem:{color:"var(--sd-fg-muted)",fontVariantNumeric:"tabular-nums"},metaStripDot:{color:"var(--sd-fg-subtle)"},sourcePillRow:{display:"flex",flexWrap:"wrap",gap:6},sourcePill:{display:"inline-flex",alignItems:"center",gap:6,padding:"4px 7px",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:5,background:"var(--sd-bg)",color:"var(--sd-fg)"},sourcePillLabel:{fontFamily:L,fontSize:11,color:"var(--sd-fg)"},sourcePillRole:{display:"inline-flex",alignItems:"center",height:14,padding:"0 4px",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg-subtle)",fontFamily:L,fontSize:9,textTransform:"uppercase",letterSpacing:"0.06em"},fieldChipList:{display:"grid",gap:5,paddingTop:6},fieldChip:{display:"flex",alignItems:"center",gap:8,minWidth:0,padding:"6px 9px",borderWidth:1,borderStyle:"solid",borderColor:"var(--sd-border)",borderRadius:5,background:"var(--sd-bg)"},fieldGlyph:{display:"inline-flex",flex:"0 0 auto",alignItems:"center",justifyContent:"center",width:18,height:18,borderWidth:1,borderStyle:"solid",borderRadius:4,fontFamily:L,fontSize:11,fontWeight:700,lineHeight:1},fieldAggBadge:{display:"inline-flex",alignItems:"center",height:16,padding:"0 5px",borderRadius:3,background:"var(--sd-bg-accent)",color:"var(--sd-fg)",fontFamily:L,fontSize:10,fontWeight:600,letterSpacing:"0.04em"},fieldChipName:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--sd-fg)",fontSize:12,fontWeight:500},fieldChipMeta:{flex:"0 0 auto",fontFamily:L,fontSize:10,color:"var(--sd-fg-subtle)"},fieldChipMetaDot:{color:"var(--sd-fg-subtle)",fontSize:10},sqlKeyword:{color:"var(--sd-sql-keyword)",fontWeight:600},sqlBindParam:{color:"var(--sd-sql-bind)"},disclosure:{marginTop:16},disclosureSummary:{cursor:"pointer",...he},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},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"},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:L,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:L,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:{...he},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:L,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 ${ne}`,cursor:"pointer"},inspectButtonText:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}};function dr(e){return{...e,order:[],entries:{},sequence:0}}function wt(e,r){if(r.type==="config")return r.config.enabled?{...e,...r.config}:dr(r.config);if(!e.enabled)return e;switch(r.type){case"register":return At(qt(e,r.descriptor));case"unregister":return jt(e,r.traceKey);case"event":return Rt(e,r);default:return e}}function qt(e,r){const t=e.entries[r.traceKey],n=t?e.sequence:e.sequence+1,o=ke(),d={...t||Et(r),...lr(r),traceKey:r.traceKey,latestAttempt:(t==null?void 0:t.latestAttempt)||{status:"idle"},recentEvents:(t==null?void 0:t.recentEvents)||[],mounted:!0,registeredAt:(t==null?void 0:t.registeredAt)||n,lastEventAt:(t==null?void 0:t.lastEventAt)||o};return{...e,sequence:n,order:t?e.order:[...e.order,r.traceKey],entries:{...e.entries,[r.traceKey]:d}}}function jt(e,r){const t=e.entries[r];return t?{...e,entries:{...e.entries,[r]:{...t,mounted:!1}}}:e}function Rt(e,r){const t=e.entries[r.traceKey];if(!t)return e;const n=ke(),o=[...t.recentEvents,r.event].slice(-e.maxEventsPerQuery);return{...e,entries:{...e.entries,[r.traceKey]:{...t,latestAttempt:r.latestAttempt?{...t.latestAttempt,...r.latestAttempt}:t.latestAttempt,recentEvents:o,lastEventAt:n}}}}function At(e){if(e.order.length<=e.maxQueries)return e;const r=e.order.map(o=>e.entries[o]).filter(o=>!!o).sort((o,d)=>o.mounted!==d.mounted?o.mounted?1:-1:o.lastEventAt-d.lastEventAt),t=e.order.length-e.maxQueries,n=new Set(r.slice(0,t).map(o=>o.traceKey));return n.size?{...e,order:e.order.filter(o=>!n.has(o)),entries:Object.fromEntries(Object.entries(e.entries).filter(([o])=>!n.has(o)))}:e}function Et(e){const r=ke();return{...lr(e),traceKey:e.traceKey,latestAttempt:{status:"idle"},recentEvents:[],mounted:!0,registeredAt:0,lastEventAt:r}}function lr(e){var n;const r=Wt(e.spec),t=Ft(e.spec,e.activeInputs);return{traceId:pr(e.traceKey),viewId:e.viewId,viewTitle:e.viewTitle,visualType:e.visualType,sectionTitle:e.sectionTitle,queryId:e.queryId,queryLabel:e.queryLabel,queryKind:e.queryKind,builder:e.builder,sourceRefs:$t(e.intent),sourceHints:(n=e.sourceHints)!=null&&n.length?e.sourceHints:void 0,projectionFieldRefs:r,inputFieldRefs:t,fieldRefs:_t(e.intent),inputsApplied:(e.activeInputs||[]).map(o=>({inputId:o.inputId,fieldRef:o.field,operator:o.operator,valuePreview:Mt(o)})),recentEvents:[],clientWarnings:e.clientWarnings}}function ae(e){const{traceKey:r,mounted:t,registeredAt:n,lastEventAt:o,...d}=e;return d}function de(e){return e.enabled?{enabled:!0,queries:e.order.map(t=>e.entries[t]).filter(t=>!!t).map(ae),getQuery:t=>{const n=Object.values(e.entries).find(o=>o.queryId===t);return n?ae(n):void 0},getQueries:t=>Object.values(e.entries).filter(n=>n.queryId===t).map(ae)}:Xe}function Ct(e){return{snapshot:()=>Tt(de(e())),getQuery:r=>ze(de(e()).getQuery(r)),getQueries:r=>de(e()).getQueries(r).map(t=>ze(t)).filter(t=>!!t)}}function Tt(e){if(!e.enabled)return e;const r=e.queries.map(ur);return{enabled:e.enabled,queries:r,getQuery:t=>r.find(n=>n.queryId===t),getQueries:t=>r.filter(n=>n.queryId===t)}}function ze(e){return e?ur(e):void 0}function ur(e){var r;return(r=e==null?void 0:e.latestAttempt)!=null&&r.executionResult?{...e,latestAttempt:{...e.latestAttempt,executionResult:kt(e.latestAttempt.executionResult)}}:e}function kt(e){const{compiledQuery:r,intent:t,result:n,...o}=e,d=Dt(o.metadata);return{...o,...d?{metadata:d}:{}}}function Dt(e){if(!e||typeof e!="object"||Array.isArray(e))return e;const r=e.dataAppDebug;if(!r||typeof r!="object"||Array.isArray(r))return e;const{compiledSql:t,...n}=r;return{...e,dataAppDebug:n}}function Lt(e){return e===void 0||e===!1?{enabled:!1,exposeWindowBridge:!1,maxEventsPerQuery:fe,maxQueries:pe}:e===!0?{enabled:!0,exposeWindowBridge:!1,maxEventsPerQuery:fe,maxQueries:pe}:{enabled:e.enabled!==!1,exposeWindowBridge:e.exposeWindowBridge===!0,maxEventsPerQuery:Pe(e.maxEventsPerQuery,fe,jr),maxQueries:Pe(e.maxQueries,pe,Rr)}}function Ot(e){const t=[e==null?void 0:e.sourceHint,...(e==null?void 0:e.sourceHints)||[]].filter(n=>!!n).map(n=>({file:ie(n.file),line:He(n.line),column:He(n.column),exportName:ie(n.exportName),component:ie(n.component),note:ie(n.note)})).filter(n=>!!(n.file||n.line||n.column||n.exportName||n.component||n.note));return t.length?t:void 0}function ie(e){if(typeof e!="string")return;const r=e.trim();return r||void 0}function He(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:void 0}function Pe(e,r,t){return e===void 0||!Number.isFinite(e)||!Number.isInteger(e)||e<=0?r:Math.min(e,t)}function Bt(e){return typeof e.id=="string"&&e.id.trim()?e.id:void 0}function Kt(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 ue(e)}}function ue(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function Mt(e){if(Nt(e))return;const r=e.value;if(r!==void 0){if(Array.isArray(r)){const t=r.filter(n=>typeof n=="string"||typeof n=="number"||typeof n=="boolean").map(n=>String(n));if(t.length===r.length&&t.length>0){const n=t.slice(0,3).join(", "),o=t.length>3?`, +${t.length-3} more`:"";return Ve(`${n}${o}`)}return`${r.length} selected`}return typeof r=="number"||typeof r=="boolean"?String(r):typeof r=="string"?Ve(r):r&&typeof r=="object"?`object(${Object.keys(r).slice(0,5).join(",")})`:String(r)}}function Ve(e){return e.length>80?`${e.slice(0,77)}...`:e}function Nt(e){var t;const r=[e.inputId,e.label,(t=e.field)==null?void 0:t.name].filter(Boolean).join(" ").toLowerCase();return["token","secret","password","email","phone","ssn"].some(n=>r.includes(n))}function $t(e){const r=new Map;return le(e,t=>{zt(t)&&r.set(fr(t),t)}),[...r.values()]}function Wt(e){switch(e.queryKind){case"metric":case"analysis":return P([...e.measures||[],e.primaryMeasure,e.dateField,...e.dimensions||[]]);case"records":return P(e.fields||[]);case"inputOptions":return P([e.labelField,e.valueField,e.searchField,...e.disambiguationFields||[]]);case"sql":return P(e.fields||[]);case"matrix":return P([...(e.rows||[]).map(ye),...(e.columns||[]).map(ye),...(e.values||[]).map(ye)]);default:return ue(e)}}function Ft(e,r){const t=[...(e.inputs||[]).map(cr),...(r||[]).map(n=>n.field)];return P(t)}function P(e){const r=new Map;return e.forEach(t=>{t&&Z(t)&&r.set(Te(t),t)}),[...r.values()]}function cr(e){if(!e||typeof e!="object")return;const r=e.toAnalyticsInput;if(typeof r=="function"){const n=r.call(e);return cr(n)}const t=e.field;return Z(t)?t:void 0}function ye(e){if(Z(e))return e;if(!e||typeof e!="object")return;const r=e.field;return Z(r)?r:void 0}function _t(e){const r=new Map;return le(e,t=>{Z(t)&&r.set(Te(t),t)}),[...r.values()]}function le(e,r){if(!(!e||typeof e!="object")){if(r(e),Array.isArray(e)){e.forEach(t=>le(t,r));return}Object.values(e).forEach(t=>le(t,r))}}function zt(e){if(!e||typeof e!="object")return!1;const r=e;return r.kind==="semantic"?typeof r.domainId=="string"&&typeof r.datasetName=="string":r.kind==="physical"?typeof r.connectionId=="string"&&typeof r.tableName=="string":r.kind==="sql"?typeof r.connectionId=="string":!1}function Z(e){if(!e||typeof e!="object")return!1;const r=e;return typeof r.name=="string"&&(r.source!==void 0||r.role!==void 0||r.dataType!==void 0||r.aggregate!==void 0)}function fr(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 Te(e){return[e.name,e.role,e.aggregate,e.source?fr(e.source):""].join(":")}function Ht(e){const r=e;return typeof(r==null?void 0:r.rowCount)=="number"?r.rowCount:Array.isArray(r==null?void 0:r.records)?r.records.length:void 0}function Pt(e){const r=e;return Array.isArray(r==null?void 0:r.columns)?r.columns.length:void 0}function Qe(e){const r=e;return r==null?void 0:r.executionResult}function Ue(e){const r=e;return typeof(r==null?void 0:r.requestId)=="string"?r.requestId:void 0}function pr(e){let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e.charCodeAt(t),r=Math.imul(r,16777619);return(r>>>0).toString(36)}function oe(){return new Date().toISOString()}function ke(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}const Vt=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"],Qt=["records","changes","drivers","largestNegativeChanges","largestPositiveChanges","largestNegativeDrivers","largestPositiveDrivers"];function mr(e){if(!e)return{};const r=Xt(e.executionResult),t=Ut(e,r),n=Jt(t);return{...e,...Object.keys(t).length?{resultSets:t}:{},...n?{columns:n.columns,records:n.records,rowCount:n.rowCount}:{}}}function Ut(e,r){const t=Gt(e.resultSets);for(const o of Vt){if(t[o]){t[o]=gr(t[o]);continue}const d=Zt(e[o]);if(!d.length)continue;const u=r.length?r:en(d);t[o]={records:De(d,u),columns:u,rowCount:d.length}}const n=Yt(e.executionResult);return n&&n.records.length>0&&!t.records&&(t.records=n),t}function Gt(e){return Object.fromEntries(Object.entries(e||{}).map(([r,t])=>[r,gr(t)]))}function gr(e){var r;return{...e,records:De(e.records||[],e.columns||[]),rowCount:e.rowCount??((r=e.records)==null?void 0:r.length)??0}}function Jt(e){var r;for(const t of Qt)if((r=e[t])!=null&&r.records.length)return e[t];return Object.values(e).find(t=>t.records.length)||Object.values(e)[0]}function Yt(e){const r=e==null?void 0:e.result;if(!(!r||r.kind!=="records"&&r.kind!=="sql"))return{records:De(r.records,r.columns),columns:r.columns,rowCount:r.rowCount??r.records.length}}function Xt(e){const r=e==null?void 0:e.result;return!r||r.kind!=="records"&&r.kind!=="sql"?[]:r.columns}function Zt(e){return Array.isArray(e)?e.filter(r=>!!(r&&typeof r=="object"&&!Array.isArray(r))):[]}function De(e,r){return r.length?e.map(t=>{const n={};return r.forEach((o,d)=>{const u=rn(t,{name:o.key,label:o.label,fallbackNames:[o.name,Object.keys(t)[d]]});u!==void 0&&(n[o.key]=u)}),Object.keys(n).length?n:t}):e}function en(e){return Array.from(new Set(e.flatMap(t=>Object.keys(t)))).map(t=>({key:t,name:t,label:t}))}function rn(e,r){const t=[r.name,r.label,...r.fallbackNames||[]].filter(n=>!!n);for(const n of t)if(Object.prototype.hasOwnProperty.call(e,n))return e[n]}function hr(){return{executeAnalysis:(e,r,t)=>H(e,r,t??{}).then(mr),executeMetric:(e,r)=>H(e,r),executeRecords:(e,r)=>H(e,r),executeInputOptions:(e,r)=>H(e,r),executeSql:(e,r)=>H(e,r),executeMatrix:(e,r)=>H(e,r)}}async function H(e,r,t){if(!r.token)throw new Error("SemaphorDataAppProvider needs a token to execute queries.");const n=un(r),o=on(e,n);let d;try{d=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r.token}`},body:JSON.stringify({intent:e,activeInputs:r.activeInputs,...t?{analysisOptions:t}:{},resultShape:e.kind,...nn(r)?{debug:{responseDetail:"debug"}}:{}})})}catch(f){throw new Error(`${o}: ${f instanceof Error?f.message:String(f)}`)}const u=await dn(d);if(!d.ok||u.error)throw tn(`${o}: ${u.error||`Semaphor Data App execution failed with status ${d.status}.`}`,u);return u}function tn(e,r){const t=new Error(e);return r.requestId&&(t.requestId=r.requestId),r.details!==void 0&&(t.details=r.details),r.executionResult!==void 0&&(t.executionResult=r.executionResult),t}function nn(e){const r=e.debug;return r?r===!0?!0:r.enabled!==!1&&r.requestServerDebug!==!1:!1}function on(e,r){return[`Semaphor ${e.kind} query`,e.id?`id=${e.id}`:void 0,e.label?`label=${e.label}`:void 0,sn(e),`endpoint=${an(r)}`].filter(t=>!!t).join(" ")}function sn(e){const r="source"in e?e.source:void 0;if(!(!r||typeof r!="object")){if(r.kind==="semantic")return`source=${[r.domainId,r.datasetId||r.datasetName].filter(Boolean).join("/")}`;if(r.kind==="physical")return`source=${[r.connectionId,r.databaseName,r.schemaName,r.tableName].filter(Boolean).join("/")}`;if(r.kind==="sql")return r.connectionId?`source=${r.connectionId}`:void 0}}function an(e){if(!e)return"/api/v1/data-app/execute";try{return new URL(e,"http://localhost").pathname}catch{return e}}async function dn(e){const r=await e.text().catch(()=>"");if(!r.trim())return e.ok?{error:"Semaphor Data App execution returned an empty response."}:{};try{return JSON.parse(r)}catch{return e.ok?{error:"Semaphor Data App execution returned invalid JSON.",details:r}:{error:ln(e,r),details:r}}}function ln(e,r){const t=e.statusText?` ${e.statusText}`:"",n=r.replace(/\s+/g," ").trim();return n?`Semaphor Data App execution failed with status ${e.status}${t}: ${n.slice(0,240)}`:`Semaphor Data App execution failed with status ${e.status}${t}.`}function un(e){const r=cn(e).replace(/\/+$/,"");return r?r.endsWith("/api")?`${r}/v1/data-app/execute`:`${r}/api/v1/data-app/execute`:"/api/v1/data-app/execute"}function cn(e){if(e.apiBaseUrl)return e.apiBaseUrl;if(!e.token)return"";try{return Ye.jwtDecode(e.token).apiServiceUrl||""}catch{return""}}const yr=l.createContext({});function fn(){if(!(typeof window>"u"))return window.__SEMAPHOR_DATA_APP_RUNTIME__}function pn(){return l.useContext(yr)}const ve={value:null},be={},mn={records:[]},xe={options:[]},gn={records:[]},Se={};function hn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs),t=x.toSemaphorAnalysisQueryOptions(e);try{const n=x.toSemaphorAnalysisIntent(e),o=V(n);return o?{error:o,activeInputs:r,analysisOptions:t,queryKey:q(void 0,r,o,t),idleData:be}:{intent:n,error:null,activeInputs:r,analysisOptions:t,queryKey:q(n,r,void 0,t),idleData:be}}catch(n){const o=M(n);return{error:o,activeInputs:r,analysisOptions:t,queryKey:q(void 0,r,o,t),idleData:be}}}function yn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs);try{const t=x.toSemaphorMetricIntent(e),n=V(t);return n?{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:ve}:{intent:t,error:null,activeInputs:r,queryKey:q(t,r),idleData:ve}}catch(t){const n=M(t);return{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:ve}}}function vn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs),t=mn;try{const n=x.toSemaphorRecordsIntent(e),o=V(n);return o?{error:o,activeInputs:r,queryKey:q(void 0,r,o),idleData:t}:{intent:n,error:null,activeInputs:r,queryKey:q(n,r),idleData:t}}catch(n){const o=M(n);return{error:o,activeInputs:r,queryKey:q(void 0,r,o),idleData:t}}}function bn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs);try{const t=x.toSemaphorInputOptionsIntent(e),n=V(t);return n?{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:xe}:{intent:t,error:null,activeInputs:r,queryKey:q(t,r),idleData:xe}}catch(t){const n=M(t);return{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:xe}}}function xn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs),t=gn;try{const n=x.toSemaphorSqlIntent(e),o=V(n);return o?{error:o,activeInputs:r,queryKey:q(void 0,r,o),idleData:t}:{intent:n,error:null,activeInputs:r,queryKey:q(n,r),idleData:t}}catch(n){const o=M(n);return{error:o,activeInputs:r,queryKey:q(void 0,r,o),idleData:t}}}function Sn(e){const r=x.toSemaphorActiveInputSnapshots(e.inputs);try{const t=x.toSemaphorMatrixIntent(e),n=V(t);return n?{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:Se}:{intent:t,error:null,activeInputs:r,queryKey:q(t,r),idleData:Se}}catch(t){const n=M(t);return{error:n,activeInputs:r,queryKey:q(void 0,r,n),idleData:Se}}}function M(e){return e instanceof Error?e:new Error(String(e))}function V(e){const r=Sr.validateSemaphorAnalyticsIntent(e);if(r.ok)return null;const t=r.errors.map(n=>n.path?`${n.code} at ${n.path}: ${n.message}`:`${n.code}: ${n.message}`).join("; ");return new Error(`Invalid Semaphor analytics intent. ${t}`)}function q(e,r,t,n){return JSON.stringify({intent:e,activeInputs:r,analysisOptions:n,error:t==null?void 0:t.message})}function In(e){const[r,t]=l.useState(e.defaultValue),n=Object.prototype.hasOwnProperty.call(e,"value"),o=n?e.value:r,d=l.useMemo(()=>x.normalizeSemaphorInputOptions(e.options),[e.options]),u=l.useCallback(c=>{var g;const p=c;(g=e.onValueChange)==null||g.call(e,p),n||t(p)},[n,e]),f=l.useCallback(()=>u(void 0),[u]);return l.useMemo(()=>{const c=x.toSemaphorInputSpec(e);return{id:e.id,kind:e.kind,label:e.label,field:c.field,operator:c.operator,relationshipHint:c.relationshipHint,controlRole:e.kind==="control"?e.role:void 0,value:o,options:d,isActive:x.hasSemaphorInputValue(o),setValue:u,clear:f,toAnalyticsInput:()=>({inputId:c.inputId,field:c.field,kind:e.kind,label:e.label,value:o,isActive:x.hasSemaphorInputValue(o),operator:c.operator,relationshipHint:c.relationshipHint,controlRole:e.kind==="control"?e.role:void 0})}},[f,d,u,e,o])}function wn(e){const[r,t]=l.useState(()=>En(e));return l.useEffect(()=>{t(n=>{let o=n;for(const d of e)!Object.prototype.hasOwnProperty.call(o,d.id)&&d.defaultValue!==void 0&&(o={...o,[d.id]:d.defaultValue});return o})},[e]),l.useMemo(()=>e.map(n=>{const o=Object.prototype.hasOwnProperty.call(n,"value"),d=o?n.value:r[n.id],u=x.normalizeSemaphorInputOptions(n.options),f=g=>{var h;(h=n.onValueChange)==null||h.call(n,g),o||t(y=>({...y,[n.id]:g}))},c=()=>f(void 0),p=x.toSemaphorInputSpec(n);return{id:n.id,kind:n.kind,label:n.label,field:p.field,operator:p.operator,relationshipHint:p.relationshipHint,controlRole:n.kind==="control"?n.role:void 0,value:d,options:u,isActive:x.hasSemaphorInputValue(d),setValue:f,clear:c,toAnalyticsInput:()=>({inputId:p.inputId,field:p.field,kind:n.kind,label:n.label,value:d,isActive:x.hasSemaphorInputValue(d),operator:p.operator,relationshipHint:p.relationshipHint,controlRole:n.kind==="control"?n.role:void 0})}}),[e,r])}function qn(e,r){const t=(r==null?void 0:r.status)==="success"?r.options:void 0,n=l.useMemo(()=>jn(t),[t]);l.useEffect(()=>{vr(e.value,t)||e.clear()},[e,n,r==null?void 0:r.status,t])}function vr(e,r){if(!x.hasSemaphorInputValue(e)||r===void 0)return!0;const t=new Set(r.map(o=>Ge(o.value)));return(Array.isArray(e)?e:[e]).every(o=>t.has(Ge(o)))}function jn(e){return JSON.stringify((e||[]).map(r=>r.value))}function Ge(e){return`${typeof e}:${String(e)}`}function Rn(e,r={}){const t=l.useMemo(()=>r.inputs?{...e,inputs:r.inputs}:e,[r.inputs,e]),n=l.useMemo(()=>{switch(t.queryKind){case"metric":return{queryKind:t.queryKind,request:yn(t)};case"analysis":return{queryKind:t.queryKind,request:hn(t)};case"records":return{queryKind:t.queryKind,request:vn(t)};case"inputOptions":return{queryKind:t.queryKind,request:bn(t)};case"sql":return{queryKind:t.queryKind,request:xn(t)};case"matrix":return{queryKind:t.queryKind,request:Sn(t)};default:return Ie(t)}},[t]),o=Dr({spec:t,queryKind:n.queryKind,queryKey:n.request.queryKey,intent:n.request.intent,activeInputs:n.request.activeInputs,debug:r.debug}),d=l.useRef(null),u=l.useMemo(()=>({start:o.start,success:o.success,failure:o.failure,ignored:o.ignored}),[o.failure,o.ignored,o.start,o.success]),f=l.useCallback(a=>{var T,k,D,v,S,R,w,A,N;const I=n.request;if(I.intent)switch(n.queryKind){case"metric":return(T=a.executor)==null?void 0:T.executeMetric(I.intent,a);case"analysis":return(D=(k=a.executor)==null?void 0:k.executeAnalysis)==null?void 0:D.call(k,I.intent,a,I.analysisOptions);case"records":return(v=a.executor)==null?void 0:v.executeRecords(I.intent,a);case"inputOptions":return(S=a.executor)==null?void 0:S.executeInputOptions(I.intent,a);case"sql":return(w=(R=a.executor)==null?void 0:R.executeSql)==null?void 0:w.call(R,I.intent,a);case"matrix":return(N=(A=a.executor)==null?void 0:A.executeMatrix)==null?void 0:N.call(A,I.intent,a);default:return Ie(n)}},[n]),c=An(n.request.queryKey,f,n.request.idleData,n.request.activeInputs,u),p=o.queryId,g=o.validationFailure;l.useEffect(()=>{const a=n.request.error;if(!a){d.current=null;return}const I=`${p}:${a.message}`;d.current!==I&&(d.current=I,g(a))},[n.request.error,n.request.queryKey,p,g]);const h=n.request.error?n.request.idleData:c.data,y=n.request.error?"error":c.status,m=!n.request.error&&c.status==="loading",b=n.request.error||c.error,C=o.trace;switch(n.queryKind){case"metric":{const a=h;return{id:t.id,intent:n.request.intent,value:(a==null?void 0:a.value)??null,measures:a==null?void 0:a.measures,comparisonValue:a==null?void 0:a.comparisonValue,delta:a==null?void 0:a.delta,deltaPercent:a==null?void 0:a.deltaPercent,records:a==null?void 0:a.records,executionResult:a==null?void 0:a.executionResult,status:y,isLoading:m,error:b,trace:C}}case"analysis":{const a=mr(h);return{id:t.id,intent:n.request.intent,...a||{},status:y,isLoading:m,error:b,trace:C}}case"records":{const a=h;return{id:t.id,intent:n.request.intent,records:(a==null?void 0:a.records)||[],columns:a==null?void 0:a.columns,rowCount:a==null?void 0:a.rowCount,pagination:a==null?void 0:a.pagination,executionResult:a==null?void 0:a.executionResult,status:y,isLoading:m,error:b,trace:C}}case"inputOptions":{const a=h;return{id:t.id,intent:n.request.intent,options:(a==null?void 0:a.options)||[],executionResult:a==null?void 0:a.executionResult,status:y,isLoading:m,error:b,trace:C}}case"sql":{const a=h;return{id:t.id,intent:n.request.intent,records:(a==null?void 0:a.records)||[],columns:a==null?void 0:a.columns,rowCount:a==null?void 0:a.rowCount,pagination:a==null?void 0:a.pagination,output:a==null?void 0:a.output,rowLimitExceeded:a==null?void 0:a.rowLimitExceeded,executionResult:a==null?void 0:a.executionResult,status:y,isLoading:m,error:b,trace:C}}case"matrix":{const a=h;return{id:t.id,intent:n.request.intent,matrixResult:a==null?void 0:a.matrixResult,grid:a==null?void 0:a.grid,expansion:a==null?void 0:a.expansion,executionResult:a==null?void 0:a.executionResult,status:y,isLoading:m,error:b,trace:C}}default:return Ie(n)}}function An(e,r,t,n,o){const d=pn(),u=l.useRef(r),f=l.useRef(n),[c,p]=l.useState({status:"idle",data:t,error:null});return u.current=r,f.current=n,l.useEffect(()=>{let g;try{g=u.current({...d,activeInputs:f.current})}catch(m){o==null||o.failure(m,0),p({status:"error",data:t,error:M(m)});return}if(!g){p({status:"idle",data:t,error:null});return}let h=!1;const y=br();return o==null||o.start(),p(m=>({status:"loading",data:m.data,error:null})),g.then(m=>{h?o==null||o.ignored("superseded"):(o==null||o.success(m,Je(y)),p({status:"success",data:m,error:null}))}).catch(m=>{h?o==null||o.ignored("superseded"):(o==null||o.failure(m,Je(y)),p({status:"error",data:t,error:M(m)}))}),()=>{h=!0}},[t,e,d,o]),c}function br(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function Je(e){return Math.max(0,Math.round(br()-e))}function En(e){return Object.fromEntries(e.filter(r=>r.defaultValue!==void 0).map(r=>[r.id,r.defaultValue]))}function Ie(e){throw new Error(`Unsupported Semaphor query kind: ${JSON.stringify(e)}`)}function Cn(e){return!e||typeof e=="boolean"||e.enabled===!1?null:e.autoRenderDevtools===!0?{}:e.autoRenderDevtools?e.autoRenderDevtools:null}function Tn({token:e,apiBaseUrl:r,executor:t,debug:n,children:o}){var m;const d=fn(),u=((m=d==null?void 0:d.authToken)==null?void 0:m.accessToken)||e,f=(d==null?void 0:d.dataApiBaseUrl)||(d==null?void 0:d.apiBaseUrl)||r,c=(d==null?void 0:d.debug)??n,p=Cn(c),g=l.useMemo(()=>hr(),[]),h=t||g,y=l.useMemo(()=>({token:u,apiBaseUrl:f,executor:h,debug:c}),[f,c,h,u]);return i.jsx(Ar,{debug:c,children:i.jsxs(yr.Provider,{value:y,children:[o,p?i.jsx(er,{...p}):null]})})}exports.SemaphorDataAppProvider=Tn;exports.SemaphorDevtools=er;exports.SemaphorDevtoolsInspectButton=kr;exports.SemaphorViewBoundary=Tr;exports.createSemaphorQueryExecutor=hr;exports.defineSemaphorDataApp=Ir;exports.defineSemaphorInput=wr;exports.isSemaphorInputValueValidForOptions=vr;exports.semaphor=qr;exports.useClearInvalidSemaphorInputValue=qn;exports.useSemaphorDevtools=Ee;exports.useSemaphorInput=In;exports.useSemaphorInputs=wn;exports.useSemaphorQuery=Rn;
|