@duckcodeailabs/dql-cli 1.3.6 → 1.4.0

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.
@@ -1,847 +0,0 @@
1
- import{r as Ii,a as hf,g as Ni}from"./react-CRB3T2We.js";import{S as Oi,g as If,E as ut,s as AI,a as Ge,b as Nf,c as hI,P as II,d as NI,e as OI,F as mI,f as gI,h as Of,V as CI,D as mn,R as xI,i as LI,C as en,j as mf,k as Ze,r as yI,H as _I,t as me,l as DI,m as MI,u as bI,n as PI,o as vI,p as UI,q as wI,v as BI,w as FI,x as GI,y as HI,z as ns,A as kI,B as jI,G as YI,I as WI,J as VI,K as $I,L as XI,M as KI,N as zI,O as JI}from"./codemirror-DJYUkPr1.js";function qI(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in e)){const s=Object.getOwnPropertyDescriptor(r,o);s&&Object.defineProperty(e,o,s.get?s:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();var Ia={exports:{}},Br={};/**
2
- * @license React
3
- * react-jsx-runtime.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var vd;function QI(){if(vd)return Br;vd=1;var e=Ii(),t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function a(l,c,d){var E,u={},T=null,f=null;d!==void 0&&(T=""+d),c.key!==void 0&&(T=""+c.key),c.ref!==void 0&&(f=c.ref);for(E in c)r.call(c,E)&&!s.hasOwnProperty(E)&&(u[E]=c[E]);if(l&&l.defaultProps)for(E in c=l.defaultProps,c)u[E]===void 0&&(u[E]=c[E]);return{$$typeof:t,type:l,key:T,ref:f,props:u,_owner:o.current}}return Br.Fragment=n,Br.jsx=a,Br.jsxs=a,Br}var Ud;function ZI(){return Ud||(Ud=1,Ia.exports=QI()),Ia.exports}var i=ZI(),rs={},wd;function eN(){if(wd)return rs;wd=1;var e=hf();return rs.createRoot=e.createRoot,rs.hydrateRoot=e.hydrateRoot,rs}var tN=eN(),S=Ii();const ye=Ni(S),gf=qI({__proto__:null,default:ye},[S]),Ie={gray0:"#ffffff",gray50:"#f6f8fa",gray100:"#eaeef2",gray200:"#d0d7de",gray300:"#afb8c1",gray400:"#8c959f",gray600:"#57606a",gray900:"#24292f",gray950:"#1c2128",gray975:"#161b22",gray1000:"#0d1117",blue400:"#58a6ff",blue500:"#388bfd",blue600:"#0969da",blue700:"#0550ae",green500:"#56d364",green600:"#1f883d",red500:"#f85149",red600:"#cf222e",yellow500:"#e3b341",yellow600:"#9a6700"},Ne={1:"4px",2:"8px",3:"12px",4:"16px"},un={sm:"4px",md:"6px",lg:"8px"},He={xs:"11px",sm:"12px",md:"14px"},Ic={medium:"500",semibold:"600"},Qr={overlay:1e3,modal:1100,popover:1200,tooltip:1300},Na={surfaceBase:Ie.gray1000,surfaceRaised:Ie.gray975,surfaceElevated:Ie.gray950,surfaceOverlay:"rgba(0,0,0,0.7)",surfaceHover:Ie.gray900,surfaceActive:"#1f2d3d",surfaceSunken:Ie.gray1000,borderSubtle:"#21262d",borderDefault:"#30363d",borderStrong:"#484f58",borderFocus:Ie.blue500,textPrimary:"#e6edf3",textSecondary:"#8b949e",textMuted:"#484f58",textDisabled:"#32383f",textInverse:Ie.gray1000,accent:Ie.blue500,accentHover:Ie.blue400,accentMuted:"rgba(56,139,253,0.15)",accentContrast:"#ffffff",success:Ie.green500,warning:Ie.yellow500,danger:Ie.red500,info:Ie.blue400,shadowSm:"0 1px 2px rgba(0,0,0,0.4)",shadowMd:"0 4px 10px rgba(0,0,0,0.45)",shadowLg:"0 12px 28px rgba(0,0,0,0.55)"},os={surfaceBase:Ie.gray0,surfaceRaised:Ie.gray50,surfaceElevated:Ie.gray0,surfaceOverlay:"rgba(0,0,0,0.4)",surfaceHover:Ie.gray100,surfaceActive:"#dbeafe",surfaceSunken:Ie.gray50,borderSubtle:Ie.gray100,borderDefault:Ie.gray200,borderStrong:Ie.gray300,borderFocus:Ie.blue600,textPrimary:"#1f2328",textSecondary:Ie.gray600,textMuted:Ie.gray400,textDisabled:Ie.gray300,textInverse:Ie.gray0,accent:Ie.blue600,accentHover:Ie.blue700,accentMuted:"rgba(9,105,218,0.12)",accentContrast:"#ffffff",success:Ie.green600,warning:Ie.yellow600,danger:Ie.red600,info:Ie.blue600,shadowSm:"0 1px 2px rgba(31,35,40,0.08)",shadowMd:"0 4px 10px rgba(31,35,40,0.1)",shadowLg:"0 12px 28px rgba(31,35,40,0.15)"},nN={obsidian:Na,paper:os,white:os,dark:Na,light:os,midnight:Na,arctic:os};function Cf(e){return`--dql-${e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`}function Bd(e){const t={};for(const[n,r]of Object.entries(e))t[Cf(n)]=r;return t}function Re(e){return`var(${Cf(e)})`}const rN=S.createContext(null);function oN({theme:e,defaultTheme:t="dark",onThemeChange:n,applyGlobal:r=!1,children:o}){const[s,a]=S.useState(t),l=e??s,c=nN[l],d=S.useCallback(T=>{e===void 0&&a(T),n==null||n(T)},[e,n]);S.useEffect(()=>{if(!r)return;const T=Bd(c),f=document.documentElement;for(const[h,A]of Object.entries(T))f.style.setProperty(h,A);return f.setAttribute("data-theme",l),()=>{for(const h of Object.keys(T))f.style.removeProperty(h);f.removeAttribute("data-theme")}},[r,l,c]);const E=S.useMemo(()=>({theme:l,tokens:c,setTheme:d}),[l,c,d]),u=r?void 0:Bd(c);return i.jsx(rN.Provider,{value:E,children:i.jsx("div",{"data-theme":l,style:u,children:o})})}function Ee(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function Fd(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function mi(...e){return t=>{let n=!1;const r=e.map(o=>{const s=Fd(o,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let o=0;o<r.length;o++){const s=r[o];typeof s=="function"?s():Fd(e[o],null)}}}}function _e(...e){return S.useCallback(mi(...e),e)}function sN(e,t){const n=S.createContext(t),r=s=>{const{children:a,...l}=s,c=S.useMemo(()=>l,Object.values(l));return i.jsx(n.Provider,{value:c,children:a})};r.displayName=e+"Provider";function o(s){const a=S.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${s}\` must be used within \`${e}\``)}return[r,o]}function Tn(e,t=[]){let n=[];function r(s,a){const l=S.createContext(a),c=n.length;n=[...n,a];const d=u=>{var p;const{scope:T,children:f,...h}=u,A=((p=T==null?void 0:T[e])==null?void 0:p[c])||l,R=S.useMemo(()=>h,Object.values(h));return i.jsx(A.Provider,{value:R,children:f})};d.displayName=s+"Provider";function E(u,T){var A;const f=((A=T==null?void 0:T[e])==null?void 0:A[c])||l,h=S.useContext(f);if(h)return h;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${s}\``)}return[d,E]}const o=()=>{const s=n.map(a=>S.createContext(a));return function(l){const c=(l==null?void 0:l[e])||s;return S.useMemo(()=>({[`__scope${e}`]:{...l,[e]:c}}),[l,c])}};return o.scopeName=e,[r,iN(o,...t)]}function iN(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const u=c(s)[`__scope${d}`];return{...l,...u}},{});return S.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var Nc=hf();const aN=Ni(Nc);function cr(e){const t=lN(e),n=S.forwardRef((r,o)=>{const{children:s,...a}=r,l=S.Children.toArray(s),c=l.find(dN);if(c){const d=c.props.children,E=l.map(u=>u===c?S.Children.count(d)>1?S.Children.only(null):S.isValidElement(d)?d.props.children:null:u);return i.jsx(t,{...a,ref:o,children:S.isValidElement(d)?S.cloneElement(d,void 0,E):null})}return i.jsx(t,{...a,ref:o,children:s})});return n.displayName=`${e}.Slot`,n}function lN(e){const t=S.forwardRef((n,r)=>{const{children:o,...s}=n;if(S.isValidElement(o)){const a=uN(o),l=EN(s,o.props);return o.type!==S.Fragment&&(l.ref=r?mi(r,a):a),S.cloneElement(o,l)}return S.Children.count(o)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var xf=Symbol("radix.slottable");function cN(e){const t=({children:n})=>i.jsx(i.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=xf,t}function dN(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===xf}function EN(e,t){const n={...t};for(const r in t){const o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?n[r]=(...l)=>{const c=s(...l);return o(...l),c}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}function uN(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var TN=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ce=TN.reduce((e,t)=>{const n=cr(`Primitive.${t}`),r=S.forwardRef((o,s)=>{const{asChild:a,...l}=o,c=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),i.jsx(c,{...l,ref:s})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function Lf(e,t){e&&Nc.flushSync(()=>e.dispatchEvent(t))}function on(e){const t=S.useRef(e);return S.useEffect(()=>{t.current=e}),S.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function fN(e,t=globalThis==null?void 0:globalThis.document){const n=on(e);S.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var SN="DismissableLayer",Bl="dismissableLayer.update",RN="dismissableLayer.pointerDownOutside",pN="dismissableLayer.focusOutside",Gd,yf=S.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Io=S.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:s,onInteractOutside:a,onDismiss:l,...c}=e,d=S.useContext(yf),[E,u]=S.useState(null),T=(E==null?void 0:E.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,f]=S.useState({}),h=_e(t,g=>u(g)),A=Array.from(d.layers),[R]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),p=A.indexOf(R),N=E?A.indexOf(E):-1,I=d.layersWithOutsidePointerEventsDisabled.size>0,O=N>=p,C=IN(g=>{const y=g.target,x=[...d.branches].some(w=>w.contains(y));!O||x||(o==null||o(g),a==null||a(g),g.defaultPrevented||l==null||l())},T),m=NN(g=>{const y=g.target;[...d.branches].some(w=>w.contains(y))||(s==null||s(g),a==null||a(g),g.defaultPrevented||l==null||l())},T);return fN(g=>{N===d.layers.size-1&&(r==null||r(g),!g.defaultPrevented&&l&&(g.preventDefault(),l()))},T),S.useEffect(()=>{if(E)return n&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(Gd=T.body.style.pointerEvents,T.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(E)),d.layers.add(E),Hd(),()=>{n&&d.layersWithOutsidePointerEventsDisabled.size===1&&(T.body.style.pointerEvents=Gd)}},[E,T,n,d]),S.useEffect(()=>()=>{E&&(d.layers.delete(E),d.layersWithOutsidePointerEventsDisabled.delete(E),Hd())},[E,d]),S.useEffect(()=>{const g=()=>f({});return document.addEventListener(Bl,g),()=>document.removeEventListener(Bl,g)},[]),i.jsx(Ce.div,{...c,ref:h,style:{pointerEvents:I?O?"auto":"none":void 0,...e.style},onFocusCapture:Ee(e.onFocusCapture,m.onFocusCapture),onBlurCapture:Ee(e.onBlurCapture,m.onBlurCapture),onPointerDownCapture:Ee(e.onPointerDownCapture,C.onPointerDownCapture)})});Io.displayName=SN;var AN="DismissableLayerBranch",hN=S.forwardRef((e,t)=>{const n=S.useContext(yf),r=S.useRef(null),o=_e(t,r);return S.useEffect(()=>{const s=r.current;if(s)return n.branches.add(s),()=>{n.branches.delete(s)}},[n.branches]),i.jsx(Ce.div,{...e,ref:o})});hN.displayName=AN;function IN(e,t=globalThis==null?void 0:globalThis.document){const n=on(e),r=S.useRef(!1),o=S.useRef(()=>{});return S.useEffect(()=>{const s=l=>{if(l.target&&!r.current){let c=function(){_f(RN,n,d,{discrete:!0})};const d={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=c,t.addEventListener("click",o.current,{once:!0})):c()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",s)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",s),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function NN(e,t=globalThis==null?void 0:globalThis.document){const n=on(e),r=S.useRef(!1);return S.useEffect(()=>{const o=s=>{s.target&&!r.current&&_f(pN,n,{originalEvent:s},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Hd(){const e=new CustomEvent(Bl);document.dispatchEvent(e)}function _f(e,t,n,{discrete:r}){const o=n.originalEvent.target,s=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?Lf(o,s):o.dispatchEvent(s)}var sn=globalThis!=null&&globalThis.document?S.useLayoutEffect:()=>{},ON=gf[" useId ".trim().toString()]||(()=>{}),mN=0;function Xr(e){const[t,n]=S.useState(ON());return sn(()=>{n(r=>r??String(mN++))},[e]),t?`radix-${t}`:""}const gN=["top","right","bottom","left"],an=Math.min,ze=Math.max,Ws=Math.round,ss=Math.floor,mt=e=>({x:e,y:e}),CN={left:"right",right:"left",bottom:"top",top:"bottom"};function Fl(e,t,n){return ze(e,an(t,n))}function wt(e,t){return typeof e=="function"?e(t):e}function Bt(e){return e.split("-")[0]}function mr(e){return e.split("-")[1]}function Oc(e){return e==="x"?"y":"x"}function mc(e){return e==="y"?"height":"width"}function Nt(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function gc(e){return Oc(Nt(e))}function xN(e,t,n){n===void 0&&(n=!1);const r=mr(e),o=gc(e),s=mc(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=Vs(a)),[a,Vs(a)]}function LN(e){const t=Vs(e);return[Gl(e),t,Gl(t)]}function Gl(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const kd=["left","right"],jd=["right","left"],yN=["top","bottom"],_N=["bottom","top"];function DN(e,t,n){switch(e){case"top":case"bottom":return n?t?jd:kd:t?kd:jd;case"left":case"right":return t?yN:_N;default:return[]}}function MN(e,t,n,r){const o=mr(e);let s=DN(Bt(e),n==="start",r);return o&&(s=s.map(a=>a+"-"+o),t&&(s=s.concat(s.map(Gl)))),s}function Vs(e){const t=Bt(e);return CN[t]+e.slice(t.length)}function bN(e){return{top:0,right:0,bottom:0,left:0,...e}}function Df(e){return typeof e!="number"?bN(e):{top:e,right:e,bottom:e,left:e}}function $s(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Yd(e,t,n){let{reference:r,floating:o}=e;const s=Nt(t),a=gc(t),l=mc(a),c=Bt(t),d=s==="y",E=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,T=r[l]/2-o[l]/2;let f;switch(c){case"top":f={x:E,y:r.y-o.height};break;case"bottom":f={x:E,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:u};break;case"left":f={x:r.x-o.width,y:u};break;default:f={x:r.x,y:r.y}}switch(mr(t)){case"start":f[a]-=T*(n&&d?-1:1);break;case"end":f[a]+=T*(n&&d?-1:1);break}return f}async function PN(e,t){var n;t===void 0&&(t={});const{x:r,y:o,platform:s,rects:a,elements:l,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:E="viewport",elementContext:u="floating",altBoundary:T=!1,padding:f=0}=wt(t,e),h=Df(f),R=l[T?u==="floating"?"reference":"floating":u],p=$s(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(R)))==null||n?R:R.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(l.floating)),boundary:d,rootBoundary:E,strategy:c})),N=u==="floating"?{x:r,y:o,width:a.floating.width,height:a.floating.height}:a.reference,I=await(s.getOffsetParent==null?void 0:s.getOffsetParent(l.floating)),O=await(s.isElement==null?void 0:s.isElement(I))?await(s.getScale==null?void 0:s.getScale(I))||{x:1,y:1}:{x:1,y:1},C=$s(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:N,offsetParent:I,strategy:c}):N);return{top:(p.top-C.top+h.top)/O.y,bottom:(C.bottom-p.bottom+h.bottom)/O.y,left:(p.left-C.left+h.left)/O.x,right:(C.right-p.right+h.right)/O.x}}const vN=50,UN=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:a}=n,l=a.detectOverflow?a:{...a,detectOverflow:PN},c=await(a.isRTL==null?void 0:a.isRTL(t));let d=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:E,y:u}=Yd(d,r,c),T=r,f=0;const h={};for(let A=0;A<s.length;A++){const R=s[A];if(!R)continue;const{name:p,fn:N}=R,{x:I,y:O,data:C,reset:m}=await N({x:E,y:u,initialPlacement:r,placement:T,strategy:o,middlewareData:h,rects:d,platform:l,elements:{reference:e,floating:t}});E=I??E,u=O??u,h[p]={...h[p],...C},m&&f<vN&&(f++,typeof m=="object"&&(m.placement&&(T=m.placement),m.rects&&(d=m.rects===!0?await a.getElementRects({reference:e,floating:t,strategy:o}):m.rects),{x:E,y:u}=Yd(d,T,c)),A=-1)}return{x:E,y:u,placement:T,strategy:o,middlewareData:h}},wN=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:a,elements:l,middlewareData:c}=t,{element:d,padding:E=0}=wt(e,t)||{};if(d==null)return{};const u=Df(E),T={x:n,y:r},f=gc(o),h=mc(f),A=await a.getDimensions(d),R=f==="y",p=R?"top":"left",N=R?"bottom":"right",I=R?"clientHeight":"clientWidth",O=s.reference[h]+s.reference[f]-T[f]-s.floating[h],C=T[f]-s.reference[f],m=await(a.getOffsetParent==null?void 0:a.getOffsetParent(d));let g=m?m[I]:0;(!g||!await(a.isElement==null?void 0:a.isElement(m)))&&(g=l.floating[I]||s.floating[h]);const y=O/2-C/2,x=g/2-A[h]/2-1,w=an(u[p],x),D=an(u[N],x),U=w,F=g-A[h]-D,_=g/2-A[h]/2+y,B=Fl(U,_,F),b=!c.arrow&&mr(o)!=null&&_!==B&&s.reference[h]/2-(_<U?w:D)-A[h]/2<0,P=b?_<U?_-U:_-F:0;return{[f]:T[f]+P,data:{[f]:B,centerOffset:_-B-P,...b&&{alignmentOffset:P}},reset:b}}}),BN=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:o,middlewareData:s,rects:a,initialPlacement:l,platform:c,elements:d}=t,{mainAxis:E=!0,crossAxis:u=!0,fallbackPlacements:T,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:A=!0,...R}=wt(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const p=Bt(o),N=Nt(l),I=Bt(l)===l,O=await(c.isRTL==null?void 0:c.isRTL(d.floating)),C=T||(I||!A?[Vs(l)]:LN(l)),m=h!=="none";!T&&m&&C.push(...MN(l,A,h,O));const g=[l,...C],y=await c.detectOverflow(t,R),x=[];let w=((r=s.flip)==null?void 0:r.overflows)||[];if(E&&x.push(y[p]),u){const _=xN(o,a,O);x.push(y[_[0]],y[_[1]])}if(w=[...w,{placement:o,overflows:x}],!x.every(_=>_<=0)){var D,U;const _=(((D=s.flip)==null?void 0:D.index)||0)+1,B=g[_];if(B&&(!(u==="alignment"?N!==Nt(B):!1)||w.every(M=>Nt(M.placement)===N?M.overflows[0]>0:!0)))return{data:{index:_,overflows:w},reset:{placement:B}};let b=(U=w.filter(P=>P.overflows[0]<=0).sort((P,M)=>P.overflows[1]-M.overflows[1])[0])==null?void 0:U.placement;if(!b)switch(f){case"bestFit":{var F;const P=(F=w.filter(M=>{if(m){const L=Nt(M.placement);return L===N||L==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(L=>L>0).reduce((L,v)=>L+v,0)]).sort((M,L)=>M[1]-L[1])[0])==null?void 0:F[0];P&&(b=P);break}case"initialPlacement":b=l;break}if(o!==b)return{reset:{placement:b}}}return{}}}};function Wd(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Vd(e){return gN.some(t=>e[t]>=0)}const FN=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:r}=t,{strategy:o="referenceHidden",...s}=wt(e,t);switch(o){case"referenceHidden":{const a=await r.detectOverflow(t,{...s,elementContext:"reference"}),l=Wd(a,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:Vd(l)}}}case"escaped":{const a=await r.detectOverflow(t,{...s,altBoundary:!0}),l=Wd(a,n.floating);return{data:{escapedOffsets:l,escaped:Vd(l)}}}default:return{}}}}},Mf=new Set(["left","top"]);async function GN(e,t){const{placement:n,platform:r,elements:o}=e,s=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=Bt(n),l=mr(n),c=Nt(n)==="y",d=Mf.has(a)?-1:1,E=s&&c?-1:1,u=wt(t,e);let{mainAxis:T,crossAxis:f,alignmentAxis:h}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return l&&typeof h=="number"&&(f=l==="end"?h*-1:h),c?{x:f*E,y:T*d}:{x:T*d,y:f*E}}const HN=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:s,placement:a,middlewareData:l}=t,c=await GN(t,e);return a===((n=l.offset)==null?void 0:n.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+c.x,y:s+c.y,data:{...c,placement:a}}}}},kN=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o,platform:s}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:c={fn:p=>{let{x:N,y:I}=p;return{x:N,y:I}}},...d}=wt(e,t),E={x:n,y:r},u=await s.detectOverflow(t,d),T=Nt(Bt(o)),f=Oc(T);let h=E[f],A=E[T];if(a){const p=f==="y"?"top":"left",N=f==="y"?"bottom":"right",I=h+u[p],O=h-u[N];h=Fl(I,h,O)}if(l){const p=T==="y"?"top":"left",N=T==="y"?"bottom":"right",I=A+u[p],O=A-u[N];A=Fl(I,A,O)}const R=c.fn({...t,[f]:h,[T]:A});return{...R,data:{x:R.x-n,y:R.y-r,enabled:{[f]:a,[T]:l}}}}}},jN=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:a}=t,{offset:l=0,mainAxis:c=!0,crossAxis:d=!0}=wt(e,t),E={x:n,y:r},u=Nt(o),T=Oc(u);let f=E[T],h=E[u];const A=wt(l,t),R=typeof A=="number"?{mainAxis:A,crossAxis:0}:{mainAxis:0,crossAxis:0,...A};if(c){const I=T==="y"?"height":"width",O=s.reference[T]-s.floating[I]+R.mainAxis,C=s.reference[T]+s.reference[I]-R.mainAxis;f<O?f=O:f>C&&(f=C)}if(d){var p,N;const I=T==="y"?"width":"height",O=Mf.has(Bt(o)),C=s.reference[u]-s.floating[I]+(O&&((p=a.offset)==null?void 0:p[u])||0)+(O?0:R.crossAxis),m=s.reference[u]+s.reference[I]+(O?0:((N=a.offset)==null?void 0:N[u])||0)-(O?R.crossAxis:0);h<C?h=C:h>m&&(h=m)}return{[T]:f,[u]:h}}}},YN=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:o,rects:s,platform:a,elements:l}=t,{apply:c=()=>{},...d}=wt(e,t),E=await a.detectOverflow(t,d),u=Bt(o),T=mr(o),f=Nt(o)==="y",{width:h,height:A}=s.floating;let R,p;u==="top"||u==="bottom"?(R=u,p=T===(await(a.isRTL==null?void 0:a.isRTL(l.floating))?"start":"end")?"left":"right"):(p=u,R=T==="end"?"top":"bottom");const N=A-E.top-E.bottom,I=h-E.left-E.right,O=an(A-E[R],N),C=an(h-E[p],I),m=!t.middlewareData.shift;let g=O,y=C;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(y=I),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(g=N),m&&!T){const w=ze(E.left,0),D=ze(E.right,0),U=ze(E.top,0),F=ze(E.bottom,0);f?y=h-2*(w!==0||D!==0?w+D:ze(E.left,E.right)):g=A-2*(U!==0||F!==0?U+F:ze(E.top,E.bottom))}await c({...t,availableWidth:y,availableHeight:g});const x=await a.getDimensions(l.floating);return h!==x.width||A!==x.height?{reset:{rects:!0}}:{}}}};function gi(){return typeof window<"u"}function gr(e){return bf(e)?(e.nodeName||"").toLowerCase():"#document"}function qe(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function xt(e){var t;return(t=(bf(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function bf(e){return gi()?e instanceof Node||e instanceof qe(e).Node:!1}function Tt(e){return gi()?e instanceof Element||e instanceof qe(e).Element:!1}function Ht(e){return gi()?e instanceof HTMLElement||e instanceof qe(e).HTMLElement:!1}function $d(e){return!gi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof qe(e).ShadowRoot}function No(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=ft(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&o!=="inline"&&o!=="contents"}function WN(e){return/^(table|td|th)$/.test(gr(e))}function Ci(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const VN=/transform|translate|scale|rotate|perspective|filter/,$N=/paint|layout|strict|content/,An=e=>!!e&&e!=="none";let Oa;function Cc(e){const t=Tt(e)?ft(e):e;return An(t.transform)||An(t.translate)||An(t.scale)||An(t.rotate)||An(t.perspective)||!xc()&&(An(t.backdropFilter)||An(t.filter))||VN.test(t.willChange||"")||$N.test(t.contain||"")}function XN(e){let t=ln(e);for(;Ht(t)&&!dr(t);){if(Cc(t))return t;if(Ci(t))return null;t=ln(t)}return null}function xc(){return Oa==null&&(Oa=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Oa}function dr(e){return/^(html|body|#document)$/.test(gr(e))}function ft(e){return qe(e).getComputedStyle(e)}function xi(e){return Tt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ln(e){if(gr(e)==="html")return e;const t=e.assignedSlot||e.parentNode||$d(e)&&e.host||xt(e);return $d(t)?t.host:t}function Pf(e){const t=ln(e);return dr(t)?e.ownerDocument?e.ownerDocument.body:e.body:Ht(t)&&No(t)?t:Pf(t)}function Zr(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=Pf(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),a=qe(o);if(s){const l=Hl(a);return t.concat(a,a.visualViewport||[],No(o)?o:[],l&&n?Zr(l):[])}else return t.concat(o,Zr(o,[],n))}function Hl(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function vf(e){const t=ft(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Ht(e),s=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=Ws(n)!==s||Ws(r)!==a;return l&&(n=s,r=a),{width:n,height:r,$:l}}function Lc(e){return Tt(e)?e:e.contextElement}function rr(e){const t=Lc(e);if(!Ht(t))return mt(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=vf(t);let a=(s?Ws(n.width):n.width)/r,l=(s?Ws(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const KN=mt(0);function Uf(e){const t=qe(e);return!xc()||!t.visualViewport?KN:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function zN(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==qe(e)?!1:t}function Ln(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=Lc(e);let a=mt(1);t&&(r?Tt(r)&&(a=rr(r)):a=rr(e));const l=zN(s,n,r)?Uf(s):mt(0);let c=(o.left+l.x)/a.x,d=(o.top+l.y)/a.y,E=o.width/a.x,u=o.height/a.y;if(s){const T=qe(s),f=r&&Tt(r)?qe(r):r;let h=T,A=Hl(h);for(;A&&r&&f!==h;){const R=rr(A),p=A.getBoundingClientRect(),N=ft(A),I=p.left+(A.clientLeft+parseFloat(N.paddingLeft))*R.x,O=p.top+(A.clientTop+parseFloat(N.paddingTop))*R.y;c*=R.x,d*=R.y,E*=R.x,u*=R.y,c+=I,d+=O,h=qe(A),A=Hl(h)}}return $s({width:E,height:u,x:c,y:d})}function Li(e,t){const n=xi(e).scrollLeft;return t?t.left+n:Ln(xt(e)).left+n}function wf(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Li(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function JN(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const s=o==="fixed",a=xt(r),l=t?Ci(t.floating):!1;if(r===a||l&&s)return n;let c={scrollLeft:0,scrollTop:0},d=mt(1);const E=mt(0),u=Ht(r);if((u||!u&&!s)&&((gr(r)!=="body"||No(a))&&(c=xi(r)),u)){const f=Ln(r);d=rr(r),E.x=f.x+r.clientLeft,E.y=f.y+r.clientTop}const T=a&&!u&&!s?wf(a,c):mt(0);return{width:n.width*d.x,height:n.height*d.y,x:n.x*d.x-c.scrollLeft*d.x+E.x+T.x,y:n.y*d.y-c.scrollTop*d.y+E.y+T.y}}function qN(e){return Array.from(e.getClientRects())}function QN(e){const t=xt(e),n=xi(e),r=e.ownerDocument.body,o=ze(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),s=ze(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+Li(e);const l=-n.scrollTop;return ft(r).direction==="rtl"&&(a+=ze(t.clientWidth,r.clientWidth)-o),{width:o,height:s,x:a,y:l}}const Xd=25;function ZN(e,t){const n=qe(e),r=xt(e),o=n.visualViewport;let s=r.clientWidth,a=r.clientHeight,l=0,c=0;if(o){s=o.width,a=o.height;const E=xc();(!E||E&&t==="fixed")&&(l=o.offsetLeft,c=o.offsetTop)}const d=Li(r);if(d<=0){const E=r.ownerDocument,u=E.body,T=getComputedStyle(u),f=E.compatMode==="CSS1Compat"&&parseFloat(T.marginLeft)+parseFloat(T.marginRight)||0,h=Math.abs(r.clientWidth-u.clientWidth-f);h<=Xd&&(s-=h)}else d<=Xd&&(s+=d);return{width:s,height:a,x:l,y:c}}function eO(e,t){const n=Ln(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,s=Ht(e)?rr(e):mt(1),a=e.clientWidth*s.x,l=e.clientHeight*s.y,c=o*s.x,d=r*s.y;return{width:a,height:l,x:c,y:d}}function Kd(e,t,n){let r;if(t==="viewport")r=ZN(e,n);else if(t==="document")r=QN(xt(e));else if(Tt(t))r=eO(t,n);else{const o=Uf(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return $s(r)}function Bf(e,t){const n=ln(e);return n===t||!Tt(n)||dr(n)?!1:ft(n).position==="fixed"||Bf(n,t)}function tO(e,t){const n=t.get(e);if(n)return n;let r=Zr(e,[],!1).filter(l=>Tt(l)&&gr(l)!=="body"),o=null;const s=ft(e).position==="fixed";let a=s?ln(e):e;for(;Tt(a)&&!dr(a);){const l=ft(a),c=Cc(a);!c&&l.position==="fixed"&&(o=null),(s?!c&&!o:!c&&l.position==="static"&&!!o&&(o.position==="absolute"||o.position==="fixed")||No(a)&&!c&&Bf(e,a))?r=r.filter(E=>E!==a):o=l,a=ln(a)}return t.set(e,r),r}function nO(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?Ci(t)?[]:tO(t,this._c):[].concat(n),r],l=Kd(t,a[0],o);let c=l.top,d=l.right,E=l.bottom,u=l.left;for(let T=1;T<a.length;T++){const f=Kd(t,a[T],o);c=ze(f.top,c),d=an(f.right,d),E=an(f.bottom,E),u=ze(f.left,u)}return{width:d-u,height:E-c,x:u,y:c}}function rO(e){const{width:t,height:n}=vf(e);return{width:t,height:n}}function oO(e,t,n){const r=Ht(t),o=xt(t),s=n==="fixed",a=Ln(e,!0,s,t);let l={scrollLeft:0,scrollTop:0};const c=mt(0);function d(){c.x=Li(o)}if(r||!r&&!s)if((gr(t)!=="body"||No(o))&&(l=xi(t)),r){const f=Ln(t,!0,s,t);c.x=f.x+t.clientLeft,c.y=f.y+t.clientTop}else o&&d();s&&!r&&o&&d();const E=o&&!r&&!s?wf(o,l):mt(0),u=a.left+l.scrollLeft-c.x-E.x,T=a.top+l.scrollTop-c.y-E.y;return{x:u,y:T,width:a.width,height:a.height}}function ma(e){return ft(e).position==="static"}function zd(e,t){if(!Ht(e)||ft(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return xt(e)===n&&(n=n.ownerDocument.body),n}function Ff(e,t){const n=qe(e);if(Ci(e))return n;if(!Ht(e)){let o=ln(e);for(;o&&!dr(o);){if(Tt(o)&&!ma(o))return o;o=ln(o)}return n}let r=zd(e,t);for(;r&&WN(r)&&ma(r);)r=zd(r,t);return r&&dr(r)&&ma(r)&&!Cc(r)?n:r||XN(e)||n}const sO=async function(e){const t=this.getOffsetParent||Ff,n=this.getDimensions,r=await n(e.floating);return{reference:oO(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function iO(e){return ft(e).direction==="rtl"}const aO={convertOffsetParentRelativeRectToViewportRelativeRect:JN,getDocumentElement:xt,getClippingRect:nO,getOffsetParent:Ff,getElementRects:sO,getClientRects:qN,getDimensions:rO,getScale:rr,isElement:Tt,isRTL:iO};function Gf(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function lO(e,t){let n=null,r;const o=xt(e);function s(){var l;clearTimeout(r),(l=n)==null||l.disconnect(),n=null}function a(l,c){l===void 0&&(l=!1),c===void 0&&(c=1),s();const d=e.getBoundingClientRect(),{left:E,top:u,width:T,height:f}=d;if(l||t(),!T||!f)return;const h=ss(u),A=ss(o.clientWidth-(E+T)),R=ss(o.clientHeight-(u+f)),p=ss(E),I={rootMargin:-h+"px "+-A+"px "+-R+"px "+-p+"px",threshold:ze(0,an(1,c))||1};let O=!0;function C(m){const g=m[0].intersectionRatio;if(g!==c){if(!O)return a();g?a(!1,g):r=setTimeout(()=>{a(!1,1e-7)},1e3)}g===1&&!Gf(d,e.getBoundingClientRect())&&a(),O=!1}try{n=new IntersectionObserver(C,{...I,root:o.ownerDocument})}catch{n=new IntersectionObserver(C,I)}n.observe(e)}return a(!0),s}function cO(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=r,d=Lc(e),E=o||s?[...d?Zr(d):[],...t?Zr(t):[]]:[];E.forEach(p=>{o&&p.addEventListener("scroll",n,{passive:!0}),s&&p.addEventListener("resize",n)});const u=d&&l?lO(d,n):null;let T=-1,f=null;a&&(f=new ResizeObserver(p=>{let[N]=p;N&&N.target===d&&f&&t&&(f.unobserve(t),cancelAnimationFrame(T),T=requestAnimationFrame(()=>{var I;(I=f)==null||I.observe(t)})),n()}),d&&!c&&f.observe(d),t&&f.observe(t));let h,A=c?Ln(e):null;c&&R();function R(){const p=Ln(e);A&&!Gf(A,p)&&n(),A=p,h=requestAnimationFrame(R)}return n(),()=>{var p;E.forEach(N=>{o&&N.removeEventListener("scroll",n),s&&N.removeEventListener("resize",n)}),u==null||u(),(p=f)==null||p.disconnect(),f=null,c&&cancelAnimationFrame(h)}}const dO=HN,EO=kN,uO=BN,TO=YN,fO=FN,Jd=wN,SO=jN,RO=(e,t,n)=>{const r=new Map,o={platform:aO,...n},s={...o.platform,_c:r};return UN(e,t,{...o,platform:s})};var pO=typeof document<"u",AO=function(){},Ds=pO?S.useLayoutEffect:AO;function Xs(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Xs(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!Xs(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Hf(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function qd(e,t){const n=Hf(e);return Math.round(t*n)/n}function ga(e){const t=S.useRef(e);return Ds(()=>{t.current=e}),t}function hO(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:s,floating:a}={},transform:l=!0,whileElementsMounted:c,open:d}=e,[E,u]=S.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[T,f]=S.useState(r);Xs(T,r)||f(r);const[h,A]=S.useState(null),[R,p]=S.useState(null),N=S.useCallback(M=>{M!==m.current&&(m.current=M,A(M))},[]),I=S.useCallback(M=>{M!==g.current&&(g.current=M,p(M))},[]),O=s||h,C=a||R,m=S.useRef(null),g=S.useRef(null),y=S.useRef(E),x=c!=null,w=ga(c),D=ga(o),U=ga(d),F=S.useCallback(()=>{if(!m.current||!g.current)return;const M={placement:t,strategy:n,middleware:T};D.current&&(M.platform=D.current),RO(m.current,g.current,M).then(L=>{const v={...L,isPositioned:U.current!==!1};_.current&&!Xs(y.current,v)&&(y.current=v,Nc.flushSync(()=>{u(v)}))})},[T,t,n,D,U]);Ds(()=>{d===!1&&y.current.isPositioned&&(y.current.isPositioned=!1,u(M=>({...M,isPositioned:!1})))},[d]);const _=S.useRef(!1);Ds(()=>(_.current=!0,()=>{_.current=!1}),[]),Ds(()=>{if(O&&(m.current=O),C&&(g.current=C),O&&C){if(w.current)return w.current(O,C,F);F()}},[O,C,F,w,x]);const B=S.useMemo(()=>({reference:m,floating:g,setReference:N,setFloating:I}),[N,I]),b=S.useMemo(()=>({reference:O,floating:C}),[O,C]),P=S.useMemo(()=>{const M={position:n,left:0,top:0};if(!b.floating)return M;const L=qd(b.floating,E.x),v=qd(b.floating,E.y);return l?{...M,transform:"translate("+L+"px, "+v+"px)",...Hf(b.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:v}},[n,l,b.floating,E.x,E.y]);return S.useMemo(()=>({...E,update:F,refs:B,elements:b,floatingStyles:P}),[E,F,B,b,P])}const IO=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Jd({element:r.current,padding:o}).fn(n):{}:r?Jd({element:r,padding:o}).fn(n):{}}}},NO=(e,t)=>{const n=dO(e);return{name:n.name,fn:n.fn,options:[e,t]}},OO=(e,t)=>{const n=EO(e);return{name:n.name,fn:n.fn,options:[e,t]}},mO=(e,t)=>({fn:SO(e).fn,options:[e,t]}),gO=(e,t)=>{const n=uO(e);return{name:n.name,fn:n.fn,options:[e,t]}},CO=(e,t)=>{const n=TO(e);return{name:n.name,fn:n.fn,options:[e,t]}},xO=(e,t)=>{const n=fO(e);return{name:n.name,fn:n.fn,options:[e,t]}},LO=(e,t)=>{const n=IO(e);return{name:n.name,fn:n.fn,options:[e,t]}};var yO="Arrow",kf=S.forwardRef((e,t)=>{const{children:n,width:r=10,height:o=5,...s}=e;return i.jsx(Ce.svg,{...s,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:i.jsx("polygon",{points:"0,0 30,0 15,10"})})});kf.displayName=yO;var _O=kf;function DO(e){const[t,n]=S.useState(void 0);return sn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const s=o[0];let a,l;if("borderBoxSize"in s){const c=s.borderBoxSize,d=Array.isArray(c)?c[0]:c;a=d.inlineSize,l=d.blockSize}else a=e.offsetWidth,l=e.offsetHeight;n({width:a,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var yc="Popper",[jf,Cr]=Tn(yc),[MO,Yf]=jf(yc),Wf=e=>{const{__scopePopper:t,children:n}=e,[r,o]=S.useState(null);return i.jsx(MO,{scope:t,anchor:r,onAnchorChange:o,children:n})};Wf.displayName=yc;var Vf="PopperAnchor",$f=S.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,s=Yf(Vf,n),a=S.useRef(null),l=_e(t,a),c=S.useRef(null);return S.useEffect(()=>{const d=c.current;c.current=(r==null?void 0:r.current)||a.current,d!==c.current&&s.onAnchorChange(c.current)}),r?null:i.jsx(Ce.div,{...o,ref:l})});$f.displayName=Vf;var _c="PopperContent",[bO,PO]=jf(_c),Xf=S.forwardRef((e,t)=>{var Q,X,Z,le,re,se;const{__scopePopper:n,side:r="bottom",sideOffset:o=0,align:s="center",alignOffset:a=0,arrowPadding:l=0,avoidCollisions:c=!0,collisionBoundary:d=[],collisionPadding:E=0,sticky:u="partial",hideWhenDetached:T=!1,updatePositionStrategy:f="optimized",onPlaced:h,...A}=e,R=Yf(_c,n),[p,N]=S.useState(null),I=_e(t,W=>N(W)),[O,C]=S.useState(null),m=DO(O),g=(m==null?void 0:m.width)??0,y=(m==null?void 0:m.height)??0,x=r+(s!=="center"?"-"+s:""),w=typeof E=="number"?E:{top:0,right:0,bottom:0,left:0,...E},D=Array.isArray(d)?d:[d],U=D.length>0,F={padding:w,boundary:D.filter(UO),altBoundary:U},{refs:_,floatingStyles:B,placement:b,isPositioned:P,middlewareData:M}=hO({strategy:"fixed",placement:x,whileElementsMounted:(...W)=>cO(...W,{animationFrame:f==="always"}),elements:{reference:R.anchor},middleware:[NO({mainAxis:o+y,alignmentAxis:a}),c&&OO({mainAxis:!0,crossAxis:!1,limiter:u==="partial"?mO():void 0,...F}),c&&gO({...F}),CO({...F,apply:({elements:W,rects:ae,availableWidth:Te,availableHeight:ce})=>{const{width:ee,height:he}=ae.reference,Oe=W.floating.style;Oe.setProperty("--radix-popper-available-width",`${Te}px`),Oe.setProperty("--radix-popper-available-height",`${ce}px`),Oe.setProperty("--radix-popper-anchor-width",`${ee}px`),Oe.setProperty("--radix-popper-anchor-height",`${he}px`)}}),O&&LO({element:O,padding:l}),wO({arrowWidth:g,arrowHeight:y}),T&&xO({strategy:"referenceHidden",...F})]}),[L,v]=Jf(b),G=on(h);sn(()=>{P&&(G==null||G())},[P,G]);const k=(Q=M.arrow)==null?void 0:Q.x,q=(X=M.arrow)==null?void 0:X.y,K=((Z=M.arrow)==null?void 0:Z.centerOffset)!==0,[j,z]=S.useState();return sn(()=>{p&&z(window.getComputedStyle(p).zIndex)},[p]),i.jsx("div",{ref:_.setFloating,"data-radix-popper-content-wrapper":"",style:{...B,transform:P?B.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:j,"--radix-popper-transform-origin":[(le=M.transformOrigin)==null?void 0:le.x,(re=M.transformOrigin)==null?void 0:re.y].join(" "),...((se=M.hide)==null?void 0:se.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:i.jsx(bO,{scope:n,placedSide:L,onArrowChange:C,arrowX:k,arrowY:q,shouldHideArrow:K,children:i.jsx(Ce.div,{"data-side":L,"data-align":v,...A,ref:I,style:{...A.style,animation:P?void 0:"none"}})})})});Xf.displayName=_c;var Kf="PopperArrow",vO={top:"bottom",right:"left",bottom:"top",left:"right"},zf=S.forwardRef(function(t,n){const{__scopePopper:r,...o}=t,s=PO(Kf,r),a=vO[s.placedSide];return i.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:i.jsx(_O,{...o,ref:n,style:{...o.style,display:"block"}})})});zf.displayName=Kf;function UO(e){return e!==null}var wO=e=>({name:"transformOrigin",options:e,fn(t){var R,p,N;const{placement:n,rects:r,middlewareData:o}=t,a=((R=o.arrow)==null?void 0:R.centerOffset)!==0,l=a?0:e.arrowWidth,c=a?0:e.arrowHeight,[d,E]=Jf(n),u={start:"0%",center:"50%",end:"100%"}[E],T=(((p=o.arrow)==null?void 0:p.x)??0)+l/2,f=(((N=o.arrow)==null?void 0:N.y)??0)+c/2;let h="",A="";return d==="bottom"?(h=a?u:`${T}px`,A=`${-c}px`):d==="top"?(h=a?u:`${T}px`,A=`${r.floating.height+c}px`):d==="right"?(h=`${-c}px`,A=a?u:`${f}px`):d==="left"&&(h=`${r.floating.width+c}px`,A=a?u:`${f}px`),{data:{x:h,y:A}}}});function Jf(e){const[t,n="center"]=e.split("-");return[t,n]}var BO=Wf,yi=$f,Dc=Xf,Mc=zf,FO="Portal",Oo=S.forwardRef((e,t)=>{var l;const{container:n,...r}=e,[o,s]=S.useState(!1);sn(()=>s(!0),[]);const a=n||o&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return a?aN.createPortal(i.jsx(Ce.div,{...r,ref:t}),a):null});Oo.displayName=FO;function GO(e,t){return S.useReducer((n,r)=>t[n][r]??n,e)}var tt=e=>{const{present:t,children:n}=e,r=HO(t),o=typeof n=="function"?n({present:r.isPresent}):S.Children.only(n),s=_e(r.ref,kO(o));return typeof n=="function"||r.isPresent?S.cloneElement(o,{ref:s}):null};tt.displayName="Presence";function HO(e){const[t,n]=S.useState(),r=S.useRef(null),o=S.useRef(e),s=S.useRef("none"),a=e?"mounted":"unmounted",[l,c]=GO(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return S.useEffect(()=>{const d=is(r.current);s.current=l==="mounted"?d:"none"},[l]),sn(()=>{const d=r.current,E=o.current;if(E!==e){const T=s.current,f=is(d);e?c("MOUNT"):f==="none"||(d==null?void 0:d.display)==="none"?c("UNMOUNT"):c(E&&T!==f?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,c]),sn(()=>{if(t){let d;const E=t.ownerDocument.defaultView??window,u=f=>{const A=is(r.current).includes(CSS.escape(f.animationName));if(f.target===t&&A&&(c("ANIMATION_END"),!o.current)){const R=t.style.animationFillMode;t.style.animationFillMode="forwards",d=E.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=R)})}},T=f=>{f.target===t&&(s.current=is(r.current))};return t.addEventListener("animationstart",T),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{E.clearTimeout(d),t.removeEventListener("animationstart",T),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else c("ANIMATION_END")},[t,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:S.useCallback(d=>{r.current=d?getComputedStyle(d):null,n(d)},[])}}function is(e){return(e==null?void 0:e.animationName)||"none"}function kO(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var jO=gf[" useInsertionEffect ".trim().toString()]||sn;function bc({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,s,a]=YO({defaultProp:t,onChange:n}),l=e!==void 0,c=l?e:o;{const E=S.useRef(e!==void 0);S.useEffect(()=>{const u=E.current;u!==l&&console.warn(`${r} is changing from ${u?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),E.current=l},[l,r])}const d=S.useCallback(E=>{var u;if(l){const T=WO(E)?E(e):E;T!==e&&((u=a.current)==null||u.call(a,T))}else s(E)},[l,e,s,a]);return[c,d]}function YO({defaultProp:e,onChange:t}){const[n,r]=S.useState(e),o=S.useRef(n),s=S.useRef(t);return jO(()=>{s.current=t},[t]),S.useEffect(()=>{var a;o.current!==n&&((a=s.current)==null||a.call(s,n),o.current=n)},[n,o]),[n,r,s]}function WO(e){return typeof e=="function"}var VO=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),$O="VisuallyHidden",qf=S.forwardRef((e,t)=>i.jsx(Ce.span,{...e,ref:t,style:{...VO,...e.style}}));qf.displayName=$O;var XO=qf,[_i]=Tn("Tooltip",[Cr]),Di=Cr(),Qf="TooltipProvider",KO=700,kl="tooltip.open",[zO,Pc]=_i(Qf),Zf=e=>{const{__scopeTooltip:t,delayDuration:n=KO,skipDelayDuration:r=300,disableHoverableContent:o=!1,children:s}=e,a=S.useRef(!0),l=S.useRef(!1),c=S.useRef(0);return S.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),i.jsx(zO,{scope:t,isOpenDelayedRef:a,delayDuration:n,onOpen:S.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:S.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:S.useCallback(d=>{l.current=d},[]),disableHoverableContent:o,children:s})};Zf.displayName=Qf;var eo="Tooltip",[JO,mo]=_i(eo),eS=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:o,onOpenChange:s,disableHoverableContent:a,delayDuration:l}=e,c=Pc(eo,e.__scopeTooltip),d=Di(t),[E,u]=S.useState(null),T=Xr(),f=S.useRef(0),h=a??c.disableHoverableContent,A=l??c.delayDuration,R=S.useRef(!1),[p,N]=bc({prop:r,defaultProp:o??!1,onChange:g=>{g?(c.onOpen(),document.dispatchEvent(new CustomEvent(kl))):c.onClose(),s==null||s(g)},caller:eo}),I=S.useMemo(()=>p?R.current?"delayed-open":"instant-open":"closed",[p]),O=S.useCallback(()=>{window.clearTimeout(f.current),f.current=0,R.current=!1,N(!0)},[N]),C=S.useCallback(()=>{window.clearTimeout(f.current),f.current=0,N(!1)},[N]),m=S.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>{R.current=!0,N(!0),f.current=0},A)},[A,N]);return S.useEffect(()=>()=>{f.current&&(window.clearTimeout(f.current),f.current=0)},[]),i.jsx(BO,{...d,children:i.jsx(JO,{scope:t,contentId:T,open:p,stateAttribute:I,trigger:E,onTriggerChange:u,onTriggerEnter:S.useCallback(()=>{c.isOpenDelayedRef.current?m():O()},[c.isOpenDelayedRef,m,O]),onTriggerLeave:S.useCallback(()=>{h?C():(window.clearTimeout(f.current),f.current=0)},[C,h]),onOpen:O,onClose:C,disableHoverableContent:h,children:n})})};eS.displayName=eo;var jl="TooltipTrigger",tS=S.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,o=mo(jl,n),s=Pc(jl,n),a=Di(n),l=S.useRef(null),c=_e(t,l,o.onTriggerChange),d=S.useRef(!1),E=S.useRef(!1),u=S.useCallback(()=>d.current=!1,[]);return S.useEffect(()=>()=>document.removeEventListener("pointerup",u),[u]),i.jsx(yi,{asChild:!0,...a,children:i.jsx(Ce.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...r,ref:c,onPointerMove:Ee(e.onPointerMove,T=>{T.pointerType!=="touch"&&!E.current&&!s.isPointerInTransitRef.current&&(o.onTriggerEnter(),E.current=!0)}),onPointerLeave:Ee(e.onPointerLeave,()=>{o.onTriggerLeave(),E.current=!1}),onPointerDown:Ee(e.onPointerDown,()=>{o.open&&o.onClose(),d.current=!0,document.addEventListener("pointerup",u,{once:!0})}),onFocus:Ee(e.onFocus,()=>{d.current||o.onOpen()}),onBlur:Ee(e.onBlur,o.onClose),onClick:Ee(e.onClick,o.onClose)})})});tS.displayName=jl;var vc="TooltipPortal",[qO,QO]=_i(vc,{forceMount:void 0}),nS=e=>{const{__scopeTooltip:t,forceMount:n,children:r,container:o}=e,s=mo(vc,t);return i.jsx(qO,{scope:t,forceMount:n,children:i.jsx(tt,{present:n||s.open,children:i.jsx(Oo,{asChild:!0,container:o,children:r})})})};nS.displayName=vc;var Er="TooltipContent",rS=S.forwardRef((e,t)=>{const n=QO(Er,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...s}=e,a=mo(Er,e.__scopeTooltip);return i.jsx(tt,{present:r||a.open,children:a.disableHoverableContent?i.jsx(oS,{side:o,...s,ref:t}):i.jsx(ZO,{side:o,...s,ref:t})})}),ZO=S.forwardRef((e,t)=>{const n=mo(Er,e.__scopeTooltip),r=Pc(Er,e.__scopeTooltip),o=S.useRef(null),s=_e(t,o),[a,l]=S.useState(null),{trigger:c,onClose:d}=n,E=o.current,{onPointerInTransitChange:u}=r,T=S.useCallback(()=>{l(null),u(!1)},[u]),f=S.useCallback((h,A)=>{const R=h.currentTarget,p={x:h.clientX,y:h.clientY},N=om(p,R.getBoundingClientRect()),I=sm(p,N),O=im(A.getBoundingClientRect()),C=lm([...I,...O]);l(C),u(!0)},[u]);return S.useEffect(()=>()=>T(),[T]),S.useEffect(()=>{if(c&&E){const h=R=>f(R,E),A=R=>f(R,c);return c.addEventListener("pointerleave",h),E.addEventListener("pointerleave",A),()=>{c.removeEventListener("pointerleave",h),E.removeEventListener("pointerleave",A)}}},[c,E,f,T]),S.useEffect(()=>{if(a){const h=A=>{const R=A.target,p={x:A.clientX,y:A.clientY},N=(c==null?void 0:c.contains(R))||(E==null?void 0:E.contains(R)),I=!am(p,a);N?T():I&&(T(),d())};return document.addEventListener("pointermove",h),()=>document.removeEventListener("pointermove",h)}},[c,E,a,d,T]),i.jsx(oS,{...e,ref:s})}),[em,tm]=_i(eo,{isInside:!1}),nm=cN("TooltipContent"),oS=S.forwardRef((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":o,onEscapeKeyDown:s,onPointerDownOutside:a,...l}=e,c=mo(Er,n),d=Di(n),{onClose:E}=c;return S.useEffect(()=>(document.addEventListener(kl,E),()=>document.removeEventListener(kl,E)),[E]),S.useEffect(()=>{if(c.trigger){const u=T=>{const f=T.target;f!=null&&f.contains(c.trigger)&&E()};return window.addEventListener("scroll",u,{capture:!0}),()=>window.removeEventListener("scroll",u,{capture:!0})}},[c.trigger,E]),i.jsx(Io,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:u=>u.preventDefault(),onDismiss:E,children:i.jsxs(Dc,{"data-state":c.stateAttribute,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[i.jsx(nm,{children:r}),i.jsx(em,{scope:n,isInside:!0,children:i.jsx(XO,{id:c.contentId,role:"tooltip",children:o||r})})]})})});rS.displayName=Er;var sS="TooltipArrow",rm=S.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,o=Di(n);return tm(sS,n).isInside?null:i.jsx(Mc,{...o,...r,ref:t})});rm.displayName=sS;function om(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),s=Math.abs(t.left-e.x);switch(Math.min(n,r,o,s)){case s:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function sm(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function im(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}function am(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const l=t[s],c=t[a],d=l.x,E=l.y,u=c.x,T=c.y;E>r!=T>r&&n<(u-d)*(r-E)/(T-E)+d&&(o=!o)}return o}function lm(e){const t=e.slice();return t.sort((n,r)=>n.x<r.x?-1:n.x>r.x?1:n.y<r.y?-1:n.y>r.y?1:0),cm(t)}function cm(e){if(e.length<=1)return e.slice();const t=[];for(let r=0;r<e.length;r++){const o=e[r];for(;t.length>=2;){const s=t[t.length-1],a=t[t.length-2];if((s.x-a.x)*(o.y-a.y)>=(s.y-a.y)*(o.x-a.x))t.pop();else break}t.push(o)}t.pop();const n=[];for(let r=e.length-1;r>=0;r--){const o=e[r];for(;n.length>=2;){const s=n[n.length-1],a=n[n.length-2];if((s.x-a.x)*(o.y-a.y)>=(s.y-a.y)*(o.x-a.x))n.pop();else break}n.push(o)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var dm=Zf,Em=eS,um=tS,Tm=nS,fm=rS;function iS({content:e,children:t,side:n="right",align:r="center",sideOffset:o=6,delayMs:s=200,container:a}){return i.jsxs(Em,{delayDuration:s,children:[i.jsx(um,{asChild:!0,children:t}),i.jsx(Tm,{container:a,children:i.jsx(fm,{side:n,align:r,sideOffset:o,style:{background:Re("surfaceElevated"),color:Re("textPrimary"),border:`1px solid ${Re("borderDefault")}`,borderRadius:un.sm,padding:`${Ne[1]} ${Ne[2]}`,fontSize:He.sm,boxShadow:Re("shadowMd"),zIndex:Qr.tooltip,userSelect:"none"},children:e})})]})}const Sm=dm;var Ca="focusScope.autoFocusOnMount",xa="focusScope.autoFocusOnUnmount",Qd={bubbles:!1,cancelable:!0},Rm="FocusScope",Mi=S.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:s,...a}=e,[l,c]=S.useState(null),d=on(o),E=on(s),u=S.useRef(null),T=_e(t,A=>c(A)),f=S.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;S.useEffect(()=>{if(r){let A=function(I){if(f.paused||!l)return;const O=I.target;l.contains(O)?u.current=O:qt(u.current,{select:!0})},R=function(I){if(f.paused||!l)return;const O=I.relatedTarget;O!==null&&(l.contains(O)||qt(u.current,{select:!0}))},p=function(I){if(document.activeElement===document.body)for(const C of I)C.removedNodes.length>0&&qt(l)};document.addEventListener("focusin",A),document.addEventListener("focusout",R);const N=new MutationObserver(p);return l&&N.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",A),document.removeEventListener("focusout",R),N.disconnect()}}},[r,l,f.paused]),S.useEffect(()=>{if(l){eE.add(f);const A=document.activeElement;if(!l.contains(A)){const p=new CustomEvent(Ca,Qd);l.addEventListener(Ca,d),l.dispatchEvent(p),p.defaultPrevented||(pm(Om(aS(l)),{select:!0}),document.activeElement===A&&qt(l))}return()=>{l.removeEventListener(Ca,d),setTimeout(()=>{const p=new CustomEvent(xa,Qd);l.addEventListener(xa,E),l.dispatchEvent(p),p.defaultPrevented||qt(A??document.body,{select:!0}),l.removeEventListener(xa,E),eE.remove(f)},0)}}},[l,d,E,f]);const h=S.useCallback(A=>{if(!n&&!r||f.paused)return;const R=A.key==="Tab"&&!A.altKey&&!A.ctrlKey&&!A.metaKey,p=document.activeElement;if(R&&p){const N=A.currentTarget,[I,O]=Am(N);I&&O?!A.shiftKey&&p===O?(A.preventDefault(),n&&qt(I,{select:!0})):A.shiftKey&&p===I&&(A.preventDefault(),n&&qt(O,{select:!0})):p===N&&A.preventDefault()}},[n,r,f.paused]);return i.jsx(Ce.div,{tabIndex:-1,...a,ref:T,onKeyDown:h})});Mi.displayName=Rm;function pm(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(qt(r,{select:t}),document.activeElement!==n)return}function Am(e){const t=aS(e),n=Zd(t,e),r=Zd(t.reverse(),e);return[n,r]}function aS(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Zd(e,t){for(const n of e)if(!hm(n,{upTo:t}))return n}function hm(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Im(e){return e instanceof HTMLInputElement&&"select"in e}function qt(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Im(e)&&t&&e.select()}}var eE=Nm();function Nm(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=tE(e,t),e.unshift(t)},remove(t){var n;e=tE(e,t),(n=e[0])==null||n.resume()}}}function tE(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Om(e){return e.filter(t=>t.tagName!=="A")}var La=0;function Uc(){S.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??nE()),document.body.insertAdjacentElement("beforeend",e[1]??nE()),La++,()=>{La===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),La--}},[])}function nE(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var It=function(){return It=Object.assign||function(t){for(var n,r=1,o=arguments.length;r<o;r++){n=arguments[r];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])}return t},It.apply(this,arguments)};function lS(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}function mm(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r<o;r++)(s||!(r in t))&&(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return e.concat(s||Array.prototype.slice.call(t))}var Ms="right-scroll-bar-position",bs="width-before-scroll-bar",gm="with-scroll-bars-hidden",Cm="--removed-body-scroll-bar-size";function ya(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function xm(e,t){var n=S.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}var Lm=typeof window<"u"?S.useLayoutEffect:S.useEffect,rE=new WeakMap;function ym(e,t){var n=xm(null,function(r){return e.forEach(function(o){return ya(o,r)})});return Lm(function(){var r=rE.get(n);if(r){var o=new Set(r),s=new Set(e),a=n.current;o.forEach(function(l){s.has(l)||ya(l,null)}),s.forEach(function(l){o.has(l)||ya(l,a)})}rE.set(n,e)},[e]),n}function _m(e){return e}function Dm(e,t){t===void 0&&(t=_m);var n=[],r=!1,o={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(s){var a=t(s,r);return n.push(a),function(){n=n.filter(function(l){return l!==a})}},assignSyncMedium:function(s){for(r=!0;n.length;){var a=n;n=[],a.forEach(s)}n={push:function(l){return s(l)},filter:function(){return n}}},assignMedium:function(s){r=!0;var a=[];if(n.length){var l=n;n=[],l.forEach(s),a=n}var c=function(){var E=a;a=[],E.forEach(s)},d=function(){return Promise.resolve().then(c)};d(),n={push:function(E){a.push(E),d()},filter:function(E){return a=a.filter(E),n}}}};return o}function Mm(e){e===void 0&&(e={});var t=Dm(null);return t.options=It({async:!0,ssr:!1},e),t}var cS=function(e){var t=e.sideCar,n=lS(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return S.createElement(r,It({},n))};cS.isSideCarExport=!0;function bm(e,t){return e.useMedium(t),cS}var dS=Mm(),_a=function(){},bi=S.forwardRef(function(e,t){var n=S.useRef(null),r=S.useState({onScrollCapture:_a,onWheelCapture:_a,onTouchMoveCapture:_a}),o=r[0],s=r[1],a=e.forwardProps,l=e.children,c=e.className,d=e.removeScrollBar,E=e.enabled,u=e.shards,T=e.sideCar,f=e.noRelative,h=e.noIsolation,A=e.inert,R=e.allowPinchZoom,p=e.as,N=p===void 0?"div":p,I=e.gapMode,O=lS(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),C=T,m=ym([n,t]),g=It(It({},O),o);return S.createElement(S.Fragment,null,E&&S.createElement(C,{sideCar:dS,removeScrollBar:d,shards:u,noRelative:f,noIsolation:h,inert:A,setCallbacks:s,allowPinchZoom:!!R,lockRef:n,gapMode:I}),a?S.cloneElement(S.Children.only(l),It(It({},g),{ref:m})):S.createElement(N,It({},g,{className:c,ref:m}),l))});bi.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};bi.classNames={fullWidth:bs,zeroRight:Ms};var Pm=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function vm(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Pm();return t&&e.setAttribute("nonce",t),e}function Um(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function wm(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var Bm=function(){var e=0,t=null;return{add:function(n){e==0&&(t=vm())&&(Um(t,n),wm(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Fm=function(){var e=Bm();return function(t,n){S.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},ES=function(){var e=Fm(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},Gm={left:0,top:0,right:0,gap:0},Da=function(e){return parseInt(e||"",10)||0},Hm=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[Da(n),Da(r),Da(o)]},km=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return Gm;var t=Hm(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},jm=ES(),or="data-scroll-locked",Ym=function(e,t,n,r){var o=e.left,s=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),`
10
- .`.concat(gm,` {
11
- overflow: hidden `).concat(r,`;
12
- padding-right: `).concat(l,"px ").concat(r,`;
13
- }
14
- body[`).concat(or,`] {
15
- overflow: hidden `).concat(r,`;
16
- overscroll-behavior: contain;
17
- `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&`
18
- padding-left: `.concat(o,`px;
19
- padding-top: `).concat(s,`px;
20
- padding-right: `).concat(a,`px;
21
- margin-left:0;
22
- margin-top:0;
23
- margin-right: `).concat(l,"px ").concat(r,`;
24
- `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),`
25
- }
26
-
27
- .`).concat(Ms,` {
28
- right: `).concat(l,"px ").concat(r,`;
29
- }
30
-
31
- .`).concat(bs,` {
32
- margin-right: `).concat(l,"px ").concat(r,`;
33
- }
34
-
35
- .`).concat(Ms," .").concat(Ms,` {
36
- right: 0 `).concat(r,`;
37
- }
38
-
39
- .`).concat(bs," .").concat(bs,` {
40
- margin-right: 0 `).concat(r,`;
41
- }
42
-
43
- body[`).concat(or,`] {
44
- `).concat(Cm,": ").concat(l,`px;
45
- }
46
- `)},oE=function(){var e=parseInt(document.body.getAttribute(or)||"0",10);return isFinite(e)?e:0},Wm=function(){S.useEffect(function(){return document.body.setAttribute(or,(oE()+1).toString()),function(){var e=oE()-1;e<=0?document.body.removeAttribute(or):document.body.setAttribute(or,e.toString())}},[])},Vm=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;Wm();var s=S.useMemo(function(){return km(o)},[o]);return S.createElement(jm,{styles:Ym(s,!t,o,n?"":"!important")})},Yl=!1;if(typeof window<"u")try{var as=Object.defineProperty({},"passive",{get:function(){return Yl=!0,!0}});window.addEventListener("test",as,as),window.removeEventListener("test",as,as)}catch{Yl=!1}var Wn=Yl?{passive:!1}:!1,$m=function(e){return e.tagName==="TEXTAREA"},uS=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!$m(e)&&n[t]==="visible")},Xm=function(e){return uS(e,"overflowY")},Km=function(e){return uS(e,"overflowX")},sE=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=TS(e,r);if(o){var s=fS(e,r),a=s[1],l=s[2];if(a>l)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},zm=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},Jm=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},TS=function(e,t){return e==="v"?Xm(t):Km(t)},fS=function(e,t){return e==="v"?zm(t):Jm(t)},qm=function(e,t){return e==="h"&&t==="rtl"?-1:1},Qm=function(e,t,n,r,o){var s=qm(e,window.getComputedStyle(t).direction),a=s*r,l=n.target,c=t.contains(l),d=!1,E=a>0,u=0,T=0;do{if(!l)break;var f=fS(e,l),h=f[0],A=f[1],R=f[2],p=A-R-s*h;(h||p)&&TS(e,l)&&(u+=p,T+=h);var N=l.parentNode;l=N&&N.nodeType===Node.DOCUMENT_FRAGMENT_NODE?N.host:N}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return(E&&Math.abs(u)<1||!E&&Math.abs(T)<1)&&(d=!0),d},ls=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},iE=function(e){return[e.deltaX,e.deltaY]},aE=function(e){return e&&"current"in e?e.current:e},Zm=function(e,t){return e[0]===t[0]&&e[1]===t[1]},eg=function(e){return`
47
- .block-interactivity-`.concat(e,` {pointer-events: none;}
48
- .allow-interactivity-`).concat(e,` {pointer-events: all;}
49
- `)},tg=0,Vn=[];function ng(e){var t=S.useRef([]),n=S.useRef([0,0]),r=S.useRef(),o=S.useState(tg++)[0],s=S.useState(ES)[0],a=S.useRef(e);S.useEffect(function(){a.current=e},[e]),S.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var A=mm([e.lockRef.current],(e.shards||[]).map(aE),!0).filter(Boolean);return A.forEach(function(R){return R.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),A.forEach(function(R){return R.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=S.useCallback(function(A,R){if("touches"in A&&A.touches.length===2||A.type==="wheel"&&A.ctrlKey)return!a.current.allowPinchZoom;var p=ls(A),N=n.current,I="deltaX"in A?A.deltaX:N[0]-p[0],O="deltaY"in A?A.deltaY:N[1]-p[1],C,m=A.target,g=Math.abs(I)>Math.abs(O)?"h":"v";if("touches"in A&&g==="h"&&m.type==="range")return!1;var y=window.getSelection(),x=y&&y.anchorNode,w=x?x===m||x.contains(m):!1;if(w)return!1;var D=sE(g,m);if(!D)return!0;if(D?C=g:(C=g==="v"?"h":"v",D=sE(g,m)),!D)return!1;if(!r.current&&"changedTouches"in A&&(I||O)&&(r.current=C),!C)return!0;var U=r.current||C;return Qm(U,R,A,U==="h"?I:O)},[]),c=S.useCallback(function(A){var R=A;if(!(!Vn.length||Vn[Vn.length-1]!==s)){var p="deltaY"in R?iE(R):ls(R),N=t.current.filter(function(C){return C.name===R.type&&(C.target===R.target||R.target===C.shadowParent)&&Zm(C.delta,p)})[0];if(N&&N.should){R.cancelable&&R.preventDefault();return}if(!N){var I=(a.current.shards||[]).map(aE).filter(Boolean).filter(function(C){return C.contains(R.target)}),O=I.length>0?l(R,I[0]):!a.current.noIsolation;O&&R.cancelable&&R.preventDefault()}}},[]),d=S.useCallback(function(A,R,p,N){var I={name:A,delta:R,target:p,should:N,shadowParent:rg(p)};t.current.push(I),setTimeout(function(){t.current=t.current.filter(function(O){return O!==I})},1)},[]),E=S.useCallback(function(A){n.current=ls(A),r.current=void 0},[]),u=S.useCallback(function(A){d(A.type,iE(A),A.target,l(A,e.lockRef.current))},[]),T=S.useCallback(function(A){d(A.type,ls(A),A.target,l(A,e.lockRef.current))},[]);S.useEffect(function(){return Vn.push(s),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:T}),document.addEventListener("wheel",c,Wn),document.addEventListener("touchmove",c,Wn),document.addEventListener("touchstart",E,Wn),function(){Vn=Vn.filter(function(A){return A!==s}),document.removeEventListener("wheel",c,Wn),document.removeEventListener("touchmove",c,Wn),document.removeEventListener("touchstart",E,Wn)}},[]);var f=e.removeScrollBar,h=e.inert;return S.createElement(S.Fragment,null,h?S.createElement(s,{styles:eg(o)}):null,f?S.createElement(Vm,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function rg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const og=bm(dS,ng);var Pi=S.forwardRef(function(e,t){return S.createElement(bi,It({},e,{ref:t,sideCar:og}))});Pi.classNames=bi.classNames;var sg=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},$n=new WeakMap,cs=new WeakMap,ds={},Ma=0,SS=function(e){return e&&(e.host||SS(e.parentNode))},ig=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=SS(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},ag=function(e,t,n,r){var o=ig(t,Array.isArray(e)?e:[e]);ds[n]||(ds[n]=new WeakMap);var s=ds[n],a=[],l=new Set,c=new Set(o),d=function(u){!u||l.has(u)||(l.add(u),d(u.parentNode))};o.forEach(d);var E=function(u){!u||c.has(u)||Array.prototype.forEach.call(u.children,function(T){if(l.has(T))E(T);else try{var f=T.getAttribute(r),h=f!==null&&f!=="false",A=($n.get(T)||0)+1,R=(s.get(T)||0)+1;$n.set(T,A),s.set(T,R),a.push(T),A===1&&h&&cs.set(T,!0),R===1&&T.setAttribute(n,"true"),h||T.setAttribute(r,"true")}catch(p){console.error("aria-hidden: cannot operate on ",T,p)}})};return E(t),l.clear(),Ma++,function(){a.forEach(function(u){var T=$n.get(u)-1,f=s.get(u)-1;$n.set(u,T),s.set(u,f),T||(cs.has(u)||u.removeAttribute(r),cs.delete(u)),f||u.removeAttribute(n)}),Ma--,Ma||($n=new WeakMap,$n=new WeakMap,cs=new WeakMap,ds={})}},wc=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=sg(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),ag(r,o,n,"aria-hidden")):function(){return null}},vi="Dialog",[RS]=Tn(vi),[lg,St]=RS(vi),pS=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:a=!0}=e,l=S.useRef(null),c=S.useRef(null),[d,E]=bc({prop:r,defaultProp:o??!1,onChange:s,caller:vi});return i.jsx(lg,{scope:t,triggerRef:l,contentRef:c,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:d,onOpenChange:E,onOpenToggle:S.useCallback(()=>E(u=>!u),[E]),modal:a,children:n})};pS.displayName=vi;var AS="DialogTrigger",cg=S.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=St(AS,n),s=_e(t,o.triggerRef);return i.jsx(Ce.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Gc(o.open),...r,ref:s,onClick:Ee(e.onClick,o.onOpenToggle)})});cg.displayName=AS;var Bc="DialogPortal",[dg,hS]=RS(Bc,{forceMount:void 0}),IS=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,s=St(Bc,t);return i.jsx(dg,{scope:t,forceMount:n,children:S.Children.map(r,a=>i.jsx(tt,{present:n||s.open,children:i.jsx(Oo,{asChild:!0,container:o,children:a})}))})};IS.displayName=Bc;var Ks="DialogOverlay",NS=S.forwardRef((e,t)=>{const n=hS(Ks,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=St(Ks,e.__scopeDialog);return s.modal?i.jsx(tt,{present:r||s.open,children:i.jsx(ug,{...o,ref:t})}):null});NS.displayName=Ks;var Eg=cr("DialogOverlay.RemoveScroll"),ug=S.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=St(Ks,n);return i.jsx(Pi,{as:Eg,allowPinchZoom:!0,shards:[o.contentRef],children:i.jsx(Ce.div,{"data-state":Gc(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),yn="DialogContent",OS=S.forwardRef((e,t)=>{const n=hS(yn,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=St(yn,e.__scopeDialog);return i.jsx(tt,{present:r||s.open,children:s.modal?i.jsx(Tg,{...o,ref:t}):i.jsx(fg,{...o,ref:t})})});OS.displayName=yn;var Tg=S.forwardRef((e,t)=>{const n=St(yn,e.__scopeDialog),r=S.useRef(null),o=_e(t,n.contentRef,r);return S.useEffect(()=>{const s=r.current;if(s)return wc(s)},[]),i.jsx(mS,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,s=>{var a;s.preventDefault(),(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0;(a.button===2||l)&&s.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,s=>s.preventDefault())})}),fg=S.forwardRef((e,t)=>{const n=St(yn,e.__scopeDialog),r=S.useRef(!1),o=S.useRef(!1);return i.jsx(mS,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,l;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(l=n.triggerRef.current)==null||l.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var c,d;(c=e.onInteractOutside)==null||c.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((d=n.triggerRef.current)==null?void 0:d.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),mS=S.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...a}=e,l=St(yn,n),c=S.useRef(null),d=_e(t,c);return Uc(),i.jsxs(i.Fragment,{children:[i.jsx(Mi,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(Io,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Gc(l.open),...a,ref:d,onDismiss:()=>l.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(pg,{titleId:l.titleId}),i.jsx(hg,{contentRef:c,descriptionId:l.descriptionId})]})]})}),Fc="DialogTitle",gS=S.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=St(Fc,n);return i.jsx(Ce.h2,{id:o.titleId,...r,ref:t})});gS.displayName=Fc;var CS="DialogDescription",Sg=S.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=St(CS,n);return i.jsx(Ce.p,{id:o.descriptionId,...r,ref:t})});Sg.displayName=CS;var xS="DialogClose",Rg=S.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=St(xS,n);return i.jsx(Ce.button,{type:"button",...r,ref:t,onClick:Ee(e.onClick,()=>o.onOpenChange(!1))})});Rg.displayName=xS;function Gc(e){return e?"open":"closed"}var LS="DialogTitleWarning",[OV,yS]=sN(LS,{contentName:yn,titleName:Fc,docsSlug:"dialog"}),pg=({titleId:e})=>{const t=yS(LS),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
50
-
51
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
52
-
53
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return S.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Ag="DialogDescriptionWarning",hg=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${yS(Ag).contentName}}.`;return S.useEffect(()=>{var s;const o=(s=e.current)==null?void 0:s.getAttribute("aria-describedby");t&&o&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},Ig=pS,Ng=IS,Og=NS,mg=OS,gg=gS;function _S(e){const t=e+"CollectionProvider",[n,r]=Tn(t),[o,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=A=>{const{scope:R,children:p}=A,N=ye.useRef(null),I=ye.useRef(new Map).current;return i.jsx(o,{scope:R,itemMap:I,collectionRef:N,children:p})};a.displayName=t;const l=e+"CollectionSlot",c=cr(l),d=ye.forwardRef((A,R)=>{const{scope:p,children:N}=A,I=s(l,p),O=_e(R,I.collectionRef);return i.jsx(c,{ref:O,children:N})});d.displayName=l;const E=e+"CollectionItemSlot",u="data-radix-collection-item",T=cr(E),f=ye.forwardRef((A,R)=>{const{scope:p,children:N,...I}=A,O=ye.useRef(null),C=_e(R,O),m=s(E,p);return ye.useEffect(()=>(m.itemMap.set(O,{ref:O,...I}),()=>void m.itemMap.delete(O))),i.jsx(T,{[u]:"",ref:C,children:N})});f.displayName=E;function h(A){const R=s(e+"CollectionConsumer",A);return ye.useCallback(()=>{const N=R.collectionRef.current;if(!N)return[];const I=Array.from(N.querySelectorAll(`[${u}]`));return Array.from(R.itemMap.values()).sort((m,g)=>I.indexOf(m.ref.current)-I.indexOf(g.ref.current))},[R.collectionRef,R.itemMap])}return[{Provider:a,Slot:d,ItemSlot:f},h,r]}var Cg=S.createContext(void 0);function xg(e){const t=S.useContext(Cg);return e||t||"ltr"}var ba="rovingFocusGroup.onEntryFocus",Lg={bubbles:!1,cancelable:!0},go="RovingFocusGroup",[Wl,DS,yg]=_S(go),[_g,MS]=Tn(go,[yg]),[Dg,Mg]=_g(go),bS=S.forwardRef((e,t)=>i.jsx(Wl.Provider,{scope:e.__scopeRovingFocusGroup,children:i.jsx(Wl.Slot,{scope:e.__scopeRovingFocusGroup,children:i.jsx(bg,{...e,ref:t})})}));bS.displayName=go;var bg=S.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:s,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:E=!1,...u}=e,T=S.useRef(null),f=_e(t,T),h=xg(s),[A,R]=bc({prop:a,defaultProp:l??null,onChange:c,caller:go}),[p,N]=S.useState(!1),I=on(d),O=DS(n),C=S.useRef(!1),[m,g]=S.useState(0);return S.useEffect(()=>{const y=T.current;if(y)return y.addEventListener(ba,I),()=>y.removeEventListener(ba,I)},[I]),i.jsx(Dg,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:A,onItemFocus:S.useCallback(y=>R(y),[R]),onItemShiftTab:S.useCallback(()=>N(!0),[]),onFocusableItemAdd:S.useCallback(()=>g(y=>y+1),[]),onFocusableItemRemove:S.useCallback(()=>g(y=>y-1),[]),children:i.jsx(Ce.div,{tabIndex:p||m===0?-1:0,"data-orientation":r,...u,ref:f,style:{outline:"none",...e.style},onMouseDown:Ee(e.onMouseDown,()=>{C.current=!0}),onFocus:Ee(e.onFocus,y=>{const x=!C.current;if(y.target===y.currentTarget&&x&&!p){const w=new CustomEvent(ba,Lg);if(y.currentTarget.dispatchEvent(w),!w.defaultPrevented){const D=O().filter(b=>b.focusable),U=D.find(b=>b.active),F=D.find(b=>b.id===A),B=[U,F,...D].filter(Boolean).map(b=>b.ref.current);US(B,E)}}C.current=!1}),onBlur:Ee(e.onBlur,()=>N(!1))})})}),PS="RovingFocusGroupItem",vS=S.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:s,children:a,...l}=e,c=Xr(),d=s||c,E=Mg(PS,n),u=E.currentTabStopId===d,T=DS(n),{onFocusableItemAdd:f,onFocusableItemRemove:h,currentTabStopId:A}=E;return S.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),i.jsx(Wl.ItemSlot,{scope:n,id:d,focusable:r,active:o,children:i.jsx(Ce.span,{tabIndex:u?0:-1,"data-orientation":E.orientation,...l,ref:t,onMouseDown:Ee(e.onMouseDown,R=>{r?E.onItemFocus(d):R.preventDefault()}),onFocus:Ee(e.onFocus,()=>E.onItemFocus(d)),onKeyDown:Ee(e.onKeyDown,R=>{if(R.key==="Tab"&&R.shiftKey){E.onItemShiftTab();return}if(R.target!==R.currentTarget)return;const p=Ug(R,E.orientation,E.dir);if(p!==void 0){if(R.metaKey||R.ctrlKey||R.altKey||R.shiftKey)return;R.preventDefault();let I=T().filter(O=>O.focusable).map(O=>O.ref.current);if(p==="last")I.reverse();else if(p==="prev"||p==="next"){p==="prev"&&I.reverse();const O=I.indexOf(R.currentTarget);I=E.loop?wg(I,O+1):I.slice(O+1)}setTimeout(()=>US(I))}}),children:typeof a=="function"?a({isCurrentTabStop:u,hasTabStop:A!=null}):a})})});vS.displayName=PS;var Pg={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function vg(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Ug(e,t,n){const r=vg(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Pg[r]}function US(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function wg(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Bg=bS,Fg=vS,Vl=["Enter"," "],Gg=["ArrowDown","PageUp","Home"],wS=["ArrowUp","PageDown","End"],Hg=[...Gg,...wS],kg={ltr:[...Vl,"ArrowRight"],rtl:[...Vl,"ArrowLeft"]},jg={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Ui="Menu",[to,Yg,Wg]=_S(Ui),[vn,BS]=Tn(Ui,[Wg,Cr,MS]),Hc=Cr(),FS=MS(),[mV,Un]=vn(Ui),[gV,Co]=vn(Ui),Vg="MenuAnchor",kc=S.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Hc(n);return i.jsx(yi,{...o,...r,ref:t})});kc.displayName=Vg;var jc="MenuPortal",[$g,GS]=vn(jc,{forceMount:void 0}),HS=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,s=Un(jc,t);return i.jsx($g,{scope:t,forceMount:n,children:i.jsx(tt,{present:n||s.open,children:i.jsx(Oo,{asChild:!0,container:o,children:r})})})};HS.displayName=jc;var et="MenuContent",[Xg,Yc]=vn(et),kS=S.forwardRef((e,t)=>{const n=GS(et,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=Un(et,e.__scopeMenu),a=Co(et,e.__scopeMenu);return i.jsx(to.Provider,{scope:e.__scopeMenu,children:i.jsx(tt,{present:r||s.open,children:i.jsx(to.Slot,{scope:e.__scopeMenu,children:a.modal?i.jsx(Kg,{...o,ref:t}):i.jsx(zg,{...o,ref:t})})})})}),Kg=S.forwardRef((e,t)=>{const n=Un(et,e.__scopeMenu),r=S.useRef(null),o=_e(t,r);return S.useEffect(()=>{const s=r.current;if(s)return wc(s)},[]),i.jsx(Wc,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:Ee(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),zg=S.forwardRef((e,t)=>{const n=Un(et,e.__scopeMenu);return i.jsx(Wc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Jg=cr("MenuContent.ScrollLock"),Wc=S.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:E,onFocusOutside:u,onInteractOutside:T,onDismiss:f,disableOutsideScroll:h,...A}=e,R=Un(et,n),p=Co(et,n),N=Hc(n),I=FS(n),O=Yg(n),[C,m]=S.useState(null),g=S.useRef(null),y=_e(t,g,R.onContentChange),x=S.useRef(0),w=S.useRef(""),D=S.useRef(0),U=S.useRef(null),F=S.useRef("right"),_=S.useRef(0),B=h?Pi:S.Fragment,b=h?{as:Jg,allowPinchZoom:!0}:void 0,P=L=>{var Q,X;const v=w.current+L,G=O().filter(Z=>!Z.disabled),k=document.activeElement,q=(Q=G.find(Z=>Z.ref.current===k))==null?void 0:Q.textValue,K=G.map(Z=>Z.textValue),j=lC(K,v,q),z=(X=G.find(Z=>Z.textValue===j))==null?void 0:X.ref.current;(function Z(le){w.current=le,window.clearTimeout(x.current),le!==""&&(x.current=window.setTimeout(()=>Z(""),1e3))})(v),z&&setTimeout(()=>z.focus())};S.useEffect(()=>()=>window.clearTimeout(x.current),[]),Uc();const M=S.useCallback(L=>{var G,k;return F.current===((G=U.current)==null?void 0:G.side)&&dC(L,(k=U.current)==null?void 0:k.area)},[]);return i.jsx(Xg,{scope:n,searchRef:w,onItemEnter:S.useCallback(L=>{M(L)&&L.preventDefault()},[M]),onItemLeave:S.useCallback(L=>{var v;M(L)||((v=g.current)==null||v.focus(),m(null))},[M]),onTriggerLeave:S.useCallback(L=>{M(L)&&L.preventDefault()},[M]),pointerGraceTimerRef:D,onPointerGraceIntentChange:S.useCallback(L=>{U.current=L},[]),children:i.jsx(B,{...b,children:i.jsx(Mi,{asChild:!0,trapped:o,onMountAutoFocus:Ee(s,L=>{var v;L.preventDefault(),(v=g.current)==null||v.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:i.jsx(Io,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:E,onFocusOutside:u,onInteractOutside:T,onDismiss:f,children:i.jsx(Bg,{asChild:!0,...I,dir:p.dir,orientation:"vertical",loop:r,currentTabStopId:C,onCurrentTabStopIdChange:m,onEntryFocus:Ee(c,L=>{p.isUsingKeyboardRef.current||L.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(Dc,{role:"menu","aria-orientation":"vertical","data-state":rR(R.open),"data-radix-menu-content":"",dir:p.dir,...N,...A,ref:y,style:{outline:"none",...A.style},onKeyDown:Ee(A.onKeyDown,L=>{const G=L.target.closest("[data-radix-menu-content]")===L.currentTarget,k=L.ctrlKey||L.altKey||L.metaKey,q=L.key.length===1;G&&(L.key==="Tab"&&L.preventDefault(),!k&&q&&P(L.key));const K=g.current;if(L.target!==K||!Hg.includes(L.key))return;L.preventDefault();const z=O().filter(Q=>!Q.disabled).map(Q=>Q.ref.current);wS.includes(L.key)&&z.reverse(),iC(z)}),onBlur:Ee(e.onBlur,L=>{L.currentTarget.contains(L.target)||(window.clearTimeout(x.current),w.current="")}),onPointerMove:Ee(e.onPointerMove,no(L=>{const v=L.target,G=_.current!==L.clientX;if(L.currentTarget.contains(v)&&G){const k=L.clientX>_.current?"right":"left";F.current=k,_.current=L.clientX}}))})})})})})})});kS.displayName=et;var qg="MenuGroup",Vc=S.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Ce.div,{role:"group",...r,ref:t})});Vc.displayName=qg;var Qg="MenuLabel",jS=S.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Ce.div,{...r,ref:t})});jS.displayName=Qg;var zs="MenuItem",lE="menu.itemSelect",wi=S.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,s=S.useRef(null),a=Co(zs,e.__scopeMenu),l=Yc(zs,e.__scopeMenu),c=_e(t,s),d=S.useRef(!1),E=()=>{const u=s.current;if(!n&&u){const T=new CustomEvent(lE,{bubbles:!0,cancelable:!0});u.addEventListener(lE,f=>r==null?void 0:r(f),{once:!0}),Lf(u,T),T.defaultPrevented?d.current=!1:a.onClose()}};return i.jsx(YS,{...o,ref:c,disabled:n,onClick:Ee(e.onClick,E),onPointerDown:u=>{var T;(T=e.onPointerDown)==null||T.call(e,u),d.current=!0},onPointerUp:Ee(e.onPointerUp,u=>{var T;d.current||(T=u.currentTarget)==null||T.click()}),onKeyDown:Ee(e.onKeyDown,u=>{const T=l.searchRef.current!=="";n||T&&u.key===" "||Vl.includes(u.key)&&(u.currentTarget.click(),u.preventDefault())})})});wi.displayName=zs;var YS=S.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...s}=e,a=Yc(zs,n),l=FS(n),c=S.useRef(null),d=_e(t,c),[E,u]=S.useState(!1),[T,f]=S.useState("");return S.useEffect(()=>{const h=c.current;h&&f((h.textContent??"").trim())},[s.children]),i.jsx(to.ItemSlot,{scope:n,disabled:r,textValue:o??T,children:i.jsx(Fg,{asChild:!0,...l,focusable:!r,children:i.jsx(Ce.div,{role:"menuitem","data-highlighted":E?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:d,onPointerMove:Ee(e.onPointerMove,no(h=>{r?a.onItemLeave(h):(a.onItemEnter(h),h.defaultPrevented||h.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Ee(e.onPointerLeave,no(h=>a.onItemLeave(h))),onFocus:Ee(e.onFocus,()=>u(!0)),onBlur:Ee(e.onBlur,()=>u(!1))})})})}),Zg="MenuCheckboxItem",WS=S.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return i.jsx(zS,{scope:e.__scopeMenu,checked:n,children:i.jsx(wi,{role:"menuitemcheckbox","aria-checked":Js(n)?"mixed":n,...o,ref:t,"data-state":Xc(n),onSelect:Ee(o.onSelect,()=>r==null?void 0:r(Js(n)?!0:!n),{checkForDefaultPrevented:!1})})})});WS.displayName=Zg;var VS="MenuRadioGroup",[eC,tC]=vn(VS,{value:void 0,onValueChange:()=>{}}),$S=S.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,s=on(r);return i.jsx(eC,{scope:e.__scopeMenu,value:n,onValueChange:s,children:i.jsx(Vc,{...o,ref:t})})});$S.displayName=VS;var XS="MenuRadioItem",KS=S.forwardRef((e,t)=>{const{value:n,...r}=e,o=tC(XS,e.__scopeMenu),s=n===o.value;return i.jsx(zS,{scope:e.__scopeMenu,checked:s,children:i.jsx(wi,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":Xc(s),onSelect:Ee(r.onSelect,()=>{var a;return(a=o.onValueChange)==null?void 0:a.call(o,n)},{checkForDefaultPrevented:!1})})})});KS.displayName=XS;var $c="MenuItemIndicator",[zS,nC]=vn($c,{checked:!1}),JS=S.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,s=nC($c,n);return i.jsx(tt,{present:r||Js(s.checked)||s.checked===!0,children:i.jsx(Ce.span,{...o,ref:t,"data-state":Xc(s.checked)})})});JS.displayName=$c;var rC="MenuSeparator",qS=S.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Ce.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});qS.displayName=rC;var oC="MenuArrow",QS=S.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Hc(n);return i.jsx(Mc,{...o,...r,ref:t})});QS.displayName=oC;var sC="MenuSub",[CV,ZS]=vn(sC),jr="MenuSubTrigger",eR=S.forwardRef((e,t)=>{const n=Un(jr,e.__scopeMenu),r=Co(jr,e.__scopeMenu),o=ZS(jr,e.__scopeMenu),s=Yc(jr,e.__scopeMenu),a=S.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=s,d={__scopeMenu:e.__scopeMenu},E=S.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return S.useEffect(()=>E,[E]),S.useEffect(()=>{const u=l.current;return()=>{window.clearTimeout(u),c(null)}},[l,c]),i.jsx(kc,{asChild:!0,...d,children:i.jsx(YS,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":rR(n.open),...e,ref:mi(t,o.onTriggerChange),onClick:u=>{var T;(T=e.onClick)==null||T.call(e,u),!(e.disabled||u.defaultPrevented)&&(u.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:Ee(e.onPointerMove,no(u=>{s.onItemEnter(u),!u.defaultPrevented&&!e.disabled&&!n.open&&!a.current&&(s.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),E()},100))})),onPointerLeave:Ee(e.onPointerLeave,no(u=>{var f,h;E();const T=(f=n.content)==null?void 0:f.getBoundingClientRect();if(T){const A=(h=n.content)==null?void 0:h.dataset.side,R=A==="right",p=R?-5:5,N=T[R?"left":"right"],I=T[R?"right":"left"];s.onPointerGraceIntentChange({area:[{x:u.clientX+p,y:u.clientY},{x:N,y:T.top},{x:I,y:T.top},{x:I,y:T.bottom},{x:N,y:T.bottom}],side:A}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(u),u.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:Ee(e.onKeyDown,u=>{var f;const T=s.searchRef.current!=="";e.disabled||T&&u.key===" "||kg[r.dir].includes(u.key)&&(n.onOpenChange(!0),(f=n.content)==null||f.focus(),u.preventDefault())})})})});eR.displayName=jr;var tR="MenuSubContent",nR=S.forwardRef((e,t)=>{const n=GS(et,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=Un(et,e.__scopeMenu),a=Co(et,e.__scopeMenu),l=ZS(tR,e.__scopeMenu),c=S.useRef(null),d=_e(t,c);return i.jsx(to.Provider,{scope:e.__scopeMenu,children:i.jsx(tt,{present:r||s.open,children:i.jsx(to.Slot,{scope:e.__scopeMenu,children:i.jsx(Wc,{id:l.contentId,"aria-labelledby":l.triggerId,...o,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:E=>{var u;a.isUsingKeyboardRef.current&&((u=c.current)==null||u.focus()),E.preventDefault()},onCloseAutoFocus:E=>E.preventDefault(),onFocusOutside:Ee(e.onFocusOutside,E=>{E.target!==l.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:Ee(e.onEscapeKeyDown,E=>{a.onClose(),E.preventDefault()}),onKeyDown:Ee(e.onKeyDown,E=>{var f;const u=E.currentTarget.contains(E.target),T=jg[a.dir].includes(E.key);u&&T&&(s.onOpenChange(!1),(f=l.trigger)==null||f.focus(),E.preventDefault())})})})})})});nR.displayName=tR;function rR(e){return e?"open":"closed"}function Js(e){return e==="indeterminate"}function Xc(e){return Js(e)?"indeterminate":e?"checked":"unchecked"}function iC(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function aC(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function lC(e,t,n){const o=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=aC(e,Math.max(s,0));o.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(o.toLowerCase()));return c!==n?c:void 0}function cC(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const l=t[s],c=t[a],d=l.x,E=l.y,u=c.x,T=c.y;E>r!=T>r&&n<(u-d)*(r-E)/(T-E)+d&&(o=!o)}return o}function dC(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return cC(n,t)}function no(e){return t=>t.pointerType==="mouse"?e(t):void 0}var EC=kc,uC=HS,TC=kS,fC=Vc,SC=jS,RC=wi,pC=WS,AC=$S,hC=KS,IC=JS,NC=qS,OC=QS,mC=eR,gC=nR,oR="DropdownMenu",[CC]=Tn(oR,[BS]),We=BS(),[xV,sR]=CC(oR),iR="DropdownMenuTrigger",xC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,s=sR(iR,n),a=We(n);return i.jsx(EC,{asChild:!0,...a,children:i.jsx(Ce.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:mi(t,s.triggerRef),onPointerDown:Ee(e.onPointerDown,l=>{!r&&l.button===0&&l.ctrlKey===!1&&(s.onOpenToggle(),s.open||l.preventDefault())}),onKeyDown:Ee(e.onKeyDown,l=>{r||(["Enter"," "].includes(l.key)&&s.onOpenToggle(),l.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(l.key)&&l.preventDefault())})})})});xC.displayName=iR;var LC="DropdownMenuPortal",aR=e=>{const{__scopeDropdownMenu:t,...n}=e,r=We(t);return i.jsx(uC,{...r,...n})};aR.displayName=LC;var lR="DropdownMenuContent",cR=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=sR(lR,n),s=We(n),a=S.useRef(!1);return i.jsx(TC,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:t,onCloseAutoFocus:Ee(e.onCloseAutoFocus,l=>{var c;a.current||(c=o.triggerRef.current)==null||c.focus(),a.current=!1,l.preventDefault()}),onInteractOutside:Ee(e.onInteractOutside,l=>{const c=l.detail.originalEvent,d=c.button===0&&c.ctrlKey===!0,E=c.button===2||d;(!o.modal||E)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});cR.displayName=lR;var yC="DropdownMenuGroup",_C=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(fC,{...o,...r,ref:t})});_C.displayName=yC;var DC="DropdownMenuLabel",dR=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(SC,{...o,...r,ref:t})});dR.displayName=DC;var MC="DropdownMenuItem",ER=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(RC,{...o,...r,ref:t})});ER.displayName=MC;var bC="DropdownMenuCheckboxItem",PC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(pC,{...o,...r,ref:t})});PC.displayName=bC;var vC="DropdownMenuRadioGroup",UC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(AC,{...o,...r,ref:t})});UC.displayName=vC;var wC="DropdownMenuRadioItem",BC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(hC,{...o,...r,ref:t})});BC.displayName=wC;var FC="DropdownMenuItemIndicator",GC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(IC,{...o,...r,ref:t})});GC.displayName=FC;var HC="DropdownMenuSeparator",uR=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(NC,{...o,...r,ref:t})});uR.displayName=HC;var kC="DropdownMenuArrow",jC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(OC,{...o,...r,ref:t})});jC.displayName=kC;var YC="DropdownMenuSubTrigger",WC=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(mC,{...o,...r,ref:t})});WC.displayName=YC;var VC="DropdownMenuSubContent",$C=S.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=We(n);return i.jsx(gC,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});$C.displayName=VC;var XC=aR,KC=cR,zC=dR,JC=ER,qC=uR;const QC=S.forwardRef(({container:e,style:t,sideOffset:n=4,...r},o)=>i.jsx(XC,{container:e,children:i.jsx(KC,{ref:o,sideOffset:n,style:{minWidth:180,background:Re("surfaceElevated"),color:Re("textPrimary"),border:`1px solid ${Re("borderDefault")}`,borderRadius:un.md,boxShadow:Re("shadowMd"),padding:Ne[1],zIndex:Qr.popover,...t},...r})}));QC.displayName="DropdownMenuContent";const ZC=S.forwardRef(({style:e,...t},n)=>i.jsx(JC,{ref:n,style:{display:"flex",alignItems:"center",gap:Ne[2],padding:`${Ne[1]} ${Ne[2]}`,fontSize:He.sm,borderRadius:un.sm,cursor:"default",outline:"none",userSelect:"none",...e},...t}));ZC.displayName="DropdownMenuItem";const ex=S.forwardRef(({style:e,...t},n)=>i.jsx(qC,{ref:n,style:{height:1,background:Re("borderSubtle"),margin:`${Ne[1]} 0`,...e},...t}));ex.displayName="DropdownMenuSeparator";const tx=S.forwardRef(({style:e,...t},n)=>i.jsx(zC,{ref:n,style:{padding:`${Ne[1]} ${Ne[2]}`,fontSize:He.xs,color:Re("textMuted"),textTransform:"uppercase",letterSpacing:"0.04em",...e},...t}));tx.displayName="DropdownMenuLabel";var TR="Popover",[fR]=Tn(TR,[Cr]),Bi=Cr(),[LV,fn]=fR(TR),SR="PopoverAnchor",nx=S.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=fn(SR,n),s=Bi(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=o;return S.useEffect(()=>(a(),()=>l()),[a,l]),i.jsx(yi,{...s,...r,ref:t})});nx.displayName=SR;var RR="PopoverTrigger",rx=S.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=fn(RR,n),s=Bi(n),a=_e(t,o.triggerRef),l=i.jsx(Ce.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":NR(o.open),...r,ref:a,onClick:Ee(e.onClick,o.onOpenToggle)});return o.hasCustomAnchor?l:i.jsx(yi,{asChild:!0,...s,children:l})});rx.displayName=RR;var Kc="PopoverPortal",[ox,sx]=fR(Kc,{forceMount:void 0}),pR=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,s=fn(Kc,t);return i.jsx(ox,{scope:t,forceMount:n,children:i.jsx(tt,{present:n||s.open,children:i.jsx(Oo,{asChild:!0,container:o,children:r})})})};pR.displayName=Kc;var ur="PopoverContent",AR=S.forwardRef((e,t)=>{const n=sx(ur,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,s=fn(ur,e.__scopePopover);return i.jsx(tt,{present:r||s.open,children:s.modal?i.jsx(ax,{...o,ref:t}):i.jsx(lx,{...o,ref:t})})});AR.displayName=ur;var ix=cr("PopoverContent.RemoveScroll"),ax=S.forwardRef((e,t)=>{const n=fn(ur,e.__scopePopover),r=S.useRef(null),o=_e(t,r),s=S.useRef(!1);return S.useEffect(()=>{const a=r.current;if(a)return wc(a)},[]),i.jsx(Pi,{as:ix,allowPinchZoom:!0,children:i.jsx(hR,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,a=>{var l;a.preventDefault(),s.current||(l=n.triggerRef.current)==null||l.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;s.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:Ee(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),lx=S.forwardRef((e,t)=>{const n=fn(ur,e.__scopePopover),r=S.useRef(!1),o=S.useRef(!1);return i.jsx(hR,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,l;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(l=n.triggerRef.current)==null||l.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var c,d;(c=e.onInteractOutside)==null||c.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((d=n.triggerRef.current)==null?void 0:d.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),hR=S.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:E,...u}=e,T=fn(ur,n),f=Bi(n);return Uc(),i.jsx(Mi,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(Io,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:E,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>T.onOpenChange(!1),children:i.jsx(Dc,{"data-state":NR(T.open),role:"dialog",id:T.contentId,...f,...u,ref:t,style:{...u.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),IR="PopoverClose",cx=S.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=fn(IR,n);return i.jsx(Ce.button,{type:"button",...r,ref:t,onClick:Ee(e.onClick,()=>o.onOpenChange(!1))})});cx.displayName=IR;var dx="PopoverArrow",Ex=S.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Bi(n);return i.jsx(Mc,{...o,...r,ref:t})});Ex.displayName=dx;function NR(e){return e?"open":"closed"}var ux=pR,Tx=AR;const fx=S.forwardRef(({container:e,style:t,sideOffset:n=6,...r},o)=>i.jsx(ux,{container:e,children:i.jsx(Tx,{ref:o,sideOffset:n,style:{background:Re("surfaceElevated"),color:Re("textPrimary"),border:`1px solid ${Re("borderDefault")}`,borderRadius:un.md,boxShadow:Re("shadowMd"),padding:Ne[3],zIndex:Qr.popover,minWidth:220,...t},...r})}));fx.displayName="PopoverContent";function Ft({icon:e,eyebrow:t,title:n,subtitle:r,status:o,actions:s,toolbar:a,bodyPadding:l=14,children:c}){return i.jsxs("div",{className:"panel-frame",children:[i.jsxs("div",{className:"panel-frame-header",children:[i.jsxs("div",{className:"panel-frame-heading",children:[e&&i.jsx("span",{className:"panel-frame-icon",children:e}),i.jsxs("div",{className:"panel-frame-title-col",children:[t&&i.jsx("div",{className:"panel-frame-eyebrow",children:t}),i.jsxs("div",{className:"panel-frame-title-row",children:[n&&i.jsx("h2",{className:"panel-frame-title",children:n}),o&&i.jsx("span",{className:"panel-frame-status",children:o})]}),r&&i.jsx("div",{className:"panel-frame-subtitle",children:r})]})]}),s&&i.jsx("div",{className:"panel-frame-actions",children:s})]}),a&&i.jsx("div",{className:"panel-frame-toolbar",children:a}),i.jsx("div",{className:"panel-frame-body",style:{padding:l},children:c})]})}function zc({tone:e="neutral",icon:t,children:n,className:r="",...o}){return i.jsxs("span",{className:`status-pill tone-${e} ${r}`,...o,children:[t&&i.jsx("span",{className:"status-pill-icon",children:t}),n]})}function vt({icon:e,title:t,description:n,action:r}){return i.jsxs("div",{className:"panel-empty",children:[e&&i.jsx("span",{className:"panel-empty-icon",children:e}),t&&i.jsx("p",{className:"panel-empty-title",children:t}),n&&i.jsx("p",{className:"panel-empty-desc",children:n}),r]})}function xo({left:e,right:t,children:n,className:r=""}){return i.jsxs("div",{className:`panel-toolbar ${r}`,children:[e&&i.jsx("div",{className:"panel-toolbar-left",children:e}),n&&i.jsx("div",{className:"panel-toolbar-center",children:n}),t&&i.jsx("div",{className:"panel-toolbar-right",children:t})]})}function Sx({options:e,value:t,onChange:n,size:r="md",ariaLabel:o}){const s=r==="sm"?"4px 10px":"6px 12px",a=r==="sm"?11:12;return i.jsx("div",{role:"tablist","aria-label":o,style:{display:"inline-flex",padding:2,gap:2,background:"var(--bg-2)",border:"1px solid var(--border-default)",borderRadius:8},children:e.map(l=>{const c=l.value===t;return i.jsxs("button",{role:"tab","aria-selected":c,disabled:l.disabled,onClick:()=>n(l.value),style:{display:"inline-flex",alignItems:"center",gap:6,padding:s,border:"none",borderRadius:6,background:c?"var(--bg-0)":"transparent",color:c?"var(--text-primary)":"var(--text-tertiary)",fontSize:a,fontWeight:c?600:500,cursor:l.disabled?"not-allowed":"pointer",opacity:l.disabled?.5:1,boxShadow:c?"0 1px 2px rgba(0,0,0,0.12)":"none",transition:"background 120ms var(--ease), color 120ms var(--ease)",whiteSpace:"nowrap"},children:[l.icon&&i.jsx("span",{style:{display:"inline-flex"},children:l.icon}),l.label]},l.value)})})}function mR({typeLabel:e,typeColor:t,accent:n,idleBorder:r,background:o,headerBackground:s,active:a=!1,title:l,status:c,actions:d,toolbar:E,subheader:u,footer:T,children:f,onMouseEnter:h,onMouseLeave:A,onClick:R,gutter:p,className:N,style:I}){const O=t??"var(--color-accent-blue, #388bfd)",C=n??r??"var(--color-border-subtle, rgba(148,163,184,0.18))",m=r??"var(--color-border-subtle, rgba(148,163,184,0.18))",g=o??"var(--color-bg-1, rgba(22,27,34,0.5))",y=s??"transparent";return i.jsxs("div",{onMouseEnter:h,onMouseLeave:A,onClick:R,className:N,style:{display:"flex",gap:0,marginBottom:2,...I},children:[p!==void 0&&p,i.jsxs("div",{style:{flex:1,minWidth:0,borderRadius:8,border:`1px solid ${a?C:m}`,background:g,overflow:"hidden",transition:"border-color 0.2s, box-shadow 0.2s",boxShadow:a?`0 0 0 3px ${O}14, 0 1px 2px rgba(0,0,0,0.04)`:"0 1px 2px rgba(0,0,0,0.02)"},children:[i.jsxs("div",{style:{minHeight:32,display:"flex",alignItems:"center",padding:"8px 14px",gap:8,background:y},children:[i.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:O,flexShrink:0}}),i.jsx("span",{style:{fontSize:11,fontWeight:500,letterSpacing:"0.2px",color:"var(--color-text-secondary, #4a4a52)",flexShrink:0,whiteSpace:"nowrap"},children:e}),l!==void 0&&i.jsxs(i.Fragment,{children:[i.jsx("span",{style:{color:"var(--color-text-tertiary, #8a8d96)",fontSize:11},children:"·"}),l]}),E!==void 0&&E,i.jsx("span",{style:{flex:1}}),c!==void 0&&c,d!==void 0&&d]}),u!==void 0&&u,f,T!==void 0&&T]})]})}function Rx({shortcut:e,children:t,style:n,...r}){return i.jsx("kbd",{...r,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",minWidth:18,height:18,padding:`0 ${Ne[1]}px`,borderRadius:un.sm,border:`1px solid ${Re("borderSubtle")}`,background:Re("surfaceRaised"),color:Re("textSecondary"),fontFamily:"var(--dql-font-mono, monospace)",fontSize:He.xs,fontWeight:Ic.medium,lineHeight:1,whiteSpace:"nowrap",...n},children:e??t})}const cE=e=>{let t;const n=new Set,r=(d,E)=>{const u=typeof d=="function"?d(t):d;if(!Object.is(u,t)){const T=t;t=E??(typeof u!="object"||u===null)?u:Object.assign({},t,u),n.forEach(f=>f(t,T))}},o=()=>t,l={setState:r,getState:o,getInitialState:()=>c,subscribe:d=>(n.add(d),()=>n.delete(d))},c=t=e(r,o,l);return l},px=(e=>e?cE(e):cE),Ax=e=>e;function hx(e,t=Ax){const n=ye.useSyncExternalStore(e.subscribe,ye.useCallback(()=>t(e.getState()),[e,t]),ye.useCallback(()=>t(e.getInitialState()),[e,t]));return ye.useDebugValue(n),n}const dE=e=>{const t=px(e),n=r=>hx(t,r);return Object.assign(n,t),n},Ix=(e=>e?dE(e):dE),EE=e=>Symbol.iterator in e,uE=e=>"entries"in e,TE=(e,t)=>{const n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(const[o,s]of n)if(!r.has(o)||!Object.is(s,r.get(o)))return!1;return!0},Nx=(e,t)=>{const n=e[Symbol.iterator](),r=t[Symbol.iterator]();let o=n.next(),s=r.next();for(;!o.done&&!s.done;){if(!Object.is(o.value,s.value))return!1;o=n.next(),s=r.next()}return!!o.done&&!!s.done};function Ox(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:EE(e)&&EE(t)?uE(e)&&uE(t)?TE(e,t):Nx(e,t):TE({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function mx(e){const t=ye.useRef(void 0);return n=>{const r=e(n);return Ox(t.current,r)?t.current:t.current=r}}function gx(){var t;return typeof window>"u"?"studio":((t=window.localStorage)==null?void 0:t.getItem("dql-app-mode"))==="app"?"app":"studio"}function Cx(){var t;if(typeof window>"u")return"paper";const e=(t=window.localStorage)==null?void 0:t.getItem("dql-theme");return e==="obsidian"||e==="paper"||e==="white"?e:e==="midnight"||e==="dark"?"obsidian":e==="arctic"?"white":"paper"}const xx={mainView:"notebook",themeMode:Cx(),appMode:gx(),sidebarPanel:"files",sidebarOpen:!0,files:[],filesLoading:!1,activeFile:null,cells:[],notebookTitle:"",notebookMetadata:{},notebookDirty:!1,schemaTables:[],schemaLoading:!1,semanticLayer:{available:!1,provider:null,metrics:[],dimensions:[],hierarchies:[],domains:[],tags:[],favorites:[],recentlyUsed:[],loading:!1,lastSyncTime:null},devPanelOpen:!1,devPanelTab:"logs",queryLog:[],newNotebookModalOpen:!1,newBlockModalOpen:!1,autoSave:!1,executionCounter:0,savingFile:!1,lineageFullscreen:!1,lineageFocusNodeId:null,lineageDrawerOpen:!1,lineageDrawerNodeId:null,dashboardMode:!1,activeBlockPath:null,blockStudioDraft:"",blockStudioDirty:!1,blockStudioPreview:null,blockStudioValidation:null,blockStudioMetadata:null,blockStudioCatalog:null,blockStudioCatalogLoading:!1,inspectorOpen:!1,inspectorContext:null};function Lx(e,t){var n,r,o,s;switch(t.type){case"SET_MAIN_VIEW":return{...e,mainView:t.view,lineageFullscreen:!1,lineageFocusNodeId:null};case"SET_THEME":{if(typeof document<"u"){const a=t.mode==="dark"||t.mode==="midnight"?"obsidian":t.mode==="light"?"paper":t.mode==="arctic"?"white":t.mode;document.documentElement.setAttribute("data-theme",a);try{(n=window.localStorage)==null||n.setItem("dql-theme",t.mode)}catch{}}return{...e,themeMode:t.mode}}case"SET_APP_MODE":{if(typeof window<"u")try{(r=window.localStorage)==null||r.setItem("dql-app-mode",t.mode)}catch{}return{...e,appMode:t.mode}}case"SET_SIDEBAR_PANEL":{const a=["connection","reference","git"],l=t.panel!==null&&a.includes(t.panel);return{...e,sidebarPanel:t.panel,sidebarOpen:t.panel!==null&&!l,lineageFullscreen:!1,lineageFocusNodeId:null,mainView:t.panel==="connection"?"connection":t.panel==="reference"?"reference":t.panel==="git"?"git":((o=e.activeFile)==null?void 0:o.type)==="block"?"block_studio":"notebook"}}case"TOGGLE_SIDEBAR":return{...e,sidebarOpen:!e.sidebarOpen};case"SET_FILES":return{...e,files:t.files};case"SET_FILES_LOADING":return{...e,filesLoading:t.loading};case"OPEN_FILE":return{...e,activeFile:t.file,cells:t.cells,notebookTitle:t.title,notebookMetadata:t.metadata??{},notebookDirty:!1,mainView:t.file.type==="block"?"block_studio":"notebook",activeBlockPath:t.file.type==="block"?t.file.path:null,blockStudioDraft:t.file.type==="block"?e.blockStudioDraft:"",blockStudioDirty:!1,blockStudioPreview:t.file.type==="block"?e.blockStudioPreview:null,blockStudioValidation:t.file.type==="block"?e.blockStudioValidation:null,blockStudioMetadata:t.file.type==="block"?e.blockStudioMetadata:null,lineageFullscreen:!1,lineageFocusNodeId:null};case"OPEN_BLOCK_STUDIO":return{...e,activeFile:t.file,cells:[],notebookTitle:t.payload.metadata.name,notebookDirty:!1,mainView:"block_studio",dashboardMode:!1,activeBlockPath:t.payload.path,blockStudioDraft:t.payload.source,blockStudioDirty:!1,blockStudioPreview:null,blockStudioValidation:t.payload.validation,blockStudioMetadata:t.payload.metadata,lineageFullscreen:!1,lineageFocusNodeId:(s=t.payload.metadata)!=null&&s.name?`block:${t.payload.metadata.name}`:null};case"SET_CELLS":return{...e,cells:t.cells,notebookDirty:!0};case"UPDATE_NOTEBOOK_METADATA":{const a=e.notebookMetadata;let l=!1;for(const c of Object.keys(t.updates))if(a[c]!==t.updates[c]){l=!0;break}return l?{...e,notebookMetadata:{...a,...t.updates},notebookDirty:!0}:e}case"ADD_CELL":{if(!t.afterId)return{...e,cells:[...e.cells,t.cell],notebookDirty:!0};const a=e.cells.findIndex(c=>c.id===t.afterId);if(a===-1)return{...e,cells:[...e.cells,t.cell],notebookDirty:!0};const l=[...e.cells];return l.splice(a+1,0,t.cell),{...e,cells:l,notebookDirty:!0}}case"UPDATE_CELL":{const a=e.cells.map(c=>c.id===t.id?{...c,...t.updates}:c),l=t.updates.executionCount!==void 0?e.executionCounter+1:e.executionCounter;return{...e,cells:a,notebookDirty:!0,executionCounter:l}}case"DELETE_CELL":return{...e,cells:e.cells.filter(a=>a.id!==t.id),notebookDirty:!0};case"MOVE_CELL":{const a=e.cells.findIndex(c=>c.id===t.id);if(a===-1)return e;const l=[...e.cells];return t.direction==="up"&&a>0?[l[a-1],l[a]]=[l[a],l[a-1]]:t.direction==="down"&&a<l.length-1&&([l[a],l[a+1]]=[l[a+1],l[a]]),{...e,cells:l,notebookDirty:!0}}case"REORDER_CELL":{const{fromIndex:a,toIndex:l}=t;if(a===l||a<0||l<0||a>=e.cells.length||l>=e.cells.length)return e;const c=[...e.cells],[d]=c.splice(a,1);return c.splice(l,0,d),{...e,cells:c,notebookDirty:!0}}case"SET_SCHEMA":return{...e,schemaTables:t.tables};case"SET_SCHEMA_LOADING":return{...e,schemaLoading:t.loading};case"TOGGLE_SCHEMA_TABLE":return{...e,schemaTables:e.schemaTables.map(a=>a.name===t.tableName?{...a,expanded:!a.expanded}:a)};case"TOGGLE_DEV_PANEL":return{...e,devPanelOpen:!e.devPanelOpen};case"SET_DEV_PANEL_TAB":return{...e,devPanelTab:t.tab};case"APPEND_QUERY_LOG":return{...e,queryLog:[...e.queryLog,t.entry]};case"OPEN_NEW_NOTEBOOK_MODAL":return{...e,newNotebookModalOpen:!0};case"CLOSE_NEW_NOTEBOOK_MODAL":return{...e,newNotebookModalOpen:!1};case"OPEN_NEW_BLOCK_MODAL":return{...e,newBlockModalOpen:!0};case"CLOSE_NEW_BLOCK_MODAL":return{...e,newBlockModalOpen:!1};case"SET_AUTO_SAVE":return{...e,autoSave:t.enabled};case"SET_NOTEBOOK_DIRTY":return{...e,notebookDirty:t.dirty};case"SET_SAVING":return{...e,savingFile:t.saving};case"FILE_ADDED":return{...e,files:[...e.files,t.file]};case"SET_TABLE_COLUMNS":return{...e,schemaTables:e.schemaTables.map(a=>a.name===t.tableName?{...a,columns:t.columns}:a)};case"SET_PARAM_VALUE":return{...e,cells:e.cells.map(a=>a.id===t.id?{...a,paramValue:t.value}:a),notebookDirty:!0};case"SET_SEMANTIC_LAYER":return{...e,semanticLayer:{...t.layer,loading:!1}};case"SET_SEMANTIC_LOADING":return{...e,semanticLayer:{...e.semanticLayer,loading:t.loading}};case"SET_SEMANTIC_FAVORITES":return{...e,semanticLayer:{...e.semanticLayer,favorites:t.favorites}};case"ADD_SEMANTIC_RECENT":{const a=[t.name,...e.semanticLayer.recentlyUsed.filter(l=>l!==t.name)].slice(0,12);return{...e,semanticLayer:{...e.semanticLayer,recentlyUsed:a}}}case"SET_SEMANTIC_DOMAINS":return{...e,semanticLayer:{...e.semanticLayer,domains:t.domains,tags:t.tags,lastSyncTime:t.lastSyncTime??e.semanticLayer.lastSyncTime}};case"TOGGLE_LINEAGE_FULLSCREEN":return{...e,lineageFullscreen:!e.lineageFullscreen};case"SET_LINEAGE_FOCUS":return{...e,lineageFocusNodeId:t.nodeId};case"OPEN_LINEAGE_DRAWER":return{...e,lineageDrawerOpen:!0,lineageDrawerNodeId:t.nodeId};case"CLOSE_LINEAGE_DRAWER":return{...e,lineageDrawerOpen:!1,lineageDrawerNodeId:null};case"TOGGLE_DASHBOARD_MODE":return{...e,dashboardMode:!e.dashboardMode};case"SET_BLOCK_STUDIO_DRAFT":return{...e,blockStudioDraft:t.draft,blockStudioDirty:!0};case"SET_BLOCK_STUDIO_DIRTY":return{...e,blockStudioDirty:t.dirty};case"SET_BLOCK_STUDIO_PREVIEW":return{...e,blockStudioPreview:t.preview};case"SET_BLOCK_STUDIO_VALIDATION":return{...e,blockStudioValidation:t.validation};case"SET_BLOCK_STUDIO_METADATA":return{...e,blockStudioMetadata:t.metadata,notebookTitle:t.metadata.name,blockStudioDirty:!0};case"SET_BLOCK_STUDIO_CATALOG":return{...e,blockStudioCatalog:t.catalog};case"SET_BLOCK_STUDIO_CATALOG_LOADING":return{...e,blockStudioCatalogLoading:t.loading};case"TOGGLE_INSPECTOR":return{...e,inspectorOpen:!e.inspectorOpen};case"SET_INSPECTOR":return{...e,inspectorOpen:t.open,inspectorContext:t.context===void 0?e.inspectorContext:t.context};case"SET_INSPECTOR_CONTEXT":return{...e,inspectorContext:t.context,inspectorOpen:t.context!==null?!0:e.inspectorOpen};default:return e}}const $l=Ix((e,t)=>({...xx,dispatch:n=>{const r=Lx(t(),n);e(r)}})),yx=S.createContext(null);function _x({children:e}){return ye.useEffect(()=>{const t=n=>{if(n.key!=="dql-theme"||!n.newValue)return;const r=n.newValue;(r==="obsidian"||r==="paper"||r==="white"||r==="midnight"||r==="arctic"||r==="dark"||r==="light")&&$l.getState().dispatch({type:"SET_THEME",mode:r})};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]),i.jsx(i.Fragment,{children:e})}function fe(){const e=$l(mx(r=>{const{dispatch:o,...s}=r;return s})),t=$l(r=>r.dispatch);return S.useContext(yx)??{state:e,dispatch:t}}function bt(){return`cell_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Ke(e,t=""){const n={id:bt(),type:e,content:t,status:"idle"};return e==="param"&&(n.content="",n.paramConfig={paramType:"text",label:"Parameter",defaultValue:"",options:[]}),e==="chart"&&(n.chartConfig={chart:"bar"}),e==="filter"&&(n.filterConfig={mode:"keep",groups:[{id:`g_${Math.random().toString(36).slice(2,8)}`,combinator:"and",rules:[]}]}),e==="pivot"&&(n.pivotConfig={rows:[],columns:[],values:[]}),e==="single_value"&&(n.singleValueConfig={aggregation:"count",format:"number"}),e==="table"&&(n.tableConfig={}),e==="chat"&&(n.chatConfig={provider:"claude-agent-sdk",history:[]}),n}/**
54
- * @license lucide-react v0.563.0 - ISC
55
- *
56
- * This source code is licensed under the ISC license.
57
- * See the LICENSE file in the root directory of this source tree.
58
- */const gR=(...e)=>e.filter((t,n,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===n).join(" ").trim();/**
59
- * @license lucide-react v0.563.0 - ISC
60
- *
61
- * This source code is licensed under the ISC license.
62
- * See the LICENSE file in the root directory of this source tree.
63
- */const Dx=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
64
- * @license lucide-react v0.563.0 - ISC
65
- *
66
- * This source code is licensed under the ISC license.
67
- * See the LICENSE file in the root directory of this source tree.
68
- */const Mx=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,r)=>r?r.toUpperCase():n.toLowerCase());/**
69
- * @license lucide-react v0.563.0 - ISC
70
- *
71
- * This source code is licensed under the ISC license.
72
- * See the LICENSE file in the root directory of this source tree.
73
- */const fE=e=>{const t=Mx(e);return t.charAt(0).toUpperCase()+t.slice(1)};/**
74
- * @license lucide-react v0.563.0 - ISC
75
- *
76
- * This source code is licensed under the ISC license.
77
- * See the LICENSE file in the root directory of this source tree.
78
- */var bx={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
79
- * @license lucide-react v0.563.0 - ISC
80
- *
81
- * This source code is licensed under the ISC license.
82
- * See the LICENSE file in the root directory of this source tree.
83
- */const Px=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1};/**
84
- * @license lucide-react v0.563.0 - ISC
85
- *
86
- * This source code is licensed under the ISC license.
87
- * See the LICENSE file in the root directory of this source tree.
88
- */const vx=S.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:o="",children:s,iconNode:a,...l},c)=>S.createElement("svg",{ref:c,...bx,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:gR("lucide",o),...!s&&!Px(l)&&{"aria-hidden":"true"},...l},[...a.map(([d,E])=>S.createElement(d,E)),...Array.isArray(s)?s:[s]]));/**
89
- * @license lucide-react v0.563.0 - ISC
90
- *
91
- * This source code is licensed under the ISC license.
92
- * See the LICENSE file in the root directory of this source tree.
93
- */const Se=(e,t)=>{const n=S.forwardRef(({className:r,...o},s)=>S.createElement(vx,{ref:s,iconNode:t,className:gR(`lucide-${Dx(fE(e))}`,`lucide-${e}`,r),...o}));return n.displayName=fE(e),n};/**
94
- * @license lucide-react v0.563.0 - ISC
95
- *
96
- * This source code is licensed under the ISC license.
97
- * See the LICENSE file in the root directory of this source tree.
98
- */const Ux=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],wx=Se("activity",Ux);/**
99
- * @license lucide-react v0.563.0 - ISC
100
- *
101
- * This source code is licensed under the ISC license.
102
- * See the LICENSE file in the root directory of this source tree.
103
- */const Bx=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],CR=Se("arrow-down",Bx);/**
104
- * @license lucide-react v0.563.0 - ISC
105
- *
106
- * This source code is licensed under the ISC license.
107
- * See the LICENSE file in the root directory of this source tree.
108
- */const Fx=[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]],Gx=Se("arrow-right-left",Fx);/**
109
- * @license lucide-react v0.563.0 - ISC
110
- *
111
- * This source code is licensed under the ISC license.
112
- * See the LICENSE file in the root directory of this source tree.
113
- */const Hx=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],xR=Se("arrow-up",Hx);/**
114
- * @license lucide-react v0.563.0 - ISC
115
- *
116
- * This source code is licensed under the ISC license.
117
- * See the LICENSE file in the root directory of this source tree.
118
- */const kx=[["path",{d:"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2",key:"1ah6g2"}],["rect",{x:"14",y:"2",width:"8",height:"8",rx:"1",key:"88lufb"}]],jx=Se("blocks",kx);/**
119
- * @license lucide-react v0.563.0 - ISC
120
- *
121
- * This source code is licensed under the ISC license.
122
- * See the LICENSE file in the root directory of this source tree.
123
- */const Yx=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],LR=Se("book-open",Yx);/**
124
- * @license lucide-react v0.563.0 - ISC
125
- *
126
- * This source code is licensed under the ISC license.
127
- * See the LICENSE file in the root directory of this source tree.
128
- */const Wx=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Vx=Se("check",Wx);/**
129
- * @license lucide-react v0.563.0 - ISC
130
- *
131
- * This source code is licensed under the ISC license.
132
- * See the LICENSE file in the root directory of this source tree.
133
- */const $x=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],Xx=Se("chevron-down",$x);/**
134
- * @license lucide-react v0.563.0 - ISC
135
- *
136
- * This source code is licensed under the ISC license.
137
- * See the LICENSE file in the root directory of this source tree.
138
- */const Kx=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],zx=Se("chevrons-left",Kx);/**
139
- * @license lucide-react v0.563.0 - ISC
140
- *
141
- * This source code is licensed under the ISC license.
142
- * See the LICENSE file in the root directory of this source tree.
143
- */const Jx=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],qx=Se("chevrons-right",Jx);/**
144
- * @license lucide-react v0.563.0 - ISC
145
- *
146
- * This source code is licensed under the ISC license.
147
- * See the LICENSE file in the root directory of this source tree.
148
- */const Qx=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Zx=Se("circle-question-mark",Qx);/**
149
- * @license lucide-react v0.563.0 - ISC
150
- *
151
- * This source code is licensed under the ISC license.
152
- * See the LICENSE file in the root directory of this source tree.
153
- */const eL=[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]],tL=Se("command",eL);/**
154
- * @license lucide-react v0.563.0 - ISC
155
- *
156
- * This source code is licensed under the ISC license.
157
- * See the LICENSE file in the root directory of this source tree.
158
- */const nL=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],yR=Se("database",nL);/**
159
- * @license lucide-react v0.563.0 - ISC
160
- *
161
- * This source code is licensed under the ISC license.
162
- * See the LICENSE file in the root directory of this source tree.
163
- */const rL=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],oL=Se("external-link",rL);/**
164
- * @license lucide-react v0.563.0 - ISC
165
- *
166
- * This source code is licensed under the ISC license.
167
- * See the LICENSE file in the root directory of this source tree.
168
- */const sL=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],iL=Se("eye-off",sL);/**
169
- * @license lucide-react v0.563.0 - ISC
170
- *
171
- * This source code is licensed under the ISC license.
172
- * See the LICENSE file in the root directory of this source tree.
173
- */const aL=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],SE=Se("eye",aL);/**
174
- * @license lucide-react v0.563.0 - ISC
175
- *
176
- * This source code is licensed under the ISC license.
177
- * See the LICENSE file in the root directory of this source tree.
178
- */const lL=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m9 15 2 2 4-4",key:"1grp1n"}]],cL=Se("file-check",lL);/**
179
- * @license lucide-react v0.563.0 - ISC
180
- *
181
- * This source code is licensed under the ISC license.
182
- * See the LICENSE file in the root directory of this source tree.
183
- */const dL=[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34",key:"o6klzx"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z",key:"zhnas1"}]],EL=Se("file-pen",dL);/**
184
- * @license lucide-react v0.563.0 - ISC
185
- *
186
- * This source code is licensed under the ISC license.
187
- * See the LICENSE file in the root directory of this source tree.
188
- */const uL=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]],_R=Se("file-plus",uL);/**
189
- * @license lucide-react v0.563.0 - ISC
190
- *
191
- * This source code is licensed under the ISC license.
192
- * See the LICENSE file in the root directory of this source tree.
193
- */const TL=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]],fL=Se("file-question-mark",TL);/**
194
- * @license lucide-react v0.563.0 - ISC
195
- *
196
- * This source code is licensed under the ISC license.
197
- * See the LICENSE file in the root directory of this source tree.
198
- */const SL=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],RL=Se("file-text",SL);/**
199
- * @license lucide-react v0.563.0 - ISC
200
- *
201
- * This source code is licensed under the ISC license.
202
- * See the LICENSE file in the root directory of this source tree.
203
- */const pL=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m14.5 12.5-5 5",key:"b62r18"}],["path",{d:"m9.5 12.5 5 5",key:"1rk7el"}]],AL=Se("file-x",pL);/**
204
- * @license lucide-react v0.563.0 - ISC
205
- *
206
- * This source code is licensed under the ISC license.
207
- * See the LICENSE file in the root directory of this source tree.
208
- */const hL=[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]],DR=Se("files",hL);/**
209
- * @license lucide-react v0.563.0 - ISC
210
- *
211
- * This source code is licensed under the ISC license.
212
- * See the LICENSE file in the root directory of this source tree.
213
- */const IL=[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]],xr=Se("git-branch",IL);/**
214
- * @license lucide-react v0.563.0 - ISC
215
- *
216
- * This source code is licensed under the ISC license.
217
- * See the LICENSE file in the root directory of this source tree.
218
- */const NL=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]],MR=Se("git-commit-horizontal",NL);/**
219
- * @license lucide-react v0.563.0 - ISC
220
- *
221
- * This source code is licensed under the ISC license.
222
- * See the LICENSE file in the root directory of this source tree.
223
- */const OL=[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]],mL=Se("git-fork",OL);/**
224
- * @license lucide-react v0.563.0 - ISC
225
- *
226
- * This source code is licensed under the ISC license.
227
- * See the LICENSE file in the root directory of this source tree.
228
- */const gL=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],CL=Se("layout-dashboard",gL);/**
229
- * @license lucide-react v0.563.0 - ISC
230
- *
231
- * This source code is licensed under the ISC license.
232
- * See the LICENSE file in the root directory of this source tree.
233
- */const xL=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],LL=Se("maximize-2",xL);/**
234
- * @license lucide-react v0.563.0 - ISC
235
- *
236
- * This source code is licensed under the ISC license.
237
- * See the LICENSE file in the root directory of this source tree.
238
- */const yL=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],_L=Se("network",yL);/**
239
- * @license lucide-react v0.563.0 - ISC
240
- *
241
- * This source code is licensed under the ISC license.
242
- * See the LICENSE file in the root directory of this source tree.
243
- */const DL=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],ML=Se("package",DL);/**
244
- * @license lucide-react v0.563.0 - ISC
245
- *
246
- * This source code is licensed under the ISC license.
247
- * See the LICENSE file in the root directory of this source tree.
248
- */const bL=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],PL=Se("palette",bL);/**
249
- * @license lucide-react v0.563.0 - ISC
250
- *
251
- * This source code is licensed under the ISC license.
252
- * See the LICENSE file in the root directory of this source tree.
253
- */const vL=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]],UL=Se("panel-left",vL);/**
254
- * @license lucide-react v0.563.0 - ISC
255
- *
256
- * This source code is licensed under the ISC license.
257
- * See the LICENSE file in the root directory of this source tree.
258
- */const wL=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],bR=Se("plug",wL);/**
259
- * @license lucide-react v0.563.0 - ISC
260
- *
261
- * This source code is licensed under the ISC license.
262
- * See the LICENSE file in the root directory of this source tree.
263
- */const BL=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],FL=Se("plus",BL);/**
264
- * @license lucide-react v0.563.0 - ISC
265
- *
266
- * This source code is licensed under the ISC license.
267
- * See the LICENSE file in the root directory of this source tree.
268
- */const GL=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],PR=Se("refresh-cw",GL);/**
269
- * @license lucide-react v0.563.0 - ISC
270
- *
271
- * This source code is licensed under the ISC license.
272
- * See the LICENSE file in the root directory of this source tree.
273
- */const HL=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],kL=Se("search",HL);/**
274
- * @license lucide-react v0.563.0 - ISC
275
- *
276
- * This source code is licensed under the ISC license.
277
- * See the LICENSE file in the root directory of this source tree.
278
- */const jL=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],YL=Se("settings",jL);/**
279
- * @license lucide-react v0.563.0 - ISC
280
- *
281
- * This source code is licensed under the ISC license.
282
- * See the LICENSE file in the root directory of this source tree.
283
- */const WL=[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M21 14v1",key:"169vum"}]],VL=Se("square-dashed",WL);/**
284
- * @license lucide-react v0.563.0 - ISC
285
- *
286
- * This source code is licensed under the ISC license.
287
- * See the LICENSE file in the root directory of this source tree.
288
- */const $L=[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]],XL=Se("table",$L);/**
289
- * @license lucide-react v0.563.0 - ISC
290
- *
291
- * This source code is licensed under the ISC license.
292
- * See the LICENSE file in the root directory of this source tree.
293
- */const KL=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],zL=Se("terminal",KL);/**
294
- * @license lucide-react v0.563.0 - ISC
295
- *
296
- * This source code is licensed under the ISC license.
297
- * See the LICENSE file in the root directory of this source tree.
298
- */const JL=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],qL=Se("wrench",JL);/**
299
- * @license lucide-react v0.563.0 - ISC
300
- *
301
- * This source code is licensed under the ISC license.
302
- * See the LICENSE file in the root directory of this source tree.
303
- */const QL=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],vR=Se("x",QL);function ZL(e,t){if(!t)return 1;const n=(e.label+" "+e.group+" "+(e.keywords||"")).toLowerCase(),r=t.toLowerCase();if(n.includes(r))return 100-n.indexOf(r);let o=0;for(const s of n)if(s===r[o]&&o++,o===r.length)return 10;return 0}function ey(e,t){const n=e.mode??"both";return n==="both"||n===t}function ty({open:e,onClose:t}){const{state:n,dispatch:r}=fe(),[o,s]=S.useState(""),[a,l]=S.useState(0),c=S.useRef(null);S.useEffect(()=>{e&&(s(""),l(0))},[e]);const d=S.useMemo(()=>{const f=m=>r(m),h=()=>t(),A=m=>()=>{m(),h()},R=[["Files","files",DR],["Schema","schema",yR],["Lineage","lineage",mL],["Git","git",xr],["Block Library","block_library",jx],["Apps","apps",_L],["Connections","connection",bR],["Reference","reference",LR]],p=[{mode:"obsidian",label:"Obsidian"},{mode:"paper",label:"Paper"},{mode:"white",label:"White"}],N=[],I=n.appMode==="studio"?"app":n.appMode==="app"?"reader":"studio",O=I==="studio"?"Switch to Notebook":I==="app"?"Switch to App":"Switch to Reader";N.push({id:"mode.toggle",label:O,group:"Mode",icon:n.appMode==="studio"?SE:qL,keywords:"studio notebook app reader preview publish read-only editor",shortcut:"⌘⇧M",run:A(()=>f({type:"SET_APP_MODE",mode:I}))}),N.push({id:"sidebar.toggle",label:n.sidebarOpen?"Hide sidebar":"Show sidebar",group:"View",icon:UL,shortcut:"⌘B",mode:"studio",run:A(()=>f({type:"TOGGLE_SIDEBAR"}))},{id:"inspector.toggle",label:n.inspectorOpen?"Hide inspector":"Show inspector",group:"View",icon:n.inspectorOpen?iL:SE,shortcut:"⌘⇧I",mode:"studio",run:A(()=>f({type:"TOGGLE_INSPECTOR"}))},{id:"dashboard.toggle",label:n.dashboardMode?"Exit dashboard mode":"Enter dashboard mode",group:"View",icon:CL,shortcut:"⌘D",run:A(()=>f({type:"TOGGLE_DASHBOARD_MODE"}))},{id:"dev.toggle",label:"Toggle dev panel",group:"View",icon:zL,shortcut:"⌘J",mode:"studio",run:A(()=>f({type:"TOGGLE_DEV_PANEL"}))},{id:"lineage.fullscreen",label:n.lineageFullscreen?"Exit full-screen lineage":"Open full-screen lineage",group:"Lineage",icon:wx,keywords:"graph dag",run:A(()=>f({type:"TOGGLE_LINEAGE_FULLSCREEN"}))});for(const[m,g,y]of R)N.push({id:`panel.${g}`,label:`Go to ${m}`,group:"Navigate",icon:y,mode:"studio",run:A(()=>{f({type:"SET_SIDEBAR_PANEL",panel:g}),n.sidebarOpen||f({type:"TOGGLE_SIDEBAR"})})});N.push({id:"notebook.new",label:"New notebook…",group:"Create",icon:_R,mode:"studio",run:A(()=>f({type:"OPEN_NEW_NOTEBOOK_MODAL"}))},{id:"block.new",label:"New block…",group:"Create",icon:VL,mode:"studio",run:A(()=>f({type:"OPEN_NEW_BLOCK_MODAL"}))});const C=n.themeMode==="dark"||n.themeMode==="midnight"?"obsidian":n.themeMode==="light"?"paper":n.themeMode==="arctic"?"white":n.themeMode;for(const m of p)m.mode!==C&&N.push({id:`theme.${m.mode}`,label:`Switch to ${m.label}`,group:"Theme",icon:PL,keywords:"appearance color",run:A(()=>f({type:"SET_THEME",mode:m.mode}))});return N},[n.sidebarOpen,n.inspectorOpen,n.themeMode,n.dashboardMode,n.lineageFullscreen,n.appMode,n.sidebarPanel,r,t]),E=S.useMemo(()=>{const h=d.filter(A=>ey(A,n.appMode)).map(A=>({a:A,s:ZL(A,o)})).filter(A=>A.s>0);return h.sort((A,R)=>R.s-A.s),h.map(A=>A.a)},[d,o,n.appMode]);S.useEffect(()=>{l(0)},[o]),S.useEffect(()=>{var h;const f=(h=c.current)==null?void 0:h.querySelector(`[data-palette-idx="${a}"]`);f==null||f.scrollIntoView({block:"nearest"})},[a]);const u=f=>{var h;f.key==="ArrowDown"?(f.preventDefault(),l(A=>Math.min(E.length-1,A+1))):f.key==="ArrowUp"?(f.preventDefault(),l(A=>Math.max(0,A-1))):f.key==="Enter"&&(f.preventDefault(),(h=E[a])==null||h.run())};let T="";return i.jsx(Ig,{open:e,onOpenChange:f=>!f&&t(),children:i.jsxs(Ng,{children:[i.jsx(Og,{style:{position:"fixed",inset:0,background:Re("surfaceOverlay"),zIndex:Qr.overlay}}),i.jsxs(mg,{"aria-label":"Command palette",style:{position:"fixed",top:"18vh",left:"50%",transform:"translateX(-50%)",width:"92vw",maxWidth:620,background:Re("surfaceRaised"),color:Re("textPrimary"),border:`1px solid ${Re("borderDefault")}`,borderRadius:un.lg,boxShadow:Re("shadowLg"),zIndex:Qr.modal,display:"flex",flexDirection:"column",overflow:"hidden"},onKeyDown:u,children:[i.jsx(gg,{style:{position:"absolute",left:-9999},children:"Command palette"}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:Ne[2],padding:`${Ne[3]}px ${Ne[4]}px`,borderBottom:`1px solid ${Re("borderSubtle")}`},children:[i.jsx(tL,{size:14,strokeWidth:1.75,color:Re("textMuted")}),i.jsx("input",{autoFocus:!0,value:o,onChange:f=>s(f.target.value),placeholder:"Type a command…",style:{flex:1,border:"none",outline:"none",background:"transparent",color:Re("textPrimary"),fontSize:He.md}})]}),i.jsxs("div",{ref:c,style:{maxHeight:360,overflowY:"auto",padding:`${Ne[1]}px 0`},children:[E.length===0&&i.jsx("div",{style:{padding:Ne[4],fontSize:He.sm,color:Re("textMuted"),textAlign:"center"},children:"No matching commands"}),E.map((f,h)=>{const A=f.group!==T;T=f.group;const R=h===a,p=f.icon;return i.jsxs(ye.Fragment,{children:[A&&i.jsx("div",{style:{padding:`${Ne[2]}px ${Ne[4]}px ${Ne[1]}px`},children:i.jsx(zc,{tone:"neutral",children:f.group})}),i.jsxs("div",{"data-palette-idx":h,role:"option","aria-selected":R,onMouseEnter:()=>l(h),onMouseDown:N=>{N.preventDefault(),f.run()},style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:Ne[3],padding:`${Ne[2]}px ${Ne[4]}px`,fontSize:He.sm,cursor:"pointer",background:R?Re("surfaceHover"):"transparent",color:Re("textPrimary")},children:[i.jsxs("span",{style:{display:"flex",alignItems:"center",gap:Ne[2],minWidth:0,flex:1},children:[p&&i.jsx(p,{size:14,strokeWidth:1.75}),i.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f.label})]}),f.shortcut&&i.jsx(Rx,{shortcut:f.shortcut})]})]},f.id)})]})]})]})})}const UR=window.location.origin;async function te(e,t){const n=await fetch(`${UR}${e}`,{headers:{"Content-Type":"application/json"},...t});if(!n.ok){const r=await n.text().catch(()=>n.statusText);throw new Error(r||`HTTP ${n.status}`)}if(n.status!==204)return n.json()}const J={async listNotebooks(){try{return await te("/api/notebooks")}catch{return[]}},async readNotebook(e){return te(`/api/notebook-content?path=${encodeURIComponent(e)}`)},async createNotebook(e,t){return te("/api/notebooks",{method:"POST",body:JSON.stringify({name:e,template:t})})},async createBlock(e){return te("/api/blocks",{method:"POST",body:JSON.stringify({name:e})})},async getBlockLibrary(){try{return await te("/api/blocks/library")}catch{return{blocks:[]}}},async getApps(){try{return await te("/api/apps")}catch{return{apps:[]}}},async updateBlockStatus(e,t){return te("/api/blocks/status",{method:"POST",body:JSON.stringify({path:e,newStatus:t})})},async getBlockHistory(e){try{return await te(`/api/blocks/history?path=${encodeURIComponent(e)}`)}catch{return{entries:[]}}},async runBlockTests(e,t){return te("/api/blocks/run-tests",{method:"POST",body:JSON.stringify({source:e,path:t})})},async getBlockStudioCatalog(){return te("/api/block-studio/catalog")},async openBlockStudio(e){return te(`/api/block-studio/open?path=${encodeURIComponent(e)}`)},async getBlockBody(e){return te(`/api/blocks/body?path=${encodeURIComponent(e)}`)},async validateBlockStudio(e,t){return te("/api/block-studio/validate",{method:"POST",body:JSON.stringify({source:e,path:t})})},async runBlockStudio(e,t){return te("/api/block-studio/run",{method:"POST",body:JSON.stringify({source:e,path:t})})},async saveBlockStudio(e){return te("/api/block-studio/save",{method:"POST",body:JSON.stringify(e)})},async saveAsBlock(e){return te("/api/blocks/save-from-cell",{method:"POST",body:JSON.stringify(e)})},async getBlockTemplates(){try{return(await te("/api/blocks/templates")).templates}catch{return[]}},async listBlocks(e){try{return(await te("/api/notebooks")).filter(n=>n.type==="block"&&(!e||n.path.startsWith(`blocks/${e}/`)))}catch{return[]}},async saveNotebook(e,t){return te("/api/notebook-content",{method:"PUT",body:JSON.stringify({path:e,content:t})})},async executeQuery(e,t){var s;const n=await te("/api/query",{method:"POST",body:JSON.stringify({sql:e}),signal:t}),r=Array.isArray(n==null?void 0:n.columns)?n.columns.map(a=>typeof a=="string"?a:typeof(a==null?void 0:a.name)=="string"?a.name:String(a)):[],o=n!=null&&n.semanticRefs&&typeof n.semanticRefs=="object"?{metrics:Array.isArray(n.semanticRefs.metrics)?n.semanticRefs.metrics.map(String):[],dimensions:Array.isArray(n.semanticRefs.dimensions)?n.semanticRefs.dimensions.map(String):[]}:void 0;return{columns:r,rows:Array.isArray(n==null?void 0:n.rows)?n.rows:[],rowCount:(n==null?void 0:n.rowCount)??((s=n==null?void 0:n.rows)==null?void 0:s.length)??0,executionTime:(n==null?void 0:n.executionTime)??(n==null?void 0:n.executionTimeMs)??0,...o?{semanticRefs:o}:{}}},async getSchema(){try{const e=await fetch(`${UR}/api/schema`);if(e.ok)return await e.json();const t=await e.json().catch(()=>null);return t!=null&&t.error&&console.warn(`[dql] schema introspection failed: ${t.error}`),(t==null?void 0:t.fallback)??[]}catch(e){return console.warn("[dql] getSchema request failed",e),[]}},async getConnections(){try{return await te("/api/connections")}catch{return{default:"unknown",connections:{}}}},async saveConnections(e){return te("/api/connections",{method:"PUT",body:JSON.stringify({connections:e})})},async testConnection(){try{return await te("/api/test-connection",{method:"POST",body:JSON.stringify({})})}catch(e){return{ok:!1,message:e.message??"Connection failed"}}},async getSemanticLayer(){try{return await te("/api/semantic-layer")}catch{return{available:!1,provider:null,metrics:[],dimensions:[],hierarchies:[],domains:[],tags:[],favorites:[],recentlyUsed:[],lastSyncTime:null}}},async getSemanticTree(){return(await te("/api/semantic-layer/tree")).tree},async getSemanticObject(e){return te(`/api/semantic-layer/object/${encodeURIComponent(e)}`)},async importSemanticLayer(e){return te("/api/semantic-layer/import",{method:"POST",body:JSON.stringify(e)})},async syncSemanticLayer(){return te("/api/semantic-layer/sync",{method:"POST",body:JSON.stringify({})})},async previewSemanticImport(e){return te("/api/semantic-layer/import-preview",{method:"POST",body:JSON.stringify(e)})},async previewSyncDiff(){return te("/api/semantic-layer/sync-preview",{method:"POST",body:JSON.stringify({})})},async searchSemanticLayer(e){const t=new URLSearchParams;e.query&&t.set("q",e.query),e.domain&&t.set("domain",e.domain),e.tag&&t.set("tag",e.tag),e.type&&t.set("type",e.type);try{return await te(`/api/semantic-layer/search?${t.toString()}`)}catch{return{metrics:[],dimensions:[],hierarchies:[]}}},async getFavorites(){try{return(await te("/api/user-prefs/favorites")).favorites}catch{return[]}},async toggleFavorite(e){return(await te("/api/user-prefs/favorites",{method:"POST",body:JSON.stringify({name:e})})).favorites},async getRecentlyUsed(){try{return(await te("/api/user-prefs/recent")).recentlyUsed}catch{return[]}},async trackUsage(e){try{return(await te("/api/user-prefs/recent",{method:"POST",body:JSON.stringify({name:e})})).recentlyUsed}catch{return[]}},async getCompatibleDimensions(e){const t=new URLSearchParams;e.length>0&&t.set("metrics",e.join(","));try{return(await te(`/api/semantic-layer/compatible-dims?${t.toString()}`)).dimensions}catch{return[]}},async composeQuery(e,t,n){try{return await te("/api/semantic-query",{method:"POST",body:JSON.stringify({metrics:e,dimensions:t,timeDimension:n})})}catch(r){return{error:r.message??"Failed to compose query"}}},async previewSemanticBuilder(e){try{return await te("/api/semantic-builder/preview",{method:"POST",body:JSON.stringify(e)})}catch(t){return{error:t.message??"Failed to preview semantic block"}}},async saveSemanticBuilder(e){return te("/api/semantic-builder/save",{method:"POST",body:JSON.stringify(e)})},async createMetric(e){try{return await te("/api/semantic-layer/metric",{method:"POST",body:JSON.stringify(e)})}catch(t){return{ok:!1,error:t.message??"Failed to create metric"}}},async describeTable(e){const t=e.split("."),n=t.length>1?t[t.length-1]:e,r=t.length>1?t.slice(0,-1).join("."):"",o=new URLSearchParams({table:n});r&&o.set("schema",r);try{return await te(`/api/describe-table?${o.toString()}`)}catch{return[]}},async fetchLineage(){try{return await te("/api/lineage")}catch{return{nodes:[],edges:[]}}},async searchLineage(e){try{return await te(`/api/lineage/search?q=${encodeURIComponent(e)}`)}catch{return{matches:[]}}},async queryLineage(e){var n;const t=new URLSearchParams;e.focus&&t.set("focus",e.focus),e.search&&t.set("search",e.search),(n=e.types)!=null&&n.length&&t.set("types",e.types.join(",")),e.domain&&t.set("domain",e.domain),e.upstreamDepth!==void 0&&t.set("upstreamDepth",String(e.upstreamDepth)),e.downstreamDepth!==void 0&&t.set("downstreamDepth",String(e.downstreamDepth));try{return await te(`/api/lineage/query?${t.toString()}`)}catch{return{graph:{nodes:[],edges:[]},matches:[]}}},async fetchLineageNode(e){try{return await te(`/api/lineage/node/${encodeURIComponent(e)}`)}catch{return null}},async fetchBlockLineage(e){try{return await te(`/api/lineage/block/${encodeURIComponent(e)}`)}catch{return null}},async fetchImpactAnalysis(e){try{return await te(`/api/lineage/impact/${encodeURIComponent(e)}`)}catch{return null}},async fetchLineagePaths(e,t){try{const n=new URLSearchParams;t!=null&&t.maxDepth&&n.set("maxDepth",String(t.maxDepth)),t!=null&&t.maxPaths&&n.set("maxPaths",String(t.maxPaths));const r=n.toString(),o=`/api/lineage/paths/${encodeURIComponent(e)}${r?`?${r}`:""}`;return await te(o)}catch{return null}},async fetchGitStatus(){try{return await te("/api/git/status")}catch{return{inRepo:!1,branch:null,ahead:0,behind:0,changes:[]}}},async fetchGitLog(e=20){try{return await te(`/api/git/log?limit=${e}`)}catch{return{inRepo:!1,commits:[]}}},async fetchRunSnapshot(e){try{return await te(`/api/run-snapshot?path=${encodeURIComponent(e)}`)}catch{return{found:!1,snapshot:null}}},async saveRunSnapshot(e,t){await te("/api/run-snapshot",{method:"PUT",body:JSON.stringify({path:e,snapshot:t})})},async fetchGitDiff(e,t){try{const n=new URLSearchParams;e&&n.set("path",e),t&&n.set("staged","true");const r=n.toString();return await te(`/api/git/diff${r?`?${r}`:""}`)}catch{return{inRepo:!1,diff:"",before:null,after:null,diffReport:null}}},async fetchGitBranches(){try{return await te("/api/git/branches")}catch{return{inRepo:!1,current:null,branches:[]}}},async fetchGitRemote(){try{return await te("/api/git/remote")}catch{return{inRepo:!1,url:null,name:null}}},async gitStage(e){try{return await te("/api/git/stage",{method:"POST",body:JSON.stringify({paths:e})})}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}},async gitUnstage(e){try{return await te("/api/git/unstage",{method:"POST",body:JSON.stringify({paths:e})})}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}},async gitDiscard(e){try{return await te("/api/git/discard",{method:"POST",body:JSON.stringify({paths:e})})}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}},async gitCommit(e,t=!1){try{return await te("/api/git/commit",{method:"POST",body:JSON.stringify({message:e,stageAll:t})})}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}},async gitPush(){try{return await te("/api/git/push",{method:"POST",body:"{}"})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},async gitPull(){try{return await te("/api/git/pull",{method:"POST",body:"{}"})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},async gitCreateBranch(e,t=!0){try{return await te("/api/git/branch",{method:"POST",body:JSON.stringify({name:e,checkout:t})})}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}},async gitCheckout(e){try{return await te("/api/git/checkout",{method:"POST",body:JSON.stringify({name:e})})}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}}};function ny(){const{state:e,dispatch:t}=fe(),n=e.inspectorContext;return i.jsxs("aside",{"aria-label":"Inspector",style:{width:320,borderLeft:`1px solid ${Re("borderSubtle")}`,background:Re("surfaceBase"),color:Re("textPrimary"),display:"flex",flexDirection:"column",overflow:"hidden",flexShrink:0},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:`${Ne[3]}px ${Ne[4]}px`,borderBottom:`1px solid ${Re("borderSubtle")}`},children:[i.jsx("div",{style:{fontSize:He.sm,fontWeight:Ic.semibold},children:n?ry(n):"Inspector"}),i.jsx("button",{onClick:()=>t({type:"SET_INSPECTOR",open:!1}),"aria-label":"Close inspector",style:{background:"transparent",border:"none",color:Re("textMuted"),cursor:"pointer",fontSize:He.md,padding:2,borderRadius:un.sm},children:"×"})]}),i.jsx("div",{style:{flex:1,overflow:"auto",padding:Ne[4]},children:n?i.jsx(oy,{context:n}):i.jsx(ly,{})})]})}function ry(e){switch(e.kind){case"cell":return"Cell";case"lineage-node":return"Lineage node";case"metric":return"Metric"}}function oy({context:e}){return e.kind==="cell"?i.jsx(sy,{cellId:e.cellId}):e.kind==="lineage-node"?i.jsx(iy,{nodeId:e.nodeId}):i.jsx(ay,{name:e.name})}function sy({cellId:e}){const{state:t}=fe(),n=t.cells.find(r=>r.id===e);return n?i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:Ne[3],fontSize:He.sm},children:[i.jsx(Xe,{label:"Type",children:n.type}),i.jsx(Xe,{label:"ID",children:i.jsx("code",{style:{fontFamily:"var(--dql-font-mono, monospace)"},children:n.id})}),i.jsxs(Xe,{label:"Length",children:[n.content.length," chars"]}),n.status&&i.jsx(Xe,{label:"Status",children:n.status})]}):i.jsx(qs,{children:"No matching cell in the active notebook."})}function iy({nodeId:e}){const[t,n]=S.useState(null),[r,o]=S.useState(!0);if(S.useEffect(()=>{let a=!1;return o(!0),J.fetchLineageNode(e).then(l=>{a||(n(l),o(!1))}).catch(()=>{a||o(!1)}),()=>{a=!0}},[e]),r)return i.jsx(qs,{children:"Loading node…"});if(!t||!t.node)return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:Ne[3]},children:[i.jsx(Xe,{label:"Node ID",children:i.jsx("code",{style:{fontFamily:"var(--dql-font-mono, monospace)"},children:e})}),i.jsx(qs,{children:"No metadata available for this node."})]});const s=t.node;return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:Ne[3]},children:[i.jsx(Xe,{label:"Name",children:s.name??e}),i.jsx(Xe,{label:"Type",children:s.type}),s.domain&&i.jsx(Xe,{label:"Domain",children:s.domain}),s.layer&&i.jsx(Xe,{label:"Layer",children:s.layer}),i.jsx(Xe,{label:"Upstream",children:t.incoming.length}),i.jsx(Xe,{label:"Downstream",children:t.outgoing.length}),s.path&&i.jsx(Xe,{label:"Path",children:i.jsx("code",{style:{fontFamily:"var(--dql-font-mono, monospace)",fontSize:He.xs},children:s.path})})]})}function ay({name:e}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:Ne[3]},children:[i.jsx(Xe,{label:"Metric",children:e}),i.jsx(qs,{children:"Definition, dimensions, and governance surface will render here."})]})}function Xe({label:e,children:t}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[i.jsx("div",{style:{fontSize:He.xs,color:Re("textMuted"),textTransform:"uppercase",letterSpacing:.5,fontWeight:Ic.medium},children:e}),i.jsx("div",{style:{fontSize:He.sm,color:Re("textPrimary")},children:t})]})}function qs({children:e}){return i.jsx("div",{style:{fontSize:He.sm,color:Re("textSecondary"),lineHeight:1.5,background:Re("surfaceSunken"),border:`1px solid ${Re("borderSubtle")}`,borderRadius:un.md,padding:Ne[3]},children:e})}function ly(){return i.jsx("div",{style:{fontSize:He.sm,color:Re("textMuted"),lineHeight:1.5},children:"Select a cell, lineage node, or metric to inspect its details here."})}const Yr={appBg:"--color-bg-primary",sidebarBg:"--color-bg-secondary",activityBarBg:"--color-bg-sunken",headerBg:"--color-bg-toolbar",headerBorder:"--color-border-primary",cellBg:"--color-bg-card",cellBorder:"--color-border-subtle",cellBorderActive:"--color-accent-blue",cellBorderRunning:"--color-status-success",textPrimary:"--color-text-primary",textSecondary:"--color-text-secondary",textMuted:"--color-text-tertiary",editorBg:"--color-bg-surface",editorBorder:"--color-border-subtle",tableBorder:"--color-border-subtle",tableHeaderBg:"--color-bg-secondary",tableRowHover:"--color-bg-hover",accent:"--color-accent-blue",accentHover:"--color-accent-blue",success:"--color-status-success",error:"--color-status-error",warning:"--color-status-warning",btnBg:"--color-bg-tertiary",btnBorder:"--color-border-primary",btnHover:"--color-bg-hover",sidebarItemHover:"--color-bg-hover",sidebarItemActive:"--color-bg-active",scrollbarThumb:"--color-border-secondary",modalBg:"--color-bg-secondary",modalOverlay:"--color-bg-overlay",inputBg:"--color-bg-sunken",inputBorder:"--color-border-subtle",pillBg:"--color-bg-tertiary",font:"--font-ui",fontMono:"--font-mono",fontSerif:"--font-ui"},RE={appBg:"#fbfaf7",sidebarBg:"#fbfaf7",activityBarBg:"#ffffff",headerBg:"#ffffff",headerBorder:"#e9e6e0",cellBg:"#ffffff",cellBorder:"#e9e6e0",cellBorderActive:"#6b5dd3",cellBorderRunning:"#2e8b57",textPrimary:"#1a1a1a",textSecondary:"#4a4a52",textMuted:"#8a8d96",editorBg:"#fbfaf7",editorBorder:"#e9e6e0",tableBorder:"#f0eee9",tableHeaderBg:"#faf9f7",tableRowHover:"#f3f0ea",accent:"#6b5dd3",accentHover:"#5c4fc2",success:"#2e8b57",error:"#c14545",warning:"#b26b1f",btnBg:"#ffffff",btnBorder:"#e9e6e0",btnHover:"#f3f0ea",sidebarItemHover:"#f3f0ea",sidebarItemActive:"#f3f0fb",scrollbarThumb:"#d9d5cc",modalBg:"#ffffff",modalOverlay:"rgba(26,26,26,0.40)",inputBg:"#fbfaf7",inputBorder:"#e9e6e0",pillBg:"#f3f0ea",font:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",fontMono:"'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Monaco, Consolas, monospace",fontSerif:"'Inter', -apple-system, BlinkMacSystemFont, sans-serif"};function pE(e){if(typeof document>"u")return RE[e];const t=Yr[e];return getComputedStyle(document.documentElement).getPropertyValue(t).trim()||RE[e]}function cy(){return new Proxy({},{get(e,t){if(typeof t=="string"&&t in Yr)return pE(t)},has(e,t){return typeof t=="string"&&t in Yr},ownKeys(){return Object.keys(Yr)},getOwnPropertyDescriptor(e,t){if(!(typeof t!="string"||!(t in Yr)))return{enumerable:!0,configurable:!0,value:pE(t)}}})}const hn=cy(),ie={obsidian:hn,paper:hn,white:hn,dark:hn,light:hn,midnight:hn,arctic:hn};function nt(e,t="0 0 24 24"){return function({size:r=16,strokeWidth:o=1.75,...s}){return i.jsx("svg",{width:r,height:r,viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:o,strokeLinecap:"round",strokeLinejoin:"round",...s,children:e})}}const wR=nt(i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:"3",y:"3",width:"8",height:"8",rx:"1.5"}),i.jsx("rect",{x:"13",y:"3",width:"8",height:"8",rx:"1.5"}),i.jsx("rect",{x:"3",y:"13",width:"8",height:"8",rx:"1.5"}),i.jsx("rect",{x:"13",y:"13",width:"8",height:"8",rx:"1.5"})]}));nt(i.jsxs(i.Fragment,{children:[i.jsx("path",{d:"M12 2l8 3v6c0 5-3.5 9-8 11-4.5-2-8-6-8-11V5l8-3z"}),i.jsx("path",{d:"M9 12l2 2 4-4"})]}));const dy=nt(i.jsxs(i.Fragment,{children:[i.jsx("circle",{cx:"5",cy:"12",r:"2"}),i.jsx("circle",{cx:"19",cy:"5",r:"2"}),i.jsx("circle",{cx:"19",cy:"19",r:"2"}),i.jsx("path",{d:"M7 12l10-6M7 12l10 6"})]})),Ey=nt(i.jsxs(i.Fragment,{children:[i.jsx("ellipse",{cx:"12",cy:"5",rx:"8",ry:"3"}),i.jsx("path",{d:"M4 5v6c0 1.66 3.58 3 8 3s8-1.34 8-3V5"}),i.jsx("path",{d:"M4 11v6c0 1.66 3.58 3 8 3s8-1.34 8-3v-6"})]}));nt(i.jsxs(i.Fragment,{children:[i.jsx("path",{d:"M4 4h8a8 8 0 010 16H4z"}),i.jsx("path",{d:"M16 20l4 4"})]}));const uy=nt(i.jsxs(i.Fragment,{children:[i.jsx("path",{d:"M3 3v18h18"}),i.jsx("path",{d:"M7 15l4-4 4 4 5-7"})]})),Ty=nt(i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),i.jsx("path",{d:"M3 9h18M9 3v18"})]})),fy=nt(i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),i.jsx("path",{d:"M8 12h8M12 8v8"})]})),Sy=nt(i.jsxs(i.Fragment,{children:[i.jsx("path",{d:"M4 7h16M4 12h16M4 17h10"}),i.jsx("circle",{cx:"18",cy:"17",r:"2"})]})),Ry=nt(i.jsx(i.Fragment,{children:i.jsx("path",{d:"M3 5h18l-7 9v5l-4-2v-3L3 5z"})}));nt(i.jsxs(i.Fragment,{children:[i.jsx("path",{d:"M4 4h10l6 6v10H4z"}),i.jsx("path",{d:"M14 4v6h6"}),i.jsx("path",{d:"M8 14l3 3 5-5"})]}));const py=nt(i.jsx(i.Fragment,{children:i.jsx("path",{d:"M21 12a8 8 0 01-11.5 7.2L4 21l1.8-5.5A8 8 0 1121 12z"})})),BR=44,FR=188,GR="dql-activitybar-expanded";function Ay(){var e;if(typeof window>"u")return!1;try{return((e=window.localStorage)==null?void 0:e.getItem(GR))==="1"}catch{return!1}}function hy(e){var t;try{(t=window.localStorage)==null||t.setItem(GR,e?"1":"0")}catch{}}function AE({title:e,icon:t,active:n,expanded:r,onClick:o,t:s}){const[a,l]=S.useState(!1),c=i.jsxs("button",{"aria-label":e,onClick:o,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{width:r?FR-12:BR-8,height:32,display:"flex",alignItems:"center",justifyContent:r?"flex-start":"center",gap:10,padding:r?"0 10px":0,marginLeft:r?6:4,marginRight:r?6:4,background:n?s.accent+"1f":a?s.textPrimary+"0f":"transparent",border:"none",borderRadius:6,cursor:"pointer",color:n?s.accent:a?s.textPrimary:s.textSecondary,transition:"background 0.15s, color 0.15s",fontFamily:s.font,fontSize:13,fontWeight:n?500:400,textAlign:"left",overflow:"hidden",whiteSpace:"nowrap"},children:[i.jsx("span",{style:{display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:18,height:18},children:t}),r&&i.jsx("span",{style:{flex:1,textOverflow:"ellipsis",overflow:"hidden"},children:e})]});return r?c:i.jsx(iS,{content:e,side:"right",children:c})}function Iy(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(Ay);S.useEffect(()=>{hy(r)},[r]);function s(c){if(c==="lineage"){if(e.lineageFullscreen&&e.sidebarPanel==="lineage"&&e.sidebarOpen){t({type:"TOGGLE_LINEAGE_FULLSCREEN"}),t({type:"TOGGLE_SIDEBAR"});return}t({type:"SET_SIDEBAR_PANEL",panel:"lineage"}),t({type:"TOGGLE_LINEAGE_FULLSCREEN"});return}if(c==="connection"||c==="reference"||c==="git"){t({type:"SET_SIDEBAR_PANEL",panel:c});return}e.sidebarPanel===c&&e.sidebarOpen?t({type:"TOGGLE_SIDEBAR"}):t({type:"SET_SIDEBAR_PANEL",panel:c})}const a=[{key:"files",title:"Files",icon:i.jsx(DR,{size:16,strokeWidth:1.75}),active:e.sidebarPanel==="files"&&e.sidebarOpen},{key:"schema",title:"Schema",icon:i.jsx(yR,{size:16,strokeWidth:1.75}),active:e.sidebarPanel==="schema"&&e.sidebarOpen},{key:"block_library",title:"Block Library",icon:i.jsx(wR,{size:16}),active:e.sidebarPanel==="block_library"&&e.sidebarOpen},{key:"apps",title:"Apps",icon:i.jsx(ML,{size:16,strokeWidth:1.75}),active:e.sidebarPanel==="apps"&&e.sidebarOpen},{key:"lineage",title:"Lineage",icon:i.jsx(dy,{size:16}),active:e.lineageFullscreen},{key:"git",title:"Source control",icon:i.jsx(xr,{size:16,strokeWidth:1.75}),active:e.mainView==="git"},{key:"connection",title:"Connections",icon:i.jsx(bR,{size:16,strokeWidth:1.75}),active:e.mainView==="connection"}],l=[{key:"reference",title:"Reference",icon:i.jsx(LR,{size:16,strokeWidth:1.75}),active:e.mainView==="reference",onClick:()=>s("reference")},{key:"help",title:"Help",icon:i.jsx(Zx,{size:16,strokeWidth:1.75}),active:!1,onClick:()=>s("reference")},{key:"settings",title:"Settings",icon:i.jsx(YL,{size:16,strokeWidth:1.75}),active:!1,onClick:()=>{}}];return i.jsxs("div",{style:{width:r?FR:BR,flexShrink:0,background:n.activityBarBg,borderRight:`1px solid ${n.headerBorder}`,display:"flex",flexDirection:"column",paddingTop:6,paddingBottom:6,gap:2,userSelect:"none",transition:"width 0.18s ease",overflow:"hidden"},children:[i.jsx("div",{style:{display:"flex",justifyContent:r?"flex-end":"center",paddingLeft:r?6:0,paddingRight:r?6:0,marginBottom:4},children:i.jsx(iS,{content:r?"Collapse":"Expand",side:"right",children:i.jsx("button",{"aria-label":r?"Collapse sidebar rail":"Expand sidebar rail",onClick:()=>o(c=>!c),style:{width:28,height:26,display:"flex",alignItems:"center",justifyContent:"center",background:"transparent",border:"none",borderRadius:5,cursor:"pointer",color:n.textMuted,padding:0},onMouseEnter:c=>{c.currentTarget.style.color=n.textPrimary,c.currentTarget.style.background=n.textPrimary+"0f"},onMouseLeave:c=>{c.currentTarget.style.color=n.textMuted,c.currentTarget.style.background="transparent"},children:r?i.jsx(zx,{size:14,strokeWidth:2}):i.jsx(qx,{size:14,strokeWidth:2})})})}),a.map(c=>i.jsx(AE,{title:c.title,icon:c.icon,active:c.active,expanded:r,onClick:()=>s(c.key),t:n},c.key)),i.jsx("div",{style:{flex:1}}),l.map(c=>i.jsx(AE,{title:c.title,icon:c.icon,active:c.active,expanded:r,onClick:c.onClick,t:n},c.key))]})}const Pa={notebooks:"Notebooks",blocks:"Blocks",dashboards:"Dashboards"},Ny={notebooks:!1,blocks:!1,dashboards:!0};function Oy({type:e}){switch(e){case"notebook":return i.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.063 0L7.597 13.66A2.25 2.25 0 0 0 6.007 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h4.507c.656 0 1.287.169 1.744.324Zm1.499.004c.457-.155 1.088-.324 1.744-.324H15v-9h-3.495a2.25 2.25 0 0 0-2.252 2.247l-.002 9.077Z"})});case"block":return i.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M10.5 0l5.25 4-5.25 4V6H9.25A1.75 1.75 0 0 0 7.5 7.75v2.5A1.75 1.75 0 0 0 9.25 12h1.25v8H9v-6.5A3.25 3.25 0 0 1 5.75 10h-2A3.25 3.25 0 0 1 .5 6.75v-2.5A3.25 3.25 0 0 1 3.75 1h2A3.25 3.25 0 0 1 9 4.5V6h1.5V0z"})});default:return i.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M.24 2.375C.24 1.064 1.225.001 2.409.001h6.451a1.17 1.17 0 0 1 .828.344l3.311 3.312a1.17 1.17 0 0 1 .344.828v9.14c0 1.31-.985 2.374-2.169 2.374H2.41C1.225 16 .24 14.937.24 13.625Zm2.169-1a.846.846 0 0 0-.844.86v11.39c0 .47.38.86.844.86h8.774a.847.847 0 0 0 .844-.86V5.157L8.688 1.373H2.41Z"})})}}function my({expanded:e}){return i.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:e?i.jsx("path",{d:"M1.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25H7.5A1.75 1.75 0 0 1 5.75 2.5h-4ZM0 2.75C0 1.784.784 1 1.75 1h4c.966 0 1.75.784 1.75 1.75H14.25c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25Z"}):i.jsx("path",{d:"M1.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25H7.5A1.75 1.75 0 0 1 5.75 2.5h-4ZM0 2.75C0 1.784.784 1 1.75 1h4c.966 0 1.75.784 1.75 1.75H14.25c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25Z"})})}function Xl(e){return e.name.replace(/\.(dqlnb|dql)$/,"")}function gy({onOpenFile:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],[o,s]=S.useState({notebooks:!0,blocks:!1,dashboards:!1}),[a,l]=S.useState(!1),c={notebooks:[],blocks:[],dashboards:[]};for(const u of t.files){const T=u.folder.toLowerCase();T in c&&c[T].push(u)}const d=u=>{s(T=>({...T,[u]:!T[u]}))},E=i.jsx("div",{style:{padding:"0 8px 8px"},children:i.jsxs("button",{onClick:()=>n({type:"OPEN_NEW_NOTEBOOK_MODAL"}),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{width:"100%",height:30,background:"transparent",border:`1px dashed ${a?r.accent:r.cellBorder}`,borderRadius:6,color:a?r.accent:r.textSecondary,cursor:"pointer",fontSize:12,fontFamily:r.font,fontWeight:500,display:"flex",alignItems:"center",justifyContent:"center",gap:6,transition:"border-color 0.15s, color 0.15s"},children:[i.jsx("span",{style:{fontSize:16,lineHeight:1},children:"+"}),"New Notebook"]})});return i.jsxs(Ft,{title:"Files",bodyPadding:0,children:[E,t.filesLoading&&i.jsx("div",{style:{padding:"8px 14px",color:r.textMuted,fontSize:12,fontFamily:r.font},children:"Loading files…"}),Object.keys(Pa).map(u=>{const T=c[u];if(Ny[u]&&T.length===0)return null;const f=o[u],h=u==="notebooks"?()=>n({type:"OPEN_NEW_NOTEBOOK_MODAL"}):u==="blocks"?()=>n({type:"OPEN_NEW_BLOCK_MODAL"}):void 0;return i.jsxs("div",{children:[i.jsx(Cy,{label:Pa[u],count:T.length,expanded:f,onToggle:()=>d(u),onAdd:h,t:r}),f&&i.jsx("div",{children:T.length===0?i.jsxs("div",{style:{padding:"4px 14px 4px 32px",fontSize:12,color:r.textMuted,fontFamily:r.font,fontStyle:"italic"},children:["No ",Pa[u].toLowerCase()]}):T.map(A=>{var R;return i.jsx(xy,{file:A,active:((R=t.activeFile)==null?void 0:R.path)===A.path,onClick:()=>e(A),onShowLineage:()=>n({type:"OPEN_LINEAGE_DRAWER",nodeId:Xl(A)}),t:r},A.path)})})]},u)})]})}function Cy({label:e,count:t,expanded:n,onToggle:r,onAdd:o,t:s}){const[a,l]=S.useState(!1),[c,d]=S.useState(!1);return i.jsxs("div",{onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{display:"flex",alignItems:"center",background:a?s.sidebarItemHover:"transparent",transition:"background 0.1s"},children:[i.jsxs("button",{onClick:r,style:{flex:1,display:"flex",alignItems:"center",gap:6,padding:"3px 0 3px 10px",background:"transparent",border:"none",cursor:"pointer",color:s.textSecondary,fontSize:11,fontWeight:600,fontFamily:s.font,letterSpacing:"0.04em",textTransform:"uppercase",textAlign:"left"},children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:n?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",flexShrink:0},children:i.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),i.jsx(my,{expanded:n}),i.jsx("span",{style:{flex:1},children:e}),t>0&&i.jsx("span",{style:{background:s.pillBg,color:s.textMuted,borderRadius:10,padding:"0 5px",fontSize:10,fontWeight:500},children:t})]}),o&&a&&i.jsx("button",{onClick:E=>{E.stopPropagation(),o()},onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),title:`New ${e.slice(0,-1)}`,style:{background:c?s.btnHover:"transparent",border:"none",borderRadius:4,cursor:"pointer",color:c?s.accent:s.textMuted,fontSize:14,lineHeight:1,padding:"2px 8px",marginRight:4,flexShrink:0,transition:"color 0.1s"},children:"+"})]})}function xy({file:e,active:t,onClick:n,onShowLineage:r,t:o}){const[s,a]=S.useState(!1),[l,c]=S.useState(!1),d=e.type==="notebook"||e.type==="block"||e.type==="dashboard";return i.jsxs("div",{onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),style:{position:"relative",display:"flex",alignItems:"center",background:t?o.sidebarItemActive:s?o.sidebarItemHover:"transparent",borderLeft:t?`2px solid ${o.accent}`:"2px solid transparent",transition:"background 0.1s"},children:[i.jsxs("button",{onClick:n,style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:6,padding:"4px 8px 4px 24px",background:"transparent",border:"none",cursor:"pointer",color:t||s?o.textPrimary:o.textSecondary,fontSize:13,fontFamily:o.font,textAlign:"left",transition:"color 0.1s",overflow:"hidden"},children:[i.jsx("span",{style:{flexShrink:0,color:t?o.accent:o.textMuted},children:i.jsx(Oy,{type:e.type})}),i.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:Xl(e)}),e.isNew&&i.jsx("span",{style:{fontSize:9,fontWeight:600,color:o.accent,background:o.sidebarItemActive,borderRadius:4,padding:"1px 4px",flexShrink:0},children:"NEW"})]}),s&&d&&r&&i.jsx("button",{onClick:E=>{E.stopPropagation(),r()},onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),"aria-label":`Show lineage for ${Xl(e)}`,title:"Show lineage",style:{position:"absolute",right:6,top:"50%",transform:"translateY(-50%)",width:22,height:22,display:"inline-flex",alignItems:"center",justifyContent:"center",background:l?o.btnHover:"transparent",border:"none",borderRadius:4,color:l?o.accent:o.textMuted,cursor:"pointer"},children:i.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[i.jsx("circle",{cx:"6",cy:"6",r:"2.5"}),i.jsx("circle",{cx:"18",cy:"6",r:"2.5"}),i.jsx("circle",{cx:"12",cy:"18",r:"2.5"}),i.jsx("path",{d:"M6 8.5v2A2.5 2.5 0 0 0 8.5 13h7A2.5 2.5 0 0 0 18 10.5v-2"}),i.jsx("path",{d:"M12 13v2.5"})]})})]})}const Ly={varchar:"#388bfd",text:"#388bfd",string:"#388bfd",char:"#388bfd",integer:"#56d364",int:"#56d364",bigint:"#56d364",smallint:"#56d364",float:"#56d364",double:"#56d364",decimal:"#56d364",numeric:"#56d364",real:"#56d364",date:"#e3b341",timestamp:"#e3b341",datetime:"#e3b341",time:"#e3b341",boolean:"#f778ba",bool:"#f778ba",json:"#79c0ff",jsonb:"#79c0ff",uuid:"#d2a8ff",bytea:"#ffa657",binary:"#ffa657"};function HR(e,t){const n=e.toLowerCase().split("(")[0].trim();return Ly[n]??t}function yy({t:e}){return i.jsxs("div",{style:{padding:"8px 12px",display:"flex",flexDirection:"column",gap:8},children:[[1,2,3].map(t=>i.jsx("div",{style:{height:28,borderRadius:4,background:e.pillBg,opacity:.6,animation:"pulse 1.5s ease-in-out infinite"}},t)),i.jsx("style",{children:"@keyframes pulse { 0%,100%{opacity:.6} 50%{opacity:.3} }"})]})}function _y(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(!1),[s,a]=S.useState(""),l=async()=>{t({type:"SET_SCHEMA_LOADING",loading:!0});try{const h=await J.getSchema();t({type:"SET_SCHEMA",tables:h})}catch(h){console.error("Schema refresh failed:",h)}finally{t({type:"SET_SCHEMA_LOADING",loading:!1})}},c=S.useMemo(()=>{const h=s.trim().toLowerCase();return h?e.schemaTables.filter(A=>{const R=[A.name,A.path,A.objectType].filter(N=>!!N).some(N=>N.toLowerCase().includes(h)),p=A.columns.some(N=>N.name.toLowerCase().includes(h)||N.type.toLowerCase().includes(h));return R||p}):e.schemaTables},[s,e.schemaTables]),d=S.useMemo(()=>{const h=new Map;for(const A of c){const[R,...p]=A.name.split("."),N=p.length>0?R:A.source==="file"?"files":"default",I=h.get(N)??[];I.push(A),h.set(N,I)}return Array.from(h.entries()).sort((A,R)=>A[0].localeCompare(R[0]))},[c]),E={schemas:d.length,tables:e.schemaTables.length,columns:e.schemaTables.reduce((h,A)=>h+A.columns.length,0)},u={width:"100%",background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:6,color:n.textPrimary,fontSize:12,fontFamily:n.font,padding:"7px 10px",outline:"none",boxSizing:"border-box"},T=i.jsxs("button",{onClick:l,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),title:"Refresh schema",style:{background:r?n.btnHover:"transparent",border:`1px solid ${n.btnBorder}`,borderRadius:6,cursor:"pointer",color:r?n.textSecondary:n.textMuted,fontSize:11,fontFamily:n.font,padding:"6px 8px",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s"},children:[i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z"})}),"Refresh"]}),f=i.jsx(xo,{children:i.jsx("input",{value:s,onChange:h=>a(h.target.value),placeholder:"Search schemas, tables, columns...",style:{...u,flex:1,minWidth:100}})});return i.jsxs(Ft,{title:"Data Catalog",subtitle:"Schemas, tables, views, and columns from the active connection.",actions:T,toolbar:f,bodyPadding:0,children:[i.jsx(Dy,{stats:E,t:n}),e.schemaLoading?i.jsx(yy,{t:n}):e.schemaTables.length===0?i.jsx(vt,{title:"No tables found",description:"Connect a data source to explore schema."}):c.length===0?i.jsx(vt,{title:"No matches",description:"No database objects match the current search."}):i.jsx("div",{style:{overflow:"auto",flex:1},children:d.map(([h,A])=>i.jsx(My,{name:h,tables:A,defaultExpanded:d.length<=2||s.trim().length>0,t:n},h))})]})}function Dy({stats:e,t}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:14,padding:"8px 12px",borderBottom:`1px solid ${t.headerBorder}`,fontSize:11,fontFamily:t.font,color:t.textMuted},children:[i.jsx(va,{label:"schemas",value:e.schemas,t}),i.jsx("span",{style:{color:t.headerBorder},children:"·"}),i.jsx(va,{label:"tables",value:e.tables,t}),i.jsx("span",{style:{color:t.headerBorder},children:"·"}),i.jsx(va,{label:"columns",value:e.columns,t})]})}function va({label:e,value:t,t:n}){return i.jsxs("span",{style:{display:"inline-flex",alignItems:"baseline",gap:4},children:[i.jsx("span",{style:{color:n.textPrimary,fontWeight:600,fontSize:12},children:t}),i.jsx("span",{children:e})]})}function My({name:e,tables:t,defaultExpanded:n,t:r}){const[o,s]=S.useState(n),[a,l]=S.useState(!1);return i.jsxs("div",{children:[i.jsxs("button",{onClick:()=>s(c=>!c),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),"aria-expanded":o,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"6px 12px",background:a?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:r.textSecondary,fontSize:11,fontWeight:700,fontFamily:r.font,textTransform:"uppercase",letterSpacing:"0.05em",textAlign:"left",transition:"background 0.1s",position:"sticky",top:0,zIndex:1,backdropFilter:"blur(6px)"},children:[i.jsx("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:o?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",color:r.textMuted,flexShrink:0},children:i.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",style:{color:r.textMuted,flexShrink:0},children:i.jsx("path",{d:"M1 3.5c0-1.865 2.91-3 6-3s6 1.135 6 3v9c0 1.865-2.91 3-6 3s-6-1.135-6-3Zm1.5.5c.484.85 2.28 1.5 4.5 1.5s4.016-.65 4.5-1.5V6c-.484.85-2.28 1.5-4.5 1.5S2.984 6.85 2.5 6Zm0 4c.484.85 2.28 1.5 4.5 1.5s4.016-.65 4.5-1.5v2c-.484.85-2.28 1.5-4.5 1.5S2.984 10.85 2.5 10Z"})}),i.jsx("span",{style:{flex:1},children:e}),i.jsx("span",{style:{background:r.pillBg,color:r.textMuted,borderRadius:10,padding:"0 6px",fontSize:10,fontWeight:500},children:t.length})]}),o&&t.map(c=>i.jsx(by,{table:c,t:r},c.name))]})}function by({table:e,t}){var u,T;const{dispatch:n}=fe(),[r,o]=S.useState(!1),[s,a]=S.useState(!1),l=async()=>{if(n({type:"TOGGLE_SCHEMA_TABLE",tableName:e.name}),!e.expanded&&e.columns.length===0){a(!0);try{const f=await J.describeTable(e.path);f.length>0&&n({type:"SET_TABLE_COLUMNS",tableName:e.name,columns:f})}catch(f){console.error("describeTable failed:",f)}finally{a(!1)}}},c=((u=e.objectType)==null?void 0:u.toLowerCase().includes("view"))??!1,d=c?"view":"table",E=c?"#d2a8ff":t.accent;return i.jsxs("div",{children:[i.jsxs("button",{onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),onClick:l,style:{width:"100%",display:"flex",alignItems:"center",gap:7,padding:"6px 12px 6px 22px",background:r?t.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:t.textPrimary,fontSize:12.5,fontFamily:t.font,fontWeight:500,textAlign:"left",transition:"background 0.1s"},children:[i.jsx("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:e.expanded?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",flexShrink:0,color:t.textMuted},children:i.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),c?i.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:E,flexShrink:0},children:[i.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12z"}),i.jsx("circle",{cx:"12",cy:"12",r:"3"})]}):i.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:E,flexShrink:0},children:[i.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),i.jsx("path",{d:"M3 5v14a9 3 0 0 0 18 0V5"}),i.jsx("path",{d:"M3 12a9 3 0 0 0 18 0"})]}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name.includes(".")?e.name.split(".").slice(1).join("."):e.name}),i.jsx("span",{style:{fontSize:9,fontFamily:t.fontMono,color:E,background:`${E}1f`,borderRadius:3,padding:"1px 5px",flexShrink:0,fontWeight:600,letterSpacing:"0.04em"},children:d}),((T=e.governance)==null?void 0:T.status)&&i.jsx(wy,{status:e.governance.status,t}),e.columns.length>0&&i.jsx("span",{style:{fontSize:10,color:t.textMuted,background:t.pillBg,borderRadius:8,padding:"1px 6px",flexShrink:0,fontVariantNumeric:"tabular-nums"},title:`${e.columns.length} columns`,children:e.columns.length})]}),e.expanded&&i.jsxs("div",{style:{paddingLeft:26},children:[e.governance&&(e.governance.owner||e.governance.domain)&&i.jsxs("div",{style:{padding:"3px 10px",display:"flex",gap:8,flexWrap:"wrap"},children:[e.governance.domain&&i.jsxs("span",{style:{fontSize:9,fontFamily:t.font,color:t.textMuted},children:[i.jsx("span",{style:{fontWeight:600},children:"domain:"})," ",e.governance.domain]}),e.governance.owner&&i.jsxs("span",{style:{fontSize:9,fontFamily:t.font,color:t.textMuted},children:[i.jsx("span",{style:{fontWeight:600},children:"owner:"})," ",e.governance.owner]})]}),s?i.jsx("div",{style:{padding:"4px 10px",fontSize:11,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:"..."}):e.columns.length===0?i.jsx("div",{style:{padding:"4px 10px",fontSize:11,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:"No columns"}):e.columns.map(f=>i.jsx(Py,{col:f,t},f.name))]})]})}function Py({col:e,t}){const[n,r]=S.useState(!1),[o,s]=S.useState(!1),a=HR(e.type,t.accent),l=async c=>{c.stopPropagation();try{await navigator.clipboard.writeText(e.name),s(!0),setTimeout(()=>s(!1),1200)}catch{}};return i.jsxs("div",{onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),style:{display:"flex",alignItems:"center",gap:8,padding:"4px 12px 4px 44px",background:n?t.sidebarItemHover:"transparent",cursor:"default",transition:"background 0.1s"},children:[i.jsx("span",{"aria-hidden":!0,style:{flexShrink:0,width:14,height:14,display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:3,background:`${a}1a`,color:a,fontFamily:t.fontMono,fontSize:9,fontWeight:700,letterSpacing:0},title:e.type,children:vy(e.type)}),i.jsx("span",{style:{flex:1,fontSize:11.5,fontFamily:t.fontMono,color:t.textSecondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.name,children:e.name}),i.jsx("span",{style:{fontSize:10,fontFamily:t.fontMono,color:a,background:`${a}1a`,borderRadius:3,padding:"1px 5px",flexShrink:0,fontWeight:500},children:e.type.toLowerCase()}),n&&i.jsx("button",{onClick:l,"aria-label":`Copy column name ${e.name}`,title:o?"Copied!":"Copy column name",style:{flexShrink:0,width:20,height:20,display:"inline-flex",alignItems:"center",justifyContent:"center",background:"transparent",border:"none",borderRadius:3,color:o?"#56d364":t.textMuted,cursor:"pointer"},children:o?i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:i.jsx("polyline",{points:"20 6 9 17 4 12"})}):i.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[i.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),i.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})}function vy(e){const t=e.toLowerCase();return/(int|long|short|byte|number|numeric|decimal|float|double|real)/.test(t)?"#":/(bool)/.test(t)?"B":/(date|time|timestamp)/.test(t)?"⌚":/(json|map|struct|object|variant)/.test(t)?"{}":/(array|list)/.test(t)?"[]":/(uuid|guid)/.test(t)?"U":/(char|text|string|varchar)/.test(t)?"A":"·"}const Uy={certified:{color:"#56d364",label:"Certified",icon:"✓"},review:{color:"#e3b341",label:"In Review",icon:"◎"},draft:{color:"#8b949e",label:"Draft",icon:"○"},deprecated:{color:"#f85149",label:"Deprecated",icon:"✗"},pending_recertification:{color:"#ffa657",label:"Re-cert",icon:"↻"}};function wy({status:e,t}){const n=Uy[e];return n?i.jsxs("span",{title:n.label,style:{fontSize:8,fontWeight:700,fontFamily:t.font,color:n.color,background:`${n.color}18`,border:`1px solid ${n.color}40`,borderRadius:3,padding:"0 4px",flexShrink:0,letterSpacing:"0.04em",lineHeight:"14px"},children:[n.icon," ",n.label.toUpperCase()]}):null}const pt=(e,t)=>`https://cdn.simpleicons.org/${e}/${t}`,Xn=(e,t)=>`https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/${e}/${e}-${t}.svg`,By={duckdb:[pt("duckdb","FFF000")],file:[pt("duckdb","FFF000")],postgres:[pt("postgresql","4169E1")],mysql:[pt("mysql","4479A1"),Xn("mysql","original")],sqlite:[pt("sqlite","003B57"),Xn("sqlite","original")],mssql:[Xn("microsoftsqlserver","original")],redshift:[],snowflake:[pt("snowflake","29B5E8")],bigquery:[pt("googlebigquery","4285F4"),Xn("googlecloud","plain")],databricks:[pt("databricks","FF3621")],clickhouse:[pt("clickhouse","FFCC01")],trino:[pt("trino","DD00A1")],athena:[Xn("amazonwebservices","plain-wordmark")],fabric:[Xn("azure","original")]},Fy={duckdb:"#f4bc00",file:"#f4bc00",postgres:"#336791",bigquery:"#4285f4",snowflake:"#29b5e8",sqlite:"#003b57",mysql:"#00758f",mssql:"#cc2927",redshift:"#8c4fff",databricks:"#ff3621",clickhouse:"#ffcc00",athena:"#ff9900",trino:"#dd00a1",fabric:"#0078d4"};function Gy({size:e,color:t}){return i.jsx("span",{"aria-hidden":!0,style:{width:e,height:e,borderRadius:3,background:t,flexShrink:0,display:"inline-block"}})}function Ua({driver:e,size:t=16,fallbackColor:n}){const r=By[e]??[],o=n??Fy[e]??"#888",[s,a]=S.useState(0);return r.length===0||s>=r.length?i.jsx(Gy,{size:t,color:o}):i.jsx("img",{src:r[s],alt:`${e} logo`,width:t,height:t,loading:"lazy",onError:()=>a(s+1),style:{flexShrink:0,display:"block",objectFit:"contain"}})}const Kl={duckdb:"DuckDB",file:"Local File / DuckDB",postgres:"PostgreSQL",bigquery:"BigQuery",snowflake:"Snowflake",sqlite:"SQLite",mysql:"MySQL",mssql:"SQL Server",redshift:"Amazon Redshift",databricks:"Databricks",clickhouse:"ClickHouse",athena:"Amazon Athena",trino:"Trino",fabric:"Microsoft Fabric"},hE={duckdb:"#f4bc00",file:"#f4bc00",postgres:"#336791",bigquery:"#4285f4",snowflake:"#29b5e8",sqlite:"#003b57",mysql:"#00758f",mssql:"#cc2927",redshift:"#8c4fff",databricks:"#ff3621",clickhouse:"#ffcc00",athena:"#ff9900",trino:"#dd00a1",fabric:"#0078d4"},Hy={duckdb:"In-process analytical database",file:"Local CSV / Parquet via DuckDB",postgres:"Open-source relational warehouse",bigquery:"Google Cloud serverless warehouse",snowflake:"Cloud data platform",sqlite:"Embedded SQL database",mysql:"Open-source relational database",mssql:"Microsoft SQL Server",redshift:"AWS cloud data warehouse",databricks:"Lakehouse platform",clickhouse:"Columnar OLAP database",athena:"AWS serverless S3 query engine",trino:"Distributed SQL query engine",fabric:"Microsoft unified analytics"},ky={duckdb:["filepath"],postgres:["host","port","database","user","password"],mysql:["host","port","database","user","password"],bigquery:["project","dataset","keyFilename"],snowflake:["account","warehouse","database","schema","username","password"],mssql:["server","port","database","user","password"],redshift:["host","port","database","user","password"],sqlite:["filepath"],databricks:["host","path","token"],clickhouse:["host","port","database","user","password"],athena:["region","database","outputLocation"],trino:["host","port","catalog","schema","user"],fabric:["server","database","authentication"]},jy=[{name:"default",label:"Local DuckDB",description:"In-memory DuckDB — no configuration needed",config:{driver:"duckdb",filepath:":memory:"}},{name:"postgres",label:"PostgreSQL",description:"Connect to a local PostgreSQL instance",config:{driver:"postgres",host:"localhost",port:5432,database:"postgres",user:"postgres",password:""}},{name:"snowflake",label:"Snowflake",description:"Connect to your Snowflake data warehouse",config:{driver:"snowflake",account:"",warehouse:"",database:"",schema:"PUBLIC",username:"",password:""}}];function kR(){const{state:e}=fe(),t=ie[e.themeMode],[n,r]=S.useState(null),[o,s]=S.useState(!1),[a,l]=S.useState(null),[c,d]=S.useState(null),[E,u]=S.useState(!1),[T,f]=S.useState(!1),[h,A]=S.useState(null),[R,p]=S.useState(""),[N,I]=S.useState("duckdb"),[O,C]=S.useState({});S.useEffect(()=>{J.getConnections().then(b=>{r(b),Object.keys(b.connections).length>0&&J.testConnection().then(l)})},[]);const m=async()=>{s(!0),l(null);const b=await J.testConnection();l(b),s(!1)},g=(b,P)=>{d(b),u(!1),p(b),I((P==null?void 0:P.driver)??"duckdb");const M={};Object.entries(P??{}).forEach(([L,v])=>{L!=="driver"&&L!=="type"&&(M[L]=String(v??""))}),C(M)},y=()=>{u(!0),d(null),p(""),I("duckdb"),C({})},x=()=>{d(null),u(!1)},w=async()=>{if(!n)return;f(!0),A(null);const b=R.trim()||(c??"default"),P={driver:N};Object.entries(O).forEach(([L,v])=>{v.trim()&&(L==="port"&&!isNaN(Number(v))?P[L]=Number(v):P[L]=v)});const M={...n.connections};c&&c!==b&&delete M[c],M[b]=P;try{await J.saveConnections(M);const L=await J.getConnections();r(L),A("Saved"),setTimeout(()=>A(null),2e3),d(null),u(!1);try{s(!0);const v=await J.testConnection();l(v)}catch{}finally{s(!1)}}catch(L){A(`Error: ${L.message}`)}finally{f(!1)}},D=async b=>{if(!n)return;const P={...n.connections};delete P[b],f(!0);try{await J.saveConnections(P);const M=await J.getConnections();r(M),d(null)}finally{f(!1)}},U={fontSize:10,fontWeight:600,letterSpacing:"0.07em",textTransform:"uppercase",color:t.textMuted,fontFamily:t.font,marginBottom:6},F={background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:7,padding:"10px 12px",marginBottom:10},_=(n==null?void 0:n.connections)??{},B=(n==null?void 0:n.default)??"";return i.jsxs(Ft,{title:"Connections",bodyPadding:12,children:[i.jsx("div",{style:U,children:"Connections"}),n===null?i.jsx("div",{style:{fontSize:12,color:t.textMuted,fontFamily:t.font},children:"Loading…"}):Object.entries(_).map(([b,P])=>{const M=(P==null?void 0:P.driver)??(P==null?void 0:P.type)??"unknown",L=b===B||Object.keys(_).length===1,v=hE[M]??t.accent;return c===b?i.jsx(IE,{t,editName:R,setEditName:p,editDriver:N,setEditDriver:I,editFields:O,setEditFields:C,onSave:w,onCancel:x,onDelete:()=>D(b),saving:T,isNew:!1},b):i.jsxs("div",{style:{...F,borderLeft:L?`3px solid ${v}`:`1px solid ${t.cellBorder}`},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:6},children:[i.jsx(Ua,{driver:M,size:18,fallbackColor:v}),i.jsx("span",{style:{fontSize:12,fontWeight:600,color:t.textPrimary,fontFamily:t.font},children:Kl[M]??M}),i.jsx("span",{style:{fontSize:11,fontFamily:t.fontMono,color:t.textMuted},children:b}),L&&(a==null?void 0:a.ok)&&i.jsx("span",{title:"Connected","aria-label":"Connected",style:{width:7,height:7,borderRadius:"50%",background:t.success,flexShrink:0,boxShadow:`0 0 0 2px ${t.success}25`}}),L&&a&&!a.ok&&i.jsx("span",{title:a.message,"aria-label":"Disconnected",style:{width:7,height:7,borderRadius:"50%",background:t.error,flexShrink:0,boxShadow:`0 0 0 2px ${t.error}25`}}),L&&i.jsx("span",{style:{fontSize:9,color:t.accent,fontFamily:t.font,fontWeight:600,letterSpacing:"0.05em"},children:"DEFAULT"}),i.jsx("div",{style:{flex:1}}),i.jsx("button",{onClick:()=>g(b,P),style:{background:"transparent",border:`1px solid ${t.btnBorder}`,borderRadius:3,cursor:"pointer",color:t.textMuted,fontSize:10,fontFamily:t.font,padding:"1px 6px",transition:"all 0.15s"},children:"Edit"})]}),i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:3},children:Object.entries(P??{}).filter(([G])=>G!=="driver"&&G!=="type").map(([G,k])=>i.jsxs("div",{style:{display:"flex",gap:6,alignItems:"baseline"},children:[i.jsx("span",{style:{fontSize:11,color:t.textMuted,fontFamily:t.fontMono,minWidth:70,flexShrink:0},children:G}),i.jsx("span",{style:{fontSize:11,color:t.textSecondary,fontFamily:t.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:G.toLowerCase().includes("password")||G.toLowerCase().includes("token")?"••••••••":String(k)})]},G))})]},b)}),!E&&!c&&Object.keys(_).length===0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{...U,marginTop:8},children:"Quick Connect"}),i.jsx("div",{style:{display:"grid",gap:6,marginBottom:12},children:jy.map(b=>i.jsxs("button",{onClick:async()=>{f(!0);try{const P={..._,[b.name]:b.config};await J.saveConnections(P);const M=await J.getConnections();r(M),s(!0);const L=await J.testConnection();l(L),s(!1)}finally{f(!1)}},disabled:T,style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:7,cursor:T?"not-allowed":"pointer",textAlign:"left",transition:"border-color 0.15s"},children:[i.jsx(Ua,{driver:b.config.driver,size:18}),i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:12,fontWeight:600,color:t.textPrimary,fontFamily:t.font},children:b.label}),i.jsx("div",{style:{fontSize:10,color:t.textMuted,fontFamily:t.font},children:b.description})]})]},b.name))})]}),E?i.jsx(IE,{t,editName:R,setEditName:p,editDriver:N,setEditDriver:I,editFields:O,setEditFields:C,onSave:w,onCancel:x,saving:T,isNew:!0}):i.jsxs("button",{onClick:y,style:{width:"100%",padding:"7px 0",borderRadius:6,border:`1px dashed ${t.cellBorder}`,background:"transparent",color:t.textSecondary,fontSize:12,fontFamily:t.font,fontWeight:500,cursor:"pointer",marginBottom:12,display:"flex",alignItems:"center",justifyContent:"center",gap:6,transition:"border-color 0.15s, color 0.15s"},children:[i.jsx("span",{style:{fontSize:16,lineHeight:1},children:"+"}),"Add Connection"]}),h&&i.jsx("div",{style:{fontSize:11,fontFamily:t.font,padding:"4px 10px",borderRadius:4,marginBottom:8,color:h.startsWith("Error")?t.error:t.success,background:h.startsWith("Error")?`${t.error}12`:`${t.success}12`},children:h}),i.jsx("button",{onClick:m,disabled:o,style:{width:"100%",padding:"7px 0",borderRadius:6,border:`1px solid ${t.btnBorder}`,background:t.btnBg,color:t.textSecondary,fontSize:12,fontFamily:t.font,fontWeight:500,cursor:o?"not-allowed":"pointer",marginBottom:8,opacity:o?.7:1,transition:"all 0.15s"},children:o?"Testing…":"Test Connection"}),a&&i.jsxs("div",{style:{fontSize:12,fontFamily:t.font,color:a.ok?t.success:t.error,background:a.ok?`${t.success}12`:`${t.error}12`,border:`1px solid ${a.ok?t.success:t.error}40`,borderRadius:6,padding:"7px 10px",marginBottom:12},children:[a.ok?"✓ ":"✗ ",a.message]}),i.jsx("div",{style:{...U,marginTop:4},children:"Catalog"}),i.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(160px, 1fr))",gap:8,marginBottom:12},children:Object.entries(Kl).map(([b,P])=>{const M=hE[b]??t.accent,L=Hy[b]??"";return i.jsxs("div",{style:{background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:8,padding:"10px 12px",display:"flex",flexDirection:"column",gap:4,minHeight:76,position:"relative",transition:"border-color 0.15s"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsx(Ua,{driver:b,size:18,fallbackColor:M}),i.jsx("span",{style:{fontSize:12,fontWeight:600,color:t.textPrimary,fontFamily:t.font},children:P})]}),i.jsx("div",{style:{fontSize:10,color:t.textMuted,fontFamily:t.font,lineHeight:1.35},children:L}),i.jsx("code",{style:{fontSize:9,color:t.textMuted,fontFamily:t.fontMono,marginTop:"auto"},children:b})]},b)})})]})}function IE({t:e,editName:t,setEditName:n,editDriver:r,setEditDriver:o,editFields:s,setEditFields:a,onSave:l,onCancel:c,onDelete:d,saving:E,isNew:u}){const T=ky[r]??[],f={background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:4,color:e.textPrimary,fontSize:11,fontFamily:e.fontMono,padding:"4px 8px",outline:"none",width:"100%"},h={fontSize:9,fontWeight:600,color:e.textMuted,fontFamily:e.font,letterSpacing:"0.05em",textTransform:"uppercase",marginBottom:2};return i.jsxs("div",{style:{background:e.cellBg,border:`1px solid ${e.accent}40`,borderRadius:7,padding:"10px 12px",marginBottom:10},children:[i.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.accent,fontFamily:e.font,marginBottom:8},children:u?"New Connection":"Edit Connection"}),i.jsxs("div",{style:{marginBottom:6},children:[i.jsx("div",{style:h,children:"Name"}),i.jsx("input",{style:f,value:t,onChange:A=>n(A.target.value),placeholder:"e.g. production"})]}),i.jsxs("div",{style:{marginBottom:6},children:[i.jsx("div",{style:h,children:"Driver"}),i.jsx("select",{style:{...f,fontFamily:e.font},value:r,onChange:A=>{o(A.target.value),a({})},children:Object.entries(Kl).map(([A,R])=>i.jsx("option",{value:A,children:R},A))})]}),T.map(A=>i.jsxs("div",{style:{marginBottom:6},children:[i.jsx("div",{style:h,children:A}),i.jsx("input",{style:f,type:A.toLowerCase().includes("password")||A.toLowerCase().includes("token")?"password":"text",value:s[A]??"",placeholder:A==="port"?"5432":A==="filepath"?":memory:":"",onChange:R=>a({...s,[A]:R.target.value})})]},A)),i.jsxs("div",{style:{display:"flex",gap:6,marginTop:8},children:[i.jsx("button",{onClick:l,disabled:E,style:{flex:1,padding:"5px 0",borderRadius:5,border:"none",background:e.accent,color:"#fff",fontSize:11,fontFamily:e.font,fontWeight:600,cursor:E?"not-allowed":"pointer",opacity:E?.6:1},children:E?"Saving…":"Save"}),i.jsx("button",{onClick:c,style:{padding:"5px 12px",borderRadius:5,border:`1px solid ${e.btnBorder}`,background:"transparent",color:e.textSecondary,fontSize:11,fontFamily:e.font,cursor:"pointer"},children:"Cancel"}),d&&!u&&i.jsx("button",{onClick:d,style:{padding:"5px 12px",borderRadius:5,border:`1px solid ${e.error}40`,background:"transparent",color:e.error,fontSize:11,fontFamily:e.font,cursor:"pointer"},children:"Delete"})]})]})}function _t({title:e,defaultOpen:t=!1,children:n,t:r}){const[o,s]=S.useState(t),[a,l]=S.useState(!1);return i.jsxs("div",{style:{borderBottom:`1px solid ${r.headerBorder}`},children:[i.jsxs("button",{onClick:()=>s(c=>!c),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{width:"100%",padding:"7px 12px",display:"flex",alignItems:"center",gap:6,background:a?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",textAlign:"left",transition:"background 0.1s"},children:[i.jsx("span",{style:{fontSize:9,color:r.textMuted,display:"inline-block",transition:"transform 0.15s",transform:o?"rotate(90deg)":"rotate(0deg)",lineHeight:1},children:"▶"}),i.jsx("span",{style:{fontSize:11,fontWeight:600,fontFamily:r.font,color:r.textSecondary,letterSpacing:"0.04em"},children:e})]}),o&&i.jsx("div",{style:{padding:"4px 12px 10px"},children:n})]})}function Yy({code:e,t}){const[n,r]=S.useState(!1);async function o(){try{await navigator.clipboard.writeText(e)}catch{const s=document.createElement("textarea");s.value=e,document.body.appendChild(s),s.select(),document.execCommand("copy"),document.body.removeChild(s)}r(!0),setTimeout(()=>r(!1),1500)}return i.jsx("button",{onClick:o,title:"Copy to clipboard",style:{position:"absolute",top:6,right:6,padding:"2px 6px",fontSize:10,fontFamily:t.font,background:n?`${t.success}20`:t.btnBg,border:`1px solid ${n?t.success+"50":t.btnBorder}`,borderRadius:4,cursor:"pointer",color:n?t.success:t.textMuted,transition:"all 0.15s"},children:n?"✓":"Copy"})}function Ue({code:e,t}){return i.jsxs("div",{style:{position:"relative",marginTop:6},children:[i.jsx("pre",{style:{margin:0,padding:"8px 10px",paddingRight:52,background:t.editorBg,border:`1px solid ${t.cellBorder}`,borderRadius:6,fontFamily:t.fontMono,fontSize:11,color:t.textPrimary,lineHeight:1.6,whiteSpace:"pre",overflowX:"auto"},children:e}),i.jsx(Yy,{code:e,t})]})}function NE({rows:e,t}){return i.jsx("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:11,fontFamily:t.font,marginTop:6},children:i.jsx("tbody",{children:e.map(([n,r],o)=>i.jsxs("tr",{style:{borderBottom:`1px solid ${t.tableBorder}`},children:[i.jsx("td",{style:{padding:"5px 6px 5px 0",fontFamily:t.fontMono,fontSize:11,color:t.accent,whiteSpace:"nowrap",verticalAlign:"top",width:"45%"},children:n}),i.jsx("td",{style:{padding:"5px 0",color:t.textSecondary,verticalAlign:"top",lineHeight:1.5},children:r})]},o))})})}const Wy=`block "Revenue by Channel" {
304
- domain = "revenue"
305
- type = "custom"
306
- description = "Revenue grouped by sales channel"
307
- owner = "data-team"
308
- tags = ["revenue"]
309
-
310
- params {
311
- period = "current_quarter"
312
- }
313
-
314
- query = """
315
- SELECT channel,
316
- SUM(order_total) AS revenue
317
- FROM read_csv_auto('data/orders.csv')
318
- WHERE fiscal_period = \${period}
319
- GROUP BY channel
320
- ORDER BY revenue DESC
321
- """
322
-
323
- visualization {
324
- chart = "bar"
325
- x = channel
326
- y = revenue
327
- }
328
-
329
- tests {
330
- assert row_count > 0
331
- }
332
- }`,Vy=`# semantic-layer/metrics/total_revenue.yaml
333
- name: total_revenue
334
- label: Total Revenue
335
- description: Sum of all recognized revenue.
336
- domain: finance
337
- sql: SUM(amount)
338
- type: sum # sum|count|count_distinct|avg|min|max|custom
339
- table: fct_revenue
340
- tags:
341
- - revenue
342
- - kpi`,$y=`# semantic-layer/dimensions/segment.yaml
343
- name: segment
344
- label: Customer Segment
345
- description: Customer segment tier.
346
- sql: segment_tier
347
- type: string # string|number|date|boolean
348
- table: fct_revenue`,Xy=`# semantic-layer/hierarchies/time.yaml
349
- name: fiscal_time
350
- label: Fiscal Time
351
- description: Drill from year to quarter.
352
- domain: finance
353
- levels:
354
- - name: fiscal_year
355
- dimension: fiscal_year
356
- order: 1
357
- - name: fiscal_quarter
358
- dimension: fiscal_quarter
359
- order: 2
360
- defaultRollup: sum`,Ky=`# semantic-layer/cubes/revenue_cube.yaml
361
- name: revenue
362
- label: Revenue Cube
363
- table: fct_revenue
364
- domain: finance
365
-
366
- measures:
367
- - name: total_revenue
368
- sql: SUM(amount)
369
- type: sum
370
- - name: deal_count
371
- sql: COUNT(*)
372
- type: count
373
-
374
- dimensions:
375
- - name: segment_tier
376
- sql: segment_tier
377
- type: string
378
-
379
- time_dimensions:
380
- - name: recognized_at
381
- sql: recognized_at
382
- primary_time: true
383
- granularities: [day, month, quarter, year]
384
-
385
- joins:
386
- - name: customers
387
- type: left
388
- sql: "\${left}.customer_id = \${right}.id"`,zy=`{
389
- "semanticLayer": {
390
- "provider": "dql"
391
- }
392
- }`,Jy=`{
393
- "semanticLayer": {
394
- "provider": "dbt",
395
- "projectPath": "/path/to/your/dbt-project"
396
- }
397
- }`,qy=`{
398
- "semanticLayer": {
399
- "provider": "cubejs",
400
- "projectPath": "/path/to/your/cube-project"
401
- }
402
- }`,Qy=`{
403
- "defaultConnection": {
404
- "driver": "file",
405
- "filepath": ":memory:"
406
- }
407
- }`,Zy=`{
408
- "defaultConnection": {
409
- "driver": "snowflake",
410
- "account": "acme.snowflakecomputing.com",
411
- "username": "your_user",
412
- "password": "\${SNOWFLAKE_PASSWORD}",
413
- "database": "ANALYTICS",
414
- "schema": "PUBLIC",
415
- "warehouse": "COMPUTE_WH",
416
- "role": "ANALYST"
417
- }
418
- }`,e_=`{
419
- "defaultConnection": {
420
- "driver": "bigquery",
421
- "project": "your-gcp-project-id",
422
- "dataset": "analytics",
423
- "keyFilename": "./service-account.json"
424
- }
425
- }`,t_=`{
426
- "defaultConnection": {
427
- "driver": "postgres",
428
- "host": "localhost",
429
- "port": 5432,
430
- "database": "analytics",
431
- "username": "your_user",
432
- "password": "\${POSTGRES_PASSWORD}"
433
- }
434
- }`,n_=`-- Primary workflow: use Compose Query in the Semantic Layer panel
435
- -- 1. Pick metrics + dimensions (+ optional time dimension)
436
- -- 2. Click "Compose SQL"
437
- -- 3. Click "+ Insert as Cell" → edit and run
438
-
439
- -- Advanced: reference metrics inline in any SQL cell
440
- -- DQL resolves @metric() and @dim() at query time
441
- SELECT
442
- @dim(segment_tier),
443
- @metric(total_revenue)
444
- FROM fct_revenue
445
- GROUP BY @dim(segment_tier)
446
- ORDER BY @metric(total_revenue) DESC`,r_=`{
447
- "semanticLayer": {
448
- "provider": "snowflake",
449
- "projectPath": "MY_DATABASE"
450
- }
451
- }`;function jR({themeMode:e}){const t=ie[e];return i.jsxs(Ft,{title:"Reference",subtitle:"Quick syntax, operators, and cell reference.",bodyPadding:0,children:[i.jsx(_t,{title:"SQL Essentials",defaultOpen:!0,t,children:i.jsx(Ue,{t,code:`-- Basic select
452
- SELECT col1, col2
453
- FROM table_name
454
- WHERE condition
455
- ORDER BY col1 DESC
456
- LIMIT 100
457
-
458
- -- GROUP BY
459
- SELECT col, COUNT(*), SUM(val)
460
- FROM table_name
461
- GROUP BY col
462
-
463
- -- JOIN
464
- SELECT a.*, b.col
465
- FROM table_a AS a
466
- JOIN table_b AS b ON a.id = b.id
467
-
468
- -- CTE (WITH)
469
- WITH cte AS (
470
- SELECT * FROM table_name WHERE val > 0
471
- )
472
- SELECT * FROM cte
473
-
474
- -- Window function
475
- SELECT *,
476
- ROW_NUMBER() OVER (
477
- PARTITION BY group_col
478
- ORDER BY val DESC
479
- ) AS rank
480
- FROM table_name`})}),i.jsx(_t,{title:"DuckDB Functions",defaultOpen:!1,t,children:i.jsx(NE,{t,rows:[["read_csv_auto(path)","Auto-detect CSV schema and load"],["read_parquet(path)","Load a Parquet file"],["strftime(date, fmt)","Format date as string (e.g. '%Y-%m')"],["date_trunc(part, date)","Truncate date to part ('month', 'year'…)"],["CURRENT_DATE","Today's date"],["epoch_ms(ts)","Convert epoch milliseconds to timestamp"],["array_agg(col)","Aggregate column values into an array"],["string_agg(col, sep)","Concatenate values with separator"]]})}),i.jsxs(_t,{title:"DQL Block Structure",defaultOpen:!0,t,children:[i.jsx(Ue,{t,code:Wy}),i.jsxs("div",{style:{marginTop:8,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.6},children:["Run ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"dql certify <file> --connection duckdb"})," to execute ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"tests {}"})," assertions against live data. Use ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"--skip-tests"})," to check governance fields only."]})]}),i.jsxs(_t,{title:"DQL Chart Types",defaultOpen:!1,t,children:[i.jsx(NE,{t,rows:[["table","Tabular data grid (default)"],["bar","Bar chart — use x and y fields"],["line","Line chart — use x (date) and y (value)"],["pie","Pie/donut chart — use x (label) and y (value)"],["kpi","Single big-number KPI card (dql preview)"]]}),i.jsxs("div",{style:{marginTop:8,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.6},children:["Set chart type inside the"," ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:'visualization { chart = "pie"; x = label_col; y = value_col }'})," ","block."]})]}),i.jsxs(_t,{title:"Semantic Layer Usage",defaultOpen:!1,t,children:[i.jsxs("div",{style:{fontSize:12,color:t.textSecondary,lineHeight:1.7,fontFamily:t.font,marginBottom:6},children:["Primary workflow: open the ",i.jsx("strong",{children:"Semantic Layer"})," panel → Compose Query → pick metrics and dimensions → Compose SQL → + Insert as Cell. Advanced: use ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"@metric(name)"})," and ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"@dim(name)"})," refs directly in any SQL cell."]}),i.jsx(Ue,{t,code:n_})]}),i.jsxs(_t,{title:"Semantic Layer",defaultOpen:!1,t,children:[i.jsxs("div",{style:{fontSize:12,color:t.textSecondary,lineHeight:1.7,fontFamily:t.font,marginBottom:8},children:["Define reusable metrics, dimensions, and hierarchies in YAML. They appear in the"," ",i.jsx("strong",{style:{color:t.textPrimary},children:"Semantic Layer"})," sidebar panel."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"Directory Structure"}),i.jsx(Ue,{t,code:`my-project/
481
- ├── dql.config.json
482
- └── semantic-layer/
483
- ├── metrics/ ← one YAML per metric
484
- ├── dimensions/ ← one YAML per dimension
485
- ├── hierarchies/ ← optional drill paths
486
- └── cubes/ ← optional (groups all into one)`}),i.jsxs("div",{style:{marginTop:8,padding:"6px 8px",background:`${t.accent}10`,border:`1px solid ${t.accent}30`,borderRadius:4,fontSize:11,color:t.textSecondary,fontFamily:t.font,lineHeight:1.6},children:[i.jsx("strong",{style:{color:t.textPrimary},children:"Recommended:"})," For multi-table projects, use a ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"cubes/"})," file — it keeps metrics, dimensions, and joins together. Use standalone ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"metrics/"})," and ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"dimensions/"})," files only for simple single-table projects."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Metric YAML"}),i.jsx(Ue,{t,code:Vy}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Dimension YAML"}),i.jsx(Ue,{t,code:$y}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Hierarchy YAML"}),i.jsx(Ue,{t,code:Xy}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Cube YAML (advanced — multi-table with joins)"}),i.jsx(Ue,{t,code:Ky})]}),i.jsxs(_t,{title:"Semantic Layer Providers",defaultOpen:!1,t,children:[i.jsxs("div",{style:{fontSize:12,color:t.textSecondary,lineHeight:1.7,fontFamily:t.font,marginBottom:8},children:["Add to your ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"dql.config.json"})," to connect a semantic layer provider."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"DQL Native (YAML files in semantic-layer/)"}),i.jsx(Ue,{t,code:zy}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"dbt (reads models/**/*.yml)"}),i.jsx(Ue,{t,code:Jy}),i.jsxs("div",{style:{marginTop:4,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.5},children:["Point to your dbt project root (directory with ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"dbt_project.yml"}),"). Reads ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"semantic_models"})," and"," ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"metrics"})," blocks (dbt 1.6+)."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Cube.js (reads model/ or schema/)"}),i.jsx(Ue,{t,code:qy}),i.jsxs("div",{style:{marginTop:4,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.5},children:["Point to your Cube.js project root. Reads"," ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"cubes:"})," blocks from YAML schema files."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Snowflake Semantic Views (requires live connection)"}),i.jsx(Ue,{t,code:r_}),i.jsxs("div",{style:{marginTop:4,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.5},children:["Introspects Snowflake semantic views via"," ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"SHOW SEMANTIC VIEWS"}),". Set ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"projectPath"})," to your database name to scope discovery. Requires a Snowflake connection in ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"defaultConnection"}),"."]})]}),i.jsxs(_t,{title:"Connection Setup",defaultOpen:!1,t,children:[i.jsxs("div",{style:{fontSize:12,color:t.textSecondary,lineHeight:1.7,fontFamily:t.font,marginBottom:8},children:["Configure ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"defaultConnection"})," in"," ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"dql.config.json"}),"."]}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"DuckDB (in-memory — default)"}),i.jsx(Ue,{t,code:Qy}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Snowflake"}),i.jsx(Ue,{t,code:Zy}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"BigQuery"}),i.jsx(Ue,{t,code:e_}),i.jsx("div",{style:{fontSize:11,fontWeight:600,color:t.textSecondary,fontFamily:t.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"PostgreSQL"}),i.jsx(Ue,{t,code:t_}),i.jsxs("div",{style:{marginTop:8,fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.5},children:["Use ",i.jsxs("code",{style:{fontFamily:t.fontMono,fontSize:10},children:["$","${ENV_VAR}"]})," syntax for secrets. Run ",i.jsx("code",{style:{fontFamily:t.fontMono,fontSize:10},children:"dql doctor"})," to verify your connection."]})]}),i.jsxs(_t,{title:"Variable References",defaultOpen:!1,t,children:[i.jsxs("div",{style:{fontSize:12,color:t.textSecondary,lineHeight:1.7,fontFamily:t.font,marginBottom:8},children:["Use"," ",i.jsx("code",{style:{fontFamily:t.fontMono,color:t.accent,fontSize:11},children:"{{cell_name}}"})," ","to reference other cells:",i.jsxs("ul",{style:{margin:"6px 0 0",paddingLeft:18},children:[i.jsxs("li",{children:[i.jsx("strong",{children:"Param cell"})," → substituted as a SQL literal value"]}),i.jsxs("li",{children:[i.jsx("strong",{children:"SQL cell"})," → injected as a CTE"]})]})]}),i.jsx(Ue,{t,code:`-- Param cell named "start_date" holds '2024-01-01'
487
- SELECT *
488
- FROM read_csv_auto('data/sales.csv')
489
- WHERE date >= {{start_date}}
490
-
491
- -- SQL cell named "base_query" used as CTE
492
- SELECT segment, SUM(revenue) AS total
493
- FROM {{base_query}}
494
- GROUP BY segment`})]})]})}const Be={source_table:"#8b949e",dbt_model:"#ff7b72",dbt_source:"#79c0ff",block:"#56d364",metric:"#388bfd",dimension:"#e3b341",domain:"#d2a8ff",chart:"#f778ba",dashboard:"#d2a8ff"},Fi={source_table:"TBL",dbt_model:"DBT",dbt_source:"SRC",block:"BLK",metric:"MET",dimension:"DIM",domain:"DOM",chart:"CHT",dashboard:"DASH"},Gi={source_table:"Source Table",dbt_model:"dbt Model",dbt_source:"dbt Source",block:"DQL Block",metric:"Metric",dimension:"Dimension",domain:"Domain",chart:"Chart",dashboard:"Notebook"},Kr={reads_from:"#8b949e",feeds_into:"#56d364",aggregates:"#388bfd",visualizes:"#f778ba",depends_on:"#ff7b72",contains:"#d2a8ff",crosses_domain:"#d2a8ff"},o_={reads_from:"reads from",feeds_into:"feeds into",aggregates:"aggregates into",visualizes:"visualizes",depends_on:"dbt depends on",contains:"contains",crosses_domain:"crosses domain"},s_={source:"#79c0ff",transform:"#ff7b72",answer:"#56d364",consumption:"#d2a8ff"},OE={source:"Sources",transform:"Transform",answer:"Answer",consumption:"Consumption"},Qs=["source","transform","answer","consumption"];function Jc(e){if(e.layer)return e.layer;switch(e.type){case"source_table":case"dbt_source":return"source";case"dbt_model":return"transform";case"block":case"metric":case"dimension":case"domain":return"answer";case"chart":case"dashboard":return"consumption";default:return"answer"}}function i_({type:e}){const t=Be[e]??"#8b949e";return i.jsx("span",{style:{color:t,fontSize:10,fontWeight:700,textTransform:"uppercase",minWidth:34},title:Gi[e]??e,children:Fi[e]??e.slice(0,4).toUpperCase()})}function a_({value:e,onChange:t,placeholder:n,t:r}){return i.jsx("input",{value:e,onChange:o=>t(o.target.value),placeholder:n,style:{width:"100%",padding:"8px 10px",borderRadius:6,border:`1px solid ${r.headerBorder}`,background:r.sidebarBg,color:r.textPrimary,fontSize:12,outline:"none"}})}function YR({node:e,t,onClick:n,secondary:r}){return i.jsxs("button",{onClick:n,style:{width:"100%",textAlign:"left",background:"transparent",border:"none",borderRadius:6,padding:"6px 8px",cursor:"pointer",color:t.textPrimary},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx(i_,{type:e.type}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12},title:e.name,children:e.name})]}),(r||e.domain)&&i.jsx("div",{style:{marginLeft:40,marginTop:2,color:t.textMuted,fontSize:11},children:r??e.domain})]})}const l_=30,wa=200;function In({title:e,nodes:t,t:n,onSelect:r}){const o=t.length>l_,[s,a]=S.useState(!o),[l,c]=S.useState(wa);if(t.length===0)return null;const d=s?Math.min(l,t.length):0,E=Math.max(0,t.length-d);return i.jsxs("div",{style:{padding:"8px 0",borderTop:`1px solid ${n.headerBorder}`},children:[i.jsxs("button",{onClick:()=>a(u=>!u),"aria-expanded":s,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"0 8px 6px",color:n.textMuted,fontSize:11,fontWeight:700,textTransform:"uppercase",background:"transparent",border:"none",cursor:"pointer",textAlign:"left"},children:[i.jsx("span",{style:{display:"inline-block",width:10},children:s?"▾":"▸"}),i.jsx("span",{children:e}),i.jsx("span",{style:{marginLeft:"auto",fontWeight:500},children:t.length})]}),s&&t.slice(0,d).map(u=>i.jsx(YR,{node:u,t:n,onClick:()=>r(u)},u.id)),s&&E>0&&i.jsxs("button",{onClick:()=>c(u=>u+wa),style:{width:"100%",margin:"4px 0 0",padding:"6px 8px",background:"transparent",border:"none",color:n.textMuted,fontSize:11,cursor:"pointer",textAlign:"left"},children:["Show ",Math.min(wa,E)," more (",E," hidden)"]})]})}function c_(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(!0),[s,a]=S.useState([]),[,l]=S.useState([]),[c,d]=S.useState(""),[E,u]=S.useState([]),T=S.useCallback(async()=>{o(!0);const I=await J.fetchLineage();a(I.nodes??[]),l(I.edges??[]),o(!1)},[]);S.useEffect(()=>{T()},[T]),S.useEffect(()=>{let I=!1;if(c.trim().length<2){u([]);return}return J.searchLineage(c.trim()).then(O=>{I||u(O.matches??[])}),()=>{I=!0}},[c]);const f=S.useCallback(I=>{t({type:"SET_LINEAGE_FOCUS",nodeId:I.id}),t({type:"OPEN_LINEAGE_DRAWER",nodeId:I.id})},[t]),[h,A]=S.useState("type"),R=S.useMemo(()=>({dashboards:s.filter(I=>I.type==="dashboard"),blocks:s.filter(I=>I.type==="block"),dbtModels:s.filter(I=>I.type==="dbt_model"),dbtSources:s.filter(I=>I.type==="dbt_source"),tables:s.filter(I=>I.type==="source_table"),domains:s.filter(I=>I.type==="domain")}),[s]),p=S.useMemo(()=>{const I={source:[],transform:[],answer:[],consumption:[]};for(const O of s){const C=Jc(O);I[C].push(O)}return I},[s]);if(r)return i.jsx("div",{style:{padding:16,color:n.textMuted,fontSize:12},children:"Loading lineage..."});if(s.length===0)return i.jsx(Ft,{title:"Lineage",bodyPadding:0,children:i.jsx(vt,{title:"No lineage data",description:"Run `dql compile` or add notebooks/blocks first."})});const N=i.jsx(xo,{children:i.jsx(a_,{value:c,onChange:d,placeholder:"Search blocks, tables, dbt models, notebooks...",t:n})});return i.jsxs(Ft,{title:"Lineage",toolbar:N,bodyPadding:0,children:[i.jsxs("div",{style:{padding:8,borderBottom:`1px solid ${n.headerBorder}`},children:[i.jsx("button",{onClick:()=>t({type:"TOGGLE_LINEAGE_FULLSCREEN"}),style:{width:"100%",padding:"8px 10px",borderRadius:6,border:`1px solid ${e.lineageFullscreen?"#388bfd":n.headerBorder}`,background:e.lineageFullscreen?"#388bfd":"transparent",color:e.lineageFullscreen?"#fff":n.textPrimary,fontSize:12,fontWeight:600,cursor:"pointer"},children:e.lineageFullscreen?"Close Graph View":"Open Graph View"}),i.jsx("div",{style:{marginTop:8,color:n.textMuted,fontSize:11,lineHeight:1.5},children:"Search across source tables, dbt sources/models, DQL blocks, metrics, and notebooks. Selecting any item opens a focused lineage path instead of the full graph."})]}),i.jsxs("div",{style:{flex:1,overflow:"auto"},children:[c.trim().length>=2&&E.length>0&&i.jsxs("div",{style:{padding:8,borderBottom:`1px solid ${n.headerBorder}`},children:[i.jsx("div",{style:{color:n.textMuted,fontSize:11,fontWeight:700,textTransform:"uppercase",marginBottom:6},children:"Search Results"}),E.slice(0,8).map(I=>i.jsx(YR,{node:I.node,t:n,onClick:()=>f(I.node),secondary:I.node.domain},I.node.id))]}),i.jsxs("div",{style:{padding:"6px 8px",display:"flex",gap:8,flexWrap:"wrap",borderBottom:`1px solid ${n.headerBorder}`},children:[Qs.map(I=>{const O=p[I].length;return O===0?null:i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:3,fontSize:10,color:n.textMuted},children:[i.jsx("span",{style:{width:8,height:8,borderRadius:2,background:s_[I],display:"inline-block"}}),OE[I],": ",O]},I)}),i.jsx("span",{style:{flex:1}}),i.jsxs("div",{style:{display:"flex",borderRadius:4,border:`1px solid ${n.headerBorder}`,overflow:"hidden"},children:[i.jsx("button",{onClick:()=>A("type"),style:{padding:"2px 6px",fontSize:9,fontWeight:700,border:"none",cursor:"pointer",background:h==="type"?`${n.headerBorder}`:"transparent",color:h==="type"?n.textPrimary:n.textMuted},children:"Type"}),i.jsx("button",{onClick:()=>A("layer"),style:{padding:"2px 6px",fontSize:9,fontWeight:700,border:"none",cursor:"pointer",borderLeft:`1px solid ${n.headerBorder}`,background:h==="layer"?`${n.headerBorder}`:"transparent",color:h==="layer"?n.textPrimary:n.textMuted},children:"Layer"})]})]}),h==="type"?i.jsxs(i.Fragment,{children:[i.jsx(In,{title:"Notebooks",nodes:R.dashboards,t:n,onSelect:f}),i.jsx(In,{title:"DQL Blocks",nodes:R.blocks,t:n,onSelect:f}),i.jsx(In,{title:"dbt Models",nodes:R.dbtModels,t:n,onSelect:f}),i.jsx(In,{title:"dbt Sources",nodes:R.dbtSources,t:n,onSelect:f}),i.jsx(In,{title:"Source Tables",nodes:R.tables,t:n,onSelect:f}),i.jsx(In,{title:"Business Domains",nodes:R.domains,t:n,onSelect:f})]}):i.jsx(i.Fragment,{children:Qs.map(I=>i.jsx(In,{title:OE[I],nodes:p[I],t:n,onSelect:f},I))})]})]})}const d_={certified:"success",published:"success",deprecated:"error",draft:"warning",pending:"warning",review:"accent"};function E_(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState([]),[s,a]=S.useState(!0),[l,c]=S.useState(""),[d,E]=S.useState(""),[u,T]=S.useState("");S.useEffect(()=>{a(!0),J.getBlockLibrary().then(g=>o(g.blocks)).finally(()=>a(!1))},[]);const f=[...new Set(r.map(g=>g.domain))].sort(),h=[...new Set(r.map(g=>g.status))].sort(),A=r.filter(g=>!(l&&!g.name.toLowerCase().includes(l.toLowerCase())&&!g.description.toLowerCase().includes(l.toLowerCase())||d&&g.domain!==d||u&&g.status!==u)),R=g=>{const y={name:g.path.split("/").pop()??g.name,path:g.path,type:"block",folder:"blocks"};e.files.some(x=>x.path===g.path)||t({type:"FILE_ADDED",file:y}),J.openBlockStudio(g.path).then(x=>{t({type:"OPEN_BLOCK_STUDIO",file:y,payload:x})})},p=()=>{a(!0),J.getBlockLibrary().then(g=>o(g.blocks)).finally(()=>a(!1))},N={background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:6,color:n.textPrimary,fontSize:11,fontFamily:n.font,padding:"6px 10px",outline:"none"},I=`data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path fill='none' stroke='${n.textMuted}' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2 4l3 3 3-3'/></svg>`)}`,O={...N,appearance:"none",WebkitAppearance:"none",MozAppearance:"none",backgroundImage:`url("${I}")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 8px center",paddingRight:24,cursor:"pointer"},C=i.jsxs(i.Fragment,{children:[i.jsx("button",{onClick:()=>t({type:"OPEN_NEW_BLOCK_MODAL"}),style:{background:n.accent,border:"none",borderRadius:4,color:"#fff",cursor:"pointer",fontSize:10,fontWeight:600,fontFamily:n.font,padding:"3px 10px"},children:"+ New"}),i.jsx("button",{onClick:p,style:{background:"transparent",border:`1px solid ${n.cellBorder}`,borderRadius:4,color:n.textSecondary,cursor:"pointer",fontSize:10,fontFamily:n.font,padding:"3px 8px"},children:"Refresh"})]}),m=i.jsxs(xo,{children:[i.jsx("input",{value:l,onChange:g=>c(g.target.value),placeholder:"Search blocks...",style:{...N,flex:1,minWidth:100}}),i.jsxs("select",{value:d,onChange:g=>E(g.target.value),style:O,children:[i.jsx("option",{value:"",children:"All domains"}),f.map(g=>i.jsx("option",{value:g,children:g},g))]}),i.jsxs("select",{value:u,onChange:g=>T(g.target.value),style:O,children:[i.jsx("option",{value:"",children:"All statuses"}),h.map(g=>i.jsx("option",{value:g,children:g},g))]})]});return i.jsx(Ft,{title:"Blocks",status:i.jsx("span",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font},children:A.length}),actions:C,toolbar:m,bodyPadding:0,children:s?i.jsx(vt,{title:"Loading blocks…"}):A.length===0?i.jsx(vt,{title:r.length===0?"No blocks yet":"No matches",description:r.length===0?"Create your first block to get started.":"No blocks match your filters."}):A.map(g=>i.jsxs("button",{onClick:()=>R(g),style:{display:"block",width:"100%",textAlign:"left",background:"transparent",border:"none",borderBottom:`1px solid ${n.cellBorder}`,cursor:"pointer",padding:"10px 12px",transition:"background 0.1s"},onMouseEnter:y=>{y.currentTarget.style.background=`${n.accent}0a`},onMouseLeave:y=>{y.currentTarget.style.background="transparent"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[i.jsx("span",{style:{fontSize:12,fontWeight:600,color:n.textPrimary,fontFamily:n.font},children:g.name}),i.jsx(zc,{tone:d_[g.status]??"neutral",children:g.status})]}),g.description&&i.jsx("div",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font,lineHeight:1.3,marginBottom:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:g.description}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:10,color:n.textMuted,fontFamily:n.font},children:[i.jsx("span",{style:{background:n.pillBg,padding:"1px 6px",borderRadius:4},children:g.domain}),g.owner&&i.jsxs("span",{children:["by ",g.owner]}),g.llmContext&&i.jsx("span",{title:g.llmContext,style:{color:n.accent,fontWeight:600,letterSpacing:"0.04em"},children:"AI"}),i.jsx("span",{style:{marginLeft:"auto"},children:new Date(g.lastModified).toLocaleDateString()})]})]},g.path))})}function u_({diff:e,diffReport:t,activeFilePath:n,diffPath:r,onScopeToFile:o,onClearScope:s,t:a}){const l=t!==null&&!t.identical,c=e.trim()!=="";return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[i.jsxs("div",{style:{display:"flex",gap:6,fontSize:11},children:[i.jsx("button",{onClick:s,style:gE(r==null,a),children:"All"}),n&&i.jsx("button",{onClick:o,style:gE(r===n,a),children:"Active file"}),r&&i.jsx("span",{style:{color:a.textMuted,fontSize:10,alignSelf:"center",fontFamily:a.fontMono},children:r})]}),l&&i.jsx(T_,{report:t,t:a}),!l&&c&&i.jsx(R_,{diff:e,t:a}),!l&&!c&&i.jsx("div",{style:{color:a.textMuted},children:t&&t.identical?"No semantic changes.":"No unstaged changes."})]})}function T_({report:e,t}){return i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:e.changes.map((n,r)=>i.jsx(f_,{change:n,t},r))})}function f_({change:e,t}){const{marker:n,color:r,label:o}=p_(e),s="fields"in e?e.fields:null;return i.jsxs("div",{style:{border:`1px solid ${t.editorBorder}`,borderRadius:6,padding:"6px 10px",background:t.editorBg},children:[i.jsxs("div",{style:{display:"flex",gap:8,alignItems:"baseline"},children:[i.jsx("span",{style:{color:r,fontFamily:t.fontMono,fontWeight:700,width:14},children:n}),i.jsx("span",{style:{color:t.textPrimary,fontSize:12,fontFamily:t.fontMono},children:o})]}),s&&s.length>0&&i.jsx("div",{style:{marginTop:4,display:"flex",flexDirection:"column",gap:2},children:s.map((a,l)=>i.jsx(S_,{field:a,t},l))})]})}function S_({field:e,t}){return i.jsxs("div",{style:{fontSize:11,fontFamily:t.fontMono,color:t.textPrimary,paddingLeft:22},children:[i.jsx("span",{style:{color:t.accent},children:e.path}),i.jsx("span",{style:{color:t.textMuted},children:": "}),i.jsx("span",{style:{color:t.error,textDecoration:"line-through"},children:mE(e.before)}),i.jsx("span",{style:{color:t.textMuted},children:" → "}),i.jsx("span",{style:{color:t.success},children:mE(e.after)})]})}function R_({diff:e,t}){return i.jsx("pre",{style:{fontFamily:t.fontMono,fontSize:11,margin:0,padding:8,background:t.editorBg,border:`1px solid ${t.editorBorder}`,borderRadius:6,overflow:"auto",whiteSpace:"pre",color:t.textPrimary},children:e.split(`
495
- `).map((n,r)=>i.jsx("div",{style:{color:A_(n,t)},children:n||" "},r))})}function p_(e){const t={marker:"+",color:"#3cb371"},n={marker:"-",color:"#e06060"},r={marker:"~",color:"#d4a24c"};switch(e.kind){case"block-added":return{...t,label:`block "${e.name}"`};case"block-removed":return{...n,label:`block "${e.name}"`};case"block-changed":return{...r,label:`block "${e.name}"`};case"dashboard-added":return{...t,label:`dashboard "${e.title}"`};case"dashboard-removed":return{...n,label:`dashboard "${e.title}"`};case"dashboard-changed":return{...r,label:`dashboard "${e.title}"`};case"workbook-added":return{...t,label:`workbook "${e.title}"`};case"workbook-removed":return{...n,label:`workbook "${e.title}"`};case"workbook-changed":return{...r,label:`workbook "${e.title}"`};case"cell-added":return{...t,label:`cell ${Ba(e.id,e.name)} [${e.cellType}]`};case"cell-removed":return{...n,label:`cell ${Ba(e.id,e.name)} [${e.cellType}]`};case"cell-changed":return{...r,label:`cell ${Ba(e.id,e.name)}`};case"notebook-changed":return{...r,label:"notebook"}}}function Ba(e,t){return t?`"${t}" (${e.slice(0,8)})`:e.slice(0,8)}function mE(e,t=60){if(e==null)return"∅";const n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t)}…`:n}function gE(e,t){return{background:e?t.btnHover:"transparent",color:e?t.textPrimary:t.textMuted,border:`1px solid ${t.headerBorder}`,padding:"2px 8px",borderRadius:4,fontSize:11,cursor:"pointer"}}function A_(e,t){return e.startsWith("+++")||e.startsWith("---")?t.textMuted:e.startsWith("+")?t.success:e.startsWith("-")?t.error:e.startsWith("@@")?t.accent:t.textPrimary}const h_=2e3,I_={modified:{label:"Modified",color:e=>e.warning,Icon:EL},added:{label:"Added",color:e=>e.success,Icon:_R},deleted:{label:"Deleted",color:e=>e.error,Icon:AL},renamed:{label:"Renamed",color:e=>e.accent,Icon:Gx},untracked:{label:"Untracked",color:e=>e.textMuted,Icon:fL}},CE=["modified","added","renamed","deleted","untracked"];function N_(e){const t=e.trim();return t==="??"?"untracked":t.startsWith("R")?"renamed":t.includes("D")?"deleted":t.includes("A")?"added":"modified"}function O_(){var m;const{state:e}=fe(),t=ie[e.themeMode],[n,r]=S.useState("status"),[o,s]=S.useState(null),[a,l]=S.useState(null),[c,d]=S.useState(""),[E,u]=S.useState(null),[T,f]=S.useState(null),[h,A]=S.useState(!1),[R,p]=S.useState(!1),N=S.useCallback(async()=>{A(!0),p(!0);try{if(n==="status")s(await J.fetchGitStatus());else if(n==="log")l(await J.fetchGitLog(30));else{const g=await J.fetchGitDiff(T??void 0);d(g.diff),u(g.diffReport)}}finally{A(!1),window.setTimeout(()=>p(!1),400)}},[n,T]);S.useEffect(()=>{N()},[N]),S.useEffect(()=>{if(n!=="status")return;const g=window.setInterval(()=>{J.fetchGitStatus().then(y=>{s(x=>m_(x,y)?x:y)})},h_);return()=>window.clearInterval(g)},[n]);const I=((m=e.activeFile)==null?void 0:m.path)??null,O=i.jsxs("button",{onClick:()=>void N(),title:"Refresh","aria-label":"Refresh",style:{background:"transparent",border:`1px solid ${t.btnBorder}`,cursor:"pointer",color:t.textMuted,padding:"3px 6px",borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center"},children:[i.jsx(PR,{size:12,strokeWidth:1.75,style:{animation:R?"dql-spin 0.6s linear":void 0}}),i.jsx("style",{children:"@keyframes dql-spin { to { transform: rotate(360deg); } }"})]}),C=i.jsxs(xo,{children:[i.jsx(Fa,{t,active:n==="status",onClick:()=>r("status"),children:"Status"}),i.jsx(Fa,{t,active:n==="log",onClick:()=>r("log"),children:"History"}),i.jsx(Fa,{t,active:n==="diff",onClick:()=>r("diff"),children:"Diff"})]});return i.jsxs(Ft,{title:"Git",actions:O,toolbar:C,bodyPadding:12,children:[h&&!o&&!a&&i.jsx(vt,{title:"Loading…"}),n==="status"&&o&&i.jsx(g_,{status:o,t}),n==="log"&&a&&i.jsx(__,{log:a,t}),n==="diff"&&i.jsx(u_,{diff:c,diffReport:E,activeFilePath:I,diffPath:T,onScopeToFile:()=>f(I),onClearScope:()=>f(null),t})]})}function m_(e,t){if(!e||e.inRepo!==t.inRepo||e.branch!==t.branch||e.ahead!==t.ahead||e.behind!==t.behind||e.changes.length!==t.changes.length)return!1;const n=e.changes.map(o=>`${o.path}\0${o.status}`).sort(),r=t.changes.map(o=>`${o.path}\0${o.status}`).sort();for(let o=0;o<n.length;o++)if(n[o]!==r[o])return!1;return!0}function g_({status:e,t}){const n=S.useMemo(()=>{const r={modified:[],added:[],deleted:[],renamed:[],untracked:[]};for(const o of e.changes)r[N_(o.status)].push(o);for(const o of CE)r[o].sort((s,a)=>s.path.localeCompare(a.path));return r},[e.changes]);return e.inRepo?i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[i.jsx(C_,{status:e,t}),e.changes.length===0?i.jsx(x_,{t}):CE.map(r=>{const o=n[r];return o.length===0?null:i.jsx(L_,{group:r,items:o,t},r)})]}):i.jsx(WR,{t})}function C_({status:e,t}){const n=e.ahead??0,r=e.behind??0;return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 12px",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderLeft:`3px solid ${t.accent}`,borderRadius:7},children:[i.jsx(xr,{size:16,strokeWidth:1.75,color:t.accent}),i.jsx("span",{style:{fontSize:13,fontWeight:600,color:t.textPrimary,fontFamily:t.fontMono},children:e.branch??"detached"}),i.jsx("div",{style:{flex:1}}),n>0&&i.jsxs("span",{title:`${n} commit(s) ahead of upstream`,style:Ga(t.success,t),children:[i.jsx(xR,{size:11,strokeWidth:2})," ",n]}),r>0&&i.jsxs("span",{title:`${r} commit(s) behind upstream`,style:Ga(t.warning,t),children:[i.jsx(CR,{size:11,strokeWidth:2})," ",r]}),n===0&&r===0&&i.jsx("span",{style:{...Ga(t.textMuted,t),opacity:.7},children:"up to date"})]})}function x_({t:e}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"14px 12px",background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:7,color:e.textMuted,fontSize:12,fontFamily:e.font},children:[i.jsx(cL,{size:14,strokeWidth:1.75,color:e.success}),"Working tree clean"]})}function WR({t:e}){return i.jsx("div",{style:{padding:"14px 12px",background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:7,color:e.textMuted,fontSize:12,fontFamily:e.font},children:"Not a git repository"})}function L_({group:e,items:t,t:n}){const r=I_[e],o=r.color(n),s=r.Icon;return i.jsxs("div",{children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:6,fontSize:10,fontWeight:600,letterSpacing:"0.07em",textTransform:"uppercase",color:n.textMuted,fontFamily:n.font},children:[i.jsx(s,{size:11,strokeWidth:1.75}),i.jsx("span",{children:r.label}),i.jsx("span",{style:{marginLeft:2,padding:"0 5px",borderRadius:8,background:`${o}1a`,color:o,fontWeight:700,fontSize:9,letterSpacing:"0.04em"},children:t.length})]}),i.jsx("div",{style:{display:"flex",flexDirection:"column",background:n.cellBg,border:`1px solid ${n.cellBorder}`,borderRadius:7,overflow:"hidden"},children:t.map((a,l)=>i.jsx(y_,{change:a,t:n,color:o,divider:l<t.length-1},a.path))})]})}function y_({change:e,t,color:n,divider:r}){const o=e.status.trim()||"??";return i.jsxs("div",{title:e.path,style:{display:"flex",alignItems:"center",gap:8,padding:"6px 10px",borderBottom:r?`1px solid ${t.cellBorder}`:"none",fontFamily:t.fontMono,fontSize:11},children:[i.jsx("span",{style:{width:22,textAlign:"center",flexShrink:0,color:n,fontWeight:700,fontSize:10,letterSpacing:"0.02em"},children:o}),i.jsx("span",{style:{color:t.textPrimary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:e.path})]})}function __({log:e,t}){return e.inRepo?e.commits.length===0?i.jsx("div",{style:{padding:"14px 12px",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:7,color:t.textMuted,fontSize:12,fontFamily:t.font},children:"No commits yet"}):i.jsx("div",{style:{display:"flex",flexDirection:"column",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:7,overflow:"hidden"},children:e.commits.map((n,r)=>i.jsxs("div",{style:{display:"flex",gap:10,padding:"8px 12px",borderBottom:r<e.commits.length-1?`1px solid ${t.cellBorder}`:"none"},children:[i.jsx(MR,{size:13,strokeWidth:1.75,color:t.accent,style:{flexShrink:0,marginTop:2}}),i.jsxs("div",{style:{flex:1,minWidth:0},children:[i.jsx("div",{style:{color:t.textPrimary,fontSize:12,fontFamily:t.font,fontWeight:500,lineHeight:1.35,wordBreak:"break-word"},children:n.subject}),i.jsxs("div",{style:{color:t.textMuted,fontSize:10,marginTop:3,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[i.jsx("span",{style:{fontFamily:t.fontMono,color:t.accent},children:n.hash.slice(0,7)}),i.jsx("span",{children:"·"}),i.jsx("span",{style:{fontFamily:t.font},children:n.author}),i.jsx("span",{children:"·"}),i.jsx("span",{style:{fontFamily:t.fontMono},children:n.date})]})]})]},n.hash))}):i.jsx(WR,{t})}function Fa({active:e,onClick:t,children:n,t:r}){return i.jsx("button",{onClick:t,style:{background:e?r.btnHover:"transparent",color:e?r.textPrimary:r.textMuted,border:"none",padding:"4px 12px",borderRadius:4,fontSize:11,fontWeight:600,letterSpacing:"0.02em",cursor:"pointer",fontFamily:r.font,transition:"background 0.15s, color 0.15s"},children:n})}function Ga(e,t){return{display:"inline-flex",alignItems:"center",gap:3,padding:"1px 7px",fontSize:10,fontWeight:600,letterSpacing:"0.02em",borderRadius:10,background:`${e}1a`,color:e,fontFamily:t.font}}function D_({onOpenFile:e}){const{state:t}=fe(),n=ie[t.themeMode],[r,o]=S.useState([]),[s,a]=S.useState(!0),[l,c]=S.useState(""),[d,E]=S.useState(""),[u,T]=S.useState(new Set),f=()=>{a(!0),J.getApps().then(m=>o(m.apps)).finally(()=>a(!1))};S.useEffect(()=>{f()},[]);const h=[...new Set(r.map(m=>m.manifest.domain))].sort(),A=r.filter(m=>{const g=l.toLowerCase();return!(g&&!m.manifest.name.toLowerCase().includes(g)&&!(m.manifest.description??"").toLowerCase().includes(g)||d&&m.manifest.domain!==d)}),R=m=>{T(g=>{const y=new Set(g);return y.has(m)?y.delete(m):y.add(m),y})},p=(m,g)=>{const y=`${m.path}/notebooks/${g}`;e({name:g,path:y,type:"notebook",folder:"notebooks"})},N=(m,g)=>{const y=`${m.path}/dashboards/${g}`;e({name:g,path:y,type:"dashboard",folder:"dashboards"})},I={background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:11,fontFamily:n.font,padding:"4px 6px",outline:"none"},O=i.jsx("button",{onClick:f,style:{background:"transparent",border:`1px solid ${n.cellBorder}`,borderRadius:4,color:n.textSecondary,cursor:"pointer",fontSize:10,fontFamily:n.font,padding:"3px 8px"},children:"Refresh"}),C=i.jsxs(xo,{children:[i.jsx("input",{value:l,onChange:m=>c(m.target.value),placeholder:"Search apps...",style:{...I,flex:1,minWidth:100}}),i.jsxs("select",{value:d,onChange:m=>E(m.target.value),style:I,children:[i.jsx("option",{value:"",children:"All domains"}),h.map(m=>i.jsx("option",{value:m,children:m},m))]})]});return i.jsx(Ft,{title:"Apps",status:i.jsx("span",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font},children:A.length}),actions:O,toolbar:C,bodyPadding:0,children:s?i.jsx(vt,{title:"Loading apps…"}):A.length===0?r.length===0?i.jsx(vt,{title:"No apps yet",description:i.jsxs(i.Fragment,{children:["Create one from the CLI:",i.jsx("br",{}),i.jsx("code",{style:{display:"inline-block",marginTop:6,padding:"2px 6px",background:n.inputBg,borderRadius:3,fontSize:10},children:"dql app new <name> --domain <domain>"})]})}):i.jsx(vt,{title:"No matches",description:"No apps match your filters."}):A.map(m=>{const g=u.has(m.manifest.name);return i.jsxs("div",{style:{borderBottom:`1px solid ${n.cellBorder}`},children:[i.jsxs("button",{onClick:()=>R(m.manifest.name),style:{display:"block",width:"100%",textAlign:"left",background:"transparent",border:"none",cursor:"pointer",padding:"10px 12px",transition:"background 0.1s"},onMouseEnter:y=>{y.currentTarget.style.background=`${n.accent}0a`},onMouseLeave:y=>{y.currentTarget.style.background="transparent"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[i.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font,width:10},children:g?"▾":"▸"}),i.jsx("span",{style:{fontSize:12,fontWeight:600,color:n.textPrimary,fontFamily:n.font},children:m.manifest.name}),i.jsx(zc,{tone:"accent",children:m.manifest.domain})]}),m.manifest.description&&i.jsx("div",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font,lineHeight:1.3,marginBottom:4,marginLeft:16},children:m.manifest.description}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:10,color:n.textMuted,fontFamily:n.font,marginLeft:16},children:[m.manifest.owner&&i.jsxs("span",{children:["by ",m.manifest.owner]}),i.jsxs("span",{children:[m.notebooks.length," notebook",m.notebooks.length===1?"":"s"]}),i.jsxs("span",{children:[m.dashboards.length," dashboard",m.dashboards.length===1?"":"s"]}),m.hasDigest&&i.jsx("span",{style:{color:n.accent},children:"digest"})]})]}),g&&i.jsxs("div",{style:{padding:"4px 0 10px 28px",background:`${n.accent}04`},children:[m.notebooks.length===0&&m.dashboards.length===0&&!m.hasDigest&&i.jsx("div",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font,padding:"4px 0"},children:"(empty app scaffold)"}),m.notebooks.map(y=>i.jsxs("button",{onClick:()=>p(m,y),style:{display:"block",width:"100%",textAlign:"left",background:"transparent",border:"none",padding:"3px 12px",cursor:"pointer",fontSize:11,color:n.textSecondary,fontFamily:n.font},children:["📓 ",y]},y)),m.dashboards.map(y=>i.jsxs("button",{onClick:()=>N(m,y),style:{display:"block",width:"100%",textAlign:"left",background:"transparent",border:"none",padding:"3px 12px",cursor:"pointer",fontSize:11,color:n.textSecondary,fontFamily:n.font},children:["📊 ",y]},y)),m.hasDigest&&i.jsx("div",{style:{padding:"3px 12px",fontSize:11,color:n.textMuted,fontFamily:n.font},children:"📰 digest.dql"})]})]},m.path)})})}const M_={files:"Explorer",schema:"Schema",block_library:"Block Library",lineage:"Lineage",connection:"Connection",reference:"Quick Reference",git:"Git",apps:"Apps"};function b_({onOpenFile:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],[o,s]=S.useState(!1),[a,l]=S.useState(240),[c,d]=S.useState(!1),E=S.useRef(a),u=t.sidebarPanel,T=f=>{f.preventDefault();const h=f.clientX,A=E.current;d(!0);const R=N=>{const I=Math.min(560,Math.max(180,A+(N.clientX-h)));E.current=I,l(I)},p=()=>{d(!1),window.removeEventListener("mousemove",R),window.removeEventListener("mouseup",p)};window.addEventListener("mousemove",R),window.addEventListener("mouseup",p)};return i.jsxs("div",{style:{width:a,flexShrink:0,background:r.sidebarBg,borderRight:`1px solid ${r.headerBorder}`,display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"},children:[i.jsxs("div",{style:{height:36,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 10px 0 14px",borderBottom:`1px solid ${r.headerBorder}`},children:[i.jsx("span",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:r.textSecondary,fontFamily:r.font},children:M_[u??""]??""}),i.jsx("button",{title:"Collapse sidebar",onClick:()=>n({type:"TOGGLE_SIDEBAR"}),onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:"transparent",border:"none",cursor:"pointer",color:o?r.textPrimary:r.textMuted,padding:"2px 4px",borderRadius:4,fontSize:14,lineHeight:1,transition:"color 0.15s",display:"flex",alignItems:"center"},children:"‹"})]}),i.jsxs("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column"},children:[u==="files"&&i.jsx(gy,{onOpenFile:e}),u==="schema"&&i.jsx(_y,{}),u==="block_library"&&i.jsx(E_,{}),u==="lineage"&&i.jsx(c_,{}),u==="connection"&&i.jsx(kR,{}),u==="reference"&&i.jsx(jR,{themeMode:t.themeMode}),u==="git"&&i.jsx(O_,{}),u==="apps"&&i.jsx(D_,{onOpenFile:e})]}),i.jsx("div",{onMouseDown:T,title:"Drag to resize",style:{position:"absolute",top:0,right:-3,width:6,height:"100%",cursor:"col-resize",background:c?r.accent:"transparent",zIndex:10,transition:c?"none":"background 0.15s"},onMouseEnter:f=>{c||(f.currentTarget.style.background=`${r.accent}40`)},onMouseLeave:f=>{c||(f.currentTarget.style.background="transparent")}})]})}var xE;(function(e){e.Program="Program",e.Workbook="Workbook",e.Page="Page",e.Dashboard="Dashboard",e.ChartCall="ChartCall",e.FilterCall="FilterCall",e.VariableDecl="VariableDecl",e.ParamDecl="ParamDecl",e.ImportDecl="ImportDecl",e.UseDecl="UseDecl",e.LayoutBlock="LayoutBlock",e.LayoutRow="LayoutRow",e.Decorator="Decorator",e.SQLQuery="SQLQuery",e.NamedArg="NamedArg",e.StringLiteral="StringLiteral",e.NumberLiteral="NumberLiteral",e.BooleanLiteral="BooleanLiteral",e.ArrayLiteral="ArrayLiteral",e.Identifier="Identifier",e.BinaryExpr="BinaryExpr",e.IntervalExpr="IntervalExpr",e.FunctionCall="FunctionCall",e.TemplateString="TemplateString",e.BlockDecl="BlockDecl",e.BlockParams="BlockParams",e.BlockVisualization="BlockVisualization",e.BlockTest="BlockTest",e.Digest="Digest",e.Narrative="Narrative"})(xE||(xE={}));var LE;(function(e){e.Error="error",e.Warning="warning",e.Info="info"})(LE||(LE={}));var pe;(function(e){e.StringLiteral="StringLiteral",e.NumberLiteral="NumberLiteral",e.BooleanLiteral="BooleanLiteral",e.Identifier="Identifier",e.DashboardKeyword="DashboardKeyword",e.WorkbookKeyword="WorkbookKeyword",e.PageKeyword="PageKeyword",e.LetKeyword="LetKeyword",e.ParamKeyword="ParamKeyword",e.ChartKeyword="ChartKeyword",e.FilterKeyword="FilterKeyword",e.IntervalKeyword="IntervalKeyword",e.ImportKeyword="ImportKeyword",e.FromKeyword="FromKeyword",e.UseKeyword="UseKeyword",e.LayoutKeyword="LayoutKeyword",e.RowKeyword="RowKeyword",e.BlockKeyword="BlockKeyword",e.DomainKeyword="DomainKeyword",e.TypeKeyword="TypeKeyword",e.DescriptionKeyword="DescriptionKeyword",e.TagsKeyword="TagsKeyword",e.OwnerKeyword="OwnerKeyword",e.QueryKeyword="QueryKeyword",e.VisualizationKeyword="VisualizationKeyword",e.TestsKeyword="TestsKeyword",e.ParamsKeyword="ParamsKeyword",e.AssertKeyword="AssertKeyword",e.VarKeyword="VarKeyword",e.DefaultKeyword="DefaultKeyword",e.MetricKeyword="MetricKeyword",e.MetricsKeyword="MetricsKeyword",e.DigestKeyword="DigestKeyword",e.NarrativeKeyword="NarrativeKeyword",e.ColonToken="ColonToken",e.TripleQuoteString="TripleQuoteString",e.GreaterThan="GreaterThan",e.LessThan="LessThan",e.GreaterThanOrEqual="GreaterThanOrEqual",e.LessThanOrEqual="LessThanOrEqual",e.DoubleEquals="DoubleEquals",e.NotEquals="NotEquals",e.InKeyword="InKeyword",e.SQLFragment="SQLFragment",e.AtSign="AtSign",e.LeftParen="LeftParen",e.RightParen="RightParen",e.LeftBrace="LeftBrace",e.RightBrace="RightBrace",e.LeftBracket="LeftBracket",e.RightBracket="RightBracket",e.Comma="Comma",e.Dot="Dot",e.Equals="Equals",e.Plus="Plus",e.Minus="Minus",e.Star="Star",e.Comment="Comment",e.Newline="Newline",e.EOF="EOF"})(pe||(pe={}));pe.DashboardKeyword,pe.WorkbookKeyword,pe.PageKeyword,pe.LetKeyword,pe.ParamKeyword,pe.ChartKeyword,pe.FilterKeyword,pe.BooleanLiteral,pe.BooleanLiteral,pe.IntervalKeyword,pe.ImportKeyword,pe.FromKeyword,pe.UseKeyword,pe.LayoutKeyword,pe.RowKeyword,pe.BlockKeyword,pe.DomainKeyword,pe.TypeKeyword,pe.DescriptionKeyword,pe.TagsKeyword,pe.OwnerKeyword,pe.QueryKeyword,pe.VisualizationKeyword,pe.TestsKeyword,pe.ParamsKeyword,pe.AssertKeyword,pe.VarKeyword,pe.DefaultKeyword,pe.InKeyword,pe.MetricKeyword,pe.MetricsKeyword,pe.DigestKeyword,pe.NarrativeKeyword;const VR=1;function P_(e,t={}){const n=t.version??VR,r=JSON.parse(e),{dqlnbVersion:o,...s}=r,a={dqlnbVersion:n,...s};return JSON.stringify(a,v_(),2)+`
496
- `}function v_(){return function(t,n){if(n===null||typeof n!="object"||Array.isArray(n))return n;const r=n,o=Object.keys(r);o.sort((a,l)=>{const c=yE[a],d=yE[l];return c!==void 0&&d!==void 0?c-d:c!==void 0?-1:d!==void 0?1:a<l?-1:a>l?1:0});const s={};for(const a of o)s[a]=r[a];return s}}const yE={dqlnbVersion:0,version:1,title:2,metadata:3,cells:4,id:10,type:11,name:12,content:13};function U_(e){try{const t=e.match(/workbook\s+"([^"]+)"/i),n=t?t[1]:"Untitled Workbook",r=[],o=/page\s+"([^"]+)"\s*\{([\s\S]*?)\}/gi;let s;for(;(s=o.exec(e))!==null;){const a=s[1],l=s[2].trim();r.push({id:bt(),type:"markdown",content:`# ${a}`,status:"idle"}),l&&r.push({id:bt(),type:"dql",name:a.toLowerCase().replace(/\s+/g,"_"),content:l,status:"idle"})}return r.length===0&&r.push({id:bt(),type:"dql",content:e.trim(),status:"idle"}),{title:n,cells:r}}catch(t){return console.warn("parse-workbook: falling back after error",t),{title:"Untitled Workbook",cells:[{id:bt(),type:"dql",content:e.trim(),status:"idle"}]}}}function w_(e){var t;try{const n=JSON.parse(e),r=n.title||((t=n.metadata)==null?void 0:t.title)||"Untitled",o=(n.cells||[]).map(l=>({id:l.id||bt(),type:l.type||"sql",content:l.content??l.source??"",name:l.name||l.title,status:"idle",...l.paramConfig?{paramConfig:l.paramConfig}:{},...l.paramValue!==void 0?{paramValue:l.paramValue}:{},...l.chartConfig?{chartConfig:l.chartConfig}:{},...l.filterConfig?{filterConfig:l.filterConfig}:{},...l.pivotConfig?{pivotConfig:l.pivotConfig}:{},...l.singleValueConfig?{singleValueConfig:l.singleValueConfig}:{},...l.tableConfig?{tableConfig:l.tableConfig}:{},...l.upstream?{upstream:l.upstream}:{},...l.blockBinding?{blockBinding:l.blockBinding}:{}})),{title:s,...a}=n.metadata??{};return{title:r,cells:o,metadata:a}}catch(n){return console.warn("parse-workbook: falling back after error",n),{title:"Untitled",cells:[{id:bt(),type:"sql",content:e,status:"idle"}]}}}function B_(e,t,n){const r={dqlnbVersion:VR,version:1,title:e,metadata:{...n,modifiedAt:new Date().toISOString(),...n!=null&&n.createdAt?{}:{createdAt:new Date().toISOString()}},cells:t.map(o=>({id:o.id,type:o.type,content:o.content,...o.name?{name:o.name}:{},...o.paramConfig?{paramConfig:o.paramConfig}:{},...o.paramValue!==void 0?{paramValue:o.paramValue}:{},...o.chartConfig?{chartConfig:o.chartConfig}:{},...o.filterConfig?{filterConfig:o.filterConfig}:{},...o.pivotConfig?{pivotConfig:o.pivotConfig}:{},...o.singleValueConfig?{singleValueConfig:o.singleValueConfig}:{},...o.tableConfig?{tableConfig:o.tableConfig}:{},...o.upstream?{upstream:o.upstream}:{},...o.blockBinding?{blockBinding:o.blockBinding}:{}}))};return P_(JSON.stringify(r))}function F_(e,t){return e.endsWith(".dql")?U_(t):w_(t)}const $R=/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;function G_(e){const t=new Set;for(const n of e.matchAll($R))t.add(n[1]);return[...t]}function H_(e,t){if(!t.columns.length||!t.rows.length)return`${e} AS (SELECT 1 WHERE 1=0)`;const n=t.columns,o=t.rows.slice(0,5e3).map(a=>`(${n.map(c=>{const d=a[c];return d==null?"NULL":typeof d=="number"?String(d):typeof d=="boolean"?d?"TRUE":"FALSE":`'${String(d).replace(/'/g,"''")}'`}).join(", ")})`).join(`,
497
- `),s=n.map(a=>`"${a.replace(/"/g,'""')}"`).join(", ");return`${e} AS (
498
- SELECT * FROM (VALUES
499
- ${o}
500
- ) AS _t(${s})
501
- )`}function k_(e,t){if(t==="number"){const n=Number(e);return isNaN(n)?`'${e.replace(/'/g,"''")}'`:String(n)}return`'${e.replace(/'/g,"''")}'`}function j_(){const{state:e}=fe();return{substituteVariables:S.useCallback(n=>{var d;const r=[...n.matchAll($R)];if(r.length===0)return{sql:n,substituted:[]};const o=[],s=[];let a=n;const l=new Map,c=new Map;for(const E of e.cells){const u=(d=E.name)==null?void 0:d.trim();u&&(E.type==="param"?l.set(u,E):E.status==="success"&&E.result&&c.set(u,E.result))}for(const E of r){const u=E[1];if(l.has(u)){const T=l.get(u),f=T.paramConfig,h=T.paramValue??(f==null?void 0:f.defaultValue)??"",A=(f==null?void 0:f.paramType)??"text",R=k_(h,A);a=a.replace(E[0],R),o.push(u)}else c.has(u)&&(s.push(H_(u,c.get(u))),a=a.replace(E[0],`"${u}"`),o.push(u))}if(s.length===0&&o.length===0)return{sql:n,substituted:[]};if(s.length>0){const E=a.trimStart();/^WITH\s+/i.test(E)?a=a.replace(/^(\s*WITH\s+)/i,`$1${s.join(`,
502
- `)},
503
- `):a=`WITH ${s.join(`,
504
- `)}
505
- ${a}`}return{sql:a,substituted:o}},[e.cells])}}function Y_(e){var s;const t=e.match(/visualization\s*\{([^}]+)\}/is);if(!t)return;const n=t[1],r=a=>{var l;return(l=n.match(new RegExp(`\\b${a}\\s*=\\s*["']?([\\w-]+)["']?`,"i")))==null?void 0:l[1]},o=r("chart");if(o)return{chart:o,x:r("x"),y:r("y"),color:r("color"),title:(s=n.match(/\btitle\s*=\s*"([^"]+)"/i))==null?void 0:s[1]}}function qc(e){const t=e.trim();if(!t)return null;const n=t.match(/query\s*=\s*"""([\s\S]*?)"""/i);if(n)return n[1].trim()||null;const r=t.match(/"""([\s\S]*?)"""/);if(r)return r[1].trim()||null;if(/^\s*(dashboard|workbook)\s+"/i.test(t))return null;const o=t.match(/\b(SELECT|WITH|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|SHOW|DESCRIBE|EXPLAIN)\b([\s\S]*)/i);if(o){let s=o[0];const a=s.search(/\b(visualization|tests|block)\s*\{/i);return a>0&&(s=s.slice(0,a)),s=W_(s),s.trim()||null}return null}function W_(e){let t=0;for(let n=0;n<e.length;n++){const r=e[n];if(r==="("){t++;continue}if(r===")"){t>0&&t--;continue}if(r==="'"||r==='"'){for(n++;n<e.length&&e[n]!==r;)e[n]==="\\"&&n++,n++;continue}if(r===","&&t===0){let o=n+1;for(;o<e.length&&/\s/.test(e[o]);)o++;if(o<e.length&&/[a-zA-Z_]/.test(e[o])){for(;o<e.length&&/[a-zA-Z0-9_]/.test(e[o]);)o++;let s=o;for(;s<e.length&&/\s/.test(e[s]);)s++;if(s<e.length&&e[s]==="="&&e[s+1]!=="=")return e.slice(0,n)}}}return e}function _E(e){const t=wn(e);return t?{name:t.name,domain:t.domain,owner:t.owner,description:t.description,blockType:t.blockType,tags:t.tags}:null}function Ha(e,t,n){const r=wn(e);if(!r){const s=n.replace(/"/g,'\\"'),a=new RegExp(`(\\b${t}\\s*=\\s*)"[^"]*"`,"i");return a.test(e)?e.replace(a,`$1"${s}"`):Qc(e,` ${t} = "${s}"`)}const o={...r};return t==="domain"&&(o.domain=n),t==="owner"&&(o.owner=n),t==="description"&&(o.description=n),t==="type"&&(o.blockType=n),Lr(o)}function XR(e,t){const n=wn(e);if(!n){const r=t.replace(/"/g,'\\"');return/^\s*block\s+"/i.test(e)?e.replace(/^(\s*block\s+)"[^"]+"/i,`$1"${r}"`):e}return Lr({...n,name:t})}function V_(e,t){const n=wn(e);if(!n){const r=t.map(s=>`"${s.replace(/"/g,'\\"')}"`).join(", "),o=/(\btags\s*=\s*)\[[^\]]*\]/i;return o.test(e)?e.replace(o,`$1[${r}]`):Qc(e,` tags = [${r}]`)}return Lr({...n,tags:t})}function $_(e,t){const n=wn(e),r=J_(t);return n?Lr({...n,visualization:r}):/visualization\s*\{[\s\S]*?\n\s*\}/i.test(e)?e.replace(/visualization\s*\{[\s\S]*?\n\s*\}/i,r):Qc(e,` ${r.replace(/\n/g,`
506
- `)}`,!0)}function X_(e,t){return e==="metric"?`@metric(${t})`:`@dim(${t})`}function K_(e,t){const n=wn(e);if(!n||n.blockType!=="semantic")return e;const r={...n,metrics:[...n.metrics],dimensions:[...n.dimensions]};if(t.kind==="metric"){const o=new Set;r.metric&&o.add(r.metric);for(const a of r.metrics)o.add(a);o.add(t.name);const s=Array.from(o);r.metric=s.length===1?s[0]:"",r.metrics=s.length>1?s:[]}else r.dimensions.includes(t.name)||(r.dimensions=[...r.dimensions,t.name]);return Lr(r)}function z_(e,t){const n=wn(e);if(!n||n.blockType!=="custom")return`${e.trimEnd()}
507
- ${t}
508
- `;const r=n.query.trimEnd(),o=r?`${r}
509
- ${t}`:t;return Lr({...n,query:o})}function wn(e){var s,a;if(!/^\s*block\s+"/i.test(e.trim()))return null;const t=l=>{var c;return((c=e.match(new RegExp(`\\b${l}\\s*=\\s*"([^"]*)"`,"i")))==null?void 0:c[1])??""},n=((s=e.match(/^\s*block\s+"([^"]+)"/i))==null?void 0:s[1])??"",r=e.match(/\btags\s*=\s*\[([^\]]*)\]/i),o=e.match(/query\s*=\s*"""([\s\S]*?)"""/i);return{name:n,domain:t("domain"),owner:t("owner"),description:t("description"),blockType:(t("type")||"custom").toLowerCase()==="semantic"?"semantic":"custom",tags:r?(r[1].match(/"([^"]*)"/g)??[]).map(l=>l.slice(1,-1)):[],metric:t("metric"),metrics:DE(e,"metrics"),dimensions:DE(e,"dimensions"),timeDimension:t("time_dimension"),granularity:t("granularity"),query:((a=o==null?void 0:o[1])==null?void 0:a.trim())??"",visualization:ME(e,"visualization"),tests:ME(e,"tests")}}function DE(e,t){const n=e.match(new RegExp(`\\b${t}\\s*=\\s*\\[([\\s\\S]*?)\\]`,"i"));return n?(n[1].match(/"([^"]*)"/g)??[]).map(r=>r.slice(1,-1)).filter(Boolean):[]}function ME(e,t){const n=new RegExp(`\\b${t}\\s*\\{`,"i").exec(e);if(!n||n.index==null)return"";let r=0,o=-1;for(let s=n.index;s<e.length;s++){const a=e[s];if(a==="{")r===0&&(o=s),r++;else if(a==="}"&&(r--,r===0&&o>=0))return e.slice(n.index,s+1).trim()}return""}function Lr(e){const t=[`block "${it(e.name||"New Block")}" {`,` domain = "${it(e.domain||"uncategorized")}"`,` type = "${e.blockType}"`,` description = "${it(e.description)}"`,` owner = "${it(e.owner)}"`,` tags = [${e.tags.map(n=>`"${it(n)}"`).join(", ")}]`];if(e.blockType==="semantic"){const n=e.metrics.length>0?Array.from(new Set(e.metrics)):e.metric?[e.metric]:[];n.length===1?t.push(` metric = "${it(n[0])}"`):n.length>1&&t.push(` metrics = [${n.map(r=>`"${it(r)}"`).join(", ")}]`),e.dimensions.length>0&&t.push(` dimensions = [${Array.from(new Set(e.dimensions)).map(r=>`"${it(r)}"`).join(", ")}]`),e.timeDimension&&t.push(` time_dimension = "${it(e.timeDimension)}"`),e.granularity&&t.push(` granularity = "${it(e.granularity)}"`)}return e.blockType==="custom"&&(t.push(""),t.push(' query = """'),t.push(...q_(e.query.trim(),4)),t.push(' """')),e.visualization&&(t.push(""),t.push(...bE(e.visualization,2))),e.tests&&(t.push(""),t.push(...bE(e.tests,2))),t.push("}"),t.join(`
510
- `)+`
511
- `}function J_(e){const t=[];return t.push("visualization {"),t.push(` chart = "${e.chart??"table"}"`),e.x&&t.push(` x = ${e.x}`),e.y&&t.push(` y = ${e.y}`),e.color&&t.push(` color = ${e.color}`),e.title&&t.push(` title = "${it(e.title)}"`),t.push("}"),t.join(`
512
- `)}function q_(e,t){const n=" ".repeat(t);return(e?e.split(`
513
- `):[""]).map(o=>`${n}${o}`)}function bE(e,t){const n=" ".repeat(t);return e.split(`
514
- `).map(r=>`${n}${r.trimEnd()}`)}function it(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Qc(e,t,n=!1){const r=e.trimEnd();if(!/^\s*block\s+"/i.test(r))return`${r}
515
- ${t}
516
- `;const o=n?`
517
-
518
- ${t}
519
- `:`
520
- ${t}`;return r.replace(/\n\}\s*$/,`${o}
521
- }`)}const Fr=new Map;function Q_(e){if(e.type==="markdown"||e.type==="param")return null;if(e.type==="sql")return e.content.trim()||null;const t=e.content.trim();return t?qc(t):null}function Hi(){const{state:e,dispatch:t}=fe(),{substituteVariables:n}=j_(),r=S.useCallback(async l=>{const c=e.cells.find(h=>h.id===l);if(!c)return;const d=Q_(c);if(!d)return;if(c.type==="dql"){const h=Y_(c.content);h&&JSON.stringify(h)!==JSON.stringify(c.chartConfig)&&t({type:"UPDATE_CELL",id:l,updates:{chartConfig:h}})}const{sql:E}=n(d),u=Date.now(),T=Fr.get(l);T&&T.abort();const f=new AbortController;Fr.set(l,f),t({type:"UPDATE_CELL",id:l,updates:{status:"running",error:void 0,result:void 0,fromSnapshot:!1}});try{const h=await J.executeQuery(E,f.signal),A=Date.now()-u,R=(c.executionCount??0)+1;t({type:"UPDATE_CELL",id:l,updates:{status:"success",result:{...h,executionTime:h.executionTime??A,rowCount:h.rowCount??h.rows.length},executionCount:R}}),t({type:"APPEND_QUERY_LOG",entry:{id:bt(),cellName:c.name??c.id,rows:h.rowCount??h.rows.length,time:h.executionTime??A,ts:new Date}}),setTimeout(()=>{t({type:"UPDATE_CELL",id:l,updates:{status:"idle"}})},2e3)}catch(h){if(f.signal.aborted){t({type:"UPDATE_CELL",id:l,updates:{status:"idle",error:void 0}});return}const A=Date.now()-u,R=h instanceof Error?h.message:String(h);t({type:"UPDATE_CELL",id:l,updates:{status:"error",error:R,executionCount:(c.executionCount??0)+1}}),t({type:"APPEND_QUERY_LOG",entry:{id:bt(),cellName:c.name??c.id,rows:0,time:A,ts:new Date,error:R}})}finally{Fr.delete(l)}},[e.cells,t]),o=S.useCallback(async()=>{for(const l of e.cells)l.type!=="markdown"&&await r(l.id)},[e.cells,r]),s=S.useCallback(async l=>{if(!l)return;const c=`{{${l}}}`;for(const d of e.cells)d.type==="markdown"||d.type==="param"||d.content.includes(c)&&await r(d.id)},[e.cells,r]),a=S.useCallback(l=>{const c=Fr.get(l);c&&(c.abort(),Fr.delete(l)),t({type:"UPDATE_CELL",id:l,updates:{status:"idle"}})},[t]);return{executeCell:r,executeAll:o,executeDependents:s,cancelCell:a}}function je(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Z_(e){return typeof e=="number"?Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:Number.isInteger(e)?String(e):e.toFixed(2):""}function e0(e){const t=e.split(`
522
- `),n=[];let r=!1,o=!1;for(const s of t){const a=s;if(a.startsWith("```")){o&&(n.push("</ul>"),o=!1),r?(n.push("</code></pre>"),r=!1):(n.push("<pre><code>"),r=!0);continue}if(r){n.push(je(a));continue}if(a.startsWith("### ")){o&&(n.push("</ul>"),o=!1),n.push(`<h3>${je(a.slice(4))}</h3>`);continue}if(a.startsWith("## ")){o&&(n.push("</ul>"),o=!1),n.push(`<h2>${je(a.slice(3))}</h2>`);continue}if(a.startsWith("# ")){o&&(n.push("</ul>"),o=!1),n.push(`<h1>${je(a.slice(2))}</h1>`);continue}if(a.startsWith("> ")){o&&(n.push("</ul>"),o=!1),n.push(`<blockquote><p>${je(a.slice(2))}</p></blockquote>`);continue}if(a.startsWith("- ")||a.startsWith("* ")){o||(n.push("<ul>"),o=!0),n.push(`<li>${PE(a.slice(2))}</li>`);continue}if(o&&(n.push("</ul>"),o=!1),a.trim()===""){n.push("<br>");continue}n.push(`<p>${PE(a)}</p>`)}return o&&n.push("</ul>"),r&&n.push("</code></pre>"),n.join(`
523
- `)}function PE(e){return je(e).replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/`(.+?)`/g,"<code>$1</code>")}function t0(e){const{columns:t,rows:n}=e,r=n.slice(0,200),o=n.length>200,s=t.map(l=>`<th>${je(l)}</th>`).join(""),a=r.map(l=>`<tr>${t.map(d=>{const E=l[d],u=typeof E=="number",T=E==null?"—":String(E);return`<td${u?' class="num"':""}>${je(T)}</td>`}).join("")}</tr>`).join("");return`
524
- <div class="table-wrap">
525
- <table>
526
- <thead><tr>${s}</tr></thead>
527
- <tbody>${a}</tbody>
528
- </table>
529
- ${o?`<p class="truncated">Showing first 200 of ${n.length.toLocaleString()} rows</p>`:""}
530
- </div>`}function n0(e){const{columns:t,rows:n}=e;if(t.length<2||n.length===0)return null;const r=t.find(s=>typeof n[0][s]=="number"),o=t.find(s=>s!==r);return!r||!o?null:{labelCol:o,valueCol:r}}function r0(e){const t=n0(e);if(!t)return null;const n=e.rows.slice(0,20).map(E=>({label:String(E[t.labelCol]??""),value:Number(E[t.valueCol]??0)})),r=Math.max(...n.map(E=>E.value),1),o=28,s=6,a=140,l=440,c=n.length*(o+s)+40,d=n.map((E,u)=>{const T=u*(o+s)+20,f=Math.max(E.value/r*l,2);return`
531
- <text x="${a-6}" y="${T+o/2+4}" text-anchor="end" font-size="11" fill="#8b949e">${je(E.label.slice(0,20))}</text>
532
- <rect x="${a}" y="${T}" width="${f}" height="${o}" rx="3" fill="#388bfd" />
533
- <text x="${a+f+5}" y="${T+o/2+4}" font-size="11" fill="#e6edf3">${Z_(E.value)}</text>`}).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${a+l+80}" height="${c}" style="max-width:100%">${d}</svg>`}function o0(e,t){const n=t.map(r=>{if(r.type==="markdown")return`<section class="cell md-cell">${e0(r.content)}</section>`;const o=r.name?`<div class="cell-header"><span class="cell-type">${r.type.toUpperCase()}</span><span class="cell-name">${je(r.name)}</span></div>`:`<div class="cell-header"><span class="cell-type">${r.type.toUpperCase()}</span></div>`,s=`<pre class="cell-code"><code>${je(r.content)}</code></pre>`;let a="";if(r.result&&r.result.rows.length>0){const l=r0(r.result),c=t0(r.result);a=`<div class="cell-output">${`<div class="output-meta">${r.result.rows.length.toLocaleString()} rows${r.result.executionTime?` · ${r.result.executionTime}ms`:""}</div>`}${l??""}${l?"":c}</div>`}else r.error&&(a=`<div class="cell-error">⚠ ${je(r.error)}</div>`);return`<section class="cell sql-cell">${o}${s}${a}</section>`}).join(`
534
- `);return`<!DOCTYPE html>
535
- <html lang="en">
536
- <head>
537
- <meta charset="UTF-8">
538
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
539
- <title>${je(e)}</title>
540
- <style>
541
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
542
- body {
543
- font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
544
- background: #0d1117; color: #e6edf3;
545
- line-height: 1.6; padding: 0;
546
- }
547
- .page-header {
548
- background: #161b22; border-bottom: 1px solid #21262d;
549
- padding: 16px 32px; display: flex; align-items: center; gap: 12px;
550
- }
551
- .logo {
552
- width: 28px; height: 28px; border-radius: 6px;
553
- background: linear-gradient(135deg, #388bfd, #1f6feb);
554
- display: flex; align-items: center; justify-content: center;
555
- font-size: 10px; font-weight: 700; color: #fff;
556
- font-family: monospace; letter-spacing: -0.5px; flex-shrink: 0;
557
- }
558
- .page-title { font-size: 18px; font-weight: 600; color: #e6edf3; }
559
- .page-meta { font-size: 12px; color: #8b949e; margin-left: auto; }
560
- .content { max-width: 900px; margin: 0 auto; padding: 32px 24px; display: flex; flex-direction: column; gap: 24px; }
561
- .cell { border-radius: 8px; overflow: hidden; }
562
- .md-cell { padding: 4px 0; }
563
- .md-cell h1 { font-size: 26px; font-weight: 700; color: #e6edf3; margin: 0 0 12px; }
564
- .md-cell h2 { font-size: 20px; font-weight: 600; color: #e6edf3; margin: 20px 0 10px; }
565
- .md-cell h3 { font-size: 16px; font-weight: 600; color: #e6edf3; margin: 16px 0 8px; }
566
- .md-cell p { color: #c9d1d9; margin-bottom: 8px; }
567
- .md-cell ul { padding-left: 20px; color: #c9d1d9; margin-bottom: 8px; }
568
- .md-cell code { background: #21262d; padding: 2px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; }
569
- .md-cell pre { background: #161b22; border: 1px solid #30363d; border-radius: 6px; padding: 14px; overflow-x: auto; margin-bottom: 8px; }
570
- .md-cell pre code { background: none; padding: 0; }
571
- .md-cell blockquote { border-left: 3px solid #388bfd; padding-left: 14px; color: #8b949e; }
572
- .sql-cell { background: #161b22; border: 1px solid #30363d; }
573
- .cell-header { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-bottom: 1px solid #21262d; background: #1c2128; }
574
- .cell-type { font-size: 10px; font-weight: 600; letter-spacing: 0.05em; color: #8b949e; background: #21262d; padding: 2px 6px; border-radius: 4px; font-family: monospace; }
575
- .cell-name { font-size: 12px; color: #388bfd; font-family: monospace; }
576
- .cell-code { background: #0d1117; padding: 14px; font-size: 12px; font-family: 'JetBrains Mono', monospace; color: #c9d1d9; overflow-x: auto; border-bottom: 1px solid #21262d; line-height: 1.55; white-space: pre; }
577
- .cell-output { padding: 14px; }
578
- .output-meta { font-size: 11px; color: #8b949e; margin-bottom: 10px; }
579
- .table-wrap { overflow-x: auto; }
580
- table { width: 100%; border-collapse: collapse; font-size: 12px; }
581
- th { background: #1c2128; color: #8b949e; font-weight: 600; text-align: left; padding: 7px 12px; border-bottom: 1px solid #30363d; white-space: nowrap; }
582
- td { padding: 6px 12px; border-bottom: 1px solid #21262d; color: #e6edf3; }
583
- td.num { text-align: right; font-family: monospace; }
584
- tr:last-child td { border-bottom: none; }
585
- .truncated { font-size: 11px; color: #8b949e; margin-top: 8px; }
586
- .cell-error { padding: 12px 14px; background: #3d1a1a; border-top: 1px solid #f85149; color: #f85149; font-size: 13px; }
587
- .exported-by { text-align: center; color: #484f58; font-size: 11px; padding: 40px 0 24px; }
588
- </style>
589
- </head>
590
- <body>
591
- <div class="page-header">
592
- <div class="logo">DQL</div>
593
- <span class="page-title">${je(e)}</span>
594
- <span class="page-meta">Exported ${new Date().toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</span>
595
- </div>
596
- <div class="content">
597
- ${n}
598
- </div>
599
- <p class="exported-by">Built with DQL Notebook</p>
600
- </body>
601
- </html>`}function vE(e,t){const n=o0(e,t),r=new Blob([n],{type:"text/html;charset=utf-8"}),o=URL.createObjectURL(r),s=document.createElement("a");s.href=o,s.download=`${e.toLowerCase().replace(/[^a-z0-9]+/g,"-")}-dashboard.html`,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(o)}function s0({t:e}){return i.jsx("div",{style:{width:28,height:28,borderRadius:6,background:"linear-gradient(135deg, #5b8cff 0%, #7c5cff 100%)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:i.jsx("span",{style:{color:"#ffffff",fontSize:10,fontWeight:700,fontFamily:e.fontMono,letterSpacing:"-0.5px"},children:"DQL"})})}function i0(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],{executeAll:r}=Hi(),[o,s]=S.useState(!1),[a,l]=S.useState(""),[c,d]=S.useState(!1),[E,u]=S.useState(!1),[T,f]=S.useState(!1),[h,A]=S.useState(!1),[R,p]=S.useState(!1),N=S.useRef(null),[I,O]=S.useState(!1),[C,m]=S.useState(!1),g=S.useRef(null),y=S.useRef(null),x=e.mainView==="block_studio"?e.blockStudioDirty:e.notebookDirty,w=e.mainView==="notebook",D=e.mainView==="connection"?"Connections":e.mainView==="reference"?"Quick Reference":e.notebookTitle||"Untitled";S.useEffect(()=>{o&&y.current&&(y.current.focus(),y.current.select())},[o]),S.useEffect(()=>{if(!C)return;function L(v){g.current&&!g.current.contains(v.target)&&m(!1)}return document.addEventListener("mousedown",L),()=>document.removeEventListener("mousedown",L)},[C]);const U=()=>{l(e.notebookTitle),s(!0)},F=()=>{s(!1),a.trim()&&a!==e.notebookTitle&&(e.mainView==="block_studio"&&e.blockStudioMetadata?(t({type:"SET_BLOCK_STUDIO_METADATA",metadata:{...e.blockStudioMetadata,name:a.trim()}}),t({type:"SET_BLOCK_STUDIO_DRAFT",draft:XR(e.blockStudioDraft,a.trim())})):t({type:"SET_NOTEBOOK_DIRTY",dirty:!0}))},_=S.useCallback(async()=>{var L;if(e.activeFile){t({type:"SET_SAVING",saving:!0});try{if(e.mainView==="block_studio"){if(!e.blockStudioMetadata)return;const v=await J.saveBlockStudio({path:e.activeBlockPath,source:e.blockStudioDraft,metadata:{name:e.blockStudioMetadata.name,domain:e.blockStudioMetadata.domain,description:e.blockStudioMetadata.description,owner:e.blockStudioMetadata.owner,tags:e.blockStudioMetadata.tags}});t({type:"OPEN_BLOCK_STUDIO",file:{name:`${v.metadata.name}.dql`,path:v.path,type:"block",folder:"blocks"},payload:v}),e.files.some(G=>G.path===v.path)||t({type:"FILE_ADDED",file:{name:`${v.metadata.name}.dql`,path:v.path,type:"block",folder:"blocks"}})}else{const v=e.activeFile.type==="block"?((L=e.cells[0])==null?void 0:L.content)??"":B_(e.notebookTitle,e.cells,e.notebookMetadata);await J.saveNotebook(e.activeFile.path,v),t({type:"SET_NOTEBOOK_DIRTY",dirty:!1})}d(!0),setTimeout(()=>d(!1),2e3)}catch(v){console.error("Save failed:",v)}finally{t({type:"SET_SAVING",saving:!1})}}},[e.activeFile,e.activeBlockPath,e.blockStudioDraft,e.blockStudioMetadata,e.files,e.mainView,e.notebookTitle,e.notebookMetadata,e.cells,t]);S.useEffect(()=>{const L=v=>{(v.metaKey||v.ctrlKey)&&v.key==="s"&&(v.preventDefault(),_())};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[_]),S.useEffect(()=>{if(!e.autoSave||!x||!e.activeFile)return;const L=setTimeout(()=>{_()},2e3);return()=>clearTimeout(L)},[e.autoSave,x,e.activeFile,e.cells,e.blockStudioDraft,_]);const B=[{mode:"obsidian",label:"Obsidian",glyph:"●",swatch:"#0d0e11"},{mode:"paper",label:"Paper",glyph:"☼",swatch:"#f7f4ed"},{mode:"white",label:"White",glyph:"○",swatch:"#ffffff"}],b=e.themeMode==="dark"||e.themeMode==="midnight"?"obsidian":e.themeMode==="light"?"paper":e.themeMode==="arctic"?"white":e.themeMode,P=B.find(L=>L.mode===b)??B[0];S.useEffect(()=>{if(!R)return;const L=G=>{N.current&&!N.current.contains(G.target)&&p(!1)},v=G=>{G.key==="Escape"&&p(!1)};return document.addEventListener("mousedown",L),document.addEventListener("keydown",v),()=>{document.removeEventListener("mousedown",L),document.removeEventListener("keydown",v)}},[R]);const M={height:28,padding:"0 10px",borderRadius:6,border:`1px solid ${n.btnBorder}`,cursor:"pointer",fontSize:12,fontWeight:500,fontFamily:n.font,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s, color 0.15s",whiteSpace:"nowrap"};return i.jsxs("div",{style:{height:48,flexShrink:0,background:n.headerBg,borderBottom:`1px solid ${n.headerBorder}`,display:"flex",alignItems:"center",padding:"0 12px",gap:8,userSelect:"none"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[i.jsx(s0,{t:n}),i.jsx("div",{style:{width:1,height:20,background:n.headerBorder,flexShrink:0}}),e.activeFile&&i.jsx("span",{style:{fontSize:10,fontWeight:600,color:e.activeFile.type==="block"?"#e3b341":n.accent,background:`${e.activeFile.type==="block"?"#e3b341":n.accent}18`,borderRadius:4,padding:"2px 6px",fontFamily:n.font,textTransform:"uppercase",letterSpacing:"0.05em",flexShrink:0},children:e.activeFile.type}),e.activeFile&&e.mainView!=="connection"&&e.mainView!=="reference"?o?i.jsx("input",{ref:y,value:a,onChange:L=>l(L.target.value),onBlur:F,onKeyDown:L=>{L.key==="Enter"&&F(),L.key==="Escape"&&s(!1)},style:{background:"transparent",border:`1px solid ${n.cellBorderActive}`,borderRadius:4,color:n.textPrimary,fontSize:13,fontWeight:500,fontFamily:n.font,padding:"2px 6px",outline:"none",minWidth:120,maxWidth:320}}):i.jsxs("span",{onClick:U,title:"Click to rename",style:{color:n.textPrimary,fontSize:13,fontWeight:500,fontFamily:n.font,cursor:"text",maxWidth:320,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"2px 4px",borderRadius:4,border:"1px solid transparent"},children:[D,x&&i.jsx("span",{style:{color:n.textMuted,marginLeft:4},children:"●"})]}):i.jsx("span",{style:{color:n.textSecondary,fontSize:13,fontFamily:n.font,padding:"2px 4px"},children:D})]}),i.jsx("div",{style:{flex:1}}),i.jsx(Sx,{options:[{value:"studio",label:"Notebook"},{value:"app",label:"App"},{value:"reader",label:"Reader"}],value:e.appMode,onChange:L=>t({type:"SET_APP_MODE",mode:L}),size:"sm",ariaLabel:"View mode"}),i.jsx("div",{style:{flex:1}}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[e.appMode==="studio"&&i.jsx(i.Fragment,{children:i.jsxs("button",{onClick:w?r:void 0,disabled:!e.activeFile||!w,onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{...M,height:30,padding:"0 14px",borderRadius:999,background:n.accent,color:"#ffffff",border:`1px solid ${n.accent}`,opacity:!e.activeFile||!w?.4:E?.9:1,boxShadow:"0 1px 2px rgba(107,93,211,0.25)",gap:6},children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})}),"Run all"]})}),e.appMode==="app"&&i.jsxs(i.Fragment,{children:[i.jsxs("button",{onClick:()=>vE(e.notebookTitle||"dashboard",e.cells),disabled:!e.activeFile,title:"Publish dashboard (standalone HTML)",style:{...M,background:n.accent,color:"#ffffff",border:`1px solid ${n.accent}`,opacity:e.activeFile?1:.4},children:[i.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:[i.jsx("path",{d:"M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"}),i.jsx("path",{d:"M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.97a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.779a.749.749 0 1 1 1.06-1.06l1.97 1.97Z"})]}),"Publish"]}),i.jsx("div",{style:{width:1,height:20,background:n.headerBorder}})]}),i.jsxs("div",{ref:N,style:{position:"relative"},children:[i.jsxs("button",{onClick:()=>p(L=>!L),onMouseEnter:()=>A(!0),onMouseLeave:()=>A(!1),title:`Theme: ${P.label}`,"aria-haspopup":"true","aria-expanded":R,style:{...M,background:h||R?n.btnHover:n.btnBg,color:n.textSecondary,padding:"0 10px",fontSize:12,display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:{width:12,height:12,borderRadius:3,background:P.swatch,border:`1px solid ${n.headerBorder}`,flexShrink:0}}),i.jsx("span",{style:{fontFamily:n.fontMono,fontSize:10,letterSpacing:"0.04em"},children:P.label}),i.jsx("span",{style:{fontSize:8,color:n.textMuted},children:"▾"})]}),R&&i.jsx("div",{role:"menu",style:{position:"absolute",top:"100%",right:0,marginTop:4,minWidth:160,background:n.headerBg,border:`1px solid ${n.headerBorder}`,borderRadius:6,boxShadow:"0 8px 24px rgba(0,0,0,0.32)",padding:4,zIndex:1e3,display:"flex",flexDirection:"column",gap:1},children:B.map(L=>{const v=L.mode===b;return i.jsxs("button",{role:"menuitemradio","aria-checked":v,onClick:()=>{t({type:"SET_THEME",mode:L.mode}),p(!1)},style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",border:"none",background:v?n.btnHover:"transparent",color:n.textPrimary,cursor:"pointer",borderRadius:4,fontSize:12,fontFamily:n.font,textAlign:"left"},onMouseEnter:G=>{v||(G.currentTarget.style.background=n.btnHover)},onMouseLeave:G=>{v||(G.currentTarget.style.background="transparent")},children:[i.jsx("span",{style:{width:14,height:14,borderRadius:3,background:L.swatch,border:`1px solid ${n.headerBorder}`,flexShrink:0}}),i.jsx("span",{style:{flex:1},children:L.label}),v&&i.jsx("span",{style:{color:n.accent,fontSize:11},children:"✓"})]},L.mode)})})]}),e.appMode==="studio"&&i.jsxs(i.Fragment,{children:[i.jsx("button",{onClick:_,disabled:!e.activeFile||e.savingFile,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),title:"Save (Cmd+S)",style:{...M,background:T&&e.activeFile?n.btnHover:n.btnBg,color:c?n.success:n.textSecondary,opacity:e.activeFile?1:.4},children:e.savingFile?i.jsxs(i.Fragment,{children:[i.jsx(l0,{}),"Saving…"]}):c?i.jsx(i.Fragment,{children:"✓ Saved"}):i.jsx(i.Fragment,{children:"Save"})}),i.jsx("button",{onClick:()=>t({type:"SET_AUTO_SAVE",enabled:!e.autoSave}),title:e.autoSave?"Auto-save on":"Auto-save off",style:{...M,background:e.autoSave?`${n.accent}20`:n.btnBg,color:e.autoSave?n.accent:n.textMuted,padding:"0 6px",fontSize:10,fontWeight:600,letterSpacing:"0.03em",border:`1px solid ${e.autoSave?n.accent:n.btnBorder}`},children:"AUTO"}),i.jsxs("button",{onClick:()=>t({type:"TOGGLE_DASHBOARD_MODE"}),disabled:!e.activeFile,title:e.dashboardMode?"Switch to editor mode":"Switch to dashboard mode",style:{...M,background:e.dashboardMode?`${n.accent}20`:n.btnBg,color:e.dashboardMode?n.accent:n.textSecondary,border:`1px solid ${e.dashboardMode?n.accent:n.btnBorder}`,opacity:e.activeFile?1:.4,padding:"0 8px"},children:[i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:e.dashboardMode?i.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 8.75 4.25V1.5Z"}):i.jsx("path",{d:"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v3.585a.746.746 0 0 1 0 .83v8.085A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25V5h13V1.75a.25.25 0 0 0-.25-.25ZM1.5 6.5v7.75c0 .138.112.25.25.25H7v-8Zm7 8h5.75a.25.25 0 0 0 .25-.25V6.5h-6Z"})}),e.dashboardMode?"Editor":"Dashboard"]}),i.jsx("div",{style:{width:1,height:20,background:n.headerBorder}})]}),i.jsxs("div",{ref:g,style:{position:"relative"},children:[i.jsxs("button",{onClick:()=>{e.activeFile&&m(L=>!L)},disabled:!e.activeFile,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!1),title:"Share / export",style:{...M,height:30,padding:"0 14px",borderRadius:999,background:(I||C)&&e.activeFile?"#2a2a30":"#1a1a1a",color:"#ffffff",border:"1px solid #1a1a1a",opacity:e.activeFile?1:.4,gap:6},children:[i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M5.5 10.75a.75.75 0 0 1 .75-.75h3.5a.75.75 0 0 1 0 1.5h-3.5a.75.75 0 0 1-.75-.75Zm0-3a.75.75 0 0 1 .75-.75h3.5a.75.75 0 0 1 0 1.5h-3.5a.75.75 0 0 1-.75-.75ZM3 3.75A1.75 1.75 0 0 1 4.75 2h6.586c.464 0 .909.184 1.237.513l1.914 1.914c.329.328.513.773.513 1.237v6.586A1.75 1.75 0 0 1 13.25 14h-8.5A1.75 1.75 0 0 1 3 12.25Z"})}),"Share",i.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",style:{marginLeft:1,opacity:.7},children:i.jsx("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",fill:"none",strokeWidth:"1.2",strokeLinecap:"round"})})]}),C&&i.jsx("div",{style:{position:"absolute",top:32,right:0,zIndex:200,background:n.modalBg,border:`1px solid ${n.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:4,minWidth:160,display:"flex",flexDirection:"column",gap:2},children:i.jsx(a0,{label:"Export HTML",description:"Standalone dashboard",t:n,onClick:()=>{vE(e.notebookTitle||"dashboard",e.cells),m(!1)}})})]})]})]})}function a0({label:e,description:t,t:n,onClick:r}){const[o,s]=S.useState(!1);return i.jsxs("button",{onClick:r,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:o?n.btnHover:"transparent",border:"none",borderRadius:5,cursor:"pointer",padding:"6px 10px",textAlign:"left",display:"flex",flexDirection:"column",gap:1,transition:"background 0.12s"},children:[i.jsx("span",{style:{fontSize:12,fontWeight:500,color:n.textPrimary,fontFamily:n.font},children:e}),i.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:t})]})}function l0(){return i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",style:{animation:"spin 0.8s linear infinite"},children:[i.jsx("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"}),i.jsx("circle",{cx:"6",cy:"6",r:"4.5",stroke:"currentColor",strokeWidth:"1.5",strokeDasharray:"14 7"})]})}function c0(e){return e.toTimeString().slice(0,8)}function d0(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`}function E0(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(!1),s=e.queryLog.filter(l=>l.error),a=l=>t({type:"SET_DEV_PANEL_TAB",tab:l});return i.jsxs("div",{style:{height:e.devPanelOpen?180:0,flexShrink:0,background:n.sidebarBg,borderTop:`1px solid ${n.headerBorder}`,display:"flex",flexDirection:"column",overflow:"hidden",transition:"height 0.2s ease",position:"relative"},children:[e.devPanelOpen&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{style:{height:32,flexShrink:0,display:"flex",alignItems:"center",borderBottom:`1px solid ${n.headerBorder}`,padding:"0 8px",gap:2},children:[["logs","errors"].map(l=>i.jsx(u0,{label:l==="errors"?`Errors${s.length>0?` (${s.length})`:""}`:`Logs (${e.queryLog.length})`,active:e.devPanelTab===l,onClick:()=>a(l),t:n},l)),i.jsx("div",{style:{flex:1}}),i.jsx("button",{onClick:()=>t({type:"SET_CELLS",cells:e.cells}),title:"Clear logs",style:{background:"transparent",borderTop:"none",borderLeft:"none",borderRight:"none",borderBottom:"none",cursor:"pointer",color:n.textMuted,fontSize:11,fontFamily:n.font,padding:"2px 6px",borderRadius:4},children:"Clear"})]}),i.jsxs("div",{style:{flex:1,overflow:"auto",padding:"4px 0"},children:[e.devPanelTab==="logs"&&(e.queryLog.length===0?i.jsx(UE,{t:n,message:"No queries executed yet."}):[...e.queryLog].reverse().map(l=>i.jsx(wE,{entry:l,t:n},l.id))),e.devPanelTab==="errors"&&(s.length===0?i.jsx(UE,{t:n,message:"No errors."}):[...s].reverse().map(l=>i.jsx(wE,{entry:l,t:n},l.id)))]})]}),i.jsxs("button",{onClick:()=>t({type:"TOGGLE_DEV_PANEL"}),onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),title:e.devPanelOpen?"Close panel":"Open dev panel",style:{position:"absolute",bottom:e.devPanelOpen?4:-28,right:8,height:22,padding:"0 8px",borderRadius:"4px 4px 0 0",borderTop:`1px solid ${n.headerBorder}`,borderLeft:`1px solid ${n.headerBorder}`,borderRight:`1px solid ${n.headerBorder}`,borderBottom:e.devPanelOpen?`1px solid ${n.sidebarBg}`:`1px solid ${n.headerBorder}`,background:r?n.btnHover:n.sidebarBg,color:n.textMuted,cursor:"pointer",fontSize:11,fontFamily:n.font,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s, bottom 0.2s ease",zIndex:10},children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:e.devPanelOpen?"M1 7l4-4 4 4":"M1 3l4 4 4-4",strokeWidth:"1.5",stroke:"currentColor",fill:"none"})}),"Dev"]})]})}function u0({label:e,active:t,onClick:n,t:r}){const[o,s]=S.useState(!1);return i.jsx("button",{onClick:n,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:"transparent",borderTop:"none",borderLeft:"none",borderRight:"none",borderBottom:t?`2px solid ${r.accent}`:"2px solid transparent",cursor:"pointer",color:t?r.textPrimary:o?r.textSecondary:r.textMuted,fontSize:12,fontFamily:r.font,fontWeight:t?500:400,padding:"4px 8px",height:32,transition:"color 0.15s"},children:e})}function UE({t:e,message:t}){return i.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:e.textMuted,fontSize:12,fontFamily:e.font,fontStyle:"italic"},children:t})}function wE({entry:e,t}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"3px 12px",fontSize:11,fontFamily:t.fontMono,color:e.error?t.error:t.textSecondary,borderLeft:e.error?`2px solid ${t.error}`:"2px solid transparent"},children:[i.jsx("span",{style:{color:t.textMuted,flexShrink:0},children:c0(e.ts)}),i.jsx("span",{style:{flexShrink:0,color:t.textPrimary,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.cellName}),e.error?i.jsx("span",{style:{color:t.error,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.error}):i.jsxs(i.Fragment,{children:[i.jsxs("span",{style:{color:t.textMuted},children:[e.rows.toLocaleString()," rows"]}),i.jsx("span",{style:{color:t.textMuted},children:d0(e.time)})]})]})}function T0({onOpenFile:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],o=t.files.slice(0,3);return i.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:r.appBg,padding:40,overflow:"auto"},children:i.jsxs("div",{style:{maxWidth:720,width:"100%",display:"flex",flexDirection:"column",alignItems:"center",gap:48},children:[i.jsxs("div",{style:{textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[i.jsx("div",{style:{width:72,height:72,borderRadius:16,background:"linear-gradient(135deg, #5b8cff 0%, #7c5cff 60%, #4a34a8 100%)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 8px 32px rgba(91,140,255,0.28)"},children:i.jsx("span",{style:{color:"#fff",fontSize:26,fontWeight:800,fontFamily:r.fontMono,letterSpacing:"-1px"},children:"DQL"})}),i.jsxs("div",{children:[i.jsx("h1",{style:{fontSize:32,fontWeight:700,color:r.textPrimary,fontFamily:r.font,marginBottom:8,letterSpacing:"-0.5px"},children:"DQL Notebook"}),i.jsx("p",{style:{fontSize:15,color:r.textSecondary,fontFamily:r.font,letterSpacing:"0.02em"},children:"Analytics as Code"})]})]}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:16,width:"100%"},children:[i.jsx(BE,{title:"New Notebook",description:"Start a fresh analysis with an empty notebook.",icon:i.jsx(R0,{}),accent:r.accent,onClick:()=>n({type:"OPEN_NEW_NOTEBOOK_MODAL"}),t:r}),i.jsx(f0,{recentFiles:o,onOpenFile:e,t:r}),i.jsx(BE,{title:"New Block",description:"Create a reusable SQL block file.",icon:i.jsx(A0,{}),accent:"#ffc857",onClick:()=>n({type:"OPEN_NEW_BLOCK_MODAL"}),t:r})]}),i.jsxs("div",{style:{width:"100%",borderRadius:10,border:`1px solid ${r.cellBorder}`,padding:"16px 20px",background:r.cellBg},children:[i.jsx("div",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.08em",textTransform:"uppercase",color:r.textMuted,fontFamily:r.font,marginBottom:12},children:"Quick Tips"}),i.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:8},children:[["Shift + Enter","Run cell"],["⌘ + S","Save notebook"],["⌘ + B","Toggle sidebar"],["⌘ + D","Dashboard mode"],["⌘ + Shift + Enter","Run all cells"],["⌘ + J","Toggle dev panel"],["Click +","Add a new cell"],["Drag handle","Reorder cells"]].map(([s,a])=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsx("kbd",{style:{background:r.pillBg,border:`1px solid ${r.cellBorder}`,borderRadius:4,padding:"2px 6px",fontSize:11,fontFamily:r.fontMono,color:r.textSecondary,whiteSpace:"nowrap"},children:s}),i.jsx("span",{style:{fontSize:12,color:r.textMuted,fontFamily:r.font},children:a})]},s))})]})]})})}function BE({title:e,description:t,icon:n,accent:r,onClick:o,t:s}){const[a,l]=S.useState(!1);return i.jsxs("button",{onClick:o,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{background:a?s.cellBg:"transparent",border:`1px solid ${a?r:s.cellBorder}`,borderRadius:10,padding:"20px 16px",cursor:"pointer",textAlign:"left",display:"flex",flexDirection:"column",gap:10,transition:"border-color 0.2s, background 0.2s, box-shadow 0.2s",boxShadow:a?`0 0 0 1px ${r}30, 0 4px 16px rgba(0,0,0,0.15)`:"none"},children:[i.jsx("div",{style:{width:36,height:36,borderRadius:8,background:`${r}18`,display:"flex",alignItems:"center",justifyContent:"center",color:r},children:n}),i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:13,fontWeight:600,color:s.textPrimary,fontFamily:s.font,marginBottom:4},children:e}),i.jsx("div",{style:{fontSize:12,color:s.textSecondary,fontFamily:s.font,lineHeight:1.5},children:t})]})]})}function f0({recentFiles:e,onOpenFile:t,t:n}){const[r,o]=S.useState(!1);return i.jsxs("div",{onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{background:r?n.cellBg:"transparent",border:`1px solid ${r?n.textMuted:n.cellBorder}`,borderRadius:10,padding:"20px 16px",textAlign:"left",display:"flex",flexDirection:"column",gap:10,transition:"border-color 0.2s, background 0.2s"},children:[i.jsx("div",{style:{width:36,height:36,borderRadius:8,background:`${n.warning}18`,display:"flex",alignItems:"center",justifyContent:"center",color:n.warning},children:i.jsx(p0,{})}),i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:13,fontWeight:600,color:n.textPrimary,fontFamily:n.font,marginBottom:8},children:"Open Recent"}),e.length===0?i.jsx("div",{style:{fontSize:12,color:n.textMuted,fontFamily:n.font,fontStyle:"italic"},children:"No recent files."}):i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:4},children:e.map(s=>i.jsx(S0,{file:s,onClick:()=>t(s),t:n},s.path))})]})]})}function S0({file:e,onClick:t,t:n}){const[r,o]=S.useState(!1);return i.jsx("button",{onClick:t,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{background:"transparent",border:"none",cursor:"pointer",color:r?n.accent:n.textSecondary,fontSize:12,fontFamily:n.font,textAlign:"left",padding:"2px 0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",transition:"color 0.15s"},children:e.name.replace(/\.(dqlnb|dql)$/,"")})}function R0(){return i.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 8.75 4.25V1.5ZM8.75 5.5h2.836L10.25 3.664V4.25c0 .138.112.25.25.25H8.75Zm.5 3.25a.75.75 0 0 1 .75.75v.75h.75a.75.75 0 0 1 0 1.5H10v.75a.75.75 0 0 1-1.5 0V11.5H7.75a.75.75 0 0 1 0-1.5H8.5V9.5a.75.75 0 0 1 .75-.75Z"})})}function p0(){return i.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7-3.25v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5a.75.75 0 0 1 1.5 0Z"})})}function A0(){return i.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M8.75 1.75a.75.75 0 0 0-1.5 0V6.5H2.75a.75.75 0 0 0 0 1.5H7.25v4.75a.75.75 0 0 0 1.5 0V8H13.25a.75.75 0 0 0 0-1.5H8.75V1.75Z"})})}const FE=typeof String.prototype.normalize=="function"?e=>e.normalize("NFKD"):e=>e;class ro{constructor(t,n,r=0,o=t.length,s,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(r,o),this.bufferStart=r,this.normalize=s?l=>s(FE(l)):FE,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return NI(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let n=LI(t),r=this.bufferStart+this.bufferPos;this.bufferPos+=OI(t);let o=this.normalize(n);if(o.length)for(let s=0,a=r;;s++){let l=o.charCodeAt(s),c=this.match(l,a,this.bufferPos+this.bufferStart);if(s==o.length-1){if(c)return this.value=c,this;break}a==r&&s<n.length&&n.charCodeAt(s)==l&&a++}}}match(t,n,r){let o=null;for(let s=0;s<this.matches.length;s+=2){let a=this.matches[s],l=!1;this.query.charCodeAt(a)==t&&(a==this.query.length-1?o={from:this.matches[s+1],to:r}:(this.matches[s]++,l=!0)),l||(this.matches.splice(s,2),s-=2)}return this.query.charCodeAt(0)==t&&(this.query.length==1?o={from:n,to:r}:this.matches.push(1,n)),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}}typeof Symbol<"u"&&(ro.prototype[Symbol.iterator]=function(){return this});const KR={from:-1,to:-1,match:/.*/.exec("")},Zc="gm"+(/x/.unicode==null?"":"u");class zR{constructor(t,n,r,o=0,s=t.length){if(this.text=t,this.to=s,this.curLine="",this.done=!1,this.value=KR,/\\[sWDnr]|\n|\r|\[\^/.test(n))return new JR(t,n,r,o,s);this.re=new RegExp(n,Zc+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.iter=t.iter();let a=t.lineAt(o);this.curLineStart=a.from,this.matchPos=Zs(t,o),this.getLine(this.curLineStart)}getLine(t){this.iter.next(t),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,o=r+n[0].length;if(this.matchPos=Zs(this.text,o+(r==o?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<o||r>this.value.to)&&(!this.test||this.test(r,o,n)))return this.value={from:r,to:o,match:n},this;t=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),t=0;else return this.done=!0,this}}}const ka=new WeakMap;class sr{constructor(t,n){this.from=t,this.text=n}get to(){return this.from+this.text.length}static get(t,n,r){let o=ka.get(t);if(!o||o.from>=r||o.to<=n){let l=new sr(n,t.sliceString(n,r));return ka.set(t,l),l}if(o.from==n&&o.to==r)return o;let{text:s,from:a}=o;return a>n&&(s=t.sliceString(n,a)+s,a=n),o.to<r&&(s+=t.sliceString(o.to,r)),ka.set(t,new sr(a,s)),new sr(n,s.slice(n-a,r-a))}}class JR{constructor(t,n,r,o,s){this.text=t,this.to=s,this.done=!1,this.value=KR,this.matchPos=Zs(t,o),this.re=new RegExp(n,Zc+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.flat=sr.get(t,o,this.chunkEnd(o+5e3))}chunkEnd(t){return t>=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==t&&(this.re.lastIndex=t+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,o=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,o,n)))return this.value={from:r,to:o,match:n},this.matchPos=Zs(this.text,o+(r==o?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=sr.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(zR.prototype[Symbol.iterator]=JR.prototype[Symbol.iterator]=function(){return this});function h0(e){try{return new RegExp(e,Zc),!0}catch{return!1}}function Zs(e,t){if(t>=e.length)return t;let n=e.lineAt(t),r;for(;t<n.to&&(r=n.text.charCodeAt(t-n.from))>=56320&&r<57344;)t++;return t}const I0=e=>{let{state:t}=e,n=String(t.doc.lineAt(e.state.selection.main.head).number),{close:r,result:o}=AI(e,{label:t.phrase("Go to line"),input:{type:"text",name:"line",value:n},focus:!0,submitLabel:t.phrase("go")});return o.then(s=>{let a=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.elements.line.value);if(!a){e.dispatch({effects:r});return}let l=t.doc.lineAt(t.selection.main.head),[,c,d,E,u]=a,T=E?+E.slice(1):0,f=d?+d:l.number;if(d&&u){let R=f/100;c&&(R=R*(c=="-"?-1:1)+l.number/t.doc.lines),f=Math.round(t.doc.lines*R)}else d&&c&&(f=f*(c=="-"?-1:1)+l.number);let h=t.doc.line(Math.max(1,Math.min(t.doc.lines,f))),A=ut.cursor(h.from+Math.max(0,Math.min(T,h.length)));e.dispatch({effects:[r,Ge.scrollIntoView(A.from,{y:"center"})],selection:A})}),!0},N0=({state:e,dispatch:t})=>{let{selection:n}=e,r=ut.create(n.ranges.map(o=>e.wordAt(o.head)||ut.cursor(o.head)),n.mainIndex);return r.eq(n)?!1:(t(e.update({selection:r})),!0)};function O0(e,t){let{main:n,ranges:r}=e.selection,o=e.wordAt(n.head),s=o&&o.from==n.from&&o.to==n.to;for(let a=!1,l=new ro(e.doc,t,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new ro(e.doc,t,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(s){let c=e.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const m0=({state:e,dispatch:t})=>{let{ranges:n}=e.selection;if(n.some(s=>s.from===s.to))return N0({state:e,dispatch:t});let r=e.sliceDoc(n[0].from,n[0].to);if(e.selection.ranges.some(s=>e.sliceDoc(s.from,s.to)!=r))return!1;let o=O0(e,r);return o?(t(e.update({selection:e.selection.addRange(ut.range(o.from,o.to),!1),effects:Ge.scrollIntoView(o.to)})),!0):!1},Bn=mI.define({combine(e){return gI(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new F0(t),scrollToMatch:t=>Ge.scrollIntoView(t)})}});function g0(e){return e?[Bn.of(e),Jl]:Jl}class qR{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||h0(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord,this.test=t.test}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?`
602
- `:r=="r"?"\r":r=="t"?" ":"\\")}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord&&this.test==t.test}create(){return this.regexp?new D0(this):new L0(this)}getCursor(t,n=0,r){let o=t.doc?t:Of.create({doc:t});return r==null&&(r=o.doc.length),this.regexp?er(this,o,n,r):Zn(this,o,n,r)}}class QR{constructor(t){this.spec=t}}function C0(e,t,n){return(r,o,s,a)=>{if(n&&!n(r,o,s,a))return!1;let l=r>=a&&o<=a+s.length?s.slice(r-a,o-a):t.doc.sliceString(r,o);return e(l,t,r,o)}}function Zn(e,t,n,r){let o;return e.wholeWord&&(o=x0(t.doc,t.charCategorizer(t.selection.main.head))),e.test&&(o=C0(e.test,t,o)),new ro(t.doc,e.unquoted,n,r,e.caseSensitive?void 0:s=>s.toLowerCase(),o)}function x0(e,t){return(n,r,o,s)=>((s>n||s+o.length<r)&&(s=Math.max(0,n-2),o=e.sliceString(s,Math.min(e.length,r+2))),(t(ei(o,n-s))!=en.Word||t(ti(o,n-s))!=en.Word)&&(t(ti(o,r-s))!=en.Word||t(ei(o,r-s))!=en.Word))}class L0 extends QR{constructor(t){super(t)}nextMatch(t,n,r){let o=Zn(this.spec,t,r,t.doc.length).nextOverlapping();if(o.done){let s=Math.min(t.doc.length,n+this.spec.unquoted.length);o=Zn(this.spec,t,0,s).nextOverlapping()}return o.done||o.value.from==n&&o.value.to==r?null:o.value}prevMatchInRange(t,n,r){for(let o=r;;){let s=Math.max(n,o-1e4-this.spec.unquoted.length),a=Zn(this.spec,t,s,o),l=null;for(;!a.nextOverlapping().done;)l=a.value;if(l)return l;if(s==n)return null;o-=1e4}}prevMatch(t,n,r){let o=this.prevMatchInRange(t,0,n);return o||(o=this.prevMatchInRange(t,Math.max(0,r-this.spec.unquoted.length),t.doc.length)),o&&(o.from!=n||o.to!=r)?o:null}getReplacement(t){return this.spec.unquote(this.spec.replace)}matchAll(t,n){let r=Zn(this.spec,t,0,t.doc.length),o=[];for(;!r.next().done;){if(o.length>=n)return null;o.push(r.value)}return o}highlight(t,n,r,o){let s=Zn(this.spec,t,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,t.doc.length));for(;!s.next().done;)o(s.value.from,s.value.to)}}function y0(e,t,n){return(r,o,s)=>(!n||n(r,o,s))&&e(s[0],t,r,o)}function er(e,t,n,r){let o;return e.wholeWord&&(o=_0(t.charCategorizer(t.selection.main.head))),e.test&&(o=y0(e.test,t,o)),new zR(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:o},n,r)}function ei(e,t){return e.slice(mf(e,t,!1),t)}function ti(e,t){return e.slice(t,mf(e,t))}function _0(e){return(t,n,r)=>!r[0].length||(e(ei(r.input,r.index))!=en.Word||e(ti(r.input,r.index))!=en.Word)&&(e(ti(r.input,r.index+r[0].length))!=en.Word||e(ei(r.input,r.index+r[0].length))!=en.Word)}class D0 extends QR{nextMatch(t,n,r){let o=er(this.spec,t,r,t.doc.length).next();return o.done&&(o=er(this.spec,t,0,n).next()),o.done?null:o.value}prevMatchInRange(t,n,r){for(let o=1;;o++){let s=Math.max(n,r-o*1e4),a=er(this.spec,t,s,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(s==n||l.from>s+10))return l;if(s==n)return null}}prevMatch(t,n,r){return this.prevMatchInRange(t,0,n)||this.prevMatchInRange(t,r,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return t.match[0];if(r=="$")return"$";for(let o=r.length;o>0;o--){let s=+r.slice(0,o);if(s>0&&s<t.match.length)return t.match[s]+r.slice(o)}return n})}matchAll(t,n){let r=er(this.spec,t,0,t.doc.length),o=[];for(;!r.next().done;){if(o.length>=n)return null;o.push(r.value)}return o}highlight(t,n,r,o){let s=er(this.spec,t,Math.max(0,n-250),Math.min(r+250,t.doc.length));for(;!s.next().done;)o(s.value.from,s.value.to)}}const oo=Oi.define(),ed=Oi.define(),tn=Nf.define({create(e){return new ja(zl(e).create(),null)},update(e,t){for(let n of t.effects)n.is(oo)?e=new ja(n.value.create(),e.panel):n.is(ed)&&(e=new ja(e.query,n.value?td:null));return e},provide:e=>hI.from(e,t=>t.panel)});class ja{constructor(t,n){this.query=t,this.panel=n}}const M0=mn.mark({class:"cm-searchMatch"}),b0=mn.mark({class:"cm-searchMatch cm-searchMatch-selected"}),P0=CI.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(tn))}update(e){let t=e.state.field(tn);(t!=e.startState.field(tn)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:e,panel:t}){if(!t||!e.spec.valid)return mn.none;let{view:n}=this,r=new xI;for(let o=0,s=n.visibleRanges,a=s.length;o<a;o++){let{from:l,to:c}=s[o];for(;o<a-1&&c>s[o+1].from-500;)c=s[++o].to;e.highlight(n.state,l,c,(d,E)=>{let u=n.state.selection.ranges.some(T=>T.from==d&&T.to==E);r.add(d,E,u?b0:M0)})}return r.finish()}},{decorations:e=>e.decorations});function Lo(e){return t=>{let n=t.state.field(tn,!1);return n&&n.query.spec.valid?e(t,n):tp(t)}}const ni=Lo((e,{query:t})=>{let{to:n}=e.state.selection.main,r=t.nextMatch(e.state,n,n);if(!r)return!1;let o=ut.single(r.from,r.to),s=e.state.facet(Bn);return e.dispatch({selection:o,effects:[nd(e,r),s.scrollToMatch(o.main,e)],userEvent:"select.search"}),ep(e),!0}),ri=Lo((e,{query:t})=>{let{state:n}=e,{from:r}=n.selection.main,o=t.prevMatch(n,r,r);if(!o)return!1;let s=ut.single(o.from,o.to),a=e.state.facet(Bn);return e.dispatch({selection:s,effects:[nd(e,o),a.scrollToMatch(s.main,e)],userEvent:"select.search"}),ep(e),!0}),v0=Lo((e,{query:t})=>{let n=t.matchAll(e.state,1e3);return!n||!n.length?!1:(e.dispatch({selection:ut.create(n.map(r=>ut.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),U0=({state:e,dispatch:t})=>{let n=e.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:o}=n.main,s=[],a=0;for(let l=new ro(e.doc,e.sliceDoc(r,o));!l.next().done;){if(s.length>1e3)return!1;l.value.from==r&&(a=s.length),s.push(ut.range(l.value.from,l.value.to))}return t(e.update({selection:ut.create(s,a),userEvent:"select.search.matches"})),!0},GE=Lo((e,{query:t})=>{let{state:n}=e,{from:r,to:o}=n.selection.main;if(n.readOnly)return!1;let s=t.nextMatch(n,r,r);if(!s)return!1;let a=s,l=[],c,d,E=[];a.from==r&&a.to==o&&(d=n.toText(t.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=t.nextMatch(n,a.from,a.to),E.push(Ge.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let u=e.state.changes(l);return a&&(c=ut.single(a.from,a.to).map(u),E.push(nd(e,a)),E.push(n.facet(Bn).scrollToMatch(c.main,e))),e.dispatch({changes:u,selection:c,effects:E,userEvent:"input.replace"}),!0}),w0=Lo((e,{query:t})=>{if(e.state.readOnly)return!1;let n=t.matchAll(e.state,1e9).map(o=>{let{from:s,to:a}=o;return{from:s,to:a,insert:t.getReplacement(o)}});if(!n.length)return!1;let r=e.state.phrase("replaced $ matches",n.length)+".";return e.dispatch({changes:n,effects:Ge.announce.of(r),userEvent:"input.replace.all"}),!0});function td(e){return e.state.facet(Bn).createPanel(e)}function zl(e,t){var n,r,o,s,a;let l=e.selection.main,c=l.empty||l.to>l.from+100?"":e.sliceDoc(l.from,l.to);if(t&&!c)return t;let d=e.facet(Bn);return new qR({search:((n=t==null?void 0:t.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=t==null?void 0:t.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(o=t==null?void 0:t.literal)!==null&&o!==void 0?o:d.literal,regexp:(s=t==null?void 0:t.regexp)!==null&&s!==void 0?s:d.regexp,wholeWord:(a=t==null?void 0:t.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function ZR(e){let t=If(e,td);return t&&t.dom.querySelector("[main-field]")}function ep(e){let t=ZR(e);t&&t==e.root.activeElement&&t.select()}const tp=e=>{let t=e.state.field(tn,!1);if(t&&t.panel){let n=ZR(e);if(n&&n!=e.root.activeElement){let r=zl(e.state,t.query.spec);r.valid&&e.dispatch({effects:oo.of(r)}),n.focus(),n.select()}}else e.dispatch({effects:[ed.of(!0),t?oo.of(zl(e.state,t.query.spec)):Oi.appendConfig.of(Jl)]});return!0},np=e=>{let t=e.state.field(tn,!1);if(!t||!t.panel)return!1;let n=If(e,td);return n&&n.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:ed.of(!1)}),!0},B0=[{key:"Mod-f",run:tp,scope:"editor search-panel"},{key:"F3",run:ni,shift:ri,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:ni,shift:ri,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:np,scope:"editor search-panel"},{key:"Mod-Shift-l",run:U0},{key:"Mod-Alt-g",run:I0},{key:"Mod-d",run:m0,preventDefault:!0}];class F0{constructor(t){this.view=t;let n=this.query=t.state.field(tn).query.spec;this.commit=this.commit.bind(this),this.searchField=Ze("input",{value:n.search,placeholder:Ve(t,"Find"),"aria-label":Ve(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Ze("input",{value:n.replace,placeholder:Ve(t,"Replace"),"aria-label":Ve(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Ze("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=Ze("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=Ze("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(o,s,a){return Ze("button",{class:"cm-button",name:o,onclick:s,type:"button"},a)}this.dom=Ze("div",{onkeydown:o=>this.keydown(o),class:"cm-search"},[this.searchField,r("next",()=>ni(t),[Ve(t,"next")]),r("prev",()=>ri(t),[Ve(t,"previous")]),r("select",()=>v0(t),[Ve(t,"all")]),Ze("label",null,[this.caseField,Ve(t,"match case")]),Ze("label",null,[this.reField,Ve(t,"regexp")]),Ze("label",null,[this.wordField,Ve(t,"by word")]),...t.state.readOnly?[]:[Ze("br"),this.replaceField,r("replace",()=>GE(t),[Ve(t,"replace")]),r("replaceAll",()=>w0(t),[Ve(t,"replace all")])],Ze("button",{name:"close",onclick:()=>np(t),"aria-label":Ve(t,"close"),type:"button"},["×"])])}commit(){let t=new qR({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:oo.of(t)}))}keydown(t){yI(this.view,t,"search-panel")?t.preventDefault():t.keyCode==13&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?ri:ni)(this.view)):t.keyCode==13&&t.target==this.replaceField&&(t.preventDefault(),GE(this.view))}update(t){for(let n of t.transactions)for(let r of n.effects)r.is(oo)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Bn).top}}function Ve(e,t){return e.state.phrase(t)}const Es=30,us=/[\s\.,:;?!]/;function nd(e,{from:t,to:n}){let r=e.state.doc.lineAt(t),o=e.state.doc.lineAt(n).to,s=Math.max(r.from,t-Es),a=Math.min(o,n+Es),l=e.state.sliceDoc(s,a);if(s!=r.from){for(let c=0;c<Es;c++)if(!us.test(l[c+1])&&us.test(l[c])){l=l.slice(c);break}}if(a!=o){for(let c=l.length-1;c>l.length-Es;c--)if(!us.test(l[c-1])&&us.test(l[c])){l=l.slice(0,c);break}}return Ge.announce.of(`${e.state.phrase("current match")}. ${l} ${e.state.phrase("on line")} ${r.number}.`)}const G0=Ge.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),Jl=[tn,II.low(P0),G0],H0=3e4,oi="application/dql-semantic-ref";let Ts=[],HE=0,so=null;function k0(e){J.trackUsage(e),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:e}}))}async function kE(){if(Date.now()<HE&&Ts.length>0)return Ts;const e=await fetch(`${window.location.origin}/api/semantic-completions`);if(!e.ok)throw new Error(`Failed to load semantic completions: HTTP ${e.status}`);const t=await e.json();return Ts=Array.isArray(t.completions)?t.completions:[],HE=Date.now()+H0,Ts}function rp(e,t,n){const r=n??e.state.selection.main.from;e.dispatch({changes:{from:r,to:n??e.state.selection.main.to,insert:t},selection:{anchor:r+t.length}}),e.focus()}function j0(e){so=e}function Y0(e){so===e&&(so=null)}function W0(e){return so?(rp(so,e),!0):!1}function V0(e,t,n){const r=n?e.posAtCoords(n)??e.state.selection.main.from:e.state.selection.main.from;rp(e,t,r)}function jE(e,t,n){return{label:e.name,detail:e.type==="metric"?"@metric":"@dim",type:e.type==="metric"?"function":"variable",info:`${e.label}${e.description?`
603
- ${e.description}`:""}${e.sql?`
604
- ${e.sql}`:""}`,apply(r){const s=r.state.sliceDoc(n,n+1)===")"?e.name:`${e.name})`;r.dispatch({changes:{from:t,to:n,insert:s},selection:{anchor:t+s.length}}),k0(e.name)}}}function $0(e){return{from:e,options:[{label:"@metric(",detail:"semantic metric",type:"function",apply(t,n,r,o){t.dispatch({changes:{from:r,to:o,insert:"@metric("},selection:{anchor:r+8}})}},{label:"@dim(",detail:"semantic dimension",type:"function",apply(t,n,r,o){t.dispatch({changes:{from:r,to:o,insert:"@dim("},selection:{anchor:r+5}})}}]}}const X0=async e=>{const{state:t,pos:n}=e,r=t.sliceDoc(Math.max(0,n-120),n),o=/@metric\(([^)]*)$/i.exec(r);if(o){const l=o[1].trim().toLowerCase(),c=n-o[1].length,d=(await kE()).filter(E=>E.type==="metric").filter(E=>!l||E.name.toLowerCase().includes(l)||E.label.toLowerCase().includes(l)||(E.domain??"").toLowerCase().includes(l)||E.tags.some(u=>u.toLowerCase().includes(l))).slice(0,50);return{from:c,options:d.map(E=>jE(E,c,n)),validFor:/^[\w-]*$/}}const s=/@dim\(([^)]*)$/i.exec(r);if(s){const l=s[1].trim().toLowerCase(),c=n-s[1].length,d=(await kE()).filter(E=>E.type==="dimension").filter(E=>!l||E.name.toLowerCase().includes(l)||E.label.toLowerCase().includes(l)||(E.domain??"").toLowerCase().includes(l)||E.tags.some(u=>u.toLowerCase().includes(l))).slice(0,50);return{from:c,options:d.map(E=>jE(E,c,n)),validFor:/^[\w-]*$/}}const a=/@([md][a-z_]*)?$/i.exec(r);return a?$0(n-a[0].length):(e.explicit,null)};function op(e){if(!e)return null;try{const t=JSON.parse(e);return(t.type==="metric"||t.type==="dimension")&&t.name&&t.reference?{type:t.type,name:t.name,reference:t.reference}:null}catch{return null}}function K0(e){const t=e.match(/LINE\s+(\d+)/i);if(t){const o=parseInt(t[1],10),s=e.match(/\n(\s*)\^/),a=s?s[1].length+1:1;return{line:o,col:a}}const n=e.match(/at line\s+(\d+),?\s*column\s+(\d+)/i);if(n)return{line:parseInt(n[1],10),col:parseInt(n[2],10)};const r=e.match(/line\s+(\d+)/i);return r?{line:parseInt(r[1],10),col:1}:null}const Ps=Oi.define(),z0=Nf.define({create(){return mn.none},update(e,t){for(const n of t.effects)if(n.is(Ps)){if(!n.value)return mn.none;const{from:r,to:o,message:s}=n.value;return mn.set([mn.mark({class:"cm-sql-error",attributes:{title:s}}).range(r,o)])}return e},provide:e=>Ge.decorations.from(e)}),J0=_I.define([{tag:me.keyword,color:"var(--sql-keyword)",fontWeight:"600"},{tag:[me.controlKeyword,me.moduleKeyword],color:"var(--sql-keyword)",fontWeight:"600"},{tag:[me.string,me.special(me.string)],color:"var(--sql-string)"},{tag:me.number,color:"var(--sql-number)"},{tag:me.bool,color:"var(--sql-number)",fontWeight:"600"},{tag:me.null,color:"var(--sql-number)",fontWeight:"600"},{tag:[me.comment,me.lineComment,me.blockComment,me.docComment],color:"var(--sql-comment)",fontStyle:"italic"},{tag:[me.function(me.variableName),me.function(me.propertyName)],color:"var(--sql-function)"},{tag:[me.typeName,me.className],color:"var(--sql-type)"},{tag:me.operator,color:"var(--sql-punctuation)"},{tag:me.punctuation,color:"var(--sql-punctuation)"},{tag:me.bracket,color:"var(--sql-punctuation)"},{tag:[me.variableName,me.name,me.propertyName,me.attributeName],color:"var(--sql-ident)"},{tag:me.invalid,color:"var(--color-status-error)"}]),q0=Ge.baseTheme({".cm-sql-error":{textDecoration:"underline wavy var(--color-status-error)",textUnderlineOffset:"3px",background:"color-mix(in srgb, var(--color-status-error) 10%, transparent)"}});function sp(e){return Ge.theme({"&":{background:"var(--color-bg-sunken)",color:"var(--color-text-primary)"},".cm-content":{caretColor:"var(--color-text-primary)"},".cm-cursor":{borderLeftColor:"var(--color-text-primary)"},".cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},"&.cm-focused .cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},".cm-gutters":{background:"var(--color-bg-sunken)",color:"var(--color-text-tertiary)",border:"none",borderRight:"1px solid var(--color-border-subtle)"},".cm-activeLineGutter":{background:"var(--color-bg-hover)"},".cm-activeLine":{background:"var(--color-bg-hover)"},".cm-matchingBracket":{background:"color-mix(in srgb, var(--color-accent-blue) 18%, transparent)",outline:"1px solid var(--color-accent-blue)"},".cm-foldPlaceholder":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-secondary)",borderRadius:3,padding:"0 4px"},".cm-tooltip":{background:"var(--color-bg-card)",border:"1px solid var(--color-border-primary)",color:"var(--color-text-primary)",borderRadius:6,boxShadow:"0 4px 12px color-mix(in srgb, var(--color-bg-primary) 40%, transparent)"},".cm-tooltip.cm-tooltip-autocomplete":{"& > ul > li":{padding:"3px 8px"},"& > ul > li[aria-selected]":{background:"color-mix(in srgb, var(--color-accent-blue) 20%, transparent)",color:"var(--color-accent-blue)"}},".cm-searchMatch":{background:"color-mix(in srgb, var(--color-status-warning) 25%, transparent)",outline:"1px solid var(--color-status-warning)"},".cm-searchMatch.cm-searchMatch-selected":{background:"color-mix(in srgb, var(--color-status-warning) 50%, transparent)"},".cm-panels":{background:"var(--color-bg-secondary)",borderTop:"1px solid var(--color-border-subtle)"},".cm-panel":{padding:"6px 8px"},".cm-panel input":{background:"var(--color-bg-sunken)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 6px",fontSize:12},".cm-panel button":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 8px",cursor:"pointer",fontSize:12,marginLeft:4}},{dark:e})}const Q0=sp(!0),Z0=sp(!1);function eD(e){return e==="midnight"||e==="obsidian"||e==="dark"}function rd({value:e,onChange:t,onRun:n,themeMode:r,autoFocus:o,schema:s,errorMessage:a,editorRef:l,wrap:c=!0}){const d=ie[r],E=S.useRef(null),u=S.useRef(null),[T,f]=S.useState(!1),h=S.useRef(n),A=S.useRef(t),R=S.useRef(new DI);return h.current=n,A.current=t,S.useEffect(()=>{l&&(l.current={undo:()=>{u.current&&bI(u.current)},redo:()=>{u.current&&MI(u.current)},resetTo:p=>{const N=u.current;N&&N.dispatch({changes:{from:0,to:N.state.doc.length,insert:p}})}})}),S.useEffect(()=>{if(!E.current)return;const p=PI.of([{key:"Shift-Enter",run:()=>(h.current(),!0)},{key:"Ctrl-Enter",mac:"Cmd-Enter",run:()=>(h.current(),!0)},{key:"Ctrl-/",mac:"Cmd-/",run:vI},UI,...wI,...BI,...FI,...B0,...GI,...HI]),N=Ge.updateListener.of(x=>{x.docChanged&&A.current(x.state.doc.toString())}),I=Ge.domEventHandlers({focus:(x,w)=>{j0(w)},blur:(x,w)=>{Y0(w)}}),O=Ge.theme({"&":{background:"var(--color-bg-surface)",color:"var(--color-text-primary)",fontFamily:"var(--font-mono)",fontSize:"13px",minHeight:"80px",maxHeight:"480px"},".cm-scroller":{overflow:"auto",fontFamily:"inherit"},".cm-content":{padding:"10px 0",minHeight:"80px",color:"var(--color-text-primary)"},".cm-focused":{outline:"none"},".cm-editor":{border:"none"},".cm-gutters":{minWidth:40},".cm-foldGutter":{cursor:"pointer"}}),C=s?ns({schema:s,upperCaseKeywords:!1}):ns({upperCaseKeywords:!1}),m=[p,N,I,O,R.current.of(C),kI({closeOnBlur:!1,override:[X0]}),jI(),YI(),WI(),VI(),$I(),XI(),KI(),zI(),...c?[Ge.lineWrapping]:[],g0({top:!0}),z0,q0,JI(J0),eD(r)?Q0:Z0],g=Of.create({doc:e,extensions:m}),y=new Ge({state:g,parent:E.current});return u.current=y,o&&y.focus(),()=>{y.destroy(),u.current=null}},[r]),S.useEffect(()=>{const p=u.current;if(!p)return;const N=s?ns({schema:s,upperCaseKeywords:!1}):ns({upperCaseKeywords:!1});p.dispatch({effects:R.current.reconfigure(N)})},[s]),S.useEffect(()=>{const p=u.current;if(!p)return;const N=p.state.doc.toString();N!==e&&p.dispatch({changes:{from:0,to:N.length,insert:e}})},[e]),S.useEffect(()=>{const p=u.current;if(!p)return;if(!a){p.dispatch({effects:Ps.of(null)});return}const N=K0(a),I=p.state.doc;if(N&&N.line>=1&&N.line<=I.lines){const O=I.line(N.line),C=O.from+Math.max(0,N.col-1),m=Math.max(C+1,O.to);p.dispatch({effects:Ps.of({from:Math.min(C,I.length),to:Math.min(m,I.length),message:a})})}else if(I.lines>=1){const O=I.line(1);p.dispatch({effects:Ps.of({from:O.from,to:Math.max(O.from+1,O.to),message:a})})}},[a]),i.jsx("div",{onDragOver:p=>{p.dataTransfer.types.includes(oi)&&(p.preventDefault(),f(!0))},onDragLeave:()=>f(!1),onDrop:p=>{const N=u.current;if(!N)return;const I=op(p.dataTransfer.getData(oi));I&&(p.preventDefault(),f(!1),V0(N,I.reference,{x:p.clientX,y:p.clientY}),J.trackUsage(I.name),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:I.name}})))},style:{background:"var(--color-bg-surface)",minHeight:80,border:T?`1px solid ${d.accent}`:"1px solid transparent",borderRadius:6,transition:"border-color 0.15s"},children:i.jsx("div",{ref:E,style:{minHeight:80}})})}rd.displayName="SQLCellEditor";function tD(e,t){const n=e.split(`
605
- `),r=[];let o=0;for(;o<n.length;){const s=n[o],a=s.match(/^(#{1,6})\s+(.+)$/);if(a){const l=a[1].length,c=a[2],E=[28,22,18,16,14,13][l-1];r.push(i.jsx("div",{style:{fontSize:E,fontWeight:l<=2?700:600,color:t.textPrimary,fontFamily:t.font,lineHeight:1.3,marginBottom:l===1?12:8,marginTop:o>0?l===1?16:10:0,borderBottom:l===1?`1px solid ${t.cellBorder}`:void 0,paddingBottom:l===1?8:void 0},children:Gr(c,t)},o)),o++;continue}if(/^[-*_]{3,}$/.test(s.trim())){r.push(i.jsx("hr",{style:{border:"none",borderTop:`1px solid ${t.cellBorder}`,margin:"12px 0"}},o)),o++;continue}if(s.startsWith("> ")){r.push(i.jsx("div",{style:{borderLeft:`3px solid ${t.textMuted}`,paddingLeft:12,marginLeft:4,color:t.textSecondary,fontStyle:"italic",fontFamily:t.fontSerif,fontSize:14},children:Gr(s.slice(2),t)},o)),o++;continue}if(s.startsWith("```")){const l=[];for(o++;o<n.length&&!n[o].startsWith("```");)l.push(n[o]),o++;r.push(i.jsx("pre",{style:{background:"var(--color-bg-surface)",border:"1px solid var(--color-border-subtle)",borderRadius:6,padding:"10px 12px",fontSize:12,fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",overflow:"auto",margin:"8px 0",lineHeight:1.6},children:l.join(`
606
- `)},o)),o++;continue}if(/^[-*+]\s/.test(s)){const l=o,c=[];for(;o<n.length&&/^[-*+]\s/.test(n[o]);)c.push(n[o].replace(/^[-*+]\s/,"")),o++;r.push(i.jsx("ul",{style:{paddingLeft:20,marginBottom:8,color:t.textSecondary},children:c.map((d,E)=>i.jsx("li",{style:{fontSize:14,fontFamily:t.font,lineHeight:1.6,marginBottom:2},children:Gr(d,t)},E))},`ul-${l}`));continue}if(/^\d+\.\s/.test(s)){const l=o,c=[];for(;o<n.length&&/^\d+\.\s/.test(n[o]);)c.push(n[o].replace(/^\d+\.\s/,"")),o++;r.push(i.jsx("ol",{style:{paddingLeft:20,marginBottom:8,color:t.textSecondary},children:c.map((d,E)=>i.jsx("li",{style:{fontSize:14,fontFamily:t.font,lineHeight:1.6,marginBottom:2},children:Gr(d,t)},E))},`ol-${l}`));continue}if(!s.trim()){r.push(i.jsx("div",{style:{height:8}},o)),o++;continue}r.push(i.jsx("p",{style:{fontSize:14,lineHeight:1.7,fontFamily:t.fontSerif,color:t.textSecondary,marginBottom:6},children:Gr(s,t)},o)),o++}return r}function Gr(e,t){const n=[];let r=e,o=0;for(;r.length>0;){const s=r.match(/\*{3}(.+?)\*{3}/),a=r.match(/\*{2}(.+?)\*{2}/),l=r.match(/\*(.+?)\*/),c=r.match(/`(.+?)`/),d=r.match(/\[(.+?)\]\((.+?)\)/),E=[s?{match:s,type:"boldItalic"}:null,a?{match:a,type:"bold"}:null,l?{match:l,type:"italic"}:null,c?{match:c,type:"code"}:null,d?{match:d,type:"link"}:null].filter(Boolean);if(E.length===0){n.push(i.jsx(ye.Fragment,{children:r},o++));break}const u=E.reduce((f,h)=>(f.match.index??0)<(h.match.index??0)?f:h),T=u.match.index??0;switch(T>0&&n.push(i.jsx(ye.Fragment,{children:r.slice(0,T)},o++)),u.type){case"boldItalic":n.push(i.jsx("strong",{style:{fontStyle:"italic"},children:u.match[1]},o++));break;case"bold":n.push(i.jsx("strong",{children:u.match[1]},o++));break;case"italic":n.push(i.jsx("em",{children:u.match[1]},o++));break;case"code":n.push(i.jsx("code",{style:{background:"var(--color-bg-surface)",border:"1px solid var(--color-border-subtle)",borderRadius:4,padding:"1px 5px",fontSize:"0.9em",fontFamily:"var(--font-mono)",color:"var(--color-accent-blue)"},children:u.match[1]},o++));break;case"link":n.push(i.jsx("a",{href:u.match[2],target:"_blank",rel:"noopener noreferrer",style:{color:t.accent,textDecoration:"underline"},children:u.match[1]},o++));break}r=r.slice(T+u.match[0].length)}return i.jsx(i.Fragment,{children:n})}function nD({value:e,onChange:t,onRun:n,themeMode:r}){const o=ie[r],[s,a]=S.useState(!1),l=S.useRef(null);S.useEffect(()=>{if(s&&l.current){l.current.focus();const u=l.current;u.style.height="auto",u.style.height=`${Math.max(u.scrollHeight,80)}px`}},[s]);const c=()=>{a(!1)},d=u=>{if(u.key==="Escape"&&a(!1),u.key==="Enter"&&u.shiftKey&&(u.preventDefault(),a(!1),n==null||n()),u.key==="Tab"){u.preventDefault();const T=u.currentTarget,f=T.selectionStart,h=T.selectionEnd,A=e.slice(0,f)+" "+e.slice(h);t(A),requestAnimationFrame(()=>{T.selectionStart=T.selectionEnd=f+2})}},E=u=>{t(u.target.value);const T=u.target;T.style.height="auto",T.style.height=`${Math.max(T.scrollHeight,80)}px`};return s?i.jsx("textarea",{ref:l,value:e,onChange:E,onBlur:c,onKeyDown:d,placeholder:"Write markdown here...",spellCheck:!1,style:{display:"block",width:"100%",minHeight:80,padding:"12px 16px",background:o.editorBg,color:o.textPrimary,border:"none",outline:"none",resize:"none",fontFamily:o.fontMono,fontSize:13,lineHeight:"20px",borderRadius:0,caretColor:o.accent}}):e.trim()?i.jsx("div",{onDoubleClick:()=>a(!0),title:"Double-click to edit",style:{padding:"12px 16px",cursor:"text",minHeight:48},children:tD(e,o)}):i.jsx("div",{onDoubleClick:()=>a(!0),style:{padding:"12px 16px",color:o.textMuted,fontFamily:o.font,fontSize:13,fontStyle:"italic",cursor:"text",minHeight:48,display:"flex",alignItems:"center"},children:"Double-click to add markdown..."})}function rD({cell:e,themeMode:t,onApplyParam:n}){const{dispatch:r}=fe(),o=ie[t],[s,a]=S.useState(!1),l=e.paramConfig??{paramType:"text",label:"Parameter",defaultValue:"",options:[]},c=e.paramValue??l.defaultValue,d=f=>{r({type:"UPDATE_CELL",id:e.id,updates:{paramConfig:{...l,...f}}})},E=f=>{r({type:"SET_PARAM_VALUE",id:e.id,value:f})},u=(l.options??[]).map(f=>f.trim()).filter(Boolean),T=e.name?`{{${e.name}}}`:null;return i.jsxs("div",{style:{background:o.cellBg,border:`1px solid ${o.cellBorder}`,borderLeft:`3px solid ${o.warning}`,borderRadius:8,overflow:"hidden"},children:[s&&i.jsxs("div",{style:{background:o.tableHeaderBg,borderBottom:`1px solid ${o.cellBorder}`,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:2},children:[i.jsx("span",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.06em",color:o.warning,fontFamily:o.fontMono,textTransform:"uppercase"},children:"Configure Parameter"}),i.jsx("button",{onClick:()=>a(!1),title:"Done",style:{background:o.warning,border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:700,fontFamily:o.font,padding:"3px 10px",display:"flex",alignItems:"center",gap:4},children:"✓ Done"})]}),i.jsxs("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[i.jsx("span",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:"Variable name"}),i.jsx("input",{value:e.name??"",onChange:f=>r({type:"UPDATE_CELL",id:e.id,updates:{name:f.target.value||void 0}}),placeholder:"e.g. start_date",style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:12,fontFamily:o.fontMono,padding:"4px 7px",outline:"none"}})]}),i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[i.jsx("span",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:"Display label"}),i.jsx("input",{value:l.label,onChange:f=>d({label:f.target.value}),placeholder:"e.g. Start Date",style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:12,fontFamily:o.font,padding:"4px 7px",outline:"none"}})]}),i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 100px"},children:[i.jsx("span",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:"Type"}),i.jsxs("select",{value:l.paramType,onChange:f=>d({paramType:f.target.value}),style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:12,fontFamily:o.font,padding:"4px 7px",outline:"none"},children:[i.jsx("option",{value:"text",children:"Text"}),i.jsx("option",{value:"number",children:"Number"}),i.jsx("option",{value:"date",children:"Date"}),i.jsx("option",{value:"select",children:"Select"})]})]}),i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[i.jsx("span",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:"Default value"}),i.jsx("input",{type:l.paramType==="number"?"number":l.paramType==="date"?"date":"text",value:l.defaultValue,onChange:f=>d({defaultValue:f.target.value}),style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:12,fontFamily:o.font,padding:"4px 7px",outline:"none"}})]})]}),l.paramType==="select"&&i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3},children:[i.jsx("span",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:"Options (one per line)"}),i.jsx("textarea",{value:(l.options??[]).join(`
607
- `),onChange:f=>d({options:f.target.value.split(`
608
- `)}),rows:4,placeholder:`Option A
609
- Option B
610
- Option C`,style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:12,fontFamily:o.fontMono,padding:"5px 7px",outline:"none",resize:"vertical"}})]})]}),i.jsxs("div",{style:{padding:"12px 14px",display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},children:[i.jsx("button",{onClick:()=>a(f=>!f),title:s?"Close config":"Configure parameter",style:{background:s?`${o.warning}18`:"transparent",border:`1px solid ${s?o.warning:o.cellBorder}`,borderRadius:5,cursor:"pointer",color:s?o.warning:o.textMuted,width:26,height:26,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"},children:s?i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.749.749 0 1 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"})}):i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM8 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM8 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"})})}),i.jsx("span",{style:{fontSize:13,fontWeight:500,fontFamily:o.font,color:o.textSecondary,flexShrink:0},children:l.label}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3},children:[l.paramType==="select"?i.jsx("select",{value:c,onChange:f=>E(f.target.value),style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:5,color:o.textPrimary,fontSize:13,fontFamily:o.font,padding:"5px 10px",outline:"none",minWidth:160},children:u.length===0?i.jsx("option",{value:"",children:"— no options configured —"}):u.map(f=>i.jsx("option",{value:f,children:f},f))}):i.jsx("input",{type:l.paramType,value:c,onChange:f=>E(f.target.value),style:{background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:5,color:o.textPrimary,fontSize:13,fontFamily:l.paramType==="number"?o.fontMono:o.font,padding:"5px 10px",outline:"none",minWidth:160}}),T&&i.jsx("span",{style:{fontSize:10,fontFamily:o.fontMono,color:o.warning,opacity:.8},children:T})]}),c&&i.jsx("span",{style:{fontSize:12,fontFamily:o.fontMono,color:o.textPrimary,background:`${o.warning}18`,border:`1px solid ${o.warning}40`,borderRadius:4,padding:"2px 8px",flexShrink:0},children:c}),e.name&&n&&i.jsx("button",{onClick:()=>n(e.name),title:`Re-run cells that use {{${e.name}}}`,style:{background:o.warning,border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:600,fontFamily:o.font,padding:"4px 12px",flexShrink:0,transition:"opacity 0.15s"},children:"Apply"})]})]})}function oD({cell:e,themeMode:t,title:n,subtitle:r,color:o,badge:s}){const a=ie[t];return i.jsx(mR,{typeLabel:n,typeColor:o,idleBorder:a.cellBorder,background:a.cellBg,headerBackground:`${a.tableHeaderBg}80`,title:e.name?i.jsx("span",{style:{fontSize:12,fontFamily:a.fontMono,color:a.textSecondary},children:e.name}):void 0,actions:s?i.jsx("span",{style:{fontSize:9,fontFamily:a.fontMono,fontWeight:600,letterSpacing:"0.1em",color:a.textMuted,textTransform:"uppercase",padding:"2px 6px",border:`1px solid ${a.cellBorder}`,borderRadius:3},children:s}):void 0,children:i.jsx("div",{style:{padding:"12px 14px",fontSize:12,color:a.textSecondary,lineHeight:1.5,fontFamily:a.font},children:r})})}function sD(e){return e.type==="param"?"param":e.type.toUpperCase()}function iD({cells:e,index:t,content:n,themeMode:r,onInsertHandle:o}){const s=ie[r],[a,l]=S.useState(!1),c=S.useRef(null),d=S.useMemo(()=>e.slice(0,t).filter(T=>T.name&&T.name.trim().length>0),[e,t]),E=S.useMemo(()=>G_(n),[n]);S.useEffect(()=>{if(!a)return;const T=f=>{var h;(h=c.current)!=null&&h.contains(f.target)||l(!1)};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[a]);const u=E.length===0?"df":E.length===1?`df: ${E[0]}`:`df: ${E[0]} +${E.length-1}`;return i.jsxs("div",{ref:c,style:{position:"relative",flexShrink:0},children:[i.jsxs("button",{onClick:()=>l(T=>!T),title:"Insert an upstream dataframe handle ({{name}})",style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:10,fontFamily:s.fontMono,fontWeight:600,letterSpacing:"0.04em",color:E.length>0?s.accent:s.textMuted,background:E.length>0?`${s.accent}14`:"transparent",border:`1px solid ${E.length>0?`${s.accent}55`:s.btnBorder}`,borderRadius:4,padding:"1px 6px",cursor:"pointer",textTransform:"lowercase",transition:"border-color 0.15s, color 0.15s"},children:[u,i.jsx("span",{style:{fontSize:8,opacity:.7},children:"▾"})]}),a&&i.jsxs("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,zIndex:20,minWidth:220,maxWidth:280,background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,display:"flex",flexDirection:"column",gap:2},children:[i.jsx("div",{style:{fontSize:9,fontFamily:s.font,fontWeight:700,letterSpacing:"0.1em",color:s.textMuted,textTransform:"uppercase",padding:"4px 8px 2px"},children:"Upstream dataframes"}),d.length===0&&i.jsx("div",{style:{fontSize:11,fontFamily:s.font,color:s.textMuted,padding:"6px 8px 8px",lineHeight:1.4},children:"No named upstream cells yet. Name a cell (click its header) to expose it here."}),d.map(T=>{const f=T.name?E.includes(T.name):!1;return i.jsxs("button",{onClick:()=>{T.name&&o(T.name),l(!1)},style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px",background:f?`${s.accent}14`:"transparent",border:"none",borderRadius:4,cursor:"pointer",textAlign:"left",color:s.textPrimary,fontFamily:s.fontMono,fontSize:11},onMouseEnter:h=>{f||(h.currentTarget.style.background=s.tableRowHover)},onMouseLeave:h=>{f||(h.currentTarget.style.background="transparent")},children:[i.jsx("span",{style:{fontSize:9,fontFamily:s.fontMono,fontWeight:700,color:s.textMuted,minWidth:36},children:sD(T)}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:T.name}),f&&i.jsx("span",{style:{fontSize:9,color:s.accent,fontWeight:700,letterSpacing:"0.08em"},children:"IN USE"})]},T.id)})]})]})}const aD=/date|time|_at$|_on$|timestamp/i;function lD(e){return typeof e=="number"||typeof e=="string"&&e!==""&&!isNaN(Number(e))}function od(e,t){if(aD.test(e))return"date";const n=t.slice(0,40).map(o=>o[e]).filter(o=>o!=null);return n.length===0?"string":n.every(o=>typeof o=="boolean")?"bool":n.every(o=>typeof o=="object")?"json":n.filter(lD).length/n.length>.8?"numeric":"string"}function ip(e){return e==="numeric"?"measure":e==="date"?"temporal":"dimension"}const cD=[25,50,100,500];function ql(e){return typeof e=="number"?!0:typeof e=="string"?!isNaN(Number(e))&&e.trim()!=="":!1}function dD(e){switch(e){case"numeric":return{icon:"#",color:"#79c0ff"};case"date":return{icon:"D",color:"#e3b341"};case"bool":return{icon:"B",color:"#a371f7"};case"json":return{icon:"{}",color:"#ff7b72"};case"string":default:return{icon:"A",color:"#56d364"}}}function ap(e){return e==null?"":typeof e=="object"?JSON.stringify(e):String(e)}function ED(e,t){return e==null?1:t==null?-1:ql(e)&&ql(t)?Number(e)-Number(t):String(e).localeCompare(String(t))}function uD(e,t){const n=a=>a.includes(",")||a.includes('"')||a.includes(`
611
- `)?`"${a.replace(/"/g,'""')}"`:a,r=e.columns.map(n).join(","),o=e.rows.map(a=>e.columns.map(l=>n(ap(a[l]))).join(",")),s=[r,...o].join(`
612
- `);lp(s,"export.csv","text/csv")}function TD(e,t){const n=JSON.stringify(e.rows,null,2);lp(n,"export.json","application/json")}function lp(e,t,n){const r=new Blob([e],{type:n}),o=URL.createObjectURL(r),s=document.createElement("a");s.href=o,s.download=t,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(o)}function fD({dir:e,color:t}){return e?i.jsx("svg",{width:"8",height:"10",viewBox:"0 0 8 10",fill:t,style:{marginLeft:3,flexShrink:0},children:e==="asc"?i.jsx("path",{d:"M4 0L7 4H1L4 0Z"}):i.jsx("path",{d:"M4 10L1 6H7L4 10Z"})}):i.jsxs("svg",{width:"8",height:"10",viewBox:"0 0 8 10",fill:t,opacity:.3,style:{marginLeft:3,flexShrink:0},children:[i.jsx("path",{d:"M4 0L7 3.5H1L4 0Z"}),i.jsx("path",{d:"M4 10L1 6.5H7L4 10Z"})]})}function yo({result:e,themeMode:t}){const n=ie[t],[r,o]=S.useState(null),[s,a]=S.useState(null),[l,c]=S.useState(null),[d,E]=S.useState(""),[u,T]=S.useState(50),[f,h]=S.useState(0),A=S.useCallback(y=>{s===y?l==="asc"?c("desc"):l==="desc"?(a(null),c(null)):c("asc"):(a(y),c("asc")),h(0)},[s,l]),R=S.useMemo(()=>{if(!d.trim())return e.rows;const y=d.toLowerCase();return e.rows.filter(x=>e.columns.some(w=>{const D=x[w];return D==null?!1:String(D).toLowerCase().includes(y)}))},[e.rows,e.columns,d]),p=S.useMemo(()=>{if(!s||!l)return R;const y=[...R];return y.sort((x,w)=>{const D=ED(x[s],w[s]);return l==="desc"?-D:D}),y},[R,s,l]),N=S.useMemo(()=>{const y=new Map;for(const x of e.columns)y.set(x,od(x,e.rows));return y},[e.columns,e.rows]),[I,O]=S.useState(!1),C=Math.max(1,Math.ceil(p.length/u)),m=Math.min(f,C-1),g=p.slice(m*u,(m+1)*u);return e.columns.length===0?i.jsx("div",{style:{padding:"12px 16px",color:n.textMuted,fontSize:12,fontFamily:n.font,fontStyle:"italic"},children:"Query executed successfully. No columns to display."}):i.jsxs("div",{children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"4px 8px",borderBottom:`1px solid ${n.tableBorder}`,background:`${n.tableHeaderBg}60`,flexWrap:"wrap"},children:[i.jsxs("div",{style:{position:"relative",flex:"0 1 200px",minWidth:120},children:[i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:n.textMuted,style:{position:"absolute",left:6,top:6},children:i.jsx("path",{d:"M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"})}),i.jsx("input",{value:d,onChange:y=>{E(y.target.value),h(0)},placeholder:"Filter rows...",style:{width:"100%",background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:11,fontFamily:n.font,padding:"3px 8px 3px 22px",outline:"none"}}),d&&i.jsx("button",{onClick:()=>E(""),style:{position:"absolute",right:4,top:3,background:"none",border:"none",color:n.textMuted,cursor:"pointer",fontSize:12,padding:"0 2px"},children:"×"})]}),i.jsxs("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:[d?`${p.length} of ${e.rows.length}`:`${e.rows.length}`," rows"]}),i.jsx("div",{style:{flex:1}}),i.jsx(YE,{label:"CSV",onClick:()=>uD(e),t:n}),i.jsx(YE,{label:"JSON",onClick:()=>TD(e),t:n}),i.jsx("select",{value:u,onChange:y=>{T(Number(y.target.value)),h(0)},style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:3,color:n.textSecondary,fontSize:10,fontFamily:n.font,padding:"2px 4px",outline:"none"},children:cD.map(y=>i.jsxs("option",{value:y,children:[y," / page"]},y))}),C>1&&i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[i.jsx(Kn,{disabled:m===0,onClick:()=>h(0),t:n,children:"«"}),i.jsx(Kn,{disabled:m===0,onClick:()=>h(m-1),t:n,children:"‹"}),i.jsxs("span",{style:{fontSize:10,color:n.textSecondary,fontFamily:n.font,padding:"0 4px"},children:[m+1,"/",C]}),i.jsx(Kn,{disabled:m>=C-1,onClick:()=>h(m+1),t:n,children:"›"}),i.jsx(Kn,{disabled:m>=C-1,onClick:()=>h(C-1),t:n,children:"»"})]})]}),i.jsx("div",{style:{maxHeight:440,overflow:"auto",position:"relative"},onScroll:y=>O(y.target.scrollTop>0),children:i.jsxs("table",{style:{width:"100%",borderCollapse:"separate",borderSpacing:0,tableLayout:"auto",fontSize:12.5,fontFamily:n.fontMono},children:[i.jsx("thead",{children:i.jsx("tr",{children:e.columns.map(y=>{const x=N.get(y)??"string",w=x==="numeric";return i.jsx("th",{onClick:()=>A(y),style:{background:n.tableHeaderBg,color:n.textSecondary,fontWeight:600,fontSize:11,textAlign:w?"right":"left",padding:"8px 14px",borderBottom:`1px solid ${n.tableBorder}`,minWidth:80,maxWidth:320,whiteSpace:"nowrap",position:"sticky",top:0,zIndex:1,fontFamily:n.font,letterSpacing:"0.03em",overflow:"hidden",textOverflow:"ellipsis",cursor:"pointer",userSelect:"none",boxShadow:I?"0 2px 4px -2px rgba(0,0,0,0.18)":"none",transition:"background 0.1s, box-shadow 0.18s"},children:i.jsxs("span",{style:{display:"flex",alignItems:"center",gap:6,justifyContent:w?"flex-end":"flex-start"},children:[(()=>{const D=dD(x);return i.jsx("span",{title:x,style:{fontSize:9,fontFamily:n.fontMono,fontWeight:700,color:D.color,background:`${D.color}15`,border:`1px solid ${D.color}40`,borderRadius:3,padding:"0 4px",minWidth:14,textAlign:"center",lineHeight:"14px",flexShrink:0},children:D.icon})})(),i.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:y}),i.jsx(fD,{dir:s===y?l:null,color:s===y?n.accent:n.textMuted})]})},y)})})}),i.jsx("tbody",{children:g.map((y,x)=>{const w=r===x,U=x%2===1?n.tableHeaderBg:"transparent";return i.jsx("tr",{onMouseEnter:()=>o(x),onMouseLeave:()=>o(null),style:{transition:"background 0.1s"},children:e.columns.map(F=>{const _=y[F],B=_==null,b=ql(_);return i.jsx("td",{style:{padding:"7px 14px",borderBottom:`1px solid ${n.tableBorder}`,background:w?n.tableRowHover:U,color:B?n.textMuted:n.textPrimary,fontStyle:B?"italic":"normal",fontVariantNumeric:b?"tabular-nums":"normal",textAlign:b?"right":"left",whiteSpace:"nowrap",maxWidth:320,overflow:"hidden",textOverflow:"ellipsis",transition:"background 0.1s"},children:B?"—":ap(_)},F)})},x)})})]})}),i.jsxs("div",{style:{padding:"5px 10px",color:n.textMuted,fontSize:10,fontFamily:n.font,borderTop:`1px solid ${n.tableBorder}`,background:`${n.tableHeaderBg}60`,display:"flex",alignItems:"center",gap:4},children:[C>1&&i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[i.jsx(Kn,{disabled:m===0,onClick:()=>h(m-1),t:n,children:"‹"}),SD(C,m).map((y,x)=>y==="…"?i.jsx("span",{style:{color:n.textMuted,fontSize:10,padding:"0 2px"},children:"…"},`gap-${x}`):i.jsx("button",{onClick:()=>h(y-1),style:{background:y-1===m?`${n.accent}20`:"transparent",border:"none",color:y-1===m?n.accent:n.textSecondary,fontSize:10,fontFamily:n.font,fontWeight:y-1===m?700:400,padding:"1px 6px",borderRadius:3,cursor:"pointer",minWidth:20},children:y},y)),i.jsx(Kn,{disabled:m>=C-1,onClick:()=>h(m+1),t:n,children:"›"})]}),i.jsx("div",{style:{flex:1}}),i.jsxs("span",{style:{fontSize:10,color:n.textSecondary,fontFamily:n.font,marginLeft:6,whiteSpace:"nowrap"},children:[p.length.toLocaleString()," ",p.length===1?"row":"rows",d&&e.rows.length!==p.length&&` of ${e.rows.length.toLocaleString()}`]})]})]})}function SD(e,t){if(e<=7)return Array.from({length:e},(o,s)=>s+1);const n=t+1,r=[1];n>3&&r.push("…");for(let o=Math.max(2,n-1);o<=Math.min(e-1,n+1);o++)r.push(o);return n<e-2&&r.push("…"),r.push(e),r}function YE({label:e,onClick:t,t:n}){const[r,o]=S.useState(!1);return i.jsxs("button",{onClick:t,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{background:r?n.btnHover:"transparent",border:`1px solid ${r?n.btnBorder:"transparent"}`,borderRadius:3,cursor:"pointer",color:r?n.textSecondary:n.textMuted,fontSize:10,fontFamily:n.font,fontWeight:600,padding:"2px 6px",transition:"all 0.15s",display:"flex",alignItems:"center",gap:3},children:[i.jsxs("svg",{width:"9",height:"9",viewBox:"0 0 16 16",fill:"currentColor",children:[i.jsx("path",{d:"M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"}),i.jsx("path",{d:"M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.97a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.779a.749.749 0 1 1 1.06-1.06l1.97 1.97Z"})]}),e]})}function Kn({disabled:e,onClick:t,children:n,t:r}){return i.jsx("button",{disabled:e,onClick:t,style:{background:"transparent",border:"none",cursor:e?"default":"pointer",color:e?r.textMuted:r.textSecondary,fontSize:12,fontFamily:r.font,padding:"0 3px",opacity:e?.4:1,transition:"opacity 0.1s"},children:n})}const ki=[{value:"bar",label:"Bar"},{value:"grouped-bar",label:"Grouped Bar"},{value:"stacked-bar",label:"Stacked Bar"},{value:"line",label:"Line"},{value:"area",label:"Area"},{value:"scatter",label:"Scatter"},{value:"pie",label:"Pie"},{value:"donut",label:"Donut"},{value:"heatmap",label:"Heatmap"},{value:"histogram",label:"Histogram"},{value:"funnel",label:"Funnel"},{value:"waterfall",label:"Waterfall"},{value:"gauge",label:"Gauge"},{value:"kpi",label:"KPI"}],RD=/date|time|at|day|month|year/i,cp=/^(label|name|category|status|type|group)$/i,dp=/^(value|count|total|revenue|amount|sum|avg|price|quantity|sales)$/i;function nn(e){return typeof e=="number"?!0:typeof e=="string"?e.trim()!==""&&!isNaN(Number(e)):!1}function pD(e){return typeof e=="string"||typeof e=="number"}const AD=new Set(["bar","line","area","pie","donut","scatter","heatmap","funnel","waterfall","histogram","gauge","stacked-bar","grouped-bar","kpi","table"]);function io(e,t){if(t!=null&&t.chart){const n=t.chart.toLowerCase().replace(/_/g,"-");if(AD.has(n))return n}return hD(e)}function hD(e){const{columns:t,rows:n}=e;if(t.length<2||n.length===0)return"table";const r=t[0],o=t[1],s=n.slice(0,5),a=s.every(u=>nn(u[o])),l=s.every(u=>pD(u[r]));if(RD.test(r)&&a&&l)return"line";const c=t.find(u=>cp.test(u)),d=t.find(u=>dp.test(u));return c&&d&&s.every(T=>nn(T[d]))?"bar":s.every(u=>nn(u[r]))&&a&&t.length>=2?"scatter":t.length===2&&l&&a?"bar":"table"}const Ep={default:["#388bfd","#56d364","#e3b341","#f78166","#a371f7","#39c5cf","#ffa657","#ff7b72","#89d185","#d2a8ff","#58a6ff","#3fb950"],warm:["#f85149","#f78166","#ffa657","#e3b341","#d29922","#db6d28","#ff7b72","#ffa198","#ffdfb6","#e6c174","#c4a35a","#b08c3e"],cool:["#388bfd","#58a6ff","#79c0ff","#39c5cf","#56d364","#3fb950","#a371f7","#d2a8ff","#bc8cff","#6cb6ff","#2ea043","#1f6feb"],mono:["#c9d1d9","#b1bac4","#8b949e","#6e7681","#484f58","#30363d","#21262d","#161b22","#a0a8b2","#9e9e9e","#757575","#616161"],pastel:["#b8d8f8","#b4e6c8","#f4e6a0","#f8c4a4","#d2b8f0","#a8e0e0","#f8d8a0","#f4b8b4","#c0e8c0","#e0d0f8","#a8d8f8","#b0e8b0"]},Fe=Ep.default;function we(e){return Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:e.toLocaleString(void 0,{maximumFractionDigits:2})}function ID(e){const t=new Date(e);if(!isNaN(t.getTime())){if(/^\d{4}-\d{2}-\d{2}/.test(e))return t.toLocaleDateString("en-US",{month:"short",day:"numeric"});if(/^\d{4}-\d{2}$/.test(e))return t.toLocaleDateString("en-US",{year:"numeric",month:"short"})}return String(e).length>8?String(e).slice(0,8):String(e)}function ji(e,t){const n=(t!=null&&t.x&&e.columns.includes(t.x)?t.x:void 0)??e.columns.find(o=>cp.test(o))??e.columns[0],r=(t!=null&&t.y&&e.columns.includes(t.y)?t.y:void 0)??e.columns.find(o=>dp.test(o))??e.columns[1];return{labelCol:n,valueCol:r}}const _n=20;function sd({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),{labelCol:a,valueCol:l}=ji(e,n),c=(n==null?void 0:n.maxItems)??_n,d=e.rows.slice(0,c).map(p=>({label:String(p[a]??""),value:Number(p[l]??0)})),E=e.rows.length>c,u=Math.max(...d.map(p=>p.value),1),T=28,f=120,h=6,A=12,R=d.length*(T+h)+A*2;return i.jsxs("div",{style:{padding:"8px 0"},children:[i.jsx("svg",{width:"100%",height:R,viewBox:`0 0 600 ${R}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:d.map((p,N)=>{const I=A+N*(T+h),O=600-f-84,C=Math.max(p.value/u*O,2),m=o===N;return i.jsxs("g",{onMouseEnter:()=>s(N),onMouseLeave:()=>s(null),style:{cursor:"default"},children:[i.jsx("text",{x:f-8,y:I+T/2+4,textAnchor:"end",fontSize:11,fontFamily:r.font,fill:r.textSecondary,children:p.label.length>16?p.label.slice(0,15)+"…":p.label}),i.jsx("rect",{x:f,y:I,width:C,height:T,rx:3,fill:m?r.accentHover:r.accent,style:{transition:"fill 0.15s"}}),i.jsx("text",{x:f+C+6,y:I+T/2+4,textAnchor:"start",fontSize:11,fontFamily:r.fontMono,fill:r.textMuted,children:we(p.value)})]},N)})}),E&&i.jsxs("div",{style:{fontSize:11,color:r.textMuted,fontFamily:r.font,fontStyle:"italic",padding:"4px 12px"},children:["Showing ",_n," of ",e.rows.length," rows"]})]})}function ND({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),a=n!=null&&n.x&&e.columns.includes(n.x)?n.x:e.columns[0],l=e.rows.slice(0,5),c=e.columns.filter(p=>p!==a&&l.some(N=>nn(N[p])));if(c.length===0)return i.jsx(sd,{result:e,themeMode:t,chartConfig:n});const d=e.rows.slice(0,_n).map(p=>String(p[a]??"")),E=Math.max(...e.rows.slice(0,_n).flatMap(p=>c.map(N=>Math.abs(Number(p[N]??0)))),1),u=24,T=u/c.length,f=120,h=12,A=8,R=d.length*(u+A)+h*2;return i.jsxs("div",{style:{padding:"8px 0"},children:[i.jsx("div",{style:{display:"flex",gap:12,padding:"0 12px 6px",flexWrap:"wrap"},children:c.map((p,N)=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[i.jsx("div",{style:{width:10,height:10,borderRadius:2,background:Fe[N%Fe.length]}}),i.jsx("span",{style:{fontSize:10,fontFamily:r.font,color:r.textSecondary},children:p})]},p))}),i.jsx("svg",{width:"100%",height:R,viewBox:`0 0 600 ${R}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:d.map((p,N)=>{const I=h+N*(u+A),O=e.rows[N];return i.jsxs("g",{children:[i.jsx("text",{x:f-8,y:I+u/2+4,textAnchor:"end",fontSize:11,fontFamily:r.font,fill:r.textSecondary,children:p.length>16?p.slice(0,15)+"…":p}),c.map((C,m)=>{const g=Number(O[C]??0),y=600-f-60,x=Math.max(Math.abs(g)/E*y,1),w=I+m*T,D=`${N}-${m}`;return i.jsxs("g",{onMouseEnter:()=>s(D),onMouseLeave:()=>s(null),children:[i.jsx("rect",{x:f,y:w,width:x,height:T-1,rx:2,fill:Fe[m%Fe.length],opacity:o===D?1:.85,style:{transition:"opacity 0.15s"}}),o===D&&i.jsx("text",{x:f+x+4,y:w+T/2+3,fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(g)})]},m)})]},N)})})]})}function OD({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),a=n!=null&&n.x&&e.columns.includes(n.x)?n.x:e.columns[0],l=e.rows.slice(0,5),c=e.columns.filter(p=>p!==a&&l.some(N=>nn(N[p])));if(c.length===0)return i.jsx(sd,{result:e,themeMode:t,chartConfig:n});const d=e.rows.slice(0,_n),E=d.map(p=>String(p[a]??"")),u=Math.max(...d.map(p=>c.reduce((N,I)=>N+Math.abs(Number(p[I]??0)),0)),1),T=28,f=120,h=12,A=6,R=E.length*(T+A)+h*2;return i.jsxs("div",{style:{padding:"8px 0"},children:[i.jsx("div",{style:{display:"flex",gap:12,padding:"0 12px 6px",flexWrap:"wrap"},children:c.map((p,N)=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[i.jsx("div",{style:{width:10,height:10,borderRadius:2,background:Fe[N%Fe.length]}}),i.jsx("span",{style:{fontSize:10,fontFamily:r.font,color:r.textSecondary},children:p})]},p))}),i.jsx("svg",{width:"100%",height:R,viewBox:`0 0 600 ${R}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:E.map((p,N)=>{const I=h+N*(T+A),O=d[N],C=600-f-60;let m=f;return i.jsxs("g",{children:[i.jsx("text",{x:f-8,y:I+T/2+4,textAnchor:"end",fontSize:11,fontFamily:r.font,fill:r.textSecondary,children:p.length>16?p.slice(0,15)+"…":p}),c.map((g,y)=>{const x=Math.abs(Number(O[g]??0)),w=Math.max(x/u*C,0),D=m;m+=w;const U=`${N}-${y}`;return i.jsxs("g",{onMouseEnter:()=>s(U),onMouseLeave:()=>s(null),children:[i.jsx("rect",{x:D,y:I,width:w,height:T,rx:y===0?3:0,fill:Fe[y%Fe.length],opacity:o===U?1:.85,style:{transition:"opacity 0.15s"}}),o===U&&w>30&&i.jsx("text",{x:D+w/2,y:I+T/2+4,textAnchor:"middle",fontSize:10,fontFamily:r.fontMono,fill:"#fff",fontWeight:600,children:we(x)})]},y)})]},N)})})]})}function WE({result:e,themeMode:t,showArea:n}){const r=ie[t],[o,s]=S.useState(null),a=e.columns[0],l=e.columns[1],c=e.rows.map(_=>({label:String(_[a]??""),value:Number(_[l]??0)}));if(c.length<2)return null;const d=560,E=200,u=52,T=16,f=16,h=36,A=d-u-T,R=E-f-h,p=Math.min(...c.map(_=>_.value)),I=Math.max(...c.map(_=>_.value))-p||1,O=A/(c.length-1),C=_=>u+_*O,m=_=>f+R-(_-p)/I*R,g=c.map((_,B)=>({x:C(B),y:m(_.value)})),y=g.reduce((_,B,b)=>{if(b===0)return`M ${B.x},${B.y}`;const P=g[b-1],M=P.x+(B.x-P.x)/2;return`${_} C ${M},${P.y} ${M},${B.y} ${B.x},${B.y}`},""),x=`${y} L ${g[g.length-1].x},${f+R} L ${u},${f+R} Z`,w=5,D=Array.from({length:w+1},(_,B)=>{const b=p+I*B/w;return{val:b,y:m(b)}}),U=Math.ceil(c.length/8),F=c.filter((_,B)=>B%U===0||B===c.length-1);return i.jsx("div",{style:{position:"relative",padding:"8px 0"},children:i.jsxs("svg",{width:"100%",height:E,viewBox:`0 0 ${d} ${E}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},onMouseLeave:()=>s(null),children:[D.map((_,B)=>i.jsxs("g",{children:[i.jsx("line",{x1:u,y1:_.y,x2:u+A,y2:_.y,stroke:r.tableBorder,strokeWidth:.5}),i.jsx("text",{x:u-6,y:_.y+4,textAnchor:"end",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(_.val)})]},B)),i.jsx("path",{d:x,fill:r.accent,opacity:n?.3:.15}),i.jsx("path",{d:y,fill:"none",stroke:r.accent,strokeWidth:2,strokeLinejoin:"round"}),g.map((_,B)=>i.jsx("circle",{cx:_.x,cy:_.y,r:3,fill:r.accent,style:{cursor:"crosshair"},onMouseEnter:()=>s({x:_.x,y:_.y,label:c[B].label,value:c[B].value})},B)),F.map((_,B)=>{const b=c.indexOf(_);return i.jsx("text",{x:C(b),y:f+R+16,textAnchor:"middle",fontSize:10,fontFamily:r.font,fill:r.textMuted,children:ID(_.label)},B)}),i.jsx("line",{x1:u,y1:f,x2:u,y2:f+R,stroke:r.tableBorder,strokeWidth:1}),i.jsx("line",{x1:u,y1:f+R,x2:u+A,y2:f+R,stroke:r.tableBorder,strokeWidth:1}),o&&i.jsxs("g",{children:[i.jsx("rect",{x:o.x+8,y:o.y-20,width:90,height:32,rx:4,fill:r.cellBg,stroke:r.cellBorder,strokeWidth:1}),i.jsx("text",{x:o.x+13,y:o.y-8,fontSize:10,fontFamily:r.font,fill:r.textSecondary,children:o.label.length>10?o.label.slice(0,10)+"…":o.label}),i.jsx("text",{x:o.x+13,y:o.y+6,fontSize:11,fontFamily:r.fontMono,fill:r.textPrimary,fontWeight:600,children:we(o.value)})]})]})})}function mD({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),a=n!=null&&n.x&&e.columns.includes(n.x)?n.x:e.columns[0],l=n!=null&&n.y&&e.columns.includes(n.y)?n.y:e.columns[1],c=n!=null&&n.color&&e.columns.includes(n.color)?n.color:void 0,d=e.rows.slice(0,200).map(D=>({x:Number(D[a]??0),y:Number(D[l]??0),color:c?String(D[c]??""):void 0})),E=560,u=300,T=52,f=16,h=16,A=36,R=E-T-f,p=u-h-A,N=Math.min(...d.map(D=>D.x)),I=Math.max(...d.map(D=>D.x)),O=Math.min(...d.map(D=>D.y)),C=Math.max(...d.map(D=>D.y)),m=I-N||1,g=C-O||1,y=D=>T+(D-N)/m*R,x=D=>h+p-(D-O)/g*p,w=c?[...new Set(d.map(D=>D.color))]:[];return i.jsxs("div",{style:{padding:"8px 0"},children:[c&&w.length>0&&i.jsx("div",{style:{display:"flex",gap:12,padding:"0 12px 6px",flexWrap:"wrap"},children:w.slice(0,12).map((D,U)=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[i.jsx("div",{style:{width:8,height:8,borderRadius:"50%",background:Fe[U%Fe.length]}}),i.jsx("span",{style:{fontSize:10,fontFamily:r.font,color:r.textSecondary},children:D})]},D))}),i.jsxs("svg",{width:"100%",height:u,viewBox:`0 0 ${E} ${u}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:[Array.from({length:6},(D,U)=>{const F=O+g*U/5,_=x(F);return i.jsxs("g",{children:[i.jsx("line",{x1:T,y1:_,x2:T+R,y2:_,stroke:r.tableBorder,strokeWidth:.5}),i.jsx("text",{x:T-6,y:_+4,textAnchor:"end",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(F)})]},U)}),Array.from({length:6},(D,U)=>{const F=N+m*U/5,_=y(F);return i.jsx("text",{x:_,y:h+p+16,textAnchor:"middle",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(F)},U)}),i.jsx("line",{x1:T,y1:h,x2:T,y2:h+p,stroke:r.tableBorder,strokeWidth:1}),i.jsx("line",{x1:T,y1:h+p,x2:T+R,y2:h+p,stroke:r.tableBorder,strokeWidth:1}),i.jsx("text",{x:T+R/2,y:u-2,textAnchor:"middle",fontSize:10,fontFamily:r.font,fill:r.textMuted,children:a}),i.jsx("text",{x:10,y:h+p/2,textAnchor:"middle",fontSize:10,fontFamily:r.font,fill:r.textMuted,transform:`rotate(-90, 10, ${h+p/2})`,children:l}),d.map((D,U)=>{const F=c?w.indexOf(D.color):0;return i.jsx("circle",{cx:y(D.x),cy:x(D.y),r:o===U?5:3.5,fill:Fe[F%Fe.length],opacity:o===U?1:.7,style:{cursor:"crosshair",transition:"r 0.1s, opacity 0.1s"},onMouseEnter:()=>s(U),onMouseLeave:()=>s(null)},U)}),o!==null&&i.jsxs("g",{children:[i.jsx("rect",{x:y(d[o].x)+8,y:x(d[o].y)-24,width:100,height:28,rx:4,fill:r.cellBg,stroke:r.cellBorder,strokeWidth:1}),i.jsxs("text",{x:y(d[o].x)+13,y:x(d[o].y)-8,fontSize:10,fontFamily:r.fontMono,fill:r.textPrimary,children:["(",we(d[o].x),", ",we(d[o].y),")"]})]})]})]})}const gD=12;function VE({result:e,themeMode:t,chartConfig:n,isDonut:r}){const o=ie[t],[s,a]=S.useState(null),{labelCol:l,valueCol:c}=ji(e,n),d=e.rows.slice(0,gD).map(N=>({label:String(N[l]??""),value:Math.abs(Number(N[c]??0))})),E=d.reduce((N,I)=>N+I.value,0)||1,u=90,T=90,f=70,h=r?40:0,A=[];let R=-Math.PI/2;d.forEach((N,I)=>{const O=N.value/E*2*Math.PI,C=R,m=R+O,g=u+f*Math.cos(C),y=T+f*Math.sin(C),x=u+f*Math.cos(m),w=T+f*Math.sin(m),D=O>Math.PI?1:0;let U;if(h>0){const F=u+h*Math.cos(C),_=T+h*Math.sin(C),B=u+h*Math.cos(m),b=T+h*Math.sin(m);U=`M ${g} ${y} A ${f} ${f} 0 ${D} 1 ${x} ${w} L ${B} ${b} A ${h} ${h} 0 ${D} 0 ${F} ${_} Z`}else U=`M ${u} ${T} L ${g} ${y} A ${f} ${f} 0 ${D} 1 ${x} ${w} Z`;A.push({path:U,color:Fe[I%Fe.length],label:N.label,value:N.value,pct:N.value/E*100}),R=m});const p=s!==null?A[s]:null;return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:16,padding:"8px 12px",flexWrap:"wrap"},children:[i.jsxs("svg",{width:180,height:180,style:{flexShrink:0},onMouseLeave:()=>a(null),children:[A.map((N,I)=>i.jsx("path",{d:N.path,fill:N.color,opacity:s===null||s===I?1:.55,style:{cursor:"pointer",transition:"opacity 0.15s"},onMouseEnter:()=>a(I)},I)),r&&i.jsxs(i.Fragment,{children:[i.jsx("text",{x:u,y:T-5,textAnchor:"middle",fontSize:11,fontFamily:o.fontMono,fill:o.textSecondary,children:we(p?p.value:E)}),i.jsx("text",{x:u,y:T+9,textAnchor:"middle",fontSize:9,fontFamily:o.font,fill:o.textMuted,children:p?`${p.pct.toFixed(1)}%`:"total"})]})]}),i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:4,maxHeight:180,overflowY:"auto",flex:1},children:A.map((N,I)=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,cursor:"default",opacity:s===null||s===I?1:.5},onMouseEnter:()=>a(I),onMouseLeave:()=>a(null),children:[i.jsx("div",{style:{width:10,height:10,borderRadius:2,background:N.color,flexShrink:0}}),i.jsx("span",{style:{fontSize:11,fontFamily:o.font,color:o.textSecondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:N.label}),i.jsxs("span",{style:{fontSize:11,fontFamily:o.fontMono,color:o.textMuted,marginLeft:"auto",flexShrink:0},children:[N.pct.toFixed(1),"%"]})]},I))})]})}function CD({result:e,themeMode:t}){const n=ie[t],[r,o]=S.useState(null),s=e.columns[0],a=e.columns.slice(1),l=e.rows.slice(0,30),c=l.flatMap(R=>a.map(p=>Number(R[p]??0))),d=Math.min(...c),u=Math.max(...c)-d||1,T=Math.min(50,480/a.length),f=24,h=100;function A(R){const p=(R-d)/u,N=Math.round(56+p*192),I=Math.round(139+p*-58),O=Math.round(253+p*-180);return`rgb(${N},${I},${O})`}return i.jsx("div",{style:{padding:"8px 0",overflowX:"auto"},children:i.jsxs("svg",{width:h+a.length*T+20,height:l.length*f+f+16,style:{display:"block",overflow:"visible"},children:[a.map((R,p)=>i.jsx("text",{x:h+p*T+T/2,y:14,textAnchor:"middle",fontSize:9,fontFamily:n.font,fill:n.textMuted,transform:`rotate(-30, ${h+p*T+T/2}, 14)`,children:R.length>8?R.slice(0,7)+"…":R},p)),l.map((R,p)=>{const N=String(R[s]??""),I=f+p*f;return i.jsxs("g",{children:[i.jsx("text",{x:h-6,y:I+f/2+4,textAnchor:"end",fontSize:10,fontFamily:n.font,fill:n.textSecondary,children:N.length>14?N.slice(0,13)+"…":N}),a.map((O,C)=>{const m=Number(R[O]??0),g=(r==null?void 0:r.r)===p&&(r==null?void 0:r.c)===C;return i.jsxs("g",{onMouseEnter:()=>o({r:p,c:C}),onMouseLeave:()=>o(null),children:[i.jsx("rect",{x:h+C*T,y:I,width:T-1,height:f-1,rx:2,fill:A(m),opacity:g?1:.85,stroke:g?n.accent:"none",strokeWidth:g?1.5:0}),g&&i.jsx("text",{x:h+C*T+T/2,y:I+f/2+4,textAnchor:"middle",fontSize:10,fontFamily:n.fontMono,fill:"#fff",fontWeight:600,children:we(m)})]},C)})]},p)})]})})}function xD({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),a=(n!=null&&n.x&&e.columns.includes(n.x)?n.x:void 0)??e.columns.find(y=>e.rows.slice(0,5).some(x=>nn(x[y])))??e.columns[0],l=e.rows.map(y=>Number(y[a]??0)).filter(y=>!isNaN(y));if(l.length===0)return null;const c=Math.min(20,Math.max(5,Math.ceil(Math.sqrt(l.length)))),d=Math.min(...l),T=(Math.max(...l)-d||1)/c,f=Array.from({length:c},(y,x)=>({low:d+x*T,high:d+(x+1)*T,count:0}));l.forEach(y=>{const x=Math.min(Math.floor((y-d)/T),c-1);f[x].count++});const h=Math.max(...f.map(y=>y.count),1),A=560,R=200,p=52,N=16,I=16,O=36,C=A-p-N,m=R-I-O,g=C/c;return i.jsx("div",{style:{padding:"8px 0"},children:i.jsxs("svg",{width:"100%",height:R,viewBox:`0 0 ${A} ${R}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:[Array.from({length:5},(y,x)=>{const w=h*(x+1)/5,D=I+m-w/h*m;return i.jsxs("g",{children:[i.jsx("line",{x1:p,y1:D,x2:p+C,y2:D,stroke:r.tableBorder,strokeWidth:.5}),i.jsx("text",{x:p-6,y:D+4,textAnchor:"end",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:Math.round(w)})]},x)}),f.map((y,x)=>{const w=y.count/h*m,D=p+x*g,U=I+m-w,F=o===x;return i.jsxs("g",{onMouseEnter:()=>s(x),onMouseLeave:()=>s(null),children:[i.jsx("rect",{x:D+1,y:U,width:g-2,height:w,rx:1,fill:F?r.accentHover:r.accent,opacity:F?1:.85,style:{transition:"fill 0.1s"}}),F&&i.jsx("text",{x:D+g/2,y:U-4,textAnchor:"middle",fontSize:10,fontFamily:r.fontMono,fill:r.textPrimary,children:y.count})]},x)}),f.filter((y,x)=>x%Math.ceil(c/6)===0).map((y,x)=>{const w=f.indexOf(y);return i.jsx("text",{x:p+w*g+g/2,y:I+m+16,textAnchor:"middle",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(y.low)},x)}),i.jsx("line",{x1:p,y1:I,x2:p,y2:I+m,stroke:r.tableBorder,strokeWidth:1}),i.jsx("line",{x1:p,y1:I+m,x2:p+C,y2:I+m,stroke:r.tableBorder,strokeWidth:1}),i.jsx("text",{x:p+C/2,y:R-2,textAnchor:"middle",fontSize:10,fontFamily:r.font,fill:r.textMuted,children:a})]})})}function LD({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),{labelCol:a,valueCol:l}=ji(e,n),c=e.rows.slice(0,10).map(R=>({label:String(R[a]??""),value:Math.abs(Number(R[l]??0))}));if(c.length===0)return null;const d=c[0].value||1,E=400,u=36,T=4,f=16,h=c.length*(u+T)+f*2,A=E/2;return i.jsx("div",{style:{padding:"8px 0",display:"flex",justifyContent:"center"},children:i.jsx("svg",{width:E,height:h,style:{display:"block"},children:c.map((R,p)=>{const N=f+p*(u+T),I=R.value/d,O=Math.max(I*(E-80),40),C=o===p,m=p<c.length-1?c[p+1].value/d:I*.8,g=Math.max(m*(E-80),40),y=A-O/2,x=A+O/2,w=A+g/2,D=A-g/2,U=`M ${y} ${N} L ${x} ${N} L ${w} ${N+u} L ${D} ${N+u} Z`;return i.jsxs("g",{onMouseEnter:()=>s(p),onMouseLeave:()=>s(null),style:{cursor:"default"},children:[i.jsx("path",{d:U,fill:Fe[p%Fe.length],opacity:C?1:.85,style:{transition:"opacity 0.15s"}}),i.jsx("text",{x:A,y:N+u/2+1,textAnchor:"middle",fontSize:11,fontFamily:r.font,fill:"#fff",fontWeight:500,children:R.label}),i.jsxs("text",{x:A,y:N+u/2+13,textAnchor:"middle",fontSize:9,fontFamily:r.fontMono,fill:"rgba(255,255,255,0.7)",children:[we(R.value)," (",(I*100).toFixed(0),"%)"]})]},p)})})})}function yD({result:e,themeMode:t,chartConfig:n}){const r=ie[t],[o,s]=S.useState(null),{labelCol:a,valueCol:l}=ji(e,n),c=e.rows.slice(0,15).map(x=>({label:String(x[a]??""),value:Number(x[l]??0)}));if(c.length===0)return null;let d=0;const E=c.map(x=>{const w=d;return d+=x.value,{...x,start:w,end:d}}),u=E.flatMap(x=>[x.start,x.end]),T=Math.min(0,...u),h=Math.max(0,...u)-T||1,A=560,R=240,p=52,N=16,I=16,O=44,C=A-p-N,m=R-I-O,g=C/E.length,y=x=>I+m-(x-T)/h*m;return i.jsx("div",{style:{padding:"8px 0"},children:i.jsxs("svg",{width:"100%",height:R,viewBox:`0 0 ${A} ${R}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},children:[Array.from({length:6},(x,w)=>{const D=T+h*w/5,U=y(D);return i.jsxs("g",{children:[i.jsx("line",{x1:p,y1:U,x2:p+C,y2:U,stroke:r.tableBorder,strokeWidth:.5}),i.jsx("text",{x:p-6,y:U+4,textAnchor:"end",fontSize:10,fontFamily:r.fontMono,fill:r.textMuted,children:we(D)})]},w)}),i.jsx("line",{x1:p,y1:y(0),x2:p+C,y2:y(0),stroke:r.textMuted,strokeWidth:1,strokeDasharray:"3,3"}),E.map((x,w)=>{const D=p+w*g,U=y(Math.max(x.start,x.end)),_=y(Math.min(x.start,x.end))-U,B=x.value>=0,b=o===w;return i.jsxs("g",{onMouseEnter:()=>s(w),onMouseLeave:()=>s(null),children:[w<E.length-1&&i.jsx("line",{x1:D+g-2,y1:y(x.end),x2:D+g+2,y2:y(x.end),stroke:r.textMuted,strokeWidth:1,strokeDasharray:"2,2"}),i.jsx("rect",{x:D+4,y:U,width:g-8,height:Math.max(_,1),rx:2,fill:B?r.success:r.error,opacity:b?1:.8,style:{transition:"opacity 0.1s"}}),b&&i.jsxs("text",{x:D+g/2,y:U-4,textAnchor:"middle",fontSize:10,fontFamily:r.fontMono,fill:r.textPrimary,children:[x.value>=0?"+":"",we(x.value)]})]},w)}),E.map((x,w)=>i.jsx("text",{x:p+w*g+g/2,y:R-6,textAnchor:"middle",fontSize:9,fontFamily:r.font,fill:r.textMuted,transform:`rotate(-20, ${p+w*g+g/2}, ${R-6})`,children:x.label.length>8?x.label.slice(0,7)+"…":x.label},w)),i.jsx("line",{x1:p,y1:I,x2:p,y2:I+m,stroke:r.tableBorder,strokeWidth:1}),i.jsx("line",{x1:p,y1:I+m,x2:p+C,y2:I+m,stroke:r.tableBorder,strokeWidth:1})]})})}function _D({result:e,themeMode:t,chartConfig:n}){const r=ie[t],o=e.rows[0];if(!o)return null;const s=(n!=null&&n.y&&e.columns.includes(n.y)?n.y:void 0)??e.columns.find(y=>nn(o[y]))??e.columns[0],a=Number(o[s]??0),l=(n==null?void 0:n.title)??s,c=a>100?a*1.2:100,d=Math.min(Math.max(a/c,0),1),E=120,u=110,T=80,f=Math.PI,h=0,A=f-(f-h)*d,R=E+T*Math.cos(f),p=u+T*Math.sin(f),N=E+T*Math.cos(A),I=u+T*Math.sin(A),O=d>.5?1:0,C=E+T*Math.cos(h),m=u+T*Math.sin(h),g=d<.33?r.error:d<.66?r.warning:r.success;return i.jsx("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",padding:"16px 24px"},children:i.jsxs("svg",{width:240,height:140,style:{display:"block",overflow:"visible"},children:[i.jsx("path",{d:`M ${R} ${p} A ${T} ${T} 0 1 1 ${C} ${m}`,fill:"none",stroke:r.tableBorder,strokeWidth:12,strokeLinecap:"round"}),d>0&&i.jsx("path",{d:`M ${R} ${p} A ${T} ${T} 0 ${O} 1 ${N} ${I}`,fill:"none",stroke:g,strokeWidth:12,strokeLinecap:"round"}),i.jsx("text",{x:E,y:u-4,textAnchor:"middle",fontSize:28,fontFamily:r.fontMono,fill:g,fontWeight:700,children:we(a)}),i.jsx("text",{x:E,y:u+16,textAnchor:"middle",fontSize:11,fontFamily:r.font,fill:r.textMuted,children:l})]})})}function up({result:e,themeMode:t,chartConfig:n}){const r=ie[t],o=e.rows[0];if(!o)return null;const s=n!=null&&n.y&&e.columns.includes(n.y)?n.y:e.columns.find(E=>nn(o[E]))??e.columns[0],a=o[s],l=Number(a),c=isNaN(l)?String(a):l.toLocaleString(void 0,{maximumFractionDigits:2}),d=(n==null?void 0:n.title)??(n!=null&&n.x&&o[n.x]?String(o[n.x]):s);return i.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"32px 24px",gap:8},children:[i.jsx("span",{style:{fontSize:40,fontWeight:700,fontFamily:r.fontMono,color:r.accent,lineHeight:1.1},children:c}),i.jsx("span",{style:{fontSize:13,fontFamily:r.font,color:r.textMuted,textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:500},children:d})]})}function DD({config:e,columns:t,onChange:n,onClose:r,t:o}){const s={background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:11,fontFamily:o.font,padding:"4px 8px",outline:"none",width:"100%",boxSizing:"border-box"};return i.jsxs("div",{style:{position:"absolute",top:4,right:4,zIndex:100,background:o.cellBg,border:`1px solid ${o.headerBorder}`,borderRadius:8,padding:12,width:240,boxShadow:"0 4px 16px rgba(0,0,0,0.3)",display:"grid",gap:8},onClick:a=>a.stopPropagation(),children:[i.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[i.jsx("span",{style:{fontSize:11,fontWeight:600,color:o.textPrimary,fontFamily:o.font},children:"Chart Settings"}),i.jsx("button",{onClick:r,style:{background:"none",border:"none",color:o.textMuted,cursor:"pointer",fontSize:14},children:"×"})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["Title",i.jsx("input",{value:e.title??"",onChange:a=>n({title:a.target.value||void 0}),placeholder:"Chart title",style:{...s,marginTop:2}})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["X-axis label",i.jsx("input",{value:e.xLabel??"",onChange:a=>n({xLabel:a.target.value||void 0}),placeholder:"Auto",style:{...s,marginTop:2}})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["Y-axis label",i.jsx("input",{value:e.yLabel??"",onChange:a=>n({yLabel:a.target.value||void 0}),placeholder:"Auto",style:{...s,marginTop:2}})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["Legend",i.jsxs("select",{value:e.legendPosition??"top",onChange:a=>n({legendPosition:a.target.value}),style:{...s,marginTop:2},children:[i.jsx("option",{value:"top",children:"Top"}),i.jsx("option",{value:"bottom",children:"Bottom"}),i.jsx("option",{value:"left",children:"Left"}),i.jsx("option",{value:"right",children:"Right"}),i.jsx("option",{value:"none",children:"Hidden"})]})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["Color palette",i.jsx("select",{value:e.colorPalette??"default",onChange:a=>n({colorPalette:a.target.value}),style:{...s,marginTop:2},children:Object.keys(Ep).map(a=>i.jsx("option",{value:a,children:a.charAt(0).toUpperCase()+a.slice(1)},a))})]}),i.jsxs("label",{style:{fontSize:10,color:o.textMuted,fontFamily:o.font},children:["Max items",i.jsx("input",{type:"number",value:e.maxItems??_n,min:5,max:200,onChange:a=>n({maxItems:parseInt(a.target.value)||_n}),style:{...s,marginTop:2}})]})]})}function MD({result:e,themeMode:t,chartConfig:n,onConfigChange:r}){const o=ie[t],s=io(e,n),[a,l]=S.useState(!1);return s==="kpi"?i.jsx(up,{result:e,themeMode:t,chartConfig:n}):i.jsxs("div",{style:{position:"relative"},children:[(n==null?void 0:n.title)&&i.jsx("div",{style:{padding:"8px 12px 0",fontSize:13,fontWeight:600,color:o.textPrimary,fontFamily:o.font,textAlign:"center"},children:n.title}),r&&i.jsx("button",{onClick:()=>l(!a),title:"Chart settings",style:{position:"absolute",top:4,right:4,zIndex:50,background:a?`${o.accent}18`:"transparent",border:`1px solid ${a?o.accent:"transparent"}`,borderRadius:4,color:a?o.accent:o.textMuted,cursor:"pointer",fontSize:14,padding:"2px 6px",lineHeight:1},children:"⚙"}),a&&r&&i.jsx(DD,{config:n??{},columns:e.columns,onChange:c=>r(c),onClose:()=>l(!1),t:o}),Yi(s,e,t,n)]})}function Yi(e,t,n,r){const o=r!=null&&r.x&&t.columns.includes(r.x)?r.x:void 0,s=r!=null&&r.y&&t.columns.includes(r.y)?r.y:void 0,a=o||s?bD(t,o,s):t;switch(e){case"line":return i.jsx(WE,{result:a,themeMode:n});case"area":return i.jsx(WE,{result:a,themeMode:n,showArea:!0});case"bar":return i.jsx(sd,{result:a,themeMode:n,chartConfig:r});case"grouped-bar":return i.jsx(ND,{result:a,themeMode:n,chartConfig:r});case"stacked-bar":return i.jsx(OD,{result:a,themeMode:n,chartConfig:r});case"scatter":return i.jsx(mD,{result:t,themeMode:n,chartConfig:r});case"pie":return i.jsx(VE,{result:t,themeMode:n,chartConfig:r,isDonut:!1});case"donut":return i.jsx(VE,{result:t,themeMode:n,chartConfig:r,isDonut:!0});case"heatmap":return i.jsx(CD,{result:t,themeMode:n});case"histogram":return i.jsx(xD,{result:t,themeMode:n,chartConfig:r});case"funnel":return i.jsx(LD,{result:t,themeMode:n,chartConfig:r});case"waterfall":return i.jsx(yD,{result:t,themeMode:n,chartConfig:r});case"gauge":return i.jsx(_D,{result:t,themeMode:n,chartConfig:r});case"kpi":return i.jsx(up,{result:t,themeMode:n,chartConfig:r});default:return i.jsx(yo,{result:t,themeMode:n})}}function bD(e,t,n){const r=e.columns,o=[];t&&r.includes(t)&&o.push(t),n&&r.includes(n)&&o.push(n);for(const s of r)o.includes(s)||o.push(s);return o.join(",")===r.join(",")?e:{...e,columns:o,rows:e.rows.map(s=>{const a={};for(const l of o)a[l]=s[l];return a})}}function Wi(e){var c,d;if(!e)return{metrics:[],dimensions:[],columns:[],fields:[],hasSemanticBinding:!1};const t=new Set(((c=e.semanticRefs)==null?void 0:c.metrics)??[]),n=new Set(((d=e.semanticRefs)==null?void 0:d.dimensions)??[]),r=t.size>0||n.size>0,o=[],s=[],a=[],l=[];for(const E of e.columns)t.has(E)?(o.push(E),l.push({name:E,kind:"metric"})):n.has(E)&&(s.push(E),l.push({name:E,kind:"dimension"}));for(const E of e.columns)t.has(E)||n.has(E)||(a.push(E),l.push({name:E,kind:"column",chartRole:ip(od(E,e.rows))}));return{metrics:o,dimensions:s,columns:a,fields:l,hasSemanticBinding:r}}function ao(e){return e==="metric"?"#":e==="dimension"?"∴":"A"}function lo(e,t){return e==="metric"?t:e==="dimension"?"#e3b341":"#56d364"}function $E(e){return e==="metric"?"metric":e==="dimension"?"dimension":"column"}function Tp({theme:e,value:t,fields:n,allowKinds:r,placeholder:o="Select field",minWidth:s=180,onChange:a}){const[l,c]=S.useState(!1),[d,E]=S.useState(""),u=S.useRef(null),T=S.useRef(null);S.useEffect(()=>{if(!l)return;const R=p=>{var N;(N=u.current)!=null&&N.contains(p.target)||c(!1)};return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[l]),S.useEffect(()=>{if(l){const R=setTimeout(()=>{var p;return(p=T.current)==null?void 0:p.focus()},20);return()=>clearTimeout(R)}E("")},[l]);const f=S.useMemo(()=>n.find(R=>R.name===t),[n,t]),h=S.useMemo(()=>{if(!d)return n;const R=d.toLowerCase();return n.filter(p=>p.name.toLowerCase().includes(R))},[n,d]),A=R=>r?r.includes(R):!0;return i.jsxs("div",{ref:u,style:{position:"relative",minWidth:s},children:[i.jsxs("button",{onClick:()=>c(R=>!R),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:3,cursor:"pointer",color:f?e.textPrimary:e.textMuted,fontFamily:e.fontMono,fontSize:11,textAlign:"left"},children:[f?i.jsxs(i.Fragment,{children:[i.jsx("span",{style:{color:lo(f.kind,e.accent),fontWeight:700,width:12},children:ao(f.kind)}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f.name})]}):i.jsx("span",{style:{flex:1},children:o}),i.jsx("span",{style:{color:e.textMuted,fontSize:9},children:"▾"})]}),l&&i.jsxs("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:20,background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.28)",padding:4,maxHeight:260,overflow:"auto",minWidth:Math.max(s,200)},children:[i.jsx("input",{ref:T,value:d,onChange:R=>E(R.target.value),placeholder:"Search fields...",style:{width:"100%",padding:"4px 6px",marginBottom:4,background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:3,color:e.textPrimary,fontFamily:e.font,fontSize:11,outline:"none"}}),t&&i.jsx("button",{onClick:()=>{a(void 0),c(!1)},style:{width:"100%",textAlign:"left",padding:"3px 6px",background:"transparent",border:"none",borderRadius:3,color:e.textMuted,fontSize:10,fontFamily:e.font,cursor:"pointer",fontStyle:"italic"},children:"Clear selection"}),h.length===0&&i.jsx("div",{style:{padding:"6px 8px",fontSize:11,color:e.textMuted,fontFamily:e.font},children:"No matches"}),h.map(R=>{const p=A(R.kind);return i.jsxs("button",{onClick:()=>{p&&(a(R.name),c(!1))},disabled:!p,title:p?R.name:`${$E(R.kind)} — not selectable here`,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"none",borderRadius:3,cursor:p?"pointer":"not-allowed",textAlign:"left",color:p?e.textPrimary:e.textMuted,fontFamily:e.fontMono,fontSize:11,opacity:p?1:.55},onMouseEnter:N=>{p&&(N.currentTarget.style.background=e.tableRowHover)},onMouseLeave:N=>{N.currentTarget.style.background="transparent"},children:[i.jsx("span",{style:{color:lo(R.kind,e.accent),fontWeight:700,width:12,textAlign:"center"},children:ao(R.kind)}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R.name}),i.jsx("span",{style:{fontSize:9,color:e.textMuted,fontFamily:e.font,textTransform:"uppercase",letterSpacing:"0.06em"},children:$E(R.kind)})]},R.name)})]})]})}function Vi({theme:e}){return i.jsxs("div",{style:{fontSize:10,fontFamily:e.font,color:e.textMuted,background:`${e.cellBorder}60`,borderRadius:3,padding:"3px 8px",letterSpacing:"0.02em"},children:["No semantic binding — metrics and dimensions unavailable. Use ",i.jsx("code",{children:"@metric(...)"})," or ",i.jsx("code",{children:"@dim(...)"})," upstream to populate typed pickers."]})}function _o({theme:e,accentColor:t,cellLabel:n,cellName:r,description:o,upstreamOptions:s,onPick:a}){return i.jsxs("div",{style:{background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderLeft:`3px solid ${t}`,borderRadius:6,padding:"18px 20px",fontFamily:e.font},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10},children:[i.jsx("span",{style:{fontSize:10,fontFamily:e.fontMono,fontWeight:700,letterSpacing:"0.08em",color:t,background:`${t}18`,padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:n}),r&&i.jsx("span",{style:{fontSize:12,fontFamily:e.fontMono,color:e.textSecondary},children:r})]}),i.jsx("div",{style:{fontSize:12,color:e.textSecondary,marginBottom:8,lineHeight:1.5},children:o}),s.length===0?i.jsxs("div",{style:{fontSize:11,color:e.textMuted,background:`${t}0A`,border:`1px dashed ${e.cellBorder}`,borderRadius:4,padding:"10px 12px",lineHeight:1.6},children:[i.jsx("div",{style:{fontWeight:600,color:e.textSecondary,marginBottom:4},children:"No dataframe available yet"}),i.jsxs("div",{children:["1. Add a ",i.jsx("span",{style:{fontFamily:e.fontMono,color:e.textSecondary},children:"SQL"})," or"," ",i.jsx("span",{style:{fontFamily:e.fontMono,color:e.textSecondary},children:"Block"})," cell above this one.",i.jsx("br",{}),"2. Run it ",i.jsx("span",{style:{fontFamily:e.fontMono},children:"(⌘↵)"})," and give the cell a name.",i.jsx("br",{}),"3. Come back here — named upstream cells show up as chips you can pick."]}),i.jsxs("div",{style:{marginTop:8,fontSize:10,color:e.textMuted,fontStyle:"italic"},children:["Tip: use ",i.jsx("span",{style:{fontFamily:e.fontMono},children:"@metric(...)"})," and"," ",i.jsx("span",{style:{fontFamily:e.fontMono},children:"@dim(...)"})," in the upstream SQL and metrics / dimensions appear with typed icons in the pickers here."]})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{fontSize:10,color:e.textMuted,marginBottom:6,letterSpacing:"0.06em",textTransform:"uppercase",fontWeight:700},children:"Pick an upstream dataframe"}),i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:s.map(l=>i.jsx("button",{onClick:()=>l.name&&a(l.name),style:{fontSize:11,fontFamily:e.fontMono,color:t,background:`${t}14`,border:`1px solid ${t}55`,borderRadius:4,padding:"3px 10px",cursor:"pointer"},children:l.name},l.id))})]})]})}function Ql(e){return e==="measure"?"#":e==="temporal"?"📅":"A"}function Zl(e,t){return e==="measure"?t.accent:e==="temporal"?t.warning:t.success}const PD=[{key:"x",label:"X-axis"},{key:"y",label:"Y-axis"},{key:"color",label:"Color"},{key:"facet",label:"Faceting"}],vD={chart:"bar"},id="application/x-dql-chart-column";function fp(e,t){e.effectAllowed="move",e.setData(id,JSON.stringify(t)),e.setData("text/plain",t.column)}function UD(e){const t=e.getData(id);if(!t)return null;try{return JSON.parse(t)}catch{return null}}function wD({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const s=ie[r],a=e.chartConfig??vD,l=a.chart??"bar",c=S.useMemo(()=>{const R=e.upstream;if(R)return t.find(p=>p.name===R)},[e.upstream,t]),d=S.useMemo(()=>t.slice(0,n).filter(R=>R.name&&R.result),[t,n]),E=c==null?void 0:c.result,u=S.useMemo(()=>Wi(E),[E]),T=S.useMemo(()=>{if(!E)return new Map;const R=new Map,p=new Set(u.metrics),N=new Set(u.dimensions);for(const I of E.columns)p.has(I)?R.set(I,"measure"):N.has(I)?R.set(I,"dimension"):R.set(I,ip(od(I,E.rows)));return R},[E,u]),f=S.useMemo(()=>E?E.columns.filter(R=>T.get(R)==="measure"):[],[E,T]),h=S.useMemo(()=>E?E.columns.filter(R=>T.get(R)!=="measure"):[],[E,T]),A=R=>{o({chartConfig:{...a,...R}})};return!e.upstream||!E?i.jsx(_o,{theme:s,accentColor:"#a371f7",cellLabel:"Chart",cellName:e.name,description:"Charts render from an upstream dataframe — the rows of a named SQL, DQL, or Block cell above. Drag measures to Y, dimensions to X.",upstreamOptions:d,onPick:R=>o({upstream:R})}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",background:s.cellBg,borderTop:`1px solid ${s.cellBorder}`,borderRight:`1px solid ${s.cellBorder}`,borderBottom:`1px solid ${s.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,overflow:"hidden",fontFamily:s.font},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}60`},children:[i.jsx("span",{style:{fontSize:10,fontFamily:s.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Chart"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:s.fontMono,color:s.textSecondary},children:e.name}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:["· df: ",e.upstream]}),i.jsx("button",{onClick:()=>o({upstream:void 0}),title:"Change upstream dataframe",style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.fontMono},children:"change"}),i.jsx("div",{style:{flex:1}}),i.jsx("select",{value:l,onChange:R=>A({chart:R.target.value}),style:{fontSize:11,fontFamily:s.font,background:s.editorBg,color:s.textSecondary,border:`1px solid ${s.cellBorder}`,borderRadius:3,padding:"2px 6px",outline:"none"},children:ki.map(R=>i.jsx("option",{value:R.value,children:R.label},R.value))})]}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"200px 240px 1fr",minHeight:320},children:[i.jsxs("div",{style:{borderRight:`1px solid ${s.cellBorder}`,padding:10,display:"flex",flexDirection:"column",gap:12,overflow:"auto"},children:[!u.hasSemanticBinding&&i.jsx(Vi,{theme:s}),i.jsx(XE,{label:"Measures",columns:f,kinds:T,theme:s,onPick:R=>A({y:R}),pickHint:"Y-axis"}),i.jsx(XE,{label:"Dimensions",columns:h,kinds:T,theme:s,onPick:R=>A({x:R}),pickHint:"X-axis"})]}),i.jsxs("div",{style:{borderRight:`1px solid ${s.cellBorder}`,padding:10,display:"flex",flexDirection:"column",gap:8},children:[i.jsxs("div",{style:{display:"flex",gap:4,borderBottom:`1px solid ${s.cellBorder}`,paddingBottom:4},children:[i.jsx(KE,{label:"Data",active:!0,theme:s}),i.jsx(KE,{label:"Style",theme:s})]}),PD.map(R=>i.jsx(BD,{slotKey:R.key,label:R.label,value:a[R.key],columns:E.columns,kinds:T,theme:s,onAssign:(p,N)=>{const I={[R.key]:p};N&&N!==R.key&&(I[N]=void 0),A(I)},onClear:()=>A({[R.key]:void 0})},R.key))]}),i.jsx("div",{style:{padding:10,minWidth:0,overflow:"hidden"},children:Yi(l,E,r,a)})]})]})}function XE({label:e,columns:t,kinds:n,theme:r,onPick:o,pickHint:s}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:r.textMuted,textTransform:"uppercase",fontFamily:r.font,padding:"0 2px"},children:e}),t.length===0&&i.jsx("span",{style:{fontSize:11,color:r.textMuted,fontFamily:r.font,padding:"2px 2px"},children:"None"}),t.map(a=>{const l=n.get(a)??"dimension";return i.jsxs("button",{onClick:()=>o(a),draggable:!0,onDragStart:c=>fp(c.dataTransfer,{column:a}),title:`Drag to an axis slot, or click to set as ${s}`,style:{display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"1px solid transparent",borderRadius:4,cursor:"grab",textAlign:"left",color:r.textPrimary,fontFamily:r.fontMono,fontSize:11,transition:"border-color 0.1s, background 0.1s"},onMouseEnter:c=>{c.currentTarget.style.borderColor=r.cellBorder,c.currentTarget.style.background=r.tableRowHover},onMouseLeave:c=>{c.currentTarget.style.borderColor="transparent",c.currentTarget.style.background="transparent"},children:[i.jsx("span",{style:{fontSize:9,fontFamily:r.fontMono,fontWeight:700,color:Zl(l,r),width:14,textAlign:"center"},children:Ql(l)}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a})]},a)})]})}function KE({label:e,active:t,theme:n}){return i.jsx("span",{style:{fontSize:11,fontFamily:n.font,fontWeight:600,color:t?n.textPrimary:n.textMuted,padding:"3px 10px",borderRadius:3,background:t?n.tableHeaderBg:"transparent",cursor:t?"default":"not-allowed"},children:e})}function BD({slotKey:e,label:t,value:n,columns:r,kinds:o,theme:s,onAssign:a,onClear:l}){const[c,d]=S.useState(!1),[E,u]=S.useState(!1),T=S.useRef(null);S.useEffect(()=>{if(!c)return;const N=I=>{var O;(O=T.current)!=null&&O.contains(I.target)||d(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[c]);const f=N=>{N.dataTransfer.types.includes(id)&&(N.preventDefault(),N.dataTransfer.dropEffect="move",E||u(!0))},h=()=>u(!1),A=N=>{u(!1);const I=UD(N.dataTransfer);I&&(N.preventDefault(),a(I.column,I.fromSlot),d(!1))},R=E?s.accent:n?`${s.accent}77`:s.cellBorder,p=E?`${s.accent}22`:n?`${s.accent}10`:s.editorBg;return i.jsxs("div",{ref:T,style:{position:"relative"},children:[i.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:s.textMuted,textTransform:"uppercase",fontFamily:s.font,marginBottom:3},children:t}),i.jsx("button",{onClick:()=>d(N=>!N),onDragOver:f,onDragEnter:f,onDragLeave:h,onDrop:A,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"5px 8px",background:p,border:`1px dashed ${R}`,borderRadius:4,cursor:"pointer",color:n?s.textPrimary:s.textMuted,fontFamily:s.fontMono,fontSize:11,textAlign:"left",transition:"background 0.1s, border-color 0.1s"},children:n?i.jsxs(i.Fragment,{children:[i.jsxs("span",{draggable:!0,onDragStart:N=>{N.stopPropagation(),fp(N.dataTransfer,{column:n,fromSlot:e})},style:{display:"inline-flex",alignItems:"center",gap:6,flex:1,cursor:"grab",minWidth:0},children:[i.jsx("span",{style:{color:Zl(o.get(n)??"dimension",s),fontWeight:700,width:14},children:Ql(o.get(n)??"dimension")}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n})]}),i.jsx("span",{onClick:N=>{N.stopPropagation(),l(),d(!1)},title:"Clear",style:{color:s.textMuted,fontSize:10,padding:"0 4px"},children:"✕"})]}):i.jsx("span",{children:E?"drop to set":"+ drop column"})}),c&&i.jsx("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:10,background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,maxHeight:220,overflow:"auto"},children:r.map(N=>i.jsxs("button",{onClick:()=>{a(N),d(!1)},style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"none",borderRadius:3,cursor:"pointer",textAlign:"left",color:s.textPrimary,fontFamily:s.fontMono,fontSize:11},onMouseEnter:I=>{I.currentTarget.style.background=s.tableRowHover},onMouseLeave:I=>{I.currentTarget.style.background="transparent"},children:[i.jsx("span",{style:{color:Zl(o.get(N)??"dimension",s),fontWeight:700,width:14},children:Ql(o.get(N)??"dimension")}),i.jsx("span",{children:N})]},N))})]})}const vs=[{value:"eq",label:"=",needsValue:!0},{value:"neq",label:"!=",needsValue:!0},{value:"gt",label:">",needsValue:!0},{value:"gte",label:">=",needsValue:!0},{value:"lt",label:"<",needsValue:!0},{value:"lte",label:"<=",needsValue:!0},{value:"contains",label:"contains",needsValue:!0},{value:"not_contains",label:"does not contain",needsValue:!0},{value:"starts_with",label:"starts with",needsValue:!0},{value:"ends_with",label:"ends with",needsValue:!0},{value:"in",label:"in (list)",needsValue:!0},{value:"not_in",label:"not in (list)",needsValue:!0},{value:"between",label:"between (a, b)",needsValue:!0},{value:"is_null",label:"is empty",needsValue:!1},{value:"is_not_null",label:"is not empty",needsValue:!1}];function ec(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function FD(){return{mode:"keep",groups:[{id:ec("g"),combinator:"and",rules:[]}]}}function GD(e){const t=vs.find(n=>n.value===e.operation);return t?e.column?t.needsValue?`${e.column} ${t.label} ${e.value||"…"}`:`${e.column} ${t.label}`:"…":""}function HD({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const s=ie[r],a=S.useMemo(FD,[e.id]),l=e.filterConfig??a,c=S.useMemo(()=>{const C=e.upstream??l.upstream;if(C)return t.find(m=>m.name===C)},[e.upstream,l.upstream,t]),d=S.useMemo(()=>t.slice(0,n).filter(C=>C.name&&C.result),[t,n]),E=c==null?void 0:c.result,u=(E==null?void 0:E.columns)??[],T=S.useMemo(()=>Wi(E),[E]),f=C=>{o({filterConfig:C})},h=(C,m)=>{f({...l,groups:l.groups.map(g=>g.id===C?{...g,...m}:g)})},A=(C,m,g)=>{f({...l,groups:l.groups.map(y=>y.id===C?{...y,rules:y.rules.map(x=>x.id===m?{...x,...g}:x)}:y)})},R=C=>{f({...l,groups:l.groups.map(m=>m.id===C?{...m,rules:[...m.rules,{id:ec("r"),column:u[0]??"",operation:"eq",value:""}]}:m)})},p=(C,m)=>{f({...l,groups:l.groups.map(g=>g.id===C?{...g,rules:g.rules.filter(y=>y.id!==m)}:g)})},N=()=>{f({...l,groups:[...l.groups,{id:ec("g"),combinator:"and",rules:[]}]})},I=C=>{f({...l,groups:l.groups.filter(m=>m.id!==C)})};if(!c||!E)return i.jsx(_o,{theme:s,accentColor:"#ff7b72",cellLabel:"Filter",cellName:e.name,description:"Filter cells keep or drop rows from an upstream dataframe using column-by-column rules — no SQL needed.",upstreamOptions:d,onPick:C=>o({upstream:C})});const O={background:s.editorBg,border:`1px solid ${s.cellBorder}`,borderRadius:3,color:s.textPrimary,fontSize:11,fontFamily:s.fontMono,padding:"3px 6px",outline:"none"};return i.jsxs("div",{style:{background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderLeft:"3px solid #ff7b72",borderRadius:6,fontFamily:s.font,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}60`},children:[i.jsx("span",{style:{fontSize:10,fontFamily:s.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#ff7b72",background:"#ff7b7218",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Filter"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:s.fontMono,color:s.textSecondary},children:e.name}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:["· df: ",c.name]}),i.jsx("button",{onClick:()=>o({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.fontMono},children:"change"}),i.jsx("div",{style:{flex:1}}),i.jsx("div",{style:{display:"inline-flex",border:`1px solid ${s.cellBorder}`,borderRadius:3,overflow:"hidden"},children:["keep","drop"].map(C=>i.jsx("button",{onClick:()=>f({...l,mode:C}),style:{fontSize:10,fontFamily:s.font,fontWeight:600,letterSpacing:"0.04em",padding:"3px 10px",background:l.mode===C?`${s.accent}20`:"transparent",color:l.mode===C?s.accent:s.textMuted,border:"none",cursor:"pointer",textTransform:"uppercase"},children:C==="keep"?"Keep rows":"Drop rows"},C))})]}),i.jsxs("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:10},children:[!T.hasSemanticBinding&&i.jsx(Vi,{theme:s}),l.groups.map((C,m)=>i.jsxs("div",{style:{border:`1px solid ${s.cellBorder}`,borderRadius:6,padding:10,background:`${s.tableHeaderBg}30`,display:"flex",flexDirection:"column",gap:8},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsxs("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:s.textMuted,textTransform:"uppercase",fontFamily:s.font},children:["Group ",m+1]}),i.jsx("div",{style:{display:"inline-flex",border:`1px solid ${s.cellBorder}`,borderRadius:3,overflow:"hidden"},children:["and","or"].map(g=>i.jsx("button",{onClick:()=>h(C.id,{combinator:g}),style:{fontSize:10,fontFamily:s.fontMono,padding:"2px 8px",background:C.combinator===g?`${s.accent}20`:"transparent",color:C.combinator===g?s.accent:s.textMuted,border:"none",cursor:"pointer",textTransform:"uppercase",fontWeight:700},children:g},g))}),i.jsx("div",{style:{flex:1}}),l.groups.length>1&&i.jsx("button",{onClick:()=>I(C.id),style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.font},children:"Remove group"})]}),C.rules.length===0&&i.jsx("div",{style:{fontSize:11,color:s.textMuted,fontFamily:s.font,padding:"4px 2px"},children:"No rules yet — add one below."}),C.rules.map(g=>{const y=vs.find(x=>x.value===g.operation)??vs[0];return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx(Tp,{theme:s,value:g.column||void 0,fields:T.fields,placeholder:"Select field",minWidth:180,onChange:x=>A(C.id,g.id,{column:x??""})}),i.jsx("select",{value:g.operation,onChange:x=>A(C.id,g.id,{operation:x.target.value}),style:{...O,minWidth:120},children:vs.map(x=>i.jsx("option",{value:x.value,children:x.label},x.value))}),y.needsValue&&i.jsx("input",{value:g.value,onChange:x=>A(C.id,g.id,{value:x.target.value}),placeholder:"Value",style:{...O,flex:1,minWidth:100}}),i.jsx("button",{onClick:()=>p(C.id,g.id),title:"Remove rule",style:{background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,fontSize:10,padding:"2px 6px",cursor:"pointer"},children:"✕"})]},g.id)}),i.jsx("div",{children:i.jsx("button",{onClick:()=>R(C.id),style:{fontSize:10,fontFamily:s.font,color:s.accent,background:"transparent",border:`1px dashed ${s.accent}55`,borderRadius:3,padding:"3px 10px",cursor:"pointer",letterSpacing:"0.04em"},children:"+ Add filter"})})]},C.id)),i.jsx("div",{children:i.jsx("button",{onClick:N,style:{fontSize:10,fontFamily:s.font,color:s.textMuted,background:"transparent",border:`1px dashed ${s.btnBorder}`,borderRadius:3,padding:"3px 10px",cursor:"pointer",letterSpacing:"0.04em"},children:"+ Add filter group"})})]}),i.jsxs("div",{style:{padding:"6px 12px",borderTop:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}40`,fontSize:10,fontFamily:s.fontMono,color:s.textMuted,letterSpacing:"0.04em",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:[l.mode==="keep"?"KEEP WHERE ":"DROP WHERE ",l.groups.map(C=>C.rules.map(GD).join(` ${C.combinator.toUpperCase()} `)).filter(Boolean).map(C=>`(${C})`).join(" AND ")||"—"]})]})}function zE(e){return typeof e=="number"?e:typeof e=="string"&&e.trim()!==""&&!isNaN(Number(e))?Number(e):null}function tc(e,t){if(t==="count")return e.length;if(t==="count_distinct")return new Set(e.map(r=>String(r))).size;if(t==="last"){const r=e[e.length-1];return zE(r)}const n=e.map(zE).filter(r=>r!==null);if(n.length===0)return null;switch(t){case"sum":return n.reduce((r,o)=>r+o,0);case"avg":return n.reduce((r,o)=>r+o,0)/n.length;case"min":return n.reduce((r,o)=>o<r?o:r,n[0]);case"max":return n.reduce((r,o)=>o>r?o:r,n[0])}}const kD=[{value:"sum",label:"Sum"},{value:"avg",label:"Average"},{value:"count",label:"Count"},{value:"min",label:"Min"},{value:"max",label:"Max"},{value:"last",label:"Last"}],jD=[{value:"number",label:"Number"},{value:"currency",label:"Currency"},{value:"percent",label:"Percent"},{value:"duration",label:"Duration"}],YD={aggregation:"count",format:"number"};function WD(e,t,n){return n==="count"?tc(e.rows,"count"):!t||!e.columns.includes(t)?null:tc(e.rows.map(r=>r[t]),n)}function VD(e,t){if(e===null)return"—";switch(t){case"currency":return e.toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2});case"percent":return`${(e*100).toFixed(1)}%`;case"duration":return e<60?`${e.toFixed(1)}s`:e<3600?`${(e/60).toFixed(1)}m`:`${(e/3600).toFixed(1)}h`;case"number":default:return Math.abs(e)>=1e3?e.toLocaleString(void 0,{maximumFractionDigits:2}):e.toFixed(Number.isInteger(e)?0:2)}}function $D({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const s=ie[r],a=e.singleValueConfig??YD,l=a.aggregation??"count",c=a.format??"number",d=S.useMemo(()=>{const p=e.upstream??a.upstream;if(p)return t.find(N=>N.name===p)},[e.upstream,a.upstream,t]),E=S.useMemo(()=>t.slice(0,n).filter(p=>p.name&&p.result),[t,n]),u=d==null?void 0:d.result,T=S.useMemo(()=>Wi(u),[u]),f=S.useMemo(()=>u?WD(u,a.metric,l):null,[u,a.metric,l]),h=p=>{o({singleValueConfig:{...a,...p}})};if(!d||!u)return i.jsx(_o,{theme:s,accentColor:"#a371f7",cellLabel:"Single value",cellName:e.name,description:"Single-value cards render one KPI from an upstream dataframe — sum, avg, count, min, max, or last — with a format of your choice.",upstreamOptions:E,onPick:p=>o({upstream:p})});const A=VD(f,c),R={background:s.editorBg,border:`1px solid ${s.cellBorder}`,borderRadius:3,color:s.textPrimary,fontSize:11,fontFamily:s.fontMono,padding:"3px 6px",outline:"none"};return i.jsxs("div",{style:{background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,fontFamily:s.font,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}60`},children:[i.jsx("span",{style:{fontSize:10,fontFamily:s.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Single value"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:s.fontMono,color:s.textSecondary},children:e.name}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:["· df: ",d.name]}),i.jsx("button",{onClick:()=>o({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.fontMono},children:"change"})]}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"280px 1fr"},children:[i.jsxs("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:8,borderRight:`1px solid ${s.cellBorder}`},children:[i.jsx(fs,{label:"Aggregation",theme:s,children:i.jsx("select",{value:l,onChange:p=>h({aggregation:p.target.value}),style:{...R,width:"100%"},children:kD.map(p=>i.jsx("option",{value:p.value,children:p.label},p.value))})}),l!=="count"&&i.jsxs(fs,{label:"Metric field",theme:s,children:[i.jsx(Tp,{theme:s,value:a.metric,fields:T.fields,placeholder:"Select metric or column",minWidth:240,onChange:p=>h({metric:p})}),!T.hasSemanticBinding&&i.jsx(Vi,{theme:s})]}),i.jsx(fs,{label:"Format",theme:s,children:i.jsx("select",{value:c,onChange:p=>h({format:p.target.value}),style:{...R,width:"100%"},children:jD.map(p=>i.jsx("option",{value:p.value,children:p.label},p.value))})}),i.jsx(fs,{label:"Label",theme:s,children:i.jsx("input",{value:a.label??"",onChange:p=>h({label:p.target.value||void 0}),placeholder:"e.g. Total revenue",style:{...R,width:"100%"}})})]}),i.jsxs("div",{style:{padding:"24px 20px",display:"flex",flexDirection:"column",justifyContent:"center",gap:6},children:[i.jsx("div",{style:{fontSize:11,fontFamily:s.font,color:s.textMuted,letterSpacing:"0.06em",textTransform:"uppercase",fontWeight:600},children:a.label??`${l.toUpperCase()}${a.metric?` · ${a.metric}`:""}`}),i.jsx("div",{style:{fontSize:42,fontWeight:700,fontFamily:s.font,color:s.textPrimary,lineHeight:1.1,letterSpacing:"-0.02em"},children:A}),i.jsxs("div",{style:{fontSize:10,color:s.textMuted,fontFamily:s.fontMono},children:["from ",u.rows.length.toLocaleString()," rows"]})]})]})]})}function fs({label:e,theme:t,children:n}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3},children:[i.jsx("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:t.textMuted,textTransform:"uppercase",fontFamily:t.font},children:e}),n]})}const XD=["sum","avg","count","min","max","count_distinct"],KD={rows:[],columns:[],values:[]};function JE(e,t){return t.map(n=>String(e[n]??"")).join("|")}function Ya(e,t){return e.metrics.includes(t)?"metric":e.dimensions.includes(t)?"dimension":"column"}function qE(e,t){const n=e.fields.filter(o=>o.kind===t),r=e.fields.filter(o=>o.kind!==t);return[...n,...r].map(o=>({name:o.name,kind:o.kind}))}function zD({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const s=ie[r],a=e.pivotConfig??KD,l={upstream:a.upstream,rows:a.rows??[],columns:a.columns??[],values:a.values??[]},c=S.useMemo(()=>{const R=e.upstream??l.upstream;if(R)return t.find(p=>p.name===R)},[e.upstream,l.upstream,t]),d=S.useMemo(()=>t.slice(0,n).filter(R=>R.name&&R.result),[t,n]),E=c==null?void 0:c.result;E==null||E.columns;const u=S.useMemo(()=>Wi(E),[E]),T=S.useMemo(()=>qE(u,"dimension"),[u]),f=S.useMemo(()=>qE(u,"metric"),[u]),h=R=>o({pivotConfig:R}),A=S.useMemo(()=>{if(!E||l.rows.length===0&&l.columns.length===0||l.values.length===0)return null;const R=new Set,p=new Map;for(const C of E.rows){const m=JE(C,l.rows),g=JE(C,l.columns);R.add(g);let y=p.get(m);if(!y){const w={};for(const D of l.rows)w[D]=C[D];y={row:w,groups:new Map},p.set(m,y)}const x=y.groups.get(g)??[];x.push(C),y.groups.set(g,x)}const N=[...R].sort(),I=N.map(C=>C===""?"value":C),O=[];for(const[,C]of p){const m=C,g=N.map(y=>{const x=m.groups.get(y)??[],w={};for(const D of l.values){const U=x.map(F=>F[D.column]);w[`${D.aggregation}(${D.column})`]=tc(U,D.aggregation)}return w});O.push({rowDims:m.row,values:g})}return{columnKeys:N,columnHeaders:I,body:O}},[l,E]);return!c||!E?i.jsx(_o,{theme:s,accentColor:"#a371f7",cellLabel:"Pivot",cellName:e.name,description:"Pivots reshape an upstream dataframe into a rows × columns grid. Pick dimensions for rows/columns and a metric for values.",upstreamOptions:d,onPick:R=>o({upstream:R})}):i.jsxs("div",{style:{background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,fontFamily:s.font,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}60`},children:[i.jsx("span",{style:{fontSize:10,fontFamily:s.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Pivot"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:s.fontMono,color:s.textSecondary},children:e.name}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:["· df: ",c.name]}),i.jsx("button",{onClick:()=>o({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.fontMono},children:"change"})]}),!u.hasSemanticBinding&&i.jsx("div",{style:{padding:"8px 12px 0"},children:i.jsx(Vi,{theme:s})}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",padding:12,gap:10,borderBottom:`1px solid ${s.cellBorder}`},children:[i.jsx(QE,{label:"Rows",selected:l.rows,availableFields:T.filter(R=>!l.rows.includes(R.name)),kindFor:R=>Ya(u,R),theme:s,onAdd:R=>h({...l,rows:[...l.rows,R]}),onRemove:R=>h({...l,rows:l.rows.filter(p=>p!==R)})}),i.jsx(QE,{label:"Columns",selected:l.columns,availableFields:T.filter(R=>!l.columns.includes(R.name)),kindFor:R=>Ya(u,R),theme:s,onAdd:R=>h({...l,columns:[...l.columns,R]}),onRemove:R=>h({...l,columns:l.columns.filter(p=>p!==R)})}),i.jsx(JD,{values:l.values,availableFields:f,kindFor:R=>Ya(u,R),theme:s,onAdd:R=>h({...l,values:[...l.values,{column:R,aggregation:"sum"}]}),onUpdate:(R,p)=>h({...l,values:l.values.map((N,I)=>I===R?{...N,...p}:N)}),onRemove:R=>h({...l,values:l.values.filter((p,N)=>N!==R)})})]}),i.jsx("div",{style:{padding:12,overflowX:"auto"},children:!A||A.body.length===0?i.jsx("div",{style:{fontSize:11,color:s.textMuted,fontFamily:s.font},children:"Pick at least one row/column dimension and one value to see a preview."}):i.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontFamily:s.fontMono,fontSize:11},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[l.rows.map(R=>i.jsx("th",{style:{textAlign:"left",padding:"4px 8px",borderBottom:`1px solid ${s.cellBorder}`,color:s.textSecondary,fontWeight:600},children:R},R)),A.columnHeaders.map((R,p)=>i.jsx("th",{style:{textAlign:"right",padding:"4px 8px",borderBottom:`1px solid ${s.cellBorder}`,color:s.textSecondary,fontWeight:600},children:R},p))]})}),i.jsx("tbody",{children:A.body.slice(0,50).map((R,p)=>i.jsxs("tr",{children:[l.rows.map(N=>i.jsx("td",{style:{padding:"3px 8px",color:s.textPrimary,borderBottom:`1px solid ${s.cellBorder}30`},children:String(R.rowDims[N]??"")},N)),R.values.map((N,I)=>i.jsx("td",{style:{padding:"3px 8px",color:s.textPrimary,textAlign:"right",borderBottom:`1px solid ${s.cellBorder}30`},children:Object.values(N).map((O,C)=>i.jsx("div",{children:O===null?"—":typeof O=="number"?O.toLocaleString(void 0,{maximumFractionDigits:2}):String(O)},C))},I))]},p))})]})})]})}function QE({label:e,selected:t,availableFields:n,kindFor:r,theme:o,onAdd:s,onRemove:a}){return i.jsx(Sp,{label:e,theme:o,availableFields:n,onAdd:s,children:t.length===0?i.jsx("span",{style:{fontSize:11,color:o.textMuted,fontFamily:o.font},children:"+ add field"}):t.map(l=>{const c=r(l);return i.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",background:`${o.accent}14`,border:`1px solid ${o.accent}55`,borderRadius:3,fontSize:11,fontFamily:o.fontMono,color:o.textPrimary,margin:2},children:[i.jsx("span",{style:{color:lo(c,o.accent),fontWeight:700},children:ao(c)}),l,i.jsx("span",{onClick:()=>a(l),style:{cursor:"pointer",color:o.textMuted,fontSize:10},title:"Remove",children:"✕"})]},l)})})}function JD({values:e,availableFields:t,kindFor:n,theme:r,onAdd:o,onUpdate:s,onRemove:a}){return i.jsx(Sp,{label:"Values",theme:r,availableFields:t,onAdd:o,children:e.length===0?i.jsx("span",{style:{fontSize:11,color:r.textMuted,fontFamily:r.font},children:"+ add value"}):e.map((l,c)=>{const d=n(l.column);return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,margin:2},children:[i.jsx("select",{value:l.aggregation,onChange:E=>s(c,{aggregation:E.target.value}),style:{background:r.editorBg,border:`1px solid ${r.cellBorder}`,borderRadius:3,color:r.textSecondary,fontSize:10,fontFamily:r.fontMono,padding:"1px 4px"},children:XD.map(E=>i.jsx("option",{value:E,children:E},E))}),i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",background:`${r.accent}14`,border:`1px solid ${r.accent}55`,borderRadius:3,fontSize:11,fontFamily:r.fontMono,color:r.textPrimary},children:[i.jsx("span",{style:{color:lo(d,r.accent),fontWeight:700},children:ao(d)}),l.column,i.jsx("span",{onClick:()=>a(c),style:{cursor:"pointer",color:r.textMuted,fontSize:10},children:"✕"})]})]},c)})})}function Sp({label:e,theme:t,availableFields:n,onAdd:r,children:o}){const[s,a]=S.useState(!1),l=S.useRef(null);return S.useEffect(()=>{if(!s)return;const c=d=>{var E;(E=l.current)!=null&&E.contains(d.target)||a(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[s]),i.jsxs("div",{ref:l,style:{position:"relative",display:"flex",flexDirection:"column",gap:4},children:[i.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:t.textMuted,textTransform:"uppercase",fontFamily:t.font},children:e}),i.jsx("div",{onClick:()=>a(c=>!c),style:{minHeight:42,border:`1px dashed ${t.cellBorder}`,borderRadius:4,padding:4,cursor:"pointer",display:"flex",flexWrap:"wrap",alignItems:"center"},children:o}),s&&n.length>0&&i.jsx("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:10,background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,maxHeight:200,overflow:"auto"},children:n.map(c=>i.jsxs("button",{onClick:()=>{r(c.name),a(!1)},style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px",background:"transparent",border:"none",borderRadius:3,cursor:"pointer",textAlign:"left",color:t.textPrimary,fontFamily:t.fontMono,fontSize:11},onMouseEnter:d=>{d.currentTarget.style.background=t.tableRowHover},onMouseLeave:d=>{d.currentTarget.style.background="transparent"},children:[i.jsx("span",{style:{color:lo(c.kind,t.accent),fontWeight:700,width:12},children:ao(c.kind)}),i.jsx("span",{children:c.name})]},c.name))})]})}const Ss="#79c0ff";function qD({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const s=ie[r],a=e.tableConfig??{},l=S.useMemo(()=>{const T=e.upstream??a.upstream;if(T)return t.find(f=>f.name===T)},[e.upstream,a.upstream,t]),c=S.useMemo(()=>t.slice(0,n).filter(T=>T.name&&T.result),[t,n]),d=l==null?void 0:l.result,E=a.visibleColumns,u=S.useMemo(()=>{if(!d)return;if(!E||E.length===0)return d;const T=new Set(d.columns),f=E.filter(h=>T.has(h));return f.length===0?d:{...d,columns:f}},[d,E]);return!l||!u?i.jsx(_o,{theme:s,accentColor:Ss,cellLabel:"Table",cellName:e.name,description:"Renders an upstream dataframe — the rows of a named SQL, DQL, or Block cell above — as a sortable, exportable table. Use visibleColumns in tableConfig to pin a subset.",upstreamOptions:c,onPick:T=>o({upstream:T})}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderLeft:`3px solid ${Ss}`,borderRadius:6,overflow:"hidden",fontFamily:s.font},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}60`},children:[i.jsx("span",{style:{fontSize:10,fontFamily:s.fontMono,fontWeight:700,letterSpacing:"0.08em",color:Ss,background:`${Ss}18`,padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Table"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:s.fontMono,color:s.textSecondary},children:e.name}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:["· df: ",e.upstream??a.upstream]}),i.jsx("button",{onClick:()=>o({upstream:void 0}),title:"Change upstream dataframe",style:{fontSize:10,background:"transparent",border:`1px solid ${s.btnBorder}`,borderRadius:3,color:s.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:s.fontMono},children:"change"}),i.jsx("div",{style:{flex:1}}),i.jsxs("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.fontMono},children:[u.rows.length.toLocaleString()," rows · ",u.columns.length," cols"]})]}),i.jsx(yo,{result:u,themeMode:r})]})}async function QD(e,t){const n=await fetch("/api/llm/run",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({provider:e.provider,messages:e.messages,upstream:e.upstream}),signal:e.signal});if(!n.ok){const a=await n.text().catch(()=>n.statusText);throw new Error(a||`HTTP ${n.status}`)}if(!n.body)throw new Error("Response has no body");const r=n.body.getReader(),o=new TextDecoder;let s="";try{for(;;){const{value:a,done:l}=await r.read();if(l)break;s+=o.decode(a,{stream:!0});let c;for(;(c=s.indexOf(`
613
-
614
- `))!==-1;){const d=s.slice(0,c);s=s.slice(c+2);const E=d.split(`
615
- `).find(u=>u.startsWith("data: "));if(E)try{t(JSON.parse(E.slice(6)))}catch{}}}}finally{r.releaseLock()}}function Rs(){return i.jsx("span",{style:{color:"#ff7b72",marginLeft:2},children:"*"})}function Wa(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ZD(e){const t=new Set,n=/@(metric|dim)\(([^)]+)\)/gi;let r;for(;r=n.exec(e);)t.add(r[2].trim());return Array.from(t)}function Rp({cell:e,onClose:t,onSaved:n,initialContent:r,initialName:o,initialDescription:s,initialTags:a}){const{state:l,dispatch:c}=fe(),d=ie[l.themeMode],E=S.useRef(null),[u,T]=S.useState(o||e.name||"new_block"),[f,h]=S.useState(""),[A,R]=S.useState(""),[p,N]=S.useState(s??l.notebookMetadata.description??""),[I,O]=S.useState((a??l.notebookMetadata.categories??[]).join(", ")),[C,m]=S.useState(r??e.content),[g,y]=S.useState(""),[x,w]=S.useState(""),[D,U]=S.useState([]),[F,_]=S.useState(!1),[B,b]=S.useState(null),P=S.useMemo(()=>ZD(C),[C]),M=S.useMemo(()=>I.split(",").map(j=>j.trim()).filter(Boolean),[I]),L=[{id:"has-name",label:"Block has name",severity:"error",passed:!!u.trim()},{id:"has-description",label:"Block has description",severity:"error",passed:!!p.trim()},{id:"has-owner",label:"Block has owner",severity:"error",passed:!!A.trim()},{id:"has-domain",label:"Block has domain",severity:"error",passed:!!f.trim()},{id:"has-tags",label:"Has at least one tag",severity:"warning",passed:M.length>0},{id:"has-llm-context",label:"Has LLM context (for agents)",severity:"warning",passed:!!g.trim()}],v=L.some(j=>j.severity==="error"&&!j.passed);S.useEffect(()=>{var j;(j=E.current)==null||j.focus()},[]),S.useEffect(()=>{const j=z=>{z.key==="Escape"&&t()};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[t]);const G=l.semanticLayer.domains,k=`${f.trim()?`blocks/${Wa(f)}/`:"blocks/"}${Wa(u)||"new-block"}.dql`,q=async()=>{var j;if(v){b("Fix the required governance fields before saving.");return}if(!C.trim()){b("Block content is required.");return}_(!0),b(null);try{const z=x.split(`
616
- `).map(re=>re.trim()).filter(Boolean),Q=D.map(re=>({question:re.question.trim(),sql:re.sql.trim()||void 0})).filter(re=>re.question),X=await J.saveAsBlock({cellId:e.id,notebookPath:((j=l.activeFile)==null?void 0:j.path)??null,name:u.trim(),domain:f.trim()||void 0,owner:A.trim()||void 0,content:C,description:p.trim()||void 0,tags:M,metricRefs:P,llmContext:g.trim()||void 0,examples:Q.length>0?Q:void 0,invariants:z.length>0?z:void 0}),Z={name:`${Wa(u)||"new-block"}.dql`,path:X.path,type:"block",folder:"blocks"};l.files.some(re=>re.path===X.path)||c({type:"FILE_ADDED",file:Z});const le=await J.openBlockStudio(X.path);c({type:"OPEN_BLOCK_STUDIO",file:Z,payload:le}),n==null||n({...X,name:u.trim()}),t()}catch(z){b(z instanceof Error?z.message:String(z))}finally{_(!1)}},K={width:"100%",background:d.inputBg,border:`1px solid ${B?d.error:d.inputBorder}`,borderRadius:6,color:d.textPrimary,fontSize:13,fontFamily:d.font,padding:"8px 12px",outline:"none",boxSizing:"border-box"};return i.jsx("div",{onClick:j=>{j.target===j.currentTarget&&t()},style:{position:"fixed",inset:0,background:d.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1100,backdropFilter:"blur(4px)"},children:i.jsxs("div",{style:{width:760,maxWidth:"calc(100vw - 48px)",maxHeight:"calc(100vh - 48px)",overflow:"auto",background:d.modalBg,border:`1px solid ${d.cellBorder}`,borderRadius:12,boxShadow:"0 20px 60px rgba(0,0,0,0.5)"},children:[i.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[i.jsx("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:d.textPrimary,fontFamily:d.font},children:"Save as Block"}),i.jsx("button",{onClick:t,style:{background:"transparent",border:"none",color:d.textMuted,cursor:"pointer",fontSize:18},children:"×"})]}),i.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:16},children:[i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsxs("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:["Block Name ",i.jsx(Rs,{})]}),i.jsx("input",{ref:E,value:u,onChange:j=>T(j.target.value),style:K})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsxs("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:["Domain ",i.jsx(Rs,{})]}),i.jsx("input",{value:f,onChange:j=>h(j.target.value),list:"semantic-domain-options",style:K,placeholder:"finance"}),i.jsx("datalist",{id:"semantic-domain-options",children:G.map(j=>i.jsx("option",{value:j},j))})]})]}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsxs("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:["Owner ",i.jsx(Rs,{})]}),i.jsx("input",{value:A,onChange:j=>R(j.target.value),style:K,placeholder:"data-platform@company.com"})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:"Tags"}),i.jsx("input",{value:I,onChange:j=>O(j.target.value),style:K,placeholder:"revenue, dashboard"})]})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsxs("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:["Description ",i.jsx(Rs,{})]}),i.jsx("input",{value:p,onChange:j=>N(j.target.value),style:K})]}),i.jsxs("details",{style:{border:`1px solid ${d.cellBorder}`,borderRadius:6,padding:"8px 12px"},children:[i.jsx("summary",{style:{fontSize:12,fontWeight:600,color:d.textSecondary,fontFamily:d.font,cursor:"pointer"},children:"Agent-facing metadata (optional — helps AI tools ground answers on this block)"}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10,paddingTop:10},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:"How should an AI describe this block?"}),i.jsx("textarea",{value:g,onChange:j=>y(j.target.value),rows:3,placeholder:'One paragraph. E.g. "Monthly revenue recognized from closed-won deals, grouped by billing month. Excludes refunds."',style:{...K,fontFamily:d.font,lineHeight:1.5,resize:"vertical"}})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:"Invariants (one per line)"}),i.jsx("textarea",{value:x,onChange:j=>w(j.target.value),rows:2,placeholder:`Revenue is never negative
617
- Each row is a unique month`,style:{...K,fontFamily:d.fontMono,lineHeight:1.5,resize:"vertical"}})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:"Example questions (grounding for chat cells)"}),D.map((j,z)=>i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr auto",gap:6},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i.jsx("input",{value:j.question,onChange:Q=>{const X=[...D];X[z]={...X[z],question:Q.target.value},U(X)},placeholder:"What was revenue last month?",style:K}),i.jsx("input",{value:j.sql,onChange:Q=>{const X=[...D];X[z]={...X[z],sql:Q.target.value},U(X)},placeholder:"Optional SQL snippet",style:{...K,fontFamily:d.fontMono,fontSize:12}})]}),i.jsx("button",{type:"button",onClick:()=>U(D.filter((Q,X)=>X!==z)),style:{background:"transparent",border:`1px solid ${d.cellBorder}`,borderRadius:6,color:d.textMuted,cursor:"pointer",fontSize:12,padding:"0 10px"},children:"×"})]},z)),i.jsx("button",{type:"button",onClick:()=>U([...D,{question:"",sql:""}]),style:{alignSelf:"flex-start",background:d.btnBg,border:`1px solid ${d.btnBorder}`,borderRadius:6,color:d.textSecondary,cursor:"pointer",fontSize:12,fontFamily:d.font,padding:"4px 10px"},children:"+ Add example"})]})]})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:"10px 12px",background:d.pillBg,borderRadius:6,border:`1px solid ${d.cellBorder}`},children:[i.jsx("div",{style:{fontSize:11,fontWeight:700,color:d.textSecondary,fontFamily:d.font,letterSpacing:"0.06em",textTransform:"uppercase"},children:"Governance checks"}),i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:L.map(j=>{const z=j.passed?"#3fb950":j.severity==="error"?"#ff7b72":"#e3b341",Q=j.passed?"✓":j.severity==="error"?"✕":"!";return i.jsxs("span",{title:j.passed?`${j.label} — passed`:`${j.label} — ${j.severity}`,style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:11,fontFamily:d.font,color:z,background:`${z}18`,border:`1px solid ${z}55`,borderRadius:999,padding:"2px 10px"},children:[i.jsx("span",{style:{fontWeight:700},children:Q}),j.label]},j.id)})})]}),i.jsx("div",{style:{fontSize:12,color:d.textMuted,fontFamily:d.fontMono,padding:"8px 12px",background:d.pillBg,borderRadius:6},children:k}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,color:d.textSecondary,fontFamily:d.font},children:"Content Preview"}),i.jsx("textarea",{value:C,onChange:j=>m(j.target.value),style:{...K,minHeight:220,resize:"vertical",fontFamily:d.fontMono,lineHeight:1.5}})]}),P.length>0&&i.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,padding:"10px 12px",background:d.pillBg,borderRadius:6},children:[i.jsx("span",{style:{fontSize:11,color:d.textMuted,fontFamily:d.font},children:"Detected semantic refs:"}),P.map(j=>i.jsx("span",{style:{fontSize:11,color:d.accent,fontFamily:d.fontMono,background:`${d.accent}18`,borderRadius:999,padding:"2px 8px"},children:j},j))]}),B&&i.jsx("div",{style:{fontSize:12,color:d.error,fontFamily:d.font},children:B})]}),i.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${d.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[i.jsx("button",{onClick:t,style:{background:d.btnBg,border:`1px solid ${d.btnBorder}`,borderRadius:6,color:d.textSecondary,cursor:"pointer",fontSize:13,fontFamily:d.font,padding:"7px 16px"},children:"Cancel"}),i.jsx("button",{onClick:q,disabled:F||v,title:v?"Fix governance errors to enable Save":void 0,style:{background:d.accent,border:`1px solid ${d.accent}`,borderRadius:6,color:"#fff",cursor:F||v?"not-allowed":"pointer",fontSize:13,fontFamily:d.font,padding:"7px 20px",opacity:F||v?.5:1},children:F?"Saving...":"Save Block"})]})]})})}const ZE=[{id:"claude-agent-sdk",label:"Claude Agent SDK",hint:"Uses ANTHROPIC_API_KEY / ~/.dql/credentials"},{id:"claude-code",label:"Claude Code",hint:"Spawns `claude -p` — uses your Claude Code auth"}];function eu(){return`m_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function eM(e,t,n){if(n){const r=e.find(o=>o.name===n);if(r!=null&&r.content)return r.content}for(let r=t-1;r>=0;r--){const o=e[r];if((o.type==="sql"||o.type==="dql")&&o.content)return o.content}}function tM({cell:e,cells:t,index:n,themeMode:r,onUpdate:o}){const{dispatch:s}=fe(),a=ie[r],l=e.chatConfig??{provider:"claude-agent-sdk",history:[]},[c,d]=S.useState(""),[E,u]=S.useState(!1),[T,f]=S.useState(""),[h,A]=S.useState([]),[R,p]=S.useState(null),[N,I]=S.useState(!1),O=S.useRef(null),C=w=>{o({chatConfig:{...l,...w}})},m=async()=>{const w=c.trim();if(!w||E)return;const D={id:eu(),role:"user",content:w},U={id:eu(),role:"assistant",content:"",events:[]},F=[...l.history,D,U];C({history:F}),d(""),f(""),A([]),p(null),u(!0);const _=new AbortController;O.current=_;let B="";const b=[];let P;try{await QD({provider:l.provider,messages:[...l.history,D].map(M=>({role:M.role,content:M.content})),upstream:{cellId:e.id,sql:eM(t,n,l.upstream)},signal:_.signal},M=>{b.push(M),A([...b]),M.kind==="text"?(B+=M.text,f(B)):M.kind==="error"?p(M.message):M.kind==="proposal"&&(P={...M.proposal,certified:M.governance.certified,errors:M.governance.errors,warnings:M.governance.warnings})})}catch(M){p(M instanceof Error?M.message:String(M))}finally{const M=F.map(L=>L.id===U.id?{...L,content:B,events:b.map(v=>({kind:v.kind,payload:v}))}:L);o({chatConfig:{...l,history:M,lastProposal:P??l.lastProposal}}),u(!1),f(""),A([]),O.current=null}},g=()=>{var w;(w=O.current)==null||w.abort()},y=()=>{C({history:[],lastProposal:void 0})},x=l.lastProposal;return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10,padding:"14px 16px",background:a.cellBg,fontFamily:a.font},children:[i.jsx(nM,{cell:e,provider:l.provider,onProviderChange:w=>C({provider:w}),onClear:l.history.length>0?y:void 0,t:a}),l.history.length===0&&!E&&i.jsx("div",{style:{fontSize:12,color:a.textSecondary,lineHeight:1.5},children:"Ask for a metric, a comparison, or a dashboard. The agent searches blocks, checks the semantic layer, and proposes a governed block when you're ready."}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[l.history.map(w=>i.jsx(rM,{msg:w,t:a},w.id)),E&&i.jsx(oM,{streamingText:T,events:h,t:a})]}),R&&i.jsx("div",{style:{fontSize:12,color:"#ff7b72",padding:"6px 10px",background:"#ff7b7218",borderRadius:4},children:R}),x&&i.jsx(iM,{proposal:x,t:a,onOpen:()=>I(!0),onDismiss:()=>C({lastProposal:void 0})}),i.jsx(sM,{value:c,onChange:d,onSend:m,onStop:g,running:E,t:a}),N&&x&&i.jsx(Rp,{cell:e,initialContent:x.sql,initialName:x.name,initialDescription:x.description,initialTags:x.tags,onClose:()=>I(!1),onSaved:({path:w,name:D})=>{I(!1),C({lastProposal:void 0}),s({type:"FILE_ADDED",file:{name:D,path:w,type:"block",folder:"blocks"}})}})]})}function nM({cell:e,provider:t,onProviderChange:n,onClear:r,t:o}){var s;return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsx("span",{style:{fontSize:10,fontFamily:o.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#f0883e",textTransform:"uppercase",padding:"2px 6px",borderRadius:3,background:"#f0883e18"},children:"Chat"}),e.name&&i.jsx("span",{style:{fontSize:12,fontFamily:o.fontMono,color:o.textSecondary},children:e.name}),i.jsx("select",{value:t,onChange:a=>n(a.target.value),title:(s=ZE.find(a=>a.id===t))==null?void 0:s.hint,style:{marginLeft:"auto",fontSize:11,fontFamily:o.fontMono,padding:"3px 6px",background:o.cellBg,color:o.textSecondary,border:`1px solid ${o.cellBorder}`,borderRadius:4},children:ZE.map(a=>i.jsx("option",{value:a.id,children:a.label},a.id))}),r&&i.jsx("button",{onClick:r,style:{fontSize:11,padding:"3px 8px",background:"transparent",color:o.textSecondary,border:`1px solid ${o.cellBorder}`,borderRadius:4,cursor:"pointer"},children:"Clear"})]})}function rM({msg:e,t}){const n=e.role==="user",r=(e.events??[]).map(o=>o.payload);return i.jsxs("div",{style:{padding:"8px 12px",borderRadius:6,background:n?`${t.accent}14`:t.cellBg,border:`1px solid ${n?`${t.accent}40`:t.cellBorder}`,fontSize:13,lineHeight:1.5,color:t.textPrimary,whiteSpace:"pre-wrap"},children:[i.jsx("div",{style:{fontSize:10,fontFamily:t.fontMono,color:t.textMuted,marginBottom:4,textTransform:"uppercase",letterSpacing:"0.08em"},children:n?"You":"Assistant"}),e.content||(r.length>0?i.jsx("em",{style:{color:t.textSecondary},children:"(tool calls only)"}):null),r.filter(o=>o.kind==="tool_call").map(o=>i.jsx(pp,{turn:o,t},`tc-${o.id}`))]})}function oM({streamingText:e,events:t,t:n}){return i.jsxs("div",{style:{padding:"8px 12px",borderRadius:6,background:n.cellBg,border:`1px solid ${n.cellBorder}`,fontSize:13,lineHeight:1.5,color:n.textPrimary,whiteSpace:"pre-wrap"},children:[i.jsxs("div",{style:{fontSize:10,fontFamily:n.fontMono,color:n.textMuted,marginBottom:4,textTransform:"uppercase",letterSpacing:"0.08em"},children:["Assistant ",i.jsx("span",{style:{color:n.accent},children:"●"})]}),e||i.jsx("em",{style:{color:n.textSecondary},children:"Thinking…"}),t.filter(r=>r.kind==="tool_call").map(r=>i.jsx(pp,{turn:r,t:n},`live-${r.id}`))]})}function pp({turn:e,t}){return e.kind!=="tool_call"?null:i.jsxs("div",{style:{marginTop:6,fontSize:11,fontFamily:t.fontMono,color:t.textSecondary,padding:"4px 8px",background:t.cellBorder,borderRadius:4,display:"inline-block"},children:["🔧 ",e.name,"(",JSON.stringify(e.input).slice(0,80),JSON.stringify(e.input).length>80?"…":"",")"]})}function sM({value:e,onChange:t,onSend:n,onStop:r,running:o,t:s}){return i.jsxs("div",{style:{display:"flex",gap:6,alignItems:"flex-end"},children:[i.jsx("textarea",{value:e,onChange:a=>t(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),n())},placeholder:"Ask for a metric or dashboard — ⌘↵ to send",rows:2,style:{flex:1,resize:"vertical",minHeight:44,padding:"8px 10px",fontSize:13,fontFamily:s.font,background:s.cellBg,color:s.textPrimary,border:`1px solid ${s.cellBorder}`,borderRadius:6}}),o?i.jsx("button",{onClick:r,style:{padding:"8px 14px",fontSize:12,background:"#ff7b7218",color:"#ff7b72",border:"1px solid #ff7b72",borderRadius:6,cursor:"pointer"},children:"Stop"}):i.jsx("button",{onClick:n,disabled:!e.trim(),style:{padding:"8px 14px",fontSize:12,background:e.trim()?`${s.accent}28`:"transparent",color:e.trim()?s.accent:s.textMuted,border:`1px solid ${e.trim()?s.accent:s.cellBorder}`,borderRadius:6,cursor:e.trim()?"pointer":"not-allowed"},children:"Send"})]})}function iM({proposal:e,t,onOpen:n,onDismiss:r}){const o=[{id:"has-name",label:"Name",passed:!!e.name,severity:"error"},{id:"has-description",label:"Description",passed:!!e.description,severity:"error"},{id:"has-owner",label:"Owner",passed:!!e.owner,severity:"error"},{id:"has-domain",label:"Domain",passed:!!e.domain,severity:"error"},{id:"has-sql",label:"SQL",passed:!!e.sql,severity:"error"}];return i.jsxs("div",{style:{border:`1px solid ${e.certified?"#3fb950":t.cellBorder}`,borderLeft:`3px solid ${e.certified?"#3fb950":"#f0883e"}`,borderRadius:6,padding:"10px 12px",background:e.certified?"#3fb95010":"#f0883e10",display:"flex",flexDirection:"column",gap:8},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsx("span",{style:{fontSize:10,fontFamily:t.fontMono,fontWeight:700,letterSpacing:"0.08em",color:e.certified?"#3fb950":"#f0883e",textTransform:"uppercase"},children:"Block Proposal"}),i.jsx("span",{style:{fontSize:13,fontFamily:t.fontMono,color:t.textPrimary},children:e.name}),e.domain&&i.jsxs("span",{style:{fontSize:11,color:t.textSecondary},children:["· ",e.domain]}),i.jsx("button",{onClick:r,style:{marginLeft:"auto",fontSize:11,padding:"2px 6px",background:"transparent",color:t.textMuted,border:"none",cursor:"pointer"},children:"✕"})]}),i.jsx("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:o.map(s=>i.jsxs("span",{style:{fontSize:10,fontFamily:t.fontMono,padding:"2px 6px",borderRadius:3,background:s.passed?"#3fb95020":"#ff7b7220",color:s.passed?"#3fb950":"#ff7b72",border:`1px solid ${s.passed?"#3fb95040":"#ff7b7240"}`},children:[s.passed?"✓":"✕"," ",s.label]},s.id))}),e.description&&i.jsx("div",{style:{fontSize:12,color:t.textSecondary},children:e.description}),i.jsx("div",{children:i.jsx("button",{onClick:n,style:{padding:"6px 12px",fontSize:12,background:`${t.accent}28`,color:t.accent,border:`1px solid ${t.accent}`,borderRadius:4,cursor:"pointer"},children:"Review & Save as Block"})})]})}const aM=[{id:"select-all",label:"Select all rows",description:"Read all rows from a CSV file with a row limit",category:"SQL",code:"SELECT * FROM read_csv_auto('data/filename.csv') LIMIT 100"},{id:"group-by",label:"Group and aggregate",description:"Group rows and compute count + sum",category:"SQL",code:`SELECT
618
- category,
619
- COUNT(*) AS count,
620
- SUM(amount) AS total
621
- FROM read_csv_auto('data/filename.csv')
622
- GROUP BY category
623
- ORDER BY total DESC`},{id:"filter-date",label:"Filter by date range",description:"Filter rows between two dates",category:"SQL",code:`SELECT *
624
- FROM read_csv_auto('data/filename.csv')
625
- WHERE date_column >= '2024-01-01'
626
- AND date_column < '2025-01-01'`},{id:"window-rank",label:"Window function: rank",description:"Rank rows within groups using ROW_NUMBER()",category:"SQL",code:`SELECT
627
- *,
628
- ROW_NUMBER() OVER (PARTITION BY category ORDER BY amount DESC) AS rank
629
- FROM read_csv_auto('data/filename.csv')`},{id:"cte",label:"CTE (WITH clause)",description:"Define a named subquery with WITH",category:"SQL",code:`WITH base AS (
630
- SELECT *
631
- FROM read_csv_auto('data/filename.csv')
632
- WHERE amount > 0
633
- )
634
- SELECT
635
- category,
636
- SUM(amount) AS total
637
- FROM base
638
- GROUP BY category`},{id:"join",label:"Join two tables",description:"Join two CSV files on a shared key",category:"SQL",code:`SELECT a.*, b.name
639
- FROM read_csv_auto('data/table_a.csv') AS a
640
- JOIN read_csv_auto('data/table_b.csv') AS b
641
- ON a.id = b.id`},{id:"pivot",label:"Pivot / unpivot",description:"Pivot a column into multiple columns",category:"SQL",code:`SELECT *
642
- FROM (
643
- SELECT category, quarter, amount
644
- FROM read_csv_auto('data/filename.csv')
645
- ) PIVOT (SUM(amount) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))`},{id:"dql-block",label:"DQL block (basic)",description:"Minimal DQL block with a table visualization",category:"DQL",code:`block "My Block" {
646
- domain = "analytics"
647
- type = "custom"
648
- description = "Describe what this block does"
649
- owner = "data-team"
650
- tags = ["analytics"]
651
-
652
- query = """
653
- SELECT *
654
- FROM read_csv_auto('data/filename.csv')
655
- LIMIT 100
656
- """
657
-
658
- visualization {
659
- chart = "table"
660
- }
661
- }`},{id:"dql-block-bar",label:"DQL block with bar chart",description:"DQL block with params, bar chart, and a test assertion",category:"DQL",code:`block "Revenue by Segment" {
662
- domain = "revenue"
663
- type = "custom"
664
- description = "Revenue grouped by segment"
665
- owner = "data-team"
666
- tags = ["revenue"]
667
-
668
- params {
669
- period = "current_quarter"
670
- }
671
-
672
- query = """
673
- SELECT
674
- segment_tier AS segment,
675
- SUM(amount) AS revenue
676
- FROM read_csv_auto('data/revenue.csv')
677
- WHERE fiscal_period = \${period}
678
- GROUP BY segment_tier
679
- ORDER BY revenue DESC
680
- """
681
-
682
- visualization {
683
- chart = "bar"
684
- x = segment
685
- y = revenue
686
- }
687
-
688
- tests {
689
- assert row_count > 0
690
- }
691
- }`},{id:"dql-semantic-metric",label:"Semantic metric reference",description:"Reference a metric and dimension from the semantic layer in a SQL cell",category:"DQL",code:`SELECT @dim(segment), @metric(total_revenue)
692
- FROM fct_revenue
693
- GROUP BY @dim(segment)
694
- ORDER BY @metric(total_revenue) DESC`},{id:"dql-semantic-block",label:"Semantic block (inline)",description:"DQL block that references a named metric from the semantic layer — no SQL duplication",category:"DQL",code:`block "ARR by Plan Tier" {
695
- domain = "revenue"
696
- type = "semantic"
697
- owner = "data-team"
698
- description = "Annual Recurring Revenue by subscription plan tier"
699
- tags = ["arr", "revenue", "saas"]
700
-
701
- metric = "arr"
702
- dimensions = ["plan_tier"]
703
-
704
- visualization {
705
- chart = "bar"
706
- x = plan_tier
707
- y = arr
708
- }
709
-
710
- tests {
711
- assert row_count > 0
712
- }
713
- }`},{id:"revenue-by-segment",label:"Revenue by segment",description:"Aggregate revenue totals, deal count, and average deal size per segment",category:"Analysis",code:`SELECT
714
- segment_tier,
715
- SUM(amount) AS total_revenue,
716
- COUNT(*) AS deals,
717
- ROUND(AVG(amount), 0) AS avg_deal
718
- FROM read_csv_auto('data/revenue.csv')
719
- GROUP BY segment_tier
720
- ORDER BY total_revenue DESC`},{id:"quarterly-trend",label:"Quarterly trend",description:"Revenue totals grouped by fiscal year and quarter",category:"Analysis",code:`SELECT
721
- fiscal_year || ' ' || fiscal_quarter AS period,
722
- SUM(amount) AS revenue
723
- FROM read_csv_auto('data/revenue.csv')
724
- GROUP BY fiscal_year, fiscal_quarter
725
- ORDER BY fiscal_year, fiscal_quarter`}];function lM({onInsert:e,themeMode:t,cellType:n}){const r=ie[t],[o,s]=S.useState(!1),[a,l]=S.useState(null),c=S.useRef(null),d=aM.filter(T=>n==="dql"?T.category==="DQL":T.category==="SQL"||T.category==="Analysis"),E=Array.from(new Set(d.map(T=>T.category)));S.useEffect(()=>{if(!o)return;function T(f){c.current&&!c.current.contains(f.target)&&s(!1)}return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[o]);function u(T){e(T),s(!1)}return i.jsxs("div",{ref:c,style:{position:"relative",display:"inline-block"},children:[i.jsxs("button",{title:"Insert template snippet",onClick:()=>s(T=>!T),style:{height:22,padding:"0 8px",fontSize:10,fontFamily:r.font,fontWeight:600,letterSpacing:"0.04em",color:o?r.accent:r.textMuted,background:o?`${r.accent}15`:"transparent",border:`1px solid ${o?r.accent+"50":r.btnBorder}`,borderRadius:4,cursor:"pointer",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s",whiteSpace:"nowrap"},children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"})}),"Templates"]}),o&&i.jsx("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,zIndex:300,width:300,maxHeight:360,overflowY:"auto",background:r.modalBg,border:`1px solid ${r.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:"6px 0"},children:E.map(T=>i.jsxs("div",{children:[i.jsx("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:700,fontFamily:r.font,letterSpacing:"0.08em",textTransform:"uppercase",color:r.textMuted},children:T}),d.filter(f=>f.category===T).map(f=>i.jsxs("button",{onMouseEnter:()=>l(f.id),onMouseLeave:()=>l(null),onClick:()=>u(f.code),style:{width:"100%",padding:"7px 12px",textAlign:"left",background:a===f.id?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",display:"flex",flexDirection:"column",gap:2,transition:"background 0.1s"},children:[i.jsx("span",{style:{fontSize:12,fontWeight:600,fontFamily:r.font,color:r.textPrimary,lineHeight:1.4},children:f.label}),i.jsx("span",{style:{fontSize:11,fontFamily:r.font,color:r.textMuted,lineHeight:1.4},children:f.description})]},f.id))]},T))})]})}function cM(e,t){var o,s,a,l;const n=e.upstream??((o=e.singleValueConfig)==null?void 0:o.upstream)??((s=e.filterConfig)==null?void 0:s.upstream)??((a=e.pivotConfig)==null?void 0:a.upstream)??((l=e.tableConfig)==null?void 0:l.upstream);if(!n)return null;const r=t.find(c=>c.name===n&&(c.type==="sql"||c.type==="dql"));return!r||!r.content.trim()?null:{name:r.name,sql:r.content.trim()}}function dM(e){if(!e||!e.chart)return"";const t=[`chart = "${e.chart}"`];return e.x&&t.push(`x = ${e.x}`),e.y&&t.push(`y = ${e.y}`),e.color&&t.push(`color = ${e.color}`),e.facet&&t.push(`facet = ${e.facet}`),`
726
- visualization {
727
- ${t.join(`
728
- `)}
729
- }`}function EM(e){if(!e)return"";const t=['chart = "kpi"'];return e.metric&&t.push(`y = ${e.metric}`),e.format&&t.push(`format = "${e.format}"`),e.label&&t.push(`label = "${e.label.replace(/"/g,'\\"')}"`),`
730
- visualization {
731
- ${t.join(`
732
- `)}
733
- }`}function uM(e,t){return` query = """
734
- ${e.replace(/^/gm," ")}
735
- """${t}`}function TM(e,t){var a,l,c,d;if(e.type==="sql"||e.type==="dql")return{content:e.content,suggestedName:e.name,derivedFromUpstream:!1,blocker:e.content.trim()?void 0:"Cell is empty — add a SQL query first."};if(e.type==="markdown"||e.type==="param"||e.type==="map"||e.type==="writeback"||e.type==="python")return{content:"",derivedFromUpstream:!1,blocker:`${e.type} cells cannot be promoted to blocks yet.`};const n=cM(e,t);if(!n)return{content:"",derivedFromUpstream:!0,blocker:"No upstream SQL cell is wired — pick an upstream dataframe before saving as a block."};let r="",o,s;switch(e.type){case"chart":r=dM(e.chartConfig),o=e.name??(n.name?`${n.name}_chart`:"chart_block"),s=((a=e.chartConfig)==null?void 0:a.title)??((l=e.chartConfig)!=null&&l.chart?`${e.chartConfig.chart} of ${n.name??"upstream"}`:void 0);break;case"single_value":r=EM(e.singleValueConfig),o=e.name??((c=e.singleValueConfig)!=null&&c.label?e.singleValueConfig.label:`${n.name??"metric"}_kpi`),s=(d=e.singleValueConfig)==null?void 0:d.label;break;case"filter":case"pivot":case"table":o=e.name??(n.name?`${n.name}_${e.type}`:`${e.type}_block`);break}return{content:uM(n.sql,r),suggestedName:o,suggestedDescription:s,derivedFromUpstream:!0}}function fM(e){let t=e;try{const d=JSON.parse(e);d&&typeof d.error=="string"&&(t=d.error)}catch{}t=t.replace(/^DuckDB query failed:\s*/i,"").trim();let n="Error";/Parser Error/i.test(t)?n="Syntax Error":/Binder Error/i.test(t)?n="Reference Error":/Conversion Error/i.test(t)?n="Type Error":/Invalid Input Error/i.test(t)?n="Input Error":/IO Error/i.test(t)?n="File Error":/Constraint Error/i.test(t)&&(n="Constraint Error");let r;const o=t.match(/LINE\s+(\d+):/i)??t.match(/\bline\s+(\d+)\b/i);o&&(r=parseInt(o[1],10));let s;const a=t.match(/at or near "([^"]+)"/i);a?s=a[1]:/at end of input/i.test(t)&&(s="end of input");let l;n==="Syntax Error"?s==='"""'||t.includes('"""')?l="Triple-quoted strings are DQL block syntax. Use a DQL cell for block syntax, or plain SQL in a SQL cell.":s==="end of input"||/at end of input/i.test(t)?l="Query is incomplete — check for unclosed parentheses, missing keywords, or a dangling comma.":(s===")"||s==="(")&&(l="Mismatched parentheses — check that every opening ( has a closing )."):n==="Reference Error"?/column.*not found|Referenced column/i.test(t)?l="Column not found — check the column name in the Schema panel (left sidebar).":/table.*not found|Table.*does not exist/i.test(t)&&(l="Table not found — make sure the file path is correct and the file exists in your data/ folder."):n==="Input Error"?/No files found/i.test(t)&&(l="File not found — use read_csv_auto('./data/filename.csv'). Open the Schema panel (left sidebar) to see all files available in your data/ folder."):n==="File Error"?l="File could not be read — use read_csv_auto('./data/filename.csv'). Open the Schema panel to browse available data files.":n==="Type Error"&&(l="Type mismatch — you may be comparing or casting incompatible types (e.g. text vs number).");const c=t.replace(/^(Parser Error|Binder Error|Conversion Error|Invalid Input Error|IO Error|Constraint Error):\s*/i,"").trim();return{type:n,message:c,line:r,near:s,hint:l}}function SM(e,t){const n=e.length,r=t.length,o=Array.from({length:n+1},(s,a)=>Array.from({length:r+1},(l,c)=>a===0?c:c===0?a:0));for(let s=1;s<=n;s++)for(let a=1;a<=r;a++)o[s][a]=e[s-1]===t[a-1]?o[s-1][a-1]:1+Math.min(o[s-1][a],o[s][a-1],o[s-1][a-1]);return o[n][r]}function tu(e,t){const n=e.toLowerCase();let r=null,o=4;for(const s of t){const a=SM(n,s.toLowerCase());a<o&&(o=a,r=s)}return r}function RM({message:e,themeMode:t,onFix:n,schemaTables:r}){const o=ie[t],s=fM(e);let a=null;if(r&&r.length>0&&s.type==="Reference Error"){const c=/column.*not found|Referenced column/i.test(s.message),d=/table.*not found|Table.*does not exist/i.test(s.message);if(c&&s.near){const E=r.flatMap(T=>T.columns.map(f=>f.name)),u=tu(s.near,E);u&&(a=`Did you mean column "${u}"?`)}else if(d&&s.near){const E=tu(s.near,r.map(u=>u.name));E&&(a=`Did you mean table "${E}"?`)}}const l=n&&(s.type==="Syntax Error"||s.near===")"||s.near==="("||s.near==="end of input");return i.jsxs("div",{style:{padding:"12px 14px",background:`${o.error}10`,borderLeft:`3px solid ${o.error}`,display:"flex",flexDirection:"column",gap:8},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[i.jsx("div",{style:{flexShrink:0,color:o.error,display:"flex",alignItems:"center"},children:i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"})})}),i.jsx("span",{style:{fontSize:10,fontWeight:700,fontFamily:o.fontMono,letterSpacing:"0.06em",textTransform:"uppercase",color:o.error,background:`${o.error}18`,border:`1px solid ${o.error}40`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:s.type}),s.line!==void 0&&i.jsxs("span",{style:{fontSize:10,fontWeight:600,fontFamily:o.fontMono,color:o.textSecondary,background:`${o.textMuted}18`,border:`1px solid ${o.textMuted}30`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:["Line ",s.line]}),s.near&&i.jsxs("span",{style:{fontSize:11,fontFamily:o.fontMono,color:o.textSecondary,flexShrink:0},children:["near ",i.jsxs("span",{style:{color:o.error},children:["“",s.near,"”"]})]})]}),i.jsx("pre",{style:{margin:0,fontFamily:o.fontMono,fontSize:12,color:o.error,lineHeight:1.6,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:s.message}),a&&i.jsxs("div",{style:{fontSize:12,fontFamily:o.font,color:o.textSecondary,display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:{color:o.accent},children:"→"}),a]}),s.hint&&i.jsxs("div",{style:{marginTop:2,padding:"8px 12px",background:`${o.warning}12`,border:`1px solid ${o.warning}40`,borderRadius:6,display:"flex",alignItems:"flex-start",gap:8},children:[i.jsx("span",{style:{flexShrink:0,fontSize:13,lineHeight:1.5},children:"💡"}),i.jsx("span",{style:{fontSize:12,fontFamily:o.font,color:o.warning,lineHeight:1.6},children:s.hint})]}),l&&i.jsxs("button",{onClick:n,style:{alignSelf:"flex-start",marginTop:2,padding:"5px 12px",background:`${o.accent}15`,border:`1px solid ${o.accent}50`,borderRadius:6,color:o.accent,fontSize:12,fontFamily:o.font,fontWeight:500,cursor:"pointer",display:"flex",alignItems:"center",gap:6,transition:"all 0.15s"},onMouseEnter:c=>{c.currentTarget.style.background=`${o.accent}25`},onMouseLeave:c=>{c.currentTarget.style.background=`${o.accent}15`},children:[i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})}),"Format & Run"]})]})}function nc({path:e,onNodeClick:t,focalNodeId:n,t:r}){return e.nodes.length===0?null:i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignItems:"center"},children:e.nodes.map((o,s)=>i.jsxs(ye.Fragment,{children:[i.jsx(pM,{node:o,isFocal:o.id===n,onClick:t?()=>t(o.id):void 0,t:r}),s<e.nodes.length-1&&i.jsx("span",{style:{color:r.textMuted,fontSize:10,lineHeight:1},children:"→"})]},o.id))})}function nu({title:e,paths:t,onNodeClick:n,focalNodeId:r,maxVisible:o=4,t:s}){const[a,l]=ye.useState(!1),c=a?t:t.slice(0,o),d=t.length>o;return t.length===0?null:i.jsxs("div",{style:{border:`1px solid ${s.cellBorder}`,borderRadius:10,overflow:"hidden",background:s.inputBg},children:[i.jsxs("div",{style:{padding:"8px 12px",borderBottom:`1px solid ${s.cellBorder}`,fontSize:11,fontWeight:700,color:s.textMuted,fontFamily:s.font,textTransform:"uppercase",letterSpacing:"0.04em",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[i.jsx("span",{children:e}),i.jsxs("span",{style:{fontWeight:400,fontSize:10},children:[t.length," path",t.length!==1?"s":""]})]}),i.jsxs("div",{style:{display:"grid",gap:8,padding:10},children:[c.map((E,u)=>i.jsx(nc,{path:E,onNodeClick:n,focalNodeId:r,t:s},`path-${u}`)),d&&!a&&i.jsxs("button",{onClick:()=>l(!0),style:{background:"none",border:"none",color:s.accent,cursor:"pointer",fontSize:11,fontFamily:s.font,padding:"2px 0",textAlign:"left"},children:["Show ",t.length-o," more path",t.length-o!==1?"s":"","..."]})]})]})}function pM({node:e,isFocal:t,onClick:n,t:r}){const o=Be[e.type]??"#8b949e",s=Fi[e.type]??e.type.slice(0,3).toUpperCase();return i.jsxs("button",{onClick:n,disabled:!n,style:{display:"inline-flex",alignItems:"center",gap:4,background:t?`${o}18`:r.pillBg??`${r.cellBg}`,border:`1px solid ${t?o:r.cellBorder}`,borderRadius:999,color:r.textPrimary,cursor:n?"pointer":"default",fontSize:10,fontFamily:r.font,padding:"3px 8px",transition:"border-color 0.15s",whiteSpace:"nowrap",maxWidth:180},title:`${e.type}: ${e.name}${e.domain?` (${e.domain})`:""}`,children:[i.jsx("span",{style:{fontSize:8,fontWeight:700,color:"#0d1117",background:o,borderRadius:3,padding:"1px 3px",flexShrink:0},children:s}),i.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]})}function AM({layerSummary:e,t}){const n=["source","transform","answer","consumption"];if(Object.values(e).reduce((a,l)=>a+l,0)===0)return null;const o={source:"#79c0ff",transform:"#ff7b72",answer:"#56d364",consumption:"#d2a8ff"},s={source:"Sources",transform:"Transform",answer:"Answer",consumption:"Consumption"};return i.jsx("div",{style:{display:"flex",gap:10,fontSize:10,color:t.textMuted,fontFamily:t.font},children:n.map(a=>{const l=e[a]??0;return l===0?null:i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[i.jsx("span",{style:{width:8,height:8,borderRadius:2,background:o[a],display:"inline-block"}}),s[a],": ",l]},a)})})}function Me(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=Me(e[n]))!==""&&(t+=(t&&" ")+r);else for(let n in e)e[n]&&(t+=(t&&" ")+n);return t}var hM={value:()=>{}};function $i(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new Us(n)}function Us(e){this._=e}function IM(e,t){return e.trim().split(/^|\s+/).map(function(n){var r="",o=n.indexOf(".");if(o>=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}Us.prototype=$i.prototype={constructor:Us,on:function(e,t){var n=this._,r=IM(e+"",n),o,s=-1,a=r.length;if(arguments.length<2){for(;++s<a;)if((o=(e=r[s]).type)&&(o=NM(n[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++s<a;)if(o=(e=r[s]).type)n[o]=ru(n[o],e.name,t);else if(t==null)for(o in n)n[o]=ru(n[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Us(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var n=new Array(o),r=0,o,s;r<o;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(s=this._[e],r=0,o=s.length;r<o;++r)s[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var r=this._[e],o=0,s=r.length;o<s;++o)r[o].value.apply(t,n)}};function NM(e,t){for(var n=0,r=e.length,o;n<r;++n)if((o=e[n]).name===t)return o.value}function ru(e,t,n){for(var r=0,o=e.length;r<o;++r)if(e[r].name===t){e[r]=hM,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var rc="http://www.w3.org/1999/xhtml";const ou={svg:"http://www.w3.org/2000/svg",xhtml:rc,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Xi(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),ou.hasOwnProperty(t)?{space:ou[t],local:e}:e}function OM(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===rc&&t.documentElement.namespaceURI===rc?t.createElement(e):t.createElementNS(n,e)}}function mM(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Ap(e){var t=Xi(e);return(t.local?mM:OM)(t)}function gM(){}function ad(e){return e==null?gM:function(){return this.querySelector(e)}}function CM(e){typeof e!="function"&&(e=ad(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],a=s.length,l=r[o]=new Array(a),c,d,E=0;E<a;++E)(c=s[E])&&(d=e.call(c,c.__data__,E,s))&&("__data__"in c&&(d.__data__=c.__data__),l[E]=d);return new Qe(r,this._parents)}function xM(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function LM(){return[]}function hp(e){return e==null?LM:function(){return this.querySelectorAll(e)}}function yM(e){return function(){return xM(e.apply(this,arguments))}}function _M(e){typeof e=="function"?e=yM(e):e=hp(e);for(var t=this._groups,n=t.length,r=[],o=[],s=0;s<n;++s)for(var a=t[s],l=a.length,c,d=0;d<l;++d)(c=a[d])&&(r.push(e.call(c,c.__data__,d,a)),o.push(c));return new Qe(r,o)}function Ip(e){return function(){return this.matches(e)}}function Np(e){return function(t){return t.matches(e)}}var DM=Array.prototype.find;function MM(e){return function(){return DM.call(this.children,e)}}function bM(){return this.firstElementChild}function PM(e){return this.select(e==null?bM:MM(typeof e=="function"?e:Np(e)))}var vM=Array.prototype.filter;function UM(){return Array.from(this.children)}function wM(e){return function(){return vM.call(this.children,e)}}function BM(e){return this.selectAll(e==null?UM:wM(typeof e=="function"?e:Np(e)))}function FM(e){typeof e!="function"&&(e=Ip(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],a=s.length,l=r[o]=[],c,d=0;d<a;++d)(c=s[d])&&e.call(c,c.__data__,d,s)&&l.push(c);return new Qe(r,this._parents)}function Op(e){return new Array(e.length)}function GM(){return new Qe(this._enter||this._groups.map(Op),this._parents)}function si(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}si.prototype={constructor:si,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function HM(e){return function(){return e}}function kM(e,t,n,r,o,s){for(var a=0,l,c=t.length,d=s.length;a<d;++a)(l=t[a])?(l.__data__=s[a],r[a]=l):n[a]=new si(e,s[a]);for(;a<c;++a)(l=t[a])&&(o[a]=l)}function jM(e,t,n,r,o,s,a){var l,c,d=new Map,E=t.length,u=s.length,T=new Array(E),f;for(l=0;l<E;++l)(c=t[l])&&(T[l]=f=a.call(c,c.__data__,l,t)+"",d.has(f)?o[l]=c:d.set(f,c));for(l=0;l<u;++l)f=a.call(e,s[l],l,s)+"",(c=d.get(f))?(r[l]=c,c.__data__=s[l],d.delete(f)):n[l]=new si(e,s[l]);for(l=0;l<E;++l)(c=t[l])&&d.get(T[l])===c&&(o[l]=c)}function YM(e){return e.__data__}function WM(e,t){if(!arguments.length)return Array.from(this,YM);var n=t?jM:kM,r=this._parents,o=this._groups;typeof e!="function"&&(e=HM(e));for(var s=o.length,a=new Array(s),l=new Array(s),c=new Array(s),d=0;d<s;++d){var E=r[d],u=o[d],T=u.length,f=VM(e.call(E,E&&E.__data__,d,r)),h=f.length,A=l[d]=new Array(h),R=a[d]=new Array(h),p=c[d]=new Array(T);n(E,u,A,R,p,f,t);for(var N=0,I=0,O,C;N<h;++N)if(O=A[N]){for(N>=I&&(I=N+1);!(C=R[I])&&++I<h;);O._next=C||null}}return a=new Qe(a,r),a._enter=l,a._exit=c,a}function VM(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function $M(){return new Qe(this._exit||this._groups.map(Op),this._parents)}function XM(e,t,n){var r=this.enter(),o=this,s=this.exit();return typeof e=="function"?(r=e(r),r&&(r=r.selection())):r=r.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),n==null?s.remove():n(s),r&&o?r.merge(o).order():o}function KM(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,o=n.length,s=r.length,a=Math.min(o,s),l=new Array(o),c=0;c<a;++c)for(var d=n[c],E=r[c],u=d.length,T=l[c]=new Array(u),f,h=0;h<u;++h)(f=d[h]||E[h])&&(T[h]=f);for(;c<o;++c)l[c]=n[c];return new Qe(l,this._parents)}function zM(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],o=r.length-1,s=r[o],a;--o>=0;)(a=r[o])&&(s&&a.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(a,s),s=a);return this}function JM(e){e||(e=qM);function t(u,T){return u&&T?e(u.__data__,T.__data__):!u-!T}for(var n=this._groups,r=n.length,o=new Array(r),s=0;s<r;++s){for(var a=n[s],l=a.length,c=o[s]=new Array(l),d,E=0;E<l;++E)(d=a[E])&&(c[E]=d);c.sort(t)}return new Qe(o,this._parents).order()}function qM(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function QM(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ZM(){return Array.from(this)}function eb(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],o=0,s=r.length;o<s;++o){var a=r[o];if(a)return a}return null}function tb(){let e=0;for(const t of this)++e;return e}function nb(){return!this.node()}function rb(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var o=t[n],s=0,a=o.length,l;s<a;++s)(l=o[s])&&e.call(l,l.__data__,s,o);return this}function ob(e){return function(){this.removeAttribute(e)}}function sb(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ib(e,t){return function(){this.setAttribute(e,t)}}function ab(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function lb(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function cb(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function db(e,t){var n=Xi(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?sb:ob:typeof t=="function"?n.local?cb:lb:n.local?ab:ib)(n,t))}function mp(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Eb(e){return function(){this.style.removeProperty(e)}}function ub(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Tb(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function fb(e,t,n){return arguments.length>1?this.each((t==null?Eb:typeof t=="function"?Tb:ub)(e,t,n??"")):Tr(this.node(),e)}function Tr(e,t){return e.style.getPropertyValue(t)||mp(e).getComputedStyle(e,null).getPropertyValue(t)}function Sb(e){return function(){delete this[e]}}function Rb(e,t){return function(){this[e]=t}}function pb(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Ab(e,t){return arguments.length>1?this.each((t==null?Sb:typeof t=="function"?pb:Rb)(e,t)):this.node()[e]}function gp(e){return e.trim().split(/^|\s+/)}function ld(e){return e.classList||new Cp(e)}function Cp(e){this._node=e,this._names=gp(e.getAttribute("class")||"")}Cp.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function xp(e,t){for(var n=ld(e),r=-1,o=t.length;++r<o;)n.add(t[r])}function Lp(e,t){for(var n=ld(e),r=-1,o=t.length;++r<o;)n.remove(t[r])}function hb(e){return function(){xp(this,e)}}function Ib(e){return function(){Lp(this,e)}}function Nb(e,t){return function(){(t.apply(this,arguments)?xp:Lp)(this,e)}}function Ob(e,t){var n=gp(e+"");if(arguments.length<2){for(var r=ld(this.node()),o=-1,s=n.length;++o<s;)if(!r.contains(n[o]))return!1;return!0}return this.each((typeof t=="function"?Nb:t?hb:Ib)(n,t))}function mb(){this.textContent=""}function gb(e){return function(){this.textContent=e}}function Cb(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function xb(e){return arguments.length?this.each(e==null?mb:(typeof e=="function"?Cb:gb)(e)):this.node().textContent}function Lb(){this.innerHTML=""}function yb(e){return function(){this.innerHTML=e}}function _b(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function Db(e){return arguments.length?this.each(e==null?Lb:(typeof e=="function"?_b:yb)(e)):this.node().innerHTML}function Mb(){this.nextSibling&&this.parentNode.appendChild(this)}function bb(){return this.each(Mb)}function Pb(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function vb(){return this.each(Pb)}function Ub(e){var t=typeof e=="function"?e:Ap(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function wb(){return null}function Bb(e,t){var n=typeof e=="function"?e:Ap(e),r=t==null?wb:typeof t=="function"?t:ad(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Fb(){var e=this.parentNode;e&&e.removeChild(this)}function Gb(){return this.each(Fb)}function Hb(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function kb(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function jb(e){return this.select(e?kb:Hb)}function Yb(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Wb(e){return function(t){e.call(this,t,this.__data__)}}function Vb(e){return e.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function $b(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,s;n<o;++n)s=t[n],(!e.type||s.type===e.type)&&s.name===e.name?this.removeEventListener(s.type,s.listener,s.options):t[++r]=s;++r?t.length=r:delete this.__on}}}function Xb(e,t,n){return function(){var r=this.__on,o,s=Wb(t);if(r){for(var a=0,l=r.length;a<l;++a)if((o=r[a]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=s,o.options=n),o.value=t;return}}this.addEventListener(e.type,s,n),o={type:e.type,name:e.name,value:t,listener:s,options:n},r?r.push(o):this.__on=[o]}}function Kb(e,t,n){var r=Vb(e+""),o,s=r.length,a;if(arguments.length<2){var l=this.node().__on;if(l){for(var c=0,d=l.length,E;c<d;++c)for(o=0,E=l[c];o<s;++o)if((a=r[o]).type===E.type&&a.name===E.name)return E.value}return}for(l=t?Xb:$b,o=0;o<s;++o)this.each(l(r[o],t,n));return this}function yp(e,t,n){var r=mp(e),o=r.CustomEvent;typeof o=="function"?o=new o(t,n):(o=r.document.createEvent("Event"),n?(o.initEvent(t,n.bubbles,n.cancelable),o.detail=n.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function zb(e,t){return function(){return yp(this,e,t)}}function Jb(e,t){return function(){return yp(this,e,t.apply(this,arguments))}}function qb(e,t){return this.each((typeof t=="function"?Jb:zb)(e,t))}function*Qb(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],o=0,s=r.length,a;o<s;++o)(a=r[o])&&(yield a)}var _p=[null];function Qe(e,t){this._groups=e,this._parents=t}function Do(){return new Qe([[document.documentElement]],_p)}function Zb(){return this}Qe.prototype=Do.prototype={constructor:Qe,select:CM,selectAll:_M,selectChild:PM,selectChildren:BM,filter:FM,data:WM,enter:GM,exit:$M,join:XM,merge:KM,selection:Zb,order:zM,sort:JM,call:QM,nodes:ZM,node:eb,size:tb,empty:nb,each:rb,attr:db,style:fb,property:Ab,classed:Ob,text:xb,html:Db,raise:bb,lower:vb,append:Ub,insert:Bb,remove:Gb,clone:jb,datum:Yb,on:Kb,dispatch:qb,[Symbol.iterator]:Qb};function Je(e){return typeof e=="string"?new Qe([[document.querySelector(e)]],[document.documentElement]):new Qe([[e]],_p)}function e1(e){let t;for(;t=e.sourceEvent;)e=t;return e}function at(e,t){if(e=e1(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var o=t.getBoundingClientRect();return[e.clientX-o.left-t.clientLeft,e.clientY-o.top-t.clientTop]}}return[e.pageX,e.pageY]}const t1={passive:!1},co={capture:!0,passive:!1};function Va(e){e.stopImmediatePropagation()}function ir(e){e.preventDefault(),e.stopImmediatePropagation()}function Dp(e){var t=e.document.documentElement,n=Je(e).on("dragstart.drag",ir,co);"onselectstart"in t?n.on("selectstart.drag",ir,co):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function Mp(e,t){var n=e.document.documentElement,r=Je(e).on("dragstart.drag",null);t&&(r.on("click.drag",ir,co),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const ps=e=>()=>e;function oc(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:s,x:a,y:l,dx:c,dy:d,dispatch:E}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:E}})}oc.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function n1(e){return!e.ctrlKey&&!e.button}function r1(){return this.parentNode}function o1(e,t){return t??{x:e.x,y:e.y}}function s1(){return navigator.maxTouchPoints||"ontouchstart"in this}function bp(){var e=n1,t=r1,n=o1,r=s1,o={},s=$i("start","drag","end"),a=0,l,c,d,E,u=0;function T(O){O.on("mousedown.drag",f).filter(r).on("touchstart.drag",R).on("touchmove.drag",p,t1).on("touchend.drag touchcancel.drag",N).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(O,C){if(!(E||!e.call(this,O,C))){var m=I(this,t.call(this,O,C),O,C,"mouse");m&&(Je(O.view).on("mousemove.drag",h,co).on("mouseup.drag",A,co),Dp(O.view),Va(O),d=!1,l=O.clientX,c=O.clientY,m("start",O))}}function h(O){if(ir(O),!d){var C=O.clientX-l,m=O.clientY-c;d=C*C+m*m>u}o.mouse("drag",O)}function A(O){Je(O.view).on("mousemove.drag mouseup.drag",null),Mp(O.view,d),ir(O),o.mouse("end",O)}function R(O,C){if(e.call(this,O,C)){var m=O.changedTouches,g=t.call(this,O,C),y=m.length,x,w;for(x=0;x<y;++x)(w=I(this,g,O,C,m[x].identifier,m[x]))&&(Va(O),w("start",O,m[x]))}}function p(O){var C=O.changedTouches,m=C.length,g,y;for(g=0;g<m;++g)(y=o[C[g].identifier])&&(ir(O),y("drag",O,C[g]))}function N(O){var C=O.changedTouches,m=C.length,g,y;for(E&&clearTimeout(E),E=setTimeout(function(){E=null},500),g=0;g<m;++g)(y=o[C[g].identifier])&&(Va(O),y("end",O,C[g]))}function I(O,C,m,g,y,x){var w=s.copy(),D=at(x||m,C),U,F,_;if((_=n.call(O,new oc("beforestart",{sourceEvent:m,target:T,identifier:y,active:a,x:D[0],y:D[1],dx:0,dy:0,dispatch:w}),g))!=null)return U=_.x-D[0]||0,F=_.y-D[1]||0,function B(b,P,M){var L=D,v;switch(b){case"start":o[y]=B,v=a++;break;case"end":delete o[y],--a;case"drag":D=at(M||P,C),v=a;break}w.call(b,O,new oc(b,{sourceEvent:P,subject:_,target:T,identifier:y,active:v,x:D[0]+U,y:D[1]+F,dx:D[0]-L[0],dy:D[1]-L[1],dispatch:w}),g)}}return T.filter=function(O){return arguments.length?(e=typeof O=="function"?O:ps(!!O),T):e},T.container=function(O){return arguments.length?(t=typeof O=="function"?O:ps(O),T):t},T.subject=function(O){return arguments.length?(n=typeof O=="function"?O:ps(O),T):n},T.touchable=function(O){return arguments.length?(r=typeof O=="function"?O:ps(!!O),T):r},T.on=function(){var O=s.on.apply(s,arguments);return O===s?T:O},T.clickDistance=function(O){return arguments.length?(u=(O=+O)*O,T):Math.sqrt(u)},T}function cd(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Pp(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Mo(){}var Eo=.7,ii=1/Eo,ar="\\s*([+-]?\\d+)\\s*",uo="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",gt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",i1=/^#([0-9a-f]{3,8})$/,a1=new RegExp(`^rgb\\(${ar},${ar},${ar}\\)$`),l1=new RegExp(`^rgb\\(${gt},${gt},${gt}\\)$`),c1=new RegExp(`^rgba\\(${ar},${ar},${ar},${uo}\\)$`),d1=new RegExp(`^rgba\\(${gt},${gt},${gt},${uo}\\)$`),E1=new RegExp(`^hsl\\(${uo},${gt},${gt}\\)$`),u1=new RegExp(`^hsla\\(${uo},${gt},${gt},${uo}\\)$`),su={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};cd(Mo,Dn,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:iu,formatHex:iu,formatHex8:T1,formatHsl:f1,formatRgb:au,toString:au});function iu(){return this.rgb().formatHex()}function T1(){return this.rgb().formatHex8()}function f1(){return vp(this).formatHsl()}function au(){return this.rgb().formatRgb()}function Dn(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=i1.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?lu(t):n===3?new Ye(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?As(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?As(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=a1.exec(e))?new Ye(t[1],t[2],t[3],1):(t=l1.exec(e))?new Ye(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=c1.exec(e))?As(t[1],t[2],t[3],t[4]):(t=d1.exec(e))?As(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=E1.exec(e))?Eu(t[1],t[2]/100,t[3]/100,1):(t=u1.exec(e))?Eu(t[1],t[2]/100,t[3]/100,t[4]):su.hasOwnProperty(e)?lu(su[e]):e==="transparent"?new Ye(NaN,NaN,NaN,0):null}function lu(e){return new Ye(e>>16&255,e>>8&255,e&255,1)}function As(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ye(e,t,n,r)}function S1(e){return e instanceof Mo||(e=Dn(e)),e?(e=e.rgb(),new Ye(e.r,e.g,e.b,e.opacity)):new Ye}function sc(e,t,n,r){return arguments.length===1?S1(e):new Ye(e,t,n,r??1)}function Ye(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}cd(Ye,sc,Pp(Mo,{brighter(e){return e=e==null?ii:Math.pow(ii,e),new Ye(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Eo:Math.pow(Eo,e),new Ye(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ye(Cn(this.r),Cn(this.g),Cn(this.b),ai(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:cu,formatHex:cu,formatHex8:R1,formatRgb:du,toString:du}));function cu(){return`#${gn(this.r)}${gn(this.g)}${gn(this.b)}`}function R1(){return`#${gn(this.r)}${gn(this.g)}${gn(this.b)}${gn((isNaN(this.opacity)?1:this.opacity)*255)}`}function du(){const e=ai(this.opacity);return`${e===1?"rgb(":"rgba("}${Cn(this.r)}, ${Cn(this.g)}, ${Cn(this.b)}${e===1?")":`, ${e})`}`}function ai(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Cn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gn(e){return e=Cn(e),(e<16?"0":"")+e.toString(16)}function Eu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new lt(e,t,n,r)}function vp(e){if(e instanceof lt)return new lt(e.h,e.s,e.l,e.opacity);if(e instanceof Mo||(e=Dn(e)),!e)return new lt;if(e instanceof lt)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),s=Math.max(t,n,r),a=NaN,l=s-o,c=(s+o)/2;return l?(t===s?a=(n-r)/l+(n<r)*6:n===s?a=(r-t)/l+2:a=(t-n)/l+4,l/=c<.5?s+o:2-s-o,a*=60):l=c>0&&c<1?0:a,new lt(a,l,c,e.opacity)}function p1(e,t,n,r){return arguments.length===1?vp(e):new lt(e,t,n,r??1)}function lt(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}cd(lt,p1,Pp(Mo,{brighter(e){return e=e==null?ii:Math.pow(ii,e),new lt(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Eo:Math.pow(Eo,e),new lt(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new Ye($a(e>=240?e-240:e+120,o,r),$a(e,o,r),$a(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new lt(uu(this.h),hs(this.s),hs(this.l),ai(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ai(this.opacity);return`${e===1?"hsl(":"hsla("}${uu(this.h)}, ${hs(this.s)*100}%, ${hs(this.l)*100}%${e===1?")":`, ${e})`}`}}));function uu(e){return e=(e||0)%360,e<0?e+360:e}function hs(e){return Math.max(0,Math.min(1,e||0))}function $a(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const dd=e=>()=>e;function A1(e,t){return function(n){return e+n*t}}function h1(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function I1(e){return(e=+e)==1?Up:function(t,n){return n-t?h1(t,n,e):dd(isNaN(t)?n:t)}}function Up(e,t){var n=t-e;return n?A1(e,n):dd(isNaN(e)?t:e)}const li=(function e(t){var n=I1(t);function r(o,s){var a=n((o=sc(o)).r,(s=sc(s)).r),l=n(o.g,s.g),c=n(o.b,s.b),d=Up(o.opacity,s.opacity);return function(E){return o.r=a(E),o.g=l(E),o.b=c(E),o.opacity=d(E),o+""}}return r.gamma=e,r})(1);function N1(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(s){for(o=0;o<n;++o)r[o]=e[o]*(1-s)+t[o]*s;return r}}function O1(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function m1(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,o=new Array(r),s=new Array(n),a;for(a=0;a<r;++a)o[a]=zr(e[a],t[a]);for(;a<n;++a)s[a]=t[a];return function(l){for(a=0;a<r;++a)s[a]=o[a](l);return s}}function g1(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function At(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function C1(e,t){var n={},r={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?n[o]=zr(e[o],t[o]):r[o]=t[o];return function(s){for(o in n)r[o]=n[o](s);return r}}var ic=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Xa=new RegExp(ic.source,"g");function x1(e){return function(){return e}}function L1(e){return function(t){return e(t)+""}}function wp(e,t){var n=ic.lastIndex=Xa.lastIndex=0,r,o,s,a=-1,l=[],c=[];for(e=e+"",t=t+"";(r=ic.exec(e))&&(o=Xa.exec(t));)(s=o.index)>n&&(s=t.slice(n,s),l[a]?l[a]+=s:l[++a]=s),(r=r[0])===(o=o[0])?l[a]?l[a]+=o:l[++a]=o:(l[++a]=null,c.push({i:a,x:At(r,o)})),n=Xa.lastIndex;return n<t.length&&(s=t.slice(n),l[a]?l[a]+=s:l[++a]=s),l.length<2?c[0]?L1(c[0].x):x1(t):(t=c.length,function(d){for(var E=0,u;E<t;++E)l[(u=c[E]).i]=u.x(d);return l.join("")})}function zr(e,t){var n=typeof t,r;return t==null||n==="boolean"?dd(t):(n==="number"?At:n==="string"?(r=Dn(t))?(t=r,li):wp:t instanceof Dn?li:t instanceof Date?g1:O1(t)?N1:Array.isArray(t)?m1:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?C1:At)(e,t)}var Tu=180/Math.PI,ac={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Bp(e,t,n,r,o,s){var a,l,c;return(a=Math.sqrt(e*e+t*t))&&(e/=a,t/=a),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(l=Math.sqrt(n*n+r*r))&&(n/=l,r/=l,c/=l),e*r<t*n&&(e=-e,t=-t,c=-c,a=-a),{translateX:o,translateY:s,rotate:Math.atan2(t,e)*Tu,skewX:Math.atan(c)*Tu,scaleX:a,scaleY:l}}var Is;function y1(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?ac:Bp(t.a,t.b,t.c,t.d,t.e,t.f)}function _1(e){return e==null||(Is||(Is=document.createElementNS("http://www.w3.org/2000/svg","g")),Is.setAttribute("transform",e),!(e=Is.transform.baseVal.consolidate()))?ac:(e=e.matrix,Bp(e.a,e.b,e.c,e.d,e.e,e.f))}function Fp(e,t,n,r){function o(d){return d.length?d.pop()+" ":""}function s(d,E,u,T,f,h){if(d!==u||E!==T){var A=f.push("translate(",null,t,null,n);h.push({i:A-4,x:At(d,u)},{i:A-2,x:At(E,T)})}else(u||T)&&f.push("translate("+u+t+T+n)}function a(d,E,u,T){d!==E?(d-E>180?E+=360:E-d>180&&(d+=360),T.push({i:u.push(o(u)+"rotate(",null,r)-2,x:At(d,E)})):E&&u.push(o(u)+"rotate("+E+r)}function l(d,E,u,T){d!==E?T.push({i:u.push(o(u)+"skewX(",null,r)-2,x:At(d,E)}):E&&u.push(o(u)+"skewX("+E+r)}function c(d,E,u,T,f,h){if(d!==u||E!==T){var A=f.push(o(f)+"scale(",null,",",null,")");h.push({i:A-4,x:At(d,u)},{i:A-2,x:At(E,T)})}else(u!==1||T!==1)&&f.push(o(f)+"scale("+u+","+T+")")}return function(d,E){var u=[],T=[];return d=e(d),E=e(E),s(d.translateX,d.translateY,E.translateX,E.translateY,u,T),a(d.rotate,E.rotate,u,T),l(d.skewX,E.skewX,u,T),c(d.scaleX,d.scaleY,E.scaleX,E.scaleY,u,T),d=E=null,function(f){for(var h=-1,A=T.length,R;++h<A;)u[(R=T[h]).i]=R.x(f);return u.join("")}}}var D1=Fp(y1,"px, ","px)","deg)"),M1=Fp(_1,", ",")",")"),b1=1e-12;function fu(e){return((e=Math.exp(e))+1/e)/2}function P1(e){return((e=Math.exp(e))-1/e)/2}function v1(e){return((e=Math.exp(2*e))-1)/(e+1)}const ws=(function e(t,n,r){function o(s,a){var l=s[0],c=s[1],d=s[2],E=a[0],u=a[1],T=a[2],f=E-l,h=u-c,A=f*f+h*h,R,p;if(A<b1)p=Math.log(T/d)/t,R=function(g){return[l+g*f,c+g*h,d*Math.exp(t*g*p)]};else{var N=Math.sqrt(A),I=(T*T-d*d+r*A)/(2*d*n*N),O=(T*T-d*d-r*A)/(2*T*n*N),C=Math.log(Math.sqrt(I*I+1)-I),m=Math.log(Math.sqrt(O*O+1)-O);p=(m-C)/t,R=function(g){var y=g*p,x=fu(C),w=d/(n*N)*(x*v1(t*y+C)-P1(C));return[l+w*f,c+w*h,d*x/fu(t*y+C)]}}return R.duration=p*1e3*t/Math.SQRT2,R}return o.rho=function(s){var a=Math.max(.001,+s),l=a*a,c=l*l;return e(a,l,c)},o})(Math.SQRT2,2,4);var fr=0,Wr=0,Hr=0,Gp=1e3,ci,Vr,di=0,Mn=0,Ki=0,To=typeof performance=="object"&&performance.now?performance:Date,Hp=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ed(){return Mn||(Hp(U1),Mn=To.now()+Ki)}function U1(){Mn=0}function Ei(){this._call=this._time=this._next=null}Ei.prototype=kp.prototype={constructor:Ei,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?Ed():+n)+(t==null?0:+t),!this._next&&Vr!==this&&(Vr?Vr._next=this:ci=this,Vr=this),this._call=e,this._time=n,lc()},stop:function(){this._call&&(this._call=null,this._time=1/0,lc())}};function kp(e,t,n){var r=new Ei;return r.restart(e,t,n),r}function w1(){Ed(),++fr;for(var e=ci,t;e;)(t=Mn-e._time)>=0&&e._call.call(void 0,t),e=e._next;--fr}function Su(){Mn=(di=To.now())+Ki,fr=Wr=0;try{w1()}finally{fr=0,F1(),Mn=0}}function B1(){var e=To.now(),t=e-di;t>Gp&&(Ki-=t,di=e)}function F1(){for(var e,t=ci,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:ci=n);Vr=e,lc(r)}function lc(e){if(!fr){Wr&&(Wr=clearTimeout(Wr));var t=e-Mn;t>24?(e<1/0&&(Wr=setTimeout(Su,e-To.now()-Ki)),Hr&&(Hr=clearInterval(Hr))):(Hr||(di=To.now(),Hr=setInterval(B1,Gp)),fr=1,Hp(Su))}}function Ru(e,t,n){var r=new Ei;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var G1=$i("start","end","cancel","interrupt"),H1=[],jp=0,pu=1,cc=2,Bs=3,Au=4,dc=5,Fs=6;function zi(e,t,n,r,o,s){var a=e.__transition;if(!a)e.__transition={};else if(n in a)return;k1(e,n,{name:t,index:r,group:o,on:G1,tween:H1,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:jp})}function ud(e,t){var n=Rt(e,t);if(n.state>jp)throw new Error("too late; already scheduled");return n}function Lt(e,t){var n=Rt(e,t);if(n.state>Bs)throw new Error("too late; already running");return n}function Rt(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function k1(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=kp(s,0,n.time);function s(d){n.state=pu,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var E,u,T,f;if(n.state!==pu)return c();for(E in r)if(f=r[E],f.name===n.name){if(f.state===Bs)return Ru(a);f.state===Au?(f.state=Fs,f.timer.stop(),f.on.call("interrupt",e,e.__data__,f.index,f.group),delete r[E]):+E<t&&(f.state=Fs,f.timer.stop(),f.on.call("cancel",e,e.__data__,f.index,f.group),delete r[E])}if(Ru(function(){n.state===Bs&&(n.state=Au,n.timer.restart(l,n.delay,n.time),l(d))}),n.state=cc,n.on.call("start",e,e.__data__,n.index,n.group),n.state===cc){for(n.state=Bs,o=new Array(T=n.tween.length),E=0,u=-1;E<T;++E)(f=n.tween[E].value.call(e,e.__data__,n.index,n.group))&&(o[++u]=f);o.length=u+1}}function l(d){for(var E=d<n.duration?n.ease.call(null,d/n.duration):(n.timer.restart(c),n.state=dc,1),u=-1,T=o.length;++u<T;)o[u].call(e,E);n.state===dc&&(n.on.call("end",e,e.__data__,n.index,n.group),c())}function c(){n.state=Fs,n.timer.stop(),delete r[t];for(var d in r)return;delete e.__transition}}function Gs(e,t){var n=e.__transition,r,o,s=!0,a;if(n){t=t==null?null:t+"";for(a in n){if((r=n[a]).name!==t){s=!1;continue}o=r.state>cc&&r.state<dc,r.state=Fs,r.timer.stop(),r.on.call(o?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[a]}s&&delete e.__transition}}function j1(e){return this.each(function(){Gs(this,e)})}function Y1(e,t){var n,r;return function(){var o=Lt(this,e),s=o.tween;if(s!==n){r=n=s;for(var a=0,l=r.length;a<l;++a)if(r[a].name===t){r=r.slice(),r.splice(a,1);break}}o.tween=r}}function W1(e,t,n){var r,o;if(typeof n!="function")throw new Error;return function(){var s=Lt(this,e),a=s.tween;if(a!==r){o=(r=a).slice();for(var l={name:t,value:n},c=0,d=o.length;c<d;++c)if(o[c].name===t){o[c]=l;break}c===d&&o.push(l)}s.tween=o}}function V1(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=Rt(this.node(),n).tween,o=0,s=r.length,a;o<s;++o)if((a=r[o]).name===e)return a.value;return null}return this.each((t==null?Y1:W1)(n,e,t))}function Td(e,t,n){var r=e._id;return e.each(function(){var o=Lt(this,r);(o.value||(o.value={}))[t]=n.apply(this,arguments)}),function(o){return Rt(o,r).value[t]}}function Yp(e,t){var n;return(typeof t=="number"?At:t instanceof Dn?li:(n=Dn(t))?(t=n,li):wp)(e,t)}function $1(e){return function(){this.removeAttribute(e)}}function X1(e){return function(){this.removeAttributeNS(e.space,e.local)}}function K1(e,t,n){var r,o=n+"",s;return function(){var a=this.getAttribute(e);return a===o?null:a===r?s:s=t(r=a,n)}}function z1(e,t,n){var r,o=n+"",s;return function(){var a=this.getAttributeNS(e.space,e.local);return a===o?null:a===r?s:s=t(r=a,n)}}function J1(e,t,n){var r,o,s;return function(){var a,l=n(this),c;return l==null?void this.removeAttribute(e):(a=this.getAttribute(e),c=l+"",a===c?null:a===r&&c===o?s:(o=c,s=t(r=a,l)))}}function q1(e,t,n){var r,o,s;return function(){var a,l=n(this),c;return l==null?void this.removeAttributeNS(e.space,e.local):(a=this.getAttributeNS(e.space,e.local),c=l+"",a===c?null:a===r&&c===o?s:(o=c,s=t(r=a,l)))}}function Q1(e,t){var n=Xi(e),r=n==="transform"?M1:Yp;return this.attrTween(e,typeof t=="function"?(n.local?q1:J1)(n,r,Td(this,"attr."+e,t)):t==null?(n.local?X1:$1)(n):(n.local?z1:K1)(n,r,t))}function Z1(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function eP(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function tP(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&eP(e,s)),n}return o._value=t,o}function nP(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&Z1(e,s)),n}return o._value=t,o}function rP(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;var r=Xi(e);return this.tween(n,(r.local?tP:nP)(r,t))}function oP(e,t){return function(){ud(this,e).delay=+t.apply(this,arguments)}}function sP(e,t){return t=+t,function(){ud(this,e).delay=t}}function iP(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?oP:sP)(t,e)):Rt(this.node(),t).delay}function aP(e,t){return function(){Lt(this,e).duration=+t.apply(this,arguments)}}function lP(e,t){return t=+t,function(){Lt(this,e).duration=t}}function cP(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?aP:lP)(t,e)):Rt(this.node(),t).duration}function dP(e,t){if(typeof t!="function")throw new Error;return function(){Lt(this,e).ease=t}}function EP(e){var t=this._id;return arguments.length?this.each(dP(t,e)):Rt(this.node(),t).ease}function uP(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;Lt(this,e).ease=n}}function TP(e){if(typeof e!="function")throw new Error;return this.each(uP(this._id,e))}function fP(e){typeof e!="function"&&(e=Ip(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],a=s.length,l=r[o]=[],c,d=0;d<a;++d)(c=s[d])&&e.call(c,c.__data__,d,s)&&l.push(c);return new Gt(r,this._parents,this._name,this._id)}function SP(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,o=n.length,s=Math.min(r,o),a=new Array(r),l=0;l<s;++l)for(var c=t[l],d=n[l],E=c.length,u=a[l]=new Array(E),T,f=0;f<E;++f)(T=c[f]||d[f])&&(u[f]=T);for(;l<r;++l)a[l]=t[l];return new Gt(a,this._parents,this._name,this._id)}function RP(e){return(e+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||t==="start"})}function pP(e,t,n){var r,o,s=RP(t)?ud:Lt;return function(){var a=s(this,e),l=a.on;l!==r&&(o=(r=l).copy()).on(t,n),a.on=o}}function AP(e,t){var n=this._id;return arguments.length<2?Rt(this.node(),n).on.on(e):this.each(pP(n,e,t))}function hP(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function IP(){return this.on("end.remove",hP(this._id))}function NP(e){var t=this._name,n=this._id;typeof e!="function"&&(e=ad(e));for(var r=this._groups,o=r.length,s=new Array(o),a=0;a<o;++a)for(var l=r[a],c=l.length,d=s[a]=new Array(c),E,u,T=0;T<c;++T)(E=l[T])&&(u=e.call(E,E.__data__,T,l))&&("__data__"in E&&(u.__data__=E.__data__),d[T]=u,zi(d[T],t,n,T,d,Rt(E,n)));return new Gt(s,this._parents,t,n)}function OP(e){var t=this._name,n=this._id;typeof e!="function"&&(e=hp(e));for(var r=this._groups,o=r.length,s=[],a=[],l=0;l<o;++l)for(var c=r[l],d=c.length,E,u=0;u<d;++u)if(E=c[u]){for(var T=e.call(E,E.__data__,u,c),f,h=Rt(E,n),A=0,R=T.length;A<R;++A)(f=T[A])&&zi(f,t,n,A,T,h);s.push(T),a.push(E)}return new Gt(s,a,t,n)}var mP=Do.prototype.constructor;function gP(){return new mP(this._groups,this._parents)}function CP(e,t){var n,r,o;return function(){var s=Tr(this,e),a=(this.style.removeProperty(e),Tr(this,e));return s===a?null:s===n&&a===r?o:o=t(n=s,r=a)}}function Wp(e){return function(){this.style.removeProperty(e)}}function xP(e,t,n){var r,o=n+"",s;return function(){var a=Tr(this,e);return a===o?null:a===r?s:s=t(r=a,n)}}function LP(e,t,n){var r,o,s;return function(){var a=Tr(this,e),l=n(this),c=l+"";return l==null&&(c=l=(this.style.removeProperty(e),Tr(this,e))),a===c?null:a===r&&c===o?s:(o=c,s=t(r=a,l))}}function yP(e,t){var n,r,o,s="style."+t,a="end."+s,l;return function(){var c=Lt(this,e),d=c.on,E=c.value[s]==null?l||(l=Wp(t)):void 0;(d!==n||o!==E)&&(r=(n=d).copy()).on(a,o=E),c.on=r}}function _P(e,t,n){var r=(e+="")=="transform"?D1:Yp;return t==null?this.styleTween(e,CP(e,r)).on("end.style."+e,Wp(e)):typeof t=="function"?this.styleTween(e,LP(e,r,Td(this,"style."+e,t))).each(yP(this._id,e)):this.styleTween(e,xP(e,r,t),n).on("end.style."+e,null)}function DP(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function MP(e,t,n){var r,o;function s(){var a=t.apply(this,arguments);return a!==o&&(r=(o=a)&&DP(e,a,n)),r}return s._value=t,s}function bP(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;return this.tween(r,MP(e,t,n??""))}function PP(e){return function(){this.textContent=e}}function vP(e){return function(){var t=e(this);this.textContent=t??""}}function UP(e){return this.tween("text",typeof e=="function"?vP(Td(this,"text",e)):PP(e==null?"":e+""))}function wP(e){return function(t){this.textContent=e.call(this,t)}}function BP(e){var t,n;function r(){var o=e.apply(this,arguments);return o!==n&&(t=(n=o)&&wP(o)),t}return r._value=e,r}function FP(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,BP(e))}function GP(){for(var e=this._name,t=this._id,n=Vp(),r=this._groups,o=r.length,s=0;s<o;++s)for(var a=r[s],l=a.length,c,d=0;d<l;++d)if(c=a[d]){var E=Rt(c,t);zi(c,e,n,d,a,{time:E.time+E.delay+E.duration,delay:0,duration:E.duration,ease:E.ease})}return new Gt(r,this._parents,e,n)}function HP(){var e,t,n=this,r=n._id,o=n.size();return new Promise(function(s,a){var l={value:a},c={value:function(){--o===0&&s()}};n.each(function(){var d=Lt(this,r),E=d.on;E!==e&&(t=(e=E).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(c)),d.on=t}),o===0&&s()})}var kP=0;function Gt(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Vp(){return++kP}var Dt=Do.prototype;Gt.prototype={constructor:Gt,select:NP,selectAll:OP,selectChild:Dt.selectChild,selectChildren:Dt.selectChildren,filter:fP,merge:SP,selection:gP,transition:GP,call:Dt.call,nodes:Dt.nodes,node:Dt.node,size:Dt.size,empty:Dt.empty,each:Dt.each,on:AP,attr:Q1,attrTween:rP,style:_P,styleTween:bP,text:UP,textTween:FP,remove:IP,tween:V1,delay:iP,duration:cP,ease:EP,easeVarying:TP,end:HP,[Symbol.iterator]:Dt[Symbol.iterator]};function jP(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var YP={time:null,delay:0,duration:250,ease:jP};function WP(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return n}function VP(e){var t,n;e instanceof Gt?(t=e._id,e=e._name):(t=Vp(),(n=YP).time=Ed(),e=e==null?null:e+"");for(var r=this._groups,o=r.length,s=0;s<o;++s)for(var a=r[s],l=a.length,c,d=0;d<l;++d)(c=a[d])&&zi(c,e,t,d,a,n||WP(c,t));return new Gt(r,this._parents,e,t)}Do.prototype.interrupt=j1;Do.prototype.transition=VP;const Ns=e=>()=>e;function $P(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Pt(e,t,n){this.k=e,this.x=t,this.y=n}Pt.prototype={constructor:Pt,scale:function(e){return e===1?this:new Pt(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Pt(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Ji=new Pt(1,0,0);$p.prototype=Pt.prototype;function $p(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Ji;return e.__zoom}function Ka(e){e.stopImmediatePropagation()}function kr(e){e.preventDefault(),e.stopImmediatePropagation()}function XP(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function KP(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function hu(){return this.__zoom||Ji}function zP(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function JP(){return navigator.maxTouchPoints||"ontouchstart"in this}function qP(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],s=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>s?(s+a)/2:Math.min(0,s)||Math.max(0,a))}function Xp(){var e=XP,t=KP,n=qP,r=zP,o=JP,s=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=ws,d=$i("start","zoom","end"),E,u,T,f=500,h=150,A=0,R=10;function p(_){_.property("__zoom",hu).on("wheel.zoom",y,{passive:!1}).on("mousedown.zoom",x).on("dblclick.zoom",w).filter(o).on("touchstart.zoom",D).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",F).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}p.transform=function(_,B,b,P){var M=_.selection?_.selection():_;M.property("__zoom",hu),_!==M?C(_,B,b,P):M.interrupt().each(function(){m(this,arguments).event(P).start().zoom(null,typeof B=="function"?B.apply(this,arguments):B).end()})},p.scaleBy=function(_,B,b,P){p.scaleTo(_,function(){var M=this.__zoom.k,L=typeof B=="function"?B.apply(this,arguments):B;return M*L},b,P)},p.scaleTo=function(_,B,b,P){p.transform(_,function(){var M=t.apply(this,arguments),L=this.__zoom,v=b==null?O(M):typeof b=="function"?b.apply(this,arguments):b,G=L.invert(v),k=typeof B=="function"?B.apply(this,arguments):B;return n(I(N(L,k),v,G),M,a)},b,P)},p.translateBy=function(_,B,b,P){p.transform(_,function(){return n(this.__zoom.translate(typeof B=="function"?B.apply(this,arguments):B,typeof b=="function"?b.apply(this,arguments):b),t.apply(this,arguments),a)},null,P)},p.translateTo=function(_,B,b,P,M){p.transform(_,function(){var L=t.apply(this,arguments),v=this.__zoom,G=P==null?O(L):typeof P=="function"?P.apply(this,arguments):P;return n(Ji.translate(G[0],G[1]).scale(v.k).translate(typeof B=="function"?-B.apply(this,arguments):-B,typeof b=="function"?-b.apply(this,arguments):-b),L,a)},P,M)};function N(_,B){return B=Math.max(s[0],Math.min(s[1],B)),B===_.k?_:new Pt(B,_.x,_.y)}function I(_,B,b){var P=B[0]-b[0]*_.k,M=B[1]-b[1]*_.k;return P===_.x&&M===_.y?_:new Pt(_.k,P,M)}function O(_){return[(+_[0][0]+ +_[1][0])/2,(+_[0][1]+ +_[1][1])/2]}function C(_,B,b,P){_.on("start.zoom",function(){m(this,arguments).event(P).start()}).on("interrupt.zoom end.zoom",function(){m(this,arguments).event(P).end()}).tween("zoom",function(){var M=this,L=arguments,v=m(M,L).event(P),G=t.apply(M,L),k=b==null?O(G):typeof b=="function"?b.apply(M,L):b,q=Math.max(G[1][0]-G[0][0],G[1][1]-G[0][1]),K=M.__zoom,j=typeof B=="function"?B.apply(M,L):B,z=c(K.invert(k).concat(q/K.k),j.invert(k).concat(q/j.k));return function(Q){if(Q===1)Q=j;else{var X=z(Q),Z=q/X[2];Q=new Pt(Z,k[0]-X[0]*Z,k[1]-X[1]*Z)}v.zoom(null,Q)}})}function m(_,B,b){return!b&&_.__zooming||new g(_,B)}function g(_,B){this.that=_,this.args=B,this.active=0,this.sourceEvent=null,this.extent=t.apply(_,B),this.taps=0}g.prototype={event:function(_){return _&&(this.sourceEvent=_),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(_,B){return this.mouse&&_!=="mouse"&&(this.mouse[1]=B.invert(this.mouse[0])),this.touch0&&_!=="touch"&&(this.touch0[1]=B.invert(this.touch0[0])),this.touch1&&_!=="touch"&&(this.touch1[1]=B.invert(this.touch1[0])),this.that.__zoom=B,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(_){var B=Je(this.that).datum();d.call(_,this.that,new $P(_,{sourceEvent:this.sourceEvent,target:p,transform:this.that.__zoom,dispatch:d}),B)}};function y(_,...B){if(!e.apply(this,arguments))return;var b=m(this,B).event(_),P=this.__zoom,M=Math.max(s[0],Math.min(s[1],P.k*Math.pow(2,r.apply(this,arguments)))),L=at(_);if(b.wheel)(b.mouse[0][0]!==L[0]||b.mouse[0][1]!==L[1])&&(b.mouse[1]=P.invert(b.mouse[0]=L)),clearTimeout(b.wheel);else{if(P.k===M)return;b.mouse=[L,P.invert(L)],Gs(this),b.start()}kr(_),b.wheel=setTimeout(v,h),b.zoom("mouse",n(I(N(P,M),b.mouse[0],b.mouse[1]),b.extent,a));function v(){b.wheel=null,b.end()}}function x(_,...B){if(T||!e.apply(this,arguments))return;var b=_.currentTarget,P=m(this,B,!0).event(_),M=Je(_.view).on("mousemove.zoom",k,!0).on("mouseup.zoom",q,!0),L=at(_,b),v=_.clientX,G=_.clientY;Dp(_.view),Ka(_),P.mouse=[L,this.__zoom.invert(L)],Gs(this),P.start();function k(K){if(kr(K),!P.moved){var j=K.clientX-v,z=K.clientY-G;P.moved=j*j+z*z>A}P.event(K).zoom("mouse",n(I(P.that.__zoom,P.mouse[0]=at(K,b),P.mouse[1]),P.extent,a))}function q(K){M.on("mousemove.zoom mouseup.zoom",null),Mp(K.view,P.moved),kr(K),P.event(K).end()}}function w(_,...B){if(e.apply(this,arguments)){var b=this.__zoom,P=at(_.changedTouches?_.changedTouches[0]:_,this),M=b.invert(P),L=b.k*(_.shiftKey?.5:2),v=n(I(N(b,L),P,M),t.apply(this,B),a);kr(_),l>0?Je(this).transition().duration(l).call(C,v,P,_):Je(this).call(p.transform,v,P,_)}}function D(_,...B){if(e.apply(this,arguments)){var b=_.touches,P=b.length,M=m(this,B,_.changedTouches.length===P).event(_),L,v,G,k;for(Ka(_),v=0;v<P;++v)G=b[v],k=at(G,this),k=[k,this.__zoom.invert(k),G.identifier],M.touch0?!M.touch1&&M.touch0[2]!==k[2]&&(M.touch1=k,M.taps=0):(M.touch0=k,L=!0,M.taps=1+!!E);E&&(E=clearTimeout(E)),L&&(M.taps<2&&(u=k[0],E=setTimeout(function(){E=null},f)),Gs(this),M.start())}}function U(_,...B){if(this.__zooming){var b=m(this,B).event(_),P=_.changedTouches,M=P.length,L,v,G,k;for(kr(_),L=0;L<M;++L)v=P[L],G=at(v,this),b.touch0&&b.touch0[2]===v.identifier?b.touch0[0]=G:b.touch1&&b.touch1[2]===v.identifier&&(b.touch1[0]=G);if(v=b.that.__zoom,b.touch1){var q=b.touch0[0],K=b.touch0[1],j=b.touch1[0],z=b.touch1[1],Q=(Q=j[0]-q[0])*Q+(Q=j[1]-q[1])*Q,X=(X=z[0]-K[0])*X+(X=z[1]-K[1])*X;v=N(v,Math.sqrt(Q/X)),G=[(q[0]+j[0])/2,(q[1]+j[1])/2],k=[(K[0]+z[0])/2,(K[1]+z[1])/2]}else if(b.touch0)G=b.touch0[0],k=b.touch0[1];else return;b.zoom("touch",n(I(v,G,k),b.extent,a))}}function F(_,...B){if(this.__zooming){var b=m(this,B).event(_),P=_.changedTouches,M=P.length,L,v;for(Ka(_),T&&clearTimeout(T),T=setTimeout(function(){T=null},f),L=0;L<M;++L)v=P[L],b.touch0&&b.touch0[2]===v.identifier?delete b.touch0:b.touch1&&b.touch1[2]===v.identifier&&delete b.touch1;if(b.touch1&&!b.touch0&&(b.touch0=b.touch1,delete b.touch1),b.touch0)b.touch0[1]=this.__zoom.invert(b.touch0[0]);else if(b.end(),b.taps===2&&(v=at(v,this),Math.hypot(u[0]-v[0],u[1]-v[1])<R)){var G=Je(this).on("dblclick.zoom");G&&G.apply(this,arguments)}}}return p.wheelDelta=function(_){return arguments.length?(r=typeof _=="function"?_:Ns(+_),p):r},p.filter=function(_){return arguments.length?(e=typeof _=="function"?_:Ns(!!_),p):e},p.touchable=function(_){return arguments.length?(o=typeof _=="function"?_:Ns(!!_),p):o},p.extent=function(_){return arguments.length?(t=typeof _=="function"?_:Ns([[+_[0][0],+_[0][1]],[+_[1][0],+_[1][1]]]),p):t},p.scaleExtent=function(_){return arguments.length?(s[0]=+_[0],s[1]=+_[1],p):[s[0],s[1]]},p.translateExtent=function(_){return arguments.length?(a[0][0]=+_[0][0],a[1][0]=+_[1][0],a[0][1]=+_[0][1],a[1][1]=+_[1][1],p):[[a[0][0],a[0][1]],[a[1][0],a[1][1]]]},p.constrain=function(_){return arguments.length?(n=_,p):n},p.duration=function(_){return arguments.length?(l=+_,p):l},p.interpolate=function(_){return arguments.length?(c=_,p):c},p.on=function(){var _=d.on.apply(d,arguments);return _===d?p:_},p.clickDistance=function(_){return arguments.length?(A=(_=+_)*_,p):Math.sqrt(A)},p.tapDistance=function(_){return arguments.length?(R=+_,p):R},p}const Ct={error001:()=>"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},fo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Kp=["Enter"," ","Escape"],zp={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var Sr;(function(e){e.Strict="strict",e.Loose="loose"})(Sr||(Sr={}));var xn;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(xn||(xn={}));var So;(function(e){e.Partial="partial",e.Full="full"})(So||(So={}));const Jp={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Zt;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Zt||(Zt={}));var Rr;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(Rr||(Rr={}));var oe;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(oe||(oe={}));const Iu={[oe.Left]:oe.Right,[oe.Right]:oe.Left,[oe.Top]:oe.Bottom,[oe.Bottom]:oe.Top};function qp(e){return e===null?null:e?"valid":"invalid"}const Qp=e=>"id"in e&&"source"in e&&"target"in e,QP=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),fd=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),bo=(e,t=[0,0])=>{const{width:n,height:r}=kt(e),o=e.origin??t,s=n*o[0],a=r*o[1];return{x:e.position.x-s,y:e.position.y-a}},ZP=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const s=typeof o=="string";let a=!t.nodeLookup&&!s?o:void 0;t.nodeLookup&&(a=s?t.nodeLookup.get(o):fd(o)?o:t.nodeLookup.get(o.id));const l=a?ui(a,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return qi(r,l)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Qi(n)},Po=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(o=>{(t.filter===void 0||t.filter(o))&&(n=qi(n,ui(o)),r=!0)}),r?Qi(n):{x:0,y:0,width:0,height:0}},Sd=(e,t,[n,r,o]=[0,0,1],s=!1,a=!1)=>{const l={...Uo(t,[n,r,o]),width:t.width/o,height:t.height/o},c=[];for(const d of e.values()){const{measured:E,selectable:u=!0,hidden:T=!1}=d;if(a&&!u||T)continue;const f=E.width??d.width??d.initialWidth??null,h=E.height??d.height??d.initialHeight??null,A=Ro(l,Ar(d)),R=(f??0)*(h??0),p=s&&A>0;(!d.internals.handleBounds||p||A>=R||d.dragging)&&c.push(d)}return c},ev=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function tv(e,t){const n=new Map,r=t!=null&&t.nodes?new Set(t.nodes.map(o=>o.id)):null;return e.forEach(o=>{o.measured.width&&o.measured.height&&((t==null?void 0:t.includeHiddenNodes)||!o.hidden)&&(!r||r.has(o.id))&&n.set(o.id,o)}),n}async function nv({nodes:e,width:t,height:n,panZoom:r,minZoom:o,maxZoom:s},a){if(e.size===0)return Promise.resolve(!0);const l=tv(e,a),c=Po(l),d=Rd(c,t,n,(a==null?void 0:a.minZoom)??o,(a==null?void 0:a.maxZoom)??s,(a==null?void 0:a.padding)??.1);return await r.setViewport(d,{duration:a==null?void 0:a.duration,ease:a==null?void 0:a.ease,interpolate:a==null?void 0:a.interpolate}),Promise.resolve(!0)}function Zp({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:o,onError:s}){const a=n.get(e),l=a.parentId?n.get(a.parentId):void 0,{x:c,y:d}=l?l.internals.positionAbsolute:{x:0,y:0},E=a.origin??r;let u=a.extent||o;if(a.extent==="parent"&&!a.expandParent)if(!l)s==null||s("005",Ct.error005());else{const f=l.measured.width,h=l.measured.height;f&&h&&(u=[[c,d],[c+f,d+h]])}else l&&hr(a.extent)&&(u=[[a.extent[0][0]+c,a.extent[0][1]+d],[a.extent[1][0]+c,a.extent[1][1]+d]]);const T=hr(u)?bn(t,u,a.measured):t;return(a.measured.width===void 0||a.measured.height===void 0)&&(s==null||s("015",Ct.error015())),{position:{x:T.x-c+(a.measured.width??0)*E[0],y:T.y-d+(a.measured.height??0)*E[1]},positionAbsolute:T}}async function rv({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:o}){const s=new Set(e.map(T=>T.id)),a=[];for(const T of n){if(T.deletable===!1)continue;const f=s.has(T.id),h=!f&&T.parentId&&a.find(A=>A.id===T.parentId);(f||h)&&a.push(T)}const l=new Set(t.map(T=>T.id)),c=r.filter(T=>T.deletable!==!1),E=ev(a,c);for(const T of c)l.has(T.id)&&!E.find(h=>h.id===T.id)&&E.push(T);if(!o)return{edges:E,nodes:a};const u=await o({nodes:a,edges:E});return typeof u=="boolean"?u?{edges:E,nodes:a}:{edges:[],nodes:[]}:u}const pr=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),bn=(e={x:0,y:0},t,n)=>({x:pr(e.x,t[0][0],t[1][0]-((n==null?void 0:n.width)??0)),y:pr(e.y,t[0][1],t[1][1]-((n==null?void 0:n.height)??0))});function eA(e,t,n){const{width:r,height:o}=kt(n),{x:s,y:a}=n.internals.positionAbsolute;return bn(e,[[s,a],[s+r,a+o]],t)}const Nu=(e,t,n)=>e<t?pr(Math.abs(e-t),1,t)/t:e>n?-pr(Math.abs(e-n),1,t)/t:0,tA=(e,t,n=15,r=40)=>{const o=Nu(e.x,r,t.width-r)*n,s=Nu(e.y,r,t.height-r)*n;return[o,s]},qi=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Ec=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Qi=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Ar=(e,t=[0,0])=>{var o,s;const{x:n,y:r}=fd(e)?e.internals.positionAbsolute:bo(e,t);return{x:n,y:r,width:((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},ui=(e,t=[0,0])=>{var o,s;const{x:n,y:r}=fd(e)?e.internals.positionAbsolute:bo(e,t);return{x:n,y:r,x2:n+(((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0),y2:r+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},nA=(e,t)=>Qi(qi(Ec(e),Ec(t))),Ro=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Ou=e=>ct(e.width)&&ct(e.height)&&ct(e.x)&&ct(e.y),ct=e=>!isNaN(e)&&isFinite(e),ov=(e,t)=>{},vo=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),Uo=({x:e,y:t},[n,r,o],s=!1,a=[1,1])=>{const l={x:(e-n)/o,y:(t-r)/o};return s?vo(l,a):l},Ti=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r});function zn(e,t){if(typeof e=="number")return Math.floor((t-t/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(n)}if(typeof e=="string"&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function sv(e,t,n){if(typeof e=="string"||typeof e=="number"){const r=zn(e,n),o=zn(e,t);return{top:r,right:o,bottom:r,left:o,x:o*2,y:r*2}}if(typeof e=="object"){const r=zn(e.top??e.y??0,n),o=zn(e.bottom??e.y??0,n),s=zn(e.left??e.x??0,t),a=zn(e.right??e.x??0,t);return{top:r,right:a,bottom:o,left:s,x:s+a,y:r+o}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function iv(e,t,n,r,o,s){const{x:a,y:l}=Ti(e,[t,n,r]),{x:c,y:d}=Ti({x:e.x+e.width,y:e.y+e.height},[t,n,r]),E=o-c,u=s-d;return{left:Math.floor(a),top:Math.floor(l),right:Math.floor(E),bottom:Math.floor(u)}}const Rd=(e,t,n,r,o,s)=>{const a=sv(s,t,n),l=(t-a.x)/e.width,c=(n-a.y)/e.height,d=Math.min(l,c),E=pr(d,r,o),u=e.x+e.width/2,T=e.y+e.height/2,f=t/2-u*E,h=n/2-T*E,A=iv(e,f,h,E,t,n),R={left:Math.min(A.left-a.left,0),top:Math.min(A.top-a.top,0),right:Math.min(A.right-a.right,0),bottom:Math.min(A.bottom-a.bottom,0)};return{x:f-R.left+R.right,y:h-R.top+R.bottom,zoom:E}},po=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function hr(e){return e!=null&&e!=="parent"}function kt(e){var t,n;return{width:((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth??0,height:((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight??0}}function rA(e){var t,n;return(((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth)!==void 0&&(((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight)!==void 0}function oA(e,t={width:0,height:0},n,r,o){const s={...e},a=r.get(n);if(a){const l=a.origin||o;s.x+=a.internals.positionAbsolute.x-(t.width??0)*l[0],s.y+=a.internals.positionAbsolute.y-(t.height??0)*l[1]}return s}function mu(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function av(){let e,t;return{promise:new Promise((r,o)=>{e=r,t=o}),resolve:e,reject:t}}function lv(e){return{...zp,...e||{}}}function Jr(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:o}){const{x:s,y:a}=dt(e),l=Uo({x:s-((o==null?void 0:o.left)??0),y:a-((o==null?void 0:o.top)??0)},r),{x:c,y:d}=n?vo(l,t):l;return{xSnapped:c,ySnapped:d,...l}}const pd=e=>({width:e.offsetWidth,height:e.offsetHeight}),sA=e=>{var t;return((t=e==null?void 0:e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},cv=["INPUT","SELECT","TEXTAREA"];function iA(e){var r,o;const t=((o=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:o[0])||e.target;return(t==null?void 0:t.nodeType)!==1?!1:cv.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const aA=e=>"clientX"in e,dt=(e,t)=>{var s,a;const n=aA(e),r=n?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,o=n?e.clientY:(a=e.touches)==null?void 0:a[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}},gu=(e,t,n,r,o)=>{const s=t.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(a=>{const l=a.getBoundingClientRect();return{id:a.getAttribute("data-handleid"),type:e,nodeId:o,position:a.getAttribute("data-handlepos"),x:(l.left-n.left)/r,y:(l.top-n.top)/r,...pd(a)}})};function lA({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:s,targetControlX:a,targetControlY:l}){const c=e*.125+o*.375+a*.375+n*.125,d=t*.125+s*.375+l*.375+r*.125,E=Math.abs(c-e),u=Math.abs(d-t);return[c,d,E,u]}function Os(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Cu({pos:e,x1:t,y1:n,x2:r,y2:o,c:s}){switch(e){case oe.Left:return[t-Os(t-r,s),n];case oe.Right:return[t+Os(r-t,s),n];case oe.Top:return[t,n-Os(n-o,s)];case oe.Bottom:return[t,n+Os(o-n,s)]}}function cA({sourceX:e,sourceY:t,sourcePosition:n=oe.Bottom,targetX:r,targetY:o,targetPosition:s=oe.Top,curvature:a=.25}){const[l,c]=Cu({pos:n,x1:e,y1:t,x2:r,y2:o,c:a}),[d,E]=Cu({pos:s,x1:r,y1:o,x2:e,y2:t,c:a}),[u,T,f,h]=lA({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:E});return[`M${e},${t} C${l},${c} ${d},${E} ${r},${o}`,u,T,f,h]}function dA({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,s=n<e?n+o:n-o,a=Math.abs(r-t)/2,l=r<t?r+a:r-a;return[s,l,o,a]}function dv({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:o=!1,zIndexMode:s="basic"}){if(s==="manual")return r;const a=o&&n?r+1e3:r,l=Math.max(e.parentId||o&&e.selected?e.internals.z:0,t.parentId||o&&t.selected?t.internals.z:0);return a+l}function Ev({sourceNode:e,targetNode:t,width:n,height:r,transform:o}){const s=qi(ui(e),ui(t));s.x===s.x2&&(s.x2+=1),s.y===s.y2&&(s.y2+=1);const a={x:-o[0]/o[2],y:-o[1]/o[2],width:n/o[2],height:r/o[2]};return Ro(a,Qi(s))>0}const uv=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,Tv=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),fv=(e,t,n={})=>{if(!e.source||!e.target)return t;const r=n.getEdgeId||uv;let o;return Qp(e)?o={...e}:o={...e,id:r(e)},Tv(o,t)?t:(o.sourceHandle===null&&delete o.sourceHandle,o.targetHandle===null&&delete o.targetHandle,t.concat(o))};function EA({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,s,a,l]=dA({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,s,a,l]}const xu={[oe.Left]:{x:-1,y:0},[oe.Right]:{x:1,y:0},[oe.Top]:{x:0,y:-1},[oe.Bottom]:{x:0,y:1}},Sv=({source:e,sourcePosition:t=oe.Bottom,target:n})=>t===oe.Left||t===oe.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},Lu=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Rv({source:e,sourcePosition:t=oe.Bottom,target:n,targetPosition:r=oe.Top,center:o,offset:s,stepPosition:a}){const l=xu[t],c=xu[r],d={x:e.x+l.x*s,y:e.y+l.y*s},E={x:n.x+c.x*s,y:n.y+c.y*s},u=Sv({source:d,sourcePosition:t,target:E}),T=u.x!==0?"x":"y",f=u[T];let h=[],A,R;const p={x:0,y:0},N={x:0,y:0},[,,I,O]=dA({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(l[T]*c[T]===-1){T==="x"?(A=o.x??d.x+(E.x-d.x)*a,R=o.y??(d.y+E.y)/2):(A=o.x??(d.x+E.x)/2,R=o.y??d.y+(E.y-d.y)*a);const m=[{x:A,y:d.y},{x:A,y:E.y}],g=[{x:d.x,y:R},{x:E.x,y:R}];l[T]===f?h=T==="x"?m:g:h=T==="x"?g:m}else{const m=[{x:d.x,y:E.y}],g=[{x:E.x,y:d.y}];if(T==="x"?h=l.x===f?g:m:h=l.y===f?m:g,t===r){const U=Math.abs(e[T]-n[T]);if(U<=s){const F=Math.min(s-1,s-U);l[T]===f?p[T]=(d[T]>e[T]?-1:1)*F:N[T]=(E[T]>n[T]?-1:1)*F}}if(t!==r){const U=T==="x"?"y":"x",F=l[T]===c[U],_=d[U]>E[U],B=d[U]<E[U];(l[T]===1&&(!F&&_||F&&B)||l[T]!==1&&(!F&&B||F&&_))&&(h=T==="x"?m:g)}const y={x:d.x+p.x,y:d.y+p.y},x={x:E.x+N.x,y:E.y+N.y},w=Math.max(Math.abs(y.x-h[0].x),Math.abs(x.x-h[0].x)),D=Math.max(Math.abs(y.y-h[0].y),Math.abs(x.y-h[0].y));w>=D?(A=(y.x+x.x)/2,R=h[0].y):(A=h[0].x,R=(y.y+x.y)/2)}return[[e,{x:d.x+p.x,y:d.y+p.y},...h,{x:E.x+N.x,y:E.y+N.y},n],A,R,I,O]}function pv(e,t,n,r){const o=Math.min(Lu(e,t)/2,Lu(t,n)/2,r),{x:s,y:a}=t;if(e.x===s&&s===n.x||e.y===a&&a===n.y)return`L${s} ${a}`;if(e.y===a){const d=e.x<n.x?-1:1,E=e.y<n.y?1:-1;return`L ${s+o*d},${a}Q ${s},${a} ${s},${a+o*E}`}const l=e.x<n.x?1:-1,c=e.y<n.y?-1:1;return`L ${s},${a+o*c}Q ${s},${a} ${s+o*l},${a}`}function uc({sourceX:e,sourceY:t,sourcePosition:n=oe.Bottom,targetX:r,targetY:o,targetPosition:s=oe.Top,borderRadius:a=5,centerX:l,centerY:c,offset:d=20,stepPosition:E=.5}){const[u,T,f,h,A]=Rv({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:o},targetPosition:s,center:{x:l,y:c},offset:d,stepPosition:E});return[u.reduce((p,N,I)=>{let O="";return I>0&&I<u.length-1?O=pv(u[I-1],N,u[I+1],a):O=`${I===0?"M":"L"}${N.x} ${N.y}`,p+=O,p},""),T,f,h,A]}function yu(e){var t;return e&&!!(e.internals.handleBounds||(t=e.handles)!=null&&t.length)&&!!(e.measured.width||e.width||e.initialWidth)}function Av(e){var u;const{sourceNode:t,targetNode:n}=e;if(!yu(t)||!yu(n))return null;const r=t.internals.handleBounds||_u(t.handles),o=n.internals.handleBounds||_u(n.handles),s=Du((r==null?void 0:r.source)??[],e.sourceHandle),a=Du(e.connectionMode===Sr.Strict?(o==null?void 0:o.target)??[]:((o==null?void 0:o.target)??[]).concat((o==null?void 0:o.source)??[]),e.targetHandle);if(!s||!a)return(u=e.onError)==null||u.call(e,"008",Ct.error008(s?"target":"source",{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;const l=(s==null?void 0:s.position)||oe.Bottom,c=(a==null?void 0:a.position)||oe.Top,d=Pn(t,s,l),E=Pn(n,a,c);return{sourceX:d.x,sourceY:d.y,targetX:E.x,targetY:E.y,sourcePosition:l,targetPosition:c}}function _u(e){if(!e)return null;const t=[],n=[];for(const r of e)r.width=r.width??1,r.height=r.height??1,r.type==="source"?t.push(r):r.type==="target"&&n.push(r);return{source:t,target:n}}function Pn(e,t,n=oe.Left,r=!1){const o=((t==null?void 0:t.x)??0)+e.internals.positionAbsolute.x,s=((t==null?void 0:t.y)??0)+e.internals.positionAbsolute.y,{width:a,height:l}=t??kt(e);if(r)return{x:o+a/2,y:s+l/2};switch((t==null?void 0:t.position)??n){case oe.Top:return{x:o+a/2,y:s};case oe.Right:return{x:o+a,y:s+l/2};case oe.Bottom:return{x:o+a/2,y:s+l};case oe.Left:return{x:o,y:s+l/2}}}function Du(e,t){return e&&(t?e.find(n=>n.id===t):e[0])||null}function Tc(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function hv(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:o}){const s=new Set;return e.reduce((a,l)=>([l.markerStart||r,l.markerEnd||o].forEach(c=>{if(c&&typeof c=="object"){const d=Tc(c,t);s.has(d)||(a.push({id:d,color:c.color||n,...c}),s.add(d))}}),a),[]).sort((a,l)=>a.id.localeCompare(l.id))}const uA=1e3,Iv=10,Ad={nodeOrigin:[0,0],nodeExtent:fo,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Nv={...Ad,checkEquality:!0};function hd(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function Ov(e,t,n){const r=hd(Ad,n);for(const o of e.values())if(o.parentId)Nd(o,e,t,r);else{const s=bo(o,r.nodeOrigin),a=hr(o.extent)?o.extent:r.nodeExtent,l=bn(s,a,kt(o));o.internals.positionAbsolute=l}}function mv(e,t){if(!e.handles)return e.measured?t==null?void 0:t.internals.handleBounds:void 0;const n=[],r=[];for(const o of e.handles){const s={id:o.id,width:o.width??1,height:o.height??1,nodeId:e.id,x:o.x,y:o.y,position:o.position,type:o.type};o.type==="source"?n.push(s):o.type==="target"&&r.push(s)}return{source:n,target:r}}function Id(e){return e==="manual"}function fc(e,t,n,r={}){var d,E;const o=hd(Nv,r),s={i:0},a=new Map(t),l=o!=null&&o.elevateNodesOnSelect&&!Id(o.zIndexMode)?uA:0;let c=e.length>0;t.clear(),n.clear();for(const u of e){let T=a.get(u.id);if(o.checkEquality&&u===(T==null?void 0:T.internals.userNode))t.set(u.id,T);else{const f=bo(u,o.nodeOrigin),h=hr(u.extent)?u.extent:o.nodeExtent,A=bn(f,h,kt(u));T={...o.defaults,...u,measured:{width:(d=u.measured)==null?void 0:d.width,height:(E=u.measured)==null?void 0:E.height},internals:{positionAbsolute:A,handleBounds:mv(u,T),z:TA(u,l,o.zIndexMode),userNode:u}},t.set(u.id,T)}(T.measured===void 0||T.measured.width===void 0||T.measured.height===void 0)&&!T.hidden&&(c=!1),u.parentId&&Nd(T,t,n,r,s)}return c}function gv(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function Nd(e,t,n,r,o){const{elevateNodesOnSelect:s,nodeOrigin:a,nodeExtent:l,zIndexMode:c}=hd(Ad,r),d=e.parentId,E=t.get(d);if(!E){console.warn(`Parent node ${d} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}gv(e,n),o&&!E.parentId&&E.internals.rootParentIndex===void 0&&c==="auto"&&(E.internals.rootParentIndex=++o.i,E.internals.z=E.internals.z+o.i*Iv),o&&E.internals.rootParentIndex!==void 0&&(o.i=E.internals.rootParentIndex);const u=s&&!Id(c)?uA:0,{x:T,y:f,z:h}=Cv(e,E,a,l,u,c),{positionAbsolute:A}=e.internals,R=T!==A.x||f!==A.y;(R||h!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:R?{x:T,y:f}:A,z:h}})}function TA(e,t,n){const r=ct(e.zIndex)?e.zIndex:0;return Id(n)?r:r+(e.selected?t:0)}function Cv(e,t,n,r,o,s){const{x:a,y:l}=t.internals.positionAbsolute,c=kt(e),d=bo(e,n),E=hr(e.extent)?bn(d,e.extent,c):d;let u=bn({x:a+E.x,y:l+E.y},r,c);e.extent==="parent"&&(u=eA(u,c,t));const T=TA(e,o,s),f=t.internals.z??0;return{x:u.x,y:u.y,z:f>=T?f+1:T}}function Od(e,t,n,r=[0,0]){var a;const o=[],s=new Map;for(const l of e){const c=t.get(l.parentId);if(!c)continue;const d=((a=s.get(l.parentId))==null?void 0:a.expandedRect)??Ar(c),E=nA(d,l.rect);s.set(l.parentId,{expandedRect:E,parent:c})}return s.size>0&&s.forEach(({expandedRect:l,parent:c},d)=>{var I;const E=c.internals.positionAbsolute,u=kt(c),T=c.origin??r,f=l.x<E.x?Math.round(Math.abs(E.x-l.x)):0,h=l.y<E.y?Math.round(Math.abs(E.y-l.y)):0,A=Math.max(u.width,Math.round(l.width)),R=Math.max(u.height,Math.round(l.height)),p=(A-u.width)*T[0],N=(R-u.height)*T[1];(f>0||h>0||p||N)&&(o.push({id:d,type:"position",position:{x:c.position.x-f+p,y:c.position.y-h+N}}),(I=n.get(d))==null||I.forEach(O=>{e.some(C=>C.id===O.id)||o.push({id:O.id,type:"position",position:{x:O.position.x+f,y:O.position.y+h}})})),(u.width<l.width||u.height<l.height||f||h)&&o.push({id:d,type:"dimensions",setAttributes:!0,dimensions:{width:A+(f?T[0]*f-p:0),height:R+(h?T[1]*h-N:0)}})}),o}function xv(e,t,n,r,o,s,a){const l=r==null?void 0:r.querySelector(".xyflow__viewport");let c=!1;if(!l)return{changes:[],updatedInternals:c};const d=[],E=window.getComputedStyle(l),{m22:u}=new window.DOMMatrixReadOnly(E.transform),T=[];for(const f of e.values()){const h=t.get(f.id);if(!h)continue;if(h.hidden){t.set(h.id,{...h,internals:{...h.internals,handleBounds:void 0}}),c=!0;continue}const A=pd(f.nodeElement),R=h.measured.width!==A.width||h.measured.height!==A.height;if(!!(A.width&&A.height&&(R||!h.internals.handleBounds||f.force))){const N=f.nodeElement.getBoundingClientRect(),I=hr(h.extent)?h.extent:s;let{positionAbsolute:O}=h.internals;h.parentId&&h.extent==="parent"?O=eA(O,A,t.get(h.parentId)):I&&(O=bn(O,I,A));const C={...h,measured:A,internals:{...h.internals,positionAbsolute:O,handleBounds:{source:gu("source",f.nodeElement,N,u,h.id),target:gu("target",f.nodeElement,N,u,h.id)}}};t.set(h.id,C),h.parentId&&Nd(C,t,n,{nodeOrigin:o,zIndexMode:a}),c=!0,R&&(d.push({id:h.id,type:"dimensions",dimensions:A}),h.expandParent&&h.parentId&&T.push({id:h.id,parentId:h.parentId,rect:Ar(C,o)}))}}if(T.length>0){const f=Od(T,t,n,o);d.push(...f)}return{changes:d,updatedInternals:c}}async function Lv({delta:e,panZoom:t,transform:n,translateExtent:r,width:o,height:s}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const a=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[o,s]],r),l=!!a&&(a.x!==n[0]||a.y!==n[1]||a.k!==n[2]);return Promise.resolve(l)}function Mu(e,t,n,r,o,s){let a=o;const l=r.get(a)||new Map;r.set(a,l.set(n,t)),a=`${o}-${e}`;const c=r.get(a)||new Map;if(r.set(a,c.set(n,t)),s){a=`${o}-${e}-${s}`;const d=r.get(a)||new Map;r.set(a,d.set(n,t))}}function fA(e,t,n){e.clear(),t.clear();for(const r of n){const{source:o,target:s,sourceHandle:a=null,targetHandle:l=null}=r,c={edgeId:r.id,source:o,target:s,sourceHandle:a,targetHandle:l},d=`${o}-${a}--${s}-${l}`,E=`${s}-${l}--${o}-${a}`;Mu("source",c,E,e,o,a),Mu("target",c,d,e,s,l),t.set(r.id,r)}}function SA(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:SA(n,t):!1}function bu(e,t,n){var o;let r=e;do{if((o=r==null?void 0:r.matches)!=null&&o.call(r,t))return!0;if(r===n)return!1;r=r==null?void 0:r.parentElement}while(r);return!1}function yv(e,t,n,r){const o=new Map;for(const[s,a]of e)if((a.selected||a.id===r)&&(!a.parentId||!SA(a,e))&&(a.draggable||t&&typeof a.draggable>"u")){const l=e.get(s);l&&o.set(s,{id:s,position:l.position||{x:0,y:0},distance:{x:n.x-l.internals.positionAbsolute.x,y:n.y-l.internals.positionAbsolute.y},extent:l.extent,parentId:l.parentId,origin:l.origin,expandParent:l.expandParent,internals:{positionAbsolute:l.internals.positionAbsolute||{x:0,y:0}},measured:{width:l.measured.width??0,height:l.measured.height??0}})}return o}function za({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){var a,l,c;const o=[];for(const[d,E]of t){const u=(a=n.get(d))==null?void 0:a.internals.userNode;u&&o.push({...u,position:E.position,dragging:r})}if(!e)return[o[0],o];const s=(l=n.get(e))==null?void 0:l.internals.userNode;return[s?{...s,position:((c=t.get(e))==null?void 0:c.position)||s.position,dragging:r}:o[0],o]}function _v({dragItems:e,snapGrid:t,x:n,y:r}){const o=e.values().next().value;if(!o)return null;const s={x:n-o.distance.x,y:r-o.distance.y},a=vo(s,t);return{x:a.x-s.x,y:a.y-s.y}}function Dv({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:o}){let s={x:null,y:null},a=0,l=new Map,c=!1,d={x:0,y:0},E=null,u=!1,T=null,f=!1,h=!1,A=null;function R({noDragClassName:N,handleSelector:I,domNode:O,isSelectable:C,nodeId:m,nodeClickDistance:g=0}){T=Je(O);function y({x:U,y:F}){const{nodeLookup:_,nodeExtent:B,snapGrid:b,snapToGrid:P,nodeOrigin:M,onNodeDrag:L,onSelectionDrag:v,onError:G,updateNodePositions:k}=t();s={x:U,y:F};let q=!1;const K=l.size>1,j=K&&B?Ec(Po(l)):null,z=K&&P?_v({dragItems:l,snapGrid:b,x:U,y:F}):null;for(const[Q,X]of l){if(!_.has(Q))continue;let Z={x:U-X.distance.x,y:F-X.distance.y};P&&(Z=z?{x:Math.round(Z.x+z.x),y:Math.round(Z.y+z.y)}:vo(Z,b));let le=null;if(K&&B&&!X.extent&&j){const{positionAbsolute:W}=X.internals,ae=W.x-j.x+B[0][0],Te=W.x+X.measured.width-j.x2+B[1][0],ce=W.y-j.y+B[0][1],ee=W.y+X.measured.height-j.y2+B[1][1];le=[[ae,ce],[Te,ee]]}const{position:re,positionAbsolute:se}=Zp({nodeId:Q,nextPosition:Z,nodeLookup:_,nodeExtent:le||B,nodeOrigin:M,onError:G});q=q||X.position.x!==re.x||X.position.y!==re.y,X.position=re,X.internals.positionAbsolute=se}if(h=h||q,!!q&&(k(l,!0),A&&(r||L||!m&&v))){const[Q,X]=za({nodeId:m,dragItems:l,nodeLookup:_});r==null||r(A,l,Q,X),L==null||L(A,Q,X),m||v==null||v(A,X)}}async function x(){if(!E)return;const{transform:U,panBy:F,autoPanSpeed:_,autoPanOnNodeDrag:B}=t();if(!B){c=!1,cancelAnimationFrame(a);return}const[b,P]=tA(d,E,_);(b!==0||P!==0)&&(s.x=(s.x??0)-b/U[2],s.y=(s.y??0)-P/U[2],await F({x:b,y:P})&&y(s)),a=requestAnimationFrame(x)}function w(U){var K;const{nodeLookup:F,multiSelectionActive:_,nodesDraggable:B,transform:b,snapGrid:P,snapToGrid:M,selectNodesOnDrag:L,onNodeDragStart:v,onSelectionDragStart:G,unselectNodesAndEdges:k}=t();u=!0,(!L||!C)&&!_&&m&&((K=F.get(m))!=null&&K.selected||k()),C&&L&&m&&(e==null||e(m));const q=Jr(U.sourceEvent,{transform:b,snapGrid:P,snapToGrid:M,containerBounds:E});if(s=q,l=yv(F,B,q,m),l.size>0&&(n||v||!m&&G)){const[j,z]=za({nodeId:m,dragItems:l,nodeLookup:F});n==null||n(U.sourceEvent,l,j,z),v==null||v(U.sourceEvent,j,z),m||G==null||G(U.sourceEvent,z)}}const D=bp().clickDistance(g).on("start",U=>{const{domNode:F,nodeDragThreshold:_,transform:B,snapGrid:b,snapToGrid:P}=t();E=(F==null?void 0:F.getBoundingClientRect())||null,f=!1,h=!1,A=U.sourceEvent,_===0&&w(U),s=Jr(U.sourceEvent,{transform:B,snapGrid:b,snapToGrid:P,containerBounds:E}),d=dt(U.sourceEvent,E)}).on("drag",U=>{const{autoPanOnNodeDrag:F,transform:_,snapGrid:B,snapToGrid:b,nodeDragThreshold:P,nodeLookup:M}=t(),L=Jr(U.sourceEvent,{transform:_,snapGrid:B,snapToGrid:b,containerBounds:E});if(A=U.sourceEvent,(U.sourceEvent.type==="touchmove"&&U.sourceEvent.touches.length>1||m&&!M.has(m))&&(f=!0),!f){if(!c&&F&&u&&(c=!0,x()),!u){const v=dt(U.sourceEvent,E),G=v.x-d.x,k=v.y-d.y;Math.sqrt(G*G+k*k)>P&&w(U)}(s.x!==L.xSnapped||s.y!==L.ySnapped)&&l&&u&&(d=dt(U.sourceEvent,E),y(L))}}).on("end",U=>{if(!(!u||f)&&(c=!1,u=!1,cancelAnimationFrame(a),l.size>0)){const{nodeLookup:F,updateNodePositions:_,onNodeDragStop:B,onSelectionDragStop:b}=t();if(h&&(_(l,!1),h=!1),o||B||!m&&b){const[P,M]=za({nodeId:m,dragItems:l,nodeLookup:F,dragging:!1});o==null||o(U.sourceEvent,l,P,M),B==null||B(U.sourceEvent,P,M),m||b==null||b(U.sourceEvent,M)}}}).filter(U=>{const F=U.target;return!U.button&&(!N||!bu(F,`.${N}`,O))&&(!I||bu(F,I,O))});T.call(D)}function p(){T==null||T.on(".drag",null)}return{update:R,destroy:p}}function Mv(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const s of t.values())Ro(o,Ar(s))>0&&r.push(s);return r}const bv=250;function Pv(e,t,n,r){var l,c;let o=[],s=1/0;const a=Mv(e,n,t+bv);for(const d of a){const E=[...((l=d.internals.handleBounds)==null?void 0:l.source)??[],...((c=d.internals.handleBounds)==null?void 0:c.target)??[]];for(const u of E){if(r.nodeId===u.nodeId&&r.type===u.type&&r.id===u.id)continue;const{x:T,y:f}=Pn(d,u,u.position,!0),h=Math.sqrt(Math.pow(T-e.x,2)+Math.pow(f-e.y,2));h>t||(h<s?(o=[{...u,x:T,y:f}],s=h):h===s&&o.push({...u,x:T,y:f}))}}if(!o.length)return null;if(o.length>1){const d=r.type==="source"?"target":"source";return o.find(E=>E.type===d)??o[0]}return o[0]}function RA(e,t,n,r,o,s=!1){var d,E,u;const a=r.get(e);if(!a)return null;const l=o==="strict"?(d=a.internals.handleBounds)==null?void 0:d[t]:[...((E=a.internals.handleBounds)==null?void 0:E.source)??[],...((u=a.internals.handleBounds)==null?void 0:u.target)??[]],c=(n?l==null?void 0:l.find(T=>T.id===n):l==null?void 0:l[0])??null;return c&&s?{...c,...Pn(a,c,c.position,!0)}:c}function pA(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function vv(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const AA=()=>!0;function Uv(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:o,edgeUpdaterType:s,isTarget:a,domNode:l,nodeLookup:c,lib:d,autoPanOnConnect:E,flowId:u,panBy:T,cancelConnection:f,onConnectStart:h,onConnect:A,onConnectEnd:R,isValidConnection:p=AA,onReconnectEnd:N,updateConnection:I,getTransform:O,getFromHandle:C,autoPanSpeed:m,dragThreshold:g=1,handleDomNode:y}){const x=sA(e.target);let w=0,D;const{x:U,y:F}=dt(e),_=pA(s,y),B=l==null?void 0:l.getBoundingClientRect();let b=!1;if(!B||!_)return;const P=RA(o,_,r,c,t);if(!P)return;let M=dt(e,B),L=!1,v=null,G=!1,k=null;function q(){if(!E||!B)return;const[re,se]=tA(M,B,m);T({x:re,y:se}),w=requestAnimationFrame(q)}const K={...P,nodeId:o,type:_,position:P.position},j=c.get(o);let Q={inProgress:!0,isValid:null,from:Pn(j,K,oe.Left,!0),fromHandle:K,fromPosition:K.position,fromNode:j,to:M,toHandle:null,toPosition:Iu[K.position],toNode:null,pointer:M};function X(){b=!0,I(Q),h==null||h(e,{nodeId:o,handleId:r,handleType:_})}g===0&&X();function Z(re){if(!b){const{x:ee,y:he}=dt(re),Oe=ee-U,ke=he-F;if(!(Oe*Oe+ke*ke>g*g))return;X()}if(!C()||!K){le(re);return}const se=O();M=dt(re,B),D=Pv(Uo(M,se,!1,[1,1]),n,c,K),L||(q(),L=!0);const W=hA(re,{handle:D,connectionMode:t,fromNodeId:o,fromHandleId:r,fromType:a?"target":"source",isValidConnection:p,doc:x,lib:d,flowId:u,nodeLookup:c});k=W.handleDomNode,v=W.connection,G=vv(!!D,W.isValid);const ae=c.get(o),Te=ae?Pn(ae,K,oe.Left,!0):Q.from,ce={...Q,from:Te,isValid:G,to:W.toHandle&&G?Ti({x:W.toHandle.x,y:W.toHandle.y},se):M,toHandle:W.toHandle,toPosition:G&&W.toHandle?W.toHandle.position:Iu[K.position],toNode:W.toHandle?c.get(W.toHandle.nodeId):null,pointer:M};I(ce),Q=ce}function le(re){if(!("touches"in re&&re.touches.length>0)){if(b){(D||k)&&v&&G&&(A==null||A(v));const{inProgress:se,...W}=Q,ae={...W,toPosition:Q.toHandle?Q.toPosition:null};R==null||R(re,ae),s&&(N==null||N(re,ae))}f(),cancelAnimationFrame(w),L=!1,G=!1,v=null,k=null,x.removeEventListener("mousemove",Z),x.removeEventListener("mouseup",le),x.removeEventListener("touchmove",Z),x.removeEventListener("touchend",le)}}x.addEventListener("mousemove",Z),x.addEventListener("mouseup",le),x.addEventListener("touchmove",Z),x.addEventListener("touchend",le)}function hA(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:s,doc:a,lib:l,flowId:c,isValidConnection:d=AA,nodeLookup:E}){const u=s==="target",T=t?a.querySelector(`.${l}-flow__handle[data-id="${c}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:f,y:h}=dt(e),A=a.elementFromPoint(f,h),R=A!=null&&A.classList.contains(`${l}-flow__handle`)?A:T,p={handleDomNode:R,isValid:!1,connection:null,toHandle:null};if(R){const N=pA(void 0,R),I=R.getAttribute("data-nodeid"),O=R.getAttribute("data-handleid"),C=R.classList.contains("connectable"),m=R.classList.contains("connectableend");if(!I||!N)return p;const g={source:u?I:r,sourceHandle:u?O:o,target:u?r:I,targetHandle:u?o:O};p.connection=g;const x=C&&m&&(n===Sr.Strict?u&&N==="source"||!u&&N==="target":I!==r||O!==o);p.isValid=x&&d(g),p.toHandle=RA(I,N,O,E,n,!0)}return p}const Sc={onPointerDown:Uv,isValid:hA};function wv({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const o=Je(e);function s({translateExtent:l,width:c,height:d,zoomStep:E=1,pannable:u=!0,zoomable:T=!0,inversePan:f=!1}){const h=I=>{if(I.sourceEvent.type!=="wheel"||!t)return;const O=n(),C=I.sourceEvent.ctrlKey&&po()?10:1,m=-I.sourceEvent.deltaY*(I.sourceEvent.deltaMode===1?.05:I.sourceEvent.deltaMode?1:.002)*E,g=O[2]*Math.pow(2,m*C);t.scaleTo(g)};let A=[0,0];const R=I=>{(I.sourceEvent.type==="mousedown"||I.sourceEvent.type==="touchstart")&&(A=[I.sourceEvent.clientX??I.sourceEvent.touches[0].clientX,I.sourceEvent.clientY??I.sourceEvent.touches[0].clientY])},p=I=>{const O=n();if(I.sourceEvent.type!=="mousemove"&&I.sourceEvent.type!=="touchmove"||!t)return;const C=[I.sourceEvent.clientX??I.sourceEvent.touches[0].clientX,I.sourceEvent.clientY??I.sourceEvent.touches[0].clientY],m=[C[0]-A[0],C[1]-A[1]];A=C;const g=r()*Math.max(O[2],Math.log(O[2]))*(f?-1:1),y={x:O[0]-m[0]*g,y:O[1]-m[1]*g},x=[[0,0],[c,d]];t.setViewportConstrained({x:y.x,y:y.y,zoom:O[2]},x,l)},N=Xp().on("start",R).on("zoom",u?p:null).on("zoom.wheel",T?h:null);o.call(N,{})}function a(){o.on("zoom",null)}return{update:s,destroy:a,pointer:at}}const Zi=e=>({x:e.x,y:e.y,zoom:e.k}),Ja=({x:e,y:t,zoom:n})=>Ji.translate(e,t).scale(n),tr=(e,t)=>e.target.closest(`.${t}`),IA=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Bv=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,qa=(e,t=0,n=Bv,r=()=>{})=>{const o=typeof t=="number"&&t>0;return o||r(),o?e.transition().duration(t).ease(n).on("end",r):e},NA=e=>{const t=e.ctrlKey&&po()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Fv({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:o,panOnScrollSpeed:s,zoomOnPinch:a,onPanZoomStart:l,onPanZoom:c,onPanZoomEnd:d}){return E=>{if(tr(E,t))return E.ctrlKey&&E.preventDefault(),!1;E.preventDefault(),E.stopImmediatePropagation();const u=n.property("__zoom").k||1;if(E.ctrlKey&&a){const R=at(E),p=NA(E),N=u*Math.pow(2,p);r.scaleTo(n,N,R,E);return}const T=E.deltaMode===1?20:1;let f=o===xn.Vertical?0:E.deltaX*T,h=o===xn.Horizontal?0:E.deltaY*T;!po()&&E.shiftKey&&o!==xn.Vertical&&(f=E.deltaY*T,h=0),r.translateBy(n,-(f/u)*s,-(h/u)*s,{internal:!0});const A=Zi(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(c==null||c(E,A),e.panScrollTimeout=setTimeout(()=>{d==null||d(E,A),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,l==null||l(E,A))}}function Gv({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,o){const s=r.type==="wheel",a=!t&&s&&!r.ctrlKey,l=tr(r,e);if(r.ctrlKey&&s&&l&&r.preventDefault(),a||l)return null;r.preventDefault(),n.call(this,r,o)}}function Hv({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var s,a,l;if((s=r.sourceEvent)!=null&&s.internal)return;const o=Zi(r.transform);e.mouseButton=((a=r.sourceEvent)==null?void 0:a.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=o,((l=r.sourceEvent)==null?void 0:l.type)==="mousedown"&&t(!0),n&&(n==null||n(r.sourceEvent,o))}}function kv({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:o}){return s=>{var a,l;e.usedRightMouseButton=!!(n&&IA(t,e.mouseButton??0)),(a=s.sourceEvent)!=null&&a.sync||r([s.transform.x,s.transform.y,s.transform.k]),o&&!((l=s.sourceEvent)!=null&&l.internal)&&(o==null||o(s.sourceEvent,Zi(s.transform)))}}function jv({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:o,onPaneContextMenu:s}){return a=>{var l;if(!((l=a.sourceEvent)!=null&&l.internal)&&(e.isZoomingOrPanning=!1,s&&IA(t,e.mouseButton??0)&&!e.usedRightMouseButton&&a.sourceEvent&&s(a.sourceEvent),e.usedRightMouseButton=!1,r(!1),o)){const c=Zi(a.transform);e.prevViewport=c,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o==null||o(a.sourceEvent,c)},n?150:0)}}}function Yv({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:o,zoomOnDoubleClick:s,userSelectionActive:a,noWheelClassName:l,noPanClassName:c,lib:d,connectionInProgress:E}){return u=>{var R;const T=e||t,f=n&&u.ctrlKey,h=u.type==="wheel";if(u.button===1&&u.type==="mousedown"&&(tr(u,`${d}-flow__node`)||tr(u,`${d}-flow__edge`)))return!0;if(!r&&!T&&!o&&!s&&!n||a||E&&!h||tr(u,l)&&h||tr(u,c)&&(!h||o&&h&&!e)||!n&&u.ctrlKey&&h)return!1;if(!n&&u.type==="touchstart"&&((R=u.touches)==null?void 0:R.length)>1)return u.preventDefault(),!1;if(!T&&!o&&!f&&h||!r&&(u.type==="mousedown"||u.type==="touchstart")||Array.isArray(r)&&!r.includes(u.button)&&u.type==="mousedown")return!1;const A=Array.isArray(r)&&r.includes(u.button)||!u.button||u.button<=1;return(!u.ctrlKey||h)&&A}}function Wv({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:o,onPanZoom:s,onPanZoomStart:a,onPanZoomEnd:l,onDraggingChange:c}){const d={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},E=e.getBoundingClientRect(),u=Xp().scaleExtent([t,n]).translateExtent(r),T=Je(e).call(u);N({x:o.x,y:o.y,zoom:pr(o.zoom,t,n)},[[0,0],[E.width,E.height]],r);const f=T.on("wheel.zoom"),h=T.on("dblclick.zoom");u.wheelDelta(NA);function A(D,U){return T?new Promise(F=>{u==null||u.interpolate((U==null?void 0:U.interpolate)==="linear"?zr:ws).transform(qa(T,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>F(!0)),D)}):Promise.resolve(!1)}function R({noWheelClassName:D,noPanClassName:U,onPaneContextMenu:F,userSelectionActive:_,panOnScroll:B,panOnDrag:b,panOnScrollMode:P,panOnScrollSpeed:M,preventScrolling:L,zoomOnPinch:v,zoomOnScroll:G,zoomOnDoubleClick:k,zoomActivationKeyPressed:q,lib:K,onTransformChange:j,connectionInProgress:z,paneClickDistance:Q,selectionOnDrag:X}){_&&!d.isZoomingOrPanning&&p();const Z=B&&!q&&!_;u.clickDistance(X?1/0:!ct(Q)||Q<0?0:Q);const le=Z?Fv({zoomPanValues:d,noWheelClassName:D,d3Selection:T,d3Zoom:u,panOnScrollMode:P,panOnScrollSpeed:M,zoomOnPinch:v,onPanZoomStart:a,onPanZoom:s,onPanZoomEnd:l}):Gv({noWheelClassName:D,preventScrolling:L,d3ZoomHandler:f});if(T.on("wheel.zoom",le,{passive:!1}),!_){const se=Hv({zoomPanValues:d,onDraggingChange:c,onPanZoomStart:a});u.on("start",se);const W=kv({zoomPanValues:d,panOnDrag:b,onPaneContextMenu:!!F,onPanZoom:s,onTransformChange:j});u.on("zoom",W);const ae=jv({zoomPanValues:d,panOnDrag:b,panOnScroll:B,onPaneContextMenu:F,onPanZoomEnd:l,onDraggingChange:c});u.on("end",ae)}const re=Yv({zoomActivationKeyPressed:q,panOnDrag:b,zoomOnScroll:G,panOnScroll:B,zoomOnDoubleClick:k,zoomOnPinch:v,userSelectionActive:_,noPanClassName:U,noWheelClassName:D,lib:K,connectionInProgress:z});u.filter(re),k?T.on("dblclick.zoom",h):T.on("dblclick.zoom",null)}function p(){u.on("zoom",null)}async function N(D,U,F){const _=Ja(D),B=u==null?void 0:u.constrain()(_,U,F);return B&&await A(B),new Promise(b=>b(B))}async function I(D,U){const F=Ja(D);return await A(F,U),new Promise(_=>_(F))}function O(D){if(T){const U=Ja(D),F=T.property("__zoom");(F.k!==D.zoom||F.x!==D.x||F.y!==D.y)&&(u==null||u.transform(T,U,null,{sync:!0}))}}function C(){const D=T?$p(T.node()):{x:0,y:0,k:1};return{x:D.x,y:D.y,zoom:D.k}}function m(D,U){return T?new Promise(F=>{u==null||u.interpolate((U==null?void 0:U.interpolate)==="linear"?zr:ws).scaleTo(qa(T,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>F(!0)),D)}):Promise.resolve(!1)}function g(D,U){return T?new Promise(F=>{u==null||u.interpolate((U==null?void 0:U.interpolate)==="linear"?zr:ws).scaleBy(qa(T,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>F(!0)),D)}):Promise.resolve(!1)}function y(D){u==null||u.scaleExtent(D)}function x(D){u==null||u.translateExtent(D)}function w(D){const U=!ct(D)||D<0?0:D;u==null||u.clickDistance(U)}return{update:R,destroy:p,setViewport:I,setViewportConstrained:N,getViewport:C,scaleTo:m,scaleBy:g,setScaleExtent:y,setTranslateExtent:x,syncViewport:O,setClickDistance:w}}var Ir;(function(e){e.Line="line",e.Handle="handle"})(Ir||(Ir={}));function Vv({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:o,affectsY:s}){const a=e-t,l=n-r,c=[a>0?1:a<0?-1:0,l>0?1:l<0?-1:0];return a&&o&&(c[0]=c[0]*-1),l&&s&&(c[1]=c[1]*-1),c}function Pu(e){const t=e.includes("right")||e.includes("left"),n=e.includes("bottom")||e.includes("top"),r=e.includes("left"),o=e.includes("top");return{isHorizontal:t,isVertical:n,affectsX:r,affectsY:o}}function Kt(e,t){return Math.max(0,t-e)}function zt(e,t){return Math.max(0,e-t)}function ms(e,t,n){return Math.max(0,t-e,e-n)}function vu(e,t){return e?!t:t}function $v(e,t,n,r,o,s,a,l){let{affectsX:c,affectsY:d}=t;const{isHorizontal:E,isVertical:u}=t,T=E&&u,{xSnapped:f,ySnapped:h}=n,{minWidth:A,maxWidth:R,minHeight:p,maxHeight:N}=r,{x:I,y:O,width:C,height:m,aspectRatio:g}=e;let y=Math.floor(E?f-e.pointerX:0),x=Math.floor(u?h-e.pointerY:0);const w=C+(c?-y:y),D=m+(d?-x:x),U=-s[0]*C,F=-s[1]*m;let _=ms(w,A,R),B=ms(D,p,N);if(a){let M=0,L=0;c&&y<0?M=Kt(I+y+U,a[0][0]):!c&&y>0&&(M=zt(I+w+U,a[1][0])),d&&x<0?L=Kt(O+x+F,a[0][1]):!d&&x>0&&(L=zt(O+D+F,a[1][1])),_=Math.max(_,M),B=Math.max(B,L)}if(l){let M=0,L=0;c&&y>0?M=zt(I+y,l[0][0]):!c&&y<0&&(M=Kt(I+w,l[1][0])),d&&x>0?L=zt(O+x,l[0][1]):!d&&x<0&&(L=Kt(O+D,l[1][1])),_=Math.max(_,M),B=Math.max(B,L)}if(o){if(E){const M=ms(w/g,p,N)*g;if(_=Math.max(_,M),a){let L=0;!c&&!d||c&&!d&&T?L=zt(O+F+w/g,a[1][1])*g:L=Kt(O+F+(c?y:-y)/g,a[0][1])*g,_=Math.max(_,L)}if(l){let L=0;!c&&!d||c&&!d&&T?L=Kt(O+w/g,l[1][1])*g:L=zt(O+(c?y:-y)/g,l[0][1])*g,_=Math.max(_,L)}}if(u){const M=ms(D*g,A,R)/g;if(B=Math.max(B,M),a){let L=0;!c&&!d||d&&!c&&T?L=zt(I+D*g+U,a[1][0])/g:L=Kt(I+(d?x:-x)*g+U,a[0][0])/g,B=Math.max(B,L)}if(l){let L=0;!c&&!d||d&&!c&&T?L=Kt(I+D*g,l[1][0])/g:L=zt(I+(d?x:-x)*g,l[0][0])/g,B=Math.max(B,L)}}}x=x+(x<0?B:-B),y=y+(y<0?_:-_),o&&(T?w>D*g?x=(vu(c,d)?-y:y)/g:y=(vu(c,d)?-x:x)*g:E?(x=y/g,d=c):(y=x*g,c=d));const b=c?I+y:I,P=d?O+x:O;return{width:C+(c?-y:y),height:m+(d?-x:x),x:s[0]*y*(c?-1:1)+b,y:s[1]*x*(d?-1:1)+P}}const OA={width:0,height:0,x:0,y:0},Xv={...OA,pointerX:0,pointerY:0,aspectRatio:1};function Kv(e){return[[0,0],[e.measured.width,e.measured.height]]}function zv(e,t,n){const r=t.position.x+e.position.x,o=t.position.y+e.position.y,s=e.measured.width??0,a=e.measured.height??0,l=n[0]*s,c=n[1]*a;return[[r-l,o-c],[r+s-l,o+a-c]]}function Jv({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:o}){const s=Je(e);let a={controlDirection:Pu("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function l({controlPosition:d,boundaries:E,keepAspectRatio:u,resizeDirection:T,onResizeStart:f,onResize:h,onResizeEnd:A,shouldResize:R}){let p={...OA},N={...Xv};a={boundaries:E,resizeDirection:T,keepAspectRatio:u,controlDirection:Pu(d)};let I,O=null,C=[],m,g,y,x=!1;const w=bp().on("start",D=>{const{nodeLookup:U,transform:F,snapGrid:_,snapToGrid:B,nodeOrigin:b,paneDomNode:P}=n();if(I=U.get(t),!I)return;O=(P==null?void 0:P.getBoundingClientRect())??null;const{xSnapped:M,ySnapped:L}=Jr(D.sourceEvent,{transform:F,snapGrid:_,snapToGrid:B,containerBounds:O});p={width:I.measured.width??0,height:I.measured.height??0,x:I.position.x??0,y:I.position.y??0},N={...p,pointerX:M,pointerY:L,aspectRatio:p.width/p.height},m=void 0,I.parentId&&(I.extent==="parent"||I.expandParent)&&(m=U.get(I.parentId),g=m&&I.extent==="parent"?Kv(m):void 0),C=[],y=void 0;for(const[v,G]of U)if(G.parentId===t&&(C.push({id:v,position:{...G.position},extent:G.extent}),G.extent==="parent"||G.expandParent)){const k=zv(G,I,G.origin??b);y?y=[[Math.min(k[0][0],y[0][0]),Math.min(k[0][1],y[0][1])],[Math.max(k[1][0],y[1][0]),Math.max(k[1][1],y[1][1])]]:y=k}f==null||f(D,{...p})}).on("drag",D=>{const{transform:U,snapGrid:F,snapToGrid:_,nodeOrigin:B}=n(),b=Jr(D.sourceEvent,{transform:U,snapGrid:F,snapToGrid:_,containerBounds:O}),P=[];if(!I)return;const{x:M,y:L,width:v,height:G}=p,k={},q=I.origin??B,{width:K,height:j,x:z,y:Q}=$v(N,a.controlDirection,b,a.boundaries,a.keepAspectRatio,q,g,y),X=K!==v,Z=j!==G,le=z!==M&&X,re=Q!==L&&Z;if(!le&&!re&&!X&&!Z)return;if((le||re||q[0]===1||q[1]===1)&&(k.x=le?z:p.x,k.y=re?Q:p.y,p.x=k.x,p.y=k.y,C.length>0)){const Te=z-M,ce=Q-L;for(const ee of C)ee.position={x:ee.position.x-Te+q[0]*(K-v),y:ee.position.y-ce+q[1]*(j-G)},P.push(ee)}if((X||Z)&&(k.width=X&&(!a.resizeDirection||a.resizeDirection==="horizontal")?K:p.width,k.height=Z&&(!a.resizeDirection||a.resizeDirection==="vertical")?j:p.height,p.width=k.width,p.height=k.height),m&&I.expandParent){const Te=q[0]*(k.width??0);k.x&&k.x<Te&&(p.x=Te,N.x=N.x-(k.x-Te));const ce=q[1]*(k.height??0);k.y&&k.y<ce&&(p.y=ce,N.y=N.y-(k.y-ce))}const se=Vv({width:p.width,prevWidth:v,height:p.height,prevHeight:G,affectsX:a.controlDirection.affectsX,affectsY:a.controlDirection.affectsY}),W={...p,direction:se};(R==null?void 0:R(D,W))!==!1&&(x=!0,h==null||h(D,W),r(k,P))}).on("end",D=>{x&&(A==null||A(D,{...p}),o==null||o({...p}),x=!1)});s.call(w)}function c(){s.on(".drag",null)}return{update:l,destroy:c}}var Qa={exports:{}},Za={},el={exports:{}},tl={};/**
736
- * @license React
737
- * use-sync-external-store-shim.production.js
738
- *
739
- * Copyright (c) Meta Platforms, Inc. and affiliates.
740
- *
741
- * This source code is licensed under the MIT license found in the
742
- * LICENSE file in the root directory of this source tree.
743
- */var Uu;function qv(){if(Uu)return tl;Uu=1;var e=Ii();function t(u,T){return u===T&&(u!==0||1/u===1/T)||u!==u&&T!==T}var n=typeof Object.is=="function"?Object.is:t,r=e.useState,o=e.useEffect,s=e.useLayoutEffect,a=e.useDebugValue;function l(u,T){var f=T(),h=r({inst:{value:f,getSnapshot:T}}),A=h[0].inst,R=h[1];return s(function(){A.value=f,A.getSnapshot=T,c(A)&&R({inst:A})},[u,f,T]),o(function(){return c(A)&&R({inst:A}),u(function(){c(A)&&R({inst:A})})},[u]),a(f),f}function c(u){var T=u.getSnapshot;u=u.value;try{var f=T();return!n(u,f)}catch{return!0}}function d(u,T){return T()}var E=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:l;return tl.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:E,tl}var wu;function Qv(){return wu||(wu=1,el.exports=qv()),el.exports}/**
744
- * @license React
745
- * use-sync-external-store-shim/with-selector.production.js
746
- *
747
- * Copyright (c) Meta Platforms, Inc. and affiliates.
748
- *
749
- * This source code is licensed under the MIT license found in the
750
- * LICENSE file in the root directory of this source tree.
751
- */var Bu;function Zv(){if(Bu)return Za;Bu=1;var e=Ii(),t=Qv();function n(d,E){return d===E&&(d!==0||1/d===1/E)||d!==d&&E!==E}var r=typeof Object.is=="function"?Object.is:n,o=t.useSyncExternalStore,s=e.useRef,a=e.useEffect,l=e.useMemo,c=e.useDebugValue;return Za.useSyncExternalStoreWithSelector=function(d,E,u,T,f){var h=s(null);if(h.current===null){var A={hasValue:!1,value:null};h.current=A}else A=h.current;h=l(function(){function p(m){if(!N){if(N=!0,I=m,m=T(m),f!==void 0&&A.hasValue){var g=A.value;if(f(g,m))return O=g}return O=m}if(g=O,r(I,m))return g;var y=T(m);return f!==void 0&&f(g,y)?(I=m,g):(I=m,O=y)}var N=!1,I,O,C=u===void 0?null:u;return[function(){return p(E())},C===null?void 0:function(){return p(C())}]},[E,u,T,f]);var R=o(d,h[0],h[1]);return a(function(){A.hasValue=!0,A.value=R},[R]),c(R),R},Za}var Fu;function eU(){return Fu||(Fu=1,Qa.exports=Zv()),Qa.exports}var tU=eU();const nU=Ni(tU),rU={},Gu=e=>{let t;const n=new Set,r=(E,u)=>{const T=typeof E=="function"?E(t):E;if(!Object.is(T,t)){const f=t;t=u??(typeof T!="object"||T===null)?T:Object.assign({},t,T),n.forEach(h=>h(t,f))}},o=()=>t,c={setState:r,getState:o,getInitialState:()=>d,subscribe:E=>(n.add(E),()=>n.delete(E)),destroy:()=>{(rU?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=t=e(r,o,c);return c},oU=e=>e?Gu(e):Gu,{useDebugValue:sU}=ye,{useSyncExternalStoreWithSelector:iU}=nU,aU=e=>e;function mA(e,t=aU,n){const r=iU(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return sU(r),r}const Hu=(e,t)=>{const n=oU(e),r=(o,s=t)=>mA(n,o,s);return Object.assign(r,n),r},lU=(e,t)=>e?Hu(e,t):Hu;function ge(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,o]of e)if(!Object.is(o,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}const ea=S.createContext(null),cU=ea.Provider,gA=Ct.error001();function Ae(e,t){const n=S.useContext(ea);if(n===null)throw new Error(gA);return mA(n,e,t)}function xe(){const e=S.useContext(ea);if(e===null)throw new Error(gA);return S.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const ku={display:"none"},dU={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},CA="react-flow__node-desc",xA="react-flow__edge-desc",EU="react-flow__aria-live",uU=e=>e.ariaLiveMessage,TU=e=>e.ariaLabelConfig;function fU({rfId:e}){const t=Ae(uU);return i.jsx("div",{id:`${EU}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:dU,children:t})}function SU({rfId:e,disableKeyboardA11y:t}){const n=Ae(TU);return i.jsxs(i.Fragment,{children:[i.jsx("div",{id:`${CA}-${e}`,style:ku,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),i.jsx("div",{id:`${xA}-${e}`,style:ku,children:n["edge.a11yDescription.default"]}),!t&&i.jsx(fU,{rfId:e})]})}const Nr=S.forwardRef(({position:e="top-left",children:t,className:n,style:r,...o},s)=>{const a=`${e}`.split("-");return i.jsx("div",{className:Me(["react-flow__panel",n,...a]),style:r,ref:s,...o,children:t})});Nr.displayName="Panel";function RU({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:i.jsx(Nr,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:i.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const pU=e=>{const t=[],n=[];for(const[,r]of e.nodeLookup)r.selected&&t.push(r.internals.userNode);for(const[,r]of e.edgeLookup)r.selected&&n.push(r);return{selectedNodes:t,selectedEdges:n}},gs=e=>e.id;function AU(e,t){return ge(e.selectedNodes.map(gs),t.selectedNodes.map(gs))&&ge(e.selectedEdges.map(gs),t.selectedEdges.map(gs))}function hU({onSelectionChange:e}){const t=xe(),{selectedNodes:n,selectedEdges:r}=Ae(pU,AU);return S.useEffect(()=>{const o={nodes:n,edges:r};e==null||e(o),t.getState().onSelectionChangeHandlers.forEach(s=>s(o))},[n,r,e]),null}const IU=e=>!!e.onSelectionChangeHandlers;function NU({onSelectionChange:e}){const t=Ae(IU);return e||t?i.jsx(hU,{onSelectionChange:e}):null}const LA=[0,0],OU={x:0,y:0,zoom:1},mU=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],ju=[...mU,"rfId"],gU=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Yu={translateExtent:fo,nodeOrigin:LA,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function CU(e){const{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:o,setTranslateExtent:s,setNodeExtent:a,reset:l,setDefaultNodesAndEdges:c}=Ae(gU,ge),d=xe();S.useEffect(()=>(c(e.defaultNodes,e.defaultEdges),()=>{E.current=Yu,l()}),[]);const E=S.useRef(Yu);return S.useEffect(()=>{for(const u of ju){const T=e[u],f=E.current[u];T!==f&&(typeof e[u]>"u"||(u==="nodes"?t(T):u==="edges"?n(T):u==="minZoom"?r(T):u==="maxZoom"?o(T):u==="translateExtent"?s(T):u==="nodeExtent"?a(T):u==="ariaLabelConfig"?d.setState({ariaLabelConfig:lv(T)}):u==="fitView"?d.setState({fitViewQueued:T}):u==="fitViewOptions"?d.setState({fitViewOptions:T}):d.setState({[u]:T})))}E.current=e},ju.map(u=>e[u])),null}function Wu(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function xU(e){var r;const[t,n]=S.useState(e==="system"?null:e);return S.useEffect(()=>{if(e!=="system"){n(e);return}const o=Wu(),s=()=>n(o!=null&&o.matches?"dark":"light");return s(),o==null||o.addEventListener("change",s),()=>{o==null||o.removeEventListener("change",s)}},[e]),t!==null?t:(r=Wu())!=null&&r.matches?"dark":"light"}const Vu=typeof document<"u"?document:null;function Ao(e=null,t={target:Vu,actInsideInputWithModifier:!0}){const[n,r]=S.useState(!1),o=S.useRef(!1),s=S.useRef(new Set([])),[a,l]=S.useMemo(()=>{if(e!==null){const d=(Array.isArray(e)?e:[e]).filter(u=>typeof u=="string").map(u=>u.replace("+",`
752
- `).replace(`
753
-
754
- `,`
755
- +`).split(`
756
- `)),E=d.reduce((u,T)=>u.concat(...T),[]);return[d,E]}return[[],[]]},[e]);return S.useEffect(()=>{const c=(t==null?void 0:t.target)??Vu,d=(t==null?void 0:t.actInsideInputWithModifier)??!0;if(e!==null){const E=f=>{var R,p;if(o.current=f.ctrlKey||f.metaKey||f.shiftKey||f.altKey,(!o.current||o.current&&!d)&&iA(f))return!1;const A=Xu(f.code,l);if(s.current.add(f[A]),$u(a,s.current,!1)){const N=((p=(R=f.composedPath)==null?void 0:R.call(f))==null?void 0:p[0])||f.target,I=(N==null?void 0:N.nodeName)==="BUTTON"||(N==null?void 0:N.nodeName)==="A";t.preventDefault!==!1&&(o.current||!I)&&f.preventDefault(),r(!0)}},u=f=>{const h=Xu(f.code,l);$u(a,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(f[h]),f.key==="Meta"&&s.current.clear(),o.current=!1},T=()=>{s.current.clear(),r(!1)};return c==null||c.addEventListener("keydown",E),c==null||c.addEventListener("keyup",u),window.addEventListener("blur",T),window.addEventListener("contextmenu",T),()=>{c==null||c.removeEventListener("keydown",E),c==null||c.removeEventListener("keyup",u),window.removeEventListener("blur",T),window.removeEventListener("contextmenu",T)}}},[e,r]),n}function $u(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(o=>t.has(o)))}function Xu(e,t){return t.includes(e)?"code":"key"}const LU=()=>{const e=xe();return S.useMemo(()=>({zoomIn:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{const{panZoom:r}=e.getState();return r?r.scaleTo(t,{duration:n==null?void 0:n.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[r,o,s],panZoom:a}=e.getState();return a?(await a.setViewport({x:t.x??r,y:t.y??o,zoom:t.zoom??s},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{const{width:r,height:o,minZoom:s,maxZoom:a,panZoom:l}=e.getState(),c=Rd(t,r,o,s,a,(n==null?void 0:n.padding)??.1);return l?(await l.setViewport(c,{duration:n==null?void 0:n.duration,ease:n==null?void 0:n.ease,interpolate:n==null?void 0:n.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={})=>{const{transform:r,snapGrid:o,snapToGrid:s,domNode:a}=e.getState();if(!a)return t;const{x:l,y:c}=a.getBoundingClientRect(),d={x:t.x-l,y:t.y-c},E=n.snapGrid??o,u=n.snapToGrid??s;return Uo(d,r,u,E)},flowToScreenPosition:t=>{const{transform:n,domNode:r}=e.getState();if(!r)return t;const{x:o,y:s}=r.getBoundingClientRect(),a=Ti(t,n);return{x:a.x+o,y:a.y+s}}}),[])};function yA(e,t){const n=[],r=new Map,o=[];for(const s of e)if(s.type==="add"){o.push(s);continue}else if(s.type==="remove"||s.type==="replace")r.set(s.id,[s]);else{const a=r.get(s.id);a?a.push(s):r.set(s.id,[s])}for(const s of t){const a=r.get(s.id);if(!a){n.push(s);continue}if(a[0].type==="remove")continue;if(a[0].type==="replace"){n.push({...a[0].item});continue}const l={...s};for(const c of a)yU(c,l);n.push(l)}return o.length&&o.forEach(s=>{s.index!==void 0?n.splice(s.index,0,{...s.item}):n.push({...s.item})}),n}function yU(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function _A(e,t){return yA(e,t)}function DA(e,t){return yA(e,t)}function On(e,t){return{id:e,type:"select",selected:t}}function nr(e,t=new Set,n=!1){const r=[];for(const[o,s]of e){const a=t.has(o);!(s.selected===void 0&&!a)&&s.selected!==a&&(n&&(s.selected=a),r.push(On(s.id,a)))}return r}function Ku({items:e=[],lookup:t}){var o;const n=[],r=new Map(e.map(s=>[s.id,s]));for(const[s,a]of e.entries()){const l=t.get(a.id),c=((o=l==null?void 0:l.internals)==null?void 0:o.userNode)??l;c!==void 0&&c!==a&&n.push({id:a.id,item:a,type:"replace"}),c===void 0&&n.push({item:a,type:"add",index:s})}for(const[s]of t)r.get(s)===void 0&&n.push({id:s,type:"remove"});return n}function zu(e){return{id:e.id,type:"remove"}}const Ju=e=>QP(e),_U=e=>Qp(e);function MA(e){return S.forwardRef(e)}const DU=typeof window<"u"?S.useLayoutEffect:S.useEffect;function qu(e){const[t,n]=S.useState(BigInt(0)),[r]=S.useState(()=>MU(()=>n(o=>o+BigInt(1))));return DU(()=>{const o=r.get();o.length&&(e(o),r.reset())},[t]),r}function MU(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const bA=S.createContext(null);function bU({children:e}){const t=xe(),n=S.useCallback(l=>{const{nodes:c=[],setNodes:d,hasDefaultNodes:E,onNodesChange:u,nodeLookup:T,fitViewQueued:f,onNodesChangeMiddlewareMap:h}=t.getState();let A=c;for(const p of l)A=typeof p=="function"?p(A):p;let R=Ku({items:A,lookup:T});for(const p of h.values())R=p(R);E&&d(A),R.length>0?u==null||u(R):f&&window.requestAnimationFrame(()=>{const{fitViewQueued:p,nodes:N,setNodes:I}=t.getState();p&&I(N)})},[]),r=qu(n),o=S.useCallback(l=>{const{edges:c=[],setEdges:d,hasDefaultEdges:E,onEdgesChange:u,edgeLookup:T}=t.getState();let f=c;for(const h of l)f=typeof h=="function"?h(f):h;E?d(f):u&&u(Ku({items:f,lookup:T}))},[]),s=qu(o),a=S.useMemo(()=>({nodeQueue:r,edgeQueue:s}),[]);return i.jsx(bA.Provider,{value:a,children:e})}function PU(){const e=S.useContext(bA);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const vU=e=>!!e.panZoom;function ta(){const e=LU(),t=xe(),n=PU(),r=Ae(vU),o=S.useMemo(()=>{const s=u=>t.getState().nodeLookup.get(u),a=u=>{n.nodeQueue.push(u)},l=u=>{n.edgeQueue.push(u)},c=u=>{var p,N;const{nodeLookup:T,nodeOrigin:f}=t.getState(),h=Ju(u)?u:T.get(u.id),A=h.parentId?oA(h.position,h.measured,h.parentId,T,f):h.position,R={...h,position:A,width:((p=h.measured)==null?void 0:p.width)??h.width,height:((N=h.measured)==null?void 0:N.height)??h.height};return Ar(R)},d=(u,T,f={replace:!1})=>{a(h=>h.map(A=>{if(A.id===u){const R=typeof T=="function"?T(A):T;return f.replace&&Ju(R)?R:{...A,...R}}return A}))},E=(u,T,f={replace:!1})=>{l(h=>h.map(A=>{if(A.id===u){const R=typeof T=="function"?T(A):T;return f.replace&&_U(R)?R:{...A,...R}}return A}))};return{getNodes:()=>t.getState().nodes.map(u=>({...u})),getNode:u=>{var T;return(T=s(u))==null?void 0:T.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:u=[]}=t.getState();return u.map(T=>({...T}))},getEdge:u=>t.getState().edgeLookup.get(u),setNodes:a,setEdges:l,addNodes:u=>{const T=Array.isArray(u)?u:[u];n.nodeQueue.push(f=>[...f,...T])},addEdges:u=>{const T=Array.isArray(u)?u:[u];n.edgeQueue.push(f=>[...f,...T])},toObject:()=>{const{nodes:u=[],edges:T=[],transform:f}=t.getState(),[h,A,R]=f;return{nodes:u.map(p=>({...p})),edges:T.map(p=>({...p})),viewport:{x:h,y:A,zoom:R}}},deleteElements:async({nodes:u=[],edges:T=[]})=>{const{nodes:f,edges:h,onNodesDelete:A,onEdgesDelete:R,triggerNodeChanges:p,triggerEdgeChanges:N,onDelete:I,onBeforeDelete:O}=t.getState(),{nodes:C,edges:m}=await rv({nodesToRemove:u,edgesToRemove:T,nodes:f,edges:h,onBeforeDelete:O}),g=m.length>0,y=C.length>0;if(g){const x=m.map(zu);R==null||R(m),N(x)}if(y){const x=C.map(zu);A==null||A(C),p(x)}return(y||g)&&(I==null||I({nodes:C,edges:m})),{deletedNodes:C,deletedEdges:m}},getIntersectingNodes:(u,T=!0,f)=>{const h=Ou(u),A=h?u:c(u),R=f!==void 0;return A?(f||t.getState().nodes).filter(p=>{const N=t.getState().nodeLookup.get(p.id);if(N&&!h&&(p.id===u.id||!N.internals.positionAbsolute))return!1;const I=Ar(R?p:N),O=Ro(I,A);return T&&O>0||O>=I.width*I.height||O>=A.width*A.height}):[]},isNodeIntersecting:(u,T,f=!0)=>{const A=Ou(u)?u:c(u);if(!A)return!1;const R=Ro(A,T);return f&&R>0||R>=T.width*T.height||R>=A.width*A.height},updateNode:d,updateNodeData:(u,T,f={replace:!1})=>{d(u,h=>{const A=typeof T=="function"?T(h):T;return f.replace?{...h,data:A}:{...h,data:{...h.data,...A}}},f)},updateEdge:E,updateEdgeData:(u,T,f={replace:!1})=>{E(u,h=>{const A=typeof T=="function"?T(h):T;return f.replace?{...h,data:A}:{...h,data:{...h.data,...A}}},f)},getNodesBounds:u=>{const{nodeLookup:T,nodeOrigin:f}=t.getState();return ZP(u,{nodeLookup:T,nodeOrigin:f})},getHandleConnections:({type:u,id:T,nodeId:f})=>{var h;return Array.from(((h=t.getState().connectionLookup.get(`${f}-${u}${T?`-${T}`:""}`))==null?void 0:h.values())??[])},getNodeConnections:({type:u,handleId:T,nodeId:f})=>{var h;return Array.from(((h=t.getState().connectionLookup.get(`${f}${u?T?`-${u}-${T}`:`-${u}`:""}`))==null?void 0:h.values())??[])},fitView:async u=>{const T=t.getState().fitViewResolver??av();return t.setState({fitViewQueued:!0,fitViewOptions:u,fitViewResolver:T}),n.nodeQueue.push(f=>[...f]),T.promise}}},[]);return S.useMemo(()=>({...o,...e,viewportInitialized:r}),[r])}const Qu=e=>e.selected,UU=typeof window<"u"?window:void 0;function wU({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=xe(),{deleteElements:r}=ta(),o=Ao(e,{actInsideInputWithModifier:!1}),s=Ao(t,{target:UU});S.useEffect(()=>{if(o){const{edges:a,nodes:l}=n.getState();r({nodes:l.filter(Qu),edges:a.filter(Qu)}),n.setState({nodesSelectionActive:!1})}},[o]),S.useEffect(()=>{n.setState({multiSelectionActive:s})},[s])}function BU(e){const t=xe();S.useEffect(()=>{const n=()=>{var o,s,a,l;if(!e.current||!(((s=(o=e.current).checkVisibility)==null?void 0:s.call(o))??!0))return!1;const r=pd(e.current);(r.height===0||r.width===0)&&((l=(a=t.getState()).onError)==null||l.call(a,"004",Ct.error004())),t.setState({width:r.width||500,height:r.height||500})};if(e.current){n(),window.addEventListener("resize",n);const r=new ResizeObserver(()=>n());return r.observe(e.current),()=>{window.removeEventListener("resize",n),r&&e.current&&r.unobserve(e.current)}}},[])}const na={position:"absolute",width:"100%",height:"100%",top:0,left:0},FU=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function GU({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:o=.5,panOnScrollMode:s=xn.Free,zoomOnDoubleClick:a=!0,panOnDrag:l=!0,defaultViewport:c,translateExtent:d,minZoom:E,maxZoom:u,zoomActivationKeyCode:T,preventScrolling:f=!0,children:h,noWheelClassName:A,noPanClassName:R,onViewportChange:p,isControlledViewport:N,paneClickDistance:I,selectionOnDrag:O}){const C=xe(),m=S.useRef(null),{userSelectionActive:g,lib:y,connectionInProgress:x}=Ae(FU,ge),w=Ao(T),D=S.useRef();BU(m);const U=S.useCallback(F=>{p==null||p({x:F[0],y:F[1],zoom:F[2]}),N||C.setState({transform:F})},[p,N]);return S.useEffect(()=>{if(m.current){D.current=Wv({domNode:m.current,minZoom:E,maxZoom:u,translateExtent:d,viewport:c,onDraggingChange:b=>C.setState(P=>P.paneDragging===b?P:{paneDragging:b}),onPanZoomStart:(b,P)=>{const{onViewportChangeStart:M,onMoveStart:L}=C.getState();L==null||L(b,P),M==null||M(P)},onPanZoom:(b,P)=>{const{onViewportChange:M,onMove:L}=C.getState();L==null||L(b,P),M==null||M(P)},onPanZoomEnd:(b,P)=>{const{onViewportChangeEnd:M,onMoveEnd:L}=C.getState();L==null||L(b,P),M==null||M(P)}});const{x:F,y:_,zoom:B}=D.current.getViewport();return C.setState({panZoom:D.current,transform:[F,_,B],domNode:m.current.closest(".react-flow")}),()=>{var b;(b=D.current)==null||b.destroy()}}},[]),S.useEffect(()=>{var F;(F=D.current)==null||F.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:o,panOnScrollMode:s,zoomOnDoubleClick:a,panOnDrag:l,zoomActivationKeyPressed:w,preventScrolling:f,noPanClassName:R,userSelectionActive:g,noWheelClassName:A,lib:y,onTransformChange:U,connectionInProgress:x,selectionOnDrag:O,paneClickDistance:I})},[e,t,n,r,o,s,a,l,w,f,R,g,A,y,U,x,O,I]),i.jsx("div",{className:"react-flow__renderer",ref:m,style:na,children:h})}const HU=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function kU(){const{userSelectionActive:e,userSelectionRect:t}=Ae(HU,ge);return e&&t?i.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const nl=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},jU=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function YU({isSelecting:e,selectionKeyPressed:t,selectionMode:n=So.Full,panOnDrag:r,paneClickDistance:o,selectionOnDrag:s,onSelectionStart:a,onSelectionEnd:l,onPaneClick:c,onPaneContextMenu:d,onPaneScroll:E,onPaneMouseEnter:u,onPaneMouseMove:T,onPaneMouseLeave:f,children:h}){const A=xe(),{userSelectionActive:R,elementsSelectable:p,dragging:N,connectionInProgress:I}=Ae(jU,ge),O=p&&(e||R),C=S.useRef(null),m=S.useRef(),g=S.useRef(new Set),y=S.useRef(new Set),x=S.useRef(!1),w=M=>{if(x.current||I){x.current=!1;return}c==null||c(M),A.getState().resetSelectedElements(),A.setState({nodesSelectionActive:!1})},D=M=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){M.preventDefault();return}d==null||d(M)},U=E?M=>E(M):void 0,F=M=>{x.current&&(M.stopPropagation(),x.current=!1)},_=M=>{var j,z;const{domNode:L}=A.getState();if(m.current=L==null?void 0:L.getBoundingClientRect(),!m.current)return;const v=M.target===C.current;if(!v&&!!M.target.closest(".nokey")||!e||!(s&&v||t)||M.button!==0||!M.isPrimary)return;(z=(j=M.target)==null?void 0:j.setPointerCapture)==null||z.call(j,M.pointerId),x.current=!1;const{x:q,y:K}=dt(M.nativeEvent,m.current);A.setState({userSelectionRect:{width:0,height:0,startX:q,startY:K,x:q,y:K}}),v||(M.stopPropagation(),M.preventDefault())},B=M=>{const{userSelectionRect:L,transform:v,nodeLookup:G,edgeLookup:k,connectionLookup:q,triggerNodeChanges:K,triggerEdgeChanges:j,defaultEdgeOptions:z,resetSelectedElements:Q}=A.getState();if(!m.current||!L)return;const{x:X,y:Z}=dt(M.nativeEvent,m.current),{startX:le,startY:re}=L;if(!x.current){const ce=t?0:o;if(Math.hypot(X-le,Z-re)<=ce)return;Q(),a==null||a(M)}x.current=!0;const se={startX:le,startY:re,x:X<le?X:le,y:Z<re?Z:re,width:Math.abs(X-le),height:Math.abs(Z-re)},W=g.current,ae=y.current;g.current=new Set(Sd(G,se,v,n===So.Partial,!0).map(ce=>ce.id)),y.current=new Set;const Te=(z==null?void 0:z.selectable)??!0;for(const ce of g.current){const ee=q.get(ce);if(ee)for(const{edgeId:he}of ee.values()){const Oe=k.get(he);Oe&&(Oe.selectable??Te)&&y.current.add(he)}}if(!mu(W,g.current)){const ce=nr(G,g.current,!0);K(ce)}if(!mu(ae,y.current)){const ce=nr(k,y.current);j(ce)}A.setState({userSelectionRect:se,userSelectionActive:!0,nodesSelectionActive:!1})},b=M=>{var L,v;M.button===0&&((v=(L=M.target)==null?void 0:L.releasePointerCapture)==null||v.call(L,M.pointerId),!R&&M.target===C.current&&A.getState().userSelectionRect&&(w==null||w(M)),A.setState({userSelectionActive:!1,userSelectionRect:null}),x.current&&(l==null||l(M),A.setState({nodesSelectionActive:g.current.size>0})))},P=r===!0||Array.isArray(r)&&r.includes(0);return i.jsxs("div",{className:Me(["react-flow__pane",{draggable:P,dragging:N,selection:e}]),onClick:O?void 0:nl(w,C),onContextMenu:nl(D,C),onWheel:nl(U,C),onPointerEnter:O?void 0:u,onPointerMove:O?B:T,onPointerUp:O?b:void 0,onPointerDownCapture:O?_:void 0,onClickCapture:O?F:void 0,onPointerLeave:f,ref:C,style:na,children:[h,i.jsx(kU,{})]})}function Rc({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:o,unselectNodesAndEdges:s,multiSelectionActive:a,nodeLookup:l,onError:c}=t.getState(),d=l.get(e);if(!d){c==null||c("012",Ct.error012(e));return}t.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(s({nodes:[d],edges:[]}),requestAnimationFrame(()=>{var E;return(E=r==null?void 0:r.current)==null?void 0:E.blur()})):o([e])}function PA({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:o,isSelectable:s,nodeClickDistance:a}){const l=xe(),[c,d]=S.useState(!1),E=S.useRef();return S.useEffect(()=>{E.current=Dv({getStoreItems:()=>l.getState(),onNodeMouseDown:u=>{Rc({id:u,store:l,nodeRef:e})},onDragStart:()=>{d(!0)},onDragStop:()=>{d(!1)}})},[]),S.useEffect(()=>{if(!(t||!e.current||!E.current))return E.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:s,nodeId:o,nodeClickDistance:a}),()=>{var u;(u=E.current)==null||u.destroy()}},[n,r,t,s,e,o,a]),c}const WU=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function vA(){const e=xe();return S.useCallback(n=>{const{nodeExtent:r,snapToGrid:o,snapGrid:s,nodesDraggable:a,onError:l,updateNodePositions:c,nodeLookup:d,nodeOrigin:E}=e.getState(),u=new Map,T=WU(a),f=o?s[0]:5,h=o?s[1]:5,A=n.direction.x*f*n.factor,R=n.direction.y*h*n.factor;for(const[,p]of d){if(!T(p))continue;let N={x:p.internals.positionAbsolute.x+A,y:p.internals.positionAbsolute.y+R};o&&(N=vo(N,s));const{position:I,positionAbsolute:O}=Zp({nodeId:p.id,nextPosition:N,nodeLookup:d,nodeExtent:r,nodeOrigin:E,onError:l});p.position=I,p.internals.positionAbsolute=O,u.set(p.id,p)}c(u)},[])}const md=S.createContext(null),VU=md.Provider;md.Consumer;const UA=()=>S.useContext(md),$U=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),XU=(e,t,n)=>r=>{const{connectionClickStartHandle:o,connectionMode:s,connection:a}=r,{fromHandle:l,toHandle:c,isValid:d}=a,E=(c==null?void 0:c.nodeId)===e&&(c==null?void 0:c.id)===t&&(c==null?void 0:c.type)===n;return{connectingFrom:(l==null?void 0:l.nodeId)===e&&(l==null?void 0:l.id)===t&&(l==null?void 0:l.type)===n,connectingTo:E,clickConnecting:(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.id)===t&&(o==null?void 0:o.type)===n,isPossibleEndHandle:s===Sr.Strict?(l==null?void 0:l.type)!==n:e!==(l==null?void 0:l.nodeId)||t!==(l==null?void 0:l.id),connectionInProcess:!!l,clickConnectionInProcess:!!o,valid:E&&d}};function KU({type:e="source",position:t=oe.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:o=!0,isConnectableEnd:s=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:E,onTouchStart:u,...T},f){var B,b;const h=a||null,A=e==="target",R=xe(),p=UA(),{connectOnClick:N,noPanClassName:I,rfId:O}=Ae($U,ge),{connectingFrom:C,connectingTo:m,clickConnecting:g,isPossibleEndHandle:y,connectionInProcess:x,clickConnectionInProcess:w,valid:D}=Ae(XU(p,h,e),ge);p||(b=(B=R.getState()).onError)==null||b.call(B,"010",Ct.error010());const U=P=>{const{defaultEdgeOptions:M,onConnect:L,hasDefaultEdges:v}=R.getState(),G={...M,...P};if(v){const{edges:k,setEdges:q}=R.getState();q(fv(G,k))}L==null||L(G),l==null||l(G)},F=P=>{if(!p)return;const M=aA(P.nativeEvent);if(o&&(M&&P.button===0||!M)){const L=R.getState();Sc.onPointerDown(P.nativeEvent,{handleDomNode:P.currentTarget,autoPanOnConnect:L.autoPanOnConnect,connectionMode:L.connectionMode,connectionRadius:L.connectionRadius,domNode:L.domNode,nodeLookup:L.nodeLookup,lib:L.lib,isTarget:A,handleId:h,nodeId:p,flowId:L.rfId,panBy:L.panBy,cancelConnection:L.cancelConnection,onConnectStart:L.onConnectStart,onConnectEnd:(...v)=>{var G,k;return(k=(G=R.getState()).onConnectEnd)==null?void 0:k.call(G,...v)},updateConnection:L.updateConnection,onConnect:U,isValidConnection:n||((...v)=>{var G,k;return((k=(G=R.getState()).isValidConnection)==null?void 0:k.call(G,...v))??!0}),getTransform:()=>R.getState().transform,getFromHandle:()=>R.getState().connection.fromHandle,autoPanSpeed:L.autoPanSpeed,dragThreshold:L.connectionDragThreshold})}M?E==null||E(P):u==null||u(P)},_=P=>{const{onClickConnectStart:M,onClickConnectEnd:L,connectionClickStartHandle:v,connectionMode:G,isValidConnection:k,lib:q,rfId:K,nodeLookup:j,connection:z}=R.getState();if(!p||!v&&!o)return;if(!v){M==null||M(P.nativeEvent,{nodeId:p,handleId:h,handleType:e}),R.setState({connectionClickStartHandle:{nodeId:p,type:e,id:h}});return}const Q=sA(P.target),X=n||k,{connection:Z,isValid:le}=Sc.isValid(P.nativeEvent,{handle:{nodeId:p,id:h,type:e},connectionMode:G,fromNodeId:v.nodeId,fromHandleId:v.id||null,fromType:v.type,isValidConnection:X,flowId:K,doc:Q,lib:q,nodeLookup:j});le&&Z&&U(Z);const re=structuredClone(z);delete re.inProgress,re.toPosition=re.toHandle?re.toHandle.position:null,L==null||L(P,re),R.setState({connectionClickStartHandle:null})};return i.jsx("div",{"data-handleid":h,"data-nodeid":p,"data-handlepos":t,"data-id":`${O}-${p}-${h}-${e}`,className:Me(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",I,d,{source:!A,target:A,connectable:r,connectablestart:o,connectableend:s,clickconnecting:g,connectingfrom:C,connectingto:m,valid:D,connectionindicator:r&&(!x||y)&&(x||w?s:o)}]),onMouseDown:F,onTouchStart:F,onClick:N?_:void 0,ref:f,...T,children:c})}const cn=S.memo(MA(KU));function zU({data:e,isConnectable:t,sourcePosition:n=oe.Bottom}){return i.jsxs(i.Fragment,{children:[e==null?void 0:e.label,i.jsx(cn,{type:"source",position:n,isConnectable:t})]})}function JU({data:e,isConnectable:t,targetPosition:n=oe.Top,sourcePosition:r=oe.Bottom}){return i.jsxs(i.Fragment,{children:[i.jsx(cn,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,i.jsx(cn,{type:"source",position:r,isConnectable:t})]})}function qU(){return null}function QU({data:e,isConnectable:t,targetPosition:n=oe.Top}){return i.jsxs(i.Fragment,{children:[i.jsx(cn,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]})}const fi={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Zu={input:zU,default:JU,output:QU,group:qU};function ZU(e){var t,n,r,o;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((n=e.style)==null?void 0:n.height)}:{width:e.width??((r=e.style)==null?void 0:r.width),height:e.height??((o=e.style)==null?void 0:o.height)}}const ew=e=>{const{width:t,height:n,x:r,y:o}=Po(e.nodeLookup,{filter:s=>!!s.selected});return{width:ct(t)?t:null,height:ct(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${o}px)`}};function tw({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=xe(),{width:o,height:s,transformString:a,userSelectionActive:l}=Ae(ew,ge),c=vA(),d=S.useRef(null);S.useEffect(()=>{var f;n||(f=d.current)==null||f.focus({preventScroll:!0})},[n]);const E=!l&&o!==null&&s!==null;if(PA({nodeRef:d,disabled:!E}),!E)return null;const u=e?f=>{const h=r.getState().nodes.filter(A=>A.selected);e(f,h)}:void 0,T=f=>{Object.prototype.hasOwnProperty.call(fi,f.key)&&(f.preventDefault(),c({direction:fi[f.key],factor:f.shiftKey?4:1}))};return i.jsx("div",{className:Me(["react-flow__nodesselection","react-flow__container",t]),style:{transform:a},children:i.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:u,tabIndex:n?void 0:-1,onKeyDown:n?void 0:T,style:{width:o,height:s}})})}const eT=typeof window<"u"?window:void 0,nw=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function wA({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:a,paneClickDistance:l,deleteKeyCode:c,selectionKeyCode:d,selectionOnDrag:E,selectionMode:u,onSelectionStart:T,onSelectionEnd:f,multiSelectionKeyCode:h,panActivationKeyCode:A,zoomActivationKeyCode:R,elementsSelectable:p,zoomOnScroll:N,zoomOnPinch:I,panOnScroll:O,panOnScrollSpeed:C,panOnScrollMode:m,zoomOnDoubleClick:g,panOnDrag:y,defaultViewport:x,translateExtent:w,minZoom:D,maxZoom:U,preventScrolling:F,onSelectionContextMenu:_,noWheelClassName:B,noPanClassName:b,disableKeyboardA11y:P,onViewportChange:M,isControlledViewport:L}){const{nodesSelectionActive:v,userSelectionActive:G}=Ae(nw,ge),k=Ao(d,{target:eT}),q=Ao(A,{target:eT}),K=q||y,j=q||O,z=E&&K!==!0,Q=k||G||z;return wU({deleteKeyCode:c,multiSelectionKeyCode:h}),i.jsx(GU,{onPaneContextMenu:s,elementsSelectable:p,zoomOnScroll:N,zoomOnPinch:I,panOnScroll:j,panOnScrollSpeed:C,panOnScrollMode:m,zoomOnDoubleClick:g,panOnDrag:!k&&K,defaultViewport:x,translateExtent:w,minZoom:D,maxZoom:U,zoomActivationKeyCode:R,preventScrolling:F,noWheelClassName:B,noPanClassName:b,onViewportChange:M,isControlledViewport:L,paneClickDistance:l,selectionOnDrag:z,children:i.jsxs(YU,{onSelectionStart:T,onSelectionEnd:f,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:a,panOnDrag:K,isSelecting:!!Q,selectionMode:u,selectionKeyPressed:k,paneClickDistance:l,selectionOnDrag:z,children:[e,v&&i.jsx(tw,{onSelectionContextMenu:_,noPanClassName:b,disableKeyboardA11y:P})]})})}wA.displayName="FlowRenderer";const rw=S.memo(wA),ow=e=>t=>e?Sd(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function sw(e){return Ae(S.useCallback(ow(e),[e]),ge)}const iw=e=>e.updateNodeInternals;function aw(){const e=Ae(iw),[t]=S.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const r=new Map;n.forEach(o=>{const s=o.target.getAttribute("data-id");r.set(s,{id:s,nodeElement:o.target,force:!0})}),e(r)}));return S.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function lw({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){const o=xe(),s=S.useRef(null),a=S.useRef(null),l=S.useRef(e.sourcePosition),c=S.useRef(e.targetPosition),d=S.useRef(t),E=n&&!!e.internals.handleBounds;return S.useEffect(()=>{s.current&&!e.hidden&&(!E||a.current!==s.current)&&(a.current&&(r==null||r.unobserve(a.current)),r==null||r.observe(s.current),a.current=s.current)},[E,e.hidden]),S.useEffect(()=>()=>{a.current&&(r==null||r.unobserve(a.current),a.current=null)},[]),S.useEffect(()=>{if(s.current){const u=d.current!==t,T=l.current!==e.sourcePosition,f=c.current!==e.targetPosition;(u||T||f)&&(d.current=t,l.current=e.sourcePosition,c.current=e.targetPosition,o.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),s}function cw({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onContextMenu:s,onDoubleClick:a,nodesDraggable:l,elementsSelectable:c,nodesConnectable:d,nodesFocusable:E,resizeObserver:u,noDragClassName:T,noPanClassName:f,disableKeyboardA11y:h,rfId:A,nodeTypes:R,nodeClickDistance:p,onError:N}){const{node:I,internals:O,isParent:C}=Ae(X=>{const Z=X.nodeLookup.get(e),le=X.parentLookup.has(e);return{node:Z,internals:Z.internals,isParent:le}},ge);let m=I.type||"default",g=(R==null?void 0:R[m])||Zu[m];g===void 0&&(N==null||N("003",Ct.error003(m)),m="default",g=(R==null?void 0:R.default)||Zu.default);const y=!!(I.draggable||l&&typeof I.draggable>"u"),x=!!(I.selectable||c&&typeof I.selectable>"u"),w=!!(I.connectable||d&&typeof I.connectable>"u"),D=!!(I.focusable||E&&typeof I.focusable>"u"),U=xe(),F=rA(I),_=lw({node:I,nodeType:m,hasDimensions:F,resizeObserver:u}),B=PA({nodeRef:_,disabled:I.hidden||!y,noDragClassName:T,handleSelector:I.dragHandle,nodeId:e,isSelectable:x,nodeClickDistance:p}),b=vA();if(I.hidden)return null;const P=kt(I),M=ZU(I),L=x||y||t||n||r||o,v=n?X=>n(X,{...O.userNode}):void 0,G=r?X=>r(X,{...O.userNode}):void 0,k=o?X=>o(X,{...O.userNode}):void 0,q=s?X=>s(X,{...O.userNode}):void 0,K=a?X=>a(X,{...O.userNode}):void 0,j=X=>{const{selectNodesOnDrag:Z,nodeDragThreshold:le}=U.getState();x&&(!Z||!y||le>0)&&Rc({id:e,store:U,nodeRef:_}),t&&t(X,{...O.userNode})},z=X=>{if(!(iA(X.nativeEvent)||h)){if(Kp.includes(X.key)&&x){const Z=X.key==="Escape";Rc({id:e,store:U,unselect:Z,nodeRef:_})}else if(y&&I.selected&&Object.prototype.hasOwnProperty.call(fi,X.key)){X.preventDefault();const{ariaLabelConfig:Z}=U.getState();U.setState({ariaLiveMessage:Z["node.a11yDescription.ariaLiveMessage"]({direction:X.key.replace("Arrow","").toLowerCase(),x:~~O.positionAbsolute.x,y:~~O.positionAbsolute.y})}),b({direction:fi[X.key],factor:X.shiftKey?4:1})}}},Q=()=>{var ae;if(h||!((ae=_.current)!=null&&ae.matches(":focus-visible")))return;const{transform:X,width:Z,height:le,autoPanOnNodeFocus:re,setCenter:se}=U.getState();if(!re)return;Sd(new Map([[e,I]]),{x:0,y:0,width:Z,height:le},X,!0).length>0||se(I.position.x+P.width/2,I.position.y+P.height/2,{zoom:X[2]})};return i.jsx("div",{className:Me(["react-flow__node",`react-flow__node-${m}`,{[f]:y},I.className,{selected:I.selected,selectable:x,parent:C,draggable:y,dragging:B}]),ref:_,style:{zIndex:O.z,transform:`translate(${O.positionAbsolute.x}px,${O.positionAbsolute.y}px)`,pointerEvents:L?"all":"none",visibility:F?"visible":"hidden",...I.style,...M},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:v,onMouseMove:G,onMouseLeave:k,onContextMenu:q,onClick:j,onDoubleClick:K,onKeyDown:D?z:void 0,tabIndex:D?0:void 0,onFocus:D?Q:void 0,role:I.ariaRole??(D?"group":void 0),"aria-roledescription":"node","aria-describedby":h?void 0:`${CA}-${A}`,"aria-label":I.ariaLabel,...I.domAttributes,children:i.jsx(VU,{value:e,children:i.jsx(g,{id:e,data:I.data,type:m,positionAbsoluteX:O.positionAbsolute.x,positionAbsoluteY:O.positionAbsolute.y,selected:I.selected??!1,selectable:x,draggable:y,deletable:I.deletable??!0,isConnectable:w,sourcePosition:I.sourcePosition,targetPosition:I.targetPosition,dragging:B,dragHandle:I.dragHandle,zIndex:O.z,parentId:I.parentId,...P})})})}var dw=S.memo(cw);const Ew=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function BA(e){const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,onError:s}=Ae(Ew,ge),a=sw(e.onlyRenderVisibleElements),l=aw();return i.jsx("div",{className:"react-flow__nodes",style:na,children:a.map(c=>i.jsx(dw,{id:c,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:l,nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,nodeClickDistance:e.nodeClickDistance,onError:s},c))})}BA.displayName="NodeRenderer";const uw=S.memo(BA);function Tw(e){return Ae(S.useCallback(n=>{if(!e)return n.edges.map(o=>o.id);const r=[];if(n.width&&n.height)for(const o of n.edges){const s=n.nodeLookup.get(o.source),a=n.nodeLookup.get(o.target);s&&a&&Ev({sourceNode:s,targetNode:a,width:n.width,height:n.height,transform:n.transform})&&r.push(o.id)}return r},[e]),ge)}const fw=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e}};return i.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},Sw=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e,fill:e}};return i.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},tT={[Rr.Arrow]:fw,[Rr.ArrowClosed]:Sw};function Rw(e){const t=xe();return S.useMemo(()=>{var o,s;return Object.prototype.hasOwnProperty.call(tT,e)?tT[e]:((s=(o=t.getState()).onError)==null||s.call(o,"009",Ct.error009(e)),null)},[e])}const pw=({id:e,type:t,color:n,width:r=12.5,height:o=12.5,markerUnits:s="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=Rw(t);return c?i.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:l,refX:"0",refY:"0",children:i.jsx(c,{color:n,strokeWidth:a})}):null},FA=({defaultColor:e,rfId:t})=>{const n=Ae(s=>s.edges),r=Ae(s=>s.defaultEdgeOptions),o=S.useMemo(()=>hv(n,{id:t,defaultColor:e,defaultMarkerStart:r==null?void 0:r.markerStart,defaultMarkerEnd:r==null?void 0:r.markerEnd}),[n,r,t,e]);return o.length?i.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:i.jsx("defs",{children:o.map(s=>i.jsx(pw,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};FA.displayName="MarkerDefinitions";var Aw=S.memo(FA);function GA({x:e,y:t,label:n,labelStyle:r,labelShowBg:o=!0,labelBgStyle:s,labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...E}){const[u,T]=S.useState({x:1,y:0,width:0,height:0}),f=Me(["react-flow__edge-textwrapper",d]),h=S.useRef(null);return S.useEffect(()=>{if(h.current){const A=h.current.getBBox();T({x:A.x,y:A.y,width:A.width,height:A.height})}},[n]),n?i.jsxs("g",{transform:`translate(${e-u.width/2} ${t-u.height/2})`,className:f,visibility:u.width?"visible":"hidden",...E,children:[o&&i.jsx("rect",{width:u.width+2*a[0],x:-a[0],y:-a[1],height:u.height+2*a[1],className:"react-flow__edge-textbg",style:s,rx:l,ry:l}),i.jsx("text",{className:"react-flow__edge-text",y:u.height/2,dy:"0.3em",ref:h,style:r,children:n}),c]}):null}GA.displayName="EdgeText";const hw=S.memo(GA);function ra({path:e,labelX:t,labelY:n,label:r,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:c,interactionWidth:d=20,...E}){return i.jsxs(i.Fragment,{children:[i.jsx("path",{...E,d:e,fill:"none",className:Me(["react-flow__edge-path",E.className])}),d?i.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:d,className:"react-flow__edge-interaction"}):null,r&&ct(t)&&ct(n)?i.jsx(hw,{x:t,y:n,label:r,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:c}):null]})}function nT({pos:e,x1:t,y1:n,x2:r,y2:o}){return e===oe.Left||e===oe.Right?[.5*(t+r),n]:[t,.5*(n+o)]}function HA({sourceX:e,sourceY:t,sourcePosition:n=oe.Bottom,targetX:r,targetY:o,targetPosition:s=oe.Top}){const[a,l]=nT({pos:n,x1:e,y1:t,x2:r,y2:o}),[c,d]=nT({pos:s,x1:r,y1:o,x2:e,y2:t}),[E,u,T,f]=lA({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:a,sourceControlY:l,targetControlX:c,targetControlY:d});return[`M${e},${t} C${a},${l} ${c},${d} ${r},${o}`,E,u,T,f]}function kA(e){return S.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,sourcePosition:a,targetPosition:l,label:c,labelStyle:d,labelShowBg:E,labelBgStyle:u,labelBgPadding:T,labelBgBorderRadius:f,style:h,markerEnd:A,markerStart:R,interactionWidth:p})=>{const[N,I,O]=HA({sourceX:n,sourceY:r,sourcePosition:a,targetX:o,targetY:s,targetPosition:l}),C=e.isInternal?void 0:t;return i.jsx(ra,{id:C,path:N,labelX:I,labelY:O,label:c,labelStyle:d,labelShowBg:E,labelBgStyle:u,labelBgPadding:T,labelBgBorderRadius:f,style:h,markerEnd:A,markerStart:R,interactionWidth:p})})}const Iw=kA({isInternal:!1}),jA=kA({isInternal:!0});Iw.displayName="SimpleBezierEdge";jA.displayName="SimpleBezierEdgeInternal";function YA(e){return S.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:E,labelBgBorderRadius:u,style:T,sourcePosition:f=oe.Bottom,targetPosition:h=oe.Top,markerEnd:A,markerStart:R,pathOptions:p,interactionWidth:N})=>{const[I,O,C]=uc({sourceX:n,sourceY:r,sourcePosition:f,targetX:o,targetY:s,targetPosition:h,borderRadius:p==null?void 0:p.borderRadius,offset:p==null?void 0:p.offset,stepPosition:p==null?void 0:p.stepPosition}),m=e.isInternal?void 0:t;return i.jsx(ra,{id:m,path:I,labelX:O,labelY:C,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:E,labelBgBorderRadius:u,style:T,markerEnd:A,markerStart:R,interactionWidth:N})})}const WA=YA({isInternal:!1}),VA=YA({isInternal:!0});WA.displayName="SmoothStepEdge";VA.displayName="SmoothStepEdgeInternal";function $A(e){return S.memo(({id:t,...n})=>{var o;const r=e.isInternal?void 0:t;return i.jsx(WA,{...n,id:r,pathOptions:S.useMemo(()=>{var s;return{borderRadius:0,offset:(s=n.pathOptions)==null?void 0:s.offset}},[(o=n.pathOptions)==null?void 0:o.offset])})})}const Nw=$A({isInternal:!1}),XA=$A({isInternal:!0});Nw.displayName="StepEdge";XA.displayName="StepEdgeInternal";function KA(e){return S.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:E,labelBgBorderRadius:u,style:T,markerEnd:f,markerStart:h,interactionWidth:A})=>{const[R,p,N]=EA({sourceX:n,sourceY:r,targetX:o,targetY:s}),I=e.isInternal?void 0:t;return i.jsx(ra,{id:I,path:R,labelX:p,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:E,labelBgBorderRadius:u,style:T,markerEnd:f,markerStart:h,interactionWidth:A})})}const Ow=KA({isInternal:!1}),zA=KA({isInternal:!0});Ow.displayName="StraightEdge";zA.displayName="StraightEdgeInternal";function JA(e){return S.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,sourcePosition:a=oe.Bottom,targetPosition:l=oe.Top,label:c,labelStyle:d,labelShowBg:E,labelBgStyle:u,labelBgPadding:T,labelBgBorderRadius:f,style:h,markerEnd:A,markerStart:R,pathOptions:p,interactionWidth:N})=>{const[I,O,C]=cA({sourceX:n,sourceY:r,sourcePosition:a,targetX:o,targetY:s,targetPosition:l,curvature:p==null?void 0:p.curvature}),m=e.isInternal?void 0:t;return i.jsx(ra,{id:m,path:I,labelX:O,labelY:C,label:c,labelStyle:d,labelShowBg:E,labelBgStyle:u,labelBgPadding:T,labelBgBorderRadius:f,style:h,markerEnd:A,markerStart:R,interactionWidth:N})})}const mw=JA({isInternal:!1}),qA=JA({isInternal:!0});mw.displayName="BezierEdge";qA.displayName="BezierEdgeInternal";const rT={default:qA,straight:zA,step:XA,smoothstep:VA,simplebezier:jA},oT={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},gw=(e,t,n)=>n===oe.Left?e-t:n===oe.Right?e+t:e,Cw=(e,t,n)=>n===oe.Top?e-t:n===oe.Bottom?e+t:e,sT="react-flow__edgeupdater";function iT({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:o,onMouseEnter:s,onMouseOut:a,type:l}){return i.jsx("circle",{onMouseDown:o,onMouseEnter:s,onMouseOut:a,className:Me([sT,`${sT}-${l}`]),cx:gw(t,r,e),cy:Cw(n,r,e),r,stroke:"transparent",fill:"transparent"})}function xw({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:o,targetX:s,targetY:a,sourcePosition:l,targetPosition:c,onReconnect:d,onReconnectStart:E,onReconnectEnd:u,setReconnecting:T,setUpdateHover:f}){const h=xe(),A=(O,C)=>{if(O.button!==0)return;const{autoPanOnConnect:m,domNode:g,connectionMode:y,connectionRadius:x,lib:w,onConnectStart:D,cancelConnection:U,nodeLookup:F,rfId:_,panBy:B,updateConnection:b}=h.getState(),P=C.type==="target",M=(G,k)=>{T(!1),u==null||u(G,n,C.type,k)},L=G=>d==null?void 0:d(n,G),v=(G,k)=>{T(!0),E==null||E(O,n,C.type),D==null||D(G,k)};Sc.onPointerDown(O.nativeEvent,{autoPanOnConnect:m,connectionMode:y,connectionRadius:x,domNode:g,handleId:C.id,nodeId:C.nodeId,nodeLookup:F,isTarget:P,edgeUpdaterType:C.type,lib:w,flowId:_,cancelConnection:U,panBy:B,isValidConnection:(...G)=>{var k,q;return((q=(k=h.getState()).isValidConnection)==null?void 0:q.call(k,...G))??!0},onConnect:L,onConnectStart:v,onConnectEnd:(...G)=>{var k,q;return(q=(k=h.getState()).onConnectEnd)==null?void 0:q.call(k,...G)},onReconnectEnd:M,updateConnection:b,getTransform:()=>h.getState().transform,getFromHandle:()=>h.getState().connection.fromHandle,dragThreshold:h.getState().connectionDragThreshold,handleDomNode:O.currentTarget})},R=O=>A(O,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),p=O=>A(O,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),N=()=>f(!0),I=()=>f(!1);return i.jsxs(i.Fragment,{children:[(e===!0||e==="source")&&i.jsx(iT,{position:l,centerX:r,centerY:o,radius:t,onMouseDown:R,onMouseEnter:N,onMouseOut:I,type:"source"}),(e===!0||e==="target")&&i.jsx(iT,{position:c,centerX:s,centerY:a,radius:t,onMouseDown:p,onMouseEnter:N,onMouseOut:I,type:"target"})]})}function Lw({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:o,onDoubleClick:s,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,reconnectRadius:E,onReconnect:u,onReconnectStart:T,onReconnectEnd:f,rfId:h,edgeTypes:A,noPanClassName:R,onError:p,disableKeyboardA11y:N}){let I=Ae(se=>se.edgeLookup.get(e));const O=Ae(se=>se.defaultEdgeOptions);I=O?{...O,...I}:I;let C=I.type||"default",m=(A==null?void 0:A[C])||rT[C];m===void 0&&(p==null||p("011",Ct.error011(C)),C="default",m=(A==null?void 0:A.default)||rT.default);const g=!!(I.focusable||t&&typeof I.focusable>"u"),y=typeof u<"u"&&(I.reconnectable||n&&typeof I.reconnectable>"u"),x=!!(I.selectable||r&&typeof I.selectable>"u"),w=S.useRef(null),[D,U]=S.useState(!1),[F,_]=S.useState(!1),B=xe(),{zIndex:b,sourceX:P,sourceY:M,targetX:L,targetY:v,sourcePosition:G,targetPosition:k}=Ae(S.useCallback(se=>{const W=se.nodeLookup.get(I.source),ae=se.nodeLookup.get(I.target);if(!W||!ae)return{zIndex:I.zIndex,...oT};const Te=Av({id:e,sourceNode:W,targetNode:ae,sourceHandle:I.sourceHandle||null,targetHandle:I.targetHandle||null,connectionMode:se.connectionMode,onError:p});return{zIndex:dv({selected:I.selected,zIndex:I.zIndex,sourceNode:W,targetNode:ae,elevateOnSelect:se.elevateEdgesOnSelect,zIndexMode:se.zIndexMode}),...Te||oT}},[I.source,I.target,I.sourceHandle,I.targetHandle,I.selected,I.zIndex]),ge),q=S.useMemo(()=>I.markerStart?`url('#${Tc(I.markerStart,h)}')`:void 0,[I.markerStart,h]),K=S.useMemo(()=>I.markerEnd?`url('#${Tc(I.markerEnd,h)}')`:void 0,[I.markerEnd,h]);if(I.hidden||P===null||M===null||L===null||v===null)return null;const j=se=>{var ce;const{addSelectedEdges:W,unselectNodesAndEdges:ae,multiSelectionActive:Te}=B.getState();x&&(B.setState({nodesSelectionActive:!1}),I.selected&&Te?(ae({nodes:[],edges:[I]}),(ce=w.current)==null||ce.blur()):W([e])),o&&o(se,I)},z=s?se=>{s(se,{...I})}:void 0,Q=a?se=>{a(se,{...I})}:void 0,X=l?se=>{l(se,{...I})}:void 0,Z=c?se=>{c(se,{...I})}:void 0,le=d?se=>{d(se,{...I})}:void 0,re=se=>{var W;if(!N&&Kp.includes(se.key)&&x){const{unselectNodesAndEdges:ae,addSelectedEdges:Te}=B.getState();se.key==="Escape"?((W=w.current)==null||W.blur(),ae({edges:[I]})):Te([e])}};return i.jsx("svg",{style:{zIndex:b},children:i.jsxs("g",{className:Me(["react-flow__edge",`react-flow__edge-${C}`,I.className,R,{selected:I.selected,animated:I.animated,inactive:!x&&!o,updating:D,selectable:x}]),onClick:j,onDoubleClick:z,onContextMenu:Q,onMouseEnter:X,onMouseMove:Z,onMouseLeave:le,onKeyDown:g?re:void 0,tabIndex:g?0:void 0,role:I.ariaRole??(g?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":I.ariaLabel===null?void 0:I.ariaLabel||`Edge from ${I.source} to ${I.target}`,"aria-describedby":g?`${xA}-${h}`:void 0,ref:w,...I.domAttributes,children:[!F&&i.jsx(m,{id:e,source:I.source,target:I.target,type:I.type,selected:I.selected,animated:I.animated,selectable:x,deletable:I.deletable??!0,label:I.label,labelStyle:I.labelStyle,labelShowBg:I.labelShowBg,labelBgStyle:I.labelBgStyle,labelBgPadding:I.labelBgPadding,labelBgBorderRadius:I.labelBgBorderRadius,sourceX:P,sourceY:M,targetX:L,targetY:v,sourcePosition:G,targetPosition:k,data:I.data,style:I.style,sourceHandleId:I.sourceHandle,targetHandleId:I.targetHandle,markerStart:q,markerEnd:K,pathOptions:"pathOptions"in I?I.pathOptions:void 0,interactionWidth:I.interactionWidth}),y&&i.jsx(xw,{edge:I,isReconnectable:y,reconnectRadius:E,onReconnect:u,onReconnectStart:T,onReconnectEnd:f,sourceX:P,sourceY:M,targetX:L,targetY:v,sourcePosition:G,targetPosition:k,setUpdateHover:U,setReconnecting:_})]})})}var yw=S.memo(Lw);const _w=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function QA({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:o,onReconnect:s,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:E,reconnectRadius:u,onEdgeDoubleClick:T,onReconnectStart:f,onReconnectEnd:h,disableKeyboardA11y:A}){const{edgesFocusable:R,edgesReconnectable:p,elementsSelectable:N,onError:I}=Ae(_w,ge),O=Tw(t);return i.jsxs("div",{className:"react-flow__edges",children:[i.jsx(Aw,{defaultColor:e,rfId:n}),O.map(C=>i.jsx(yw,{id:C,edgesFocusable:R,edgesReconnectable:p,elementsSelectable:N,noPanClassName:o,onReconnect:s,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:E,reconnectRadius:u,onDoubleClick:T,onReconnectStart:f,onReconnectEnd:h,rfId:n,onError:I,edgeTypes:r,disableKeyboardA11y:A},C))]})}QA.displayName="EdgeRenderer";const Dw=S.memo(QA),Mw=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function bw({children:e}){const t=Ae(Mw);return i.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function Pw(e){const t=ta(),n=S.useRef(!1);S.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const vw=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function Uw(e){const t=Ae(vw),n=xe();return S.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function ww(e){return e.connection.inProgress?{...e.connection,to:Uo(e.connection.to,e.transform)}:{...e.connection}}function Bw(e){return ww}function Fw(e){const t=Bw();return Ae(t,ge)}const Gw=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Hw({containerStyle:e,style:t,type:n,component:r}){const{nodesConnectable:o,width:s,height:a,isValid:l,inProgress:c}=Ae(Gw,ge);return!(s&&o&&c)?null:i.jsx("svg",{style:e,width:s,height:a,className:"react-flow__connectionline react-flow__container",children:i.jsx("g",{className:Me(["react-flow__connection",qp(l)]),children:i.jsx(ZA,{style:t,type:n,CustomComponent:r,isValid:l})})})}const ZA=({style:e,type:t=Zt.Bezier,CustomComponent:n,isValid:r})=>{const{inProgress:o,from:s,fromNode:a,fromHandle:l,fromPosition:c,to:d,toNode:E,toHandle:u,toPosition:T,pointer:f}=Fw();if(!o)return;if(n)return i.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:a,fromHandle:l,fromX:s.x,fromY:s.y,toX:d.x,toY:d.y,fromPosition:c,toPosition:T,connectionStatus:qp(r),toNode:E,toHandle:u,pointer:f});let h="";const A={sourceX:s.x,sourceY:s.y,sourcePosition:c,targetX:d.x,targetY:d.y,targetPosition:T};switch(t){case Zt.Bezier:[h]=cA(A);break;case Zt.SimpleBezier:[h]=HA(A);break;case Zt.Step:[h]=uc({...A,borderRadius:0});break;case Zt.SmoothStep:[h]=uc(A);break;default:[h]=EA(A)}return i.jsx("path",{d:h,fill:"none",className:"react-flow__connection-path",style:e})};ZA.displayName="ConnectionLine";const kw={};function aT(e=kw){S.useRef(e),xe(),S.useEffect(()=>{},[e])}function jw(){xe(),S.useRef(!1),S.useEffect(()=>{},[])}function eh({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:o,onNodeDoubleClick:s,onEdgeDoubleClick:a,onNodeMouseEnter:l,onNodeMouseMove:c,onNodeMouseLeave:d,onNodeContextMenu:E,onSelectionContextMenu:u,onSelectionStart:T,onSelectionEnd:f,connectionLineType:h,connectionLineStyle:A,connectionLineComponent:R,connectionLineContainerStyle:p,selectionKeyCode:N,selectionOnDrag:I,selectionMode:O,multiSelectionKeyCode:C,panActivationKeyCode:m,zoomActivationKeyCode:g,deleteKeyCode:y,onlyRenderVisibleElements:x,elementsSelectable:w,defaultViewport:D,translateExtent:U,minZoom:F,maxZoom:_,preventScrolling:B,defaultMarkerColor:b,zoomOnScroll:P,zoomOnPinch:M,panOnScroll:L,panOnScrollSpeed:v,panOnScrollMode:G,zoomOnDoubleClick:k,panOnDrag:q,onPaneClick:K,onPaneMouseEnter:j,onPaneMouseMove:z,onPaneMouseLeave:Q,onPaneScroll:X,onPaneContextMenu:Z,paneClickDistance:le,nodeClickDistance:re,onEdgeContextMenu:se,onEdgeMouseEnter:W,onEdgeMouseMove:ae,onEdgeMouseLeave:Te,reconnectRadius:ce,onReconnect:ee,onReconnectStart:he,onReconnectEnd:Oe,noDragClassName:ke,noWheelClassName:Sn,noPanClassName:jt,disableKeyboardA11y:Hn,nodeExtent:Bo,rfId:Yt,viewport:yt,onViewportChange:Wt}){return aT(e),aT(t),jw(),Pw(n),Uw(yt),i.jsx(rw,{onPaneClick:K,onPaneMouseEnter:j,onPaneMouseMove:z,onPaneMouseLeave:Q,onPaneContextMenu:Z,onPaneScroll:X,paneClickDistance:le,deleteKeyCode:y,selectionKeyCode:N,selectionOnDrag:I,selectionMode:O,onSelectionStart:T,onSelectionEnd:f,multiSelectionKeyCode:C,panActivationKeyCode:m,zoomActivationKeyCode:g,elementsSelectable:w,zoomOnScroll:P,zoomOnPinch:M,zoomOnDoubleClick:k,panOnScroll:L,panOnScrollSpeed:v,panOnScrollMode:G,panOnDrag:q,defaultViewport:D,translateExtent:U,minZoom:F,maxZoom:_,onSelectionContextMenu:u,preventScrolling:B,noDragClassName:ke,noWheelClassName:Sn,noPanClassName:jt,disableKeyboardA11y:Hn,onViewportChange:Wt,isControlledViewport:!!yt,children:i.jsxs(bw,{children:[i.jsx(Dw,{edgeTypes:t,onEdgeClick:o,onEdgeDoubleClick:a,onReconnect:ee,onReconnectStart:he,onReconnectEnd:Oe,onlyRenderVisibleElements:x,onEdgeContextMenu:se,onEdgeMouseEnter:W,onEdgeMouseMove:ae,onEdgeMouseLeave:Te,reconnectRadius:ce,defaultMarkerColor:b,noPanClassName:jt,disableKeyboardA11y:Hn,rfId:Yt}),i.jsx(Hw,{style:A,type:h,component:R,containerStyle:p}),i.jsx("div",{className:"react-flow__edgelabel-renderer"}),i.jsx(uw,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:s,onNodeMouseEnter:l,onNodeMouseMove:c,onNodeMouseLeave:d,onNodeContextMenu:E,nodeClickDistance:re,onlyRenderVisibleElements:x,noPanClassName:jt,noDragClassName:ke,disableKeyboardA11y:Hn,nodeExtent:Bo,rfId:Yt}),i.jsx("div",{className:"react-flow__viewport-portal"})]})})}eh.displayName="GraphView";const Yw=S.memo(eh),lT=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:a,fitViewOptions:l,minZoom:c=.5,maxZoom:d=2,nodeOrigin:E,nodeExtent:u,zIndexMode:T="basic"}={})=>{const f=new Map,h=new Map,A=new Map,R=new Map,p=r??t??[],N=n??e??[],I=E??[0,0],O=u??fo;fA(A,R,p);const C=fc(N,f,h,{nodeOrigin:I,nodeExtent:O,zIndexMode:T});let m=[0,0,1];if(a&&o&&s){const g=Po(f,{filter:D=>!!((D.width||D.initialWidth)&&(D.height||D.initialHeight))}),{x:y,y:x,zoom:w}=Rd(g,o,s,c,d,(l==null?void 0:l.padding)??.1);m=[y,x,w]}return{rfId:"1",width:o??0,height:s??0,transform:m,nodes:N,nodesInitialized:C,nodeLookup:f,parentLookup:h,edges:p,edgeLookup:R,connectionLookup:A,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:d,translateExtent:fo,nodeExtent:O,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Sr.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:I,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:a??!1,fitViewOptions:l,fitViewResolver:null,connection:{...Jp},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:ov,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:zp,zIndexMode:T,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},Ww=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:a,fitViewOptions:l,minZoom:c,maxZoom:d,nodeOrigin:E,nodeExtent:u,zIndexMode:T})=>lU((f,h)=>{async function A(){const{nodeLookup:R,panZoom:p,fitViewOptions:N,fitViewResolver:I,width:O,height:C,minZoom:m,maxZoom:g}=h();p&&(await nv({nodes:R,width:O,height:C,panZoom:p,minZoom:m,maxZoom:g},N),I==null||I.resolve(!0),f({fitViewResolver:null}))}return{...lT({nodes:e,edges:t,width:o,height:s,fitView:a,fitViewOptions:l,minZoom:c,maxZoom:d,nodeOrigin:E,nodeExtent:u,defaultNodes:n,defaultEdges:r,zIndexMode:T}),setNodes:R=>{const{nodeLookup:p,parentLookup:N,nodeOrigin:I,elevateNodesOnSelect:O,fitViewQueued:C,zIndexMode:m}=h(),g=fc(R,p,N,{nodeOrigin:I,nodeExtent:u,elevateNodesOnSelect:O,checkEquality:!0,zIndexMode:m});C&&g?(A(),f({nodes:R,nodesInitialized:g,fitViewQueued:!1,fitViewOptions:void 0})):f({nodes:R,nodesInitialized:g})},setEdges:R=>{const{connectionLookup:p,edgeLookup:N}=h();fA(p,N,R),f({edges:R})},setDefaultNodesAndEdges:(R,p)=>{if(R){const{setNodes:N}=h();N(R),f({hasDefaultNodes:!0})}if(p){const{setEdges:N}=h();N(p),f({hasDefaultEdges:!0})}},updateNodeInternals:R=>{const{triggerNodeChanges:p,nodeLookup:N,parentLookup:I,domNode:O,nodeOrigin:C,nodeExtent:m,debug:g,fitViewQueued:y,zIndexMode:x}=h(),{changes:w,updatedInternals:D}=xv(R,N,I,O,C,m,x);D&&(Ov(N,I,{nodeOrigin:C,nodeExtent:m,zIndexMode:x}),y?(A(),f({fitViewQueued:!1,fitViewOptions:void 0})):f({}),(w==null?void 0:w.length)>0&&(g&&console.log("React Flow: trigger node changes",w),p==null||p(w)))},updateNodePositions:(R,p=!1)=>{const N=[];let I=[];const{nodeLookup:O,triggerNodeChanges:C,connection:m,updateConnection:g,onNodesChangeMiddlewareMap:y}=h();for(const[x,w]of R){const D=O.get(x),U=!!(D!=null&&D.expandParent&&(D!=null&&D.parentId)&&(w!=null&&w.position)),F={id:x,type:"position",position:U?{x:Math.max(0,w.position.x),y:Math.max(0,w.position.y)}:w.position,dragging:p};if(D&&m.inProgress&&m.fromNode.id===D.id){const _=Pn(D,m.fromHandle,oe.Left,!0);g({...m,from:_})}U&&D.parentId&&N.push({id:x,parentId:D.parentId,rect:{...w.internals.positionAbsolute,width:w.measured.width??0,height:w.measured.height??0}}),I.push(F)}if(N.length>0){const{parentLookup:x,nodeOrigin:w}=h(),D=Od(N,O,x,w);I.push(...D)}for(const x of y.values())I=x(I);C(I)},triggerNodeChanges:R=>{const{onNodesChange:p,setNodes:N,nodes:I,hasDefaultNodes:O,debug:C}=h();if(R!=null&&R.length){if(O){const m=_A(R,I);N(m)}C&&console.log("React Flow: trigger node changes",R),p==null||p(R)}},triggerEdgeChanges:R=>{const{onEdgesChange:p,setEdges:N,edges:I,hasDefaultEdges:O,debug:C}=h();if(R!=null&&R.length){if(O){const m=DA(R,I);N(m)}C&&console.log("React Flow: trigger edge changes",R),p==null||p(R)}},addSelectedNodes:R=>{const{multiSelectionActive:p,edgeLookup:N,nodeLookup:I,triggerNodeChanges:O,triggerEdgeChanges:C}=h();if(p){const m=R.map(g=>On(g,!0));O(m);return}O(nr(I,new Set([...R]),!0)),C(nr(N))},addSelectedEdges:R=>{const{multiSelectionActive:p,edgeLookup:N,nodeLookup:I,triggerNodeChanges:O,triggerEdgeChanges:C}=h();if(p){const m=R.map(g=>On(g,!0));C(m);return}C(nr(N,new Set([...R]))),O(nr(I,new Set,!0))},unselectNodesAndEdges:({nodes:R,edges:p}={})=>{const{edges:N,nodes:I,nodeLookup:O,triggerNodeChanges:C,triggerEdgeChanges:m}=h(),g=R||I,y=p||N,x=[];for(const D of g){if(!D.selected)continue;const U=O.get(D.id);U&&(U.selected=!1),x.push(On(D.id,!1))}const w=[];for(const D of y)D.selected&&w.push(On(D.id,!1));C(x),m(w)},setMinZoom:R=>{const{panZoom:p,maxZoom:N}=h();p==null||p.setScaleExtent([R,N]),f({minZoom:R})},setMaxZoom:R=>{const{panZoom:p,minZoom:N}=h();p==null||p.setScaleExtent([N,R]),f({maxZoom:R})},setTranslateExtent:R=>{var p;(p=h().panZoom)==null||p.setTranslateExtent(R),f({translateExtent:R})},resetSelectedElements:()=>{const{edges:R,nodes:p,triggerNodeChanges:N,triggerEdgeChanges:I,elementsSelectable:O}=h();if(!O)return;const C=p.reduce((g,y)=>y.selected?[...g,On(y.id,!1)]:g,[]),m=R.reduce((g,y)=>y.selected?[...g,On(y.id,!1)]:g,[]);N(C),I(m)},setNodeExtent:R=>{const{nodes:p,nodeLookup:N,parentLookup:I,nodeOrigin:O,elevateNodesOnSelect:C,nodeExtent:m,zIndexMode:g}=h();R[0][0]===m[0][0]&&R[0][1]===m[0][1]&&R[1][0]===m[1][0]&&R[1][1]===m[1][1]||(fc(p,N,I,{nodeOrigin:O,nodeExtent:R,elevateNodesOnSelect:C,checkEquality:!1,zIndexMode:g}),f({nodeExtent:R}))},panBy:R=>{const{transform:p,width:N,height:I,panZoom:O,translateExtent:C}=h();return Lv({delta:R,panZoom:O,transform:p,translateExtent:C,width:N,height:I})},setCenter:async(R,p,N)=>{const{width:I,height:O,maxZoom:C,panZoom:m}=h();if(!m)return Promise.resolve(!1);const g=typeof(N==null?void 0:N.zoom)<"u"?N.zoom:C;return await m.setViewport({x:I/2-R*g,y:O/2-p*g,zoom:g},{duration:N==null?void 0:N.duration,ease:N==null?void 0:N.ease,interpolate:N==null?void 0:N.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{f({connection:{...Jp}})},updateConnection:R=>{f({connection:R})},reset:()=>f({...lT()})}},Object.is);function th({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:o,initialHeight:s,initialMinZoom:a,initialMaxZoom:l,initialFitViewOptions:c,fitView:d,nodeOrigin:E,nodeExtent:u,zIndexMode:T,children:f}){const[h]=S.useState(()=>Ww({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:d,minZoom:a,maxZoom:l,fitViewOptions:c,nodeOrigin:E,nodeExtent:u,zIndexMode:T}));return i.jsx(cU,{value:h,children:i.jsx(bU,{children:f})})}function Vw({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:o,width:s,height:a,fitView:l,fitViewOptions:c,minZoom:d,maxZoom:E,nodeOrigin:u,nodeExtent:T,zIndexMode:f}){return S.useContext(ea)?i.jsx(i.Fragment,{children:e}):i.jsx(th,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:o,initialWidth:s,initialHeight:a,fitView:l,initialFitViewOptions:c,initialMinZoom:d,initialMaxZoom:E,nodeOrigin:u,nodeExtent:T,zIndexMode:f,children:e})}const $w={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function Xw({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:o,nodeTypes:s,edgeTypes:a,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:E,onMoveStart:u,onMoveEnd:T,onConnect:f,onConnectStart:h,onConnectEnd:A,onClickConnectStart:R,onClickConnectEnd:p,onNodeMouseEnter:N,onNodeMouseMove:I,onNodeMouseLeave:O,onNodeContextMenu:C,onNodeDoubleClick:m,onNodeDragStart:g,onNodeDrag:y,onNodeDragStop:x,onNodesDelete:w,onEdgesDelete:D,onDelete:U,onSelectionChange:F,onSelectionDragStart:_,onSelectionDrag:B,onSelectionDragStop:b,onSelectionContextMenu:P,onSelectionStart:M,onSelectionEnd:L,onBeforeDelete:v,connectionMode:G,connectionLineType:k=Zt.Bezier,connectionLineStyle:q,connectionLineComponent:K,connectionLineContainerStyle:j,deleteKeyCode:z="Backspace",selectionKeyCode:Q="Shift",selectionOnDrag:X=!1,selectionMode:Z=So.Full,panActivationKeyCode:le="Space",multiSelectionKeyCode:re=po()?"Meta":"Control",zoomActivationKeyCode:se=po()?"Meta":"Control",snapToGrid:W,snapGrid:ae,onlyRenderVisibleElements:Te=!1,selectNodesOnDrag:ce,nodesDraggable:ee,autoPanOnNodeFocus:he,nodesConnectable:Oe,nodesFocusable:ke,nodeOrigin:Sn=LA,edgesFocusable:jt,edgesReconnectable:Hn,elementsSelectable:Bo=!0,defaultViewport:Yt=OU,minZoom:yt=.5,maxZoom:Wt=2,translateExtent:Fo=fo,preventScrolling:Go=!0,nodeExtent:Dr,defaultMarkerColor:Ho="#b1b1b7",zoomOnScroll:aa=!0,zoomOnPinch:Vt=!0,panOnScroll:ko=!1,panOnScrollSpeed:$t=.5,panOnScrollMode:jo=xn.Free,zoomOnDoubleClick:kn=!0,panOnDrag:Mr=!0,onPaneClick:ot,onPaneMouseEnter:la,onPaneMouseMove:ca,onPaneMouseLeave:da,onPaneScroll:jn,onPaneContextMenu:Rn,paneClickDistance:Ea=1,nodeClickDistance:ua=0,children:br,onReconnect:Ta,onReconnectStart:Yo,onReconnectEnd:Yn,onEdgeContextMenu:Xt,onEdgeDoubleClick:st,onEdgeMouseEnter:Wo,onEdgeMouseMove:fa,onEdgeMouseLeave:Vo,reconnectRadius:Sa=10,onNodesChange:Ra,onEdgesChange:$o,noDragClassName:pa="nodrag",noWheelClassName:Aa="nowheel",noPanClassName:Xo="nopan",fitView:Ko,fitViewOptions:Pr,connectOnClick:zo,attributionPosition:Jo,proOptions:qo,defaultEdgeOptions:Qo,elevateNodesOnSelect:Zo=!0,elevateEdgesOnSelect:es=!1,disableKeyboardA11y:vr=!1,autoPanOnConnect:Y,autoPanOnNodeDrag:ue,autoPanSpeed:Le,connectionRadius:De,isValidConnection:pn,onError:Ur,style:wr,id:Md,nodeDragThreshold:sI,connectionDragThreshold:iI,viewport:aI,onViewportChange:lI,width:cI,height:dI,colorMode:EI="light",debug:uI,onScroll:ts,ariaLabelConfig:TI,zIndexMode:bd="basic",...fI},SI){const ha=Md||"1",RI=xU(EI),pI=S.useCallback(Pd=>{Pd.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),ts==null||ts(Pd)},[ts]);return i.jsx("div",{"data-testid":"rf__wrapper",...fI,onScroll:pI,style:{...wr,...$w},ref:SI,className:Me(["react-flow",o,RI]),id:Md,role:"application",children:i.jsxs(Vw,{nodes:e,edges:t,width:cI,height:dI,fitView:Ko,fitViewOptions:Pr,minZoom:yt,maxZoom:Wt,nodeOrigin:Sn,nodeExtent:Dr,zIndexMode:bd,children:[i.jsx(Yw,{onInit:d,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:N,onNodeMouseMove:I,onNodeMouseLeave:O,onNodeContextMenu:C,onNodeDoubleClick:m,nodeTypes:s,edgeTypes:a,connectionLineType:k,connectionLineStyle:q,connectionLineComponent:K,connectionLineContainerStyle:j,selectionKeyCode:Q,selectionOnDrag:X,selectionMode:Z,deleteKeyCode:z,multiSelectionKeyCode:re,panActivationKeyCode:le,zoomActivationKeyCode:se,onlyRenderVisibleElements:Te,defaultViewport:Yt,translateExtent:Fo,minZoom:yt,maxZoom:Wt,preventScrolling:Go,zoomOnScroll:aa,zoomOnPinch:Vt,zoomOnDoubleClick:kn,panOnScroll:ko,panOnScrollSpeed:$t,panOnScrollMode:jo,panOnDrag:Mr,onPaneClick:ot,onPaneMouseEnter:la,onPaneMouseMove:ca,onPaneMouseLeave:da,onPaneScroll:jn,onPaneContextMenu:Rn,paneClickDistance:Ea,nodeClickDistance:ua,onSelectionContextMenu:P,onSelectionStart:M,onSelectionEnd:L,onReconnect:Ta,onReconnectStart:Yo,onReconnectEnd:Yn,onEdgeContextMenu:Xt,onEdgeDoubleClick:st,onEdgeMouseEnter:Wo,onEdgeMouseMove:fa,onEdgeMouseLeave:Vo,reconnectRadius:Sa,defaultMarkerColor:Ho,noDragClassName:pa,noWheelClassName:Aa,noPanClassName:Xo,rfId:ha,disableKeyboardA11y:vr,nodeExtent:Dr,viewport:aI,onViewportChange:lI}),i.jsx(CU,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:f,onConnectStart:h,onConnectEnd:A,onClickConnectStart:R,onClickConnectEnd:p,nodesDraggable:ee,autoPanOnNodeFocus:he,nodesConnectable:Oe,nodesFocusable:ke,edgesFocusable:jt,edgesReconnectable:Hn,elementsSelectable:Bo,elevateNodesOnSelect:Zo,elevateEdgesOnSelect:es,minZoom:yt,maxZoom:Wt,nodeExtent:Dr,onNodesChange:Ra,onEdgesChange:$o,snapToGrid:W,snapGrid:ae,connectionMode:G,translateExtent:Fo,connectOnClick:zo,defaultEdgeOptions:Qo,fitView:Ko,fitViewOptions:Pr,onNodesDelete:w,onEdgesDelete:D,onDelete:U,onNodeDragStart:g,onNodeDrag:y,onNodeDragStop:x,onSelectionDrag:B,onSelectionDragStart:_,onSelectionDragStop:b,onMove:E,onMoveStart:u,onMoveEnd:T,noPanClassName:Xo,nodeOrigin:Sn,rfId:ha,autoPanOnConnect:Y,autoPanOnNodeDrag:ue,autoPanSpeed:Le,onError:Ur,connectionRadius:De,isValidConnection:pn,selectNodesOnDrag:ce,nodeDragThreshold:sI,connectionDragThreshold:iI,onBeforeDelete:v,debug:uI,ariaLabelConfig:TI,zIndexMode:bd}),i.jsx(NU,{onSelectionChange:F}),br,i.jsx(RU,{proOptions:qo,position:Jo}),i.jsx(SU,{rfId:ha,disableKeyboardA11y:vr})]})})}var nh=MA(Xw);function rh(e){const[t,n]=S.useState(e),r=S.useCallback(o=>n(s=>_A(o,s)),[]);return[t,n,r]}function oh(e){const[t,n]=S.useState(e),r=S.useCallback(o=>n(s=>DA(o,s)),[]);return[t,n,r]}function Kw({dimensions:e,lineWidth:t,variant:n,className:r}){return i.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:Me(["react-flow__background-pattern",n,r])})}function zw({radius:e,className:t}){return i.jsx("circle",{cx:e,cy:e,r:e,className:Me(["react-flow__background-pattern","dots",t])})}var rn;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(rn||(rn={}));const Jw={[rn.Dots]:1,[rn.Lines]:1,[rn.Cross]:6},qw=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function sh({id:e,variant:t=rn.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=0,color:a,bgColor:l,style:c,className:d,patternClassName:E}){const u=S.useRef(null),{transform:T,patternId:f}=Ae(qw,ge),h=r||Jw[t],A=t===rn.Dots,R=t===rn.Cross,p=Array.isArray(n)?n:[n,n],N=[p[0]*T[2]||1,p[1]*T[2]||1],I=h*T[2],O=Array.isArray(s)?s:[s,s],C=R?[I,I]:N,m=[O[0]*T[2]||1+C[0]/2,O[1]*T[2]||1+C[1]/2],g=`${f}${e||""}`;return i.jsxs("svg",{className:Me(["react-flow__background",d]),style:{...c,...na,"--xy-background-color-props":l,"--xy-background-pattern-color-props":a},ref:u,"data-testid":"rf__background",children:[i.jsx("pattern",{id:g,x:T[0]%N[0],y:T[1]%N[1],width:N[0],height:N[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${m[0]},-${m[1]})`,children:A?i.jsx(zw,{radius:I/2,className:E}):i.jsx(Kw,{dimensions:C,lineWidth:o,variant:t,className:E})}),i.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${g})`})]})}sh.displayName="Background";const ih=S.memo(sh);function Qw(){return i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:i.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function Zw(){return i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:i.jsx("path",{d:"M0 0h32v4.2H0z"})})}function eB(){return i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:i.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function tB(){return i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:i.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function nB(){return i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:i.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Cs({children:e,className:t,...n}){return i.jsx("button",{type:"button",className:Me(["react-flow__controls-button",t]),...n,children:e})}const rB=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function ah({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:o,onZoomIn:s,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:E,position:u="bottom-left",orientation:T="vertical","aria-label":f}){const h=xe(),{isInteractive:A,minZoomReached:R,maxZoomReached:p,ariaLabelConfig:N}=Ae(rB,ge),{zoomIn:I,zoomOut:O,fitView:C}=ta(),m=()=>{I(),s==null||s()},g=()=>{O(),a==null||a()},y=()=>{C(o),l==null||l()},x=()=>{h.setState({nodesDraggable:!A,nodesConnectable:!A,elementsSelectable:!A}),c==null||c(!A)},w=T==="horizontal"?"horizontal":"vertical";return i.jsxs(Nr,{className:Me(["react-flow__controls",w,d]),position:u,style:e,"data-testid":"rf__controls","aria-label":f??N["controls.ariaLabel"],children:[t&&i.jsxs(i.Fragment,{children:[i.jsx(Cs,{onClick:m,className:"react-flow__controls-zoomin",title:N["controls.zoomIn.ariaLabel"],"aria-label":N["controls.zoomIn.ariaLabel"],disabled:p,children:i.jsx(Qw,{})}),i.jsx(Cs,{onClick:g,className:"react-flow__controls-zoomout",title:N["controls.zoomOut.ariaLabel"],"aria-label":N["controls.zoomOut.ariaLabel"],disabled:R,children:i.jsx(Zw,{})})]}),n&&i.jsx(Cs,{className:"react-flow__controls-fitview",onClick:y,title:N["controls.fitView.ariaLabel"],"aria-label":N["controls.fitView.ariaLabel"],children:i.jsx(eB,{})}),r&&i.jsx(Cs,{className:"react-flow__controls-interactive",onClick:x,title:N["controls.interactive.ariaLabel"],"aria-label":N["controls.interactive.ariaLabel"],children:A?i.jsx(nB,{}):i.jsx(tB,{})}),E]})}ah.displayName="Controls";const oB=S.memo(ah);function sB({id:e,x:t,y:n,width:r,height:o,style:s,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:E,shapeRendering:u,selected:T,onClick:f}){const{background:h,backgroundColor:A}=s||{},R=a||h||A;return i.jsx("rect",{className:Me(["react-flow__minimap-node",{selected:T},d]),x:t,y:n,rx:E,ry:E,width:r,height:o,style:{fill:R,stroke:l,strokeWidth:c},shapeRendering:u,onClick:f?p=>f(p,e):void 0})}const iB=S.memo(sB),aB=e=>e.nodes.map(t=>t.id),rl=e=>e instanceof Function?e:()=>e;function lB({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o,nodeComponent:s=iB,onClick:a}){const l=Ae(aB,ge),c=rl(t),d=rl(e),E=rl(n),u=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return i.jsx(i.Fragment,{children:l.map(T=>i.jsx(dB,{id:T,nodeColorFunc:c,nodeStrokeColorFunc:d,nodeClassNameFunc:E,nodeBorderRadius:r,nodeStrokeWidth:o,NodeComponent:s,onClick:a,shapeRendering:u},T))})}function cB({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:o,nodeStrokeWidth:s,shapeRendering:a,NodeComponent:l,onClick:c}){const{node:d,x:E,y:u,width:T,height:f}=Ae(h=>{const A=h.nodeLookup.get(e);if(!A)return{node:void 0,x:0,y:0,width:0,height:0};const R=A.internals.userNode,{x:p,y:N}=A.internals.positionAbsolute,{width:I,height:O}=kt(R);return{node:R,x:p,y:N,width:I,height:O}},ge);return!d||d.hidden||!rA(d)?null:i.jsx(l,{x:E,y:u,width:T,height:f,style:d.style,selected:!!d.selected,className:r(d),color:t(d),borderRadius:o,strokeColor:n(d),strokeWidth:s,shapeRendering:a,onClick:c,id:d.id})}const dB=S.memo(cB);var EB=S.memo(lB);const uB=200,TB=150,fB=e=>!e.hidden,SB=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?nA(Po(e.nodeLookup,{filter:fB}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},RB="react-flow__minimap-desc";function lh({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:a,nodeComponent:l,bgColor:c,maskColor:d,maskStrokeColor:E,maskStrokeWidth:u,position:T="bottom-right",onClick:f,onNodeClick:h,pannable:A=!1,zoomable:R=!1,ariaLabel:p,inversePan:N,zoomStep:I=1,offsetScale:O=5}){const C=xe(),m=S.useRef(null),{boundingRect:g,viewBB:y,rfId:x,panZoom:w,translateExtent:D,flowWidth:U,flowHeight:F,ariaLabelConfig:_}=Ae(SB,ge),B=(e==null?void 0:e.width)??uB,b=(e==null?void 0:e.height)??TB,P=g.width/B,M=g.height/b,L=Math.max(P,M),v=L*B,G=L*b,k=O*L,q=g.x-(v-g.width)/2-k,K=g.y-(G-g.height)/2-k,j=v+k*2,z=G+k*2,Q=`${RB}-${x}`,X=S.useRef(0),Z=S.useRef();X.current=L,S.useEffect(()=>{if(m.current&&w)return Z.current=wv({domNode:m.current,panZoom:w,getTransform:()=>C.getState().transform,getViewScale:()=>X.current}),()=>{var W;(W=Z.current)==null||W.destroy()}},[w]),S.useEffect(()=>{var W;(W=Z.current)==null||W.update({translateExtent:D,width:U,height:F,inversePan:N,pannable:A,zoomStep:I,zoomable:R})},[A,R,N,I,D,U,F]);const le=f?W=>{var ce;const[ae,Te]=((ce=Z.current)==null?void 0:ce.pointer(W))||[0,0];f(W,{x:ae,y:Te})}:void 0,re=h?S.useCallback((W,ae)=>{const Te=C.getState().nodeLookup.get(ae).internals.userNode;h(W,Te)},[]):void 0,se=p??_["minimap.ariaLabel"];return i.jsx(Nr,{position:T,style:{...e,"--xy-minimap-background-color-props":typeof c=="string"?c:void 0,"--xy-minimap-mask-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-stroke-color-props":typeof E=="string"?E:void 0,"--xy-minimap-mask-stroke-width-props":typeof u=="number"?u*L:void 0,"--xy-minimap-node-background-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof a=="number"?a:void 0},className:Me(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:i.jsxs("svg",{width:B,height:b,viewBox:`${q} ${K} ${j} ${z}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Q,ref:m,onClick:le,children:[se&&i.jsx("title",{id:Q,children:se}),i.jsx(EB,{onClick:re,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:a,nodeComponent:l}),i.jsx("path",{className:"react-flow__minimap-mask",d:`M${q-k},${K-k}h${j+k*2}v${z+k*2}h${-j-k*2}z
757
- M${y.x},${y.y}h${y.width}v${y.height}h${-y.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}lh.displayName="MiniMap";const pB=S.memo(lh),AB=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,hB={[Ir.Line]:"right",[Ir.Handle]:"bottom-right"};function IB({nodeId:e,position:t,variant:n=Ir.Handle,className:r,style:o=void 0,children:s,color:a,minWidth:l=10,minHeight:c=10,maxWidth:d=Number.MAX_VALUE,maxHeight:E=Number.MAX_VALUE,keepAspectRatio:u=!1,resizeDirection:T,autoScale:f=!0,shouldResize:h,onResizeStart:A,onResize:R,onResizeEnd:p}){const N=UA(),I=typeof e=="string"?e:N,O=xe(),C=S.useRef(null),m=n===Ir.Handle,g=Ae(S.useCallback(AB(m&&f),[m,f]),ge),y=S.useRef(null),x=t??hB[n];S.useEffect(()=>{if(!(!C.current||!I))return y.current||(y.current=Jv({domNode:C.current,nodeId:I,getStoreItems:()=>{const{nodeLookup:D,transform:U,snapGrid:F,snapToGrid:_,nodeOrigin:B,domNode:b}=O.getState();return{nodeLookup:D,transform:U,snapGrid:F,snapToGrid:_,nodeOrigin:B,paneDomNode:b}},onChange:(D,U)=>{const{triggerNodeChanges:F,nodeLookup:_,parentLookup:B,nodeOrigin:b}=O.getState(),P=[],M={x:D.x,y:D.y},L=_.get(I);if(L&&L.expandParent&&L.parentId){const v=L.origin??b,G=D.width??L.measured.width??0,k=D.height??L.measured.height??0,q={id:L.id,parentId:L.parentId,rect:{width:G,height:k,...oA({x:D.x??L.position.x,y:D.y??L.position.y},{width:G,height:k},L.parentId,_,v)}},K=Od([q],_,B,b);P.push(...K),M.x=D.x?Math.max(v[0]*G,D.x):void 0,M.y=D.y?Math.max(v[1]*k,D.y):void 0}if(M.x!==void 0&&M.y!==void 0){const v={id:I,type:"position",position:{...M}};P.push(v)}if(D.width!==void 0&&D.height!==void 0){const G={id:I,type:"dimensions",resizing:!0,setAttributes:T?T==="horizontal"?"width":"height":!0,dimensions:{width:D.width,height:D.height}};P.push(G)}for(const v of U){const G={...v,type:"position"};P.push(G)}F(P)},onEnd:({width:D,height:U})=>{const F={id:I,type:"dimensions",resizing:!1,dimensions:{width:D,height:U}};O.getState().triggerNodeChanges([F])}})),y.current.update({controlPosition:x,boundaries:{minWidth:l,minHeight:c,maxWidth:d,maxHeight:E},keepAspectRatio:u,resizeDirection:T,onResizeStart:A,onResize:R,onResizeEnd:p,shouldResize:h}),()=>{var D;(D=y.current)==null||D.destroy()}},[x,l,c,d,E,u,A,R,p,h]);const w=x.split("-");return i.jsx("div",{className:Me(["react-flow__resize-control","nodrag",...w,n,r]),ref:C,style:{...o,scale:g,...a&&{[m?"backgroundColor":"borderColor"]:a}},children:s})}S.memo(IB);var ch=Object.defineProperty,NB=(e,t,n)=>t in e?ch(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,OB=(e,t)=>{for(var n in t)ch(e,n,{get:t[n],enumerable:!0})},mB=(e,t,n)=>NB(e,t+"",n),dh={};OB(dh,{Graph:()=>rt,alg:()=>gd,json:()=>uh,version:()=>xB});var gB=Object.defineProperty,Eh=(e,t)=>{for(var n in t)gB(e,n,{get:t[n],enumerable:!0})},rt=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected="directed"in e?e.directed:!0,this._isMultigraph="multigraph"in e?e.multigraph:!1,this._isCompound="compound"in e?e.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!="function"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,t){return e.forEach(n=>{t!==void 0?this.setNode(n,t):this.setNode(n)}),this}setNode(e,t){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]="\0",this._children[e]={},this._children["\0"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let t=n=>this.removeEdge(this._edgeObjs[n]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(n=>{this.setParent(n)}),delete this._children[e]),Object.keys(this._in[e]).forEach(t),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t===void 0)t="\0";else{t+="";for(let n=t;n!==void 0;n=this.parent(n))if(n===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}parent(e){if(this._isCompound){let t=this._parent[e];if(t!=="\0")return t}}children(e="\0"){if(this._isCompound){let t=this._children[e];if(t)return Object.keys(t)}else{if(e==="\0")return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let t=this._preds[e];if(t)return Object.keys(t)}successors(e){let t=this._sucs[e];if(t)return Object.keys(t)}neighbors(e){let t=this.predecessors(e);if(t){let n=new Set(t);for(let r of this.successors(e))n.add(r);return Array.from(n.values())}}isLeaf(e){let t;return this.isDirected()?t=this.successors(e):t=this.neighbors(e),t.length===0}filterNodes(e){let t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,s])=>{e(o)&&t.setNode(o,s)}),Object.values(this._edgeObjs).forEach(o=>{t.hasNode(o.v)&&t.hasNode(o.w)&&t.setEdge(o,this.edge(o))});let n={},r=o=>{let s=this.parent(o);return!s||t.hasNode(s)?(n[o]=s??void 0,s??void 0):s in n?n[s]:r(s)};return this._isCompound&&t.nodes().forEach(o=>t.setParent(o,r(o))),t}setDefaultEdgeLabel(e){return typeof e!="function"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,t){return e.reduce((n,r)=>(t!==void 0?this.setEdge(n,r,t):this.setEdge(n,r),r)),this}setEdge(e,t,n,r){let o,s,a,l,c=!1;typeof e=="object"&&e!==null&&"v"in e?(o=e.v,s=e.w,a=e.name,arguments.length===2&&(l=t,c=!0)):(o=e,s=t,a=r,arguments.length>2&&(l=n,c=!0)),o=""+o,s=""+s,a!==void 0&&(a=""+a);let d=$r(this._isDirected,o,s,a);if(d in this._edgeLabels)return c&&(this._edgeLabels[d]=l),this;if(a!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(o),this.setNode(s),this._edgeLabels[d]=c?l:this._defaultEdgeLabelFn(o,s,a);let E=CB(this._isDirected,o,s,a);return o=E.v,s=E.w,Object.freeze(E),this._edgeObjs[d]=E,cT(this._preds[s],o),cT(this._sucs[o],s),this._in[s][d]=E,this._out[o][d]=E,this._edgeCount++,this}edge(e,t,n){let r=arguments.length===1?ol(this._isDirected,e):$r(this._isDirected,e,t,n);return this._edgeLabels[r]}edgeAsObj(e,t,n){let r=arguments.length===1?this.edge(e):this.edge(e,t,n);return typeof r!="object"?{label:r}:r}hasEdge(e,t,n){return(arguments.length===1?ol(this._isDirected,e):$r(this._isDirected,e,t,n))in this._edgeLabels}removeEdge(e,t,n){let r=arguments.length===1?ol(this._isDirected,e):$r(this._isDirected,e,t,n),o=this._edgeObjs[r];if(o){let s=o.v,a=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],dT(this._preds[a],s),dT(this._sucs[s],a),delete this._in[a][r],delete this._out[s][r],this._edgeCount--}return this}inEdges(e,t){return this.isDirected()?this.filterEdges(this._in[e],e,t):this.nodeEdges(e,t)}outEdges(e,t){return this.isDirected()?this.filterEdges(this._out[e],e,t):this.nodeEdges(e,t)}nodeEdges(e,t){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,t)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,t,n){if(!e)return;let r=Object.values(e);return n?r.filter(o=>o.v===t&&o.w===n||o.v===n&&o.w===t):r}};function cT(e,t){e[t]?e[t]++:e[t]=1}function dT(e,t){e[t]!==void 0&&!--e[t]&&delete e[t]}function $r(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let a=o;o=s,s=a}return o+""+s+""+(r===void 0?"\0":r)}function CB(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let l=o;o=s,s=l}let a={v:o,w:s};return r&&(a.name=r),a}function ol(e,t){return $r(e,t.v,t.w,t.name)}var xB="4.0.1",uh={};Eh(uh,{read:()=>DB,write:()=>LB});function LB(e){let t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:yB(e),edges:_B(e)},n=e.graph();return n!==void 0&&(t.value=structuredClone(n)),t}function yB(e){return e.nodes().map(t=>{let n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function _B(e){return e.edges().map(t=>{let n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function DB(e){let t=new rt(e.options);return e.value!==void 0&&t.setGraph(e.value),e.nodes.forEach(n=>{t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(n=>{t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var gd={};Eh(gd,{CycleException:()=>Ri,bellmanFord:()=>Th,components:()=>PB,dijkstra:()=>Si,dijkstraAll:()=>wB,findCycles:()=>BB,floydWarshall:()=>GB,isAcyclic:()=>kB,postorder:()=>YB,preorder:()=>WB,prim:()=>VB,shortestPaths:()=>$B,tarjan:()=>Sh,topsort:()=>Rh});var MB=()=>1;function Th(e,t,n,r){return bB(e,String(t),n||MB,r||function(o){return e.outEdges(o)})}function bB(e,t,n,r){let o={},s,a=0,l=e.nodes(),c=function(u){let T=n(u);o[u.v].distance+T<o[u.w].distance&&(o[u.w]={distance:o[u.v].distance+T,predecessor:u.v},s=!0)},d=function(){l.forEach(function(u){r(u).forEach(function(T){let f=T.v===u?T.v:T.w,h=f===T.v?T.w:T.v;c({v:f,w:h})})})};l.forEach(function(u){let T=u===t?0:Number.POSITIVE_INFINITY;o[u]={distance:T,predecessor:""}});let E=l.length;for(let u=1;u<E&&(s=!1,a++,d(),!!s);u++);if(a===E-1&&(s=!1,d(),s))throw new Error("The graph contains a negative weight cycle");return o}function PB(e){let t={},n=[],r;function o(s){s in t||(t[s]=!0,r.push(s),e.successors(s).forEach(o),e.predecessors(s).forEach(o))}return e.nodes().forEach(function(s){r=[],o(s),r.length&&n.push(r)}),n}var fh=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let t=this._keyIndices[e];if(t!==void 0)return this._arr[t].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(e,t){let n=this._keyIndices,r=String(e);if(!(r in n)){let o=this._arr,s=o.length;return n[r]=s,o.push({key:r,priority:t}),this._decrease(s),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,t){let n=this._keyIndices[e];if(n===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[n].priority;if(t>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${t}`);this._arr[n].priority=t,this._decrease(n)}_heapify(e){let t=this._arr,n=2*e,r=n+1,o=e;n<t.length&&(o=t[n].priority<t[o].priority?n:o,r<t.length&&(o=t[r].priority<t[o].priority?r:o),o!==e&&(this._swap(e,o),this._heapify(o)))}_decrease(e){let t=this._arr,n=t[e].priority,r;for(;e!==0&&(r=e>>1,!(t[r].priority<n));)this._swap(e,r),e=r}_swap(e,t){let n=this._arr,r=this._keyIndices,o=n[e],s=n[t];n[e]=s,n[t]=o,r[s.key]=e,r[o.key]=t}},vB=()=>1;function Si(e,t,n,r){let o=function(s){return e.outEdges(s)};return UB(e,String(t),n||vB,r||o)}function UB(e,t,n,r){let o={},s=new fh,a,l,c=function(d){let E=d.v!==a?d.v:d.w,u=o[E],T=n(d),f=l.distance+T;if(T<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+d+" Weight: "+T);f<u.distance&&(u.distance=f,u.predecessor=a,s.decrease(E,f))};for(e.nodes().forEach(function(d){let E=d===t?0:Number.POSITIVE_INFINITY;o[d]={distance:E,predecessor:""},s.add(d,E)});s.size()>0&&(a=s.removeMin(),l=o[a],l.distance!==Number.POSITIVE_INFINITY);)r(a).forEach(c);return o}function wB(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=Si(e,o,t,n),r},{})}function Sh(e){let t=0,n=[],r={},o=[];function s(a){let l=r[a]={onStack:!0,lowlink:t,index:t++};if(n.push(a),e.successors(a).forEach(function(c){c in r?r[c].onStack&&(l.lowlink=Math.min(l.lowlink,r[c].index)):(s(c),l.lowlink=Math.min(l.lowlink,r[c].lowlink))}),l.lowlink===l.index){let c=[],d;do d=n.pop(),r[d].onStack=!1,c.push(d);while(a!==d);o.push(c)}}return e.nodes().forEach(function(a){a in r||s(a)}),o}function BB(e){return Sh(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var FB=()=>1;function GB(e,t,n){return HB(e,t||FB,n||function(r){return e.outEdges(r)})}function HB(e,t,n){let r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0,predecessor:""},o.forEach(function(a){s!==a&&(r[s][a]={distance:Number.POSITIVE_INFINITY,predecessor:""})}),n(s).forEach(function(a){let l=a.v===s?a.w:a.v,c=t(a);r[s][l]={distance:c,predecessor:s}})}),o.forEach(function(s){let a=r[s];o.forEach(function(l){let c=r[l];o.forEach(function(d){let E=c[s],u=a[d],T=c[d],f=E.distance+u.distance;f<T.distance&&(T.distance=f,T.predecessor=u.predecessor)})})}),r}var Ri=class extends Error{constructor(...e){super(...e)}};function Rh(e){let t={},n={},r=[];function o(s){if(s in n)throw new Ri;s in t||(n[s]=!0,t[s]=!0,e.predecessors(s).forEach(o),delete n[s],r.push(s))}if(e.sinks().forEach(o),Object.keys(t).length!==e.nodeCount())throw new Ri;return r}function kB(e){try{Rh(e)}catch(t){if(t instanceof Ri)return!1;throw t}return!0}function jB(e,t,n,r,o){Array.isArray(t)||(t=[t]);let s=(l=>{var c;return(c=e.isDirected()?e.successors(l):e.neighbors(l))!=null?c:[]}),a={};return t.forEach(function(l){if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o=ph(e,l,n==="post",a,s,r,o)}),o}function ph(e,t,n,r,o,s,a){return t in r||(r[t]=!0,n||(a=s(a,t)),o(t).forEach(function(l){a=ph(e,l,n,r,o,s,a)}),n&&(a=s(a,t))),a}function Ah(e,t,n){return jB(e,t,n,function(r,o){return r.push(o),r},[])}function YB(e,t){return Ah(e,t,"post")}function WB(e,t){return Ah(e,t,"pre")}function VB(e,t){let n=new rt,r={},o=new fh,s;function a(c){let d=c.v===s?c.w:c.v,E=o.priority(d);if(E!==void 0){let u=t(c);u<E&&(r[d]=s,o.decrease(d,u))}}if(e.nodeCount()===0)return n;e.nodes().forEach(function(c){o.add(c,Number.POSITIVE_INFINITY),n.setNode(c)}),o.decrease(e.nodes()[0],0);let l=!1;for(;o.size()>0;){if(s=o.removeMin(),s in r)n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(a)}return n}function $B(e,t,n,r){return XB(e,t,n,r??(o=>{let s=e.outEdges(o);return s??[]}))}function XB(e,t,n,r){if(n===void 0)return Si(e,t,n,r);let o=!1,s=e.nodes();for(let a=0;a<s.length;a++){let l=r(s[a]);for(let c=0;c<l.length;c++){let d=l[c],E=d.v===s[a]?d.v:d.w,u=E===d.v?d.w:d.v;n({v:E,w:u})<0&&(o=!0)}if(o)return Th(e,t,n,r)}return Si(e,t,n,r)}function yr(e,t,n,r){let o=r;for(;e.hasNode(o);)o=Cd(r);return n.dummy=t,e.setNode(o,n),o}function KB(e){let t=new rt().setGraph(e.graph());return e.nodes().forEach(n=>t.setNode(n,e.node(n))),e.edges().forEach(n=>{let r=t.edge(n.v,n.w)||{weight:0,minlen:1},o=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),t}function hh(e){let t=new rt({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(n=>{e.children(n).length||t.setNode(n,e.node(n))}),e.edges().forEach(n=>{t.setEdge(n,e.edge(n))}),t}function ET(e,t){let n=e.x,r=e.y,o=t.x-n,s=t.y-r,a=e.width/2,l=e.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");let c,d;return Math.abs(s)*a>Math.abs(o)*l?(s<0&&(l=-l),c=l*o/s,d=l):(o<0&&(a=-a),c=a,d=a*s/o),{x:n+c,y:r+d}}function wo(e){let t=ho(Nh(e)+1).map(()=>[]);return e.nodes().forEach(n=>{let r=e.node(n),o=r.rank;o!==void 0&&(t[o]||(t[o]=[]),t[o][r.order]=n)}),t}function zB(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),n=Ot(Math.min,t);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,"rank")&&(o.rank-=n)})}function JB(e){let t=e.nodes().map(a=>e.node(a).rank).filter(a=>a!==void 0),n=Ot(Math.min,t),r=[];e.nodes().forEach(a=>{let l=e.node(a).rank-n;r[l]||(r[l]=[]),r[l].push(a)});let o=0,s=e.graph().nodeRankFactor;Array.from(r).forEach((a,l)=>{a===void 0&&l%s!==0?--o:a!==void 0&&o&&a.forEach(c=>e.node(c).rank+=o)})}function uT(e,t,n,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=r),yr(e,"border",o,t)}function qB(e,t=Ih){let n=[];for(let r=0;r<e.length;r+=t){let o=e.slice(r,r+t);n.push(o)}return n}var Ih=65535;function Ot(e,t){if(t.length>Ih){let n=qB(t);return e(...n.map(r=>e(...r)))}else return e(...t)}function Nh(e){let t=e.nodes().map(n=>{let r=e.node(n).rank;return r===void 0?Number.MIN_VALUE:r});return Ot(Math.max,t)}function QB(e,t){let n={lhs:[],rhs:[]};return e.forEach(r=>{t(r)?n.lhs.push(r):n.rhs.push(r)}),n}function Oh(e,t){let n=Date.now();try{return t()}finally{console.log(e+" time: "+(Date.now()-n)+"ms")}}function mh(e,t){return t()}var ZB=0;function Cd(e){let t=++ZB;return e+(""+t)}function ho(e,t,n=1){t==null&&(t=e,e=0);let r=s=>s<t;n<0&&(r=s=>t<s);let o=[];for(let s=e;r(s);s+=n)o.push(s);return o}function pi(e,t){let n={};for(let r of t)e[r]!==void 0&&(n[r]=e[r]);return n}function oa(e,t){let n;return typeof t=="string"?n=r=>r[t]:n=t,Object.entries(e).reduce((r,[o,s])=>(r[o]=n(s,o),r),{})}function eF(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}var sa="\0",tF="3.0.0",nF=class{constructor(){mB(this,"_sentinel");let e={};e._next=e._prev=e,this._sentinel=e}dequeue(){let e=this._sentinel,t=e._prev;if(t!==e)return TT(t),t}enqueue(e){let t=this._sentinel;e._prev&&e._next&&TT(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){let e=[],t=this._sentinel,n=t._prev;for(;n!==t;)e.push(JSON.stringify(n,rF)),n=n._prev;return"["+e.join(", ")+"]"}};function TT(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function rF(e,t){if(e!=="_next"&&e!=="_prev")return t}var oF=nF,sF=()=>1;function iF(e,t){if(e.nodeCount()<=1)return[];let n=lF(e,t||sF);return aF(n.graph,n.buckets,n.zeroIdx).flatMap(r=>e.outEdges(r.v,r.w)||[])}function aF(e,t,n){var r;let o=[],s=t[t.length-1],a=t[0],l;for(;e.nodeCount();){for(;l=a.dequeue();)sl(e,t,n,l);for(;l=s.dequeue();)sl(e,t,n,l);if(e.nodeCount()){for(let c=t.length-2;c>0;--c)if(l=(r=t[c])==null?void 0:r.dequeue(),l){o=o.concat(sl(e,t,n,l,!0)||[]);break}}}return o}function sl(e,t,n,r,o){let s=[],a=o?s:void 0;return(e.inEdges(r.v)||[]).forEach(l=>{let c=e.edge(l),d=e.node(l.v);o&&s.push({v:l.v,w:l.w}),d.out-=c,pc(t,n,d)}),(e.outEdges(r.v)||[]).forEach(l=>{let c=e.edge(l),d=l.w,E=e.node(d);E.in-=c,pc(t,n,E)}),e.removeNode(r.v),a}function lF(e,t){let n=new rt,r=0,o=0;e.nodes().forEach(l=>{n.setNode(l,{v:l,in:0,out:0})}),e.edges().forEach(l=>{let c=n.edge(l.v,l.w)||0,d=t(l),E=c+d;n.setEdge(l.v,l.w,E);let u=n.node(l.v),T=n.node(l.w);o=Math.max(o,u.out+=d),r=Math.max(r,T.in+=d)});let s=cF(o+r+3).map(()=>new oF),a=r+1;return n.nodes().forEach(l=>{pc(s,a,n.node(l))}),{graph:n,buckets:s,zeroIdx:a}}function pc(e,t,n){var r,o,s;n.out?n.in?(s=e[n.out-n.in+t])==null||s.enqueue(n):(o=e[e.length-1])==null||o.enqueue(n):(r=e[0])==null||r.enqueue(n)}function cF(e){let t=[];for(let n=0;n<e;n++)t.push(n);return t}function dF(e){(e.graph().acyclicer==="greedy"?iF(e,t(e)):EF(e)).forEach(n=>{let r=e.edge(n);e.removeEdge(n),r.forwardName=n.name,r.reversed=!0,e.setEdge(n.w,n.v,r,Cd("rev"))});function t(n){return r=>n.edge(r).weight}}function EF(e){let t=[],n={},r={};function o(s){Object.hasOwn(r,s)||(r[s]=!0,n[s]=!0,e.outEdges(s).forEach(a=>{Object.hasOwn(n,a.w)?t.push(a):o(a.w)}),delete n[s])}return e.nodes().forEach(o),t}function uF(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.reversed){e.removeEdge(t);let r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function TF(e){e.graph().dummyChains=[],e.edges().forEach(t=>fF(e,t))}function fF(e,t){let n=t.v,r=e.node(n).rank,o=t.w,s=e.node(o).rank,a=t.name,l=e.edge(t),c=l.labelRank;if(s===r+1)return;e.removeEdge(t);let d,E,u;for(u=0,++r;r<s;++u,++r)l.points=[],E={width:0,height:0,edgeLabel:l,edgeObj:t,rank:r},d=yr(e,"edge",E,"_d"),r===c&&(E.width=l.width,E.height=l.height,E.dummy="edge-label",E.labelpos=l.labelpos),e.setEdge(n,d,{weight:l.weight},a),u===0&&e.graph().dummyChains.push(d),n=d;e.setEdge(n,o,{weight:l.weight},a)}function SF(e){e.graph().dummyChains.forEach(t=>{let n=e.node(t),r=n.edgeLabel,o;for(e.setEdge(n.edgeObj,r);n.dummy;)o=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),n.dummy==="edge-label"&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=o,n=e.node(t)})}function xd(e){let t={};function n(r){let o=e.node(r);if(Object.hasOwn(t,r))return o.rank;t[r]=!0;let s=e.outEdges(r),a=s?s.map(c=>c==null?Number.POSITIVE_INFINITY:n(c.w)-e.edge(c).minlen):[],l=Ot(Math.min,a);return l===Number.POSITIVE_INFINITY&&(l=0),o.rank=l}e.sources().forEach(n)}function Or(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var gh=RF;function RF(e){let t=new rt({directed:!1}),n=e.nodes();if(n.length===0)throw new Error("Graph must have at least one node");let r=n[0],o=e.nodeCount();t.setNode(r,{});let s,a;for(;pF(t,e)<o&&(s=AF(t,e),!!s);)a=t.hasNode(s.v)?Or(e,s):-Or(e,s),hF(t,e,a);return t}function pF(e,t){function n(r){let o=t.nodeEdges(r);o&&o.forEach(s=>{let a=s.v,l=r===a?s.w:a;!e.hasNode(l)&&!Or(t,s)&&(e.setNode(l,{}),e.setEdge(r,l,{}),n(l))})}return e.nodes().forEach(n),e.nodeCount()}function AF(e,t){return t.edges().reduce((n,r)=>{let o=Number.POSITIVE_INFINITY;return e.hasNode(r.v)!==e.hasNode(r.w)&&(o=Or(t,r)),o<n[0]?[o,r]:n},[Number.POSITIVE_INFINITY,null])[1]}function hF(e,t,n){e.nodes().forEach(r=>t.node(r).rank+=n)}var{preorder:IF,postorder:NF}=gd,OF=Fn;Fn.initLowLimValues=yd;Fn.initCutValues=Ld;Fn.calcCutValue=Ch;Fn.leaveEdge=Lh;Fn.enterEdge=yh;Fn.exchangeEdges=_h;function Fn(e){e=KB(e),xd(e);let t=gh(e);yd(t),Ld(t,e);let n,r;for(;n=Lh(t);)r=yh(t,e,n),_h(t,e,n,r)}function Ld(e,t){let n=NF(e,e.nodes());n=n.slice(0,n.length-1),n.forEach(r=>mF(e,t,r))}function mF(e,t,n){let r=e.node(n).parent,o=e.edge(n,r);o.cutvalue=Ch(e,t,n)}function Ch(e,t,n){let r=e.node(n).parent,o=!0,s=t.edge(n,r),a=0;s||(o=!1,s=t.edge(r,n)),a=s.weight;let l=t.nodeEdges(n);return l&&l.forEach(c=>{let d=c.v===n,E=d?c.w:c.v;if(E!==r){let u=d===o,T=t.edge(c).weight;if(a+=u?T:-T,CF(e,n,E)){let f=e.edge(n,E).cutvalue;a+=u?-f:f}}}),a}function yd(e,t){arguments.length<2&&(t=e.nodes()[0]),xh(e,{},1,t)}function xh(e,t,n,r,o){let s=n,a=e.node(r);t[r]=!0;let l=e.neighbors(r);return l&&l.forEach(c=>{Object.hasOwn(t,c)||(n=xh(e,t,n,c,r))}),a.low=s,a.lim=n++,o?a.parent=o:delete a.parent,n}function Lh(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function yh(e,t,n){let r=n.v,o=n.w;t.hasEdge(r,o)||(r=n.w,o=n.v);let s=e.node(r),a=e.node(o),l=s,c=!1;return s.lim>a.lim&&(l=a,c=!0),t.edges().filter(d=>c===fT(e,e.node(d.v),l)&&c!==fT(e,e.node(d.w),l)).reduce((d,E)=>Or(t,E)<Or(t,d)?E:d)}function _h(e,t,n,r){let o=n.v,s=n.w;e.removeEdge(o,s),e.setEdge(r.v,r.w,{}),yd(e),Ld(e,t),gF(e,t)}function gF(e,t){let n=e.nodes().find(o=>!e.node(o).parent);if(!n)return;let r=IF(e,[n]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=t.edge(o,s),l=!1;a||(a=t.edge(s,o),l=!0),t.node(o).rank=t.node(s).rank+(l?a.minlen:-a.minlen)})}function CF(e,t,n){return e.hasEdge(t,n)}function fT(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}var xF=LF;function LF(e){let t=e.graph().ranker;if(typeof t=="function")return t(e);switch(t){case"network-simplex":ST(e);break;case"tight-tree":_F(e);break;case"longest-path":yF(e);break;case"none":break;default:ST(e)}}var yF=xd;function _F(e){xd(e),gh(e)}function ST(e){OF(e)}var DF=MF;function MF(e){let t=PF(e);e.graph().dummyChains.forEach(n=>{let r=e.node(n),o=r.edgeObj,s=bF(e,t,o.v,o.w),a=s.path,l=s.lca,c=0,d=a[c],E=!0;for(;n!==o.w;){if(r=e.node(n),E){for(;(d=a[c])!==l&&e.node(d).maxRank<r.rank;)c++;d===l&&(E=!1)}if(!E){for(;c<a.length-1&&e.node(a[c+1]).minRank<=r.rank;)c++;d=a[c]}d!==void 0&&e.setParent(n,d),n=e.successors(n)[0]}})}function bF(e,t,n,r){let o=[],s=[],a=Math.min(t[n].low,t[r].low),l=Math.max(t[n].lim,t[r].lim),c;c=n;do c=e.parent(c),o.push(c);while(c&&(t[c].low>a||l>t[c].lim));let d=c,E=r;for(;(E=e.parent(E))!==d;)s.push(E);return{path:o.concat(s.reverse()),lca:d}}function PF(e){let t={},n=0;function r(o){let s=n;e.children(o).forEach(r),t[o]={low:s,lim:n++}}return e.children(sa).forEach(r),t}function vF(e){let t=yr(e,"root",{},"_root"),n=UF(e),r=Object.values(n),o=Ot(Math.max,r)-1,s=2*o+1;e.graph().nestingRoot=t,e.edges().forEach(l=>e.edge(l).minlen*=s);let a=wF(e)+1;e.children(sa).forEach(l=>Dh(e,t,s,a,o,n,l)),e.graph().nodeRankFactor=s}function Dh(e,t,n,r,o,s,a){var l;let c=e.children(a);if(!c.length){a!==t&&e.setEdge(t,a,{weight:0,minlen:n});return}let d=uT(e,"_bt"),E=uT(e,"_bb"),u=e.node(a);e.setParent(d,a),u.borderTop=d,e.setParent(E,a),u.borderBottom=E,c.forEach(T=>{var f;Dh(e,t,n,r,o,s,T);let h=e.node(T),A=h.borderTop?h.borderTop:T,R=h.borderBottom?h.borderBottom:T,p=h.borderTop?r:2*r,N=A!==R?1:o-((f=s[a])!=null?f:0)+1;e.setEdge(d,A,{weight:p,minlen:N,nestingEdge:!0}),e.setEdge(R,E,{weight:p,minlen:N,nestingEdge:!0})}),e.parent(a)||e.setEdge(t,d,{weight:0,minlen:o+((l=s[a])!=null?l:0)})}function UF(e){let t={};function n(r,o){let s=e.children(r);s&&s.length&&s.forEach(a=>n(a,o+1)),t[r]=o}return e.children(sa).forEach(r=>n(r,1)),t}function wF(e){return e.edges().reduce((t,n)=>t+e.edge(n).weight,0)}function BF(e){let t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(n=>{e.edge(n).nestingEdge&&e.removeEdge(n)})}var FF=GF;function GF(e){function t(n){let r=e.children(n),o=e.node(n);if(r.length&&r.forEach(t),Object.hasOwn(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(let s=o.minRank,a=o.maxRank+1;s<a;++s)RT(e,"borderLeft","_bl",n,o,s),RT(e,"borderRight","_br",n,o,s)}}e.children(sa).forEach(t)}function RT(e,t,n,r,o,s){let a={width:0,height:0,rank:s,borderType:t},l=o[t][s-1],c=yr(e,"border",a,n);o[t][s]=c,e.setParent(c,r),l&&e.setEdge(l,c,{weight:1})}function HF(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n==="lr"||n==="rl")&&Mh(e)}function kF(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n==="bt"||n==="rl")&&jF(e),(n==="lr"||n==="rl")&&(YF(e),Mh(e))}function Mh(e){e.nodes().forEach(t=>pT(e.node(t))),e.edges().forEach(t=>pT(e.edge(t)))}function pT(e){let t=e.width;e.width=e.height,e.height=t}function jF(e){e.nodes().forEach(t=>il(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(il),Object.hasOwn(r,"y")&&il(r)})}function il(e){e.y=-e.y}function YF(e){e.nodes().forEach(t=>al(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(al),Object.hasOwn(r,"x")&&al(r)})}function al(e){let t=e.x;e.x=e.y,e.y=t}function WF(e){let t={},n=e.nodes().filter(l=>!e.children(l).length),r=n.map(l=>e.node(l).rank),o=Ot(Math.max,r),s=ho(o+1).map(()=>[]);function a(l){if(t[l])return;t[l]=!0;let c=e.node(l);s[c.rank].push(l);let d=e.successors(l);d&&d.forEach(a)}return n.sort((l,c)=>e.node(l).rank-e.node(c).rank).forEach(a),s}function VF(e,t){let n=0;for(let r=1;r<t.length;++r)n+=$F(e,t[r-1],t[r]);return n}function $F(e,t,n){let r=eF(n,n.map((d,E)=>E)),o=t.flatMap(d=>{let E=e.outEdges(d);return E?E.map(u=>({pos:r[u.w],weight:e.edge(u).weight})).sort((u,T)=>u.pos-T.pos):[]}),s=1;for(;s<n.length;)s<<=1;let a=2*s-1;s-=1;let l=new Array(a).fill(0),c=0;return o.forEach(d=>{let E=d.pos+s;l[E]+=d.weight;let u=0;for(;E>0;)E%2&&(u+=l[E+1]),E=E-1>>1,l[E]+=d.weight;c+=d.weight*u}),c}function XF(e,t=[]){return t.map(n=>{let r=e.inEdges(n);if(!r||!r.length)return{v:n};{let o=r.reduce((s,a)=>{let l=e.edge(a),c=e.node(a.v);return{sum:s.sum+l.weight*c.order,weight:s.weight+l.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}})}function KF(e,t){let n={};e.forEach((o,s)=>{let a={indegree:0,in:[],out:[],vs:[o.v],i:s};o.barycenter!==void 0&&(a.barycenter=o.barycenter,a.weight=o.weight),n[o.v]=a}),t.edges().forEach(o=>{let s=n[o.v],a=n[o.w];s!==void 0&&a!==void 0&&(a.indegree++,s.out.push(a))});let r=Object.values(n).filter(o=>!o.indegree);return zF(r)}function zF(e){let t=[];function n(o){return s=>{s.merged||(s.barycenter===void 0||o.barycenter===void 0||s.barycenter>=o.barycenter)&&JF(o,s)}}function r(o){return s=>{s.in.push(o),--s.indegree===0&&e.push(s)}}for(;e.length;){let o=e.pop();t.push(o),o.in.reverse().forEach(n(o)),o.out.forEach(r(o))}return t.filter(o=>!o.merged).map(o=>pi(o,["vs","i","barycenter","weight"]))}function JF(e,t){let n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function qF(e,t){let n=QB(e,E=>Object.hasOwn(E,"barycenter")),r=n.lhs,o=n.rhs.sort((E,u)=>u.i-E.i),s=[],a=0,l=0,c=0;r.sort(QF(!!t)),c=AT(s,o,c),r.forEach(E=>{c+=E.vs.length,s.push(E.vs),a+=E.barycenter*E.weight,l+=E.weight,c=AT(s,o,c)});let d={vs:s.flat(1)};return l&&(d.barycenter=a/l,d.weight=l),d}function AT(e,t,n){let r;for(;t.length&&(r=t[t.length-1]).i<=n;)t.pop(),e.push(r.vs),n++;return n}function QF(e){return(t,n)=>t.barycenter<n.barycenter?-1:t.barycenter>n.barycenter?1:e?n.i-t.i:t.i-n.i}function bh(e,t,n,r){let o=e.children(t),s=e.node(t),a=s?s.borderLeft:void 0,l=s?s.borderRight:void 0,c={};a&&(o=o.filter(T=>T!==a&&T!==l));let d=XF(e,o);d.forEach(T=>{if(e.children(T.v).length){let f=bh(e,T.v,n,r);c[T.v]=f,Object.hasOwn(f,"barycenter")&&eG(T,f)}});let E=KF(d,n);ZF(E,c);let u=qF(E,r);if(a&&l){u.vs=[a,u.vs,l].flat(1);let T=e.predecessors(a);if(T&&T.length){let f=e.node(T[0]),h=e.predecessors(l),A=e.node(h[0]);Object.hasOwn(u,"barycenter")||(u.barycenter=0,u.weight=0),u.barycenter=(u.barycenter*u.weight+f.order+A.order)/(u.weight+2),u.weight+=2}}return u}function ZF(e,t){e.forEach(n=>{n.vs=n.vs.flatMap(r=>t[r]?t[r].vs:r)})}function eG(e,t){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight):(e.barycenter=t.barycenter,e.weight=t.weight)}function tG(e,t,n,r){r||(r=e.nodes());let o=nG(e),s=new rt({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(a=>e.node(a));return r.forEach(a=>{let l=e.node(a),c=e.parent(a);if(l.rank===t||l.minRank<=t&&t<=l.maxRank){s.setNode(a),s.setParent(a,c||o);let d=e[n](a);d&&d.forEach(E=>{let u=E.v===a?E.w:E.v,T=s.edge(u,a),f=T!==void 0?T.weight:0;s.setEdge(u,a,{weight:e.edge(E).weight+f})}),Object.hasOwn(l,"minRank")&&s.setNode(a,{borderLeft:l.borderLeft[t],borderRight:l.borderRight[t]})}}),s}function nG(e){let t;for(;e.hasNode(t=Cd("_root")););return t}function rG(e,t,n){let r={},o;n.forEach(s=>{let a=e.parent(s),l,c;for(;a;){if(l=e.parent(a),l?(c=r[l],r[l]=a):(c=o,o=a),c&&c!==a){t.setEdge(c,a);return}a=l}})}function Ph(e,t={}){if(typeof t.customOrder=="function"){t.customOrder(e,Ph);return}let n=Nh(e),r=hT(e,ho(1,n+1),"inEdges"),o=hT(e,ho(n-1,-1,-1),"outEdges"),s=WF(e);if(IT(e,s),t.disableOptimalOrderHeuristic)return;let a=Number.POSITIVE_INFINITY,l,c=t.constraints||[];for(let d=0,E=0;E<4;++d,++E){oG(d%2?r:o,d%4>=2,c),s=wo(e);let u=VF(e,s);u<a?(E=0,l=Object.assign({},s),a=u):u===a&&(l=structuredClone(s))}IT(e,l)}function hT(e,t,n){let r=new Map,o=(s,a)=>{r.has(s)||r.set(s,[]),r.get(s).push(a)};for(let s of e.nodes()){let a=e.node(s);if(typeof a.rank=="number"&&o(a.rank,s),typeof a.minRank=="number"&&typeof a.maxRank=="number")for(let l=a.minRank;l<=a.maxRank;l++)l!==a.rank&&o(l,s)}return t.map(function(s){return tG(e,s,n,r.get(s)||[])})}function oG(e,t,n){let r=new rt;e.forEach(function(o){n.forEach(l=>r.setEdge(l.left,l.right));let s=o.graph().root,a=bh(o,s,r,t);a.vs.forEach((l,c)=>o.node(l).order=c),rG(o,r,a.vs)})}function IT(e,t){Object.values(t).forEach(n=>n.forEach((r,o)=>e.node(r).order=o))}function sG(e,t){let n={};function r(o,s){let a=0,l=0,c=o.length,d=s[s.length-1];return s.forEach((E,u)=>{let T=aG(e,E),f=T?e.node(T).order:c;(T||E===d)&&(s.slice(l,u+1).forEach(h=>{let A=e.predecessors(h);A&&A.forEach(R=>{let p=e.node(R),N=p.order;(N<a||f<N)&&!(p.dummy&&e.node(h).dummy)&&vh(n,R,h)})}),l=u+1,a=f)}),s}return t.length&&t.reduce(r),n}function iG(e,t){let n={};function r(s,a,l,c,d){ho(a,l).forEach(E=>{let u=s[E];if(u!==void 0&&e.node(u).dummy){let T=e.predecessors(u);T&&T.forEach(f=>{if(f===void 0)return;let h=e.node(f);h.dummy&&(h.order<c||h.order>d)&&vh(n,f,u)})}})}function o(s,a){let l=-1,c=-1,d=0;return a.forEach((E,u)=>{if(e.node(E).dummy==="border"){let T=e.predecessors(E);if(T&&T.length){let f=T[0];if(f===void 0)return;c=e.node(f).order,r(a,d,u,l,c),d=u,l=c}}r(a,d,a.length,c,s.length)}),a}return t.length&&t.reduce(o),n}function aG(e,t){if(e.node(t).dummy){let n=e.predecessors(t);if(n)return n.find(r=>e.node(r).dummy)}}function vh(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];r||(e[t]=r={}),r[n]=!0}function lG(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];return r!==void 0&&Object.hasOwn(r,n)}function cG(e,t,n,r){let o={},s={},a={};return t.forEach(l=>{l.forEach((c,d)=>{o[c]=c,s[c]=c,a[c]=d})}),t.forEach(l=>{let c=-1;l.forEach(d=>{let E=r(d);if(E&&E.length){let u=E.sort((f,h)=>{let A=a[f],R=a[h];return(A!==void 0?A:0)-(R!==void 0?R:0)}),T=(u.length-1)/2;for(let f=Math.floor(T),h=Math.ceil(T);f<=h;++f){let A=u[f];if(A===void 0)continue;let R=a[A];if(R!==void 0&&s[d]===d&&c<R&&!lG(n,d,A)){let p=o[A];p!==void 0&&(s[A]=d,s[d]=o[d]=p,c=R)}}}})}),{root:o,align:s}}function dG(e,t,n,r,o=!1){let s={},a=EG(e,t,n,o),l=o?"borderLeft":"borderRight";function c(f,h){let A=a.nodes().slice(),R={},p=A.pop();for(;p;){if(R[p])f(p);else{R[p]=!0,A.push(p);for(let N of h(p))A.push(N)}p=A.pop()}}function d(f){let h=a.inEdges(f);h?s[f]=h.reduce((A,R)=>{var p;let N=(p=s[R.v])!=null?p:0,I=a.edge(R);return Math.max(A,N+(I!==void 0?I:0))},0):s[f]=0}function E(f){let h=a.outEdges(f),A=Number.POSITIVE_INFINITY;h&&(A=h.reduce((p,N)=>{let I=s[N.w],O=a.edge(N);return Math.min(p,(I!==void 0?I:0)-(O!==void 0?O:0))},Number.POSITIVE_INFINITY));let R=e.node(f);A!==Number.POSITIVE_INFINITY&&R.borderType!==l&&(s[f]=Math.max(s[f]!==void 0?s[f]:0,A))}function u(f){return a.predecessors(f)||[]}function T(f){return a.successors(f)||[]}return c(d,u),c(E,T),Object.keys(r).forEach(f=>{var h;let A=n[f];A!==void 0&&(s[f]=(h=s[A])!=null?h:0)}),s}function EG(e,t,n,r){let o=new rt,s=e.graph(),a=RG(s.nodesep,s.edgesep,r);return t.forEach(l=>{let c;l.forEach(d=>{let E=n[d];if(E!==void 0){if(o.setNode(E),c!==void 0){let u=n[c];if(u!==void 0){let T=o.edge(u,E);o.setEdge(u,E,Math.max(a(e,d,c),T||0))}}c=d}})}),o}function uG(e,t){return Object.values(t).reduce((n,r)=>{let o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([l,c])=>{let d=pG(e,l)/2;o=Math.max(c+d,o),s=Math.min(c-d,s)});let a=o-s;return a<n[0]&&(n=[a,r]),n},[Number.POSITIVE_INFINITY,null])[1]}function TG(e,t){let n=Object.values(t),r=Ot(Math.min,n),o=Ot(Math.max,n);["u","d"].forEach(s=>{["l","r"].forEach(a=>{let l=s+a,c=e[l];if(!c||c===t)return;let d=Object.values(c),E=r-Ot(Math.min,d);a!=="l"&&(E=o-Ot(Math.max,d)),E&&(e[l]=oa(c,u=>u+E))})})}function fG(e,t=void 0){let n=e.ul;return n?oa(n,(r,o)=>{var s,a;if(t){let c=t.toLowerCase(),d=e[c];if(d&&d[o]!==void 0)return d[o]}let l=Object.values(e).map(c=>{let d=c[o];return d!==void 0?d:0}).sort((c,d)=>c-d);return(((s=l[1])!=null?s:0)+((a=l[2])!=null?a:0))/2}):{}}function SG(e){let t=wo(e),n=Object.assign(sG(e,t),iG(e,t)),r={},o;["u","d"].forEach(a=>{o=a==="u"?t:Object.values(t).reverse(),["l","r"].forEach(l=>{l==="r"&&(o=o.map(E=>Object.values(E).reverse()));let c=cG(e,o,n,E=>(a==="u"?e.predecessors(E):e.successors(E))||[]),d=dG(e,o,c.root,c.align,l==="r");l==="r"&&(d=oa(d,E=>-E)),r[a+l]=d})});let s=uG(e,r);return TG(r,s),fG(r,e.graph().align)}function RG(e,t,n){return(r,o,s)=>{let a=r.node(o),l=r.node(s),c=0,d;if(c+=a.width/2,Object.hasOwn(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":d=-a.width/2;break;case"r":d=a.width/2;break}if(d&&(c+=n?d:-d),d=void 0,c+=(a.dummy?t:e)/2,c+=(l.dummy?t:e)/2,c+=l.width/2,Object.hasOwn(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":d=l.width/2;break;case"r":d=-l.width/2;break}return d&&(c+=n?d:-d),c}}function pG(e,t){return e.node(t).width}function AG(e){e=hh(e),hG(e),Object.entries(SG(e)).forEach(([t,n])=>e.node(t).x=n)}function hG(e){let t=wo(e),n=e.graph(),r=n.ranksep,o=n.rankalign,s=0;t.forEach(a=>{let l=a.reduce((c,d)=>{var E;let u=(E=e.node(d).height)!=null?E:0;return c>u?c:u},0);a.forEach(c=>{let d=e.node(c);o==="top"?d.y=s+d.height/2:o==="bottom"?d.y=s+l-d.height/2:d.y=s+l/2}),s+=l+r})}function IG(e,t={}){let n=t.debugTiming?Oh:mh;return n("layout",()=>{let r=n(" buildLayoutGraph",()=>DG(e));return n(" runLayout",()=>NG(r,n,t)),n(" updateInputGraph",()=>OG(e,r)),r})}function NG(e,t,n){t(" makeSpaceForEdgeLabels",()=>MG(e)),t(" removeSelfEdges",()=>HG(e)),t(" acyclic",()=>dF(e)),t(" nestingGraph.run",()=>vF(e)),t(" rank",()=>xF(hh(e))),t(" injectEdgeLabelProxies",()=>bG(e)),t(" removeEmptyRanks",()=>JB(e)),t(" nestingGraph.cleanup",()=>BF(e)),t(" normalizeRanks",()=>zB(e)),t(" assignRankMinMax",()=>PG(e)),t(" removeEdgeLabelProxies",()=>vG(e)),t(" normalize.run",()=>TF(e)),t(" parentDummyChains",()=>DF(e)),t(" addBorderSegments",()=>FF(e)),t(" order",()=>Ph(e,n)),t(" insertSelfEdges",()=>kG(e)),t(" adjustCoordinateSystem",()=>HF(e)),t(" position",()=>AG(e)),t(" positionSelfEdges",()=>jG(e)),t(" removeBorderNodes",()=>GG(e)),t(" normalize.undo",()=>SF(e)),t(" fixupEdgeLabelCoords",()=>BG(e)),t(" undoCoordinateSystem",()=>kF(e)),t(" translateGraph",()=>UG(e)),t(" assignNodeIntersects",()=>wG(e)),t(" reversePoints",()=>FG(e)),t(" acyclic.undo",()=>uF(e))}function OG(e,t){e.nodes().forEach(n=>{let r=e.node(n),o=t.node(n);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,t.children(n).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(n=>{let r=e.edge(n),o=t.edge(n);r.points=o.points,Object.hasOwn(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var mG=["nodesep","edgesep","ranksep","marginx","marginy"],gG={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},CG=["acyclicer","ranker","rankdir","align","rankalign"],xG=["width","height","rank"],NT={width:0,height:0},LG=["minlen","weight","width","height","labeloffset"],yG={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},_G=["labelpos"];function DG(e){let t=new rt({multigraph:!0,compound:!0}),n=cl(e.graph());return t.setGraph(Object.assign({},gG,ll(n,mG),pi(n,CG))),e.nodes().forEach(r=>{let o=cl(e.node(r)),s=ll(o,xG);Object.keys(NT).forEach(l=>{s[l]===void 0&&(s[l]=NT[l])}),t.setNode(r,s);let a=e.parent(r);a!==void 0&&t.setParent(r,a)}),e.edges().forEach(r=>{let o=cl(e.edge(r));t.setEdge(r,Object.assign({},yG,ll(o,LG),pi(o,_G)))}),t}function MG(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(n=>{let r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function bG(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.width&&n.height){let r=e.node(t.v),o={rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t};yr(e,"edge-proxy",o,"_ep")}})}function PG(e){let t=0;e.nodes().forEach(n=>{let r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))}),e.graph().maxRank=t}function vG(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="edge-proxy"){let r=n;e.edge(r.e).labelRank=n.rank,e.removeNode(t)}})}function UG(e){let t=Number.POSITIVE_INFINITY,n=0,r=Number.POSITIVE_INFINITY,o=0,s=e.graph(),a=s.marginx||0,l=s.marginy||0;function c(d){let E=d.x,u=d.y,T=d.width,f=d.height;t=Math.min(t,E-T/2),n=Math.max(n,E+T/2),r=Math.min(r,u-f/2),o=Math.max(o,u+f/2)}e.nodes().forEach(d=>c(e.node(d))),e.edges().forEach(d=>{let E=e.edge(d);Object.hasOwn(E,"x")&&c(E)}),t-=a,r-=l,e.nodes().forEach(d=>{let E=e.node(d);E.x-=t,E.y-=r}),e.edges().forEach(d=>{let E=e.edge(d);E.points.forEach(u=>{u.x-=t,u.y-=r}),Object.hasOwn(E,"x")&&(E.x-=t),Object.hasOwn(E,"y")&&(E.y-=r)}),s.width=n-t+a,s.height=o-r+l}function wG(e){e.edges().forEach(t=>{let n=e.edge(t),r=e.node(t.v),o=e.node(t.w),s,a;n.points?(s=n.points[0],a=n.points[n.points.length-1]):(n.points=[],s=o,a=r),n.points.unshift(ET(r,s)),n.points.push(ET(o,a))})}function BG(e){e.edges().forEach(t=>{let n=e.edge(t);if(Object.hasOwn(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}function FG(e){e.edges().forEach(t=>{let n=e.edge(t);n.reversed&&n.points.reverse()})}function GG(e){e.nodes().forEach(t=>{if(e.children(t).length){let n=e.node(t),r=e.node(n.borderTop),o=e.node(n.borderBottom),s=e.node(n.borderLeft[n.borderLeft.length-1]),a=e.node(n.borderRight[n.borderRight.length-1]);n.width=Math.abs(a.x-s.x),n.height=Math.abs(o.y-r.y),n.x=s.x+n.width/2,n.y=r.y+n.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy==="border"&&e.removeNode(t)})}function HG(e){e.edges().forEach(t=>{if(t.v===t.w){let n=e.node(t.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function kG(e){wo(e).forEach(t=>{let n=0;t.forEach((r,o)=>{let s=e.node(r);s.order=o+n,(s.selfEdges||[]).forEach(a=>{yr(e,"selfedge",{width:a.label.width,height:a.label.height,rank:s.rank,order:o+ ++n,e:a.e,label:a.label},"_se")}),delete s.selfEdges})})}function jG(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="selfedge"){let r=n,o=e.node(r.e.v),s=o.x+o.width/2,a=o.y,l=n.x-s,c=o.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:s+2*l/3,y:a-c},{x:s+5*l/6,y:a-c},{x:s+l,y:a},{x:s+5*l/6,y:a+c},{x:s+2*l/3,y:a+c}],r.label.x=n.x,r.label.y=n.y}})}function ll(e,t){return oa(pi(e,t),Number)}function cl(e){let t={};return e&&Object.entries(e).forEach(([n,r])=>{typeof n=="string"&&(n=n.toLowerCase()),t[n]=r}),t}function YG(e){let t=wo(e),n=new rt({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{n.setNode(r,{label:r}),n.setParent(r,"layer"+e.node(r).rank)}),e.edges().forEach(r=>n.setEdge(r.v,r.w,{},r.name)),t.forEach((r,o)=>{let s="layer"+o;n.setNode(s,{rank:"same"}),r.reduce((a,l)=>(n.setEdge(a,l,{style:"invis"}),l))}),n}var WG={graphlib:dh,version:tF,layout:IG,debug:YG,util:{time:Oh,notime:mh}},Ai=WG;/*! For license information please see dagre.esm.js.LEGAL.txt */function VG(e,t,n={}){var o;if(e.length===0)return e;const r=new Ai.graphlib.Graph().setDefaultEdgeLabel(()=>({}));r.setGraph({rankdir:"LR",ranksep:60,nodesep:30,marginx:20,marginy:20});for(const s of e){const a={width:170,height:52};if(n.mode==="layered"&&((o=s.data)!=null&&o.layer)){const l=Qs.indexOf(s.data.layer);l>=0&&(a.rank=l)}r.setNode(s.id,a)}for(const s of t)r.setEdge(s.source,s.target);return Ai.layout(r),e.map(s=>{const a=r.node(s.id);return{...s,position:{x:a.x-85,y:a.y-26}}})}function $G({data:e,selected:t}){const n=e.nodeType,r=e.isFocal,o=Be[n]??"var(--color-text-tertiary)",s=Fi[n]??n.toUpperCase();return i.jsxs("div",{style:{minWidth:140,maxWidth:190,background:"var(--color-bg-card)",border:`2px solid ${r||t?"var(--color-accent-blue)":o}`,borderRadius:8,padding:"6px 8px",boxShadow:r?"0 0 0 2px color-mix(in srgb, var(--color-accent-blue) 25%, transparent)":"none"},children:[i.jsx(cn,{type:"target",position:oe.Left,style:{width:6,height:6,background:o,border:"none"}}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:2},children:[i.jsx("span",{style:{fontSize:8,fontWeight:700,letterSpacing:"0.04em",color:"var(--color-bg-card)",background:o,borderRadius:3,padding:"1px 4px"},children:s}),e.domain&&i.jsx("span",{style:{color:"var(--color-text-tertiary)",fontSize:9},children:e.domain})]}),i.jsx("div",{style:{color:"var(--color-text-primary)",fontSize:10,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.label,children:e.label}),i.jsx(cn,{type:"source",position:oe.Right,style:{width:6,height:6,background:o,border:"none"}})]})}const XG={miniDagNode:$G};function KG({nodes:e,edges:t,focalNodeId:n,height:r=250,onNodeClick:o,interactive:s=!0,layoutMode:a="flow"}){const[l,c,d]=rh([]),[E,u,T]=oh([]),{fitView:f}=ta(),h=S.useRef(null);return S.useEffect(()=>{const A=e.map(p=>({id:p.id,type:"miniDagNode",position:{x:0,y:0},data:{label:p.name,nodeType:p.type,domain:p.domain,layer:Jc(p),isFocal:p.id===n}})),R=t.map((p,N)=>({id:`mini-edge-${N}-${p.source}-${p.target}`,source:p.source,target:p.target,style:{stroke:Kr[p.type]??"#8b949e",strokeWidth:1.4},markerEnd:{type:Rr.ArrowClosed,color:Kr[p.type]??"#8b949e",width:10,height:10}}));c(VG(A,R,{mode:a})),u(R),requestAnimationFrame(()=>{f({padding:.15,duration:200})})},[e,t,n,a,c,u,f]),S.useEffect(()=>{if(!h.current)return;const A=h.current,R=new ResizeObserver(()=>{f({padding:.15,duration:0})});return R.observe(A),()=>R.disconnect()},[f]),e.length===0?i.jsx("div",{style:{height:r,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--color-text-tertiary)",fontSize:11},children:"No lineage nodes to display"}):i.jsx("div",{ref:h,style:{height:r,width:"100%",borderRadius:8,overflow:"hidden",border:"1px solid var(--color-border-subtle)"},children:i.jsx(nh,{nodes:l,edges:E,onNodesChange:s?d:void 0,onEdgesChange:s?T:void 0,onNodeClick:o?(A,R)=>o(R.id):void 0,nodeTypes:XG,fitView:!0,fitViewOptions:{padding:.15},minZoom:.25,proOptions:{hideAttribution:!0},nodesDraggable:s,nodesConnectable:!1,zoomOnScroll:s,panOnDrag:s,style:{background:"var(--color-bg-sunken)"},children:i.jsx(ih,{color:"var(--color-border-subtle)",gap:20,size:1})})})}function _d(e){return i.jsx(th,{children:i.jsx(KG,{...e})})}function zG(e){const t=e.match(/^\s*block\s+"([^"]+)"/i);return t?t[1]:null}function JG(e){const t=[],n=/\b(?:FROM|JOIN)\s+([a-zA-Z_][\w.]*)/gi;for(const o of e.matchAll(n)){const s=o[1].toLowerCase();["select","where","group","order","having","limit","union","lateral"].includes(s)||t.push(s)}const r=/\bref\s*\(\s*"([^"]+)"\s*\)/gi;for(const o of e.matchAll(r))t.push(o[1]);return[...new Set(t)]}function qG(e){const t=[],n=[];for(const r of e.matchAll(/@metric\s*\(\s*([^)]+)\s*\)/gi))t.push(r[1].replace(/['"]/g,"").trim());for(const r of e.matchAll(/@dim\s*\(\s*([^)]+)\s*\)/gi))n.push(r[1].replace(/['"]/g,"").trim());return{metrics:t,dimensions:n}}function QG({cellContent:e,cellType:t,cellName:n,themeMode:r,t:o,onFocusNode:s}){const[a,l]=S.useState(!1),[c,d]=S.useState(380),E=S.useRef(c);E.current=c;const[u,T]=S.useState(!1),[f,h]=S.useState(!1),[A,R]=S.useState([]),[p,N]=S.useState([]),[I,O]=S.useState(),[C,m]=S.useState([]),[g,y]=S.useState({metrics:[],dimensions:[]}),[x,w]=S.useState(null),[D,U]=S.useState(null),_=(t==="dql"?zG(e):null)||n,B=S.useCallback(async()=>{if(!(!_&&t!=="sql")){h(!0),U(null);try{const P=JG(e);if(m(P),y(qG(e)),_){const M=`block:${_}`;O(M);const[L,v]=await Promise.all([J.queryLineage({focus:M,upstreamDepth:2,downstreamDepth:2}),J.fetchLineagePaths(M)]);L!=null&&L.graph&&(R(L.graph.nodes??[]),N(L.graph.edges??[])),v&&w(v)}else{O(void 0);const L=((await J.fetchLineage()).nodes??[]).filter(v=>P.some(G=>v.name===G||v.id===`table:${G}`));R(L),N([])}}catch{U("Failed to load lineage")}finally{h(!1)}}},[_,e,t]);S.useEffect(()=>{a&&B()},[a,B]);const b=C.length>0||g.metrics.length>0||g.dimensions.length>0;return e.trim()?i.jsxs("div",{style:{borderTop:`1px solid ${o.cellBorder}`},children:[i.jsxs("button",{onClick:()=>l(P=>!P),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 12px",background:a?`${o.tableHeaderBg}60`:"transparent",border:"none",cursor:"pointer",color:o.textMuted,fontSize:10,fontFamily:o.font,transition:"background 0.15s"},children:[i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",style:{flexShrink:0},children:[i.jsx("circle",{cx:"4",cy:"4",r:"2"}),i.jsx("circle",{cx:"12",cy:"8",r:"2"}),i.jsx("circle",{cx:"4",cy:"12",r:"2"}),i.jsx("line",{x1:"6",y1:"4",x2:"10",y2:"8"}),i.jsx("line",{x1:"6",y1:"12",x2:"10",y2:"8"})]}),i.jsx("span",{children:"Lineage"}),i.jsx("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:a?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:i.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})}),a&&_&&s&&i.jsx("span",{onClick:P=>{P.stopPropagation(),s(`block:${_}`)},style:{marginLeft:"auto",fontSize:9,color:o.accent,cursor:"pointer",textDecoration:"underline"},children:"View in DAG"})]}),a&&i.jsx("div",{style:{fontSize:11},children:f?i.jsx("div",{style:{color:o.textMuted,padding:"8px 12px"},children:"Loading lineage..."}):D?i.jsx("div",{style:{color:o.error,padding:"8px 12px"},children:D}):i.jsxs(i.Fragment,{children:[A.length>0&&I&&i.jsxs("div",{style:{borderBottom:`1px solid ${o.cellBorder}`,position:"relative"},children:[i.jsx(_d,{nodes:A,edges:p,focalNodeId:I,height:c,onNodeClick:s,interactive:!0,layoutMode:"flow"}),i.jsx("div",{onMouseDown:P=>{P.preventDefault();const M=P.clientY,L=E.current;T(!0);const v=k=>{const q=Math.min(800,Math.max(160,L+(k.clientY-M)));E.current=q,d(q)},G=()=>{T(!1),window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",G)};window.addEventListener("mousemove",v),window.addEventListener("mouseup",G)},title:"Drag to resize lineage view",style:{position:"absolute",left:0,right:0,bottom:-3,height:6,cursor:"row-resize",background:u?o.accent:"transparent",transition:u?"none":"background 0.15s",zIndex:5},onMouseEnter:P=>{u||(P.currentTarget.style.background=`${o.accent}40`)},onMouseLeave:P=>{u||(P.currentTarget.style.background="transparent")}})]}),i.jsxs("div",{style:{padding:"6px 12px 8px"},children:[x&&(x.upstreamPaths.length>0||x.downstreamPaths.length>0)&&i.jsxs("div",{style:{marginBottom:8},children:[i.jsx("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:o.textMuted,marginBottom:4},children:"Complete Paths"}),i.jsxs("div",{style:{display:"grid",gap:6},children:[x.upstreamPaths.slice(0,3).map((P,M)=>i.jsx(nc,{path:P,onNodeClick:s,focalNodeId:I,t:o},`up-${M}`)),x.downstreamPaths.slice(0,2).map((P,M)=>i.jsx(nc,{path:P,onNodeClick:s,focalNodeId:I,t:o},`down-${M}`))]})]}),C.length>0&&i.jsxs("div",{style:{marginBottom:6},children:[i.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:o.textMuted,marginBottom:3},children:["Reads From (",C.length,")"]}),C.map(P=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:o.textPrimary},children:[i.jsx("span",{style:{color:Be.source_table,fontSize:9,fontWeight:700,width:26},children:"TBL"}),i.jsx("span",{children:P})]},P))]}),g.metrics.length>0&&i.jsxs("div",{style:{marginBottom:6},children:[i.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:o.textMuted,marginBottom:3},children:["Metrics (",g.metrics.length,")"]}),g.metrics.map(P=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:o.textPrimary},children:[i.jsx("span",{style:{color:Be.metric,fontSize:9,fontWeight:700,width:26},children:"MET"}),i.jsx("span",{children:P})]},P))]}),g.dimensions.length>0&&i.jsxs("div",{style:{marginBottom:6},children:[i.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:o.textMuted,marginBottom:3},children:["Dimensions (",g.dimensions.length,")"]}),g.dimensions.map(P=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:o.textPrimary},children:[i.jsx("span",{style:{color:Be.dimension,fontSize:9,fontWeight:700,width:26},children:"DIM"}),i.jsx("span",{children:P})]},P))]}),!b&&A.length===0&&!x&&i.jsx("div",{style:{color:o.textMuted,padding:"2px 0"},children:"No lineage dependencies detected for this cell."})]})]})})]}):null}const H=e=>e.flatMap(ZG),ZG=e=>Hs(t2(e)).map(e2),e2=e=>e.replace(/ +/g," ").trim(),t2=e=>({type:"mandatory_block",items:Dd(e,0)[0]}),Dd=(e,t,n)=>{const r=[];for(;e[t];){const[o,s]=n2(e,t);if(r.push(o),t=s,e[t]==="|")t++;else if(e[t]==="}"||e[t]==="]"){if(n!==e[t])throw new Error(`Unbalanced parenthesis in: ${e}`);return t++,[r,t]}else if(t===e.length){if(n)throw new Error(`Unbalanced parenthesis in: ${e}`);return[r,t]}else throw new Error(`Unexpected "${e[t]}"`)}return[r,t]},n2=(e,t)=>{const n=[];for(;;){const[r,o]=r2(e,t);if(r)n.push(r),t=o;else break}return n.length===1?[n[0],t]:[{type:"concatenation",items:n},t]},r2=(e,t)=>{if(e[t]==="{")return o2(e,t+1);if(e[t]==="[")return s2(e,t+1);{let n="";for(;e[t]&&/[A-Za-z0-9_ ]/.test(e[t]);)n+=e[t],t++;return[n,t]}},o2=(e,t)=>{const[n,r]=Dd(e,t,"}");return[{type:"mandatory_block",items:n},r]},s2=(e,t)=>{const[n,r]=Dd(e,t,"]");return[{type:"optional_block",items:n},r]},Hs=e=>{if(typeof e=="string")return[e];if(e.type==="concatenation")return e.items.map(Hs).reduce(i2,[""]);if(e.type==="mandatory_block")return e.items.flatMap(Hs);if(e.type==="optional_block")return["",...e.items.flatMap(Hs)];throw new Error(`Unknown node type: ${e}`)},i2=(e,t)=>{const n=[];for(const r of e)for(const o of t)n.push(r+o);return n};var $;(function(e){e.QUOTED_IDENTIFIER="QUOTED_IDENTIFIER",e.IDENTIFIER="IDENTIFIER",e.STRING="STRING",e.VARIABLE="VARIABLE",e.RESERVED_DATA_TYPE="RESERVED_DATA_TYPE",e.RESERVED_PARAMETERIZED_DATA_TYPE="RESERVED_PARAMETERIZED_DATA_TYPE",e.RESERVED_KEYWORD="RESERVED_KEYWORD",e.RESERVED_FUNCTION_NAME="RESERVED_FUNCTION_NAME",e.RESERVED_KEYWORD_PHRASE="RESERVED_KEYWORD_PHRASE",e.RESERVED_DATA_TYPE_PHRASE="RESERVED_DATA_TYPE_PHRASE",e.RESERVED_SET_OPERATION="RESERVED_SET_OPERATION",e.RESERVED_CLAUSE="RESERVED_CLAUSE",e.RESERVED_SELECT="RESERVED_SELECT",e.RESERVED_JOIN="RESERVED_JOIN",e.ARRAY_IDENTIFIER="ARRAY_IDENTIFIER",e.ARRAY_KEYWORD="ARRAY_KEYWORD",e.CASE="CASE",e.END="END",e.WHEN="WHEN",e.ELSE="ELSE",e.THEN="THEN",e.LIMIT="LIMIT",e.BETWEEN="BETWEEN",e.AND="AND",e.OR="OR",e.XOR="XOR",e.OPERATOR="OPERATOR",e.COMMA="COMMA",e.ASTERISK="ASTERISK",e.PROPERTY_ACCESS_OPERATOR="PROPERTY_ACCESS_OPERATOR",e.OPEN_PAREN="OPEN_PAREN",e.CLOSE_PAREN="CLOSE_PAREN",e.LINE_COMMENT="LINE_COMMENT",e.BLOCK_COMMENT="BLOCK_COMMENT",e.DISABLE_COMMENT="DISABLE_COMMENT",e.NUMBER="NUMBER",e.NAMED_PARAMETER="NAMED_PARAMETER",e.QUOTED_PARAMETER="QUOTED_PARAMETER",e.NUMBERED_PARAMETER="NUMBERED_PARAMETER",e.POSITIONAL_PARAMETER="POSITIONAL_PARAMETER",e.CUSTOM_PARAMETER="CUSTOM_PARAMETER",e.DELIMITER="DELIMITER",e.EOF="EOF"})($=$||($={}));const Uh=e=>({type:$.EOF,raw:"«EOF»",text:"«EOF»",start:e}),dn=Uh(1/0),Jn=e=>t=>t.type===e.type&&t.text===e.text,En={ARRAY:Jn({text:"ARRAY",type:$.RESERVED_DATA_TYPE}),BY:Jn({text:"BY",type:$.RESERVED_KEYWORD}),SET:Jn({text:"SET",type:$.RESERVED_CLAUSE}),STRUCT:Jn({text:"STRUCT",type:$.RESERVED_DATA_TYPE}),WINDOW:Jn({text:"WINDOW",type:$.RESERVED_CLAUSE}),VALUES:Jn({text:"VALUES",type:$.RESERVED_CLAUSE})},wh=e=>e===$.RESERVED_DATA_TYPE||e===$.RESERVED_KEYWORD||e===$.RESERVED_FUNCTION_NAME||e===$.RESERVED_KEYWORD_PHRASE||e===$.RESERVED_DATA_TYPE_PHRASE||e===$.RESERVED_CLAUSE||e===$.RESERVED_SELECT||e===$.RESERVED_SET_OPERATION||e===$.RESERVED_JOIN||e===$.ARRAY_KEYWORD||e===$.CASE||e===$.END||e===$.WHEN||e===$.ELSE||e===$.THEN||e===$.LIMIT||e===$.BETWEEN||e===$.AND||e===$.OR||e===$.XOR,a2=e=>e===$.AND||e===$.OR||e===$.XOR,l2=["KEYS.NEW_KEYSET","KEYS.ADD_KEY_FROM_RAW_BYTES","AEAD.DECRYPT_BYTES","AEAD.DECRYPT_STRING","AEAD.ENCRYPT","KEYS.KEYSET_CHAIN","KEYS.KEYSET_FROM_JSON","KEYS.KEYSET_TO_JSON","KEYS.ROTATE_KEYSET","KEYS.KEYSET_LENGTH","ANY_VALUE","ARRAY_AGG","AVG","CORR","COUNT","COUNTIF","COVAR_POP","COVAR_SAMP","MAX","MIN","ST_CLUSTERDBSCAN","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","VAR_POP","VAR_SAMP","ANY_VALUE","ARRAY_AGG","ARRAY_CONCAT_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","COUNTIF","LOGICAL_AND","LOGICAL_OR","MAX","MIN","STRING_AGG","SUM","APPROX_COUNT_DISTINCT","APPROX_QUANTILES","APPROX_TOP_COUNT","APPROX_TOP_SUM","ARRAY_CONCAT","ARRAY_LENGTH","ARRAY_TO_STRING","GENERATE_ARRAY","GENERATE_DATE_ARRAY","GENERATE_TIMESTAMP_ARRAY","ARRAY_REVERSE","OFFSET","SAFE_OFFSET","ORDINAL","SAFE_ORDINAL","BIT_COUNT","PARSE_BIGNUMERIC","PARSE_NUMERIC","SAFE_CAST","CURRENT_DATE","EXTRACT","DATE","DATE_ADD","DATE_SUB","DATE_DIFF","DATE_TRUNC","DATE_FROM_UNIX_DATE","FORMAT_DATE","LAST_DAY","PARSE_DATE","UNIX_DATE","CURRENT_DATETIME","DATETIME","EXTRACT","DATETIME_ADD","DATETIME_SUB","DATETIME_DIFF","DATETIME_TRUNC","FORMAT_DATETIME","LAST_DAY","PARSE_DATETIME","ERROR","EXTERNAL_QUERY","S2_CELLIDFROMPOINT","S2_COVERINGCELLIDS","ST_ANGLE","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_AZIMUTH","ST_BOUNDARY","ST_BOUNDINGBOX","ST_BUFFER","ST_BUFFERWITHTOLERANCE","ST_CENTROID","ST_CENTROID_AGG","ST_CLOSESTPOINT","ST_CLUSTERDBSCAN","ST_CONTAINS","ST_CONVEXHULL","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DUMP","ST_DWITHIN","ST_ENDPOINT","ST_EQUALS","ST_EXTENT","ST_EXTERIORRING","ST_GEOGFROM","ST_GEOGFROMGEOJSON","ST_GEOGFROMTEXT","ST_GEOGFROMWKB","ST_GEOGPOINT","ST_GEOGPOINTFROMGEOHASH","ST_GEOHASH","ST_GEOMETRYTYPE","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_INTERSECTSBOX","ST_ISCOLLECTION","ST_ISEMPTY","ST_LENGTH","ST_MAKELINE","ST_MAKEPOLYGON","ST_MAKEPOLYGONORIENTED","ST_MAXDISTANCE","ST_NPOINTS","ST_NUMGEOMETRIES","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SIMPLIFY","ST_SNAPTOGRID","ST_STARTPOINT","ST_TOUCHES","ST_UNION","ST_UNION_AGG","ST_WITHIN","ST_X","ST_Y","FARM_FINGERPRINT","MD5","SHA1","SHA256","SHA512","HLL_COUNT.INIT","HLL_COUNT.MERGE","HLL_COUNT.MERGE_PARTIAL","HLL_COUNT.EXTRACT","MAKE_INTERVAL","EXTRACT","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","JSON_EXTRACT","JSON_QUERY","JSON_EXTRACT_SCALAR","JSON_VALUE","JSON_EXTRACT_ARRAY","JSON_QUERY_ARRAY","JSON_EXTRACT_STRING_ARRAY","JSON_VALUE_ARRAY","TO_JSON_STRING","ABS","SIGN","IS_INF","IS_NAN","IEEE_DIVIDE","RAND","SQRT","POW","POWER","EXP","LN","LOG","LOG10","GREATEST","LEAST","DIV","SAFE_DIVIDE","SAFE_MULTIPLY","SAFE_NEGATE","SAFE_ADD","SAFE_SUBTRACT","MOD","ROUND","TRUNC","CEIL","CEILING","FLOOR","COS","COSH","ACOS","ACOSH","SIN","SINH","ASIN","ASINH","TAN","TANH","ATAN","ATANH","ATAN2","RANGE_BUCKET","FIRST_VALUE","LAST_VALUE","NTH_VALUE","LEAD","LAG","PERCENTILE_CONT","PERCENTILE_DISC","NET.IP_FROM_STRING","NET.SAFE_IP_FROM_STRING","NET.IP_TO_STRING","NET.IP_NET_MASK","NET.IP_TRUNC","NET.IPV4_FROM_INT64","NET.IPV4_TO_INT64","NET.HOST","NET.PUBLIC_SUFFIX","NET.REG_DOMAIN","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","NTILE","ROW_NUMBER","SESSION_USER","CORR","COVAR_POP","COVAR_SAMP","STDDEV_POP","STDDEV_SAMP","STDDEV","VAR_POP","VAR_SAMP","VARIANCE","ASCII","BYTE_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CODE_POINTS_TO_BYTES","CODE_POINTS_TO_STRING","CONCAT","CONTAINS_SUBSTR","ENDS_WITH","FORMAT","FROM_BASE32","FROM_BASE64","FROM_HEX","INITCAP","INSTR","LEFT","LENGTH","LPAD","LOWER","LTRIM","NORMALIZE","NORMALIZE_AND_CASEFOLD","OCTET_LENGTH","REGEXP_CONTAINS","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","REPEAT","REVERSE","RIGHT","RPAD","RTRIM","SAFE_CONVERT_BYTES_TO_STRING","SOUNDEX","SPLIT","STARTS_WITH","STRPOS","SUBSTR","SUBSTRING","TO_BASE32","TO_BASE64","TO_CODE_POINTS","TO_HEX","TRANSLATE","TRIM","UNICODE","UPPER","CURRENT_TIME","TIME","EXTRACT","TIME_ADD","TIME_SUB","TIME_DIFF","TIME_TRUNC","FORMAT_TIME","PARSE_TIME","CURRENT_TIMESTAMP","EXTRACT","STRING","TIMESTAMP","TIMESTAMP_ADD","TIMESTAMP_SUB","TIMESTAMP_DIFF","TIMESTAMP_TRUNC","FORMAT_TIMESTAMP","PARSE_TIMESTAMP","TIMESTAMP_SECONDS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UNIX_SECONDS","UNIX_MILLIS","UNIX_MICROS","GENERATE_UUID","COALESCE","IF","IFNULL","NULLIF","AVG","BIT_AND","BIT_OR","BIT_XOR","CORR","COUNT","COVAR_POP","COVAR_SAMP","EXACT_COUNT_DISTINCT","FIRST","GROUP_CONCAT","GROUP_CONCAT_UNQUOTED","LAST","MAX","MIN","NEST","NTH","QUANTILES","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","TOP","UNIQUE","VARIANCE","VAR_POP","VAR_SAMP","BIT_COUNT","BOOLEAN","BYTES","CAST","FLOAT","HEX_STRING","INTEGER","STRING","COALESCE","GREATEST","IFNULL","IS_INF","IS_NAN","IS_EXPLICITLY_DEFINED","LEAST","NVL","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE","DATE_ADD","DATEDIFF","DAY","DAYOFWEEK","DAYOFYEAR","FORMAT_UTC_USEC","HOUR","MINUTE","MONTH","MSEC_TO_TIMESTAMP","NOW","PARSE_UTC_USEC","QUARTER","SEC_TO_TIMESTAMP","SECOND","STRFTIME_UTC_USEC","TIME","TIMESTAMP","TIMESTAMP_TO_MSEC","TIMESTAMP_TO_SEC","TIMESTAMP_TO_USEC","USEC_TO_TIMESTAMP","UTC_USEC_TO_DAY","UTC_USEC_TO_HOUR","UTC_USEC_TO_MONTH","UTC_USEC_TO_WEEK","UTC_USEC_TO_YEAR","WEEK","YEAR","FORMAT_IP","PARSE_IP","FORMAT_PACKED_IP","PARSE_PACKED_IP","JSON_EXTRACT","JSON_EXTRACT_SCALAR","ABS","ACOS","ACOSH","ASIN","ASINH","ATAN","ATANH","ATAN2","CEIL","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG2","LOG10","PI","POW","RADIANS","RAND","ROUND","SIN","SINH","SQRT","TAN","TANH","REGEXP_MATCH","REGEXP_EXTRACT","REGEXP_REPLACE","CONCAT","INSTR","LEFT","LENGTH","LOWER","LPAD","LTRIM","REPLACE","RIGHT","RPAD","RTRIM","SPLIT","SUBSTR","UPPER","TABLE_DATE_RANGE","TABLE_DATE_RANGE_STRICT","TABLE_QUERY","HOST","DOMAIN","TLD","AVG","COUNT","MAX","MIN","STDDEV","SUM","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","CURRENT_USER","EVERY","FROM_BASE64","HASH","FARM_FINGERPRINT","IF","POSITION","SHA1","SOME","TO_BASE64","BQ.JOBS.CANCEL","BQ.REFRESH_MATERIALIZED_VIEW","OPTIONS","PIVOT","UNPIVOT"],c2=["ALL","AND","ANY","AS","ASC","ASSERT_ROWS_MODIFIED","AT","BETWEEN","BY","CASE","CAST","COLLATE","CONTAINS","CREATE","CROSS","CUBE","CURRENT","DEFAULT","DEFINE","DESC","DISTINCT","ELSE","END","ENUM","ESCAPE","EXCEPT","EXCLUDE","EXISTS","EXTRACT","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","GROUP","GROUPING","GROUPS","HASH","HAVING","IF","IGNORE","IN","INNER","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LIMIT","LOOKUP","MERGE","NATURAL","NEW","NO","NOT","NULL","NULLS","OF","ON","OR","ORDER","OUTER","OVER","PARTITION","PRECEDING","PROTO","RANGE","RECURSIVE","RESPECT","RIGHT","ROLLUP","ROWS","SELECT","SET","SOME","TABLE","TABLESAMPLE","THEN","TO","TREAT","TRUE","UNBOUNDED","UNION","UNNEST","USING","WHEN","WHERE","WINDOW","WITH","WITHIN","SAFE","LIKE","COPY","CLONE","IN","OUT","INOUT","RETURNS","LANGUAGE","CASCADE","RESTRICT","DETERMINISTIC"],d2=["ARRAY","BOOL","BYTES","DATE","DATETIME","GEOGRAPHY","INTERVAL","INT64","INT","SMALLINT","INTEGER","BIGINT","TINYINT","BYTEINT","NUMERIC","DECIMAL","BIGNUMERIC","BIGDECIMAL","FLOAT64","STRING","STRUCT","TIME","TIMEZONE"],E2=H(["SELECT [ALL | DISTINCT] [AS STRUCT | AS VALUE]"]),u2=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","OMIT RECORD IF","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY SOURCE | BY TARGET] [THEN]","UPDATE SET","CLUSTER BY","FOR SYSTEM_TIME AS OF","WITH CONNECTION","WITH PARTITION COLUMNS","REMOTE WITH CONNECTION"]),OT=H(["CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]"]),dl=H(["CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE [FROM]","DROP [SNAPSHOT | EXTERNAL] TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME TO","ALTER COLUMN [IF EXISTS]","SET DEFAULT COLLATE","SET OPTIONS","DROP NOT NULL","SET DATA TYPE","ALTER SCHEMA [IF EXISTS]","ALTER [MATERIALIZED] VIEW [IF EXISTS]","ALTER BI_CAPACITY","TRUNCATE TABLE","CREATE SCHEMA [IF NOT EXISTS]","DEFAULT COLLATE","CREATE [OR REPLACE] [TEMP|TEMPORARY|TABLE] FUNCTION [IF NOT EXISTS]","CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] ROW ACCESS POLICY [IF NOT EXISTS]","GRANT TO","FILTER USING","CREATE CAPACITY","AS JSON","CREATE RESERVATION","CREATE ASSIGNMENT","CREATE SEARCH INDEX [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","DROP [MATERIALIZED] VIEW [IF EXISTS]","DROP [TABLE] FUNCTION [IF EXISTS]","DROP PROCEDURE [IF EXISTS]","DROP ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","DROP CAPACITY [IF EXISTS]","DROP RESERVATION [IF EXISTS]","DROP ASSIGNMENT [IF EXISTS]","DROP SEARCH INDEX [IF EXISTS]","DROP [IF EXISTS]","GRANT","REVOKE","DECLARE","EXECUTE IMMEDIATE","LOOP","END LOOP","REPEAT","END REPEAT","WHILE","END WHILE","BREAK","LEAVE","CONTINUE","ITERATE","FOR","END FOR","BEGIN","BEGIN TRANSACTION","COMMIT TRANSACTION","ROLLBACK TRANSACTION","RAISE","RETURN","CALL","ASSERT","EXPORT DATA"]),T2=H(["UNION {ALL | DISTINCT}","EXCEPT DISTINCT","INTERSECT DISTINCT"]),f2=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),S2=H(["TABLESAMPLE SYSTEM","ANY TYPE","ALL COLUMNS","NOT DETERMINISTIC","{ROWS | RANGE} BETWEEN","IS [NOT] DISTINCT FROM"]),R2=H([]),p2={name:"bigquery",tokenizerOptions:{reservedSelect:E2,reservedClauses:[...u2,...dl,...OT],reservedSetOperations:T2,reservedJoins:f2,reservedKeywordPhrases:S2,reservedDataTypePhrases:R2,reservedKeywords:c2,reservedDataTypes:d2,reservedFunctionNames:l2,extraParens:["[]"],stringTypes:[{quote:'""".."""',prefixes:["R","B","RB","BR"]},{quote:"'''..'''",prefixes:["R","B","RB","BR"]},'""-bs',"''-bs",{quote:'""-raw',prefixes:["R","B","RB","BR"],requirePrefix:!0},{quote:"''-raw",prefixes:["R","B","RB","BR"],requirePrefix:!0}],identTypes:["``"],identChars:{dashes:!0},paramTypes:{positional:!0,named:["@"],quoted:["@"]},variableTypes:[{regex:String.raw`@@\w+`}],lineCommentTypes:["--","#"],operators:["&","|","^","~",">>","<<","||","=>"],postProcess:A2},formatOptions:{onelineClauses:[...OT,...dl],tabularOnelineClauses:dl}};function A2(e){return h2(I2(e))}function h2(e){let t=dn;return e.map(n=>n.text==="OFFSET"&&t.text==="["?(t=n,Object.assign(Object.assign({},n),{type:$.RESERVED_FUNCTION_NAME})):(t=n,n))}function I2(e){var t;const n=[];for(let r=0;r<e.length;r++){const o=e[r];if((En.ARRAY(o)||En.STRUCT(o))&&((t=e[r+1])===null||t===void 0?void 0:t.text)==="<"){const s=N2(e,r+1),a=e.slice(r,s+1);n.push({type:$.IDENTIFIER,raw:a.map(mT("raw")).join(""),text:a.map(mT("text")).join(""),start:o.start}),r=s}else n.push(o)}return n}const mT=e=>t=>t.type===$.IDENTIFIER||t.type===$.COMMA?t[e]+" ":t[e];function N2(e,t){let n=0;for(let r=t;r<e.length;r++){const o=e[r];if(o.text==="<"?n++:o.text===">"?n--:o.text===">>"&&(n-=2),n===0)return r}return e.length-1}const O2=["BIT_AND","BIT_OR","BIT_XOR","BLAKE3","CAST","CHARACTER_LENGTH","CHAR_LENGTH","COVAR_POP","COVAR_SAMP","CRC32","CRC32IEEE","CRC64","DATE","DATE_DIFF","DATE_FORMAT","DATE_TRUNC","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","FORMAT_BYTES","FQDN","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","HOUR","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","IPv4CIDRToRange","IPv4NumToString","IPv4NumToStringClassC","IPv4StringToNum","IPv4StringToNumOrDefault","IPv4StringToNumOrNull","IPv4ToIPv6","IPv6CIDRToRange","IPv6NumToString","IPv6StringToNum","IPv6StringToNumOrDefault","IPv6StringToNumOrNull","JSONAllPaths","JSONAllPathsWithTypes","JSONArrayLength","JSONDynamicPaths","JSONDynamicPathsWithTypes","JSONExtract","JSONExtractArrayRaw","JSONExtractArrayRawCaseInsensitive","JSONExtractBool","JSONExtractBoolCaseInsensitive","JSONExtractCaseInsensitive","JSONExtractFloat","JSONExtractFloatCaseInsensitive","JSONExtractInt","JSONExtractIntCaseInsensitive","JSONExtractKeys","JSONExtractKeysAndValues","JSONExtractKeysAndValuesCaseInsensitive","JSONExtractKeysAndValuesRaw","JSONExtractKeysAndValuesRawCaseInsensitive","JSONExtractKeysCaseInsensitive","JSONExtractRaw","JSONExtractRawCaseInsensitive","JSONExtractString","JSONExtractStringCaseInsensitive","JSONExtractUInt","JSONExtractUIntCaseInsensitive","JSONHas","JSONKey","JSONLength","JSONMergePatch","JSONSharedDataPaths","JSONSharedDataPathsWithTypes","JSONType","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_QUERY","JSON_VALUE","L1Distance","L1Norm","L1Normalize","L2Distance","L2Norm","L2Normalize","L2SquaredDistance","L2SquaredNorm","LAST_DAY","LinfDistance","LinfNorm","LinfNormalize","LpDistance","LpNorm","LpNormalize","MACNumToString","MACStringToNum","MACStringToOUI","MAP_FROM_ARRAYS","MD4","MD5","MILLISECOND","MINUTE","MONTH","OCTET_LENGTH","QUARTER","REGEXP_EXTRACT","REGEXP_MATCHES","REGEXP_REPLACE","RIPEMD160","SCHEMA","SECOND","SHA1","SHA224","SHA256","SHA384","SHA512","SHA512_256","STD","STDDEV_POP","STDDEV_SAMP","ST_LineFromWKB","ST_MLineFromWKB","ST_MPolyFromWKB","ST_PointFromWKB","ST_PolyFromWKB","SUBSTRING_INDEX","SVG","TIMESTAMP_DIFF","TO_BASE64","TO_DAYS","TO_UNIXTIME","ULIDStringToDateTime","URLHash","URLHierarchy","URLPathHierarchy","UTCTimestamp","UTC_timestamp","UUIDNumToString","UUIDStringToNum","UUIDToNum","UUIDv7ToDateTime","VAR_POP","VAR_SAMP","YEAR","YYYYMMDDToDate","YYYYMMDDToDate32","YYYYMMDDhhmmssToDateTime","YYYYMMDDhhmmssToDateTime64","_CAST","__actionName","__bitBoolMaskAnd","__bitBoolMaskOr","__bitSwapLastTwo","__bitWrapperFunc","__getScalar","__patchPartitionID","__scalarSubqueryResult","abs","accurateCast","accurateCastOrDefault","accurateCastOrNull","acos","acosh","addDate","addDays","addHours","addInterval","addMicroseconds","addMilliseconds","addMinutes","addMonths","addNanoseconds","addQuarters","addSeconds","addTupleOfIntervals","addWeeks","addYears","addressToLine","addressToLineWithInlines","addressToSymbol","aes_decrypt_mysql","aes_encrypt_mysql","age","aggThrow","alphaTokens","analysisOfVariance","anova","any","anyHeavy","anyLast","anyLastRespectNulls","anyLast_respect_nulls","anyRespectNulls","anyValueRespectNulls","any_respect_nulls","any_value","any_value_respect_nulls","appendTrailingCharIfAbsent","approx_top_count","approx_top_k","approx_top_sum","argMax","argMin","array","arrayAUC","arrayAUCPR","arrayAll","arrayAvg","arrayCompact","arrayConcat","arrayCount","arrayCumSum","arrayCumSumNonNegative","arrayDifference","arrayDistinct","arrayDotProduct","arrayElement","arrayElementOrNull","arrayEnumerate","arrayEnumerateDense","arrayEnumerateDenseRanked","arrayEnumerateUniq","arrayEnumerateUniqRanked","arrayExists","arrayFill","arrayFilter","arrayFirst","arrayFirstIndex","arrayFirstOrNull","arrayFlatten","arrayFold","arrayIntersect","arrayJaccardIndex","arrayJoin","arrayLast","arrayLastIndex","arrayLastOrNull","arrayLevenshteinDistance","arrayLevenshteinDistanceWeighted","arrayMap","arrayMax","arrayMin","arrayNormalizedGini","arrayPRAUC","arrayPartialReverseSort","arrayPartialShuffle","arrayPartialSort","arrayPopBack","arrayPopFront","arrayProduct","arrayPushBack","arrayPushFront","arrayROCAUC","arrayRandomSample","arrayReduce","arrayReduceInRanges","arrayResize","arrayReverse","arrayReverseFill","arrayReverseSort","arrayReverseSplit","arrayRotateLeft","arrayRotateRight","arrayShiftLeft","arrayShiftRight","arrayShingles","arrayShuffle","arraySimilarity","arraySlice","arraySort","arraySplit","arrayStringConcat","arraySum","arraySymmetricDifference","arrayUnion","arrayUniq","arrayWithConstant","arrayZip","arrayZipUnaligned","array_agg","array_concat_agg","ascii","asin","asinh","assumeNotNull","atan","atan2","atanh","authenticatedUser","avg","avgWeighted","bar","base32Decode","base32Encode","base58Decode","base58Encode","base64Decode","base64Encode","base64URLDecode","base64URLEncode","basename","bech32Decode","bech32Encode","bin","bitAnd","bitCount","bitHammingDistance","bitNot","bitOr","bitPositionsToArray","bitRotateLeft","bitRotateRight","bitShiftLeft","bitShiftRight","bitSlice","bitTest","bitTestAll","bitTestAny","bitXor","bitmapAnd","bitmapAndCardinality","bitmapAndnot","bitmapAndnotCardinality","bitmapBuild","bitmapCardinality","bitmapContains","bitmapHasAll","bitmapHasAny","bitmapMax","bitmapMin","bitmapOr","bitmapOrCardinality","bitmapSubsetInRange","bitmapSubsetLimit","bitmapToArray","bitmapTransform","bitmapXor","bitmapXorCardinality","bitmaskToArray","bitmaskToList","blockNumber","blockSerializedSize","blockSize","boundingRatio","buildId","byteHammingDistance","byteSize","byteSlice","byteSwap","caseWithExpr","caseWithExpression","caseWithoutExpr","caseWithoutExpression","catboostEvaluate","categoricalInformationValue","cbrt","ceil","ceiling","changeDay","changeHour","changeMinute","changeMonth","changeSecond","changeYear","char","cityHash64","clamp","coalesce","colorOKLCHToSRGB","colorSRGBToOKLCH","compareSubstrings","concat","concatAssumeInjective","concatWithSeparator","concatWithSeparatorAssumeInjective","concat_ws","connectionId","connection_id","contingency","convertCharset","corr","corrMatrix","corrStable","cos","cosh","cosineDistance","count","countDigits","countEqual","countMatches","countMatchesCaseInsensitive","countSubstrings","countSubstringsCaseInsensitive","countSubstringsCaseInsensitiveUTF8","covarPop","covarPopMatrix","covarPopStable","covarSamp","covarSampMatrix","covarSampStable","cramersV","cramersVBiasCorrected","curdate","currentDatabase","currentProfiles","currentQueryID","currentRoles","currentSchemas","currentUser","current_database","current_date","current_query_id","current_schemas","current_timestamp","current_user","cutFragment","cutIPv6","cutQueryString","cutQueryStringAndFragment","cutToFirstSignificantSubdomain","cutToFirstSignificantSubdomainCustom","cutToFirstSignificantSubdomainCustomRFC","cutToFirstSignificantSubdomainCustomWithWWW","cutToFirstSignificantSubdomainCustomWithWWWRFC","cutToFirstSignificantSubdomainRFC","cutToFirstSignificantSubdomainWithWWW","cutToFirstSignificantSubdomainWithWWWRFC","cutURLParameter","cutWWW","damerauLevenshteinDistance","dateDiff","dateName","dateTime64ToSnowflake","dateTime64ToSnowflakeID","dateTimeToSnowflake","dateTimeToSnowflakeID","dateTimeToUUIDv7","dateTrunc","date_bin","date_diff","decodeHTMLComponent","decodeURLComponent","decodeURLFormComponent","decodeXMLComponent","decrypt","defaultProfiles","defaultRoles","defaultValueOfArgumentType","defaultValueOfTypeName","degrees","deltaSum","deltaSumTimestamp","demangle","denseRank","dense_rank","detectCharset","detectLanguage","detectLanguageMixed","detectLanguageUnknown","detectProgrammingLanguage","detectTonality","dictGet","dictGetAll","dictGetChildren","dictGetDate","dictGetDateOrDefault","dictGetDateTime","dictGetDateTimeOrDefault","dictGetDescendants","dictGetFloat32","dictGetFloat32OrDefault","dictGetFloat64","dictGetFloat64OrDefault","dictGetHierarchy","dictGetIPv4","dictGetIPv4OrDefault","dictGetIPv6","dictGetIPv6OrDefault","dictGetInt16","dictGetInt16OrDefault","dictGetInt32","dictGetInt32OrDefault","dictGetInt64","dictGetInt64OrDefault","dictGetInt8","dictGetInt8OrDefault","dictGetOrDefault","dictGetOrNull","dictGetString","dictGetStringOrDefault","dictGetUInt16","dictGetUInt16OrDefault","dictGetUInt32","dictGetUInt32OrDefault","dictGetUInt64","dictGetUInt64OrDefault","dictGetUInt8","dictGetUInt8OrDefault","dictGetUUID","dictGetUUIDOrDefault","dictHas","dictIsIn","displayName","distanceL1","distanceL2","distanceL2Squared","distanceLinf","distanceLp","distinctDynamicTypes","distinctJSONPaths","distinctJSONPathsAndTypes","divide","divideDecimal","divideOrNull","domain","domainRFC","domainWithoutWWW","domainWithoutWWWRFC","dotProduct","dumpColumnStructure","dynamicElement","dynamicType","e","editDistance","editDistanceUTF8","empty","emptyArrayDate","emptyArrayDateTime","emptyArrayFloat32","emptyArrayFloat64","emptyArrayInt16","emptyArrayInt32","emptyArrayInt64","emptyArrayInt8","emptyArrayString","emptyArrayToSingle","emptyArrayUInt16","emptyArrayUInt32","emptyArrayUInt64","emptyArrayUInt8","enabledProfiles","enabledRoles","encodeURLComponent","encodeURLFormComponent","encodeXMLComponent","encrypt","endsWith","endsWithUTF8","entropy","equals","erf","erfc","errorCodeToName","estimateCompressionRatio","evalMLMethod","exp","exp10","exp2","exponentialMovingAverage","exponentialTimeDecayedAvg","exponentialTimeDecayedCount","exponentialTimeDecayedMax","exponentialTimeDecayedSum","extract","extractAll","extractAllGroups","extractAllGroupsHorizontal","extractAllGroupsVertical","extractGroups","extractKeyValuePairs","extractKeyValuePairsWithEscaping","extractTextFromHTML","extractURLParameter","extractURLParameterNames","extractURLParameters","factorial","farmFingerprint64","farmHash64","file","filesystemAvailable","filesystemCapacity","filesystemUnreserved","finalizeAggregation","financialInternalRateOfReturn","financialInternalRateOfReturnExtended","financialNetPresentValue","financialNetPresentValueExtended","firstLine","firstSignificantSubdomain","firstSignificantSubdomainCustom","firstSignificantSubdomainCustomRFC","firstSignificantSubdomainRFC","firstValueRespectNulls","first_value","first_value_respect_nulls","flameGraph","flatten","flattenTuple","floor","formatDateTime","formatDateTimeInJodaSyntax","formatQuery","formatQueryOrNull","formatQuerySingleLine","formatQuerySingleLineOrNull","formatReadableDecimalSize","formatReadableQuantity","formatReadableSize","formatReadableTimeDelta","formatRow","formatRowNoNewline","fragment","fromDaysSinceYearZero","fromDaysSinceYearZero32","fromModifiedJulianDay","fromModifiedJulianDayOrNull","fromUTCTimestamp","fromUnixTimestamp","fromUnixTimestamp64Micro","fromUnixTimestamp64Milli","fromUnixTimestamp64Nano","fromUnixTimestamp64Second","fromUnixTimestampInJodaSyntax","from_utc_timestamp","fullHostName","fuzzBits","gccMurmurHash","gcd","generateRandomStructure","generateSerialID","generateSnowflakeID","generateULID","generateUUIDv4","generateUUIDv7","geoDistance","geoToH3","geoToS2","geohashDecode","geohashEncode","geohashesInBox","getClientHTTPHeader","getMacro","getMaxTableNameLengthForDatabase","getMergeTreeSetting","getOSKernelVersion","getServerPort","getServerSetting","getSetting","getSettingOrDefault","getSizeOfEnumType","getSubcolumn","getTypeSerializationStreams","globalIn","globalInIgnoreSet","globalNotIn","globalNotInIgnoreSet","globalNotNullIn","globalNotNullInIgnoreSet","globalNullIn","globalNullInIgnoreSet","globalVariable","greatCircleAngle","greatCircleDistance","greater","greaterOrEquals","greatest","groupArray","groupArrayInsertAt","groupArrayIntersect","groupArrayLast","groupArrayMovingAvg","groupArrayMovingSum","groupArraySample","groupArraySorted","groupBitAnd","groupBitOr","groupBitXor","groupBitmap","groupBitmapAnd","groupBitmapOr","groupBitmapXor","groupConcat","groupNumericIndexedVector","groupUniqArray","group_concat","h3CellAreaM2","h3CellAreaRads2","h3Distance","h3EdgeAngle","h3EdgeLengthKm","h3EdgeLengthM","h3ExactEdgeLengthKm","h3ExactEdgeLengthM","h3ExactEdgeLengthRads","h3GetBaseCell","h3GetDestinationIndexFromUnidirectionalEdge","h3GetFaces","h3GetIndexesFromUnidirectionalEdge","h3GetOriginIndexFromUnidirectionalEdge","h3GetPentagonIndexes","h3GetRes0Indexes","h3GetResolution","h3GetUnidirectionalEdge","h3GetUnidirectionalEdgeBoundary","h3GetUnidirectionalEdgesFromHexagon","h3HexAreaKm2","h3HexAreaM2","h3HexRing","h3IndexesAreNeighbors","h3IsPentagon","h3IsResClassIII","h3IsValid","h3Line","h3NumHexagons","h3PointDistKm","h3PointDistM","h3PointDistRads","h3ToCenterChild","h3ToChildren","h3ToGeo","h3ToGeoBoundary","h3ToParent","h3ToString","h3UnidirectionalEdgeIsValid","h3kRing","halfMD5","has","hasAll","hasAny","hasColumnInTable","hasSubsequence","hasSubsequenceCaseInsensitive","hasSubsequenceCaseInsensitiveUTF8","hasSubsequenceUTF8","hasSubstr","hasThreadFuzzer","hasToken","hasTokenCaseInsensitive","hasTokenCaseInsensitiveOrNull","hasTokenOrNull","hex","hilbertDecode","hilbertEncode","histogram","hiveHash","hop","hopEnd","hopStart","hostName","hostname","hypot","icebergBucket","icebergHash","icebergTruncate","identity","idnaDecode","idnaEncode","if","ifNotFinite","ifNull","ignore","inIgnoreSet","indexHint","indexOf","indexOfAssumeSorted","initcap","initcapUTF8","initialQueryID","initialQueryStartTime","initial_query_id","initial_query_start_time","initializeAggregation","instr","intDiv","intDivOrNull","intDivOrZero","intExp10","intExp2","intHash32","intHash64","intervalLengthSum","isConstant","isDecimalOverflow","isDynamicElementInSharedData","isFinite","isIPAddressInRange","isIPv4String","isIPv6String","isInfinite","isMergeTreePartCoveredBy","isNaN","isNotDistinctFrom","isNotNull","isNull","isNullable","isValidJSON","isValidUTF8","isZeroOrNull","jaroSimilarity","jaroWinklerSimilarity","javaHash","javaHashUTF16LE","joinGet","joinGetOrNull","jsonMergePatch","jumpConsistentHash","kafkaMurmurHash","keccak256","kolmogorovSmirnovTest","kostikConsistentHash","kql_array_sort_asc","kql_array_sort_desc","kurtPop","kurtSamp","lag","lagInFrame","largestTriangleThreeBuckets","lastValueRespectNulls","last_value","last_value_respect_nulls","lcase","lcm","lead","leadInFrame","least","left","leftPad","leftPadUTF8","leftUTF8","lemmatize","length","lengthUTF8","less","lessOrEquals","levenshteinDistance","levenshteinDistanceUTF8","lgamma","ln","locate","log","log10","log1p","log2","logTrace","lowCardinalityIndices","lowCardinalityKeys","lower","lowerUTF8","lpad","ltrim","lttb","makeDate","makeDate32","makeDateTime","makeDateTime64","mannWhitneyUTest","map","mapAdd","mapAll","mapApply","mapConcat","mapContains","mapContainsKey","mapContainsKeyLike","mapContainsValue","mapContainsValueLike","mapExists","mapExtractKeyLike","mapExtractValueLike","mapFilter","mapFromArrays","mapFromString","mapKeys","mapPartialReverseSort","mapPartialSort","mapPopulateSeries","mapReverseSort","mapSort","mapSubtract","mapUpdate","mapValues","match","materialize","max","max2","maxIntersections","maxIntersectionsPosition","maxMappedArrays","meanZTest","median","medianBFloat16","medianBFloat16Weighted","medianDD","medianDeterministic","medianExact","medianExactHigh","medianExactLow","medianExactWeighted","medianExactWeightedInterpolated","medianGK","medianInterpolatedWeighted","medianTDigest","medianTDigestWeighted","medianTiming","medianTimingWeighted","mergeTreePartInfo","metroHash64","mid","min","min2","minMappedArrays","minSampleSizeContinous","minSampleSizeContinuous","minSampleSizeConversion","minus","mismatches","mod","modOrNull","modulo","moduloLegacy","moduloOrNull","moduloOrZero","monthName","mortonDecode","mortonEncode","multiFuzzyMatchAllIndices","multiFuzzyMatchAny","multiFuzzyMatchAnyIndex","multiIf","multiMatchAllIndices","multiMatchAny","multiMatchAnyIndex","multiSearchAllPositions","multiSearchAllPositionsCaseInsensitive","multiSearchAllPositionsCaseInsensitiveUTF8","multiSearchAllPositionsUTF8","multiSearchAny","multiSearchAnyCaseInsensitive","multiSearchAnyCaseInsensitiveUTF8","multiSearchAnyUTF8","multiSearchFirstIndex","multiSearchFirstIndexCaseInsensitive","multiSearchFirstIndexCaseInsensitiveUTF8","multiSearchFirstIndexUTF8","multiSearchFirstPosition","multiSearchFirstPositionCaseInsensitive","multiSearchFirstPositionCaseInsensitiveUTF8","multiSearchFirstPositionUTF8","multiply","multiplyDecimal","murmurHash2_32","murmurHash2_64","murmurHash3_128","murmurHash3_32","murmurHash3_64","negate","neighbor","nested","netloc","ngramDistance","ngramDistanceCaseInsensitive","ngramDistanceCaseInsensitiveUTF8","ngramDistanceUTF8","ngramMinHash","ngramMinHashArg","ngramMinHashArgCaseInsensitive","ngramMinHashArgCaseInsensitiveUTF8","ngramMinHashArgUTF8","ngramMinHashCaseInsensitive","ngramMinHashCaseInsensitiveUTF8","ngramMinHashUTF8","ngramSearch","ngramSearchCaseInsensitive","ngramSearchCaseInsensitiveUTF8","ngramSearchUTF8","ngramSimHash","ngramSimHashCaseInsensitive","ngramSimHashCaseInsensitiveUTF8","ngramSimHashUTF8","ngrams","nonNegativeDerivative","normL1","normL2","normL2Squared","normLinf","normLp","normalizeL1","normalizeL2","normalizeLinf","normalizeLp","normalizeQuery","normalizeQueryKeepNames","normalizeUTF8NFC","normalizeUTF8NFD","normalizeUTF8NFKC","normalizeUTF8NFKD","normalizedQueryHash","normalizedQueryHashKeepNames","notEmpty","notEquals","notILike","notIn","notInIgnoreSet","notLike","notNullIn","notNullInIgnoreSet","nothing","nothingNull","nothingUInt64","now","now64","nowInBlock","nowInBlock64","nth_value","ntile","nullIf","nullIn","nullInIgnoreSet","numbers","numericIndexedVectorAllValueSum","numericIndexedVectorBuild","numericIndexedVectorCardinality","numericIndexedVectorGetValue","numericIndexedVectorPointwiseAdd","numericIndexedVectorPointwiseDivide","numericIndexedVectorPointwiseEqual","numericIndexedVectorPointwiseGreater","numericIndexedVectorPointwiseGreaterEqual","numericIndexedVectorPointwiseLess","numericIndexedVectorPointwiseLessEqual","numericIndexedVectorPointwiseMultiply","numericIndexedVectorPointwiseNotEqual","numericIndexedVectorPointwiseSubtract","numericIndexedVectorShortDebugString","numericIndexedVectorToMap","overlay","overlayUTF8","parseDateTime","parseDateTime32BestEffort","parseDateTime32BestEffortOrNull","parseDateTime32BestEffortOrZero","parseDateTime64","parseDateTime64BestEffort","parseDateTime64BestEffortOrNull","parseDateTime64BestEffortOrZero","parseDateTime64BestEffortUS","parseDateTime64BestEffortUSOrNull","parseDateTime64BestEffortUSOrZero","parseDateTime64InJodaSyntax","parseDateTime64InJodaSyntaxOrNull","parseDateTime64InJodaSyntaxOrZero","parseDateTime64OrNull","parseDateTime64OrZero","parseDateTimeBestEffort","parseDateTimeBestEffortOrNull","parseDateTimeBestEffortOrZero","parseDateTimeBestEffortUS","parseDateTimeBestEffortUSOrNull","parseDateTimeBestEffortUSOrZero","parseDateTimeInJodaSyntax","parseDateTimeInJodaSyntaxOrNull","parseDateTimeInJodaSyntaxOrZero","parseDateTimeOrNull","parseDateTimeOrZero","parseReadableSize","parseReadableSizeOrNull","parseReadableSizeOrZero","parseTimeDelta","partitionID","partitionId","path","pathFull","percentRank","percent_rank","pi","plus","pmod","pmodOrNull","pointInEllipses","pointInPolygon","polygonAreaCartesian","polygonAreaSpherical","polygonConvexHullCartesian","polygonPerimeterCartesian","polygonPerimeterSpherical","polygonsDistanceCartesian","polygonsDistanceSpherical","polygonsEqualsCartesian","polygonsIntersectCartesian","polygonsIntersectSpherical","polygonsIntersectionCartesian","polygonsIntersectionSpherical","polygonsSymDifferenceCartesian","polygonsSymDifferenceSpherical","polygonsUnionCartesian","polygonsUnionSpherical","polygonsWithinCartesian","polygonsWithinSpherical","port","portRFC","position","positionCaseInsensitive","positionCaseInsensitiveUTF8","positionUTF8","positiveModulo","positiveModuloOrNull","positive_modulo","positive_modulo_or_null","pow","power","printf","proportionsZTest","protocol","punycodeDecode","punycodeEncode","quantile","quantileBFloat16","quantileBFloat16Weighted","quantileDD","quantileDeterministic","quantileExact","quantileExactExclusive","quantileExactHigh","quantileExactInclusive","quantileExactLow","quantileExactWeighted","quantileExactWeightedInterpolated","quantileGK","quantileInterpolatedWeighted","quantileTDigest","quantileTDigestWeighted","quantileTiming","quantileTimingWeighted","quantiles","quantilesBFloat16","quantilesBFloat16Weighted","quantilesDD","quantilesDeterministic","quantilesExact","quantilesExactExclusive","quantilesExactHigh","quantilesExactInclusive","quantilesExactLow","quantilesExactWeighted","quantilesExactWeightedInterpolated","quantilesGK","quantilesInterpolatedWeighted","quantilesTDigest","quantilesTDigestWeighted","quantilesTiming","quantilesTimingWeighted","queryID","queryString","queryStringAndFragment","query_id","radians","rand","rand32","rand64","randBernoulli","randBinomial","randCanonical","randChiSquared","randConstant","randExponential","randFisherF","randLogNormal","randNegativeBinomial","randNormal","randPoisson","randStudentT","randUniform","randomFixedString","randomPrintableASCII","randomString","randomStringUTF8","rank","rankCorr","readWKBLineString","readWKBMultiLineString","readWKBMultiPolygon","readWKBPoint","readWKBPolygon","readWKTLineString","readWKTMultiLineString","readWKTMultiPolygon","readWKTPoint","readWKTPolygon","readWKTRing","regexpExtract","regexpQuoteMeta","regionHierarchy","regionIn","regionToArea","regionToCity","regionToContinent","regionToCountry","regionToDistrict","regionToName","regionToPopulation","regionToTopContinent","reinterpret","reinterpretAsDate","reinterpretAsDateTime","reinterpretAsFixedString","reinterpretAsFloat32","reinterpretAsFloat64","reinterpretAsInt128","reinterpretAsInt16","reinterpretAsInt256","reinterpretAsInt32","reinterpretAsInt64","reinterpretAsInt8","reinterpretAsString","reinterpretAsUInt128","reinterpretAsUInt16","reinterpretAsUInt256","reinterpretAsUInt32","reinterpretAsUInt64","reinterpretAsUInt8","reinterpretAsUUID","repeat","replace","replaceAll","replaceOne","replaceRegexpAll","replaceRegexpOne","replicate","retention","reverse","reverseUTF8","revision","right","rightPad","rightPadUTF8","rightUTF8","round","roundAge","roundBankers","roundDown","roundDuration","roundToExp2","rowNumberInAllBlocks","rowNumberInBlock","row_number","rpad","rtrim","runningAccumulate","runningConcurrency","runningDifference","runningDifferenceStartingWithFirstValue","s2CapContains","s2CapUnion","s2CellsIntersect","s2GetNeighbors","s2RectAdd","s2RectContains","s2RectIntersection","s2RectUnion","s2ToGeo","scalarProduct","searchAll","searchAny","sequenceCount","sequenceMatch","sequenceMatchEvents","sequenceNextNode","seriesDecomposeSTL","seriesOutliersDetectTukey","seriesPeriodDetectFFT","serverTimeZone","serverTimezone","serverUUID","shardCount","shardNum","showCertificate","sigmoid","sign","simpleJSONExtractBool","simpleJSONExtractFloat","simpleJSONExtractInt","simpleJSONExtractRaw","simpleJSONExtractString","simpleJSONExtractUInt","simpleJSONHas","simpleLinearRegression","sin","singleValueOrNull","sinh","sipHash128","sipHash128Keyed","sipHash128Reference","sipHash128ReferenceKeyed","sipHash64","sipHash64Keyed","skewPop","skewSamp","sleep","sleepEachRow","snowflakeIDToDateTime","snowflakeIDToDateTime64","snowflakeToDateTime","snowflakeToDateTime64","soundex","space","sparkBar","sparkbar","sparseGrams","sparseGramsHashes","sparseGramsHashesUTF8","sparseGramsUTF8","splitByAlpha","splitByChar","splitByNonAlpha","splitByRegexp","splitByString","splitByWhitespace","sqid","sqidDecode","sqidEncode","sqrt","startsWith","startsWithUTF8","stddevPop","stddevPopStable","stddevSamp","stddevSampStable","stem","stochasticLinearRegression","stochasticLogisticRegression","str_to_date","str_to_map","stringBytesEntropy","stringBytesUniq","stringJaccardIndex","stringJaccardIndexUTF8","stringToH3","structureToCapnProtoSchema","structureToProtobufSchema","studentTTest","subBitmap","subDate","substr","substring","substringIndex","substringIndexUTF8","substringUTF8","subtractDays","subtractHours","subtractInterval","subtractMicroseconds","subtractMilliseconds","subtractMinutes","subtractMonths","subtractNanoseconds","subtractQuarters","subtractSeconds","subtractTupleOfIntervals","subtractWeeks","subtractYears","sum","sumCount","sumKahan","sumMapFiltered","sumMapFilteredWithOverflow","sumMapWithOverflow","sumMappedArrays","sumWithOverflow","svg","synonyms","tan","tanh","tcpPort","tgamma","theilsU","throwIf","tid","timeDiff","timeSeriesDeltaToGrid","timeSeriesDerivToGrid","timeSeriesFromGrid","timeSeriesGroupArray","timeSeriesIdToTags","timeSeriesIdToTagsGroup","timeSeriesIdeltaToGrid","timeSeriesInstantDeltaToGrid","timeSeriesInstantRateToGrid","timeSeriesIrateToGrid","timeSeriesLastToGrid","timeSeriesLastTwoSamples","timeSeriesPredictLinearToGrid","timeSeriesRange","timeSeriesRateToGrid","timeSeriesResampleToGridWithStaleness","timeSeriesStoreTags","timeSeriesTagsGroupToTags","timeSlot","timeSlots","timeZone","timeZoneOf","timeZoneOffset","time_bucket","timestamp","timestampDiff","timestamp_diff","timezone","timezoneOf","timezoneOffset","toBFloat16","toBFloat16OrNull","toBFloat16OrZero","toBool","toColumnTypeName","toDate","toDate32","toDate32OrDefault","toDate32OrNull","toDate32OrZero","toDateOrDefault","toDateOrNull","toDateOrZero","toDateTime","toDateTime32","toDateTime64","toDateTime64OrDefault","toDateTime64OrNull","toDateTime64OrZero","toDateTimeOrDefault","toDateTimeOrNull","toDateTimeOrZero","toDayOfMonth","toDayOfWeek","toDayOfYear","toDaysSinceYearZero","toDecimal128","toDecimal128OrDefault","toDecimal128OrNull","toDecimal128OrZero","toDecimal256","toDecimal256OrDefault","toDecimal256OrNull","toDecimal256OrZero","toDecimal32","toDecimal32OrDefault","toDecimal32OrNull","toDecimal32OrZero","toDecimal64","toDecimal64OrDefault","toDecimal64OrNull","toDecimal64OrZero","toDecimalString","toFixedString","toFloat32","toFloat32OrDefault","toFloat32OrNull","toFloat32OrZero","toFloat64","toFloat64OrDefault","toFloat64OrNull","toFloat64OrZero","toHour","toIPv4","toIPv4OrDefault","toIPv4OrNull","toIPv4OrZero","toIPv6","toIPv6OrDefault","toIPv6OrNull","toIPv6OrZero","toISOWeek","toISOYear","toInt128","toInt128OrDefault","toInt128OrNull","toInt128OrZero","toInt16","toInt16OrDefault","toInt16OrNull","toInt16OrZero","toInt256","toInt256OrDefault","toInt256OrNull","toInt256OrZero","toInt32","toInt32OrDefault","toInt32OrNull","toInt32OrZero","toInt64","toInt64OrDefault","toInt64OrNull","toInt64OrZero","toInt8","toInt8OrDefault","toInt8OrNull","toInt8OrZero","toInterval","toIntervalDay","toIntervalHour","toIntervalMicrosecond","toIntervalMillisecond","toIntervalMinute","toIntervalMonth","toIntervalNanosecond","toIntervalQuarter","toIntervalSecond","toIntervalWeek","toIntervalYear","toJSONString","toLastDayOfMonth","toLastDayOfWeek","toLowCardinality","toMillisecond","toMinute","toModifiedJulianDay","toModifiedJulianDayOrNull","toMonday","toMonth","toMonthNumSinceEpoch","toNullable","toQuarter","toRelativeDayNum","toRelativeHourNum","toRelativeMinuteNum","toRelativeMonthNum","toRelativeQuarterNum","toRelativeSecondNum","toRelativeWeekNum","toRelativeYearNum","toSecond","toStartOfDay","toStartOfFifteenMinutes","toStartOfFiveMinute","toStartOfFiveMinutes","toStartOfHour","toStartOfISOYear","toStartOfInterval","toStartOfMicrosecond","toStartOfMillisecond","toStartOfMinute","toStartOfMonth","toStartOfNanosecond","toStartOfQuarter","toStartOfSecond","toStartOfTenMinutes","toStartOfWeek","toStartOfYear","toString","toStringCutToZero","toTime","toTime64","toTime64OrNull","toTime64OrZero","toTimeOrNull","toTimeOrZero","toTimeWithFixedDate","toTimeZone","toTimezone","toTypeName","toUInt128","toUInt128OrDefault","toUInt128OrNull","toUInt128OrZero","toUInt16","toUInt16OrDefault","toUInt16OrNull","toUInt16OrZero","toUInt256","toUInt256OrDefault","toUInt256OrNull","toUInt256OrZero","toUInt32","toUInt32OrDefault","toUInt32OrNull","toUInt32OrZero","toUInt64","toUInt64OrDefault","toUInt64OrNull","toUInt64OrZero","toUInt8","toUInt8OrDefault","toUInt8OrNull","toUInt8OrZero","toUTCTimestamp","toUUID","toUUIDOrDefault","toUUIDOrNull","toUUIDOrZero","toUnixTimestamp","toUnixTimestamp64Micro","toUnixTimestamp64Milli","toUnixTimestamp64Nano","toUnixTimestamp64Second","toValidUTF8","toWeek","toYYYYMM","toYYYYMMDD","toYYYYMMDDhhmmss","toYear","toYearNumSinceEpoch","toYearWeek","to_utc_timestamp","today","tokens","topK","topKWeighted","topLevelDomain","topLevelDomainRFC","transactionID","transactionLatestSnapshot","transactionOldestSnapshot","transform","translate","translateUTF8","trim","trimBoth","trimLeft","trimRight","trunc","tryBase32Decode","tryBase58Decode","tryBase64Decode","tryBase64URLDecode","tryDecrypt","tryIdnaEncode","tryPunycodeDecode","tumble","tumbleEnd","tumbleStart","tuple","tupleConcat","tupleDivide","tupleDivideByNumber","tupleElement","tupleHammingDistance","tupleIntDiv","tupleIntDivByNumber","tupleIntDivOrZero","tupleIntDivOrZeroByNumber","tupleMinus","tupleModulo","tupleModuloByNumber","tupleMultiply","tupleMultiplyByNumber","tupleNames","tupleNegate","tuplePlus","tupleToNameValuePairs","ucase","unbin","unhex","uniq","uniqCombined","uniqCombined64","uniqExact","uniqHLL12","uniqTheta","uniqThetaIntersect","uniqThetaNot","uniqThetaUnion","uniqUpTo","upper","upperUTF8","uptime","user","validateNestedArraySizes","varPop","varPopStable","varSamp","varSampStable","variantElement","variantType","vectorDifference","vectorSum","version","visibleWidth","visitParamExtractBool","visitParamExtractFloat","visitParamExtractInt","visitParamExtractRaw","visitParamExtractString","visitParamExtractUInt","visitParamHas","week","welchTTest","widthBucket","width_bucket","windowFunnel","windowID","wkb","wkt","wordShingleMinHash","wordShingleMinHashArg","wordShingleMinHashArgCaseInsensitive","wordShingleMinHashArgCaseInsensitiveUTF8","wordShingleMinHashArgUTF8","wordShingleMinHashCaseInsensitive","wordShingleMinHashCaseInsensitiveUTF8","wordShingleMinHashUTF8","wordShingleSimHash","wordShingleSimHashCaseInsensitive","wordShingleSimHashCaseInsensitiveUTF8","wordShingleSimHashUTF8","wyHash64","xor","xxHash32","xxHash64","xxh3","yandexConsistentHash","yearweek","yesterday","zookeeperSessionUptime","MergeTree","ReplacingMergeTree","SummingMergeTree","AggregatingMergeTree","CollapsingMergeTree","VersionedCollapsingMergeTree","GraphiteMergeTree","CoalescingMergeTree","Atomic","Shared","Lazy","Replicated","PostgreSQL","MySQL","SQLite","MaterializedPostgreSQL","DataLakeCatalog"],m2=["ACCESS","ACTION","ADD","ADMIN","AFTER","ALGORITHM","ALIAS","ALL","ALLOWED_LATENESS","ALTER","AND","ANTI","APPEND","APPLY","AS","ASC","ASCENDING","ASOF","ASSUME","AST","ASYNC","ATTACH","AUTO_INCREMENT","AZURE","BACKUP","BAGEXPANSION","BASE_BACKUP","BCRYPT_HASH","BCRYPT_PASSWORD","BEGIN","BETWEEN","BIDIRECTIONAL","BOTH","BY","CACHE","CACHES","CASCADE","CASE","CHANGE","CHANGEABLE_IN_READONLY","CHANGED","CHARACTER","CHECK","CLEANUP","CLEAR","CLUSTER","CLUSTERS","CLUSTER_HOST_IDS","CN","CODEC","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPRESSION","CONST","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","D","DATA","DATABASE","DATABASES","DAYS","DD","DDL","DEDUPLICATE","DEFAULT","DEFINER","DELAY","DELETE","DELETED","DEPENDS","DESC","DESCENDING","DESCRIBE","DETACH","DETACHED","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DIV","DOUBLE_SHA1_HASH","DOUBLE_SHA1_PASSWORD","DROP","ELSE","ENABLED","END","ENFORCED","ENGINE","ENGINES","EPHEMERAL","ESTIMATE","EVENT","EVENTS","EVERY","EXCEPT","EXCHANGE","EXISTS","EXPLAIN","EXPRESSION","EXTENDED","EXTERNAL","FAKE","FALSE","FETCH","FIELDS","FILESYSTEM","FILL","FILTER","FINAL","FIRST","FOLLOWING","FOR","FOREIGN","FORMAT","FREEZE","FROM","FULL","FULLTEXT","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GRANTEES","GRANTS","GRANULARITY","GROUP","GROUPING","GROUPS","H","HASH","HAVING","HDFS","HH","HIERARCHICAL","HOST","HOURS","HTTP","IDENTIFIED","ILIKE","IN","INDEX","INDEXES","INDICES","INFILE","INHERIT","INJECTIVE","INNER","INSERT","INTERPOLATE","INTERSECT","INTERVAL","INTO","INVISIBLE","INVOKER","IP","IS","IS_OBJECT_ID","JOIN","JWT","KERBEROS","KEY","KEYED","KEYS","KILL","KIND","LARGE","LAST","LAYOUT","LDAP","LEADING","LEVEL","LIFETIME","LIGHTWEIGHT","LIKE","LIMIT","LIMITS","LINEAR","LIST","LIVE","LOCAL","M","MASK","MATERIALIZED","MCS","MEMORY","MERGES","METRICS","MI","MICROSECOND","MICROSECONDS","MILLISECONDS","MINUTES","MM","MODIFY","MONTHS","MOVE","MS","MUTATION","N","NAME","NAMED","NANOSECOND","NANOSECONDS","NEXT","NO","NONE","NOT","NO_PASSWORD","NS","NULL","NULLS","OBJECT","OFFSET","ON","ONLY","OPTIMIZE","OPTION","OR","ORDER","OUTER","OUTFILE","OVER","OVERRIDABLE","OVERRIDE","PART","PARTIAL","PARTITION","PARTITIONS","PART_MOVE_TO_SHARD","PASTE","PERIODIC","PERMANENTLY","PERMISSIVE","PERSISTENT","PIPELINE","PLAINTEXT_PASSWORD","PLAN","POLICY","POPULATE","PRECEDING","PRECISION","PREWHERE","PRIMARY","PRIVILEGES","PROCESSLIST","PROFILE","PROJECTION","PROTOBUF","PULL","Q","QQ","QUALIFY","QUARTERS","QUERY","QUOTA","RANDOMIZE","RANDOMIZED","RANGE","READONLY","REALM","RECOMPRESS","RECURSIVE","REFERENCES","REFRESH","REGEXP","REMOVE","RENAME","RESET","RESPECT","RESTORE","RESTRICT","RESTRICTIVE","RESUME","REVOKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","S","S3","SALT","SAMPLE","SAN","SCHEME","SECONDS","SECURITY","SELECT","SEMI","SEQUENTIAL","SERVER","SET","SETS","SETTING","SETTINGS","SHA256_HASH","SHA256_PASSWORD","SHARD","SHOW","SIGNED","SIMPLE","SNAPSHOT","SOURCE","SPATIAL","SQL","SQL_TSI_DAY","SQL_TSI_HOUR","SQL_TSI_MICROSECOND","SQL_TSI_MILLISECOND","SQL_TSI_MINUTE","SQL_TSI_MONTH","SQL_TSI_NANOSECOND","SQL_TSI_QUARTER","SQL_TSI_SECOND","SQL_TSI_WEEK","SQL_TSI_YEAR","SS","SSH_KEY","SSL_CERTIFICATE","STALENESS","START","STATISTICS","STDOUT","STEP","STORAGE","STRICT","STRICTLY_ASCENDING","SUBPARTITION","SUBPARTITIONS","SUSPEND","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TAGS","TEMPORARY","TEST","THAN","THEN","TIES","TIME","TO","TOP","TOTALS","TRACKING","TRAILING","TRANSACTION","TREE","TRIGGER","TRUE","TRUNCATE","TTL","TYPE","TYPEOF","UNBOUNDED","UNDROP","UNFREEZE","UNION","UNIQUE","UNSET","UNSIGNED","UNTIL","UPDATE","URL","USE","USING","UUID","VALID","VALUES","VARYING","VIEW","VISIBLE","VOLUME","WATCH","WATERMARK","WEEKS","WHEN","WHERE","WINDOW","WITH","WITH_ITEMINDEX","WK","WRITABLE","WW","YEARS","YY","YYYY","ZKPATH"],g2=["AGGREGATEFUNCTION","ARRAY","BFLOAT16","BIGINT","BIGINT SIGNED","BIGINT UNSIGNED","BINARY","BINARY LARGE OBJECT","BINARY VARYING","BIT","BLOB","BYTE","BYTEA","BOOL","CHAR","CHAR LARGE OBJECT","CHAR VARYING","CHARACTER","CHARACTER LARGE OBJECT","CHARACTER VARYING","CLOB","DEC","DOUBLE","DOUBLE PRECISION","DATE","DATE32","DATETIME","DATETIME32","DATETIME64","DECIMAL","DECIMAL128","DECIMAL256","DECIMAL32","DECIMAL64","DYNAMIC","ENUM","ENUM","ENUM16","ENUM8","FIXED","FLOAT","FIXEDSTRING","FLOAT32","FLOAT64","GEOMETRY","INET4","INET6","INT","INT SIGNED","INT UNSIGNED","INT1","INT1 SIGNED","INT1 UNSIGNED","INTEGER","INTEGER SIGNED","INTEGER UNSIGNED","IPV4","IPV6","INT128","INT16","INT256","INT32","INT64","INT8","INTERVALDAY","INTERVALHOUR","INTERVALMICROSECOND","INTERVALMILLISECOND","INTERVALMINUTE","INTERVALMONTH","INTERVALNANOSECOND","INTERVALQUARTER","INTERVALSECOND","INTERVALWEEK","INTERVALYEAR","JSON","LONGBLOB","LONGTEXT","LINESTRING","LOWCARDINALITY","MEDIUMBLOB","MEDIUMINT","MEDIUMINT SIGNED","MEDIUMINT UNSIGNED","MEDIUMTEXT","MAP","MULTILINESTRING","MULTIPOLYGON","NATIONAL CHAR","NATIONAL CHAR VARYING","NATIONAL CHARACTER","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NCHAR","NCHAR LARGE OBJECT","NCHAR VARYING","NUMERIC","NVARCHAR","NESTED","NOTHING","NULLABLE","OBJECT","POINT","POLYGON","REAL","RING","SET","SIGNED","SINGLE","SMALLINT","SMALLINT SIGNED","SMALLINT UNSIGNED","SIMPLEAGGREGATEFUNCTION","STRING","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYINT SIGNED","TINYINT UNSIGNED","TINYTEXT","TIME","TIME64","TUPLE","UINT128","UINT16","UINT256","UINT32","UINT64","UINT8","UNSIGNED","UUID","VARBINARY","VARCHAR","VARCHAR2","VARIANT","YEAR","BOOL","BOOLEAN"],C2=H(["SELECT [DISTINCT]","MODIFY QUERY SELECT [DISTINCT]"]),x2=H(["SET","WITH","FROM","SAMPLE","PREWHERE","WHERE","GROUP BY","HAVING","QUALIFY","ORDER BY","LIMIT","SETTINGS","INTO OUTFILE","FORMAT","WINDOW","PARTITION BY","INSERT INTO","VALUES","DEPENDS ON","MOVE {USER | ROLE | QUOTA | SETTINGS PROFILE | ROW POLICY}","GRANT","REVOKE","CHECK GRANT","SET [DEFAULT] ROLE [NONE | ALL | ALL EXCEPT]","DEDUPLICATE BY","MODIFY STATISTICS","TYPE","ALTER USER [IF EXISTS]","ALTER [ROW] POLICY [IF EXISTS]","DROP {USER | ROLE | QUOTA | PROFILE | SETTINGS PROFILE | ROW POLICY | POLICY} [IF EXISTS]"]),gT=H(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),El=H(["ALL EXCEPT","ON CLUSTER","UPDATE","SYSTEM RELOAD {DICTIONARIES | DICTIONARY | FUNCTIONS | FUNCTION | ASYNCHRONOUS METRICS}","SYSTEM DROP {DNS CACHE | MARK CACHE | ICEBERG METADATA CACHE | TEXT INDEX DICTIONARY CACHE | TEXT INDEX HEADER CACHE | TEXT INDEX POSTINGS CACHE | REPLICA | DATABASE REPLICA | UNCOMPRESSED CACHE | COMPILED EXPRESSION CACHE | QUERY CONDITION CACHE | QUERY CACHE | FORMAT SCHEMA CACHE | FILESYSTEM CACHE}","SYSTEM FLUSH LOGS","SYSTEM RELOAD {CONFIG | USERS}","SYSTEM SHUTDOWN","SYSTEM KILL","SYSTEM FLUSH DISTRIBUTED","SYSTEM START DISTRIBUTED SENDS","SYSTEM {STOP | START} {LISTEN | MERGES | TTL MERGES | MOVES | FETCHES | REPLICATED SENDS | REPLICATION QUEUES | PULLING REPLICATION LOG}","SYSTEM {SYNC | RESTART | RESTORE} REPLICA","SYSTEM {SYNC | RESTORE} DATABASE REPLICA","SYSTEM RESTART REPLICAS","SYSTEM UNFREEZE","SYSTEM WAIT LOADING PARTS","SYSTEM {LOAD | UNLOAD} PRIMARY KEY","SYSTEM {STOP | START} [REPLICATED] VIEW","SYSTEM {STOP | START} VIEWS","SYSTEM {REFRESH | CANCEL | WAIT} VIEW","WITH NAME","SHOW [CREATE] {TABLE | TEMPORARY TABLE | DICTIONARY | VIEW | DATABASE}","SHOW DATABASES [[NOT] {LIKE | ILIKE}]","SHOW [FULL] [TEMPORARY] TABLES [FROM | IN]","SHOW [EXTENDED] [FULL] COLUMNS {FROM | IN}","ATTACH {TABLE | DICTIONARY | DATABASE} [IF NOT EXISTS]","DETACH {TABLE | DICTIONARY | DATABASE} [IF EXISTS]","PERMANENTLY","SYNC","DROP {DICTIONARY | DATABASE | PROFILE | VIEW | FUNCTION | NAMED COLLECTION} [IF EXISTS]","DROP [TEMPORARY] TABLE [IF EXISTS] [IF EMPTY]","RENAME TO","EXISTS [TEMPORARY] {TABLE | DICTIONARY | DATABASE}","KILL QUERY","OPTIMIZE TABLE","RENAME {TABLE | DICTIONARY | DATABASE}","EXCHANGE {TABLES | DICTIONARIES}","TRUNCATE TABLE [IF EXISTS]","EXECUTE AS","USE","TO","UNDROP TABLE","CREATE {DATABASE | NAMED COLLECTION} [IF NOT EXISTS]","CREATE [OR REPLACE] {VIEW | DICTIONARY} [IF NOT EXISTS]","CREATE MATERIALIZED VIEW [IF NOT EXISTS]","CREATE FUNCTION","CREATE {USER | ROLE | QUOTA | SETTINGS PROFILE} [IF NOT EXISTS | OR REPLACE]","CREATE [ROW] POLICY [IF NOT EXISTS | OR REPLACE]","REPLACE [TEMPORARY] TABLE [IF NOT EXISTS]","ALTER {ROLE | QUOTA | SETTINGS PROFILE} [IF EXISTS]","ALTER [TEMPORARY] TABLE","ALTER NAMED COLLECTION [IF EXISTS]","GRANTEES","NOT IDENTIFIED","RESET AUTHENTICATION METHODS TO NEW","{IDENTIFIED | ADD IDENTIFIED} [WITH | BY]","[ADD | DROP] HOST {LOCAL | NAME | REGEXP | IP | LIKE}","VALID UNTIL","DROP [ALL] {PROFILES | SETTINGS}","{ADD | MODIFY} SETTINGS","ADD PROFILES","APPLY DELETED MASK","IN PARTITION","{ADD | DROP | RENAME | CLEAR | COMMENT | MODIFY | ALTER | MATERIALIZE} COLUMN","{DETACH | DROP | ATTACH | FETCH | MOVE} {PART | PARTITION}","DROP DETACHED {PART | PARTITION}","{FORGET | REPLACE} PARTITION","CLEAR COLUMN","{FREEZE | UNFREEZE} [PARTITION]","CLEAR INDEX","TO {DISK | VOLUME}","[DELETE | REWRITE PARTS] IN PARTITION","{MODIFY | RESET} SETTING","DELETE WHERE","MODIFY ORDER BY","{MODIFY | REMOVE} SAMPLE BY","{ADD | MATERIALIZE | CLEAR} INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","GRANULARITY","AFTER","FIRST","ADD CONSTRAINT [IF NOT EXISTS]","DROP CONSTRAINT [IF EXISTS]","MODIFY TTL","REMOVE TTL","ADD STATISTICS [IF NOT EXISTS]","{DROP | CLEAR} STATISTICS [IF EXISTS]","MATERIALIZE STATISTICS [ALL | IF EXISTS]","KEYED BY","NOT KEYED","FOR [RANDOMIZED] INTERVAL","AS {PERMISSIVE | RESTRICTIVE}","FOR SELECT","ADD PROJECTION [IF NOT EXISTS]","{DROP | MATERIALIZE | CLEAR} PROJECTION [IF EXISTS]","REFRESH {EVERY | AFTER}","RANDOMIZE FOR","APPEND","APPEND TO","DELETE FROM","EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE]","GRANT ON CLUSTER","GRANT CURRENT GRANTS","WITH GRANT OPTION","REVOKE ON CLUSTER","ADMIN OPTION FOR","CHECK TABLE","PARTITION ID","{DESC | DESCRIBE} TABLE"]),L2=H(["UNION [ALL | DISTINCT]","PARALLEL WITH"]),y2=H(["[GLOBAL] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI|ANY|ALL|ASOF] JOIN","[LEFT] ARRAY JOIN"]),_2=H(["{ROWS | RANGE} BETWEEN","ALTER MATERIALIZE STATISTICS"]),D2={name:"clickhouse",tokenizerOptions:{reservedSelect:C2,reservedClauses:[...x2,...gT,...El],reservedSetOperations:L2,reservedJoins:y2,reservedKeywordPhrases:_2,reservedKeywords:m2,reservedDataTypes:g2,reservedFunctionNames:O2,extraParens:["[]","{}"],lineCommentTypes:["#","--"],nestedBlockComments:!1,underscoresInNumbers:!0,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq-bs',"``"],paramTypes:{custom:[{regex:String.raw`\{[^:']+:[^}]+\}`,key:e=>{const t=/\{([^:]+):/.exec(e);return t?t[1].trim():e}}]},operators:["%","||","?",":","==","<=>","->"],postProcess:M2},formatOptions:{onelineClauses:[...gT,...El],tabularOnelineClauses:El}};function M2(e){return e.map((t,n)=>{const r=e[n+1]||dn,o=e[n-1]||dn;return t.type===$.RESERVED_SELECT&&(r.type===$.COMMA||o.type===$.RESERVED_CLAUSE||o.type===$.COMMA)?Object.assign(Object.assign({},t),{type:$.RESERVED_KEYWORD}):En.SET(t)&&r.type===$.OPEN_PAREN?Object.assign(Object.assign({},t),{type:$.RESERVED_FUNCTION_NAME}):t})}const b2=["ARRAY_AGG","AVG","CORRELATION","COUNT","COUNT_BIG","COVARIANCE","COVARIANCE_SAMP","CUME_DIST","GROUPING","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_ICPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_SAMP","SUM","VARIANCE","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","AGE","ARRAY_DELETE","ARRAY_FIRST","ARRAY_LAST","ARRAY_NEXT","ARRAY_PRIOR","ASCII","ASCII_STR","ASIN","ATAN","ATAN2","ATANH","BITAND","BITANDNOT","BITOR","BITXOR","BITNOT","BPCHAR","BSON_TO_JSON","BTRIM","CARDINALITY","CEILING","CEIL","CHARACTER_LENGTH","CHR","COALESCE","COLLATION_KEY","COLLATION_KEY_BIT","COMPARE_DECFLOAT","CONCAT","COS","COSH","COT","CURSOR_ROWCOUNT","DATAPARTITIONNUM","DATE_PART","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFWEEK_ISO","DAYOFYEAR","DAYS","DAYS_BETWEEN","DAYS_TO_END_OF_MONTH","DBPARTITIONNUM","DECFLOAT","DECFLOAT_FORMAT","DECODE","DECRYPT_BIN","DECRYPT_CHAR","DEGREES","DEREF","DIFFERENCE","DIGITS","DOUBLE_PRECISION","EMPTY_BLOB","EMPTY_CLOB","EMPTY_DBCLOB","EMPTY_NCLOB","ENCRYPT","EVENT_MON_STATE","EXP","EXTRACT","FIRST_DAY","FLOOR","FROM_UTC_TIMESTAMP","GENERATE_UNIQUE","GETHINT","GREATEST","HASH","HASH4","HASH8","HASHEDVALUE","HEX","HEXTORAW","HOUR","HOURS_BETWEEN","IDENTITY_VAL_LOCAL","IFNULL","INITCAP","INSERT","INSTR","INSTR2","INSTR4","INSTRB","INTNAND","INTNOR","INTNXOR","INTNNOT","ISNULL","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_VALUE","JULIAN_DAY","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LENGTH2","LENGTH4","LENGTHB","LN","LOCATE","LOCATE_IN_STRING","LOG10","LONG_VARCHAR","LONG_VARGRAPHIC","LOWER","LPAD","LTRIM","MAX","MAX_CARDINALITY","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MINUTES_BETWEEN","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MULTIPLY_ALT","NEXT_DAY","NEXT_MONTH","NEXT_QUARTER","NEXT_WEEK","NEXT_YEAR","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARAMETER","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","QUOTE_IDENT","QUOTE_LITERAL","RADIANS","RAISE_ERROR","RAND","RANDOM","RAWTOHEX","REC2XML","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH_COUNT","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RID_BIT","RIGHT","ROUND","ROUND_TIMESTAMP","RPAD","RTRIM","SECLABEL","SECLABEL_BY_NAME","SECLABEL_TO_CHAR","SECOND","SECONDS_BETWEEN","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTR2","SUBSTR4","SUBSTRB","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","THIS_MONTH","THIS_QUARTER","THIS_WEEK","THIS_YEAR","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF","TIMEZONE","TO_CHAR","TO_CLOB","TO_DATE","TO_HEX","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_UTC_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM","TRIM_ARRAY","TRUNC_TIMESTAMP","TRUNCATE","TRUNC","TYPE_ID","TYPE_NAME","TYPE_SCHEMA","UCASE","UNICODE_STR","UPPER","VALUE","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT","VARCHAR_FORMAT_BIT","VERIFY_GROUP_FOR_USER","VERIFY_ROLE_FOR_USER","VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER","WEEK","WEEK_ISO","WEEKS_BETWEEN","WIDTH_BUCKET","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XMLXSROBJECTID","XSLTRANSFORM","YEAR","YEARS_BETWEEN","YMD_BETWEEN","BASE_TABLE","JSON_TABLE","UNNEST","XMLTABLE","RANK","DENSE_RANK","NTILE","LAG","LEAD","ROW_NUMBER","FIRST_VALUE","LAST_VALUE","NTH_VALUE","RATIO_TO_REPORT","CAST"],P2=["ACTIVATE","ADD","AFTER","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","AS","ASENSITIVE","ASSOCIATE","ASUTIME","AT","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","BEFORE","BEGIN","BETWEEN","BINARY","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CHECK","CLONE","CLOSE","CLUSTER","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","COUNT","COUNT_BIG","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST1","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRAPHIC","GROUP","HANDLER","HASH","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INTEGRITY","INTERSECT","INTO","IS","ISNULL","ISOBID","ISOLATION","ITERATE","JAR","JAVA","JOIN","KEEP","KEY","LABEL","LANGUAGE","LAST3","LATERAL","LC_CTYPE","LEAVE","LEFT","LIKE","LIMIT","LINKTYPE","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LOOP","MAINTAINED","MATERIALIZED","MAXVALUE","MICROSECOND","MICROSECONDS","MINUTE","MINUTES","MINVALUE","MODE","MODIFIES","MONTH","MONTHS","NAN","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT2","NOTNULL","NULL","NULLS","NUMPARTS","OBID","OF","OFF","OFFSET","OLD","OLD_TABLE","ON","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","OR","ORDER","OUT","OUTER","OVER","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENT","PIECESIZE","PLAN","POSITION","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STOGROUP","STORES","STYLE","SUBSTRING","SUMMARY","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESPACE","THEN","TO","TRANSACTION","TRIGGER","TRIM","TRUNCATE","TYPE","UNDO","UNION","UNIQUE","UNTIL","UPDATE","USAGE","USER","USING","VALIDPROC","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],v2=["ARRAY","BIGINT","BINARY","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATE","DATETIME","DBCLOB","DEC","DECIMAL","DOUBLE","DOUBLE PRECISION","FLOAT","FLOAT4","FLOAT8","GRAPHIC","INT","INT2","INT4","INT8","INTEGER","INTERVAL","LONG VARCHAR","LONG VARGRAPHIC","NCHAR","NCHR","NCLOB","NVARCHAR","NUMERIC","SMALLINT","REAL","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC"],U2=H(["SELECT [ALL | DISTINCT]"]),w2=H(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH NEXT","FOR UPDATE [OF]","FOR {READ | FETCH} ONLY","FOR {RR | CS | UR | RS} [USE AND KEEP {SHARE | UPDATE | EXCLUSIVE} LOCKS]","WAIT FOR OUTCOME","SKIP LOCKED DATA","INTO","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT"]),CT=H(["CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]"]),ul=H(["CREATE [OR REPLACE] VIEW","UPDATE","WHERE CURRENT OF","WITH {RR | RS | CS | UR}","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME COLUMN","ALTER [COLUMN]","SET DATA TYPE","SET NOT NULL","DROP {DEFAULT | GENERATED | NOT NULL}","TRUNCATE [TABLE]","ALLOCATE","ALTER AUDIT POLICY","ALTER BUFFERPOOL","ALTER DATABASE PARTITION GROUP","ALTER DATABASE","ALTER EVENT MONITOR","ALTER FUNCTION","ALTER HISTOGRAM TEMPLATE","ALTER INDEX","ALTER MASK","ALTER METHOD","ALTER MODULE","ALTER NICKNAME","ALTER PACKAGE","ALTER PERMISSION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SECURITY LABEL COMPONENT","ALTER SECURITY POLICY","ALTER SEQUENCE","ALTER SERVER","ALTER SERVICE CLASS","ALTER STOGROUP","ALTER TABLESPACE","ALTER THRESHOLD","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER TYPE","ALTER USAGE LIST","ALTER USER MAPPING","ALTER VIEW","ALTER WORK ACTION SET","ALTER WORK CLASS SET","ALTER WORKLOAD","ALTER WRAPPER","ALTER XSROBJECT","ALTER STOGROUP","ALTER TABLESPACE","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER VIEW","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","AUDIT","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON","COMMIT [WORK]","CONNECT","CREATE [OR REPLACE] [PUBLIC] ALIAS","CREATE AUDIT POLICY","CREATE BUFFERPOOL","CREATE DATABASE PARTITION GROUP","CREATE EVENT MONITOR","CREATE [OR REPLACE] FUNCTION","CREATE FUNCTION MAPPING","CREATE HISTOGRAM TEMPLATE","CREATE [UNIQUE] INDEX","CREATE INDEX EXTENSION","CREATE [OR REPLACE] MASK","CREATE [SPECIFIC] METHOD","CREATE [OR REPLACE] MODULE","CREATE [OR REPLACE] NICKNAME","CREATE [OR REPLACE] PERMISSION","CREATE [OR REPLACE] PROCEDURE","CREATE ROLE","CREATE SCHEMA","CREATE SECURITY LABEL [COMPONENT]","CREATE SECURITY POLICY","CREATE [OR REPLACE] SEQUENCE","CREATE SERVICE CLASS","CREATE SERVER","CREATE STOGROUP","CREATE SYNONYM","CREATE [LARGE | REGULAR | {SYSTEM | USER} TEMPORARY] TABLESPACE","CREATE THRESHOLD","CREATE {TRANSFORM | TRANSFORMS} FOR","CREATE [OR REPLACE] TRIGGER","CREATE TRUSTED CONTEXT","CREATE [OR REPLACE] TYPE","CREATE TYPE MAPPING","CREATE USAGE LIST","CREATE USER MAPPING FOR","CREATE [OR REPLACE] VARIABLE","CREATE WORK ACTION SET","CREATE WORK CLASS SET","CREATE WORKLOAD","CREATE WRAPPER","DECLARE","DECLARE GLOBAL TEMPORARY TABLE","DESCRIBE [INPUT | OUTPUT]","DISCONNECT","DROP [PUBLIC] ALIAS","DROP AUDIT POLICY","DROP BUFFERPOOL","DROP DATABASE PARTITION GROUP","DROP EVENT MONITOR","DROP [SPECIFIC] FUNCTION","DROP FUNCTION MAPPING","DROP HISTOGRAM TEMPLATE","DROP INDEX [EXTENSION]","DROP MASK","DROP [SPECIFIC] METHOD","DROP MODULE","DROP NICKNAME","DROP PACKAGE","DROP PERMISSION","DROP [SPECIFIC] PROCEDURE","DROP ROLE","DROP SCHEMA","DROP SECURITY LABEL [COMPONENT]","DROP SECURITY POLICY","DROP SEQUENCE","DROP SERVER","DROP SERVICE CLASS","DROP STOGROUP","DROP TABLE HIERARCHY","DROP {TABLESPACE | TABLESPACES}","DROP {TRANSFORM | TRANSFORMS}","DROP THRESHOLD","DROP TRIGGER","DROP TRUSTED CONTEXT","DROP TYPE [MAPPING]","DROP USAGE LIST","DROP USER MAPPING FOR","DROP VARIABLE","DROP VIEW [HIERARCHY]","DROP WORK {ACTION | CLASS} SET","DROP WORKLOAD","DROP WRAPPER","DROP XSROBJECT","END DECLARE SECTION","EXECUTE [IMMEDIATE]","EXPLAIN {PLAN [SECTION] | ALL}","FETCH [FROM]","FLUSH {BUFFERPOOL | BUFFERPOOLS} ALL","FLUSH EVENT MONITOR","FLUSH FEDERATED CACHE","FLUSH OPTIMIZATION PROFILE CACHE","FLUSH PACKAGE CACHE [DYNAMIC]","FLUSH AUTHENTICATION CACHE [FOR ALL]","FREE LOCATOR","GET DIAGNOSTICS","GOTO","GRANT","INCLUDE","ITERATE","LEAVE","LOCK TABLE","LOOP","OPEN","PIPE","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX | STOGROUP | TABLESPACE]","REPEAT","RESIGNAL","RETURN","REVOKE","ROLLBACK [WORK] [TO SAVEPOINT]","SAVEPOINT","SET COMPILATION ENVIRONMENT","SET CONNECTION","SET CURRENT","SET ENCRYPTION PASSWORD","SET EVENT MONITOR STATE","SET INTEGRITY","SET PASSTHRU","SET PATH","SET ROLE","SET SCHEMA","SET SERVER OPTION","SET {SESSION AUTHORIZATION | SESSION_USER}","SET USAGE LIST","SIGNAL","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}","WHILE"]),B2=H(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),F2=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),G2=H(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),H2=H([]),k2={name:"db2",tokenizerOptions:{reservedSelect:U2,reservedClauses:[...w2,...CT,...ul],reservedSetOperations:B2,reservedJoins:F2,reservedKeywordPhrases:G2,reservedDataTypePhrases:H2,reservedKeywords:P2,reservedDataTypes:v2,reservedFunctionNames:b2,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N","U&"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","%","|","&","^","~","¬=","¬>","¬<","!>","!<","^=","^>","^<","||","->","=>"]},formatOptions:{onelineClauses:[...CT,...ul],tabularOnelineClauses:ul}},j2=["ARRAY_AGG","AVG","CORR","CORRELATION","COUNT","COUNT_BIG","COVAR_POP","COVARIANCE","COVAR","COVAR_SAMP","COVARIANCE_SAMP","EVERY","GROUPING","JSON_ARRAYAGG","JSON_OBJECTAGG","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","SOME","STDDEV_POP","STDDEV","STDDEV_SAMP","SUM","VAR_POP","VARIANCE","VAR","VAR_SAMP","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","ANTILOG","ARRAY_MAX_CARDINALITY","ARRAY_TRIM","ASCII","ASIN","ATAN","ATAN2","ATANH","BASE64_DECODE","BASE64_ENCODE","BIT_LENGTH","BITAND","BITANDNOT","BITNOT","BITOR","BITXOR","BSON_TO_JSON","CARDINALITY","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","COALESCE","COMPARE_DECFLOAT","CONCAT","CONTAINS","COS","COSH","COT","CURDATE","CURTIME","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK_ISO","DAYOFWEEK","DAYOFYEAR","DAYS","DBPARTITIONNAME","DBPARTITIONNUM","DECFLOAT_FORMAT","DECFLOAT_SORTKEY","DECRYPT_BINARY","DECRYPT_BIT","DECRYPT_CHAR","DECRYPT_DB","DEGREES","DIFFERENCE","DIGITS","DLCOMMENT","DLLINKTYPE","DLURLCOMPLETE","DLURLPATH","DLURLPATHONLY","DLURLSCHEME","DLURLSERVER","DLVALUE","DOUBLE_PRECISION","DOUBLE","ENCRPYT","ENCRYPT_AES","ENCRYPT_AES256","ENCRYPT_RC2","ENCRYPT_TDES","EXP","EXTRACT","FIRST_DAY","FLOOR","GENERATE_UNIQUE","GET_BLOB_FROM_FILE","GET_CLOB_FROM_FILE","GET_DBCLOB_FROM_FILE","GET_XML_FILE","GETHINT","GREATEST","HASH_MD5","HASH_ROW","HASH_SHA1","HASH_SHA256","HASH_SHA512","HASH_VALUES","HASHED_VALUE","HEX","HEXTORAW","HOUR","HTML_ENTITY_DECODE","HTML_ENTITY_ENCODE","HTTP_DELETE_BLOB","HTTP_DELETE","HTTP_GET_BLOB","HTTP_GET","HTTP_PATCH_BLOB","HTTP_PATCH","HTTP_POST_BLOB","HTTP_POST","HTTP_PUT_BLOB","HTTP_PUT","IDENTITY_VAL_LOCAL","IFNULL","INSERT","INSTR","INTERPRET","ISFALSE","ISNOTFALSE","ISNOTTRUE","ISTRUE","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_UPDATE","JSON_VALUE","JULIAN_DAY","LAND","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LN","LNOT","LOCATE_IN_STRING","LOCATE","LOG10","LOR","LOWER","LPAD","LTRIM","MAX_CARDINALITY","MAX","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MQREAD","MQREADCLOB","MQRECEIVE","MQRECEIVECLOB","MQSEND","MULTIPLY_ALT","NEXT_DAY","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","OCTET_LENGTH","OVERLAY","PI","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","RADIANS","RAISE_ERROR","RANDOM","RAND","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RIGHT","ROUND_TIMESTAMP","ROUND","RPAD","RRN","RTRIM","SCORE","SECOND","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF_BIG","TIMESTAMPDIFF","TO_CHAR","TO_CLOB","TO_DATE","TO_NUMBER","TO_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM_ARRAY","TRIM","TRUNC_TIMESTAMP","TRUNC","TRUNCATE","UCASE","UPPER","URL_DECODE","URL_ENCODE","VALUE","VARBINARY_FORMAT","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT_BINARY","VARCHAR_FORMAT","VERIFY_GROUP_FOR_USER","WEEK_ISO","WEEK","WRAP","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XOR","XSLTRANSFORM","YEAR","ZONED","BASE_TABLE","HTTP_DELETE_BLOB_VERBOSE","HTTP_DELETE_VERBOSE","HTTP_GET_BLOB_VERBOSE","HTTP_GET_VERBOSE","HTTP_PATCH_BLOB_VERBOSE","HTTP_PATCH_VERBOSE","HTTP_POST_BLOB_VERBOSE","HTTP_POST_VERBOSE","HTTP_PUT_BLOB_VERBOSE","HTTP_PUT_VERBOSE","JSON_TABLE","MQREADALL","MQREADALLCLOB","MQRECEIVEALL","MQRECEIVEALLCLOB","XMLTABLE","UNPACK","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","RATIO_TO_REPORT","ROW_NUMBER","CAST"],Y2=["ABSENT","ACCORDING","ACCTNG","ACTION","ACTIVATE","ADD","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","APPEND","APPLNAME","ARRAY","ARRAY_AGG","ARRAY_TRIM","AS","ASC","ASENSITIVE","ASSOCIATE","ATOMIC","ATTACH","ATTRIBUTES","AUTHORIZATION","AUTONOMOUS","BEFORE","BEGIN","BETWEEN","BIND","BSON","BUFFERPOOL","BY","CACHE","CALL","CALLED","CARDINALITY","CASE","CAST","CHECK","CL","CLOSE","CLUSTER","COLLECT","COLLECTION","COLUMN","COMMENT","COMMIT","COMPACT","COMPARISONS","COMPRESS","CONCAT","CONCURRENT","CONDITION","CONNECT","CONNECT_BY_ROOT","CONNECTION","CONSTANT","CONSTRAINT","CONTAINS","CONTENT","CONTINUE","COPY","COUNT","COUNT_BIG","CREATE","CREATEIN","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEACTIVATE","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFER","DEFINE","DEFINITION","DELETE","DELETING","DENSE_RANK","DENSERANK","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DYNAMIC","EACH","ELSE","ELSEIF","EMPTY","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ENFORCED","ERROR","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTEND","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST_VALUE","FOR","FOREIGN","FORMAT","FREE","FREEPAGE","FROM","FULL","FUNCTION","GBPCACHE","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GROUP","HANDLER","HASH","HASH_ROW","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IGNORE","IMMEDIATE","IMPLICITLY","IN","INCLUDE","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXBP","INDICATOR","INF","INFINITY","INHERIT","INLINE","INNER","INOUT","INSENSITIVE","INSERT","INSERTING","INTEGRITY","INTERPRET","INTERSECT","INTO","IS","ISNULL","ISOLATION","ITERATE","JAVA","JOIN","JSON","JSON_ARRAY","JSON_ARRAYAGG","JSON_EXISTS","JSON_OBJECT","JSON_OBJECTAGG","JSON_QUERY","JSON_TABLE","JSON_VALUE","KEEP","KEY","KEYS","LABEL","LAG","LANGUAGE","LAST_VALUE","LATERAL","LEAD","LEAVE","LEFT","LEVEL2","LIKE","LIMIT","LINKTYPE","LISTAGG","LOCAL","LOCALDATE","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKSIZE","LOG","LOGGED","LOOP","MAINTAINED","MASK","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MICROSECOND","MICROSECONDS","MINPCTUSED","MINUTE","MINUTES","MINVALUE","MIRROR","MIXED","MODE","MODIFIES","MONTH","MONTHS","NAMESPACE","NAN","NATIONAL","NCHAR","NCLOB","NESTED","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT","NOTNULL","NTH_VALUE","NTILE","NULL","NULLS","NVARCHAR","OBID","OBJECT","OF","OFF","OFFSET","OLD","OLD_TABLE","OMIT","ON","ONLY","OPEN","OPTIMIZE","OPTION","OR","ORDER","ORDINALITY","ORGANIZE","OUT","OUTER","OVER","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGE","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSING","PASSWORD","PATH","PCTFREE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PERIOD","PERMISSION","PIECESIZE","PIPE","PLAN","POSITION","PREPARE","PREVVAL","PRIMARY","PRIOR","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PROGRAMID","QUERY","RANGE","RANK","RATIO_TO_REPORT","RCDFMT","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","REGEXP_LIKE","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNING","RETURNS","REVOKE","RID","RIGHT","ROLLBACK","ROLLUP","ROUTINE","ROW","ROW_NUMBER","ROWNUMBER","ROWS","RRN","RUN","SAVEPOINT","SBCS","SCALAR","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURED","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SKIP","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","SQLIND_DEFAULT","SQLIND_UNASSIGNED","STACKED","START","STARTING","STATEMENT","STATIC","STOGROUP","SUBSTRING","SUMMARY","SYNONYM","SYSTEM_TIME","SYSTEM_USER","TABLE","TABLESPACE","TABLESPACES","TAG","THEN","THREADSAFE","TO","TRANSACTION","TRANSFER","TRIGGER","TRIM","TRIM_ARRAY","TRUE","TRUNCATE","TRY_CAST","TYPE","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNNEST","UNTIL","UPDATE","UPDATING","URI","USAGE","USE","USER","USERID","USING","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VERSIONING","VIEW","VOLATILE","WAIT","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHIN","WITHOUT","WRAPPED","WRAPPER","WRITE","WRKSTNNAME","XMLAGG","XMLATTRIBUTES","XMLCAST","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLGROUP","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTABLE","XMLTEXT","XMLVALIDATE","XSLTRANSFORM","XSROBJECT","YEAR","YEARS","YES","ZONE"],W2=["ARRAY","BIGINT","BINARY","BIT","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATA","DATALINK","DATE","DBCLOB","DECFLOAT","DECIMAL","DEC","DOUBLE","DOUBLE PRECISION","FLOAT","GRAPHIC","INT","INTEGER","LONG","NUMERIC","REAL","ROWID","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC","XML"],V2=H(["SELECT [ALL | DISTINCT]"]),$2=H(["WITH [RECURSIVE]","INTO","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","FOR READ ONLY","OPTIMIZE FOR","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","DELETE","INSERT","FOR SYSTEM NAME"]),xT=H(["CREATE [OR REPLACE] TABLE"]),Tl=H(["CREATE [OR REPLACE] [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","WITH {NC | RR | RS | CS | UR}","DELETE FROM","DROP TABLE","ALTER TABLE","ADD [COLUMN]","ALTER [COLUMN]","DROP [COLUMN]","SET DATA TYPE","SET {GENERATED ALWAYS | GENERATED BY DEFAULT}","SET NOT NULL","SET {NOT HIDDEN | IMPLICITLY HIDDEN}","SET FIELDPROC","DROP {DEFAULT | NOT NULL | GENERATED | IDENTITY | ROW CHANGE TIMESTAMP | FIELDPROC}","TRUNCATE [TABLE]","SET [CURRENT] SCHEMA","SET CURRENT_SCHEMA","ALLOCATE CURSOR","ALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL] SQL","ALTER [SPECIFIC] {FUNCTION | PROCEDURE}","ALTER {MASK | PERMISSION | SEQUENCE | TRIGGER}","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PARAMETER | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","COMMENT ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON PARAMETER SPECIFIC {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON [TABLE FUNCTION] RETURN COLUMN","COMMENT ON [TABLE FUNCTION] RETURN COLUMN SPECIFIC [PROCEDURE | ROUTINE]","COMMIT [WORK] [HOLD]","CONNECT [TO | RESET] USER","CREATE [OR REPLACE] {ALIAS | FUNCTION | MASK | PERMISSION | PROCEDURE | SEQUENCE | TRIGGER | VARIABLE}","CREATE [ENCODED VECTOR] INDEX","CREATE UNIQUE [WHERE NOT NULL] INDEX","CREATE SCHEMA","CREATE TYPE","DEALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL]","DECLARE CURSOR","DECLARE GLOBAL TEMPORARY TABLE","DECLARE","DESCRIBE CURSOR","DESCRIBE INPUT","DESCRIBE [OUTPUT]","DESCRIBE {PROCEDURE | ROUTINE}","DESCRIBE TABLE","DISCONNECT ALL [SQL]","DISCONNECT [CURRENT]","DROP {ALIAS | INDEX | MASK | PACKAGE | PERMISSION | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT} [IF EXISTS]","DROP [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE} [IF EXISTS]","END DECLARE SECTION","EXECUTE [IMMEDIATE]","FREE LOCATOR","GET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","GET [CURRENT | STACKED] DIAGNOSTICS","GRANT {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","HOLD LOCATOR","INCLUDE","LABEL ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","LABEL ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","LOCK TABLE","OPEN","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX] TO","REVOKE {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","ROLLBACK [WORK] [HOLD | TO SAVEPOINT]","SAVEPOINT","SET CONNECTION","SET CURRENT {DEBUG MODE | DECFLOAT ROUNDING MODE | DEGREE | IMPLICIT XMLPARSE OPTION | TEMPORAL SYSTEM_TIME}","SET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","SET ENCRYPTION PASSWORD","SET OPTION","SET {[CURRENT [FUNCTION]] PATH | CURRENT_PATH}","SET RESULT SETS [WITH RETURN [TO CALLER | TO CLIENT]]","SET SESSION AUTHORIZATION","SET SESSION_USER","SET TRANSACTION","SIGNAL SQLSTATE [VALUE]","TAG","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}"]),X2=H(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),K2=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT | RIGHT] EXCEPTION JOIN","{INNER | CROSS} JOIN"]),z2=H(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),J2=H([]),q2={name:"db2i",tokenizerOptions:{reservedSelect:V2,reservedClauses:[...$2,...xT,...Tl],reservedSetOperations:X2,reservedJoins:K2,reservedKeywordPhrases:z2,reservedDataTypePhrases:J2,reservedKeywords:Y2,reservedDataTypes:W2,reservedFunctionNames:j2,nestedBlockComments:!0,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","¬=","¬>","¬<","!>","!<","||","=>"]},formatOptions:{onelineClauses:[...xT,...Tl],tabularOnelineClauses:Tl}},Q2=["ABS","ACOS","ADD","ADD_PARQUET_KEY","AGE","AGGREGATE","ALIAS","ALL_PROFILING_OUTPUT","ANY_VALUE","APPLY","APPROX_COUNT_DISTINCT","APPROX_QUANTILE","ARBITRARY","ARGMAX","ARGMIN","ARG_MAX","ARG_MAX_NULL","ARG_MIN","ARG_MIN_NULL","ARRAY_AGG","ARRAY_AGGR","ARRAY_AGGREGATE","ARRAY_APPEND","ARRAY_APPLY","ARRAY_CAT","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COSINE_SIMILARITY","ARRAY_CROSS_PRODUCT","ARRAY_DISTANCE","ARRAY_DISTINCT","ARRAY_DOT_PRODUCT","ARRAY_EXTRACT","ARRAY_FILTER","ARRAY_GRADE_UP","ARRAY_HAS","ARRAY_HAS_ALL","ARRAY_HAS_ANY","ARRAY_INDEXOF","ARRAY_INNER_PRODUCT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_POP_BACK","ARRAY_POP_FRONT","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUSH_BACK","ARRAY_PUSH_FRONT","ARRAY_REDUCE","ARRAY_RESIZE","ARRAY_REVERSE","ARRAY_REVERSE_SORT","ARRAY_SELECT","ARRAY_SLICE","ARRAY_SORT","ARRAY_TO_JSON","ARRAY_TO_STRING","ARRAY_TRANSFORM","ARRAY_UNIQUE","ARRAY_VALUE","ARRAY_WHERE","ARRAY_ZIP","ARROW_SCAN","ARROW_SCAN_DUMB","ASCII","ASIN","ATAN","ATAN2","AVG","BASE64","BIN","BITSTRING","BITSTRING_AGG","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_POSITION","BIT_XOR","BOOL_AND","BOOL_OR","CARDINALITY","CBRT","CEIL","CEILING","CENTURY","CHECKPOINT","CHR","COLLATIONS","COL_DESCRIPTION","COMBINE","CONCAT","CONCAT_WS","CONSTANT_OR_NULL","CONTAINS","COPY_DATABASE","CORR","COS","COT","COUNT","COUNT_IF","COUNT_STAR","COVAR_POP","COVAR_SAMP","CREATE_SORT_KEY","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_DATE","CURRENT_LOCALTIME","CURRENT_LOCALTIMESTAMP","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SETTING","CURRENT_USER","CURRVAL","DAMERAU_LEVENSHTEIN","DATABASE_LIST","DATABASE_SIZE","DATEDIFF","DATEPART","DATESUB","DATETRUNC","DATE_ADD","DATE_DIFF","DATE_PART","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECADE","DECODE","DEGREES","DISABLE_CHECKPOINT_ON_SHUTDOWN","DISABLE_OBJECT_CACHE","DISABLE_OPTIMIZER","DISABLE_PRINT_PROGRESS_BAR","DISABLE_PROFILE","DISABLE_PROFILING","DISABLE_PROGRESS_BAR","DISABLE_VERIFICATION","DISABLE_VERIFY_EXTERNAL","DISABLE_VERIFY_FETCH_ROW","DISABLE_VERIFY_PARALLELISM","DISABLE_VERIFY_SERIALIZER","DIVIDE","DUCKDB_COLUMNS","DUCKDB_CONSTRAINTS","DUCKDB_DATABASES","DUCKDB_DEPENDENCIES","DUCKDB_EXTENSIONS","DUCKDB_FUNCTIONS","DUCKDB_INDEXES","DUCKDB_KEYWORDS","DUCKDB_MEMORY","DUCKDB_OPTIMIZERS","DUCKDB_SCHEMAS","DUCKDB_SECRETS","DUCKDB_SEQUENCES","DUCKDB_SETTINGS","DUCKDB_TABLES","DUCKDB_TEMPORARY_FILES","DUCKDB_TYPES","DUCKDB_VIEWS","EDIT","EDITDIST3","ELEMENT_AT","ENABLE_CHECKPOINT_ON_SHUTDOWN","ENABLE_OBJECT_CACHE","ENABLE_OPTIMIZER","ENABLE_PRINT_PROGRESS_BAR","ENABLE_PROFILE","ENABLE_PROFILING","ENABLE_PROGRESS_BAR","ENABLE_VERIFICATION","ENCODE","ENDS_WITH","ENTROPY","ENUM_CODE","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","ENUM_RANGE_BOUNDARY","EPOCH","EPOCH_MS","EPOCH_NS","EPOCH_US","ERA","ERROR","EVEN","EXP","FACTORIAL","FAVG","FDIV","FILTER","FINALIZE","FIRST","FLATTEN","FLOOR","FMOD","FORCE_CHECKPOINT","FORMAT","FORMATREADABLEDECIMALSIZE","FORMATREADABLESIZE","FORMAT_BYTES","FORMAT_PG_TYPE","FORMAT_TYPE","FROM_BASE64","FROM_BINARY","FROM_HEX","FROM_JSON","FROM_JSON_STRICT","FSUM","FUNCTIONS","GAMMA","GCD","GENERATE_SERIES","GENERATE_SUBSCRIPTS","GEN_RANDOM_UUID","GEOMEAN","GEOMETRIC_MEAN","GETENV","GET_BIT","GET_BLOCK_SIZE","GET_CURRENT_TIME","GET_CURRENT_TIMESTAMP","GLOB","GRADE_UP","GREATEST","GREATEST_COMMON_DIVISOR","GROUP_CONCAT","HAMMING","HASH","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HEX","HISTOGRAM","HOUR","ICU_CALENDAR_NAMES","ICU_SORT_KEY","ILIKE_ESCAPE","IMPORT_DATABASE","INDEX_SCAN","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","INSTR","IN_SEARCH_PATH","ISFINITE","ISINF","ISNAN","ISODOW","ISOYEAR","JACCARD","JARO_SIMILARITY","JARO_WINKLER_SIMILARITY","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_CONTAINS","JSON_DESERIALIZE_SQL","JSON_EXECUTE_SERIALIZED_SQL","JSON_EXTRACT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_EXTRACT_STRING","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_GROUP_STRUCTURE","JSON_KEYS","JSON_MERGE_PATCH","JSON_OBJECT","JSON_QUOTE","JSON_SERIALIZE_PLAN","JSON_SERIALIZE_SQL","JSON_STRUCTURE","JSON_TRANSFORM","JSON_TRANSFORM_STRICT","JSON_TYPE","JSON_VALID","JULIAN","KAHAN_SUM","KURTOSIS","KURTOSIS_POP","LAST","LAST_DAY","LCASE","LCM","LEAST","LEAST_COMMON_MULTIPLE","LEFT","LEFT_GRAPHEME","LEN","LENGTH","LENGTH_GRAPHEME","LEVENSHTEIN","LGAMMA","LIKE_ESCAPE","LIST","LISTAGG","LIST_AGGR","LIST_AGGREGATE","LIST_ANY_VALUE","LIST_APPEND","LIST_APPLY","LIST_APPROX_COUNT_DISTINCT","LIST_AVG","LIST_BIT_AND","LIST_BIT_OR","LIST_BIT_XOR","LIST_BOOL_AND","LIST_BOOL_OR","LIST_CAT","LIST_CONCAT","LIST_CONTAINS","LIST_COSINE_SIMILARITY","LIST_COUNT","LIST_DISTANCE","LIST_DISTINCT","LIST_DOT_PRODUCT","LIST_ELEMENT","LIST_ENTROPY","LIST_EXTRACT","LIST_FILTER","LIST_FIRST","LIST_GRADE_UP","LIST_HAS","LIST_HAS_ALL","LIST_HAS_ANY","LIST_HISTOGRAM","LIST_INDEXOF","LIST_INNER_PRODUCT","LIST_INTERSECT","LIST_KURTOSIS","LIST_KURTOSIS_POP","LIST_LAST","LIST_MAD","LIST_MAX","LIST_MEDIAN","LIST_MIN","LIST_MODE","LIST_PACK","LIST_POSITION","LIST_PREPEND","LIST_PRODUCT","LIST_REDUCE","LIST_RESIZE","LIST_REVERSE","LIST_REVERSE_SORT","LIST_SELECT","LIST_SEM","LIST_SKEWNESS","LIST_SLICE","LIST_SORT","LIST_STDDEV_POP","LIST_STDDEV_SAMP","LIST_STRING_AGG","LIST_SUM","LIST_TRANSFORM","LIST_UNIQUE","LIST_VALUE","LIST_VAR_POP","LIST_VAR_SAMP","LIST_WHERE","LIST_ZIP","LN","LOG","LOG10","LOG2","LOWER","LPAD","LSMODE","LTRIM","MAD","MAKE_DATE","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","MAP","MAP_CONCAT","MAP_ENTRIES","MAP_EXTRACT","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","MAX","MAX_BY","MD5","MD5_NUMBER","MD5_NUMBER_LOWER","MD5_NUMBER_UPPER","MEAN","MEDIAN","METADATA_INFO","MICROSECOND","MILLENNIUM","MILLISECOND","MIN","MINUTE","MIN_BY","MISMATCHES","MOD","MODE","MONTH","MONTHNAME","MULTIPLY","NEXTAFTER","NEXTVAL","NFC_NORMALIZE","NOT_ILIKE_ESCAPE","NOT_LIKE_ESCAPE","NOW","NULLIF","OBJ_DESCRIPTION","OCTET_LENGTH","ORD","PARQUET_FILE_METADATA","PARQUET_KV_METADATA","PARQUET_METADATA","PARQUET_SCAN","PARQUET_SCHEMA","PARSE_DIRNAME","PARSE_DIRPATH","PARSE_FILENAME","PARSE_PATH","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONVERSION_IS_VISIBLE","PG_FUNCTION_IS_VISIBLE","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IS_OTHER_TEMP_SCHEMA","PG_MY_TEMP_SCHEMA","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_POSTMASTER_START_TIME","PG_SIZE_PRETTY","PG_TABLE_IS_VISIBLE","PG_TIMEZONE_NAMES","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PI","PLATFORM","POSITION","POW","POWER","PRAGMA_COLLATIONS","PRAGMA_DATABASE_SIZE","PRAGMA_METADATA_INFO","PRAGMA_PLATFORM","PRAGMA_SHOW","PRAGMA_STORAGE_INFO","PRAGMA_TABLE_INFO","PRAGMA_USER_AGENT","PRAGMA_VERSION","PREFIX","PRINTF","PRODUCT","QUANTILE","QUANTILE_CONT","QUANTILE_DISC","QUARTER","RADIANS","RANDOM","RANGE","READFILE","READ_BLOB","READ_CSV","READ_CSV_AUTO","READ_JSON","READ_JSON_AUTO","READ_JSON_OBJECTS","READ_JSON_OBJECTS_AUTO","READ_NDJSON","READ_NDJSON_AUTO","READ_NDJSON_OBJECTS","READ_PARQUET","READ_TEXT","REDUCE","REGEXP_ESCAPE","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_FULL_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REPEAT","REPEAT_ROW","REPLACE","RESERVOIR_QUANTILE","REVERSE","RIGHT","RIGHT_GRAPHEME","ROUND","ROUNDBANKERS","ROUND_EVEN","ROW","ROW_TO_JSON","RPAD","RTRIM","SECOND","SEM","SEQ_SCAN","SESSION_USER","SETSEED","SET_BIT","SHA256","SHA3","SHELL_ADD_SCHEMA","SHELL_ESCAPE_CRNL","SHELL_IDQUOTE","SHELL_MODULE_SCHEMA","SHELL_PUTSNL","SHOBJ_DESCRIPTION","SHOW","SHOW_DATABASES","SHOW_TABLES","SHOW_TABLES_EXPANDED","SIGN","SIGNBIT","SIN","SKEWNESS","SNIFF_CSV","SPLIT","SPLIT_PART","SQL_AUTO_COMPLETE","SQRT","STARTS_WITH","STATS","STDDEV","STDDEV_POP","STDDEV_SAMP","STORAGE_INFO","STRFTIME","STRING_AGG","STRING_SPLIT","STRING_SPLIT_REGEX","STRING_TO_ARRAY","STRIP_ACCENTS","STRLEN","STRPOS","STRPTIME","STRUCT_EXTRACT","STRUCT_INSERT","STRUCT_PACK","STR_SPLIT","STR_SPLIT_REGEX","SUBSTR","SUBSTRING","SUBSTRING_GRAPHEME","SUBTRACT","SUFFIX","SUM","SUMKAHAN","SUMMARY","SUM_NO_OVERFLOW","TABLE_INFO","TAN","TEST_ALL_TYPES","TEST_VECTOR_TYPES","TIMEZONE","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIME_BUCKET","TODAY","TO_BASE","TO_BASE64","TO_BINARY","TO_CENTURIES","TO_DAYS","TO_DECADES","TO_HEX","TO_HOURS","TO_JSON","TO_MICROSECONDS","TO_MILLENNIA","TO_MILLISECONDS","TO_MINUTES","TO_MONTHS","TO_SECONDS","TO_TIMESTAMP","TO_WEEKS","TO_YEARS","TRANSACTION_TIMESTAMP","TRANSLATE","TRIM","TRUNC","TRY_STRPTIME","TXID_CURRENT","TYPEOF","UCASE","UNBIN","UNHEX","UNICODE","UNION_EXTRACT","UNION_TAG","UNION_VALUE","UNNEST","UNPIVOT_LIST","UPPER","USER","USER_AGENT","UUID","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_TYPE","VERIFY_EXTERNAL","VERIFY_FETCH_ROW","VERIFY_PARALLELISM","VERIFY_SERIALIZER","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","WHICH_SECRET","WRITEFILE","XOR","YEAR","YEARWEEK","CAST","COALESCE","RANK","ROW_NUMBER"],Z2=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ATTACH","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","DEFAULT","DEFERRABLE","DESC","DESCRIBE","DETACH","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP","HAVING","IN","INITIALLY","INTERSECT","INTO","IS","LATERAL","LEADING","LIMIT","NOT","NULL","OFFSET","ON","ONLY","OR","ORDER","PIVOT","PIVOT_LONGER","PIVOT_WIDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SHOW","SOME","SUMMARIZE","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","UNPIVOT","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH"],eH=["ARRAY","BIGINT","BINARY","BIT","BITSTRING","BLOB","BOOL","BOOLEAN","BPCHAR","BYTEA","CHAR","DATE","DATETIME","DEC","DECIMAL","DOUBLE","ENUM","FLOAT","FLOAT4","FLOAT8","GUID","HUGEINT","INET","INT","INT1","INT128","INT16","INT2","INT32","INT4","INT64","INT8","INTEGER","INTEGRAL","INTERVAL","JSON","LIST","LOGICAL","LONG","MAP","NUMERIC","NVARCHAR","OID","REAL","ROW","SHORT","SIGNED","SMALLINT","STRING","STRUCT","TEXT","TIME","TIMESTAMP_MS","TIMESTAMP_NS","TIMESTAMP_S","TIMESTAMP_US","TIMESTAMP","TIMESTAMPTZ","TIMETZ","TINYINT","UBIGINT","UHUGEINT","UINT128","UINT16","UINT32","UINT64","UINT8","UINTEGER","UNION","USMALLINT","UTINYINT","UUID","VARBINARY","VARCHAR"],tH=H(["SELECT [ALL | DISTINCT]"]),nH=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL]","HAVING","WINDOW","PARTITION BY","ORDER BY [ALL]","LIMIT","OFFSET","USING SAMPLE","QUALIFY","INSERT [OR REPLACE] INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),LT=H(["CREATE [OR REPLACE] [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),fl=H(["UPDATE","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","TRUNCATE","ALTER TABLE","ADD [COLUMN] [IF NOT EXISTS]","ADD PRIMARY KEY","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","RENAME [COLUMN]","RENAME TO","SET [DATA] TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","CREATE [OR REPLACE] [TEMPORARY | TEMP] {MACRO | FUNCTION}","DROP MACRO [TABLE] [IF EXISTS]","DROP FUNCTION [IF EXISTS]","CREATE [UNIQUE] INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","CREATE [OR REPLACE] SCHEMA [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","CREATE [OR REPLACE] [PERSISTENT | TEMPORARY] SECRET [IF NOT EXISTS]","DROP [PERSISTENT | TEMPORARY] SECRET [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] SEQUENCE","DROP SEQUENCE [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","DROP VIEW [IF EXISTS]","ALTER VIEW","CREATE TYPE","DROP TYPE [IF EXISTS]","ANALYZE","ATTACH [DATABASE] [IF NOT EXISTS]","DETACH [DATABASE] [IF EXISTS]","CALL","[FORCE] CHECKPOINT","COMMENT ON [TABLE | COLUMN | VIEW | INDEX | SEQUENCE | TYPE | MACRO | MACRO TABLE]","COPY [FROM DATABASE]","DESCRIBE","EXPORT DATABASE","IMPORT DATABASE","INSTALL","LOAD","PIVOT","PIVOT_WIDER","UNPIVOT","EXPLAIN [ANALYZE]","SET {LOCAL | SESSION | GLOBAL}","RESET [LOCAL | SESSION | GLOBAL]","{SET | RESET} VARIABLE","SUMMARIZE","BEGIN TRANSACTION","ROLLBACK","COMMIT","ABORT","USE","VACUUM [ANALYZE]","PREPARE","EXECUTE","DEALLOCATE [PREPARE]"]),rH=H(["UNION [ALL | BY NAME]","EXCEPT [ALL]","INTERSECT [ALL]"]),oH=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{NATURAL | ASOF} [INNER] JOIN","{NATURAL | ASOF} {LEFT | RIGHT | FULL} [OUTER] JOIN","POSITIONAL JOIN","ANTI JOIN","SEMI JOIN"]),sH=H(["{ROWS | RANGE | GROUPS} BETWEEN","SIMILAR TO","IS [NOT] DISTINCT FROM"]),iH=H(["TIMESTAMP WITH TIME ZONE"]),aH={name:"duckdb",tokenizerOptions:{reservedSelect:tH,reservedClauses:[...nH,...LT,...fl],reservedSetOperations:rH,reservedJoins:oH,reservedKeywordPhrases:sH,reservedDataTypePhrases:iH,supportsXor:!0,reservedKeywords:Z2,reservedDataTypes:eH,reservedFunctionNames:Q2,nestedBlockComments:!0,extraParens:["[]","{}"],underscoresInNumbers:!0,stringTypes:["$$","''-qq",{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{rest:"$"},paramTypes:{positional:!0,numbered:["$"],quoted:["$"]},operators:["//","%","**","^","!","&","|","~","<<",">>","::","==","->","->>",":",":=","=>","~~","!~~","~~*","!~~*","~~~","~","!~","~*","!~*","^@","||",">>=","<<="]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...LT,...fl],tabularOnelineClauses:fl}},lH=["ABS","ACOS","ASIN","ATAN","BIN","BROUND","CBRT","CEIL","CEILING","CONV","COS","DEGREES","EXP","FACTORIAL","FLOOR","GREATEST","HEX","LEAST","LN","LOG","LOG10","LOG2","NEGATIVE","PI","PMOD","POSITIVE","POW","POWER","RADIANS","RAND","ROUND","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIN","SQRT","TAN","UNHEX","WIDTH_BUCKET","ARRAY_CONTAINS","MAP_KEYS","MAP_VALUES","SIZE","SORT_ARRAY","BINARY","CAST","ADD_MONTHS","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","QUARTER","SECOND","TIMESTAMP","TO_DATE","TO_UTC_TIMESTAMP","TRUNC","UNIX_TIMESTAMP","WEEKOFYEAR","YEAR","ASSERT_TRUE","COALESCE","IF","ISNOTNULL","ISNULL","NULLIF","NVL","ASCII","BASE64","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONTEXT_NGRAMS","DECODE","ELT","ENCODE","FIELD","FIND_IN_SET","FORMAT_NUMBER","GET_JSON_OBJECT","IN_FILE","INITCAP","INSTR","LCASE","LENGTH","LEVENSHTEIN","LOCATE","LOWER","LPAD","LTRIM","NGRAMS","OCTET_LENGTH","PARSE_URL","PRINTF","QUOTE","REGEXP_EXTRACT","REGEXP_REPLACE","REPEAT","REVERSE","RPAD","RTRIM","SENTENCES","SOUNDEX","SPACE","SPLIT","STR_TO_MAP","SUBSTR","SUBSTRING","TRANSLATE","TRIM","UCASE","UNBASE64","UPPER","MASK","MASK_FIRST_N","MASK_HASH","MASK_LAST_N","MASK_SHOW_FIRST_N","MASK_SHOW_LAST_N","AES_DECRYPT","AES_ENCRYPT","CRC32","CURRENT_DATABASE","CURRENT_USER","HASH","JAVA_METHOD","LOGGED_IN_USER","MD5","REFLECT","SHA","SHA1","SHA2","SURROGATE_KEY","VERSION","AVG","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COVAR_POP","COVAR_SAMP","HISTOGRAM_NUMERIC","MAX","MIN","NTILE","PERCENTILE","PERCENTILE_APPROX","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","EXPLODE","INLINE","JSON_TUPLE","PARSE_URL_TUPLE","POSEXPLODE","STACK","LEAD","LAG","FIRST_VALUE","LAST_VALUE","RANK","ROW_NUMBER","DENSE_RANK","CUME_DIST","PERCENT_RANK","NTILE"],cH=["ADD","ADMIN","AFTER","ANALYZE","ARCHIVE","ASC","BEFORE","BUCKET","BUCKETS","CASCADE","CHANGE","CLUSTER","CLUSTERED","CLUSTERSTATUS","COLLECTION","COLUMNS","COMMENT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONTINUE","DATA","DATABASES","DATETIME","DAY","DBPROPERTIES","DEFERRED","DEFINED","DELIMITED","DEPENDENCY","DESC","DIRECTORIES","DIRECTORY","DISABLE","DISTRIBUTE","ELEM_TYPE","ENABLE","ESCAPED","EXCLUSIVE","EXPLAIN","EXPORT","FIELDS","FILE","FILEFORMAT","FIRST","FORMAT","FORMATTED","FUNCTIONS","HOLD_DDLTIME","HOUR","IDXPROPERTIES","IGNORE","INDEX","INDEXES","INPATH","INPUTDRIVER","INPUTFORMAT","ITEMS","JAR","KEYS","KEY_TYPE","LIMIT","LINES","LOAD","LOCATION","LOCK","LOCKS","LOGICAL","LONG","MAPJOIN","MATERIALIZED","METADATA","MINUS","MINUTE","MONTH","MSCK","NOSCAN","NO_DROP","OFFLINE","OPTION","OUTPUTDRIVER","OUTPUTFORMAT","OVERWRITE","OWNER","PARTITIONED","PARTITIONS","PLUS","PRETTY","PRINCIPALS","PROTECTION","PURGE","READ","READONLY","REBUILD","RECORDREADER","RECORDWRITER","RELOAD","RENAME","REPAIR","REPLACE","REPLICATION","RESTRICT","REWRITE","ROLE","ROLES","SCHEMA","SCHEMAS","SECOND","SEMI","SERDE","SERDEPROPERTIES","SERVER","SETS","SHARED","SHOW","SHOW_DATABASE","SKEWED","SORT","SORTED","SSL","STATISTICS","STORED","STREAMTABLE","STRING","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","TINYINT","TOUCH","TRANSACTIONS","UNARCHIVE","UNDO","UNIONTYPE","UNLOCK","UNSET","UNSIGNED","URI","USE","UTC","UTCTIMESTAMP","VALUE_TYPE","VIEW","WHILE","YEAR","AUTOCOMMIT","ISOLATION","LEVEL","OFFSET","SNAPSHOT","TRANSACTION","WORK","WRITE","ABORT","KEY","LAST","NORELY","NOVALIDATE","NULLS","RELY","VALIDATE","DETAIL","DOW","EXPRESSION","OPERATOR","QUARTER","SUMMARY","VECTORIZATION","WEEK","YEARS","MONTHS","WEEKS","DAYS","HOURS","MINUTES","SECONDS","TIMESTAMPTZ","ZONE","ALL","ALTER","AND","AS","AUTHORIZATION","BETWEEN","BOTH","BY","CASE","CAST","COLUMN","CONF","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIMESTAMP","CURSOR","DATABASE","DELETE","DESCRIBE","DISTINCT","DROP","ELSE","END","EXCHANGE","EXISTS","EXTENDED","EXTERNAL","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","FUNCTION","GRANT","GROUP","GROUPING","HAVING","IF","IMPORT","IN","INNER","INSERT","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LESS","LIKE","LOCAL","MACRO","MORE","NONE","NOT","NULL","OF","ON","OR","ORDER","OUT","OUTER","OVER","PARTIALSCAN","PARTITION","PERCENT","PRECEDING","PRESERVE","PROCEDURE","RANGE","READS","REDUCE","REVOKE","RIGHT","ROLLUP","ROW","ROWS","SELECT","SET","TABLE","TABLESAMPLE","THEN","TO","TRANSFORM","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNION","UNIQUEJOIN","UPDATE","USER","USING","UTC_TMESTAMP","VALUES","WHEN","WHERE","WINDOW","WITH","COMMIT","ONLY","REGEXP","RLIKE","ROLLBACK","START","CACHE","CONSTRAINT","FOREIGN","PRIMARY","REFERENCES","DAYOFWEEK","EXTRACT","FLOOR","VIEWS","TIME","SYNC","TEXTFILE","SEQUENCEFILE","ORC","CSV","TSV","PARQUET","AVRO","RCFILE","JSONFILE","INPUTFORMAT","OUTPUTFORMAT"],dH=["ARRAY","BIGINT","BINARY","BOOLEAN","CHAR","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MAP","NUMERIC","PRECISION","SMALLINT","STRUCT","TIMESTAMP","VARCHAR"],EH=H(["SELECT [ALL | DISTINCT]"]),uH=H(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT INTO [TABLE]","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT [VALUES]","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),yT=H(["CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]"]),Sl=H(["CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","RENAME TO","TRUNCATE [TABLE]","ALTER","CREATE","USE","DESCRIBE","DROP","FETCH","SHOW","STORED AS","STORED BY","ROW FORMAT"]),TH=H(["UNION [ALL | DISTINCT]"]),fH=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","LEFT SEMI JOIN"]),SH=H(["{ROWS | RANGE} BETWEEN"]),RH=H([]),pH={name:"hive",tokenizerOptions:{reservedSelect:EH,reservedClauses:[...uH,...yT,...Sl],reservedSetOperations:TH,reservedJoins:fH,reservedKeywordPhrases:SH,reservedDataTypePhrases:RH,reservedKeywords:cH,reservedDataTypes:dH,reservedFunctionNames:lH,extraParens:["[]"],stringTypes:['""-bs',"''-bs"],identTypes:["``"],variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||"]},formatOptions:{onelineClauses:[...yT,...Sl],tabularOnelineClauses:Sl}};function ia(e){return e.map((t,n)=>{const r=e[n+1]||dn;if(En.SET(t)&&r.text==="(")return Object.assign(Object.assign({},t),{type:$.RESERVED_FUNCTION_NAME});const o=e[n-1]||dn;return En.VALUES(t)&&o.text==="="?Object.assign(Object.assign({},t),{type:$.RESERVED_FUNCTION_NAME}):t})}const AH=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DELETE_DOMAIN_ID","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO_DOMAIN_IDS","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERAL","GRANT","GROUP","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IGNORE_DOMAIN_IDS","IGNORE_SERVER_IDS","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MASTER_HEARTBEAT_PERIOD","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OFFSET","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PAGE_CHECKSUM","PARSE_VCOL_EXPR","PARTITION","POSITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","READ_WRITE","RECURSIVE","REF_SYSTEM_ID","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","RETURNING","REVOKE","RIGHT","RLIKE","ROW_NUMBER","ROWS","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SLOW","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],hH=["BIGINT","BINARY","BIT","BLOB","CHAR BYTE","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],IH=["ADDDATE","ADD_MONTHS","BIT_AND","BIT_OR","BIT_XOR","CAST","COUNT","CUME_DIST","CURDATE","CURTIME","DATE_ADD","DATE_SUB","DATE_FORMAT","DECODE","DENSE_RANK","EXTRACT","FIRST_VALUE","GROUP_CONCAT","JSON_ARRAYAGG","JSON_OBJECTAGG","LAG","LEAD","MAX","MEDIAN","MID","MIN","NOW","NTH_VALUE","NTILE","POSITION","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","ROW_NUMBER","SESSION_USER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUBDATE","SUBSTR","SUBSTRING","SUM","SYSTEM_USER","TRIM","TRIM_ORACLE","VARIANCE","VAR_POP","VAR_SAMP","ABS","ACOS","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ASIN","ATAN","ATAN2","BENCHMARK","BIN","BINLOG_GTID_POS","BIT_COUNT","BIT_LENGTH","CEIL","CEILING","CHARACTER_LENGTH","CHAR_LENGTH","CHR","COERCIBILITY","COLUMN_CHECK","COLUMN_EXISTS","COLUMN_LIST","COLUMN_JSON","COMPRESS","CONCAT","CONCAT_OPERATOR_ORACLE","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","DATEDIFF","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEGREES","DECODE_HISTOGRAM","DECODE_ORACLE","DES_DECRYPT","DES_ENCRYPT","ELT","ENCODE","ENCRYPT","EXP","EXPORT_SET","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GET_LOCK","GREATEST","HEX","IFNULL","INSTR","ISNULL","IS_FREE_LOCK","IS_USED_LOCK","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_COMPACT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_DETAILED","JSON_EXISTS","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_LOOSE","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_QUERY","JSON_QUOTE","JSON_OBJECT","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_SEARCH","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAST_DAY","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LENGTHB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LPAD_ORACLE","LTRIM","LTRIM_ORACLE","MAKEDATE","MAKETIME","MAKE_SET","MASTER_GTID_WAIT","MASTER_POS_WAIT","MD5","MONTHNAME","NAME_CONST","NVL","NVL2","OCT","OCTET_LENGTH","ORD","PERIOD_ADD","PERIOD_DIFF","PI","POW","POWER","QUOTE","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","RADIANS","RAND","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPLACE_ORACLE","REVERSE","ROUND","RPAD","RPAD_ORACLE","RTRIM","RTRIM_ORACLE","SEC_TO_TIME","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SPACE","SQRT","STRCMP","STR_TO_DATE","SUBSTR_ORACLE","SUBSTRING_INDEX","SUBTIME","SYS_GUID","TAN","TIMEDIFF","TIME_FORMAT","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_SECONDS","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VERSION","WEEKDAY","WEEKOFYEAR","WSREP_LAST_WRITTEN_GTID","WSREP_LAST_SEEN_GTID","WSREP_SYNC_WAIT_UPTO_GTID","YEARWEEK","COALESCE","NULLIF"],NH=H(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),OH=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET","RETURNING"]),_T=H(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),Rl=H(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] [IGNORE] TABLE [IF EXISTS]","ADD [COLUMN] [IF NOT EXISTS]","{CHANGE | MODIFY} [COLUMN] [IF EXISTS]","DROP [COLUMN] [IF EXISTS]","RENAME [TO]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","SET {VISIBLE | INVISIBLE}","TRUNCATE [TABLE]","ALTER DATABASE","ALTER DATABASE COMMENT","ALTER EVENT","ALTER FUNCTION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SCHEMA COMMENT","ALTER SEQUENCE","ALTER SERVER","ALTER USER","ALTER VIEW","ANALYZE","ANALYZE TABLE","BACKUP LOCK","BACKUP STAGE","BACKUP UNLOCK","BEGIN","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHECK TABLE","CHECK VIEW","CHECKSUM TABLE","COMMIT","CREATE AGGREGATE FUNCTION","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE INDEX","CREATE PROCEDURE","CREATE ROLE","CREATE SEQUENCE","CREATE SERVER","CREATE SPATIAL INDEX","CREATE TRIGGER","CREATE UNIQUE INDEX","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP INDEX","DROP PREPARE","DROP PROCEDURE","DROP ROLE","DROP SEQUENCE","DROP SERVER","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GET DIAGNOSTICS","GET DIAGNOSTICS CONDITION","GRANT","HANDLER","HELP","INSTALL PLUGIN","INSTALL SONAME","KILL","LOAD DATA INFILE","LOAD INDEX INTO CACHE","LOAD XML INFILE","LOCK TABLE","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","PURGE MASTER LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","REPAIR VIEW","RESET MASTER","RESET QUERY CACHE","RESET REPLICA","RESET SLAVE","RESIGNAL","REVOKE","ROLLBACK","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET GLOBAL TRANSACTION","SET NAMES","SET PASSWORD","SET ROLE","SET STATEMENT","SET TRANSACTION","SHOW","SHOW ALL REPLICAS STATUS","SHOW ALL SLAVES STATUS","SHOW AUTHORS","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW BINLOG STATUS","SHOW CHARACTER SET","SHOW CLIENT_STATISTICS","SHOW COLLATION","SHOW COLUMNS","SHOW CONTRIBUTORS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PACKAGE","SHOW CREATE PACKAGE BODY","SHOW CREATE PROCEDURE","SHOW CREATE SEQUENCE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINE INNODB STATUS","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW EXPLAIN","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW INDEXES","SHOW INDEX_STATISTICS","SHOW KEYS","SHOW LOCALES","SHOW MASTER LOGS","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PACKAGE BODY CODE","SHOW PACKAGE BODY STATUS","SHOW PACKAGE STATUS","SHOW PLUGINS","SHOW PLUGINS SONAME","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW QUERY_RESPONSE_TIME","SHOW RELAYLOG EVENTS","SHOW REPLICA","SHOW REPLICA HOSTS","SHOW REPLICA STATUS","SHOW SCHEMAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW SLAVE STATUS","SHOW STATUS","SHOW STORAGE ENGINES","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW USER_STATISTICS","SHOW VARIABLES","SHOW WARNINGS","SHOW WSREP_MEMBERSHIP","SHOW WSREP_STATUS","SHUTDOWN","SIGNAL","START ALL REPLICAS","START ALL SLAVES","START REPLICA","START SLAVE","START TRANSACTION","STOP ALL REPLICAS","STOP ALL SLAVES","STOP REPLICA","STOP SLAVE","UNINSTALL PLUGIN","UNINSTALL SONAME","UNLOCK TABLE","USE","XA BEGIN","XA COMMIT","XA END","XA PREPARE","XA RECOVER","XA ROLLBACK","XA START"]),mH=H(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]","MINUS [ALL | DISTINCT]"]),gH=H(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),CH=H(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),xH=H([]),LH={name:"mariadb",tokenizerOptions:{reservedSelect:NH,reservedClauses:[...OH,..._T,...Rl],reservedSetOperations:mH,reservedJoins:gH,reservedKeywordPhrases:CH,reservedDataTypePhrases:xH,supportsXor:!0,reservedKeywords:AH,reservedDataTypes:hH,reservedFunctionNames:IH,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","&&","||","!","*.*"],postProcess:ia},formatOptions:{onelineClauses:[..._T,...Rl],tabularOnelineClauses:Rl}},yH=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CUBE","CUME_DIST","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DENSE_RANK","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FIRST_VALUE","FOR","FORCE","FOREIGN","FROM","FULLTEXT","FUNCTION","GENERATED","GET","GRANT","GROUP","GROUPING","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","INTERSECT","INTERVAL","INTO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IS","ITERATE","JOIN","JSON_TABLE","KEY","KEYS","KILL","LAG","LAST_VALUE","LATERAL","LEAD","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NTH_VALUE","NTILE","NULL","OF","ON","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PERCENT_RANK","PRIMARY","PROCEDURE","PURGE","RANGE","RANK","READ","READS","READ_WRITE","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","REVOKE","RIGHT","RLIKE","ROW","ROWS","ROW_NUMBER","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STORED","STRAIGHT_JOIN","SYSTEM","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],_H=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],DH=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BINARY","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","CAN_ACCESS_COLUMN","CAN_ACCESS_DATABASE","CAN_ACCESS_TABLE","CAN_ACCESS_USER","CAN_ACCESS_VIEW","CAST","CEIL","CEILING","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEFAULT","DEGREES","DENSE_RANK","DIV","ELT","EXP","EXPORT_SET","EXTRACT","EXTRACTVALUE","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_PICO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLECTION","GEOMETRYCOLLECTION","GET_DD_COLUMN_PRIVILEGES","GET_DD_CREATE_OPTIONS","GET_DD_INDEX_SUB_PART_LENGTH","GET_FORMAT","GET_LOCK","GREATEST","GROUP_CONCAT","GROUPING","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","INTERNAL_AUTO_INCREMENT","INTERNAL_AVG_ROW_LENGTH","INTERNAL_CHECK_TIME","INTERNAL_CHECKSUM","INTERNAL_DATA_FREE","INTERNAL_DATA_LENGTH","INTERNAL_DD_CHAR_LENGTH","INTERNAL_GET_COMMENT_OR_ERROR","INTERNAL_GET_ENABLED_ROLE_JSON","INTERNAL_GET_HOSTNAME","INTERNAL_GET_USERNAME","INTERNAL_GET_VIEW_WARNING_OR_ERROR","INTERNAL_INDEX_COLUMN_CARDINALITY","INTERNAL_INDEX_LENGTH","INTERNAL_IS_ENABLED_ROLE","INTERNAL_IS_MANDATORY_ROLE","INTERNAL_KEYS_DISABLED","INTERNAL_MAX_DATA_LENGTH","INTERNAL_TABLE_ROWS","INTERNAL_UPDATE_TIME","INTERVAL","IS","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS NOT","IS NOT NULL","IS NULL","IS_USED_LOCK","IS_UUID","ISNULL","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_ARRAYAGG","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LINESTRING","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MATCH","MAX","MBRCONTAINS","MBRCOVEREDBY","MBRCOVERS","MBRDISJOINT","MBREQUALS","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MICROSECOND","MID","MIN","MINUTE","MOD","MONTH","MONTHNAME","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","NAME_CONST","NOW","NTH_VALUE","NTILE","NULLIF","OCT","OCTET_LENGTH","ORD","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","POINT","POLYGON","POSITION","POW","POWER","PS_CURRENT_THREAD_ID","PS_THREAD_ID","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROLES_GRAPHML","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_BUFFER","ST_BUFFER_STRATEGY","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_CONVEXHULL","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DISTANCE_SPHERE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_FRECHETDISTANCE","ST_GEOHASH","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMGEOJSON","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_HAUSDORFFDISTANCE","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_ISVALID","ST_LATFROMGEOHASH","ST_LATITUDE","ST_LENGTH","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINEINTERPOLATEPOINT","ST_LINEINTERPOLATEPOINTS","ST_LONGFROMGEOHASH","ST_LONGITUDE","ST_MAKEENVELOPE","ST_MLINEFROMTEXT","ST_MLINEFROMWKB","ST_MPOINTFROMTEXT","ST_MPOINTFROMWKB","ST_MPOLYFROMTEXT","ST_MPOLYFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTATDISTANCE","ST_POINTFROMGEOHASH","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SWAPXY","ST_SYMDIFFERENCE","ST_TOUCHES","ST_TRANSFORM","ST_UNION","ST_VALIDATE","ST_WITHIN","ST_X","ST_Y","STATEMENT_DIGEST","STATEMENT_DIGEST_TEXT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],MH=H(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),bH=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),DT=H(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),pl=H(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER EVENT","ALTER FUNCTION","ALTER INSTANCE","ALTER LOGFILE GROUP","ALTER PROCEDURE","ALTER RESOURCE GROUP","ALTER SERVER","ALTER TABLESPACE","ALTER USER","ALTER VIEW","ANALYZE TABLE","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK TABLE","CHECKSUM TABLE","CLONE","COMMIT","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE FUNCTION","CREATE INDEX","CREATE LOGFILE GROUP","CREATE PROCEDURE","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SERVER","CREATE SPATIAL REFERENCE SYSTEM","CREATE TABLESPACE","CREATE TRIGGER","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP FUNCTION","DROP INDEX","DROP LOGFILE GROUP","DROP PROCEDURE","DROP RESOURCE GROUP","DROP ROLE","DROP SERVER","DROP SPATIAL REFERENCE SYSTEM","DROP TABLESPACE","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GRANT","HANDLER","HELP","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SOURCE_POS_WAIT","START GROUP_REPLICATION","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP REPLICA","STOP SLAVE","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),PH=H(["UNION [ALL | DISTINCT]"]),vH=H(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),UH=H(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),wH=H([]),BH={name:"mysql",tokenizerOptions:{reservedSelect:MH,reservedClauses:[...bH,...DT,...pl],reservedSetOperations:PH,reservedJoins:vH,reservedKeywordPhrases:UH,reservedDataTypePhrases:wH,supportsXor:!0,reservedKeywords:yH,reservedDataTypes:_H,reservedFunctionNames:DH,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:ia},formatOptions:{onelineClauses:[...DT,...pl],tabularOnelineClauses:pl}},FH=["ADD","ALL","ALTER","ANALYZE","AND","ARRAY","AS","ASC","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DISTINCT","DISTINCTROW","DIV","DOUBLE","DROP","DUAL","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GRANT","GROUP","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","ILIKE","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOW_PRIORITY","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OF","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","RANGE","READ","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","REVOKE","RIGHT","RLIKE","ROW","ROWS","SECOND_MICROSECOND","SELECT","SET","SHOW","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_EXTENDED","STORED","STRAIGHT_JOIN","TABLE","TABLESAMPLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","TiDB_CURRENT_TSO","UNION","UNIQUE","UNLOCK","UNSIGNED","UNTIL","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],GH=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],HH=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","BITAND","BITNEG","BITOR","BITXOR","CASE","CAST","CEIL","CEILING","CHAR_FUNC","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_RESOURCE_GROUP","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT_FUNC","DEGREES","DENSE_RANK","DES_DECRYPT","DES_ENCRYPT","DIV","ELT","ENCODE","ENCRYPT","EQ","EXP","EXPORT_SET","EXTRACT","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_NANO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GE","GET_FORMAT","GET_LOCK","GETPARAM","GREATEST","GROUP_CONCAT","GROUPING","GT","HEX","HOUR","IF","IFNULL","ILIKE","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSERT_FUNC","INSTR","INTDIV","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IS_UUID","ISFALSE","ISNULL","ISTRUE","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MEMBEROF","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LASTVAL","LCASE","LE","LEAD","LEAST","LEFT","LEFTSHIFT","LENGTH","LIKE","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LT","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MAX","MD5","MICROSECOND","MID","MIN","MINUS","MINUTE","MOD","MONTH","MONTHNAME","MUL","NAME_CONST","NE","NEXTVAL","NOT","NOW","NTH_VALUE","NTILE","NULLEQ","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","PASSWORD_FUNC","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","PLUS","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RIGHTSHIFT","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SETVAL","SETVAR","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SM3","SPACE","SQRT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIDB_BOUNDED_STALENESS","TIDB_CURRENT_TSO","TIDB_DECODE_BINARY_PLAN","TIDB_DECODE_KEY","TIDB_DECODE_PLAN","TIDB_DECODE_SQL_DIGESTS","TIDB_ENCODE_SQL_DIGEST","TIDB_IS_DDL_OWNER","TIDB_PARSE_TSO","TIDB_PARSE_TSO_LOGICAL","TIDB_ROW_CHECKSUM","TIDB_SHARD","TIDB_VERSION","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRANSLATE","TRIM","TRUNCATE","UCASE","UNARYMINUS","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VAR_POP","VAR_SAMP","VARIANCE","VERSION","VITESS_HASH","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],kH=H(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),jH=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),MT=H(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),Al=H(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER INSTANCE","ALTER RESOURCE GROUP","ALTER SEQUENCE","ALTER USER","ALTER VIEW","ANALYZE TABLE","CHECK TABLE","CHECKSUM TABLE","COMMIT","CREATE DATABASE","CREATE INDEX","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SEQUENCE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP INDEX","DROP RESOURCE GROUP","DROP ROLE","DROP TABLESPACE","DROP USER","DROP VIEW","EXPLAIN","FLUSH","GRANT","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOCK INSTANCE FOR BACKUP","LOCK TABLES","OPTIMIZE TABLE","PREPARE","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE"]),YH=H(["UNION [ALL | DISTINCT]"]),WH=H(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),VH=H(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),$H=H([]),XH={name:"tidb",tokenizerOptions:{reservedSelect:kH,reservedClauses:[...jH,...MT,...Al],reservedSetOperations:YH,reservedJoins:WH,reservedKeywordPhrases:VH,reservedDataTypePhrases:$H,supportsXor:!0,reservedKeywords:FH,reservedDataTypes:GH,reservedFunctionNames:HH,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:ia},formatOptions:{onelineClauses:[...MT,...Al],tabularOnelineClauses:Al}},KH=["ABORT","ABS","ACOS","ADVISOR","ARRAY_AGG","ARRAY_AGG","ARRAY_APPEND","ARRAY_AVG","ARRAY_BINARY_SEARCH","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COUNT","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_FLATTEN","ARRAY_IFNULL","ARRAY_INSERT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_MAX","ARRAY_MIN","ARRAY_MOVE","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUT","ARRAY_RANGE","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_REPLACE","ARRAY_REVERSE","ARRAY_SORT","ARRAY_STAR","ARRAY_SUM","ARRAY_SYMDIFF","ARRAY_SYMDIFF1","ARRAY_SYMDIFFN","ARRAY_UNION","ASIN","ATAN","ATAN2","AVG","BASE64","BASE64_DECODE","BASE64_ENCODE","BITAND ","BITCLEAR ","BITNOT ","BITOR ","BITSET ","BITSHIFT ","BITTEST ","BITXOR ","CEIL","CLOCK_LOCAL","CLOCK_MILLIS","CLOCK_STR","CLOCK_TZ","CLOCK_UTC","COALESCE","CONCAT","CONCAT2","CONTAINS","CONTAINS_TOKEN","CONTAINS_TOKEN_LIKE","CONTAINS_TOKEN_REGEXP","COS","COUNT","COUNT","COUNTN","CUME_DIST","CURL","DATE_ADD_MILLIS","DATE_ADD_STR","DATE_DIFF_MILLIS","DATE_DIFF_STR","DATE_FORMAT_STR","DATE_PART_MILLIS","DATE_PART_STR","DATE_RANGE_MILLIS","DATE_RANGE_STR","DATE_TRUNC_MILLIS","DATE_TRUNC_STR","DECODE","DECODE_JSON","DEGREES","DENSE_RANK","DURATION_TO_STR","ENCODED_SIZE","ENCODE_JSON","EXP","FIRST_VALUE","FLOOR","GREATEST","HAS_TOKEN","IFINF","IFMISSING","IFMISSINGORNULL","IFNAN","IFNANORINF","IFNULL","INITCAP","ISARRAY","ISATOM","ISBITSET","ISBOOLEAN","ISNUMBER","ISOBJECT","ISSTRING","LAG","LAST_VALUE","LEAD","LEAST","LENGTH","LN","LOG","LOWER","LTRIM","MAX","MEAN","MEDIAN","META","MILLIS","MILLIS_TO_LOCAL","MILLIS_TO_STR","MILLIS_TO_TZ","MILLIS_TO_UTC","MILLIS_TO_ZONE_NAME","MIN","MISSINGIF","NANIF","NEGINFIF","NOW_LOCAL","NOW_MILLIS","NOW_STR","NOW_TZ","NOW_UTC","NTH_VALUE","NTILE","NULLIF","NVL","NVL2","OBJECT_ADD","OBJECT_CONCAT","OBJECT_INNER_PAIRS","OBJECT_INNER_VALUES","OBJECT_LENGTH","OBJECT_NAMES","OBJECT_PAIRS","OBJECT_PUT","OBJECT_REMOVE","OBJECT_RENAME","OBJECT_REPLACE","OBJECT_UNWRAP","OBJECT_VALUES","PAIRS","PERCENT_RANK","PI","POLY_LENGTH","POSINFIF","POSITION","POWER","RADIANS","RANDOM","RANK","RATIO_TO_REPORT","REGEXP_CONTAINS","REGEXP_LIKE","REGEXP_MATCHES","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGEX_CONTAINS","REGEX_LIKE","REGEX_MATCHES","REGEX_POSITION","REGEX_REPLACE","REGEX_SPLIT","REPEAT","REPLACE","REVERSE","ROUND","ROW_NUMBER","RTRIM","SEARCH","SEARCH_META","SEARCH_SCORE","SIGN","SIN","SPLIT","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DURATION","STR_TO_MILLIS","STR_TO_TZ","STR_TO_UTC","STR_TO_ZONE_NAME","SUBSTR","SUFFIXES","SUM","TAN","TITLE","TOARRAY","TOATOM","TOBOOLEAN","TOKENS","TOKENS","TONUMBER","TOOBJECT","TOSTRING","TRIM","TRUNC","UPPER","UUID","VARIANCE","VARIANCE_POP","VARIANCE_SAMP","VAR_POP","VAR_SAMP","WEEKDAY_MILLIS","WEEKDAY_STR","CAST"],zH=["ADVISE","ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","AT","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","COMMITTED","CONNECT","CONTINUE","CORRELATED","COVER","CREATE","CURRENT","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FILTER","FIRST","FLATTEN","FLUSH","FOLLOWING","FOR","FORCE","FROM","FTS","FUNCTION","GOLANG","GRANT","GROUP","GROUPS","GSI","HASH","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","ISOLATION","JAVASCRIPT","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LANGUAGE","LAST","LEFT","LET","LETTING","LEVEL","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NL","NO","NOT","NTH_VALUE","NULL","NULLS","NUMBER","OBJECT","OFFSET","ON","OPTION","OPTIONS","OR","ORDER","OTHERS","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PRECEDING","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROBE","PROCEDURE","PUBLIC","RANGE","RAW","REALM","REDUCE","RENAME","RESPECT","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","ROW","ROWS","SATISFIES","SAVEPOINT","SCHEMA","SCOPE","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TIES","TO","TRAN","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WORK","XOR"],JH=[],qH=H(["SELECT [ALL | DISTINCT]"]),QH=H(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED THEN","UPDATE SET","INSERT","NEST","UNNEST","RETURNING"]),bT=H(["UPDATE","DELETE FROM","SET SCHEMA","ADVISE","ALTER INDEX","BEGIN TRANSACTION","BUILD INDEX","COMMIT TRANSACTION","CREATE COLLECTION","CREATE FUNCTION","CREATE INDEX","CREATE PRIMARY INDEX","CREATE SCOPE","DROP COLLECTION","DROP FUNCTION","DROP INDEX","DROP PRIMARY INDEX","DROP SCOPE","EXECUTE","EXECUTE FUNCTION","EXPLAIN","GRANT","INFER","PREPARE","REVOKE","ROLLBACK TRANSACTION","SAVEPOINT","SET TRANSACTION","UPDATE STATISTICS","UPSERT","LET","SET CURRENT SCHEMA","SHOW","USE [PRIMARY] KEYS"]),ZH=H(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),ek=H(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","INNER JOIN"]),tk=H(["{ROWS | RANGE | GROUPS} BETWEEN"]),nk=H([]),rk={name:"n1ql",tokenizerOptions:{reservedSelect:qH,reservedClauses:[...QH,...bT],reservedSetOperations:ZH,reservedJoins:ek,reservedKeywordPhrases:tk,reservedDataTypePhrases:nk,supportsXor:!0,reservedKeywords:zH,reservedDataTypes:JH,reservedFunctionNames:KH,stringTypes:['""-bs',"''-bs"],identTypes:["``"],extraParens:["[]","{}"],paramTypes:{positional:!0,numbered:["$"],named:["$"]},lineCommentTypes:["#","--"],operators:["%","==",":","||"]},formatOptions:{onelineClauses:bT}},ok=["ADD","AGENT","AGGREGATE","ALL","ALTER","AND","ANY","ARROW","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BEGIN","BETWEEN","BLOCK","BODY","BOTH","BOUND","BULK","BY","BYTE","CALL","CALLING","CASCADE","CASE","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOSE","CLUSTER","CLUSTERS","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONVERT","COUNT","CRASH","CREATE","CURRENT","CURSOR","CUSTOMDATUM","DANGLING","DATA","DAY","DECLARE","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DISTINCT","DROP","DURATION","ELEMENT","ELSE","ELSIF","EMPTY","END","ESCAPE","EXCEPT","EXCEPTION","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FINAL","FIXED","FOR","FORALL","FORCE","FORM","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HAVING","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSERT","INSTANTIABLE","INTERFACE","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMIT","LIMITED","LOCAL","LOCK","LOOP","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MOD","MODE","MODIFY","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NEW","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORACLE","ORADATA","ORDER","OVERLAPS","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARTITION","PASCAL","PIPE","PIPELINED","PRAGMA","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","READ","RECORD","REF","REFERENCE","REM","REMAINDER","RENAME","RESOURCE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELECT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SET","SHARE","SHORT","SIZE","SIZE_T","SOME","SPARSE","SQL","SQLCODE","SQLDATA","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUM","SYNONYM","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSAC","TRANSACTIONAL","TRUSTED","TYPE","UB1","UB2","UB4","UNDER","UNION","UNIQUE","UNSIGNED","UNTRUSTED","UPDATE","USE","USING","VALIST","VALUE","VALUES","VARIABLE","VARIANCE","VARRAY","VIEW","VIEWS","VOID","WHEN","WHERE","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],sk=["ARRAY","BFILE_BASE","BINARY","BLOB_BASE","CHAR VARYING","CHAR_BASE","CHAR","CHARACTER VARYING","CHARACTER","CLOB_BASE","DATE_BASE","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTERVAL DAY","INTERVAL YEAR","LONG","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR VARYING","NCHAR","NCHAR","NUMBER_BASE","NUMBER","NUMBERIC","NVARCHAR","PRECISION","RAW","TIMESTAMP","UROWID","VARCHAR","VARCHAR2"],ik=["ABS","ACOS","ASIN","ATAN","ATAN2","BITAND","CEIL","COS","COSH","EXP","FLOOR","LN","LOG","MOD","NANVL","POWER","REMAINDER","ROUND","SIGN","SIN","SINH","SQRT","TAN","TANH","TRUNC","WIDTH_BUCKET","CHR","CONCAT","INITCAP","LOWER","LPAD","LTRIM","NLS_INITCAP","NLS_LOWER","NLSSORT","NLS_UPPER","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","RPAD","RTRIM","SOUNDEX","SUBSTR","TRANSLATE","TREAT","TRIM","UPPER","NLS_CHARSET_DECL_LEN","NLS_CHARSET_ID","NLS_CHARSET_NAME","ASCII","INSTR","LENGTH","REGEXP_INSTR","ADD_MONTHS","CURRENT_DATE","CURRENT_TIMESTAMP","DBTIMEZONE","EXTRACT","FROM_TZ","LAST_DAY","LOCALTIMESTAMP","MONTHS_BETWEEN","NEW_TIME","NEXT_DAY","NUMTODSINTERVAL","NUMTOYMINTERVAL","ROUND","SESSIONTIMEZONE","SYS_EXTRACT_UTC","SYSDATE","SYSTIMESTAMP","TO_CHAR","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_DSINTERVAL","TO_YMINTERVAL","TRUNC","TZ_OFFSET","GREATEST","LEAST","ASCIISTR","BIN_TO_NUM","CAST","CHARTOROWID","COMPOSE","CONVERT","DECOMPOSE","HEXTORAW","NUMTODSINTERVAL","NUMTOYMINTERVAL","RAWTOHEX","RAWTONHEX","ROWIDTOCHAR","ROWIDTONCHAR","SCN_TO_TIMESTAMP","TIMESTAMP_TO_SCN","TO_BINARY_DOUBLE","TO_BINARY_FLOAT","TO_CHAR","TO_CLOB","TO_DATE","TO_DSINTERVAL","TO_LOB","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_DSINTERVAL","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_YMINTERVAL","TO_YMINTERVAL","TRANSLATE","UNISTR","BFILENAME","EMPTY_BLOB,","EMPTY_CLOB","CARDINALITY","COLLECT","POWERMULTISET","POWERMULTISET_BY_CARDINALITY","SET","SYS_CONNECT_BY_PATH","CLUSTER_ID","CLUSTER_PROBABILITY","CLUSTER_SET","FEATURE_ID","FEATURE_SET","FEATURE_VALUE","PREDICTION","PREDICTION_COST","PREDICTION_DETAILS","PREDICTION_PROBABILITY","PREDICTION_SET","APPENDCHILDXML","DELETEXML","DEPTH","EXTRACT","EXISTSNODE","EXTRACTVALUE","INSERTCHILDXML","INSERTXMLBEFORE","PATH","SYS_DBURIGEN","SYS_XMLAGG","SYS_XMLGEN","UPDATEXML","XMLAGG","XMLCDATA","XMLCOLATTVAL","XMLCOMMENT","XMLCONCAT","XMLFOREST","XMLPARSE","XMLPI","XMLQUERY","XMLROOT","XMLSEQUENCE","XMLSERIALIZE","XMLTABLE","XMLTRANSFORM","DECODE","DUMP","ORA_HASH","VSIZE","COALESCE","LNNVL","NULLIF","NVL","NVL2","SYS_CONTEXT","SYS_GUID","SYS_TYPEID","UID","USER","USERENV","AVG","COLLECT","CORR","CORR_S","CORR_K","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","FIRST","GROUP_ID","GROUPING","GROUPING_ID","LAST","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANK","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","STATS_BINOMIAL_TEST","STATS_CROSSTAB","STATS_F_TEST","STATS_KS_TEST","STATS_MODE","STATS_MW_TEST","STATS_ONE_WAY_ANOVA","STATS_T_TEST_ONE","STATS_T_TEST_PAIRED","STATS_T_TEST_INDEP","STATS_T_TEST_INDEPU","STATS_WSR_TEST","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTILE","RATIO_TO_REPORT","ROW_NUMBER","DEREF","MAKE_REF","REF","REFTOHEX","VALUE","CV","ITERATION_NUMBER","PRESENTNNV","PRESENTV","PREVIOUS"],ak=H(["SELECT [ALL | DISTINCT | UNIQUE]"]),lk=H(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","INSERT [INTO | ALL INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [THEN]","UPDATE SET","RETURNING"]),PT=H(["CREATE [GLOBAL TEMPORARY | PRIVATE TEMPORARY | SHARDED | DUPLICATED | IMMUTABLE BLOCKCHAIN | BLOCKCHAIN | IMMUTABLE] TABLE"]),hl=H(["CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW","CREATE MATERIALIZED VIEW","UPDATE [ONLY]","DELETE FROM [ONLY]","DROP TABLE","ALTER TABLE","ADD","DROP {COLUMN | UNUSED COLUMNS | COLUMNS CONTINUE}","MODIFY","RENAME TO","RENAME COLUMN","TRUNCATE TABLE","SET SCHEMA","BEGIN","CONNECT BY","DECLARE","EXCEPT","EXCEPTION","LOOP","START WITH"]),ck=H(["UNION [ALL]","MINUS","INTERSECT"]),dk=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | OUTER} APPLY"]),Ek=H(["ON {UPDATE | DELETE} [SET NULL]","ON COMMIT","{ROWS | RANGE} BETWEEN"]),uk=H([]),Tk={name:"plsql",tokenizerOptions:{reservedSelect:ak,reservedClauses:[...lk,...PT,...hl],reservedSetOperations:ck,reservedJoins:dk,reservedKeywordPhrases:Ek,reservedDataTypePhrases:uk,supportsXor:!0,reservedKeywords:ok,reservedDataTypes:sk,reservedFunctionNames:ik,stringTypes:[{quote:"''-qq",prefixes:["N"]},{quote:"q''",prefixes:["N"]}],identTypes:['""-qq'],identChars:{rest:"$#"},variableTypes:[{regex:"&{1,2}[A-Za-z][A-Za-z0-9_$#]*"}],paramTypes:{numbered:[":"],named:[":"]},operators:["**",":=","%","~=","^=",">>","<<","=>","@","||"],postProcess:fk},formatOptions:{alwaysDenseOperators:["@"],onelineClauses:[...PT,...hl],tabularOnelineClauses:hl}};function fk(e){let t=dn;return e.map(n=>En.SET(n)&&En.BY(t)?Object.assign(Object.assign({},n),{type:$.RESERVED_KEYWORD}):(wh(n.type)&&(t=n),n))}const Sk=["ABS","ACOS","ACOSD","ACOSH","ASIN","ASIND","ASINH","ATAN","ATAN2","ATAN2D","ATAND","ATANH","CBRT","CEIL","CEILING","COS","COSD","COSH","COT","COTD","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SCALE","SETSEED","SIGN","SIN","SIND","SINH","SQRT","TAN","TAND","TANH","TRIM_SCALE","TRUNC","WIDTH_BUCKET","ABS","ASCII","BIT_LENGTH","BTRIM","CHARACTER_LENGTH","CHAR_LENGTH","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LEFT","LENGTH","LOWER","LPAD","LTRIM","MD5","NORMALIZE","OCTET_LENGTH","OVERLAY","PARSE_IDENT","PG_CLIENT_ENCODING","POSITION","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REPEAT","REPLACE","REVERSE","RIGHT","RPAD","RTRIM","SPLIT_PART","SPRINTF","STARTS_WITH","STRING_AGG","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","SUBSTRING","TO_ASCII","TO_HEX","TRANSLATE","TRIM","UNISTR","UPPER","BIT_COUNT","BIT_LENGTH","BTRIM","CONVERT","CONVERT_FROM","CONVERT_TO","DECODE","ENCODE","GET_BIT","GET_BYTE","LENGTH","LTRIM","MD5","OCTET_LENGTH","OVERLAY","POSITION","RTRIM","SET_BIT","SET_BYTE","SHA224","SHA256","SHA384","SHA512","STRING_AGG","SUBSTR","SUBSTRING","TRIM","BIT_COUNT","BIT_LENGTH","GET_BIT","LENGTH","OCTET_LENGTH","OVERLAY","POSITION","SET_BIT","SUBSTRING","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","TO_CHAR","TO_DATE","TO_NUMBER","TO_TIMESTAMP","CLOCK_TIMESTAMP","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","EXTRACT","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","LOCALTIME","LOCALTIMESTAMP","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","PG_SLEEP","PG_SLEEP_FOR","PG_SLEEP_UNTIL","STATEMENT_TIMESTAMP","TIMEOFDAY","TO_TIMESTAMP","TRANSACTION_TIMESTAMP","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","AREA","BOUND_BOX","BOX","CENTER","CIRCLE","DIAGONAL","DIAMETER","HEIGHT","ISCLOSED","ISOPEN","LENGTH","LINE","LSEG","NPOINTS","PATH","PCLOSE","POINT","POLYGON","POPEN","RADIUS","SLOPE","WIDTH","ABBREV","BROADCAST","FAMILY","HOST","HOSTMASK","INET_MERGE","INET_SAME_FAMILY","MACADDR8_SET7BIT","MASKLEN","NETMASK","NETWORK","SET_MASKLEN","TRUNC","ARRAY_TO_TSVECTOR","GET_CURRENT_TS_CONFIG","JSONB_TO_TSVECTOR","JSON_TO_TSVECTOR","LENGTH","NUMNODE","PHRASETO_TSQUERY","PLAINTO_TSQUERY","QUERYTREE","SETWEIGHT","STRIP","TO_TSQUERY","TO_TSVECTOR","TSQUERY_PHRASE","TSVECTOR_TO_ARRAY","TS_DEBUG","TS_DELETE","TS_FILTER","TS_HEADLINE","TS_LEXIZE","TS_PARSE","TS_RANK","TS_RANK_CD","TS_REWRITE","TS_STAT","TS_TOKEN_TYPE","WEBSEARCH_TO_TSQUERY","GEN_RANDOM_UUID","UUIDV4","UUIDV7","UUID_EXTRACT_TIMESTAMP","UUID_EXTRACT_VERSION","CURSOR_TO_XML","CURSOR_TO_XMLSCHEMA","DATABASE_TO_XML","DATABASE_TO_XMLSCHEMA","DATABASE_TO_XML_AND_XMLSCHEMA","NEXTVAL","QUERY_TO_XML","QUERY_TO_XMLSCHEMA","QUERY_TO_XML_AND_XMLSCHEMA","SCHEMA_TO_XML","SCHEMA_TO_XMLSCHEMA","SCHEMA_TO_XML_AND_XMLSCHEMA","STRING","TABLE_TO_XML","TABLE_TO_XMLSCHEMA","TABLE_TO_XML_AND_XMLSCHEMA","XMLAGG","XMLCOMMENT","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","XMLTABLE","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_CONTENT","XML_IS_WELL_FORMED_DOCUMENT","XPATH","XPATH_EXISTS","ARRAY_TO_JSON","JSONB_AGG","JSONB_ARRAY_ELEMENTS","JSONB_ARRAY_ELEMENTS_TEXT","JSONB_ARRAY_LENGTH","JSONB_BUILD_ARRAY","JSONB_BUILD_OBJECT","JSONB_EACH","JSONB_EACH_TEXT","JSONB_EXTRACT_PATH","JSONB_EXTRACT_PATH_TEXT","JSONB_INSERT","JSONB_OBJECT","JSONB_OBJECT_AGG","JSONB_OBJECT_KEYS","JSONB_PATH_EXISTS","JSONB_PATH_EXISTS_TZ","JSONB_PATH_MATCH","JSONB_PATH_MATCH_TZ","JSONB_PATH_QUERY","JSONB_PATH_QUERY_ARRAY","JSONB_PATH_QUERY_ARRAY_TZ","JSONB_PATH_QUERY_FIRST","JSONB_PATH_QUERY_FIRST_TZ","JSONB_PATH_QUERY_TZ","JSONB_POPULATE_RECORD","JSONB_POPULATE_RECORDSET","JSONB_PRETTY","JSONB_SET","JSONB_SET_LAX","JSONB_STRIP_NULLS","JSONB_TO_RECORD","JSONB_TO_RECORDSET","JSONB_TYPEOF","JSON_AGG","JSON_ARRAY_ELEMENTS","JSON_ARRAY_ELEMENTS_TEXT","JSON_ARRAY_LENGTH","JSON_BUILD_ARRAY","JSON_BUILD_OBJECT","JSON_EACH","JSON_EACH_TEXT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_OBJECT","JSON_OBJECT_AGG","JSON_OBJECT_KEYS","JSON_POPULATE_RECORD","JSON_POPULATE_RECORDSET","JSON_STRIP_NULLS","JSON_TO_RECORD","JSON_TO_RECORDSET","JSON_TYPEOF","ROW_TO_JSON","TO_JSON","TO_JSONB","TO_TIMESTAMP","CURRVAL","LASTVAL","NEXTVAL","SETVAL","COALESCE","GREATEST","LEAST","NULLIF","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_DIMS","ARRAY_FILL","ARRAY_LENGTH","ARRAY_LOWER","ARRAY_NDIMS","ARRAY_POSITION","ARRAY_POSITIONS","ARRAY_PREPEND","ARRAY_REMOVE","ARRAY_REPLACE","ARRAY_TO_STRING","ARRAY_UPPER","CARDINALITY","STRING_TO_ARRAY","TRIM_ARRAY","UNNEST","ISEMPTY","LOWER","LOWER_INC","LOWER_INF","MULTIRANGE","RANGE_MERGE","UPPER","UPPER_INC","UPPER_INF","ARRAY_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COALESCE","CORR","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","EVERY","GROUPING","JSONB_AGG","JSONB_OBJECT_AGG","JSON_AGG","JSON_OBJECT_AGG","MAX","MIN","MODE","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANGE_AGG","RANGE_INTERSECT_AGG","RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","TO_JSON","TO_JSONB","VARIANCE","VAR_POP","VAR_SAMP","XMLAGG","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","GENERATE_SERIES","GENERATE_SUBSCRIPTS","ACLDEFAULT","ACLEXPLODE","COL_DESCRIPTION","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","FORMAT_TYPE","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HAS_TYPE_PRIVILEGE","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","MAKEACLITEM","OBJ_DESCRIPTION","PG_BACKEND_PID","PG_BLOCKING_PIDS","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONTROL_CHECKPOINT","PG_CONTROL_INIT","PG_CONTROL_SYSTEM","PG_CONVERSION_IS_VISIBLE","PG_CURRENT_LOGFILE","PG_CURRENT_SNAPSHOT","PG_CURRENT_XACT_ID","PG_CURRENT_XACT_ID_IF_ASSIGNED","PG_DESCRIBE_OBJECT","PG_FUNCTION_IS_VISIBLE","PG_GET_CATALOG_FOREIGN_KEYS","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_FUNCTIONDEF","PG_GET_FUNCTION_ARGUMENTS","PG_GET_FUNCTION_IDENTITY_ARGUMENTS","PG_GET_FUNCTION_RESULT","PG_GET_INDEXDEF","PG_GET_KEYWORDS","PG_GET_OBJECT_ADDRESS","PG_GET_OWNED_SEQUENCE","PG_GET_RULEDEF","PG_GET_SERIAL_SEQUENCE","PG_GET_STATISTICSOBJDEF","PG_GET_TRIGGERDEF","PG_GET_USERBYID","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IDENTIFY_OBJECT","PG_IDENTIFY_OBJECT_AS_ADDRESS","PG_INDEXAM_HAS_PROPERTY","PG_INDEX_COLUMN_HAS_PROPERTY","PG_INDEX_HAS_PROPERTY","PG_IS_OTHER_TEMP_SCHEMA","PG_JIT_AVAILABLE","PG_LAST_COMMITTED_XACT","PG_LISTENING_CHANNELS","PG_MY_TEMP_SCHEMA","PG_NOTIFICATION_QUEUE_USAGE","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_OPTIONS_TO_TABLE","PG_POSTMASTER_START_TIME","PG_SAFE_SNAPSHOT_BLOCKING_PIDS","PG_SNAPSHOT_XIP","PG_SNAPSHOT_XMAX","PG_SNAPSHOT_XMIN","PG_STATISTICS_OBJ_IS_VISIBLE","PG_TABLESPACE_DATABASES","PG_TABLESPACE_LOCATION","PG_TABLE_IS_VISIBLE","PG_TRIGGER_DEPTH","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PG_VISIBLE_IN_SNAPSHOT","PG_XACT_COMMIT_TIMESTAMP","PG_XACT_COMMIT_TIMESTAMP_ORIGIN","PG_XACT_STATUS","PQSERVERVERSION","ROW_SECURITY_ACTIVE","SESSION_USER","SHOBJ_DESCRIPTION","TO_REGCLASS","TO_REGCOLLATION","TO_REGNAMESPACE","TO_REGOPER","TO_REGOPERATOR","TO_REGPROC","TO_REGPROCEDURE","TO_REGROLE","TO_REGTYPE","TXID_CURRENT","TXID_CURRENT_IF_ASSIGNED","TXID_CURRENT_SNAPSHOT","TXID_SNAPSHOT_XIP","TXID_SNAPSHOT_XMAX","TXID_SNAPSHOT_XMIN","TXID_STATUS","TXID_VISIBLE_IN_SNAPSHOT","USER","VERSION","BRIN_DESUMMARIZE_RANGE","BRIN_SUMMARIZE_NEW_VALUES","BRIN_SUMMARIZE_RANGE","CONVERT_FROM","CURRENT_SETTING","GIN_CLEAN_PENDING_LIST","PG_ADVISORY_LOCK","PG_ADVISORY_LOCK_SHARED","PG_ADVISORY_UNLOCK","PG_ADVISORY_UNLOCK_ALL","PG_ADVISORY_UNLOCK_SHARED","PG_ADVISORY_XACT_LOCK","PG_ADVISORY_XACT_LOCK_SHARED","PG_BACKUP_START_TIME","PG_CANCEL_BACKEND","PG_COLLATION_ACTUAL_VERSION","PG_COLUMN_COMPRESSION","PG_COLUMN_SIZE","PG_COPY_LOGICAL_REPLICATION_SLOT","PG_COPY_PHYSICAL_REPLICATION_SLOT","PG_CREATE_LOGICAL_REPLICATION_SLOT","PG_CREATE_PHYSICAL_REPLICATION_SLOT","PG_CREATE_RESTORE_POINT","PG_CURRENT_WAL_FLUSH_LSN","PG_CURRENT_WAL_INSERT_LSN","PG_CURRENT_WAL_LSN","PG_DATABASE_SIZE","PG_DROP_REPLICATION_SLOT","PG_EXPORT_SNAPSHOT","PG_FILENODE_RELATION","PG_GET_WAL_REPLAY_PAUSE_STATE","PG_IMPORT_SYSTEM_COLLATIONS","PG_INDEXES_SIZE","PG_IS_IN_BACKUP","PG_IS_IN_RECOVERY","PG_IS_WAL_REPLAY_PAUSED","PG_LAST_WAL_RECEIVE_LSN","PG_LAST_WAL_REPLAY_LSN","PG_LAST_XACT_REPLAY_TIMESTAMP","PG_LOGICAL_EMIT_MESSAGE","PG_LOGICAL_SLOT_GET_BINARY_CHANGES","PG_LOGICAL_SLOT_GET_CHANGES","PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES","PG_LOGICAL_SLOT_PEEK_CHANGES","PG_LOG_BACKEND_MEMORY_CONTEXTS","PG_LS_ARCHIVE_STATUSDIR","PG_LS_DIR","PG_LS_LOGDIR","PG_LS_TMPDIR","PG_LS_WALDIR","PG_PARTITION_ANCESTORS","PG_PARTITION_ROOT","PG_PARTITION_TREE","PG_PROMOTE","PG_READ_BINARY_FILE","PG_READ_FILE","PG_RELATION_FILENODE","PG_RELATION_FILEPATH","PG_RELATION_SIZE","PG_RELOAD_CONF","PG_REPLICATION_ORIGIN_ADVANCE","PG_REPLICATION_ORIGIN_CREATE","PG_REPLICATION_ORIGIN_DROP","PG_REPLICATION_ORIGIN_OID","PG_REPLICATION_ORIGIN_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_IS_SETUP","PG_REPLICATION_ORIGIN_SESSION_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_RESET","PG_REPLICATION_ORIGIN_SESSION_SETUP","PG_REPLICATION_ORIGIN_XACT_RESET","PG_REPLICATION_ORIGIN_XACT_SETUP","PG_REPLICATION_SLOT_ADVANCE","PG_ROTATE_LOGFILE","PG_SIZE_BYTES","PG_SIZE_PRETTY","PG_START_BACKUP","PG_STAT_FILE","PG_STOP_BACKUP","PG_SWITCH_WAL","PG_TABLESPACE_SIZE","PG_TABLE_SIZE","PG_TERMINATE_BACKEND","PG_TOTAL_RELATION_SIZE","PG_TRY_ADVISORY_LOCK","PG_TRY_ADVISORY_LOCK_SHARED","PG_TRY_ADVISORY_XACT_LOCK","PG_TRY_ADVISORY_XACT_LOCK_SHARED","PG_WALFILE_NAME","PG_WALFILE_NAME_OFFSET","PG_WAL_LSN_DIFF","PG_WAL_REPLAY_PAUSE","PG_WAL_REPLAY_RESUME","SET_CONFIG","SUPPRESS_REDUNDANT_UPDATES_TRIGGER","TSVECTOR_UPDATE_TRIGGER","TSVECTOR_UPDATE_TRIGGER_COLUMN","PG_EVENT_TRIGGER_DDL_COMMANDS","PG_EVENT_TRIGGER_DROPPED_OBJECTS","PG_EVENT_TRIGGER_TABLE_REWRITE_OID","PG_EVENT_TRIGGER_TABLE_REWRITE_REASON","PG_GET_OBJECT_ADDRESS","PG_MCV_LIST_ITEMS","CAST"],Rk=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BETWEEN","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","COLUMN","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DAY","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","EXISTS","FALSE","FETCH","FILTER","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","HOUR","ILIKE","IN","INITIALLY","INNER","INOUT","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","MINUTE","MONTH","NATURAL","NOT","NOTNULL","NULL","NULLIF","OFFSET","ON","ONLY","OR","ORDER","OUT","OUTER","OVER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","ROW","SECOND","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VALUES","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","YEAR"],pk=["ARRAY","BIGINT","BIT","BIT VARYING","BOOL","BOOLEAN","CHAR","CHARACTER","CHARACTER VARYING","DECIMAL","DEC","DOUBLE","ENUM","FLOAT","INT","INTEGER","INTERVAL","NCHAR","NUMERIC","JSON","JSONB","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TIMESTAMPTZ","UUID","VARCHAR","XML","ZONE"],Ak=H(["SELECT [ALL | DISTINCT]"]),hk=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]","INSERT INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),vT=H(["CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]"]),Il=H(["CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW","CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE [ONLY]","WHERE CURRENT OF","ON CONFLICT","DELETE FROM [ONLY]","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS] [ONLY]","ALTER TABLE ALL IN TABLESPACE","RENAME [COLUMN]","RENAME TO","ADD [COLUMN] [IF NOT EXISTS]","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","SET DATA TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","TRUNCATE [TABLE] [ONLY]","SET SCHEMA","AFTER","ABORT","ALTER AGGREGATE","ALTER COLLATION","ALTER CONVERSION","ALTER DATABASE","ALTER DEFAULT PRIVILEGES","ALTER DOMAIN","ALTER EVENT TRIGGER","ALTER EXTENSION","ALTER FOREIGN DATA WRAPPER","ALTER FOREIGN TABLE","ALTER FUNCTION","ALTER GROUP","ALTER INDEX","ALTER LANGUAGE","ALTER LARGE OBJECT","ALTER MATERIALIZED VIEW","ALTER OPERATOR","ALTER OPERATOR CLASS","ALTER OPERATOR FAMILY","ALTER POLICY","ALTER PROCEDURE","ALTER PUBLICATION","ALTER ROLE","ALTER ROUTINE","ALTER RULE","ALTER SCHEMA","ALTER SEQUENCE","ALTER SERVER","ALTER STATISTICS","ALTER SUBSCRIPTION","ALTER SYSTEM","ALTER TABLESPACE","ALTER TEXT SEARCH CONFIGURATION","ALTER TEXT SEARCH DICTIONARY","ALTER TEXT SEARCH PARSER","ALTER TEXT SEARCH TEMPLATE","ALTER TRIGGER","ALTER TYPE","ALTER USER","ALTER USER MAPPING","ALTER VIEW","ANALYZE","BEGIN","CALL","CHECKPOINT","CLOSE","CLUSTER","COMMENT ON","COMMIT","COMMIT PREPARED","COPY","CREATE ACCESS METHOD","CREATE [OR REPLACE] AGGREGATE","CREATE CAST","CREATE COLLATION","CREATE [DEFAULT] CONVERSION","CREATE DATABASE","CREATE DOMAIN","CREATE EVENT TRIGGER","CREATE EXTENSION","CREATE FOREIGN DATA WRAPPER","CREATE FOREIGN TABLE","CREATE [OR REPLACE] FUNCTION","CREATE GROUP","CREATE [UNIQUE] INDEX","CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE","CREATE OPERATOR","CREATE OPERATOR CLASS","CREATE OPERATOR FAMILY","CREATE POLICY","CREATE [OR REPLACE] PROCEDURE","CREATE PUBLICATION","CREATE ROLE","CREATE [OR REPLACE] RULE","CREATE SCHEMA [AUTHORIZATION]","CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE","CREATE SERVER","CREATE STATISTICS","CREATE SUBSCRIPTION","CREATE TABLESPACE","CREATE TEXT SEARCH CONFIGURATION","CREATE TEXT SEARCH DICTIONARY","CREATE TEXT SEARCH PARSER","CREATE TEXT SEARCH TEMPLATE","CREATE [OR REPLACE] TRANSFORM","CREATE [OR REPLACE] [CONSTRAINT] TRIGGER","CREATE TYPE","CREATE USER","CREATE USER MAPPING","DEALLOCATE","DECLARE","DISCARD","DROP ACCESS METHOD","DROP AGGREGATE","DROP CAST","DROP COLLATION","DROP CONVERSION","DROP DATABASE","DROP DOMAIN","DROP EVENT TRIGGER","DROP EXTENSION","DROP FOREIGN DATA WRAPPER","DROP FOREIGN TABLE","DROP FUNCTION","DROP GROUP","DROP IDENTITY","DROP INDEX","DROP LANGUAGE","DROP MATERIALIZED VIEW [IF EXISTS]","DROP OPERATOR","DROP OPERATOR CLASS","DROP OPERATOR FAMILY","DROP OWNED","DROP POLICY","DROP PROCEDURE","DROP PUBLICATION","DROP ROLE","DROP ROUTINE","DROP RULE","DROP SCHEMA","DROP SEQUENCE","DROP SERVER","DROP STATISTICS","DROP SUBSCRIPTION","DROP TABLESPACE","DROP TEXT SEARCH CONFIGURATION","DROP TEXT SEARCH DICTIONARY","DROP TEXT SEARCH PARSER","DROP TEXT SEARCH TEMPLATE","DROP TRANSFORM","DROP TRIGGER","DROP TYPE","DROP USER","DROP USER MAPPING","DROP VIEW","EXECUTE","EXPLAIN","FETCH","GRANT","IMPORT FOREIGN SCHEMA","LISTEN","LOAD","LOCK","MOVE","NOTIFY","OVERRIDING SYSTEM VALUE","PREPARE","PREPARE TRANSACTION","REASSIGN OWNED","REFRESH MATERIALIZED VIEW","REINDEX","RELEASE SAVEPOINT","RESET [ALL|ROLE|SESSION AUTHORIZATION]","REVOKE","ROLLBACK","ROLLBACK PREPARED","ROLLBACK TO SAVEPOINT","SAVEPOINT","SECURITY LABEL","SELECT INTO","SET CONSTRAINTS","SET ROLE","SET SESSION AUTHORIZATION","SET TRANSACTION","SHOW","START TRANSACTION","UNLISTEN","VACUUM"]),Ik=H(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),Nk=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),Ok=H(["PRIMARY KEY","GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY","ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]","DO {NOTHING | UPDATE}","AS MATERIALIZED","{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM","NULLS {FIRST | LAST}","WITH ORDINALITY"]),mk=H(["[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE"]),gk={name:"postgresql",tokenizerOptions:{reservedSelect:Ak,reservedClauses:[...hk,...vT,...Il],reservedSetOperations:Ik,reservedJoins:Nk,reservedKeywordPhrases:Ok,reservedDataTypePhrases:mk,reservedKeywords:Rk,reservedDataTypes:pk,reservedFunctionNames:Sk,nestedBlockComments:!0,extraParens:["[]"],underscoresInNumbers:!0,stringTypes:["$$",{quote:"''-qq",prefixes:["U&"]},{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:[{quote:'""-qq',prefixes:["U&"]}],identChars:{rest:"$"},paramTypes:{numbered:["$"]},operators:["%","^","|/","||/","@",":=","&","|","#","~","<<",">>","~>~","~<~","~>=~","~<=~","@-@","@@","##","<->","&&","&<","&>","<<|","&<|","|>>","|&>","<^","^>","?#","?-","?|","?-|","?||","@>","<@","~=","?","@?","?&","->","->>","#>","#>>","#-","=>",">>=","<<=","~~","~~*","!~~","!~~*","~","~*","!~","!~*","-|-","||","@@@","!!","^@","<%","%>","<<%","%>>","<<->","<->>","<<<->","<->>>","::",":","<#>","<=>","<+>","<~>","<%>"],operatorKeyword:!0},formatOptions:{alwaysDenseOperators:["::",":"],onelineClauses:[...vT,...Il],tabularOnelineClauses:Il}},Ck=["ANY_VALUE","APPROXIMATE PERCENTILE_DISC","AVG","COUNT","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","array_concat","array_flatten","get_array_length","split_to_array","subarray","BIT_AND","BIT_OR","BOOL_AND","BOOL_OR","COALESCE","DECODE","GREATEST","LEAST","NVL","NVL2","NULLIF","ADD_MONTHS","AT TIME ZONE","CONVERT_TIMEZONE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_CMP","DATE_CMP_TIMESTAMP","DATE_CMP_TIMESTAMPTZ","DATE_PART_YEAR","DATEADD","DATEDIFF","DATE_PART","DATE_TRUNC","EXTRACT","GETDATE","INTERVAL_CMP","LAST_DAY","MONTHS_BETWEEN","NEXT_DAY","SYSDATE","TIMEOFDAY","TIMESTAMP_CMP","TIMESTAMP_CMP_DATE","TIMESTAMP_CMP_TIMESTAMPTZ","TIMESTAMPTZ_CMP","TIMESTAMPTZ_CMP_DATE","TIMESTAMPTZ_CMP_TIMESTAMP","TIMEZONE","TO_TIMESTAMP","TRUNC","AddBBox","DropBBox","GeometryType","ST_AddPoint","ST_Angle","ST_Area","ST_AsBinary","ST_AsEWKB","ST_AsEWKT","ST_AsGeoJSON","ST_AsText","ST_Azimuth","ST_Boundary","ST_Collect","ST_Contains","ST_ContainsProperly","ST_ConvexHull","ST_CoveredBy","ST_Covers","ST_Crosses","ST_Dimension","ST_Disjoint","ST_Distance","ST_DistanceSphere","ST_DWithin","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_Force2D","ST_Force3D","ST_Force3DM","ST_Force3DZ","ST_Force4D","ST_GeometryN","ST_GeometryType","ST_GeomFromEWKB","ST_GeomFromEWKT","ST_GeomFromText","ST_GeomFromWKB","ST_InteriorRingN","ST_Intersects","ST_IsPolygonCCW","ST_IsPolygonCW","ST_IsClosed","ST_IsCollection","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_Length","ST_LengthSphere","ST_Length2D","ST_LineFromMultiPoint","ST_LineInterpolatePoint","ST_M","ST_MakeEnvelope","ST_MakeLine","ST_MakePoint","ST_MakePolygon","ST_MemSize","ST_MMax","ST_MMin","ST_Multi","ST_NDims","ST_NPoints","ST_NRings","ST_NumGeometries","ST_NumInteriorRings","ST_NumPoints","ST_Perimeter","ST_Perimeter2D","ST_Point","ST_PointN","ST_Points","ST_Polygon","ST_RemovePoint","ST_Reverse","ST_SetPoint","ST_SetSRID","ST_Simplify","ST_SRID","ST_StartPoint","ST_Touches","ST_Within","ST_X","ST_XMax","ST_XMin","ST_Y","ST_YMax","ST_YMin","ST_Z","ST_ZMax","ST_ZMin","SupportsBBox","CHECKSUM","FUNC_SHA1","FNV_HASH","MD5","SHA","SHA1","SHA2","HLL","HLL_CREATE_SKETCH","HLL_CARDINALITY","HLL_COMBINE","IS_VALID_JSON","IS_VALID_JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_EXTRACT_ARRAY_ELEMENT_TEXT","JSON_EXTRACT_PATH_TEXT","JSON_PARSE","JSON_SERIALIZE","ABS","ACOS","ASIN","ATAN","ATAN2","CBRT","CEILING","CEIL","COS","COT","DEGREES","DEXP","DLOG1","DLOG10","EXP","FLOOR","LN","LOG","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SIN","SIGN","SQRT","TAN","TO_HEX","TRUNC","EXPLAIN_MODEL","ASCII","BPCHARCMP","BTRIM","BTTEXT_PATTERN_CMP","CHAR_LENGTH","CHARACTER_LENGTH","CHARINDEX","CHR","COLLATE","CONCAT","CRC32","DIFFERENCE","INITCAP","LEFT","RIGHT","LEN","LENGTH","LOWER","LPAD","RPAD","LTRIM","OCTETINDEX","OCTET_LENGTH","POSITION","QUOTE_IDENT","QUOTE_LITERAL","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","REPLICATE","REVERSE","RTRIM","SOUNDEX","SPLIT_PART","STRPOS","STRTOL","SUBSTRING","TEXTLEN","TRANSLATE","TRIM","UPPER","decimal_precision","decimal_scale","is_array","is_bigint","is_boolean","is_char","is_decimal","is_float","is_integer","is_object","is_scalar","is_smallint","is_varchar","json_typeof","AVG","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAST_VALUE","LAG","LEAD","LISTAGG","MAX","MEDIAN","MIN","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","CAST","CONVERT","TO_CHAR","TO_DATE","TO_NUMBER","TEXT_TO_INT_ALT","TEXT_TO_NUMERIC_ALT","CHANGE_QUERY_PRIORITY","CHANGE_SESSION_PRIORITY","CHANGE_USER_PRIORITY","CURRENT_SETTING","PG_CANCEL_BACKEND","PG_TERMINATE_BACKEND","REBOOT_CLUSTER","SET_CONFIG","CURRENT_AWS_ACCOUNT","CURRENT_DATABASE","CURRENT_NAMESPACE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","CURRENT_USER_ID","HAS_ASSUMEROLE_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_TABLE_PRIVILEGE","PG_BACKEND_PID","PG_GET_COLS","PG_GET_GRANTEE_BY_IAM_ROLE","PG_GET_IAM_ROLE_BY_USER","PG_GET_LATE_BINDING_VIEW_COLS","PG_LAST_COPY_COUNT","PG_LAST_COPY_ID","PG_LAST_UNLOAD_ID","PG_LAST_QUERY_ID","PG_LAST_UNLOAD_COUNT","SESSION_USER","SLICE_NUM","USER","VERSION"],xk=["AES128","AES256","ALL","ALLOWOVERWRITE","ANY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BOTH","CHECK","COLUMN","CONSTRAINT","CREATE","CROSS","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DESC","DISABLE","DISTINCT","DO","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GROUP","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTO","IS","ISNULL","LANGUAGE","LEADING","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","MINUS","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RECOVER","REFERENCES","REJECTLOG","RESORT","RESPECT","RESTORE","SIMILAR","SNAPSHOT","SOME","SYSTEM","TABLE","TAG","TDES","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","UNIQUE","USING","VERBOSE","WALLET","WITHOUT","ACCEPTANYDATE","ACCEPTINVCHARS","BLANKSASNULL","DATEFORMAT","EMPTYASNULL","ENCODING","ESCAPE","EXPLICIT_IDS","FILLRECORD","IGNOREBLANKLINES","IGNOREHEADER","REMOVEQUOTES","ROUNDEC","TIMEFORMAT","TRIMBLANKS","TRUNCATECOLUMNS","COMPROWS","COMPUPDATE","MAXERROR","NOLOAD","STATUPDATE","FORMAT","CSV","DELIMITER","FIXEDWIDTH","SHAPEFILE","AVRO","JSON","PARQUET","ORC","ACCESS_KEY_ID","CREDENTIALS","ENCRYPTED","IAM_ROLE","MASTER_SYMMETRIC_KEY","SECRET_ACCESS_KEY","SESSION_TOKEN","BZIP2","GZIP","LZOP","ZSTD","MANIFEST","READRATIO","REGION","SSH","RAW","AZ64","BYTEDICT","DELTA","DELTA32K","LZO","MOSTLY8","MOSTLY16","MOSTLY32","RUNLENGTH","TEXT255","TEXT32K","CATALOG_ROLE","SECRET_ARN","EXTERNAL","AUTO","EVEN","KEY","PREDICATE","COMPRESSION"],Lk=["ARRAY","BIGINT","BPCHAR","CHAR","CHARACTER VARYING","CHARACTER","DECIMAL","INT","INT2","INT4","INT8","INTEGER","NCHAR","NUMERIC","NVARCHAR","SMALLINT","TEXT","VARBYTE","VARCHAR"],yk=H(["SELECT [ALL | DISTINCT]"]),_k=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET"]),UT=H(["CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP] TABLE [IF NOT EXISTS]"]),Nl=H(["CREATE [OR REPLACE | MATERIALIZED] VIEW","UPDATE","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ALTER TABLE APPEND","ADD [COLUMN]","DROP [COLUMN]","RENAME TO","RENAME COLUMN","ALTER COLUMN","TYPE","ENCODE","TRUNCATE [TABLE]","ABORT","ALTER DATABASE","ALTER DATASHARE","ALTER DEFAULT PRIVILEGES","ALTER GROUP","ALTER MATERIALIZED VIEW","ALTER PROCEDURE","ALTER SCHEMA","ALTER USER","ANALYSE","ANALYZE","ANALYSE COMPRESSION","ANALYZE COMPRESSION","BEGIN","CALL","CANCEL","CLOSE","COMMIT","COPY","CREATE DATABASE","CREATE DATASHARE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL SCHEMA","CREATE EXTERNAL TABLE","CREATE FUNCTION","CREATE GROUP","CREATE LIBRARY","CREATE MODEL","CREATE PROCEDURE","CREATE SCHEMA","CREATE USER","DEALLOCATE","DECLARE","DESC DATASHARE","DROP DATABASE","DROP DATASHARE","DROP FUNCTION","DROP GROUP","DROP LIBRARY","DROP MODEL","DROP MATERIALIZED VIEW","DROP PROCEDURE","DROP SCHEMA","DROP USER","DROP VIEW","DROP","EXECUTE","EXPLAIN","FETCH","GRANT","LOCK","PREPARE","REFRESH MATERIALIZED VIEW","RESET","REVOKE","ROLLBACK","SELECT INTO","SET SESSION AUTHORIZATION","SET SESSION CHARACTERISTICS","SHOW","SHOW EXTERNAL TABLE","SHOW MODEL","SHOW DATASHARES","SHOW PROCEDURE","SHOW TABLE","SHOW VIEW","START TRANSACTION","UNLOAD","VACUUM"]),Dk=H(["UNION [ALL]","EXCEPT","INTERSECT","MINUS"]),Mk=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),bk=H(["NULL AS","DATA CATALOG","HIVE METASTORE","{ROWS | RANGE} BETWEEN"]),Pk=H([]),vk={name:"redshift",tokenizerOptions:{reservedSelect:yk,reservedClauses:[..._k,...UT,...Nl],reservedSetOperations:Dk,reservedJoins:Mk,reservedKeywordPhrases:bk,reservedDataTypePhrases:Pk,reservedKeywords:xk,reservedDataTypes:Lk,reservedFunctionNames:Ck,extraParens:["[]"],stringTypes:["''-qq"],identTypes:['""-qq'],identChars:{first:"#"},paramTypes:{numbered:["$"]},operators:["^","%","@","|/","||/","&","|","~","<<",">>","||","::"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...UT,...Nl],tabularOnelineClauses:Nl}},Uk=["ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANTI","ANY","ARCHIVE","AS","ASC","AT","AUTHORIZATION","BETWEEN","BOTH","BUCKET","BUCKETS","BY","CACHE","CASCADE","CAST","CHANGE","CHECK","CLEAR","CLUSTER","CLUSTERED","CODEGEN","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONSTRAINT","COST","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATA","DATABASE","DATABASES","DAY","DBPROPERTIES","DEFINED","DELETE","DELIMITED","DESC","DESCRIBE","DFS","DIRECTORIES","DIRECTORY","DISTINCT","DISTRIBUTE","DIV","DROP","ESCAPE","ESCAPED","EXCEPT","EXCHANGE","EXISTS","EXPORT","EXTENDED","EXTERNAL","EXTRACT","FALSE","FETCH","FIELDS","FILTER","FILEFORMAT","FIRST","FIRST_VALUE","FOLLOWING","FOR","FOREIGN","FORMAT","FORMATTED","FULL","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GROUP","GROUPING","HOUR","IF","IGNORE","IMPORT","IN","INDEX","INDEXES","INNER","INPATH","INPUTFORMAT","INTERSECT","INTO","IS","ITEMS","KEYS","LAST","LAST_VALUE","LATERAL","LAZY","LEADING","LEFT","LIKE","LINES","LIST","LOCAL","LOCATION","LOCK","LOCKS","LOGICAL","MACRO","MATCHED","MERGE","MINUTE","MONTH","MSCK","NAMESPACE","NAMESPACES","NATURAL","NO","NOT","NULL","NULLS","OF","ONLY","OPTION","OPTIONS","OR","ORDER","OUT","OUTER","OUTPUTFORMAT","OVER","OVERLAPS","OVERLAY","OVERWRITE","OWNER","PARTITION","PARTITIONED","PARTITIONS","PERCENT","PLACING","POSITION","PRECEDING","PRIMARY","PRINCIPALS","PROPERTIES","PURGE","QUERY","RANGE","RECORDREADER","RECORDWRITER","RECOVER","REDUCE","REFERENCES","RENAME","REPAIR","REPLACE","RESPECT","RESTRICT","REVOKE","RIGHT","RLIKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","SCHEMA","SECOND","SELECT","SEMI","SEPARATED","SERDE","SERDEPROPERTIES","SESSION_USER","SETS","SHOW","SKEWED","SOME","SORT","SORTED","START","STATISTICS","STORED","STRATIFY","SUBSTR","SUBSTRING","TABLE","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","THEN","TO","TOUCH","TRAILING","TRANSACTION","TRANSACTIONS","TRIM","TRUE","TRUNCATE","UNARCHIVE","UNBOUNDED","UNCACHE","UNIQUE","UNKNOWN","UNLOCK","UNSET","USE","USER","USING","VIEW","WINDOW","YEAR","ANALYSE","ARRAY_ZIP","COALESCE","CONTAINS","CONVERT","DAYS","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DECODE","DEFAULT","DISTINCTROW","ENCODE","EXPLODE","EXPLODE_OUTER","FIXED","GREATEST","GROUP_CONCAT","HOURS","HOUR_MINUTE","HOUR_SECOND","IFNULL","LEAST","LEVEL","MINUTE_SECOND","NULLIF","OFFSET","ON","OPTIMIZE","REGEXP","SEPARATOR","SIZE","TYPE","TYPES","UNSIGNED","VARIABLES","YEAR_MONTH"],wk=["ARRAY","BIGINT","BINARY","BOOLEAN","BYTE","CHAR","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","LONG","MAP","NUMERIC","REAL","SHORT","SMALLINT","STRING","STRUCT","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TINYINT","VARCHAR"],Bk=["APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COUNT","COUNT","COUNT_IF","COUNT_MIN_SKETCH","COVAR_POP","COVAR_SAMP","EVERY","FIRST","FIRST_VALUE","GROUPING","GROUPING_ID","KURTOSIS","LAST","LAST_VALUE","MAX","MAX_BY","MEAN","MIN","MIN_BY","PERCENTILE","PERCENTILE","PERCENTILE_APPROX","SKEWNESS","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CUME_DIST","DENSE_RANK","LAG","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","ARRAY","ARRAY_CONTAINS","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_UNION","ARRAYS_OVERLAP","ARRAYS_ZIP","FLATTEN","SEQUENCE","SHUFFLE","SLICE","SORT_ARRAY","ELEMENT_AT","ELEMENT_AT","MAP_CONCAT","MAP_ENTRIES","MAP_FROM_ARRAYS","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","STR_TO_MAP","ADD_MONTHS","CURRENT_DATE","CURRENT_DATE","CURRENT_TIMESTAMP","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","DATE_ADD","DATE_FORMAT","DATE_FROM_UNIX_DATE","DATE_PART","DATE_SUB","DATE_TRUNC","DATEDIFF","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MAKE_DATE","MAKE_DT_INTERVAL","MAKE_INTERVAL","MAKE_TIMESTAMP","MAKE_YM_INTERVAL","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","NOW","QUARTER","SECOND","SESSION_WINDOW","TIMESTAMP_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_SECONDS","TO_DATE","TO_TIMESTAMP","TO_UNIX_TIMESTAMP","TO_UTC_TIMESTAMP","TRUNC","UNIX_DATE","UNIX_MICROS","UNIX_MILLIS","UNIX_SECONDS","UNIX_TIMESTAMP","WEEKDAY","WEEKOFYEAR","WINDOW","YEAR","FROM_JSON","GET_JSON_OBJECT","JSON_ARRAY_LENGTH","JSON_OBJECT_KEYS","JSON_TUPLE","SCHEMA_OF_JSON","TO_JSON","ABS","ACOS","ACOSH","AGGREGATE","ARRAY_SORT","ASCII","ASIN","ASINH","ASSERT_TRUE","ATAN","ATAN2","ATANH","BASE64","BIN","BIT_COUNT","BIT_GET","BIT_LENGTH","BROUND","BTRIM","CARDINALITY","CBRT","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONV","COS","COSH","COT","CRC32","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_USER","DEGREES","ELT","EXP","EXPM1","FACTORIAL","FIND_IN_SET","FLOOR","FORALL","FORMAT_NUMBER","FORMAT_STRING","FROM_CSV","GETBIT","HASH","HEX","HYPOT","INITCAP","INLINE","INLINE_OUTER","INPUT_FILE_BLOCK_LENGTH","INPUT_FILE_BLOCK_START","INPUT_FILE_NAME","INSTR","ISNAN","ISNOTNULL","ISNULL","JAVA_METHOD","LCASE","LEFT","LENGTH","LEVENSHTEIN","LN","LOCATE","LOG","LOG10","LOG1P","LOG2","LOWER","LPAD","LTRIM","MAP_FILTER","MAP_ZIP_WITH","MD5","MOD","MONOTONICALLY_INCREASING_ID","NAMED_STRUCT","NANVL","NEGATIVE","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARSE_URL","PI","PMOD","POSEXPLODE","POSEXPLODE_OUTER","POSITION","POSITIVE","POW","POWER","PRINTF","RADIANS","RAISE_ERROR","RAND","RANDN","RANDOM","REFLECT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_REPLACE","REPEAT","REPLACE","REVERSE","RIGHT","RINT","ROUND","RPAD","RTRIM","SCHEMA_OF_CSV","SENTENCES","SHA","SHA1","SHA2","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIGNUM","SIN","SINH","SOUNDEX","SPACE","SPARK_PARTITION_ID","SPLIT","SQRT","STACK","SUBSTR","SUBSTRING","SUBSTRING_INDEX","TAN","TANH","TO_CSV","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRY_ADD","TRY_DIVIDE","TYPEOF","UCASE","UNBASE64","UNHEX","UPPER","UUID","VERSION","WIDTH_BUCKET","XPATH","XPATH_BOOLEAN","XPATH_DOUBLE","XPATH_FLOAT","XPATH_INT","XPATH_LONG","XPATH_NUMBER","XPATH_SHORT","XPATH_STRING","XXHASH64","ZIP_WITH","CAST","COALESCE","NULLIF"],Fk=H(["SELECT [ALL | DISTINCT]"]),Gk=H(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT [INTO | OVERWRITE] [TABLE]","VALUES","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),wT=H(["CREATE [EXTERNAL] TABLE [IF NOT EXISTS]"]),Ol=H(["CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD COLUMNS","DROP {COLUMN | COLUMNS}","RENAME TO","RENAME COLUMN","ALTER COLUMN","TRUNCATE TABLE","LATERAL VIEW","ALTER DATABASE","ALTER VIEW","CREATE DATABASE","CREATE FUNCTION","DROP DATABASE","DROP FUNCTION","DROP VIEW","REPAIR TABLE","USE DATABASE","TABLESAMPLE","PIVOT","TRANSFORM","EXPLAIN","ADD FILE","ADD JAR","ANALYZE TABLE","CACHE TABLE","CLEAR CACHE","DESCRIBE DATABASE","DESCRIBE FUNCTION","DESCRIBE QUERY","DESCRIBE TABLE","LIST FILE","LIST JAR","REFRESH","REFRESH TABLE","REFRESH FUNCTION","RESET","SHOW COLUMNS","SHOW CREATE TABLE","SHOW DATABASES","SHOW FUNCTIONS","SHOW PARTITIONS","SHOW TABLE EXTENDED","SHOW TABLES","SHOW TBLPROPERTIES","SHOW VIEWS","UNCACHE TABLE"]),Hk=H(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),kk=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT] {ANTI | SEMI} JOIN","NATURAL [LEFT] {ANTI | SEMI} JOIN"]),jk=H(["ON DELETE","ON UPDATE","CURRENT ROW","{ROWS | RANGE} BETWEEN"]),Yk=H([]),Wk={name:"spark",tokenizerOptions:{reservedSelect:Fk,reservedClauses:[...Gk,...wT,...Ol],reservedSetOperations:Hk,reservedJoins:kk,reservedKeywordPhrases:jk,reservedDataTypePhrases:Yk,supportsXor:!0,reservedKeywords:Uk,reservedDataTypes:wk,reservedFunctionNames:Bk,extraParens:["[]"],stringTypes:["''-bs",'""-bs',{quote:"''-raw",prefixes:["R","X"],requirePrefix:!0},{quote:'""-raw',prefixes:["R","X"],requirePrefix:!0}],identTypes:["``"],identChars:{allowFirstCharNumber:!0},variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||","->"],postProcess:Vk},formatOptions:{onelineClauses:[...wT,...Ol],tabularOnelineClauses:Ol}};function Vk(e){return e.map((t,n)=>{const r=e[n-1]||dn,o=e[n+1]||dn;return En.WINDOW(t)&&o.type===$.OPEN_PAREN?Object.assign(Object.assign({},t),{type:$.RESERVED_FUNCTION_NAME}):t.text==="ITEMS"&&t.type===$.RESERVED_KEYWORD&&!(r.text==="COLLECTION"&&o.text==="TERMINATED")?Object.assign(Object.assign({},t),{type:$.IDENTIFIER,text:t.raw}):t})}const $k=["ABS","CHANGES","CHAR","COALESCE","FORMAT","GLOB","HEX","IFNULL","IIF","INSTR","LAST_INSERT_ROWID","LENGTH","LIKE","LIKELIHOOD","LIKELY","LOAD_EXTENSION","LOWER","LTRIM","NULLIF","PRINTF","QUOTE","RANDOM","RANDOMBLOB","REPLACE","ROUND","RTRIM","SIGN","SOUNDEX","SQLITE_COMPILEOPTION_GET","SQLITE_COMPILEOPTION_USED","SQLITE_OFFSET","SQLITE_SOURCE_ID","SQLITE_VERSION","SUBSTR","SUBSTRING","TOTAL_CHANGES","TRIM","TYPEOF","UNICODE","UNLIKELY","UPPER","ZEROBLOB","AVG","COUNT","GROUP_CONCAT","MAX","MIN","SUM","TOTAL","DATE","TIME","DATETIME","JULIANDAY","UNIXEPOCH","STRFTIME","row_number","rank","dense_rank","percent_rank","cume_dist","ntile","lag","lead","first_value","last_value","nth_value","ACOS","ACOSH","ASIN","ASINH","ATAN","ATAN2","ATANH","CEIL","CEILING","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG","LOG10","LOG2","MOD","PI","POW","POWER","RADIANS","SIN","SINH","SQRT","TAN","TANH","TRUNC","JSON","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_ARRAY_LENGTH","JSON_EXTRACT","JSON_INSERT","JSON_OBJECT","JSON_PATCH","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_TYPE","JSON_TYPE","JSON_VALID","JSON_QUOTE","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_EACH","JSON_TREE","CAST"],Xk=["ABORT","ACTION","ADD","AFTER","ALL","ALTER","AND","ARE","ALWAYS","ANALYZE","AS","ASC","ATTACH","AUTOINCREMENT","BEFORE","BEGIN","BETWEEN","BY","CASCADE","CASE","CAST","CHECK","COLLATE","COLUMN","COMMIT","CONFLICT","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DEFAULT","DEFERRABLE","DEFERRED","DELETE","DESC","DETACH","DISTINCT","DO","DROP","EACH","ELSE","END","ESCAPE","EXCEPT","EXCLUDE","EXCLUSIVE","EXISTS","EXPLAIN","FAIL","FILTER","FIRST","FOLLOWING","FOR","FOREIGN","FROM","FULL","GENERATED","GLOB","GROUP","HAVING","IF","IGNORE","IMMEDIATE","IN","INDEX","INDEXED","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","KEY","LAST","LEFT","LIKE","LIMIT","MATCH","MATERIALIZED","NATURAL","NO","NOT","NOTHING","NOTNULL","NULL","NULLS","OF","OFFSET","ON","ONLY","OPEN","OR","ORDER","OTHERS","OUTER","OVER","PARTITION","PLAN","PRAGMA","PRECEDING","PRIMARY","QUERY","RAISE","RANGE","RECURSIVE","REFERENCES","REGEXP","REINDEX","RELEASE","RENAME","REPLACE","RESTRICT","RETURNING","RIGHT","ROLLBACK","ROW","ROWS","SAVEPOINT","SELECT","SET","TABLE","TEMP","TEMPORARY","THEN","TIES","TO","TRANSACTION","TRIGGER","UNBOUNDED","UNION","UNIQUE","UPDATE","USING","VACUUM","VALUES","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT"],Kk=["ANY","ARRAY","BLOB","CHARACTER","DECIMAL","INT","INTEGER","NATIVE CHARACTER","NCHAR","NUMERIC","NVARCHAR","REAL","TEXT","VARCHAR","VARYING CHARACTER"],zk=H(["SELECT [ALL | DISTINCT]"]),Jk=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO","REPLACE INTO","VALUES","SET","RETURNING"]),BT=H(["CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),ml=H(["CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME [COLUMN]","RENAME TO","SET SCHEMA"]),qk=H(["UNION [ALL]","EXCEPT","INTERSECT"]),Qk=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),Zk=H(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE | GROUPS} BETWEEN","DO UPDATE"]),ej=H([]),tj={name:"sqlite",tokenizerOptions:{reservedSelect:zk,reservedClauses:[...Jk,...BT,...ml],reservedSetOperations:qk,reservedJoins:Qk,reservedKeywordPhrases:Zk,reservedDataTypePhrases:ej,reservedKeywords:Xk,reservedDataTypes:Kk,reservedFunctionNames:$k,stringTypes:["''-qq",{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``","[]"],paramTypes:{positional:!0,numbered:["?"],named:[":","@","$"]},operators:["%","~","&","|","<<",">>","==","->","->>","||"]},formatOptions:{onelineClauses:[...BT,...ml],tabularOnelineClauses:ml}},nj=["GROUPING","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","ROW_NUMBER","POSITION","OCCURRENCES_REGEX","POSITION_REGEX","EXTRACT","CHAR_LENGTH","CHARACTER_LENGTH","OCTET_LENGTH","CARDINALITY","ABS","MOD","LN","EXP","POWER","SQRT","FLOOR","CEIL","CEILING","WIDTH_BUCKET","SUBSTRING","SUBSTRING_REGEX","UPPER","LOWER","CONVERT","TRANSLATE","TRANSLATE_REGEX","TRIM","OVERLAY","NORMALIZE","SPECIFICTYPE","CURRENT_DATE","CURRENT_TIME","LOCALTIME","CURRENT_TIMESTAMP","LOCALTIMESTAMP","COUNT","AVG","MAX","MIN","SUM","STDDEV_POP","STDDEV_SAMP","VAR_SAMP","VAR_POP","COLLECT","FUSION","INTERSECTION","COVAR_POP","COVAR_SAMP","CORR","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","PERCENTILE_CONT","PERCENTILE_DISC","CAST","COALESCE","NULLIF","ROUND","SIN","COS","TAN","ASIN","ACOS","ATAN"],rj=["ALL","ALLOCATE","ALTER","ANY","ARE","AS","ASC","ASENSITIVE","ASYMMETRIC","AT","ATOMIC","AUTHORIZATION","BEGIN","BETWEEN","BOTH","BY","CALL","CALLED","CASCADED","CAST","CHECK","CLOSE","COALESCE","COLLATE","COLUMN","COMMIT","CONDITION","CONNECT","CONSTRAINT","CORRESPONDING","CREATE","CROSS","CUBE","CURRENT","CURRENT_CATALOG","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DEALLOCATE","DAY","DECLARE","DEFAULT","DELETE","DEREF","DESC","DESCRIBE","DETERMINISTIC","DISCONNECT","DISTINCT","DROP","DYNAMIC","EACH","ELEMENT","END-EXEC","ESCAPE","EVERY","EXCEPT","EXEC","EXECUTE","EXISTS","EXTERNAL","FALSE","FETCH","FILTER","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GET","GLOBAL","GRANT","GROUP","HAVING","HOLD","HOUR","IDENTITY","IN","INDICATOR","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTO","IS","LANGUAGE","LARGE","LATERAL","LEADING","LEFT","LIKE","LIKE_REGEX","LOCAL","MATCH","MEMBER","MERGE","METHOD","MINUTE","MODIFIES","MODULE","MONTH","NATURAL","NEW","NO","NONE","NOT","NULL","NULLIF","OF","OLD","ON","ONLY","OPEN","ORDER","OUT","OUTER","OVER","OVERLAPS","PARAMETER","PARTITION","PRECISION","PREPARE","PRIMARY","PROCEDURE","RANGE","READS","REAL","RECURSIVE","REF","REFERENCES","REFERENCING","RELEASE","RESULT","RETURN","RETURNS","REVOKE","RIGHT","ROLLBACK","ROLLUP","ROW","ROWS","SAVEPOINT","SCOPE","SCROLL","SEARCH","SECOND","SELECT","SENSITIVE","SESSION_USER","SET","SIMILAR","SOME","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATIC","SUBMULTISET","SYMMETRIC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","THEN","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSLATION","TREAT","TRIGGER","TRUE","UESCAPE","UNION","UNIQUE","UNKNOWN","UNNEST","UPDATE","USER","USING","VALUE","VALUES","WHENEVER","WINDOW","WITHIN","WITHOUT","YEAR"],oj=["ARRAY","BIGINT","BINARY LARGE OBJECT","BINARY VARYING","BINARY","BLOB","BOOLEAN","CHAR LARGE OBJECT","CHAR VARYING","CHAR","CHARACTER LARGE OBJECT","CHARACTER VARYING","CHARACTER","CLOB","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MULTISET","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR LARGE OBJECT","NCHAR VARYING","NCHAR","NCLOB","NUMERIC","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],sj=H(["SELECT [ALL | DISTINCT]"]),ij=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET"]),FT=H(["CREATE [GLOBAL TEMPORARY | LOCAL TEMPORARY] TABLE"]),gl=H(["CREATE [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","DELETE FROM","DROP TABLE","ALTER TABLE","ADD COLUMN","DROP [COLUMN]","RENAME COLUMN","RENAME TO","ALTER [COLUMN]","{SET | DROP} DEFAULT","ADD SCOPE","DROP SCOPE {CASCADE | RESTRICT}","RESTART WITH","TRUNCATE TABLE","SET SCHEMA"]),aj=H(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),lj=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),cj=H(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),dj=H([]),Ej={name:"sql",tokenizerOptions:{reservedSelect:sj,reservedClauses:[...ij,...FT,...gl],reservedSetOperations:aj,reservedJoins:lj,reservedKeywordPhrases:cj,reservedDataTypePhrases:dj,reservedKeywords:rj,reservedDataTypes:oj,reservedFunctionNames:nj,stringTypes:[{quote:"''-qq-bs",prefixes:["N","U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``"],paramTypes:{positional:!0},operators:["||"]},formatOptions:{onelineClauses:[...FT,...gl],tabularOnelineClauses:gl}},uj=["ABS","ACOS","ALL_MATCH","ANY_MATCH","APPROX_DISTINCT","APPROX_MOST_FREQUENT","APPROX_PERCENTILE","APPROX_SET","ARBITRARY","ARRAYS_OVERLAP","ARRAY_AGG","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_SORT","ARRAY_UNION","ASIN","ATAN","ATAN2","AT_TIMEZONE","AVG","BAR","BETA_CDF","BING_TILE","BING_TILES_AROUND","BING_TILE_AT","BING_TILE_COORDINATES","BING_TILE_POLYGON","BING_TILE_QUADKEY","BING_TILE_ZOOM_LEVEL","BITWISE_AND","BITWISE_AND_AGG","BITWISE_LEFT_SHIFT","BITWISE_NOT","BITWISE_OR","BITWISE_OR_AGG","BITWISE_RIGHT_SHIFT","BITWISE_RIGHT_SHIFT_ARITHMETIC","BITWISE_XOR","BIT_COUNT","BOOL_AND","BOOL_OR","CARDINALITY","CAST","CBRT","CEIL","CEILING","CHAR2HEXINT","CHECKSUM","CHR","CLASSIFY","COALESCE","CODEPOINT","COLOR","COMBINATIONS","CONCAT","CONCAT_WS","CONTAINS","CONTAINS_SEQUENCE","CONVEX_HULL_AGG","CORR","COS","COSH","COSINE_SIMILARITY","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CRC32","CUME_DIST","CURRENT_CATALOG","CURRENT_DATE","CURRENT_GROUPS","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","DATE","DATE_ADD","DATE_DIFF","DATE_FORMAT","DATE_PARSE","DATE_TRUNC","DAY","DAY_OF_MONTH","DAY_OF_WEEK","DAY_OF_YEAR","DEGREES","DENSE_RANK","DOW","DOY","E","ELEMENT_AT","EMPTY_APPROX_SET","EVALUATE_CLASSIFIER_PREDICTIONS","EVERY","EXP","EXTRACT","FEATURES","FILTER","FIRST_VALUE","FLATTEN","FLOOR","FORMAT","FORMAT_DATETIME","FORMAT_NUMBER","FROM_BASE","FROM_BASE32","FROM_BASE64","FROM_BASE64URL","FROM_BIG_ENDIAN_32","FROM_BIG_ENDIAN_64","FROM_ENCODED_POLYLINE","FROM_GEOJSON_GEOMETRY","FROM_HEX","FROM_IEEE754_32","FROM_IEEE754_64","FROM_ISO8601_DATE","FROM_ISO8601_TIMESTAMP","FROM_ISO8601_TIMESTAMP_NANOS","FROM_UNIXTIME","FROM_UNIXTIME_NANOS","FROM_UTF8","GEOMETRIC_MEAN","GEOMETRY_FROM_HADOOP_SHAPE","GEOMETRY_INVALID_REASON","GEOMETRY_NEAREST_POINTS","GEOMETRY_TO_BING_TILES","GEOMETRY_UNION","GEOMETRY_UNION_AGG","GREATEST","GREAT_CIRCLE_DISTANCE","HAMMING_DISTANCE","HASH_COUNTS","HISTOGRAM","HMAC_MD5","HMAC_SHA1","HMAC_SHA256","HMAC_SHA512","HOUR","HUMAN_READABLE_SECONDS","IF","INDEX","INFINITY","INTERSECTION_CARDINALITY","INVERSE_BETA_CDF","INVERSE_NORMAL_CDF","IS_FINITE","IS_INFINITE","IS_JSON_SCALAR","IS_NAN","JACCARD_INDEX","JSON_ARRAY_CONTAINS","JSON_ARRAY_GET","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_EXTRACT","JSON_EXTRACT_SCALAR","JSON_FORMAT","JSON_PARSE","JSON_QUERY","JSON_SIZE","JSON_VALUE","KURTOSIS","LAG","LAST_DAY_OF_MONTH","LAST_VALUE","LEAD","LEARN_CLASSIFIER","LEARN_LIBSVM_CLASSIFIER","LEARN_LIBSVM_REGRESSOR","LEARN_REGRESSOR","LEAST","LENGTH","LEVENSHTEIN_DISTANCE","LINE_INTERPOLATE_POINT","LINE_INTERPOLATE_POINTS","LINE_LOCATE_POINT","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","LUHN_CHECK","MAKE_SET_DIGEST","MAP","MAP_AGG","MAP_CONCAT","MAP_ENTRIES","MAP_FILTER","MAP_FROM_ENTRIES","MAP_KEYS","MAP_UNION","MAP_VALUES","MAP_ZIP_WITH","MAX","MAX_BY","MD5","MERGE","MERGE_SET_DIGEST","MILLISECOND","MIN","MINUTE","MIN_BY","MOD","MONTH","MULTIMAP_AGG","MULTIMAP_FROM_ENTRIES","MURMUR3","NAN","NGRAMS","NONE_MATCH","NORMALIZE","NORMAL_CDF","NOW","NTH_VALUE","NTILE","NULLIF","NUMERIC_HISTOGRAM","OBJECTID","OBJECTID_TIMESTAMP","PARSE_DATA_SIZE","PARSE_DATETIME","PARSE_DURATION","PERCENT_RANK","PI","POSITION","POW","POWER","QDIGEST_AGG","QUARTER","RADIANS","RAND","RANDOM","RANK","REDUCE","REDUCE_AGG","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGRESS","REGR_INTERCEPT","REGR_SLOPE","RENDER","REPEAT","REPLACE","REVERSE","RGB","ROUND","ROW_NUMBER","RPAD","RTRIM","SECOND","SEQUENCE","SHA1","SHA256","SHA512","SHUFFLE","SIGN","SIMPLIFY_GEOMETRY","SIN","SKEWNESS","SLICE","SOUNDEX","SPATIAL_PARTITIONING","SPATIAL_PARTITIONS","SPLIT","SPLIT_PART","SPLIT_TO_MAP","SPLIT_TO_MULTIMAP","SPOOKY_HASH_V2_32","SPOOKY_HASH_V2_64","SQRT","STARTS_WITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRPOS","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_BOUNDARY","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CONVEXHULL","ST_COORDDIM","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_ENVELOPEASPTS","ST_EQUALS","ST_EXTERIORRING","ST_GEOMETRIES","ST_GEOMETRYFROMTEXT","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMBINARY","ST_INTERIORRINGN","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISRING","ST_ISSIMPLE","ST_ISVALID","ST_LENGTH","ST_LINEFROMTEXT","ST_LINESTRING","ST_MULTIPOINT","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINT","ST_POINTN","ST_POINTS","ST_POLYGON","ST_RELATE","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","SUBSTR","SUBSTRING","SUM","TAN","TANH","TDIGEST_AGG","TIMESTAMP_OBJECTID","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO_BASE","TO_BASE32","TO_BASE64","TO_BASE64URL","TO_BIG_ENDIAN_32","TO_BIG_ENDIAN_64","TO_CHAR","TO_DATE","TO_ENCODED_POLYLINE","TO_GEOJSON_GEOMETRY","TO_GEOMETRY","TO_HEX","TO_IEEE754_32","TO_IEEE754_64","TO_ISO8601","TO_MILLISECONDS","TO_SPHERICAL_GEOGRAPHY","TO_TIMESTAMP","TO_UNIXTIME","TO_UTF8","TRANSFORM","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRIM_ARRAY","TRUNCATE","TRY","TRY_CAST","TYPEOF","UPPER","URL_DECODE","URL_ENCODE","URL_EXTRACT_FRAGMENT","URL_EXTRACT_HOST","URL_EXTRACT_PARAMETER","URL_EXTRACT_PATH","URL_EXTRACT_PORT","URL_EXTRACT_PROTOCOL","URL_EXTRACT_QUERY","UUID","VALUES_AT_QUANTILES","VALUE_AT_QUANTILE","VARIANCE","VAR_POP","VAR_SAMP","VERSION","WEEK","WEEK_OF_YEAR","WIDTH_BUCKET","WILSON_INTERVAL_LOWER","WILSON_INTERVAL_UPPER","WITH_TIMEZONE","WORD_STEM","XXHASH64","YEAR","YEAR_OF_WEEK","YOW","ZIP","ZIP_WITH","CLASSIFIER","FIRST","LAST","MATCH_NUMBER","NEXT","PERMUTE","PREV"],Tj=["ABSENT","ADD","ADMIN","AFTER","ALL","ALTER","ANALYZE","AND","ANY","AS","ASC","AT","AUTHORIZATION","BERNOULLI","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CATALOGS","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","CONDITIONAL","CONSTRAINT","COPARTITION","CREATE","CROSS","CUBE","CURRENT","CURRENT_PATH","CURRENT_ROLE","DATA","DEALLOCATE","DEFAULT","DEFINE","DEFINER","DELETE","DENY","DESC","DESCRIBE","DESCRIPTOR","DISTINCT","DISTRIBUTED","DOUBLE","DROP","ELSE","EMPTY","ENCODING","END","ERROR","ESCAPE","EXCEPT","EXCLUDING","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FINAL","FIRST","FOLLOWING","FOR","FROM","FULL","FUNCTIONS","GRANT","GRANTED","GRANTS","GRAPHVIZ","GROUP","GROUPING","GROUPS","HAVING","IGNORE","IN","INCLUDING","INITIAL","INNER","INPUT","INSERT","INTERSECT","INTERVAL","INTO","INVOKER","IO","IS","ISOLATION","JOIN","JSON","JSON_ARRAY","JSON_OBJECT","KEEP","KEY","KEYS","LAST","LATERAL","LEADING","LEFT","LEVEL","LIKE","LIMIT","LOCAL","LOGICAL","MATCH","MATCHED","MATCHES","MATCH_RECOGNIZE","MATERIALIZED","MEASURES","NATURAL","NEXT","NFC","NFD","NFKC","NFKD","NO","NONE","NOT","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OR","ORDER","ORDINALITY","OUTER","OUTPUT","OVER","OVERFLOW","PARTITION","PARTITIONS","PASSING","PAST","PATH","PATTERN","PER","PERMUTE","PRECEDING","PRECISION","PREPARE","PRIVILEGES","PROPERTIES","PRUNE","QUOTES","RANGE","READ","RECURSIVE","REFRESH","RENAME","REPEATABLE","RESET","RESPECT","RESTRICT","RETURNING","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","RUNNING","SCALAR","SCHEMA","SCHEMAS","SECURITY","SEEK","SELECT","SERIALIZABLE","SESSION","SET","SETS","SHOW","SKIP","SOME","START","STATS","STRING","SUBSET","SYSTEM","TABLE","TABLES","TABLESAMPLE","TEXT","THEN","TIES","TIME","TIMESTAMP","TO","TRAILING","TRANSACTION","TRUE","TYPE","UESCAPE","UNBOUNDED","UNCOMMITTED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UNNEST","UPDATE","USE","USER","USING","UTF16","UTF32","UTF8","VALIDATE","VALUE","VALUES","VERBOSE","VIEW","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPER","WRITE","ZONE"],fj=["BIGINT","INT","INTEGER","SMALLINT","TINYINT","BOOLEAN","DATE","DECIMAL","REAL","DOUBLE","HYPERLOGLOG","QDIGEST","TDIGEST","P4HYPERLOGLOG","INTERVAL","TIMESTAMP","TIME","VARBINARY","VARCHAR","CHAR","ROW","ARRAY","MAP","JSON","JSON2016","IPADDRESS","GEOMETRY","UUID","SETDIGEST","JONIREGEXP","RE2JREGEXP","LIKEPATTERN","COLOR","CODEPOINTS","FUNCTION","JSONPATH"],Sj=H(["SELECT [ALL | DISTINCT]"]),Rj=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET","MATCH_RECOGNIZE","MEASURES","ONE ROW PER MATCH","ALL ROWS PER MATCH","AFTER MATCH","PATTERN","SUBSET","DEFINE"]),GT=H(["CREATE TABLE [IF NOT EXISTS]"]),Cl=H(["CREATE [OR REPLACE] [MATERIALIZED] VIEW","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME COLUMN [IF EXISTS]","RENAME TO","SET AUTHORIZATION [USER | ROLE]","SET PROPERTIES","EXECUTE","TRUNCATE TABLE","ALTER SCHEMA","ALTER MATERIALIZED VIEW","ALTER VIEW","CREATE SCHEMA","CREATE ROLE","DROP SCHEMA","DROP MATERIALIZED VIEW","DROP VIEW","DROP ROLE","EXPLAIN","ANALYZE","EXPLAIN ANALYZE","EXPLAIN ANALYZE VERBOSE","USE","DESCRIBE INPUT","DESCRIBE OUTPUT","REFRESH MATERIALIZED VIEW","RESET SESSION","SET SESSION","SET PATH","SET TIME ZONE","SHOW GRANTS","SHOW CREATE TABLE","SHOW CREATE SCHEMA","SHOW CREATE VIEW","SHOW CREATE MATERIALIZED VIEW","SHOW TABLES","SHOW SCHEMAS","SHOW CATALOGS","SHOW COLUMNS","SHOW STATS FOR","SHOW ROLES","SHOW CURRENT ROLES","SHOW ROLE GRANTS","SHOW FUNCTIONS","SHOW SESSION"]),pj=H(["UNION [ALL | DISTINCT] [CORRESPONDING]","EXCEPT [ALL | DISTINCT] [CORRESPONDING]","INTERSECT [ALL | DISTINCT] [CORRESPONDING]"]),Aj=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),hj=H(["{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM"]),Ij=H([]),Nj={name:"trino",tokenizerOptions:{reservedSelect:Sj,reservedClauses:[...Rj,...GT,...Cl],reservedSetOperations:pj,reservedJoins:Aj,reservedKeywordPhrases:hj,reservedDataTypePhrases:Ij,reservedKeywords:Tj,reservedDataTypes:fj,reservedFunctionNames:uj,extraParens:["[]","{}"],stringTypes:[{quote:"''-qq",prefixes:["U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq'],paramTypes:{positional:!0},operators:["%","->","=>",":","||","|","^","$"]},formatOptions:{onelineClauses:[...GT,...Cl],tabularOnelineClauses:Cl}},Oj=["APPROX_COUNT_DISTINCT","AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","STDEV","STDEVP","SUM","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","Collation - COLLATIONPROPERTY","Collation - TERTIARY_WEIGHTS","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","@@CURSOR_ROWS","@@FETCH_STATUS","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","@@DATEFIRST","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TIMEZONE_ID","DATEADD","DATEDIFF","DATEDIFF_BIG","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","JSON","ISJSON","JSON_VALUE","JSON_QUERY","JSON_MODIFY","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","CHOOSE","GREATEST","IIF","LEAST","@@PROCID","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FILEPROPERTYEX","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","NEXT VALUE FOR","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","DATABASE_PRINCIPAL_ID","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHARINDEX","CONCAT","CONCAT_WS","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STRING_AGG","STRING_ESCAPE","STUFF","SUBSTRING","TRANSLATE","TRIM","UNICODE","UPPER","$PARTITION","@@ERROR","@@IDENTITY","@@PACK_RECEIVED","@@ROWCOUNT","@@TRANCOUNT","BINARY_CHECKSUM","CHECKSUM","COMPRESS","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","CURRENT_TRANSACTION_ID","DECOMPRESS","ERROR_LINE","ERROR_MESSAGE","ERROR_NUMBER","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GET_FILESTREAM_TRANSACTION_CONTEXT","GETANSINULL","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","SESSION_CONTEXT","XACT_STATE","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACK_SENT","@@PACKET_ERRORS","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","COALESCE","NULLIF"],mj=["ADD","ALL","ALTER","AND","ANY","AS","ASC","AUTHORIZATION","BACKUP","BEGIN","BETWEEN","BREAK","BROWSE","BULK","BY","CASCADE","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLUMN","COMMIT","COMPUTE","CONSTRAINT","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DBCC","DEALLOCATE","DECLARE","DEFAULT","DELETE","DENY","DESC","DISK","DISTINCT","DISTRIBUTED","DROP","DUMP","ERRLVL","ESCAPE","EXEC","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FILE","FILLFACTOR","FOR","FOREIGN","FREETEXT","FREETEXTTABLE","FROM","FULL","FUNCTION","GOTO","GRANT","GROUP","HAVING","HOLDLOCK","IDENTITY","IDENTITYCOL","IDENTITY_INSERT","IF","IN","INDEX","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KILL","LEFT","LIKE","LINENO","LOAD","MERGE","NOCHECK","NONCLUSTERED","NOT","NULL","NULLIF","OF","OFF","OFFSETS","ON","OPEN","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","OPTION","OR","ORDER","OUTER","OVER","PERCENT","PIVOT","PLAN","PRIMARY","PRINT","PROC","PROCEDURE","PUBLIC","RAISERROR","READ","READTEXT","RECONFIGURE","REFERENCES","REPLICATION","RESTORE","RESTRICT","RETURN","REVERT","REVOKE","RIGHT","ROLLBACK","ROWCOUNT","ROWGUIDCOL","RULE","SAVE","SCHEMA","SECURITYAUDIT","SELECT","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","SESSION_USER","SET","SETUSER","SHUTDOWN","SOME","STATISTICS","SYSTEM_USER","TABLE","TABLESAMPLE","TEXTSIZE","THEN","TO","TOP","TRAN","TRANSACTION","TRIGGER","TRUNCATE","TRY_CONVERT","TSEQUAL","UNION","UNIQUE","UNPIVOT","UPDATE","UPDATETEXT","USE","USER","VALUES","VIEW","WAITFOR","WHERE","WHILE","WITH","WITHIN GROUP","WRITETEXT","$ACTION"],gj=["BINARY","BIT","CHAR","CHAR","CHARACTER","DATE","DATETIME2","DATETIMEOFFSET","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","NATIONAL","NCHAR","NUMERIC","NVARCHAR","PRECISION","REAL","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],Cj=H(["SELECT [ALL | DISTINCT]"]),xj=H(["WITH","INTO","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","OFFSET","FETCH {FIRST | NEXT}","FOR {BROWSE | XML | JSON}","OPTION","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY TARGET | BY SOURCE] [THEN]","UPDATE SET"]),HT=H(["CREATE TABLE"]),xl=H(["CREATE [OR ALTER] [MATERIALIZED] VIEW","UPDATE","WHERE CURRENT OF","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD","DROP COLUMN [IF EXISTS]","ALTER COLUMN","TRUNCATE TABLE","CREATE [UNIQUE] [CLUSTERED] INDEX","CREATE DATABASE","ALTER DATABASE","DROP DATABASE [IF EXISTS]","CREATE [OR ALTER] [PARTITION] {FUNCTION | PROCEDURE | PROC}","ALTER [PARTITION] {FUNCTION | PROCEDURE | PROC}","DROP [PARTITION] {FUNCTION | PROCEDURE | PROC} [IF EXISTS]","GO","USE","ADD SENSITIVITY CLASSIFICATION","ADD SIGNATURE","AGGREGATE","ANSI_DEFAULTS","ANSI_NULLS","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_PADDING","ANSI_WARNINGS","APPLICATION ROLE","ARITHABORT","ARITHIGNORE","ASSEMBLY","ASYMMETRIC KEY","AUTHORIZATION","AVAILABILITY GROUP","BACKUP","BACKUP CERTIFICATE","BACKUP MASTER KEY","BACKUP SERVICE MASTER KEY","BEGIN CONVERSATION TIMER","BEGIN DIALOG CONVERSATION","BROKER PRIORITY","BULK INSERT","CERTIFICATE","CLOSE MASTER KEY","CLOSE SYMMETRIC KEY","COLUMN ENCRYPTION KEY","COLUMN MASTER KEY","COLUMNSTORE INDEX","CONCAT_NULL_YIELDS_NULL","CONTEXT_INFO","CONTRACT","CREDENTIAL","CRYPTOGRAPHIC PROVIDER","CURSOR_CLOSE_ON_COMMIT","DATABASE","DATABASE AUDIT SPECIFICATION","DATABASE ENCRYPTION KEY","DATABASE HADR","DATABASE SCOPED CONFIGURATION","DATABASE SCOPED CREDENTIAL","DATABASE SET","DATEFIRST","DATEFORMAT","DEADLOCK_PRIORITY","DENY","DENY XML","DISABLE TRIGGER","ENABLE TRIGGER","END CONVERSATION","ENDPOINT","EVENT NOTIFICATION","EVENT SESSION","EXECUTE AS","EXTERNAL DATA SOURCE","EXTERNAL FILE FORMAT","EXTERNAL LANGUAGE","EXTERNAL LIBRARY","EXTERNAL RESOURCE POOL","EXTERNAL TABLE","FIPS_FLAGGER","FMTONLY","FORCEPLAN","FULLTEXT CATALOG","FULLTEXT INDEX","FULLTEXT STOPLIST","GET CONVERSATION GROUP","GET_TRANSMISSION_STATUS","GRANT","GRANT XML","IDENTITY_INSERT","IMPLICIT_TRANSACTIONS","INDEX","LANGUAGE","LOCK_TIMEOUT","LOGIN","MASTER KEY","MESSAGE TYPE","MOVE CONVERSATION","NOCOUNT","NOEXEC","NUMERIC_ROUNDABORT","OFFSETS","OPEN MASTER KEY","OPEN SYMMETRIC KEY","PARSEONLY","PARTITION SCHEME","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUOTED_IDENTIFIER","RECEIVE","REMOTE SERVICE BINDING","REMOTE_PROC_TRANSACTIONS","RESOURCE GOVERNOR","RESOURCE POOL","RESTORE","RESTORE FILELISTONLY","RESTORE HEADERONLY","RESTORE LABELONLY","RESTORE MASTER KEY","RESTORE REWINDONLY","RESTORE SERVICE MASTER KEY","RESTORE VERIFYONLY","REVERT","REVOKE","REVOKE XML","ROLE","ROUTE","ROWCOUNT","RULE","SCHEMA","SEARCH PROPERTY LIST","SECURITY POLICY","SELECTIVE XML INDEX","SEND","SENSITIVITY CLASSIFICATION","SEQUENCE","SERVER AUDIT","SERVER AUDIT SPECIFICATION","SERVER CONFIGURATION","SERVER ROLE","SERVICE","SERVICE MASTER KEY","SETUSER","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SIGNATURE","SPATIAL INDEX","STATISTICS","STATISTICS IO","STATISTICS PROFILE","STATISTICS TIME","STATISTICS XML","SYMMETRIC KEY","SYNONYM","TABLE","TABLE IDENTITY","TEXTSIZE","TRANSACTION ISOLATION LEVEL","TRIGGER","TYPE","UPDATE STATISTICS","USER","WORKLOAD GROUP","XACT_ABORT","XML INDEX","XML SCHEMA COLLECTION"]),Lj=H(["UNION [ALL]","EXCEPT","INTERSECT"]),yj=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{CROSS | OUTER} APPLY"]),_j=H(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),Dj=H([]),Mj={name:"transactsql",tokenizerOptions:{reservedSelect:Cj,reservedClauses:[...xj,...HT,...xl],reservedSetOperations:Lj,reservedJoins:yj,reservedKeywordPhrases:_j,reservedDataTypePhrases:Dj,reservedKeywords:mj,reservedDataTypes:gj,reservedFunctionNames:Oj,nestedBlockComments:!0,stringTypes:[{quote:"''-qq",prefixes:["N"]},"{}"],identTypes:['""-qq',"[]"],identChars:{first:"#@",rest:"#@$"},paramTypes:{named:["@"],quoted:["@"]},operators:["%","&","|","^","~","!<","!>","+=","-=","*=","/=","%=","|=","&=","^=","::",":"],propertyAccessOperators:[".."]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...HT,...xl],tabularOnelineClauses:xl}},bj=["ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","_BINARY","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","EXTRA_JOIN","FALSE","FETCH","FOR","FORCE","FORCE_COMPILED_MODE","FORCE_INTERPRETER_MODE","FOREIGN","FROM","FULL","FULLTEXT","GRANT","GROUP","HAVING","HEARTBEAT_NO_LOGGING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","_INTERNAL_DYNAMIC_TYPECAST","INTERSECT","INTERVAL","INTO","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MATCH","MAXVALUE","MINUS","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NO_QUERY_REWRITE","NOT","NO_WRITE_TO_BINLOG","NO_QUERY_REWRITE","NULL","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","RETURN","REVOKE","RIGHT","RIGHT_ANTI_JOIN","RIGHT_SEMI_JOIN","RIGHT_STRAIGHT_JOIN","RLIKE","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SEMI_JOIN","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQL_BIG_RESULT","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQLEXCEPTION","SQL_NO_CACHE","SQL_NO_LOGGING","SQL_SMALL_RESULT","SQLSTATE","SQLWARNING","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNBOUNDED","UNDO","UNION","UNIQUE","UNLOCK","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","_UTF8","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WRITE","XOR","YEAR_MONTH","ZEROFILL"],Pj=["BIGINT","BINARY","BIT","BLOB","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","UNSIGNED","VARBINARY","VARCHAR","VARCHARACTER","YEAR"],vj=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_COUNT_DISTINCT_ACCUMULATE","APPROX_COUNT_DISTINCT_COMBINE","APPROX_COUNT_DISTINCT_ESTIMATE","APPROX_GEOGRAPHY_INTERSECTS","APPROX_PERCENTILE","ASCII","ASIN","ATAN","ATAN2","AVG","BIN","BINARY","BIT_AND","BIT_COUNT","BIT_OR","BIT_XOR","CAST","CEIL","CEILING","CHAR","CHARACTER_LENGTH","CHAR_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COLLECT","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATEDIFF","DATE_FORMAT","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DENSE_RANK","DIV","DOT_PRODUCT","ELT","EUCLIDEAN_DISTANCE","EXP","EXTRACT","FIELD","FIRST","FIRST_VALUE","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOGRAPHY_AREA","GEOGRAPHY_CONTAINS","GEOGRAPHY_DISTANCE","GEOGRAPHY_INTERSECTS","GEOGRAPHY_LATITUDE","GEOGRAPHY_LENGTH","GEOGRAPHY_LONGITUDE","GEOGRAPHY_POINT","GEOGRAPHY_WITHIN_DISTANCE","GEOMETRY_AREA","GEOMETRY_CONTAINS","GEOMETRY_DISTANCE","GEOMETRY_FILTER","GEOMETRY_INTERSECTS","GEOMETRY_LENGTH","GEOMETRY_POINT","GEOMETRY_WITHIN_DISTANCE","GEOMETRY_X","GEOMETRY_Y","GREATEST","GROUPING","GROUP_CONCAT","HEX","HIGHLIGHT","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INITCAP","INSERT","INSTR","INTERVAL","IS","IS NULL","JSON_AGG","JSON_ARRAY_CONTAINS_DOUBLE","JSON_ARRAY_CONTAINS_JSON","JSON_ARRAY_CONTAINS_STRING","JSON_ARRAY_PUSH_DOUBLE","JSON_ARRAY_PUSH_JSON","JSON_ARRAY_PUSH_STRING","JSON_DELETE_KEY","JSON_EXTRACT_DOUBLE","JSON_EXTRACT_JSON","JSON_EXTRACT_STRING","JSON_EXTRACT_BIGINT","JSON_GET_TYPE","JSON_LENGTH","JSON_SET_DOUBLE","JSON_SET_JSON","JSON_SET_STRING","JSON_SPLICE_DOUBLE","JSON_SPLICE_JSON","JSON_SPLICE_STRING","LAG","LAST_DAY","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LN","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LPAD","LTRIM","MATCH","MAX","MD5","MEDIAN","MICROSECOND","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","NOT","NOW","NTH_VALUE","NTILE","NULLIF","OCTET_LENGTH","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIVOT","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANK","REGEXP","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCALAR","SCHEMA","SEC_TO_TIME","SHA1","SHA2","SIGMOID","SIGN","SIN","SLEEP","SPLIT","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUM","SYS_GUID","TAN","TIME","TIMEDIFF","TIME_BUCKET","TIME_FORMAT","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_JSON","TO_NUMBER","TO_SECONDS","TO_TIMESTAMP","TRIM","TRUNC","TRUNCATE","UCASE","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","VALUES","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_SUB","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","YEAR"],Uj=H(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),wj=H(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [IGNORE] [INTO]","VALUES","REPLACE [INTO]","ON DUPLICATE KEY UPDATE","SET","CREATE [OR REPLACE] [TEMPORARY] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] [EXTERNAL] FUNCTION"]),kT=H(["CREATE [ROWSTORE] [REFERENCE | TEMPORARY | GLOBAL TEMPORARY] TABLE [IF NOT EXISTS]"]),Ll=H(["CREATE VIEW","UPDATE","DELETE [FROM]","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] TABLE","ADD [COLUMN]","ADD [UNIQUE] {INDEX | KEY}","DROP [COLUMN]","MODIFY [COLUMN]","CHANGE","RENAME [TO | AS]","TRUNCATE [TABLE]","ADD AGGREGATOR","ADD LEAF","AGGREGATOR SET AS MASTER","ALTER DATABASE","ALTER PIPELINE","ALTER RESOURCE POOL","ALTER USER","ALTER VIEW","ANALYZE TABLE","ATTACH DATABASE","ATTACH LEAF","ATTACH LEAF ALL","BACKUP DATABASE","BINLOG","BOOTSTRAP AGGREGATOR","CACHE INDEX","CALL","CHANGE","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK BLOB CHECKSUM","CHECK TABLE","CHECKSUM TABLE","CLEAR ORPHAN DATABASES","CLONE","COMMIT","CREATE DATABASE","CREATE GROUP","CREATE INDEX","CREATE LINK","CREATE MILESTONE","CREATE PIPELINE","CREATE RESOURCE POOL","CREATE ROLE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DETACH DATABASE","DETACH PIPELINE","DROP DATABASE","DROP FUNCTION","DROP INDEX","DROP LINK","DROP PIPELINE","DROP PROCEDURE","DROP RESOURCE POOL","DROP ROLE","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","FORCE","GRANT","HANDLER","HELP","KILL CONNECTION","KILLALL QUERIES","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","REBALANCE PARTITIONS","RELEASE SAVEPOINT","REMOVE AGGREGATOR","REMOVE LEAF","REPAIR TABLE","REPLACE","REPLICATE DATABASE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","RESTORE DATABASE","RESTORE REDUNDANCY","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE FUNCTION","SHOW CREATE PIPELINE","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SNAPSHOT DATABASE","SOURCE_POS_WAIT","START GROUP_REPLICATION","START PIPELINE","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP PIPELINE","STOP REPLICA","STOP REPLICATING","STOP SLAVE","TEST PIPELINE","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),Bj=H(["UNION [ALL | DISTINCT]","EXCEPT","INTERSECT","MINUS"]),Fj=H(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),Gj=H(["ON DELETE","ON UPDATE","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),Hj=H([]),kj={name:"singlestoredb",tokenizerOptions:{reservedSelect:Uj,reservedClauses:[...wj,...kT,...Ll],reservedSetOperations:Bj,reservedJoins:Fj,reservedKeywordPhrases:Gj,reservedDataTypePhrases:Hj,reservedKeywords:bj,reservedDataTypes:Pj,reservedFunctionNames:vj,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_$]+"},{quote:"``",prefixes:["@"],requirePrefix:!0}],lineCommentTypes:["--","#"],operators:[":=","&","|","^","~","<<",">>","<=>","&&","||","::","::$","::%",":>","!:>","*.*"],postProcess:ia},formatOptions:{alwaysDenseOperators:["::","::$","::%"],onelineClauses:[...kT,...Ll],tabularOnelineClauses:Ll}},jj=["ABS","ACOS","ACOSH","ADD_MONTHS","ALL_USER_NAMES","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","APPROX_PERCENTILE_ACCUMULATE","APPROX_PERCENTILE_COMBINE","APPROX_PERCENTILE_ESTIMATE","APPROX_TOP_K","APPROX_TOP_K_ACCUMULATE","APPROX_TOP_K_COMBINE","APPROX_TOP_K_ESTIMATE","APPROXIMATE_JACCARD_INDEX","APPROXIMATE_SIMILARITY","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_COMPACT","ARRAY_CONSTRUCT","ARRAY_CONSTRUCT_COMPACT","ARRAY_CONTAINS","ARRAY_INSERT","ARRAY_INTERSECTION","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_SIZE","ARRAY_SLICE","ARRAY_TO_STRING","ARRAY_UNION_AGG","ARRAY_UNIQUE_AGG","ARRAYS_OVERLAP","AS_ARRAY","AS_BINARY","AS_BOOLEAN","AS_CHAR","AS_VARCHAR","AS_DATE","AS_DECIMAL","AS_NUMBER","AS_DOUBLE","AS_REAL","AS_INTEGER","AS_OBJECT","AS_TIME","AS_TIMESTAMP_LTZ","AS_TIMESTAMP_NTZ","AS_TIMESTAMP_TZ","ASCII","ASIN","ASINH","ATAN","ATAN2","ATANH","AUTO_REFRESH_REGISTRATION_HISTORY","AUTOMATIC_CLUSTERING_HISTORY","AVG","BASE64_DECODE_BINARY","BASE64_DECODE_STRING","BASE64_ENCODE","BIT_LENGTH","BITAND","BITAND_AGG","BITMAP_BIT_POSITION","BITMAP_BUCKET_NUMBER","BITMAP_CONSTRUCT_AGG","BITMAP_COUNT","BITMAP_OR_AGG","BITNOT","BITOR","BITOR_AGG","BITSHIFTLEFT","BITSHIFTRIGHT","BITXOR","BITXOR_AGG","BOOLAND","BOOLAND_AGG","BOOLNOT","BOOLOR","BOOLOR_AGG","BOOLXOR","BOOLXOR_AGG","BUILD_SCOPED_FILE_URL","BUILD_STAGE_FILE_URL","CASE","CAST","CBRT","CEIL","CHARINDEX","CHECK_JSON","CHECK_XML","CHR","CHAR","COALESCE","COLLATE","COLLATION","COMPLETE_TASK_GRAPHS","COMPRESS","CONCAT","CONCAT_WS","CONDITIONAL_CHANGE_EVENT","CONDITIONAL_TRUE_EVENT","CONTAINS","CONVERT_TIMEZONE","COPY_HISTORY","CORR","COS","COSH","COT","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CUME_DIST","CURRENT_ACCOUNT","CURRENT_AVAILABLE_ROLES","CURRENT_CLIENT","CURRENT_DATABASE","CURRENT_DATE","CURRENT_IP_ADDRESS","CURRENT_REGION","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SECONDARY_ROLES","CURRENT_SESSION","CURRENT_STATEMENT","CURRENT_TASK_GRAPHS","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TRANSACTION","CURRENT_USER","CURRENT_VERSION","CURRENT_WAREHOUSE","DATA_TRANSFER_HISTORY","DATABASE_REFRESH_HISTORY","DATABASE_REFRESH_PROGRESS","DATABASE_REFRESH_PROGRESS_BY_JOB","DATABASE_STORAGE_USAGE_HISTORY","DATE_FROM_PARTS","DATE_PART","DATE_TRUNC","DATEADD","DATEDIFF","DAYNAME","DECODE","DECOMPRESS_BINARY","DECOMPRESS_STRING","DECRYPT","DECRYPT_RAW","DEGREES","DENSE_RANK","DIV0","EDITDISTANCE","ENCRYPT","ENCRYPT_RAW","ENDSWITH","EQUAL_NULL","EXP","EXPLAIN_JSON","EXTERNAL_FUNCTIONS_HISTORY","EXTERNAL_TABLE_FILES","EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY","EXTRACT","EXTRACT_SEMANTIC_CATEGORIES","FACTORIAL","FILTER","FIRST_VALUE","FLATTEN","FLOOR","GENERATE_COLUMN_DESCRIPTION","GENERATOR","GET","GET_ABSOLUTE_PATH","GET_DDL","GET_IGNORE_CASE","GET_OBJECT_REFERENCES","GET_PATH","GET_PRESIGNED_URL","GET_RELATIVE_PATH","GET_STAGE_LOCATION","GETBIT","GREATEST","GREATEST_IGNORE_NULLS","GROUPING","GROUPING_ID","HASH","HASH_AGG","HAVERSINE","HEX_DECODE_BINARY","HEX_DECODE_STRING","HEX_ENCODE","HLL","HLL_ACCUMULATE","HLL_COMBINE","HLL_ESTIMATE","HLL_EXPORT","HLL_IMPORT","HOUR","MINUTE","SECOND","IDENTIFIER","IFF","IFNULL","ILIKE","ILIKE ANY","INFER_SCHEMA","INITCAP","INSERT","INVOKER_ROLE","INVOKER_SHARE","IS_ARRAY","IS_BINARY","IS_BOOLEAN","IS_CHAR","IS_VARCHAR","IS_DATE","IS_DATE_VALUE","IS_DECIMAL","IS_DOUBLE","IS_REAL","IS_GRANTED_TO_INVOKER_ROLE","IS_INTEGER","IS_NULL_VALUE","IS_OBJECT","IS_ROLE_IN_SESSION","IS_TIME","IS_TIMESTAMP_LTZ","IS_TIMESTAMP_NTZ","IS_TIMESTAMP_TZ","JAROWINKLER_SIMILARITY","JSON_EXTRACT_PATH_TEXT","KURTOSIS","LAG","LAST_DAY","LAST_QUERY_ID","LAST_TRANSACTION","LAST_VALUE","LEAD","LEAST","LEFT","LENGTH","LEN","LIKE","LIKE ALL","LIKE ANY","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOGIN_HISTORY","LOGIN_HISTORY_BY_USER","LOWER","LPAD","LTRIM","MATERIALIZED_VIEW_REFRESH_HISTORY","MD5","MD5_HEX","MD5_BINARY","MD5_NUMBER — Obsoleted","MD5_NUMBER_LOWER64","MD5_NUMBER_UPPER64","MEDIAN","MIN","MAX","MINHASH","MINHASH_COMBINE","MOD","MODE","MONTHNAME","MONTHS_BETWEEN","NEXT_DAY","NORMAL","NTH_VALUE","NTILE","NULLIF","NULLIFZERO","NVL","NVL2","OBJECT_AGG","OBJECT_CONSTRUCT","OBJECT_CONSTRUCT_KEEP_NULL","OBJECT_DELETE","OBJECT_INSERT","OBJECT_KEYS","OBJECT_PICK","OCTET_LENGTH","PARSE_IP","PARSE_JSON","PARSE_URL","PARSE_XML","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIPE_USAGE_HISTORY","POLICY_CONTEXT","POLICY_REFERENCES","POSITION","POW","POWER","PREVIOUS_DAY","QUERY_ACCELERATION_HISTORY","QUERY_HISTORY","QUERY_HISTORY_BY_SESSION","QUERY_HISTORY_BY_USER","QUERY_HISTORY_BY_WAREHOUSE","RADIANS","RANDOM","RANDSTR","RANK","RATIO_TO_REPORT","REGEXP","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","REGEXP_SUBSTR_ALL","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REGR_VALX","REGR_VALY","REPEAT","REPLACE","REPLICATION_GROUP_REFRESH_HISTORY","REPLICATION_GROUP_REFRESH_PROGRESS","REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB","REPLICATION_GROUP_USAGE_HISTORY","REPLICATION_USAGE_HISTORY","REST_EVENT_HISTORY","RESULT_SCAN","REVERSE","RIGHT","RLIKE","ROUND","ROW_NUMBER","RPAD","RTRIM","RTRIMMED_LENGTH","SEARCH_OPTIMIZATION_HISTORY","SEQ1","SEQ2","SEQ4","SEQ8","SERVERLESS_TASK_HISTORY","SHA1","SHA1_HEX","SHA1_BINARY","SHA2","SHA2_HEX","SHA2_BINARY","SIGN","SIN","SINH","SKEW","SOUNDEX","SPACE","SPLIT","SPLIT_PART","SPLIT_TO_TABLE","SQRT","SQUARE","ST_AREA","ST_ASEWKB","ST_ASEWKT","ST_ASGEOJSON","ST_ASWKB","ST_ASBINARY","ST_ASWKT","ST_ASTEXT","ST_AZIMUTH","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DWITHIN","ST_ENDPOINT","ST_ENVELOPE","ST_GEOGFROMGEOHASH","ST_GEOGPOINTFROMGEOHASH","ST_GEOGRAPHYFROMWKB","ST_GEOGRAPHYFROMWKT","ST_GEOHASH","ST_GEOMETRYFROMWKB","ST_GEOMETRYFROMWKT","ST_HAUSDORFFDISTANCE","ST_INTERSECTION","ST_INTERSECTS","ST_LENGTH","ST_MAKEGEOMPOINT","ST_GEOM_POINT","ST_MAKELINE","ST_MAKEPOINT","ST_POINT","ST_MAKEPOLYGON","ST_POLYGON","ST_NPOINTS","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SETSRID","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY","STAGE_STORAGE_USAGE_HISTORY","STARTSWITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRIP_NULL_VALUE","STRTOK","STRTOK_SPLIT_TO_TABLE","STRTOK_TO_ARRAY","SUBSTR","SUBSTRING","SUM","SYSDATE","SYSTEM$ABORT_SESSION","SYSTEM$ABORT_TRANSACTION","SYSTEM$AUTHORIZE_PRIVATELINK","SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS","SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS","SYSTEM$CANCEL_ALL_QUERIES","SYSTEM$CANCEL_QUERY","SYSTEM$CLUSTERING_DEPTH","SYSTEM$CLUSTERING_INFORMATION","SYSTEM$CLUSTERING_RATIO ","SYSTEM$CURRENT_USER_TASK_NAME","SYSTEM$DATABASE_REFRESH_HISTORY ","SYSTEM$DATABASE_REFRESH_PROGRESS","SYSTEM$DATABASE_REFRESH_PROGRESS_BY_JOB ","SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$DISABLE_DATABASE_REPLICATION","SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$ESTIMATE_QUERY_ACCELERATION","SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS","SYSTEM$EXPLAIN_JSON_TO_TEXT","SYSTEM$EXPLAIN_PLAN_JSON","SYSTEM$EXTERNAL_TABLE_PIPE_STATUS","SYSTEM$GENERATE_SAML_CSR","SYSTEM$GENERATE_SCIM_ACCESS_TOKEN","SYSTEM$GET_AWS_SNS_IAM_POLICY","SYSTEM$GET_PREDECESSOR_RETURN_VALUE","SYSTEM$GET_PRIVATELINK","SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS","SYSTEM$GET_PRIVATELINK_CONFIG","SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO","SYSTEM$GET_TAG","SYSTEM$GET_TAG_ALLOWED_VALUES","SYSTEM$GET_TAG_ON_CURRENT_COLUMN","SYSTEM$GET_TAG_ON_CURRENT_TABLE","SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER","SYSTEM$LAST_CHANGE_COMMIT_TIME","SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME","SYSTEM$MIGRATE_SAML_IDP_REGISTRATION","SYSTEM$PIPE_FORCE_RESUME","SYSTEM$PIPE_STATUS","SYSTEM$REVOKE_PRIVATELINK","SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS","SYSTEM$SET_RETURN_VALUE","SYSTEM$SHOW_OAUTH_CLIENT_SECRETS","SYSTEM$STREAM_GET_TABLE_TIMESTAMP","SYSTEM$STREAM_HAS_DATA","SYSTEM$TASK_DEPENDENTS_ENABLE","SYSTEM$TYPEOF","SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS","SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN","SYSTEM$WAIT","SYSTEM$WHITELIST","SYSTEM$WHITELIST_PRIVATELINK","TAG_REFERENCES","TAG_REFERENCES_ALL_COLUMNS","TAG_REFERENCES_WITH_LINEAGE","TAN","TANH","TASK_DEPENDENTS","TASK_HISTORY","TIME_FROM_PARTS","TIME_SLICE","TIMEADD","TIMEDIFF","TIMESTAMP_FROM_PARTS","TIMESTAMPADD","TIMESTAMPDIFF","TO_ARRAY","TO_BINARY","TO_BOOLEAN","TO_CHAR","TO_VARCHAR","TO_DATE","DATE","TO_DECIMAL","TO_NUMBER","TO_NUMERIC","TO_DOUBLE","TO_GEOGRAPHY","TO_GEOMETRY","TO_JSON","TO_OBJECT","TO_TIME","TIME","TO_TIMESTAMP","TO_TIMESTAMP_LTZ","TO_TIMESTAMP_NTZ","TO_TIMESTAMP_TZ","TO_VARIANT","TO_XML","TRANSLATE","TRIM","TRUNCATE","TRUNC","TRUNC","TRY_BASE64_DECODE_BINARY","TRY_BASE64_DECODE_STRING","TRY_CAST","TRY_HEX_DECODE_BINARY","TRY_HEX_DECODE_STRING","TRY_PARSE_JSON","TRY_TO_BINARY","TRY_TO_BOOLEAN","TRY_TO_DATE","TRY_TO_DECIMAL","TRY_TO_NUMBER","TRY_TO_NUMERIC","TRY_TO_DOUBLE","TRY_TO_GEOGRAPHY","TRY_TO_GEOMETRY","TRY_TO_TIME","TRY_TO_TIMESTAMP","TRY_TO_TIMESTAMP_LTZ","TRY_TO_TIMESTAMP_NTZ","TRY_TO_TIMESTAMP_TZ","TYPEOF","UNICODE","UNIFORM","UPPER","UUID_STRING","VALIDATE","VALIDATE_PIPE_LOAD","VAR_POP","VAR_SAMP","VARIANCE","VARIANCE_SAMP","VARIANCE_POP","WAREHOUSE_LOAD_HISTORY","WAREHOUSE_METERING_HISTORY","WIDTH_BUCKET","XMLGET","YEAR","YEAROFWEEK","YEAROFWEEKISO","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFWEEKISO","DAYOFYEAR","WEEK","WEEK","WEEKOFYEAR","WEEKISO","MONTH","QUARTER","ZEROIFNULL","ZIPF"],Yj=["ACCOUNT","ALL","ALTER","AND","ANY","AS","BETWEEN","BY","CASE","CAST","CHECK","COLUMN","CONNECT","CONNECTION","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATABASE","DELETE","DISTINCT","DROP","ELSE","EXISTS","FALSE","FOLLOWING","FOR","FROM","FULL","GRANT","GROUP","GSCLUSTER","HAVING","ILIKE","IN","INCREMENT","INNER","INSERT","INTERSECT","INTO","IS","ISSUE","JOIN","LATERAL","LEFT","LIKE","LOCALTIME","LOCALTIMESTAMP","MINUS","NATURAL","NOT","NULL","OF","ON","OR","ORDER","ORGANIZATION","QUALIFY","REGEXP","REVOKE","RIGHT","RLIKE","ROW","ROWS","SAMPLE","SCHEMA","SELECT","SET","SOME","START","TABLE","TABLESAMPLE","THEN","TO","TRIGGER","TRUE","TRY_CAST","UNION","UNIQUE","UPDATE","USING","VALUES","VIEW","WHEN","WHENEVER","WHERE","WITH","COMMENT"],Wj=["NUMBER","DECIMAL","NUMERIC","INT","INTEGER","BIGINT","SMALLINT","TINYINT","BYTEINT","FLOAT","FLOAT4","FLOAT8","DOUBLE","DOUBLE PRECISION","REAL","VARCHAR","CHAR","CHARACTER","STRING","TEXT","BINARY","VARBINARY","BOOLEAN","DATE","DATETIME","TIME","TIMESTAMP","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TIMESTAMP_TZ","VARIANT","OBJECT","ARRAY","GEOGRAPHY","GEOMETRY"],Vj=H(["SELECT [ALL | DISTINCT]"]),$j=H(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","QUALIFY","LIMIT","OFFSET","FETCH [FIRST | NEXT]","INSERT [OVERWRITE] [ALL INTO | INTO | ALL | FIRST]","{THEN | ELSE} INTO","VALUES","SET","CLUSTER BY","[WITH] {MASKING POLICY | TAG | ROW ACCESS POLICY}","COPY GRANTS","USING TEMPLATE","MERGE INTO","WHEN MATCHED [AND]","THEN {UPDATE SET | DELETE}","WHEN NOT MATCHED THEN INSERT"]),jT=H(["CREATE [OR REPLACE] [VOLATILE] TABLE [IF NOT EXISTS]","CREATE [OR REPLACE] [LOCAL | GLOBAL] {TEMP|TEMPORARY} TABLE [IF NOT EXISTS]"]),yl=H(["CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","RENAME TO","SWAP WITH","[SUSPEND | RESUME] RECLUSTER","DROP CLUSTERING KEY","ADD [COLUMN]","RENAME COLUMN","{ALTER | MODIFY} [COLUMN]","DROP [COLUMN]","{ADD | ALTER | MODIFY | DROP} [CONSTRAINT]","RENAME CONSTRAINT","{ADD | DROP} SEARCH OPTIMIZATION","{SET | UNSET} TAG","{ADD | DROP} ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","SET DATA TYPE","UNSET COMMENT","{SET | UNSET} MASKING POLICY","TRUNCATE [TABLE] [IF EXISTS]","ALTER ACCOUNT","ALTER API INTEGRATION","ALTER CONNECTION","ALTER DATABASE","ALTER EXTERNAL TABLE","ALTER FAILOVER GROUP","ALTER FILE FORMAT","ALTER FUNCTION","ALTER INTEGRATION","ALTER MASKING POLICY","ALTER MATERIALIZED VIEW","ALTER NETWORK POLICY","ALTER NOTIFICATION INTEGRATION","ALTER PIPE","ALTER PROCEDURE","ALTER REPLICATION GROUP","ALTER RESOURCE MONITOR","ALTER ROLE","ALTER ROW ACCESS POLICY","ALTER SCHEMA","ALTER SECURITY INTEGRATION","ALTER SEQUENCE","ALTER SESSION","ALTER SESSION POLICY","ALTER SHARE","ALTER STAGE","ALTER STORAGE INTEGRATION","ALTER STREAM","ALTER TAG","ALTER TASK","ALTER USER","ALTER VIEW","ALTER WAREHOUSE","BEGIN","CALL","COMMIT","COPY INTO","CREATE ACCOUNT","CREATE API INTEGRATION","CREATE CONNECTION","CREATE DATABASE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL TABLE","CREATE FAILOVER GROUP","CREATE FILE FORMAT","CREATE FUNCTION","CREATE INTEGRATION","CREATE MANAGED ACCOUNT","CREATE MASKING POLICY","CREATE MATERIALIZED VIEW","CREATE NETWORK POLICY","CREATE NOTIFICATION INTEGRATION","CREATE PIPE","CREATE PROCEDURE","CREATE REPLICATION GROUP","CREATE RESOURCE MONITOR","CREATE ROLE","CREATE ROW ACCESS POLICY","CREATE SCHEMA","CREATE SECURITY INTEGRATION","CREATE SEQUENCE","CREATE SESSION POLICY","CREATE SHARE","CREATE STAGE","CREATE STORAGE INTEGRATION","CREATE STREAM","CREATE TAG","CREATE TASK","CREATE USER","CREATE WAREHOUSE","DELETE","DESCRIBE DATABASE","DESCRIBE EXTERNAL TABLE","DESCRIBE FILE FORMAT","DESCRIBE FUNCTION","DESCRIBE INTEGRATION","DESCRIBE MASKING POLICY","DESCRIBE MATERIALIZED VIEW","DESCRIBE NETWORK POLICY","DESCRIBE PIPE","DESCRIBE PROCEDURE","DESCRIBE RESULT","DESCRIBE ROW ACCESS POLICY","DESCRIBE SCHEMA","DESCRIBE SEQUENCE","DESCRIBE SESSION POLICY","DESCRIBE SHARE","DESCRIBE STAGE","DESCRIBE STREAM","DESCRIBE TABLE","DESCRIBE TASK","DESCRIBE TRANSACTION","DESCRIBE USER","DESCRIBE VIEW","DESCRIBE WAREHOUSE","DROP CONNECTION","DROP DATABASE","DROP EXTERNAL TABLE","DROP FAILOVER GROUP","DROP FILE FORMAT","DROP FUNCTION","DROP INTEGRATION","DROP MANAGED ACCOUNT","DROP MASKING POLICY","DROP MATERIALIZED VIEW","DROP NETWORK POLICY","DROP PIPE","DROP PROCEDURE","DROP REPLICATION GROUP","DROP RESOURCE MONITOR","DROP ROLE","DROP ROW ACCESS POLICY","DROP SCHEMA","DROP SEQUENCE","DROP SESSION POLICY","DROP SHARE","DROP STAGE","DROP STREAM","DROP TAG","DROP TASK","DROP USER","DROP VIEW","DROP WAREHOUSE","EXECUTE IMMEDIATE","EXECUTE TASK","EXPLAIN","GET","GRANT OWNERSHIP","GRANT ROLE","INSERT","LIST","MERGE","PUT","REMOVE","REVOKE ROLE","ROLLBACK","SHOW COLUMNS","SHOW CONNECTIONS","SHOW DATABASES","SHOW DATABASES IN FAILOVER GROUP","SHOW DATABASES IN REPLICATION GROUP","SHOW DELEGATED AUTHORIZATIONS","SHOW EXTERNAL FUNCTIONS","SHOW EXTERNAL TABLES","SHOW FAILOVER GROUPS","SHOW FILE FORMATS","SHOW FUNCTIONS","SHOW GLOBAL ACCOUNTS","SHOW GRANTS","SHOW INTEGRATIONS","SHOW LOCKS","SHOW MANAGED ACCOUNTS","SHOW MASKING POLICIES","SHOW MATERIALIZED VIEWS","SHOW NETWORK POLICIES","SHOW OBJECTS","SHOW ORGANIZATION ACCOUNTS","SHOW PARAMETERS","SHOW PIPES","SHOW PRIMARY KEYS","SHOW PROCEDURES","SHOW REGIONS","SHOW REPLICATION ACCOUNTS","SHOW REPLICATION DATABASES","SHOW REPLICATION GROUPS","SHOW RESOURCE MONITORS","SHOW ROLES","SHOW ROW ACCESS POLICIES","SHOW SCHEMAS","SHOW SEQUENCES","SHOW SESSION POLICIES","SHOW SHARES","SHOW SHARES IN FAILOVER GROUP","SHOW SHARES IN REPLICATION GROUP","SHOW STAGES","SHOW STREAMS","SHOW TABLES","SHOW TAGS","SHOW TASKS","SHOW TRANSACTIONS","SHOW USER FUNCTIONS","SHOW USERS","SHOW VARIABLES","SHOW VIEWS","SHOW WAREHOUSES","TRUNCATE MATERIALIZED VIEW","UNDROP DATABASE","UNDROP SCHEMA","UNDROP TABLE","UNDROP TAG","UNSET","USE DATABASE","USE ROLE","USE SCHEMA","USE SECONDARY ROLES","USE WAREHOUSE"]),Xj=H(["UNION [ALL]","MINUS","EXCEPT","INTERSECT"]),Kj=H(["[INNER] JOIN","[NATURAL] {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | NATURAL} JOIN"]),zj=H(["{ROWS | RANGE} BETWEEN","ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]"]),Jj=H([]),qj={name:"snowflake",tokenizerOptions:{reservedSelect:Vj,reservedClauses:[...$j,...jT,...yl],reservedSetOperations:Xj,reservedJoins:Kj,reservedKeywordPhrases:zj,reservedDataTypePhrases:Jj,reservedKeywords:Yj,reservedDataTypes:Wj,reservedFunctionNames:jj,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq'],variableTypes:[{regex:"[$][1-9]\\d*"},{regex:"[$][_a-zA-Z][_a-zA-Z0-9$]*"}],extraParens:["[]"],identChars:{rest:"$"},lineCommentTypes:["--","//"],operators:["%","::","||","=>",":=","->"],propertyAccessOperators:[":"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...jT,...yl],tabularOnelineClauses:yl}},Qj=Object.freeze(Object.defineProperty({__proto__:null,bigquery:p2,clickhouse:D2,db2:k2,db2i:q2,duckdb:aH,hive:pH,mariadb:LH,mysql:BH,n1ql:rk,plsql:Tk,postgresql:gk,redshift:vk,singlestoredb:kj,snowflake:qj,spark:Wk,sql:Ej,sqlite:tj,tidb:XH,transactsql:Mj,trino:Nj},Symbol.toStringTag,{value:"Module"})),qr=e=>e[e.length-1],Bh=e=>e.sort((t,n)=>n.length-t.length||t.localeCompare(n)),ks=e=>e.replace(/\s+/gu," "),_l=e=>/\n/.test(e),Et=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),YT=/\s+/uy,Gn=e=>new RegExp(`(?:${e})`,"uy"),Zj=e=>e.split("").map(t=>/ /gu.test(t)?"\\s+":`[${t.toUpperCase()}${t.toLowerCase()}]`).join(""),eY=e=>e+"(?:-"+e+")*",tY=({prefixes:e,requirePrefix:t})=>`(?:${e.map(Zj).join("|")}${t?"":"|"})`,nY=e=>new RegExp(`(?:${e.map(Et).join("|")}).*?(?=\r
758
- |\r|
759
- |$)`,"uy"),WT=(e,t=[])=>{const n=e==="open"?0:1,r=["()",...t].map(o=>o[n]);return Gn(r.map(Et).join("|"))},VT=e=>Gn(`${Bh(e).map(Et).join("|")}`),rY=({rest:e,dashes:t})=>e||t?`(?![${e||""}${t?"-":""}])`:"",Mt=(e,t={})=>{if(e.length===0)return/^\b$/u;const n=rY(t),r=Bh(e).map(Et).join("|").replace(/ /gu,"\\s+");return new RegExp(`(?:${r})${n}\\b`,"iuy")},Dl=(e,t)=>{if(!e.length)return;const n=e.map(Et).join("|");return Gn(`(?:${n})(?:${t})`)},oY=()=>{const e={"<":">","[":"]","(":")","{":"}"},t="{left}(?:(?!{right}').)*?{right}",n=Object.entries(e).map(([a,l])=>t.replace(/{left}/g,Et(a)).replace(/{right}/g,Et(l))),r=Et(Object.keys(e).join(""));return`[Qq]'(?:${String.raw`(?<tag>[^\s${r}])(?:(?!\k<tag>').)*?\k<tag>`}|${n.join("|")})'`},$T={"``":"(?:`[^`]*`)+","[]":String.raw`(?:\[[^\]]*\])(?:\][^\]]*\])*`,'""-qq':String.raw`(?:"[^"]*")+`,'""-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")`,'""-qq-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,'""-raw':String.raw`(?:"[^"]*")`,"''-qq":String.raw`(?:'[^']*')+`,"''-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')`,"''-qq-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,"''-raw":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,"'''..'''":String.raw`'''[^\\]*?(?:\\.[^\\]*?)*?'''`,'""".."""':String.raw`"""[^\\]*?(?:\\.[^\\]*?)*?"""`,"{}":String.raw`(?:\{[^\}]*\})`,"q''":oY()},Fh=e=>typeof e=="string"?$T[e]:"regex"in e?e.regex:tY(e)+$T[e.quote],sY=e=>Gn(e.map(t=>"regex"in t?t.regex:Fh(t)).join("|")),Gh=e=>e.map(Fh).join("|"),XT=e=>Gn(Gh(e)),iY=(e={})=>Gn(Hh(e)),Hh=({first:e,rest:t,dashes:n,allowFirstCharNumber:r}={})=>{const o="\\p{Alphabetic}\\p{Mark}_",s="\\p{Decimal_Number}",a=Et(e??""),l=Et(t??""),c=r?`[${o}${s}${a}][${o}${s}${l}]*`:`[${o}${a}][${o}${s}${l}]*`;return n?eY(c):c};function kh(e,t){const n=e.slice(0,t).split(/\n/);return{line:n.length,col:n[n.length-1].length+1}}class aY{constructor(t,n){this.rules=t,this.dialectName=n,this.input="",this.index=0}tokenize(t){this.input=t,this.index=0;const n=[];let r;for(;this.index<this.input.length;){const o=this.getWhitespace();if(this.index<this.input.length){if(r=this.getNextToken(),!r)throw this.createParseError();n.push(Object.assign(Object.assign({},r),{precedingWhitespace:o}))}}return n}createParseError(){const t=this.input.slice(this.index,this.index+10),{line:n,col:r}=kh(this.input,this.index);return new Error(`Parse error: Unexpected "${t}" at line ${n} column ${r}.
760
- ${this.dialectInfo()}`)}dialectInfo(){return this.dialectName==="sql"?`This likely happens because you're using the default "sql" dialect.
761
- If possible, please select a more specific dialect (like sqlite, postgresql, etc).`:`SQL dialect used: "${this.dialectName}".`}getWhitespace(){YT.lastIndex=this.index;const t=YT.exec(this.input);if(t)return this.index+=t[0].length,t[0]}getNextToken(){for(const t of this.rules){const n=this.match(t);if(n)return n}}match(t){t.regex.lastIndex=this.index;const n=t.regex.exec(this.input);if(n){const r=n[0],o={type:t.type,raw:r,text:t.text?t.text(r):r,start:this.index};return t.key&&(o.key=t.key(r)),this.index+=r.length,o}}}const KT=/\/\*/uy,lY=/[\s\S]/uy,cY=/\*\//uy;class dY{constructor(){this.lastIndex=0}exec(t){let n="",r,o=0;if(r=this.matchSection(KT,t))n+=r,o++;else return null;for(;o>0;)if(r=this.matchSection(KT,t))n+=r,o++;else if(r=this.matchSection(cY,t))n+=r,o--;else if(r=this.matchSection(lY,t))n+=r;else return null;return[n]}matchSection(t,n){t.lastIndex=this.lastIndex;const r=t.exec(n);return r&&(this.lastIndex+=r[0].length),r?r[0]:null}}class EY{constructor(t,n){this.cfg=t,this.dialectName=n,this.rulesBeforeParams=this.buildRulesBeforeParams(t),this.rulesAfterParams=this.buildRulesAfterParams(t)}tokenize(t,n){const r=[...this.rulesBeforeParams,...this.buildParamRules(this.cfg,n),...this.rulesAfterParams],o=new aY(r,this.dialectName).tokenize(t);return this.cfg.postProcess?this.cfg.postProcess(o):o}buildRulesBeforeParams(t){var n,r,o;return this.validRules([{type:$.DISABLE_COMMENT,regex:/(\/\* *sql-formatter-disable *\*\/[\s\S]*?(?:\/\* *sql-formatter-enable *\*\/|$))/uy},{type:$.BLOCK_COMMENT,regex:t.nestedBlockComments?new dY:/(\/\*[^]*?\*\/)/uy},{type:$.LINE_COMMENT,regex:nY((n=t.lineCommentTypes)!==null&&n!==void 0?n:["--"])},{type:$.QUOTED_IDENTIFIER,regex:XT(t.identTypes)},{type:$.NUMBER,regex:t.underscoresInNumbers?/(?:0x[0-9a-fA-F_]+|0b[01_]+|(?:-\s*)?(?:[0-9_]*\.[0-9_]+|[0-9_]+(?:\.[0-9_]*)?)(?:[eE][-+]?[0-9_]+(?:\.[0-9_]+)?)?)(?![\w\p{Alphabetic}])/uy:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\s*)?(?:[0-9]*\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+(?:\.[0-9]+)?)?)(?![\w\p{Alphabetic}])/uy},{type:$.RESERVED_KEYWORD_PHRASE,regex:Mt((r=t.reservedKeywordPhrases)!==null&&r!==void 0?r:[],t.identChars),text:be},{type:$.RESERVED_DATA_TYPE_PHRASE,regex:Mt((o=t.reservedDataTypePhrases)!==null&&o!==void 0?o:[],t.identChars),text:be},{type:$.CASE,regex:/CASE\b/iuy,text:be},{type:$.END,regex:/END\b/iuy,text:be},{type:$.BETWEEN,regex:/BETWEEN\b/iuy,text:be},{type:$.LIMIT,regex:t.reservedClauses.includes("LIMIT")?/LIMIT\b/iuy:void 0,text:be},{type:$.RESERVED_CLAUSE,regex:Mt(t.reservedClauses,t.identChars),text:be},{type:$.RESERVED_SELECT,regex:Mt(t.reservedSelect,t.identChars),text:be},{type:$.RESERVED_SET_OPERATION,regex:Mt(t.reservedSetOperations,t.identChars),text:be},{type:$.WHEN,regex:/WHEN\b/iuy,text:be},{type:$.ELSE,regex:/ELSE\b/iuy,text:be},{type:$.THEN,regex:/THEN\b/iuy,text:be},{type:$.RESERVED_JOIN,regex:Mt(t.reservedJoins,t.identChars),text:be},{type:$.AND,regex:/AND\b/iuy,text:be},{type:$.OR,regex:/OR\b/iuy,text:be},{type:$.XOR,regex:t.supportsXor?/XOR\b/iuy:void 0,text:be},...t.operatorKeyword?[{type:$.OPERATOR,regex:/OPERATOR *\([^)]+\)/iuy}]:[],{type:$.RESERVED_FUNCTION_NAME,regex:Mt(t.reservedFunctionNames,t.identChars),text:be},{type:$.RESERVED_DATA_TYPE,regex:Mt(t.reservedDataTypes,t.identChars),text:be},{type:$.RESERVED_KEYWORD,regex:Mt(t.reservedKeywords,t.identChars),text:be}])}buildRulesAfterParams(t){var n,r;return this.validRules([{type:$.VARIABLE,regex:t.variableTypes?sY(t.variableTypes):void 0},{type:$.STRING,regex:XT(t.stringTypes)},{type:$.IDENTIFIER,regex:iY(t.identChars)},{type:$.DELIMITER,regex:/[;]/uy},{type:$.COMMA,regex:/[,]/y},{type:$.OPEN_PAREN,regex:WT("open",t.extraParens)},{type:$.CLOSE_PAREN,regex:WT("close",t.extraParens)},{type:$.OPERATOR,regex:VT(["+","-","/",">","<","=","<>","<=",">=","!=",...(n=t.operators)!==null&&n!==void 0?n:[]])},{type:$.ASTERISK,regex:/[*]/uy},{type:$.PROPERTY_ACCESS_OPERATOR,regex:VT([".",...(r=t.propertyAccessOperators)!==null&&r!==void 0?r:[]])}])}buildParamRules(t,n){var r,o,s,a,l;const c={named:(n==null?void 0:n.named)||((r=t.paramTypes)===null||r===void 0?void 0:r.named)||[],quoted:(n==null?void 0:n.quoted)||((o=t.paramTypes)===null||o===void 0?void 0:o.quoted)||[],numbered:(n==null?void 0:n.numbered)||((s=t.paramTypes)===null||s===void 0?void 0:s.numbered)||[],positional:typeof(n==null?void 0:n.positional)=="boolean"?n.positional:(a=t.paramTypes)===null||a===void 0?void 0:a.positional,custom:(n==null?void 0:n.custom)||((l=t.paramTypes)===null||l===void 0?void 0:l.custom)||[]};return this.validRules([{type:$.NAMED_PARAMETER,regex:Dl(c.named,Hh(t.paramChars||t.identChars)),key:d=>d.slice(1)},{type:$.QUOTED_PARAMETER,regex:Dl(c.quoted,Gh(t.identTypes)),key:d=>(({tokenKey:E,quoteChar:u})=>E.replace(new RegExp(Et("\\"+u),"gu"),u))({tokenKey:d.slice(2,-1),quoteChar:d.slice(-1)})},{type:$.NUMBERED_PARAMETER,regex:Dl(c.numbered,"[0-9]+"),key:d=>d.slice(1)},{type:$.POSITIONAL_PARAMETER,regex:c.positional?/[?]/y:void 0},...c.custom.map(d=>{var E;return{type:$.CUSTOM_PARAMETER,regex:Gn(d.regex),key:(E=d.key)!==null&&E!==void 0?E:(u=>u)}})])}validRules(t){return t.filter(n=>!!n.regex)}}const be=e=>ks(e.toUpperCase()),zT=new Map,uY=e=>{let t=zT.get(e);return t||(t=TY(e),zT.set(e,t)),t},TY=e=>({tokenizer:new EY(e.tokenizerOptions,e.name),formatOptions:fY(e.formatOptions)}),fY=e=>{var t;return{alwaysDenseOperators:e.alwaysDenseOperators||[],onelineClauses:Object.fromEntries(e.onelineClauses.map(n=>[n,!0])),tabularOnelineClauses:Object.fromEntries(((t=e.tabularOnelineClauses)!==null&&t!==void 0?t:e.onelineClauses).map(n=>[n,!0]))}};function SY(e){return e.indentStyle==="tabularLeft"||e.indentStyle==="tabularRight"?" ".repeat(10):e.useTabs?" ":" ".repeat(e.tabWidth)}function qn(e){return e.indentStyle==="tabularLeft"||e.indentStyle==="tabularRight"}class RY{constructor(t){this.params=t,this.index=0}get({key:t,text:n}){return this.params?t?this.params[t]:this.params[this.index++]:n}getPositionalParameterIndex(){return this.index}setPositionalParameterIndex(t){this.index=t}}var js={exports:{}},pY=js.exports,JT;function AY(){return JT||(JT=1,(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(pY,function(){function t(d,E,u){return this.id=++t.highestId,this.name=d,this.symbols=E,this.postprocess=u,this}t.highestId=0,t.prototype.toString=function(d){var E=typeof d>"u"?this.symbols.map(c).join(" "):this.symbols.slice(0,d).map(c).join(" ")+" ● "+this.symbols.slice(d).map(c).join(" ");return this.name+" → "+E};function n(d,E,u,T){this.rule=d,this.dot=E,this.reference=u,this.data=[],this.wantedBy=T,this.isComplete=this.dot===d.symbols.length}n.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},n.prototype.nextState=function(d){var E=new n(this.rule,this.dot+1,this.reference,this.wantedBy);return E.left=this,E.right=d,E.isComplete&&(E.data=E.build(),E.right=void 0),E},n.prototype.build=function(){var d=[],E=this;do d.push(E.right.data),E=E.left;while(E.left);return d.reverse(),d},n.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,a.fail))};function r(d,E){this.grammar=d,this.index=E,this.states=[],this.wants={},this.scannable=[],this.completed={}}r.prototype.process=function(d){for(var E=this.states,u=this.wants,T=this.completed,f=0;f<E.length;f++){var h=E[f];if(h.isComplete){if(h.finish(),h.data!==a.fail){for(var A=h.wantedBy,R=A.length;R--;){var p=A[R];this.complete(p,h)}if(h.reference===this.index){var N=h.rule.name;(this.completed[N]=this.completed[N]||[]).push(h)}}}else{var N=h.rule.symbols[h.dot];if(typeof N!="string"){this.scannable.push(h);continue}if(u[N]){if(u[N].push(h),T.hasOwnProperty(N))for(var I=T[N],R=0;R<I.length;R++){var O=I[R];this.complete(h,O)}}else u[N]=[h],this.predict(N)}}},r.prototype.predict=function(d){for(var E=this.grammar.byName[d]||[],u=0;u<E.length;u++){var T=E[u],f=this.wants[d],h=new n(T,0,this.index,f);this.states.push(h)}},r.prototype.complete=function(d,E){var u=d.nextState(E);this.states.push(u)};function o(d,E){this.rules=d,this.start=E||this.rules[0].name;var u=this.byName={};this.rules.forEach(function(T){u.hasOwnProperty(T.name)||(u[T.name]=[]),u[T.name].push(T)})}o.fromCompiled=function(T,E){var u=T.Lexer;T.ParserStart&&(E=T.ParserStart,T=T.ParserRules);var T=T.map(function(h){return new t(h.name,h.symbols,h.postprocess)}),f=new o(T,E);return f.lexer=u,f};function s(){this.reset("")}s.prototype.reset=function(d,E){this.buffer=d,this.index=0,this.line=E?E.line:1,this.lastLineBreak=E?-E.col:0},s.prototype.next=function(){if(this.index<this.buffer.length){var d=this.buffer[this.index++];return d===`
762
- `&&(this.line+=1,this.lastLineBreak=this.index),{value:d}}},s.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},s.prototype.formatError=function(d,E){var u=this.buffer;if(typeof u=="string"){var T=u.split(`
763
- `).slice(Math.max(0,this.line-5),this.line),f=u.indexOf(`
764
- `,this.index);f===-1&&(f=u.length);var h=this.index-this.lastLineBreak,A=String(this.line).length;return E+=" at line "+this.line+" col "+h+`:
765
-
766
- `,E+=T.map(function(p,N){return R(this.line-T.length+N+1,A)+" "+p},this).join(`
767
- `),E+=`
768
- `+R("",A+h)+`^
769
- `,E}else return E+" at index "+(this.index-1);function R(p,N){var I=String(p);return Array(N-I.length+1).join(" ")+I}};function a(d,E,u){if(d instanceof o)var T=d,u=E;else var T=o.fromCompiled(d,E);this.grammar=T,this.options={keepHistory:!1,lexer:T.lexer||new s};for(var f in u||{})this.options[f]=u[f];this.lexer=this.options.lexer,this.lexerState=void 0;var h=new r(T,0);this.table=[h],h.wants[T.start]=[],h.predict(T.start),h.process(),this.current=0}a.fail={},a.prototype.feed=function(d){var E=this.lexer;E.reset(d,this.lexerState);for(var u;;){try{if(u=E.next(),!u)break}catch(g){var A=new r(this.grammar,this.current+1);this.table.push(A);var T=new Error(this.reportLexerError(g));throw T.offset=this.current,T.token=g.token,T}var f=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var h=this.current+1,A=new r(this.grammar,h);this.table.push(A);for(var R=u.text!==void 0?u.text:u.value,p=E.constructor===s?u.value:u,N=f.scannable,I=N.length;I--;){var O=N[I],C=O.rule.symbols[O.dot];if(C.test?C.test(p):C.type?C.type===u.type:C.literal===R){var m=O.nextState({data:p,token:u,isToken:!0,reference:h-1});A.states.push(m)}}if(A.process(),A.states.length===0){var T=new Error(this.reportError(u));throw T.offset=this.current,T.token=u,T}this.options.keepHistory&&(f.lexerState=E.save()),this.current++}return f&&(this.lexerState=E.save()),this.results=this.finish(),this},a.prototype.reportLexerError=function(d){var E,u,T=d.token;return T?(E="input "+JSON.stringify(T.text[0])+" (lexer error)",u=this.lexer.formatError(T,"Syntax error")):(E="input (lexer error)",u=d.message),this.reportErrorCommon(u,E)},a.prototype.reportError=function(d){var E=(d.type?d.type+" token: ":"")+JSON.stringify(d.value!==void 0?d.value:d),u=this.lexer.formatError(d,"Syntax error");return this.reportErrorCommon(u,E)},a.prototype.reportErrorCommon=function(d,E){var u=[];u.push(d);var T=this.table.length-2,f=this.table[T],h=f.states.filter(function(R){var p=R.rule.symbols[R.dot];return p&&typeof p!="string"});if(h.length===0)u.push("Unexpected "+E+`. I did not expect any more input. Here is the state of my parse table:
770
- `),this.displayStateStack(f.states,u);else{u.push("Unexpected "+E+`. Instead, I was expecting to see one of the following:
771
- `);var A=h.map(function(R){return this.buildFirstStateStack(R,[])||[R]},this);A.forEach(function(R){var p=R[0],N=p.rule.symbols[p.dot],I=this.getSymbolDisplay(N);u.push("A "+I+" based on:"),this.displayStateStack(R,u)},this)}return u.push(""),u.join(`
772
- `)},a.prototype.displayStateStack=function(d,E){for(var u,T=0,f=0;f<d.length;f++){var h=d[f],A=h.rule.toString(h.dot);A===u?T++:(T>0&&E.push(" ^ "+T+" more lines identical to this"),T=0,E.push(" "+A)),u=A}},a.prototype.getSymbolDisplay=function(d){return l(d)},a.prototype.buildFirstStateStack=function(d,E){if(E.indexOf(d)!==-1)return null;if(d.wantedBy.length===0)return[d];var u=d.wantedBy[0],T=[d].concat(E),f=this.buildFirstStateStack(u,T);return f===null?null:[d].concat(f)},a.prototype.save=function(){var d=this.table[this.current];return d.lexerState=this.lexerState,d},a.prototype.restore=function(d){var E=d.index;this.current=E,this.table[E]=d,this.table.splice(E+1),this.lexerState=d.lexerState,this.results=this.finish()},a.prototype.rewind=function(d){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[d])},a.prototype.finish=function(){var d=[],E=this.grammar.start,u=this.table[this.table.length-1];return u.states.forEach(function(T){T.rule.name===E&&T.dot===T.rule.symbols.length&&T.reference===0&&T.data!==a.fail&&d.push(T)}),d.map(function(T){return T.data})};function l(d){var E=typeof d;if(E==="string")return d;if(E==="object"){if(d.literal)return JSON.stringify(d.literal);if(d instanceof RegExp)return"character matching "+d;if(d.type)return d.type+" token";if(d.test)return"token matching "+String(d.test);throw new Error("Unknown symbol type: "+d)}}function c(d){var E=typeof d;if(E==="string")return d;if(E==="object"){if(d.literal)return JSON.stringify(d.literal);if(d instanceof RegExp)return d.toString();if(d.type)return"%"+d.type;if(d.test)return"<"+String(d.test)+">";throw new Error("Unknown symbol type: "+d)}}return{Parser:a,Grammar:o,Rule:t}})})(js)),js.exports}var hY=AY();const IY=Ni(hY);function NY(e){return e.map(OY).map(mY).map(gY).map(CY).map(xY)}const OY=(e,t,n)=>{if(wh(e.type)){const r=LY(n,t);if(r&&r.type===$.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:$.IDENTIFIER,text:e.raw});const o=_r(n,t);if(o&&o.type===$.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:$.IDENTIFIER,text:e.raw})}return e},mY=(e,t,n)=>{if(e.type===$.RESERVED_FUNCTION_NAME){const r=_r(n,t);if(!r||!jh(r))return Object.assign(Object.assign({},e),{type:$.IDENTIFIER,text:e.raw})}return e},gY=(e,t,n)=>{if(e.type===$.RESERVED_DATA_TYPE){const r=_r(n,t);if(r&&jh(r))return Object.assign(Object.assign({},e),{type:$.RESERVED_PARAMETERIZED_DATA_TYPE})}return e},CY=(e,t,n)=>{if(e.type===$.IDENTIFIER){const r=_r(n,t);if(r&&Yh(r))return Object.assign(Object.assign({},e),{type:$.ARRAY_IDENTIFIER})}return e},xY=(e,t,n)=>{if(e.type===$.RESERVED_DATA_TYPE){const r=_r(n,t);if(r&&Yh(r))return Object.assign(Object.assign({},e),{type:$.ARRAY_KEYWORD})}return e},LY=(e,t)=>_r(e,t,-1),_r=(e,t,n=1)=>{let r=1;for(;e[t+r*n]&&yY(e[t+r*n]);)r++;return e[t+r*n]},jh=e=>e.type===$.OPEN_PAREN&&e.text==="(",Yh=e=>e.type===$.OPEN_PAREN&&e.text==="[",yY=e=>e.type===$.BLOCK_COMMENT||e.type===$.LINE_COMMENT;class Wh{constructor(t){this.tokenize=t,this.index=0,this.tokens=[],this.input=""}reset(t,n){this.input=t,this.index=0,this.tokens=this.tokenize(t)}next(){return this.tokens[this.index++]}save(){}formatError(t){const{line:n,col:r}=kh(this.input,t.start);return`Parse error at token: ${t.text} at line ${n} column ${r}`}has(t){return t in $}}var ne;(function(e){e.statement="statement",e.clause="clause",e.set_operation="set_operation",e.function_call="function_call",e.parameterized_data_type="parameterized_data_type",e.array_subscript="array_subscript",e.property_access="property_access",e.parenthesis="parenthesis",e.between_predicate="between_predicate",e.case_expression="case_expression",e.case_when="case_when",e.case_else="case_else",e.limit_clause="limit_clause",e.all_columns_asterisk="all_columns_asterisk",e.literal="literal",e.identifier="identifier",e.keyword="keyword",e.data_type="data_type",e.parameter="parameter",e.operator="operator",e.comma="comma",e.line_comment="line_comment",e.block_comment="block_comment",e.disable_comment="disable_comment"})(ne=ne||(ne={}));function Ml(e){return e[0]}const de=new Wh(e=>[]),Nn=([[e]])=>e,Pe=e=>({type:ne.keyword,tokenType:e.type,text:e.text,raw:e.raw}),qT=e=>({type:ne.data_type,text:e.text,raw:e.raw}),ve=(e,{leading:t,trailing:n})=>(t!=null&&t.length&&(e=Object.assign(Object.assign({},e),{leadingComments:t})),n!=null&&n.length&&(e=Object.assign(Object.assign({},e),{trailingComments:n})),e),_Y=(e,{leading:t,trailing:n})=>{if(t!=null&&t.length){const[r,...o]=e;e=[ve(r,{leading:t}),...o]}if(n!=null&&n.length){const r=e.slice(0,-1),o=e[e.length-1];e=[...r,ve(o,{trailing:n})]}return e},DY={Lexer:de,ParserRules:[{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","statement"],postprocess:e=>e[0].concat([e[1]])},{name:"main",symbols:["main$ebnf$1"],postprocess:([e])=>{const t=e[e.length-1];return t&&!t.hasSemicolon?t.children.length>0?e:e.slice(0,-1):e}},{name:"statement$subexpression$1",symbols:[de.has("DELIMITER")?{type:"DELIMITER"}:DELIMITER]},{name:"statement$subexpression$1",symbols:[de.has("EOF")?{type:"EOF"}:EOF]},{name:"statement",symbols:["expressions_or_clauses","statement$subexpression$1"],postprocess:([e,[t]])=>({type:ne.statement,children:e,hasSemicolon:t.type===$.DELIMITER})},{name:"expressions_or_clauses$ebnf$1",symbols:[]},{name:"expressions_or_clauses$ebnf$1",symbols:["expressions_or_clauses$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"expressions_or_clauses$ebnf$2",symbols:[]},{name:"expressions_or_clauses$ebnf$2",symbols:["expressions_or_clauses$ebnf$2","clause"],postprocess:e=>e[0].concat([e[1]])},{name:"expressions_or_clauses",symbols:["expressions_or_clauses$ebnf$1","expressions_or_clauses$ebnf$2"],postprocess:([e,t])=>[...e,...t]},{name:"clause$subexpression$1",symbols:["limit_clause"]},{name:"clause$subexpression$1",symbols:["select_clause"]},{name:"clause$subexpression$1",symbols:["other_clause"]},{name:"clause$subexpression$1",symbols:["set_operation"]},{name:"clause",symbols:["clause$subexpression$1"],postprocess:Nn},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["free_form_sql"]},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"limit_clause$ebnf$1$subexpression$1",symbols:[de.has("COMMA")?{type:"COMMA"}:COMMA,"limit_clause$ebnf$1$subexpression$1$ebnf$1"]},{name:"limit_clause$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1"],postprocess:Ml},{name:"limit_clause$ebnf$1",symbols:[],postprocess:()=>null},{name:"limit_clause",symbols:[de.has("LIMIT")?{type:"LIMIT"}:LIMIT,"_","expression_chain_","limit_clause$ebnf$1"],postprocess:([e,t,n,r])=>{if(r){const[o,s]=r;return{type:ne.limit_clause,limitKw:ve(Pe(e),{trailing:t}),offset:n,count:s}}else return{type:ne.limit_clause,limitKw:ve(Pe(e),{trailing:t}),count:n}}},{name:"select_clause$subexpression$1$ebnf$1",symbols:[]},{name:"select_clause$subexpression$1$ebnf$1",symbols:["select_clause$subexpression$1$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"select_clause$subexpression$1",symbols:["all_columns_asterisk","select_clause$subexpression$1$ebnf$1"]},{name:"select_clause$subexpression$1$ebnf$2",symbols:[]},{name:"select_clause$subexpression$1$ebnf$2",symbols:["select_clause$subexpression$1$ebnf$2","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"select_clause$subexpression$1",symbols:["asteriskless_free_form_sql","select_clause$subexpression$1$ebnf$2"]},{name:"select_clause",symbols:[de.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT,"select_clause$subexpression$1"],postprocess:([e,[t,n]])=>({type:ne.clause,nameKw:Pe(e),children:[t,...n]})},{name:"select_clause",symbols:[de.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT],postprocess:([e])=>({type:ne.clause,nameKw:Pe(e),children:[]})},{name:"all_columns_asterisk",symbols:[de.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK],postprocess:()=>({type:ne.all_columns_asterisk})},{name:"other_clause$ebnf$1",symbols:[]},{name:"other_clause$ebnf$1",symbols:["other_clause$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"other_clause",symbols:[de.has("RESERVED_CLAUSE")?{type:"RESERVED_CLAUSE"}:RESERVED_CLAUSE,"other_clause$ebnf$1"],postprocess:([e,t])=>({type:ne.clause,nameKw:Pe(e),children:t})},{name:"set_operation$ebnf$1",symbols:[]},{name:"set_operation$ebnf$1",symbols:["set_operation$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"set_operation",symbols:[de.has("RESERVED_SET_OPERATION")?{type:"RESERVED_SET_OPERATION"}:RESERVED_SET_OPERATION,"set_operation$ebnf$1"],postprocess:([e,t])=>({type:ne.set_operation,nameKw:Pe(e),children:t})},{name:"expression_chain_$ebnf$1",symbols:["expression_with_comments_"]},{name:"expression_chain_$ebnf$1",symbols:["expression_chain_$ebnf$1","expression_with_comments_"],postprocess:e=>e[0].concat([e[1]])},{name:"expression_chain_",symbols:["expression_chain_$ebnf$1"],postprocess:Ml},{name:"expression_chain$ebnf$1",symbols:[]},{name:"expression_chain$ebnf$1",symbols:["expression_chain$ebnf$1","_expression_with_comments"],postprocess:e=>e[0].concat([e[1]])},{name:"expression_chain",symbols:["expression","expression_chain$ebnf$1"],postprocess:([e,t])=>[e,...t]},{name:"andless_expression_chain$ebnf$1",symbols:[]},{name:"andless_expression_chain$ebnf$1",symbols:["andless_expression_chain$ebnf$1","_andless_expression_with_comments"],postprocess:e=>e[0].concat([e[1]])},{name:"andless_expression_chain",symbols:["andless_expression","andless_expression_chain$ebnf$1"],postprocess:([e,t])=>[e,...t]},{name:"expression_with_comments_",symbols:["expression","_"],postprocess:([e,t])=>ve(e,{trailing:t})},{name:"_expression_with_comments",symbols:["_","expression"],postprocess:([e,t])=>ve(t,{leading:e})},{name:"_andless_expression_with_comments",symbols:["_","andless_expression"],postprocess:([e,t])=>ve(t,{leading:e})},{name:"free_form_sql$subexpression$1",symbols:["asteriskless_free_form_sql"]},{name:"free_form_sql$subexpression$1",symbols:["asterisk"]},{name:"free_form_sql",symbols:["free_form_sql$subexpression$1"],postprocess:Nn},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["logic_operator"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comma"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comment"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["other_keyword"]},{name:"asteriskless_free_form_sql",symbols:["asteriskless_free_form_sql$subexpression$1"],postprocess:Nn},{name:"expression$subexpression$1",symbols:["andless_expression"]},{name:"expression$subexpression$1",symbols:["logic_operator"]},{name:"expression",symbols:["expression$subexpression$1"],postprocess:Nn},{name:"andless_expression$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"andless_expression$subexpression$1",symbols:["asterisk"]},{name:"andless_expression",symbols:["andless_expression$subexpression$1"],postprocess:Nn},{name:"asteriskless_andless_expression$subexpression$1",symbols:["atomic_expression"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["between_predicate"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["case_expression"]},{name:"asteriskless_andless_expression",symbols:["asteriskless_andless_expression$subexpression$1"],postprocess:Nn},{name:"atomic_expression$subexpression$1",symbols:["array_subscript"]},{name:"atomic_expression$subexpression$1",symbols:["function_call"]},{name:"atomic_expression$subexpression$1",symbols:["property_access"]},{name:"atomic_expression$subexpression$1",symbols:["parenthesis"]},{name:"atomic_expression$subexpression$1",symbols:["curly_braces"]},{name:"atomic_expression$subexpression$1",symbols:["square_brackets"]},{name:"atomic_expression$subexpression$1",symbols:["operator"]},{name:"atomic_expression$subexpression$1",symbols:["identifier"]},{name:"atomic_expression$subexpression$1",symbols:["parameter"]},{name:"atomic_expression$subexpression$1",symbols:["literal"]},{name:"atomic_expression$subexpression$1",symbols:["data_type"]},{name:"atomic_expression$subexpression$1",symbols:["keyword"]},{name:"atomic_expression",symbols:["atomic_expression$subexpression$1"],postprocess:Nn},{name:"array_subscript",symbols:[de.has("ARRAY_IDENTIFIER")?{type:"ARRAY_IDENTIFIER"}:ARRAY_IDENTIFIER,"_","square_brackets"],postprocess:([e,t,n])=>({type:ne.array_subscript,array:ve({type:ne.identifier,quoted:!1,text:e.text},{trailing:t}),parenthesis:n})},{name:"array_subscript",symbols:[de.has("ARRAY_KEYWORD")?{type:"ARRAY_KEYWORD"}:ARRAY_KEYWORD,"_","square_brackets"],postprocess:([e,t,n])=>({type:ne.array_subscript,array:ve(Pe(e),{trailing:t}),parenthesis:n})},{name:"function_call",symbols:[de.has("RESERVED_FUNCTION_NAME")?{type:"RESERVED_FUNCTION_NAME"}:RESERVED_FUNCTION_NAME,"_","parenthesis"],postprocess:([e,t,n])=>({type:ne.function_call,nameKw:ve(Pe(e),{trailing:t}),parenthesis:n})},{name:"parenthesis",symbols:[{literal:"("},"expressions_or_clauses",{literal:")"}],postprocess:([e,t,n])=>({type:ne.parenthesis,children:t,openParen:"(",closeParen:")"})},{name:"curly_braces$ebnf$1",symbols:[]},{name:"curly_braces$ebnf$1",symbols:["curly_braces$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"curly_braces",symbols:[{literal:"{"},"curly_braces$ebnf$1",{literal:"}"}],postprocess:([e,t,n])=>({type:ne.parenthesis,children:t,openParen:"{",closeParen:"}"})},{name:"square_brackets$ebnf$1",symbols:[]},{name:"square_brackets$ebnf$1",symbols:["square_brackets$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"square_brackets",symbols:[{literal:"["},"square_brackets$ebnf$1",{literal:"]"}],postprocess:([e,t,n])=>({type:ne.parenthesis,children:t,openParen:"[",closeParen:"]"})},{name:"property_access$subexpression$1",symbols:["identifier"]},{name:"property_access$subexpression$1",symbols:["array_subscript"]},{name:"property_access$subexpression$1",symbols:["all_columns_asterisk"]},{name:"property_access$subexpression$1",symbols:["parameter"]},{name:"property_access",symbols:["atomic_expression","_",de.has("PROPERTY_ACCESS_OPERATOR")?{type:"PROPERTY_ACCESS_OPERATOR"}:PROPERTY_ACCESS_OPERATOR,"_","property_access$subexpression$1"],postprocess:([e,t,n,r,[o]])=>({type:ne.property_access,object:ve(e,{trailing:t}),operator:n.text,property:ve(o,{leading:r})})},{name:"between_predicate",symbols:[de.has("BETWEEN")?{type:"BETWEEN"}:BETWEEN,"_","andless_expression_chain","_",de.has("AND")?{type:"AND"}:AND,"_","andless_expression"],postprocess:([e,t,n,r,o,s,a])=>({type:ne.between_predicate,betweenKw:Pe(e),expr1:_Y(n,{leading:t,trailing:r}),andKw:Pe(o),expr2:[ve(a,{leading:s})]})},{name:"case_expression$ebnf$1",symbols:["expression_chain_"],postprocess:Ml},{name:"case_expression$ebnf$1",symbols:[],postprocess:()=>null},{name:"case_expression$ebnf$2",symbols:[]},{name:"case_expression$ebnf$2",symbols:["case_expression$ebnf$2","case_clause"],postprocess:e=>e[0].concat([e[1]])},{name:"case_expression",symbols:[de.has("CASE")?{type:"CASE"}:CASE,"_","case_expression$ebnf$1","case_expression$ebnf$2",de.has("END")?{type:"END"}:END],postprocess:([e,t,n,r,o])=>({type:ne.case_expression,caseKw:ve(Pe(e),{trailing:t}),endKw:Pe(o),expr:n||[],clauses:r})},{name:"case_clause",symbols:[de.has("WHEN")?{type:"WHEN"}:WHEN,"_","expression_chain_",de.has("THEN")?{type:"THEN"}:THEN,"_","expression_chain_"],postprocess:([e,t,n,r,o,s])=>({type:ne.case_when,whenKw:ve(Pe(e),{trailing:t}),thenKw:ve(Pe(r),{trailing:o}),condition:n,result:s})},{name:"case_clause",symbols:[de.has("ELSE")?{type:"ELSE"}:ELSE,"_","expression_chain_"],postprocess:([e,t,n])=>({type:ne.case_else,elseKw:ve(Pe(e),{trailing:t}),result:n})},{name:"comma$subexpression$1",symbols:[de.has("COMMA")?{type:"COMMA"}:COMMA]},{name:"comma",symbols:["comma$subexpression$1"],postprocess:([[e]])=>({type:ne.comma})},{name:"asterisk$subexpression$1",symbols:[de.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK]},{name:"asterisk",symbols:["asterisk$subexpression$1"],postprocess:([[e]])=>({type:ne.operator,text:e.text})},{name:"operator$subexpression$1",symbols:[de.has("OPERATOR")?{type:"OPERATOR"}:OPERATOR]},{name:"operator",symbols:["operator$subexpression$1"],postprocess:([[e]])=>({type:ne.operator,text:e.text})},{name:"identifier$subexpression$1",symbols:[de.has("IDENTIFIER")?{type:"IDENTIFIER"}:IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[de.has("QUOTED_IDENTIFIER")?{type:"QUOTED_IDENTIFIER"}:QUOTED_IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[de.has("VARIABLE")?{type:"VARIABLE"}:VARIABLE]},{name:"identifier",symbols:["identifier$subexpression$1"],postprocess:([[e]])=>({type:ne.identifier,quoted:e.type!=="IDENTIFIER",text:e.text})},{name:"parameter$subexpression$1",symbols:[de.has("NAMED_PARAMETER")?{type:"NAMED_PARAMETER"}:NAMED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[de.has("QUOTED_PARAMETER")?{type:"QUOTED_PARAMETER"}:QUOTED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[de.has("NUMBERED_PARAMETER")?{type:"NUMBERED_PARAMETER"}:NUMBERED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[de.has("POSITIONAL_PARAMETER")?{type:"POSITIONAL_PARAMETER"}:POSITIONAL_PARAMETER]},{name:"parameter$subexpression$1",symbols:[de.has("CUSTOM_PARAMETER")?{type:"CUSTOM_PARAMETER"}:CUSTOM_PARAMETER]},{name:"parameter",symbols:["parameter$subexpression$1"],postprocess:([[e]])=>({type:ne.parameter,key:e.key,text:e.text})},{name:"literal$subexpression$1",symbols:[de.has("NUMBER")?{type:"NUMBER"}:NUMBER]},{name:"literal$subexpression$1",symbols:[de.has("STRING")?{type:"STRING"}:STRING]},{name:"literal",symbols:["literal$subexpression$1"],postprocess:([[e]])=>({type:ne.literal,text:e.text})},{name:"keyword$subexpression$1",symbols:[de.has("RESERVED_KEYWORD")?{type:"RESERVED_KEYWORD"}:RESERVED_KEYWORD]},{name:"keyword$subexpression$1",symbols:[de.has("RESERVED_KEYWORD_PHRASE")?{type:"RESERVED_KEYWORD_PHRASE"}:RESERVED_KEYWORD_PHRASE]},{name:"keyword$subexpression$1",symbols:[de.has("RESERVED_JOIN")?{type:"RESERVED_JOIN"}:RESERVED_JOIN]},{name:"keyword",symbols:["keyword$subexpression$1"],postprocess:([[e]])=>Pe(e)},{name:"data_type$subexpression$1",symbols:[de.has("RESERVED_DATA_TYPE")?{type:"RESERVED_DATA_TYPE"}:RESERVED_DATA_TYPE]},{name:"data_type$subexpression$1",symbols:[de.has("RESERVED_DATA_TYPE_PHRASE")?{type:"RESERVED_DATA_TYPE_PHRASE"}:RESERVED_DATA_TYPE_PHRASE]},{name:"data_type",symbols:["data_type$subexpression$1"],postprocess:([[e]])=>qT(e)},{name:"data_type",symbols:[de.has("RESERVED_PARAMETERIZED_DATA_TYPE")?{type:"RESERVED_PARAMETERIZED_DATA_TYPE"}:RESERVED_PARAMETERIZED_DATA_TYPE,"_","parenthesis"],postprocess:([e,t,n])=>({type:ne.parameterized_data_type,dataType:ve(qT(e),{trailing:t}),parenthesis:n})},{name:"logic_operator$subexpression$1",symbols:[de.has("AND")?{type:"AND"}:AND]},{name:"logic_operator$subexpression$1",symbols:[de.has("OR")?{type:"OR"}:OR]},{name:"logic_operator$subexpression$1",symbols:[de.has("XOR")?{type:"XOR"}:XOR]},{name:"logic_operator",symbols:["logic_operator$subexpression$1"],postprocess:([[e]])=>Pe(e)},{name:"other_keyword$subexpression$1",symbols:[de.has("WHEN")?{type:"WHEN"}:WHEN]},{name:"other_keyword$subexpression$1",symbols:[de.has("THEN")?{type:"THEN"}:THEN]},{name:"other_keyword$subexpression$1",symbols:[de.has("ELSE")?{type:"ELSE"}:ELSE]},{name:"other_keyword$subexpression$1",symbols:[de.has("END")?{type:"END"}:END]},{name:"other_keyword",symbols:["other_keyword$subexpression$1"],postprocess:([[e]])=>Pe(e)},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1","comment"],postprocess:e=>e[0].concat([e[1]])},{name:"_",symbols:["_$ebnf$1"],postprocess:([e])=>e},{name:"comment",symbols:[de.has("LINE_COMMENT")?{type:"LINE_COMMENT"}:LINE_COMMENT],postprocess:([e])=>({type:ne.line_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:"comment",symbols:[de.has("BLOCK_COMMENT")?{type:"BLOCK_COMMENT"}:BLOCK_COMMENT],postprocess:([e])=>({type:ne.block_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:"comment",symbols:[de.has("DISABLE_COMMENT")?{type:"DISABLE_COMMENT"}:DISABLE_COMMENT],postprocess:([e])=>({type:ne.disable_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})}],ParserStart:"main"},{Parser:MY,Grammar:bY}=IY;function PY(e){let t={};const n=new Wh(o=>[...NY(e.tokenize(o,t)),Uh(o.length)]),r=new MY(bY.fromCompiled(DY),{lexer:n});return{parse:(o,s)=>{t=s;const{results:a}=r.feed(o);if(a.length===1)return a[0];throw a.length===0?new Error("Parse error: Invalid SQL"):new Error(`Parse error: Ambiguous grammar
773
- ${JSON.stringify(a,void 0,2)}`)}}}var V;(function(e){e[e.SPACE=0]="SPACE",e[e.NO_SPACE=1]="NO_SPACE",e[e.NO_NEWLINE=2]="NO_NEWLINE",e[e.NEWLINE=3]="NEWLINE",e[e.MANDATORY_NEWLINE=4]="MANDATORY_NEWLINE",e[e.INDENT=5]="INDENT",e[e.SINGLE_INDENT=6]="SINGLE_INDENT"})(V=V||(V={}));class Vh{constructor(t){this.indentation=t,this.items=[]}add(...t){for(const n of t)switch(n){case V.SPACE:this.items.push(V.SPACE);break;case V.NO_SPACE:this.trimHorizontalWhitespace();break;case V.NO_NEWLINE:this.trimWhitespace();break;case V.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(V.NEWLINE);break;case V.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(V.MANDATORY_NEWLINE);break;case V.INDENT:this.addIndentation();break;case V.SINGLE_INDENT:this.items.push(V.SINGLE_INDENT);break;default:this.items.push(n)}}trimHorizontalWhitespace(){for(;vY(qr(this.items));)this.items.pop()}trimWhitespace(){for(;UY(qr(this.items));)this.items.pop()}addNewline(t){if(this.items.length>0)switch(qr(this.items)){case V.NEWLINE:this.items.pop(),this.items.push(t);break;case V.MANDATORY_NEWLINE:break;default:this.items.push(t);break}}addIndentation(){for(let t=0;t<this.indentation.getLevel();t++)this.items.push(V.SINGLE_INDENT)}toString(){return this.items.map(t=>this.itemToString(t)).join("")}getLayoutItems(){return this.items}itemToString(t){switch(t){case V.SPACE:return" ";case V.NEWLINE:case V.MANDATORY_NEWLINE:return`
774
- `;case V.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return t}}}const vY=e=>e===V.SPACE||e===V.SINGLE_INDENT,UY=e=>e===V.SPACE||e===V.SINGLE_INDENT||e===V.NEWLINE;function QT(e,t){if(t==="standard")return e;let n=[];return e.length>=10&&e.includes(" ")&&([e,...n]=e.split(" ")),t==="tabularLeft"?e=e.padEnd(9," "):e=e.padStart(9," "),e+["",...n].join(" ")}function ZT(e){return a2(e)||e===$.RESERVED_CLAUSE||e===$.RESERVED_SELECT||e===$.RESERVED_SET_OPERATION||e===$.RESERVED_JOIN||e===$.LIMIT}const bl="top-level",wY="block-level";class $h{constructor(t){this.indent=t,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(bl)}increaseBlockLevel(){this.indentTypes.push(wY)}decreaseTopLevel(){this.indentTypes.length>0&&qr(this.indentTypes)===bl&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===bl;);}}class BY extends Vh{constructor(t){super(new $h("")),this.expressionWidth=t,this.length=0,this.trailingSpace=!1}add(...t){if(t.forEach(n=>this.addToLength(n)),this.length>this.expressionWidth)throw new Ac;super.add(...t)}addToLength(t){if(typeof t=="string")this.length+=t.length,this.trailingSpace=!1;else{if(t===V.MANDATORY_NEWLINE||t===V.NEWLINE)throw new Ac;t===V.INDENT||t===V.SINGLE_INDENT||t===V.SPACE?this.trailingSpace||(this.length++,this.trailingSpace=!0):(t===V.NO_NEWLINE||t===V.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}}}class Ac extends Error{}class hi{constructor({cfg:t,dialectCfg:n,params:r,layout:o,inline:s=!1}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=t,this.dialectCfg=n,this.inline=s,this.params=r,this.layout=o}format(t){for(this.nodes=t,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(t){this.formatComments(t.leadingComments),this.formatNodeWithoutComments(t),this.formatComments(t.trailingComments)}formatNodeWithoutComments(t){switch(t.type){case ne.function_call:return this.formatFunctionCall(t);case ne.parameterized_data_type:return this.formatParameterizedDataType(t);case ne.array_subscript:return this.formatArraySubscript(t);case ne.property_access:return this.formatPropertyAccess(t);case ne.parenthesis:return this.formatParenthesis(t);case ne.between_predicate:return this.formatBetweenPredicate(t);case ne.case_expression:return this.formatCaseExpression(t);case ne.case_when:return this.formatCaseWhen(t);case ne.case_else:return this.formatCaseElse(t);case ne.clause:return this.formatClause(t);case ne.set_operation:return this.formatSetOperation(t);case ne.limit_clause:return this.formatLimitClause(t);case ne.all_columns_asterisk:return this.formatAllColumnsAsterisk(t);case ne.literal:return this.formatLiteral(t);case ne.identifier:return this.formatIdentifier(t);case ne.parameter:return this.formatParameter(t);case ne.operator:return this.formatOperator(t);case ne.comma:return this.formatComma(t);case ne.line_comment:return this.formatLineComment(t);case ne.block_comment:return this.formatBlockComment(t);case ne.disable_comment:return this.formatBlockComment(t);case ne.data_type:return this.formatDataType(t);case ne.keyword:return this.formatKeywordNode(t)}}formatFunctionCall(t){this.withComments(t.nameKw,()=>{this.layout.add(this.showFunctionKw(t.nameKw))}),this.formatNode(t.parenthesis)}formatParameterizedDataType(t){this.withComments(t.dataType,()=>{this.layout.add(this.showDataType(t.dataType))}),this.formatNode(t.parenthesis)}formatArraySubscript(t){let n;switch(t.array.type){case ne.data_type:n=this.showDataType(t.array);break;case ne.keyword:n=this.showKw(t.array);break;default:n=this.showIdentifier(t.array);break}this.withComments(t.array,()=>{this.layout.add(n)}),this.formatNode(t.parenthesis)}formatPropertyAccess(t){this.formatNode(t.object),this.layout.add(V.NO_SPACE,t.operator),this.formatNode(t.property)}formatParenthesis(t){const n=this.formatInlineExpression(t.children);n?(this.layout.add(t.openParen),this.layout.add(...n.getLayoutItems()),this.layout.add(V.NO_SPACE,t.closeParen,V.SPACE)):(this.layout.add(t.openParen,V.NEWLINE),qn(this.cfg)?(this.layout.add(V.INDENT),this.layout=this.formatSubExpression(t.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(V.INDENT),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(V.NEWLINE,V.INDENT,t.closeParen,V.SPACE))}formatBetweenPredicate(t){this.layout.add(this.showKw(t.betweenKw),V.SPACE),this.layout=this.formatSubExpression(t.expr1),this.layout.add(V.NO_SPACE,V.SPACE,this.showNonTabularKw(t.andKw),V.SPACE),this.layout=this.formatSubExpression(t.expr2),this.layout.add(V.SPACE)}formatCaseExpression(t){this.formatNode(t.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(t.expr),this.layout=this.formatSubExpression(t.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(V.NEWLINE,V.INDENT),this.formatNode(t.endKw)}formatCaseWhen(t){this.layout.add(V.NEWLINE,V.INDENT),this.formatNode(t.whenKw),this.layout=this.formatSubExpression(t.condition),this.formatNode(t.thenKw),this.layout=this.formatSubExpression(t.result)}formatCaseElse(t){this.layout.add(V.NEWLINE,V.INDENT),this.formatNode(t.elseKw),this.layout=this.formatSubExpression(t.result)}formatClause(t){this.isOnelineClause(t)?this.formatClauseInOnelineStyle(t):qn(this.cfg)?this.formatClauseInTabularStyle(t):this.formatClauseInIndentedStyle(t)}isOnelineClause(t){return qn(this.cfg)?this.dialectCfg.tabularOnelineClauses[t.nameKw.text]:this.dialectCfg.onelineClauses[t.nameKw.text]}formatClauseInIndentedStyle(t){this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t.nameKw),V.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(V.INDENT),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(t){this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t.nameKw),V.SPACE),this.layout=this.formatSubExpression(t.children)}formatClauseInTabularStyle(t){this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t.nameKw),V.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(t){this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t.nameKw),V.NEWLINE),this.layout.add(V.INDENT),this.layout=this.formatSubExpression(t.children)}formatLimitClause(t){this.withComments(t.limitKw,()=>{this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t.limitKw))}),this.layout.indentation.increaseTopLevel(),qn(this.cfg)?this.layout.add(V.SPACE):this.layout.add(V.NEWLINE,V.INDENT),t.offset?(this.layout=this.formatSubExpression(t.offset),this.layout.add(V.NO_SPACE,",",V.SPACE),this.layout=this.formatSubExpression(t.count)):this.layout=this.formatSubExpression(t.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(t){this.layout.add("*",V.SPACE)}formatLiteral(t){this.layout.add(t.text,V.SPACE)}formatIdentifier(t){this.layout.add(this.showIdentifier(t),V.SPACE)}formatParameter(t){this.layout.add(this.params.get(t),V.SPACE)}formatOperator({text:t}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(t)?this.layout.add(V.NO_SPACE,t):t===":"?this.layout.add(V.NO_SPACE,t,V.SPACE):this.layout.add(t,V.SPACE)}formatComma(t){this.inline?this.layout.add(V.NO_SPACE,",",V.SPACE):this.layout.add(V.NO_SPACE,",",V.NEWLINE,V.INDENT)}withComments(t,n){this.formatComments(t.leadingComments),n(),this.formatComments(t.trailingComments)}formatComments(t){t&&t.forEach(n=>{n.type===ne.line_comment?this.formatLineComment(n):this.formatBlockComment(n)})}formatLineComment(t){_l(t.precedingWhitespace||"")?this.layout.add(V.NEWLINE,V.INDENT,t.text,V.MANDATORY_NEWLINE,V.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(V.NO_NEWLINE,V.SPACE,t.text,V.MANDATORY_NEWLINE,V.INDENT):this.layout.add(t.text,V.MANDATORY_NEWLINE,V.INDENT)}formatBlockComment(t){t.type===ne.block_comment&&this.isMultilineBlockComment(t)?(this.splitBlockComment(t.text).forEach(n=>{this.layout.add(V.NEWLINE,V.INDENT,n)}),this.layout.add(V.NEWLINE,V.INDENT)):this.layout.add(t.text,V.SPACE)}isMultilineBlockComment(t){return _l(t.text)||_l(t.precedingWhitespace||"")}isDocComment(t){const n=t.split(/\n/);return/^\/\*\*?$/.test(n[0])&&n.slice(1,n.length-1).every(r=>/^\s*\*/.test(r))&&/^\s*\*\/$/.test(qr(n))}splitBlockComment(t){return this.isDocComment(t)?t.split(/\n/).map(n=>/^\s*\*/.test(n)?" "+n.replace(/^\s*/,""):n):t.split(/\n/).map(n=>n.replace(/^\s*/,""))}formatSubExpression(t){return new hi({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(t)}formatInlineExpression(t){const n=this.params.getPositionalParameterIndex();try{return new hi({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new BY(this.cfg.expressionWidth),inline:!0}).format(t)}catch(r){if(r instanceof Ac){this.params.setPositionalParameterIndex(n);return}else throw r}}formatKeywordNode(t){switch(t.tokenType){case $.RESERVED_JOIN:return this.formatJoin(t);case $.AND:case $.OR:case $.XOR:return this.formatLogicalOperator(t);default:return this.formatKeyword(t)}}formatJoin(t){qn(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t),V.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t),V.SPACE)}formatKeyword(t){this.layout.add(this.showKw(t),V.SPACE)}formatLogicalOperator(t){this.cfg.logicalOperatorNewline==="before"?qn(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t),V.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(V.NEWLINE,V.INDENT,this.showKw(t),V.SPACE):this.layout.add(this.showKw(t),V.NEWLINE,V.INDENT)}formatDataType(t){this.layout.add(this.showDataType(t),V.SPACE)}showKw(t){return ZT(t.tokenType)?QT(this.showNonTabularKw(t),this.cfg.indentStyle):this.showNonTabularKw(t)}showNonTabularKw(t){switch(this.cfg.keywordCase){case"preserve":return ks(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}showFunctionKw(t){return ZT(t.tokenType)?QT(this.showNonTabularFunctionKw(t),this.cfg.indentStyle):this.showNonTabularFunctionKw(t)}showNonTabularFunctionKw(t){switch(this.cfg.functionCase){case"preserve":return ks(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}showIdentifier(t){if(t.quoted)return t.text;switch(this.cfg.identifierCase){case"preserve":return t.text;case"upper":return t.text.toUpperCase();case"lower":return t.text.toLowerCase()}}showDataType(t){switch(this.cfg.dataTypeCase){case"preserve":return ks(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}}class FY{constructor(t,n){this.dialect=t,this.cfg=n,this.params=new RY(this.cfg.params)}format(t){const n=this.parse(t);return this.formatAst(n).trimEnd()}parse(t){return PY(this.dialect.tokenizer).parse(t,this.cfg.paramTypes||{})}formatAst(t){return t.map(n=>this.formatStatement(n)).join(`
775
- `.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(t){const n=new hi({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new Vh(new $h(SY(this.cfg)))}).format(t.children);return t.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?n.add(V.NEWLINE,";"):n.add(V.NO_NEWLINE,";")),n.toString()}}class Ys extends Error{}function GY(e){const t=["multilineLists","newlineBeforeOpenParen","newlineBeforeCloseParen","aliasAs","commaPosition","tabulateAlias"];for(const n of t)if(n in e)throw new Ys(`${n} config is no more supported.`);if(e.expressionWidth<=0)throw new Ys(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!HY(e.params)&&console.warn('WARNING: All "params" option values should be strings.'),e.paramTypes&&!kY(e.paramTypes))throw new Ys("Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.");return e}function HY(e){return(e instanceof Array?e:Object.values(e)).every(n=>typeof n=="string")}function kY(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(t=>t.regex!==""):!0}var jY=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};const Xh={bigquery:"bigquery",clickhouse:"clickhouse",db2:"db2",db2i:"db2i",duckdb:"duckdb",hive:"hive",mariadb:"mariadb",mysql:"mysql",n1ql:"n1ql",plsql:"plsql",postgresql:"postgresql",redshift:"redshift",spark:"spark",sqlite:"sqlite",sql:"sql",tidb:"tidb",trino:"trino",transactsql:"transactsql",tsql:"transactsql",singlestoredb:"singlestoredb",snowflake:"snowflake"},YY=Object.keys(Xh),WY={tabWidth:2,useTabs:!1,keywordCase:"preserve",identifierCase:"preserve",dataTypeCase:"preserve",functionCase:"preserve",indentStyle:"standard",logicalOperatorNewline:"before",expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},VY=(e,t={})=>{if(typeof t.language=="string"&&!YY.includes(t.language))throw new Ys(`Unsupported SQL dialect: ${t.language}`);const n=Xh[t.language||"sql"];return $Y(e,Object.assign(Object.assign({},t),{dialect:Qj[n]}))},$Y=(e,t)=>{var{dialect:n}=t,r=jY(t,["dialect"]);if(typeof e!="string")throw new Error("Invalid query argument. Expected string, instead got "+typeof e);const o=GY(Object.assign(Object.assign({},WY),r));return new FY(uY(n),o).format(e)};function Jt({cell:e,t,onRun:n,onMoveUp:r,onMoveDown:o,onDelete:s,children:a}){const[l,c]=S.useState(!1),d=Jh(e,t),E=zh[e.type]??t.accent,u=e.name?i.jsx("span",{style:{color:t.textSecondary,fontSize:12,fontFamily:t.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:200},children:e.name}):void 0,T=l?i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[n&&i.jsx(ht,{title:"Run cell (Shift+Enter)",onClick:n,t,accent:!0,children:i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})})}),i.jsx(ht,{title:"Move up",onClick:r,t,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1-1.06 1.06L8.75 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"})})}),i.jsx(ht,{title:"Move down",onClick:o,t,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M12.53 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L2.97 9.28a.75.75 0 0 1 1.06-1.06l2.72 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.72-2.97a.75.75 0 0 1 1.06 0Z"})})}),i.jsx(ht,{title:"Delete cell",onClick:s,t,danger:!0,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"})})})]}):void 0;return i.jsx(mR,{typeLabel:Kh[e.type]??e.type.toUpperCase(),typeColor:E,accent:d,idleBorder:t.cellBorder,background:t.cellBg,headerBackground:`${t.tableHeaderBg}80`,active:l||e.status!=="idle",title:u,actions:T,status:i.jsx(qh,{cell:e,t}),onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),children:a})}const Kh={sql:"SQL",markdown:"MD",dql:"DQL",param:"PARAM",chart:"CHART",pivot:"PIVOT",single_value:"SINGLE VALUE",filter:"FILTER",table:"TABLE",map:"MAP",writeback:"WRITEBACK",python:"PYTHON",chat:"CHAT"};function $e(e,t){return typeof window>"u"?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}function XY(){return{sql:$e("--cell-sql","#3b8ef0"),markdown:$e("--cell-md","#2fb97a"),dql:$e("--cell-insight","#ffc857"),param:$e("--cell-inputs","#9aa0ae"),chart:$e("--cell-chart","#b067f7"),pivot:$e("--cell-pivot","#e5a84d"),single_value:$e("--cell-single","#b067f7"),filter:$e("--cell-filter","#f26a6a"),table:$e("--cell-table","#5dd1c8"),map:$e("--cell-goal","#61d095"),writeback:$e("--cell-callout","#ff7ac6"),python:$e("--cell-sql","#3b8ef0"),chat:$e("--cell-chat","#8a8f9b")}}const zh=new Proxy({},{get(e,t){return XY()[t]}}),KY={map:{title:"Map",subtitle:"Geospatial visualization — lat/lon points and choropleths from an upstream dataframe. Lands in v0.11 on the dql-compiler geo pipeline.",color:"#7ce38b",badge:"v0.11"},writeback:{title:"Writeback",subtitle:"Governed output sink — writes a dataframe back to your warehouse with block tests gating the commit. Lands in v0.11.",color:"#d2a8ff",badge:"v0.11"},python:{title:"Python",subtitle:"Python cell via Pyodide sidecar.",color:"#3572a5",badge:"v0.11"}};function Jh(e,t){if(e.blockBinding)return e.blockBinding.state==="forked"?t.warning:t.success;switch(e.status){case"running":return t.cellBorderRunning;case"success":return t.success;case"error":return t.error;default:return t.cellBorder}}function qh({cell:e,t}){var s;const{status:n}=e;if(n==="idle"&&e.executionCount===void 0)return null;let r=t.textMuted,o="";if(n==="running")r=t.cellBorderRunning,o="Running…";else if(n==="error")r=t.error,o="Error";else if(e.executionCount!==void 0)if(r=t.success,((s=e.result)==null?void 0:s.executionTime)!==void 0){const a=e.result.executionTime;o=a<1e3?`${Math.max(1,Math.round(a))}ms`:`${(a/1e3).toFixed(1)}s`}else o=`[${e.executionCount}]`;return i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:10,fontFamily:t.font,color:t.textMuted,flexShrink:0},children:[i.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:r,boxShadow:n==="running"?`0 0 0 3px ${r}33`:void 0,animation:n==="running"?"pulse 1.2s ease-in-out infinite":void 0,flexShrink:0}}),o,i.jsx("style",{children:"@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }"})]})}function zY(e){if(!/^\s*block\s+"/i.test(e.trim()))return null;const t=o=>{var s;return((s=e.match(new RegExp(`\\b${o}\\s*=\\s*"([^"]*)"`,"i")))==null?void 0:s[1])??""},n=e.match(/\btags\s*=\s*\[([^\]]*)\]/i),r=n?(n[1].match(/"([^"]*)"/g)??[]).map(o=>o.slice(1,-1)):[];return{domain:t("domain"),owner:t("owner"),description:t("description"),blockType:t("type")||"custom",tags:r}}function Pl(e,t,n){const r=new RegExp(`(\\b${t}\\s*=\\s*)"[^"]*"`,"i");return r.test(e)?e.replace(r,`$1"${n.replace(/"/g,'\\"')}"`):e}function JY(e,t){const n=t.map(o=>`"${o}"`).join(", "),r=/(\btags\s*=\s*)\[[^\]]*\]/i;return r.test(e)?e.replace(r,`$1[${n}]`):e}function qY({binding:e,t,onRevert:n,onUnbind:r}){const o=e.state==="forked",s=o?t.warning:t.success,a=o?"FORKED":"BOUND",l=o?"Local edits have diverged from the block file — Revert to discard, or Save as Block to promote as a new version.":"This cell mirrors the block file. Edit to fork locally.";return i.jsxs("div",{title:l,style:{display:"flex",alignItems:"center",gap:8,padding:"4px 10px",borderBottom:`1px solid ${t.cellBorder}`,background:`${s}10`,fontFamily:t.fontMono,fontSize:11},children:[i.jsx("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.08em",color:s,background:`${s}24`,border:`1px solid ${s}55`,borderRadius:3,padding:"1px 5px"},children:a}),i.jsx("span",{style:{color:t.textSecondary},children:e.path}),e.version&&i.jsxs("span",{style:{color:t.textMuted},children:["· v",e.version]}),!o&&i.jsx("span",{title:"Bound cells track the block file — edits fork locally",style:{color:t.textMuted},children:"🔒"}),i.jsx("div",{style:{flex:1}}),o&&i.jsx("button",{onClick:n,title:"Discard local edits and restore the block file body",style:ef(t,s),children:"Revert"}),i.jsx("button",{onClick:r,title:"Detach this cell from the block file",style:ef(t,t.btnBorder),children:"Unbind"})]})}function ef(e,t){return{background:"transparent",border:`1px solid ${t}`,borderRadius:4,color:e.textSecondary,fontSize:10,fontFamily:e.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer"}}function QY({content:e,onChange:t,t:n}){const r=zY(e);if(!r)return null;const o={background:n.editorBg,border:`1px solid ${n.cellBorder}`,borderRadius:3,color:n.textSecondary,fontSize:11,fontFamily:n.fontMono,padding:"2px 6px",outline:"none"},s={fontSize:9,fontWeight:700,color:n.textMuted,fontFamily:n.font,letterSpacing:"0.05em",textTransform:"uppercase",marginRight:4,flexShrink:0},a={display:"flex",alignItems:"center",gap:4};return i.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 12px",padding:"5px 10px",borderBottom:`1px solid ${n.cellBorder}`,background:`${n.tableHeaderBg}40`},children:[i.jsxs("div",{style:a,children:[i.jsx("span",{style:s,children:"domain"}),i.jsx("input",{style:{...o,width:80},value:r.domain,placeholder:"e.g. finance",onChange:l=>t(Pl(e,"domain",l.target.value))})]}),i.jsxs("div",{style:a,children:[i.jsx("span",{style:s,children:"owner"}),i.jsx("input",{style:{...o,width:90},value:r.owner,placeholder:"e.g. data-team",onChange:l=>t(Pl(e,"owner",l.target.value))})]}),i.jsxs("div",{style:a,children:[i.jsx("span",{style:s,children:"tags"}),i.jsx("input",{style:{...o,width:110},value:r.tags.join(", "),placeholder:"revenue, kpi",onChange:l=>{const c=l.target.value.split(",").map(d=>d.trim()).filter(Boolean);t(JY(e,c))}})]}),i.jsxs("div",{style:{...a,flex:1},children:[i.jsx("span",{style:s,children:"description"}),i.jsx("input",{style:{...o,flex:1,minWidth:120},value:r.description,placeholder:"What this block measures",onChange:l=>t(Pl(e,"description",l.target.value))})]})]})}const ZY=new Set(["sql","dql","param","writeback","python","chat"]);function eW({cell:e,index:t}){var se;const{state:n,dispatch:r}=fe(),o=ie[n.themeMode],{executeCell:s,executeDependents:a,cancelCell:l}=Hi(),[c,d]=S.useState(!1),[E,u]=S.useState(!1),[T,f]=S.useState(e.name??""),[h,A]=S.useState(!0),[R,p]=S.useState("table"),[N,I]=S.useState(null),[O,C]=S.useState(!1),[m,g]=S.useState(!1),[y,x]=S.useState(!1),w=S.useMemo(()=>y?TM(e,n.cells):null,[y,e,n.cells]),D=e.type==="sql"||e.type==="dql"||e.type==="chart"||e.type==="pivot"||e.type==="single_value"||e.type==="filter"||e.type==="table",U=Jh(e,o),F=e.type!=="markdown"&&e.type!=="param",_=S.useRef(null),B=S.useRef(e.content),[b,P]=S.useState(!1),M=S.useMemo(()=>n.schemaTables.length>0?Object.fromEntries(n.schemaTables.map(W=>[W.name,W.columns.map(ae=>ae.name)])):void 0,[n.schemaTables]);S.useEffect(()=>{if(e.status==="success"&&e.result){const W=io(e.result,e.chartConfig);I(W!=="table"?W:null),p(W!=="table"?"chart":"table")}},[e.status,e.result,e.chartConfig]);const L=S.useCallback(()=>{F&&s(e.id)},[e.id,s,F]),v=S.useCallback(W=>{const ae={content:W},Te=e.blockBinding;if((Te==null?void 0:Te.originalContent)!==void 0){const ee=W.trim()!==Te.originalContent.trim()?"forked":"bound";ee!==Te.state&&(ae.blockBinding={...Te,state:ee})}r({type:"UPDATE_CELL",id:e.id,updates:ae}),P(W!==B.current)},[e.id,e.blockBinding,r]),G=S.useCallback(()=>{var ae;const W=B.current;r({type:"UPDATE_CELL",id:e.id,updates:{content:W}}),(ae=_.current)==null||ae.resetTo(W),P(!1)},[e.id,r]),k=S.useCallback(()=>{if(e.content.trim())try{const W=VY(e.content,{language:"sql",tabWidth:2,keywordCase:"upper",linesBetweenQueries:1});r({type:"UPDATE_CELL",id:e.id,updates:{content:W}})}catch{}},[e.content,e.id,r]),q=S.useCallback(()=>{k(),setTimeout(()=>s(e.id),80)},[k,s,e.id]),K=S.useCallback(W=>r({type:"UPDATE_CELL",id:e.id,updates:W}),[r,e.id]),j=()=>{r({type:"DELETE_CELL",id:e.id})},z=()=>{r({type:"MOVE_CELL",id:e.id,direction:"up"})},Q=()=>{r({type:"MOVE_CELL",id:e.id,direction:"down"})},X={cell:e,t:o,onMoveUp:z,onMoveDown:Q,onDelete:j};if(n.appMode!=="studio"&&ZY.has(e.type))return i.jsxs("div",{style:{marginTop:8,marginBottom:8,padding:"6px 10px",borderRadius:6,border:`1px dashed ${o.cellBorder}`,background:o.cellBg,color:o.textMuted,fontSize:11,fontFamily:o.font,display:"flex",alignItems:"center",gap:8},children:[i.jsx("span",{style:{opacity:.7},children:"◎"}),i.jsxs("span",{children:[e.type.toUpperCase()," cell hidden in App view",e.name?` · ${e.name}`:""]})]});if(e.type==="param")return i.jsx(Jt,{...X,onRun:()=>a(e.id),children:i.jsx(rD,{cell:e,themeMode:n.themeMode,onApplyParam:a})});if(e.type==="pivot")return i.jsx(Jt,{...X,children:i.jsx(zD,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});if(e.type==="single_value")return i.jsx(Jt,{...X,children:i.jsx($D,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});if(e.type==="filter")return i.jsx(Jt,{...X,children:i.jsx(HD,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});if(e.type==="chart")return i.jsx(Jt,{...X,children:i.jsx(wD,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});if(e.type==="table")return i.jsx(Jt,{...X,children:i.jsx(qD,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});if(e.type==="chat")return i.jsx(Jt,{...X,children:i.jsx(tM,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:K})});const Z=KY[e.type];if(Z)return i.jsx(Jt,{...X,children:i.jsx(oD,{cell:e,themeMode:n.themeMode,title:Z.title,subtitle:Z.subtitle,color:Z.color,badge:Z.badge})});const le=()=>{u(!1),r({type:"UPDATE_CELL",id:e.id,updates:{name:T.trim()||void 0}})},re=(e.result||e.error)&&e.type!=="markdown";return e.result&&io(e.result,e.chartConfig),i.jsxs("div",{onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),style:{display:"flex",gap:0,marginBottom:2},children:[y&&w&&i.jsx(Rp,{cell:e,initialContent:w.derivedFromUpstream?w.content:void 0,initialName:w.suggestedName,initialDescription:w.suggestedDescription,onClose:()=>x(!1),onSaved:({path:W,name:ae})=>{r({type:"FILE_ADDED",file:{name:ae,path:W,type:"block",folder:"blocks"}})}}),i.jsxs("div",{style:{flex:1,minWidth:0,borderRadius:8,border:`1px solid ${c||e.status!=="idle"?U:o.cellBorder}`,background:o.cellBg,boxShadow:e.status!=="idle"?`0 0 0 3px ${U}14, 0 1px 2px rgba(0,0,0,0.04)`:"0 1px 2px rgba(0,0,0,0.02)",overflow:"hidden",transition:"border-color 0.2s"},children:[i.jsxs("div",{style:{minHeight:32,display:"flex",alignItems:"center",padding:"8px 14px",gap:8,background:"transparent"},children:[i.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:zh[e.type]??o.accent,flexShrink:0}}),i.jsx("span",{title:e.type==="dql"?"DQL cell — write a governed block (type, owner, description, tests) or use @metric()/@dim() refs":e.type==="sql"?"SQL cell — write raw SQL, reference other cells with {{name}}":void 0,style:{fontSize:11,fontWeight:500,letterSpacing:"0.2px",color:o.textSecondary,flexShrink:0,whiteSpace:"nowrap"},children:Kh[e.type]}),c&&(e.type==="sql"||e.type==="dql")&&i.jsx(lM,{themeMode:n.themeMode,cellType:e.type,onInsert:W=>v(W)}),c&&(e.type==="sql"||e.type==="dql")&&i.jsx("button",{title:"Format SQL (clean up whitespace & keywords)",onClick:k,style:{background:"transparent",border:`1px solid ${o.btnBorder}`,borderRadius:4,color:o.textMuted,fontSize:10,fontFamily:o.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer",transition:"color 0.15s, border-color 0.15s"},onMouseEnter:W=>{W.currentTarget.style.color=o.textSecondary,W.currentTarget.style.borderColor=o.accent},onMouseLeave:W=>{W.currentTarget.style.color=o.textMuted,W.currentTarget.style.borderColor=o.btnBorder},children:"Format"}),b&&(e.type==="sql"||e.type==="dql")&&i.jsx("button",{title:"Reset to last saved version (discard changes)",onClick:G,style:{background:"transparent",border:`1px solid ${o.btnBorder}`,borderRadius:4,color:o.error,fontSize:10,fontFamily:o.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer",transition:"color 0.15s, border-color 0.15s"},onMouseEnter:W=>{W.currentTarget.style.borderColor=o.error},onMouseLeave:W=>{W.currentTarget.style.borderColor=o.btnBorder},children:"↺ Reset"}),c&&D&&i.jsx("button",{title:"Save this cell as a reusable block",onClick:()=>x(!0),style:{background:"transparent",border:`1px solid ${o.btnBorder}`,borderRadius:4,color:o.textMuted,fontSize:10,fontFamily:o.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer",transition:"color 0.15s, border-color 0.15s"},onMouseEnter:W=>{W.currentTarget.style.color=o.textSecondary,W.currentTarget.style.borderColor=o.accent},onMouseLeave:W=>{W.currentTarget.style.color=o.textMuted,W.currentTarget.style.borderColor=o.btnBorder},children:"Save as Block"}),(e.type==="sql"||e.type==="dql")&&i.jsx(iD,{cells:n.cells,index:t,content:e.content,themeMode:n.themeMode,onInsertHandle:W=>{const ae=`{{${W}}}`,Te=e.content??"";if(Te.includes(ae))return;const ce=Te.trim().length===0?`SELECT * FROM ${ae}`:`${Te.replace(/\s*$/,"")} ${ae}`;v(ce)}}),E?i.jsx("input",{autoFocus:!0,value:T,onChange:W=>f(W.target.value),onBlur:le,onKeyDown:W=>{W.key==="Enter"&&le(),W.key==="Escape"&&u(!1)},style:{background:"transparent",border:`1px solid ${o.cellBorderActive}`,borderRadius:4,color:o.textSecondary,fontSize:12,fontFamily:o.fontMono,padding:"1px 6px",outline:"none",width:140}}):e.name&&i.jsx("span",{onClick:()=>{f(e.name??""),u(!0)},title:"Click to rename",style:{color:o.textSecondary,fontSize:12,fontFamily:o.fontMono,cursor:"text",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:200},children:e.name}),i.jsx("div",{style:{flex:1}}),i.jsx(qh,{cell:e,t:o}),c&&i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[!e.name&&!E&&i.jsx(ht,{title:"Name this cell",onClick:()=>{f(""),u(!0)},t:o,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})})}),F&&e.status==="running"?i.jsx(ht,{title:"Cancel execution",onClick:()=>l(e.id),t:o,danger:!0,children:i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("rect",{x:"2",y:"2",width:"6",height:"6",rx:"1"})})}):F?i.jsx(ht,{title:"Run cell (Shift+Enter)",onClick:L,t:o,accent:!0,children:i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})})}):null,i.jsx(ht,{title:"Move up",onClick:z,t:o,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1-1.06 1.06L8.75 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"})})}),i.jsx(ht,{title:"Move down",onClick:Q,t:o,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M12.53 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L2.97 9.28a.75.75 0 0 1 1.06-1.06l2.72 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.72-2.97a.75.75 0 0 1 1.06 0Z"})})}),i.jsx(ht,{title:"Delete cell",onClick:j,t:o,danger:!0,children:i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"})})})]})]}),e.type==="dql"&&i.jsx(QY,{content:e.content,onChange:v,t:o}),e.blockBinding&&i.jsx(qY,{binding:e.blockBinding,t:o,onRevert:async()=>{var ae;const W=e.blockBinding;if(W)try{const Te=await J.openBlockStudio(W.path),ce=qc(Te.source)??Te.source;r({type:"UPDATE_CELL",id:e.id,updates:{content:ce,blockBinding:{...W,state:"bound",originalContent:ce}}}),(ae=_.current)==null||ae.resetTo(ce)}catch(Te){console.error("Failed to revert bound cell",Te)}},onUnbind:()=>{r({type:"UPDATE_CELL",id:e.id,updates:{blockBinding:void 0}})}}),e.type==="markdown"?i.jsx(nD,{value:e.content,onChange:v,themeMode:n.themeMode}):i.jsx(rd,{value:e.content,onChange:v,onRun:L,themeMode:n.themeMode,schema:M,errorMessage:e.status==="error"?e.error:void 0,editorRef:_}),re&&i.jsxs("div",{style:{borderTop:`1px solid ${o.cellBorder}`},children:[i.jsxs("div",{style:{height:28,display:"flex",alignItems:"center",padding:"0 12px",gap:10,borderBottom:e.result&&h?`1px solid ${o.cellBorder}`:"none",background:`${o.tableHeaderBg}60`},children:[e.result&&i.jsxs("span",{style:{fontSize:11,fontFamily:o.font,color:o.textMuted},children:[(e.result.rowCount??e.result.rows.length).toLocaleString()," rows",e.result.executionTime!==void 0&&i.jsxs(i.Fragment,{children:[" · ",e.result.executionTime<1e3?`${e.result.executionTime}ms`:`${(e.result.executionTime/1e3).toFixed(2)}s`]})]}),e.fromSnapshot&&e.result&&i.jsx("span",{title:"Result loaded from the last saved run; re-run to refresh.",style:{fontSize:10,fontFamily:o.font,color:o.textMuted,border:`1px solid ${o.btnBorder}`,borderRadius:3,padding:"0 6px",lineHeight:"16px"},children:"cached"}),e.error&&i.jsx("span",{style:{fontSize:11,fontFamily:o.font,color:o.error},children:"Error"}),i.jsx("div",{style:{flex:1}}),e.result&&h&&i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3,position:"relative"},children:[i.jsx("button",{onClick:()=>{p("table"),C(!1)},style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${R==="table"?o.accent:o.btnBorder}`,background:R==="table"?`${o.accent}20`:"transparent",color:R==="table"?o.accent:o.textMuted,cursor:"pointer",transition:"all 0.15s"},children:"Table"}),i.jsxs("div",{style:{position:"relative"},children:[i.jsxs("button",{onClick:()=>{R==="chart"&&O?C(!1):(p("chart"),C(W=>!W))},style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${R==="chart"?o.accent:o.btnBorder}`,background:R==="chart"?`${o.accent}20`:"transparent",color:R==="chart"?o.accent:o.textMuted,cursor:"pointer",transition:"all 0.15s",display:"flex",alignItems:"center",gap:3},children:[N?((se=ki.find(W=>W.value===N))==null?void 0:se.label)??"Chart":"Chart",i.jsx("svg",{width:"6",height:"6",viewBox:"0 0 8 8",fill:"currentColor",children:i.jsx("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",fill:"none",strokeWidth:"1.2",strokeLinecap:"round"})})]}),O&&i.jsx(tW,{selected:N,onSelect:W=>{I(W),p("chart"),C(!1)},onClose:()=>C(!1),t:o})]}),R==="chart"&&i.jsx("button",{onClick:()=>g(W=>!W),title:"Chart configuration",style:{padding:"1px 5px",fontSize:11,borderRadius:3,cursor:"pointer",border:`1px solid ${m?o.accent:o.btnBorder}`,background:m?`${o.accent}20`:"transparent",color:m?o.accent:o.textMuted,transition:"all 0.15s",display:"flex",alignItems:"center"},children:i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.386.506.798.704 1.23.315.698.043 1.44-.476 1.89l-.815.806a.338.338 0 0 0-.079.262c.02.267.02.538 0 .805a.338.338 0 0 0 .079.262l.815.806c.52.45.79 1.192.476 1.89a7.22 7.22 0 0 1-.704 1.23c-.428.609-1.176.806-1.82.63l-1.103-.303c-.066-.019-.176-.011-.299.071a5.09 5.09 0 0 1-.668.386c-.133.066-.194.158-.212.224l-.288 1.107c-.169.645-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.29-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.09 5.09 0 0 1-.668-.387c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a7.12 7.12 0 0 1-.704-1.23c-.315-.698-.043-1.44.476-1.89l.815-.806a.338.338 0 0 0 .079-.262 6.08 6.08 0 0 1 0-.805.338.338 0 0 0-.079-.262l-.815-.806c-.52-.45-.79-1.192-.476-1.89a7.22 7.22 0 0 1 .704-1.23c.428-.609 1.176-.806 1.82-.63l1.103.303c.066.019.176.011.299-.071.214-.143.437-.272.668-.386.133-.066.194-.158.212-.224L6.54 1.29C6.71.645 7.256.095 7.999.031 8.236.01 8.474 0 8.713 0H8ZM8 5a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z"})})})]}),i.jsxs("button",{onClick:()=>A(W=>!W),style:{background:"transparent",border:"none",cursor:"pointer",color:o.textMuted,fontSize:11,fontFamily:o.font,padding:"2px 4px",display:"flex",alignItems:"center",gap:4},children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:h?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:i.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})}),h?"Hide":"Show"]})]}),h&&i.jsxs(i.Fragment,{children:[e.error&&i.jsx(RM,{message:e.error,themeMode:n.themeMode,onFix:F?q:void 0,schemaTables:n.schemaTables}),e.result&&!e.error&&(R==="chart"&&N?i.jsxs(i.Fragment,{children:[Yi(N,e.result,n.themeMode,e.chartConfig),m&&i.jsx(nW,{columns:e.result.columns,chartConfig:e.chartConfig,onChange:W=>r({type:"UPDATE_CELL",id:e.id,updates:{chartConfig:{...e.chartConfig,...W}}}),t:o})]}):i.jsx(yo,{result:e.result,themeMode:n.themeMode}))]})]}),F&&i.jsx(QG,{cellContent:e.content,cellType:e.type,cellName:e.name,themeMode:n.themeMode,t:o,onFocusNode:W=>{r({type:"SET_LINEAGE_FOCUS",nodeId:W}),n.lineageFullscreen||r({type:"TOGGLE_LINEAGE_FULLSCREEN"})}})]})]})}function ht({title:e,onClick:t,children:n,t:r,accent:o,danger:s}){const[a,l]=S.useState(!1);return i.jsx("button",{title:e,onClick:t,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",background:a?s?`${r.error}18`:o?`${r.accent}18`:r.btnHover:"transparent",border:"none",borderRadius:4,cursor:"pointer",color:a?s?r.error:o?r.accent:r.textSecondary:r.textMuted,transition:"all 0.15s",padding:0},children:n})}function tW({selected:e,onSelect:t,onClose:n,t:r}){const[o,s]=S.useState(null);return ye.useEffect(()=>{const a=l=>{setTimeout(()=>n(),0)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[n]),i.jsx("div",{onMouseDown:a=>a.stopPropagation(),style:{position:"absolute",top:24,right:0,zIndex:200,background:r.cellBg,border:`1px solid ${r.cellBorder}`,borderRadius:6,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:4,minWidth:130,maxHeight:280,overflowY:"auto",display:"flex",flexDirection:"column",gap:1},children:ki.map(({value:a,label:l})=>i.jsx("button",{onClick:()=>t(a),onMouseEnter:()=>s(a),onMouseLeave:()=>s(null),style:{background:e===a?`${r.accent}20`:o===a?r.btnHover:"transparent",border:"none",borderRadius:4,cursor:"pointer",color:e===a?r.accent:r.textSecondary,fontSize:11,fontFamily:r.font,fontWeight:e===a?600:400,padding:"4px 10px",textAlign:"left",transition:"background 0.1s"},children:l},a))})}function nW({columns:e,chartConfig:t,onChange:n,t:r}){const o={background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:11,fontFamily:r.fontMono,padding:"3px 6px",outline:"none",minWidth:100,flex:1},s={fontSize:9,fontWeight:700,color:r.textMuted,fontFamily:r.font,letterSpacing:"0.05em",textTransform:"uppercase",minWidth:40,flexShrink:0};return i.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px 16px",padding:"8px 12px",borderTop:`1px solid ${r.cellBorder}`,background:`${r.tableHeaderBg}40`},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:s,children:"X axis"}),i.jsxs("select",{style:o,value:(t==null?void 0:t.x)??"",onChange:a=>n({x:a.target.value||void 0}),children:[i.jsx("option",{value:"",children:"Auto"}),e.map(a=>i.jsx("option",{value:a,children:a},a))]})]}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:s,children:"Y axis"}),i.jsxs("select",{style:o,value:(t==null?void 0:t.y)??"",onChange:a=>n({y:a.target.value||void 0}),children:[i.jsx("option",{value:"",children:"Auto"}),e.map(a=>i.jsx("option",{value:a,children:a},a))]})]}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:s,children:"Color"}),i.jsxs("select",{style:o,value:(t==null?void 0:t.color)??"",onChange:a=>n({color:a.target.value||void 0}),children:[i.jsx("option",{value:"",children:"None"}),e.map(a=>i.jsx("option",{value:a,children:a},a))]})]}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flex:1,minWidth:150},children:[i.jsx("span",{style:s,children:"Title"}),i.jsx("input",{style:{...o,fontFamily:r.font},value:(t==null?void 0:t.title)??"",placeholder:"Chart title",onChange:a=>n({title:a.target.value||void 0})})]})]})}const rW={draft:"#8b949e",review:"#d29922",certified:"#3fb950",deprecated:"#f85149",pending_recertification:"#db6d28"};function oW({themeMode:e,onPick:t,autoFocus:n=!0,compact:r=!0}){const o=ie[e],[s,a]=S.useState([]),[l,c]=S.useState(!0),[d,E]=S.useState(""),[u,T]=S.useState(""),[f,h]=S.useState(""),A=S.useRef(null);S.useEffect(()=>{let O=!1;return c(!0),J.getBlockLibrary().then(C=>{O||a(C.blocks)}).finally(()=>{O||c(!1)}),()=>{O=!0}},[]),S.useEffect(()=>{if(n){const O=setTimeout(()=>{var C;return(C=A.current)==null?void 0:C.focus()},30);return()=>clearTimeout(O)}},[n]);const R=S.useMemo(()=>[...new Set(s.map(O=>O.domain))].sort(),[s]),p=S.useMemo(()=>[...new Set(s.map(O=>O.status))].sort(),[s]),N=S.useMemo(()=>s.filter(O=>{if(d){const C=d.toLowerCase();if(!O.name.toLowerCase().includes(C)&&!O.description.toLowerCase().includes(C))return!1}return!(u&&O.domain!==u||f&&O.status!==f)}),[s,d,u,f]),I={background:o.inputBg,border:`1px solid ${o.inputBorder}`,borderRadius:4,color:o.textPrimary,fontSize:11,fontFamily:o.font,padding:"4px 6px",outline:"none"};return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6,minWidth:r?340:void 0},children:[i.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[i.jsx("input",{ref:A,value:d,onChange:O=>E(O.target.value),placeholder:"Search blocks...",style:{...I,flex:1,padding:"6px 8px"}}),i.jsxs("select",{value:u,onChange:O=>T(O.target.value),style:I,children:[i.jsx("option",{value:"",children:"All domains"}),R.map(O=>i.jsx("option",{value:O,children:O},O))]}),i.jsxs("select",{value:f,onChange:O=>h(O.target.value),style:I,children:[i.jsx("option",{value:"",children:"Any"}),p.map(O=>i.jsx("option",{value:O,children:O},O))]})]}),i.jsx("div",{style:{maxHeight:r?220:420,overflowY:"auto",display:"flex",flexDirection:"column",border:`1px solid ${o.cellBorder}`,borderRadius:4},children:l?i.jsx(tf,{t:o,children:"Loading blocks..."}):N.length===0?i.jsx(tf,{t:o,children:s.length===0?"No blocks yet. Save a cell as a block to get started.":"No blocks match your filters."}):N.map(O=>i.jsx(sW,{block:O,onClick:()=>t(O),t:o,compact:r},O.path))})]})}function tf({children:e,t}){return i.jsx("div",{style:{padding:16,textAlign:"center",fontSize:11,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:e})}function sW({block:e,onClick:t,t:n,compact:r}){const[o,s]=S.useState(!1),a=rW[e.status]??n.textMuted;return i.jsxs("button",{onClick:t,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:o?`${n.accent}14`:"transparent",border:"none",borderBottom:`1px solid ${n.cellBorder}`,cursor:"pointer",padding:r?"8px 10px":"10px 12px",textAlign:"left",fontFamily:n.font},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:3},children:[i.jsx("span",{style:{fontSize:12,fontWeight:600,color:n.textPrimary},children:e.name}),i.jsx("span",{style:{fontSize:9,fontWeight:600,color:a,background:`${a}18`,padding:"1px 6px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:e.status})]}),e.description&&i.jsx("div",{style:{fontSize:11,color:n.textMuted,lineHeight:1.3,marginBottom:3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.description}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:10,color:n.textMuted},children:[i.jsx("span",{style:{background:n.pillBg,padding:"1px 6px",borderRadius:4},children:e.domain||"no domain"}),e.owner&&i.jsxs("span",{children:["by ",e.owner]})]})]})}const iW=[{type:"block",label:"Block",Icon:wR,color:"#6b8afd",group:"library"},{type:"chat",label:"Chat",Icon:py,color:"#8a8f9b",group:"compute"},{type:"sql",label:"SQL",Icon:Ey,color:"#3b8ef0",group:"compute"},{type:"markdown",label:"Text",Icon:RL,color:"#2fb97a",group:"compute"},{type:"chart",label:"Chart",Icon:uy,color:"#b067f7",group:"viz"},{type:"pivot",label:"Pivot",Icon:Ty,color:"#e5a84d",group:"viz"},{type:"single_value",label:"Single value",Icon:fy,color:"#b067f7",group:"viz"},{type:"table",label:"Table",Icon:XL,color:"#5dd1c8",group:"viz"},{type:"param",label:"Inputs",Icon:Sy,color:"#9aa0ae",group:"io"},{type:"filter",label:"Filter",Icon:Ry,color:"#f26a6a",group:"transform"}];function vl({afterId:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],[o,s]=S.useState(!1),[a,l]=S.useState(!1),[c,d]=S.useState(!1),[E,u]=S.useState(!1),T=S.useRef(null);S.useEffect(()=>{if(!a)return;function R(p){T.current&&!T.current.contains(p.target)&&(l(!1),d(!1))}return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[a]);const f=()=>{l(!1),d(!1)},h=R=>{const p=Ke(R);n({type:"ADD_CELL",cell:p,afterId:e}),R==="sql"&&n({type:"SET_SIDEBAR_PANEL",panel:"schema"}),f()},A=async R=>{let p;try{p=await J.openBlockStudio(R.path)}catch(O){console.error("Failed to bind block cell",O),window.alert(`Couldn't load block ${R.path}. Check the console for details.`),f();return}const N=qc(p.source)??p.source,I=Ke("sql",N);I.name=R.name,I.blockBinding={path:R.path,state:"bound",originalContent:N},n({type:"ADD_CELL",cell:I,afterId:e}),f()};return i.jsxs("div",{ref:T,onDragOver:R=>{R.dataTransfer.types.includes(oi)&&(R.preventDefault(),u(!0))},onDragLeave:()=>u(!1),onDrop:R=>{const p=op(R.dataTransfer.getData(oi));if(!p)return;R.preventDefault(),u(!1);const N=Ke("sql",p.reference);n({type:"ADD_CELL",cell:N,afterId:e}),J.trackUsage(p.name),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:p.name}}))},onMouseEnter:()=>s(!0),onMouseLeave:()=>{s(!1),u(!1)},style:{position:"relative",height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:"default"},children:[(o||a||E)&&i.jsxs("button",{onClick:()=>l(R=>!R),style:{position:"relative",zIndex:2,height:22,padding:"0 10px",borderRadius:11,border:`1px solid ${E?r.accent:r.cellBorderActive}`,background:E?`${r.accent}28`:`${r.accent}18`,color:r.accent,cursor:"pointer",fontSize:12,fontFamily:r.font,fontWeight:500,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s"},children:[i.jsx("span",{style:{fontSize:14,lineHeight:1,marginTop:-1},children:"+"}),"Add cell"]}),a&&i.jsxs("div",{style:{position:"absolute",top:26,left:"50%",transform:"translateX(-50%)",zIndex:100,background:r.modalBg,border:`1px solid ${r.cellBorder}`,borderRadius:10,boxShadow:"0 12px 32px rgba(0,0,0,0.35)",padding:10,display:"flex",flexDirection:"column",gap:8,minWidth:760},children:[i.jsx("div",{style:{display:"flex",gap:6,flexWrap:"nowrap",alignItems:"center",justifyContent:"space-between"},children:iW.map(R=>i.jsx(aW,{entry:R,active:R.type==="block"&&c,onClick:()=>{if(R.type==="block"){d(p=>!p);return}h(R.type)},t:r},R.type))}),c&&i.jsx("div",{style:{padding:"6px 2px 2px",borderTop:`1px solid ${r.cellBorder}`},children:i.jsx(oW,{themeMode:t.themeMode,onPick:R=>void A(R)})})]})]})}function aW({entry:e,onClick:t,t:n,active:r=!1}){const[o,s]=S.useState(!1),a=r||o,l=e.Icon;return i.jsxs("button",{onClick:t,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),title:e.label,style:{background:a?`${e.color}18`:"transparent",border:`1px solid ${a?e.color:n.cellBorder}`,borderRadius:8,cursor:"pointer",color:a?e.color:n.textSecondary,fontSize:11,fontFamily:n.font,fontWeight:500,padding:"10px 6px",minWidth:76,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6,transition:"all 0.12s"},children:[i.jsx("span",{style:{color:e.color,display:"flex",alignItems:"center",justifyContent:"center"},children:i.jsx(l,{size:18,strokeWidth:1.75})}),i.jsx("span",{style:{letterSpacing:"0.02em"},children:e.label})]})}function lW({registerCellRef:e}){const{state:t,dispatch:n}=fe(),{executeCell:r}=Hi(),o=ie[t.themeMode],[s,a]=S.useState(null),l=S.useRef(0),[c,d]=S.useState(null),[E,u]=S.useState(null);S.useCallback(R=>{a(R)},[]),S.useEffect(()=>{s&&t.inspectorOpen&&n({type:"SET_INSPECTOR_CONTEXT",context:{kind:"cell",cellId:s}})},[s,t.inspectorOpen,n]),S.useEffect(()=>{function R(p){var C;if(!s)return;const N=p.target;if(N.tagName==="TEXTAREA"||N.tagName==="INPUT"||N.isContentEditable||N.closest(".cm-editor")){a(null);return}const I=t.cells,O=I.findIndex(m=>m.id===s);if(O!==-1)switch(p.key){case"a":{p.preventDefault();const m=Ke("sql");if(O===0)n({type:"ADD_CELL",cell:m,afterId:I[0].id}),n({type:"MOVE_CELL",id:m.id,direction:"up"});else{const g=I[O-1].id;n({type:"ADD_CELL",cell:m,afterId:g})}a(m.id);break}case"b":{p.preventDefault();const m=Ke("sql");n({type:"ADD_CELL",cell:m,afterId:s}),a(m.id);break}case"d":{p.preventDefault();const m=Date.now();if(m-l.current<=500){if(n({type:"DELETE_CELL",id:s}),I.length>1){const g=O>0?O-1:1;a(((C=I[g])==null?void 0:C.id)??null)}else a(null);l.current=0}else l.current=m;break}case"Enter":{if(p.shiftKey){p.preventDefault();const m=I[O];m&&m.type!=="markdown"&&r(m.id)}break}}}return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[s,t.cells,n,r]),S.useEffect(()=>{function R(p){p.target.closest("[data-cell-id]")||a(null)}return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[]);const T=S.useCallback((R,p)=>{d(p),R.dataTransfer.effectAllowed="move",R.dataTransfer.setData("text/plain",String(p));const N=R.currentTarget;setTimeout(()=>{N.style.opacity="0.4"},0)},[]),f=S.useCallback(R=>{R.currentTarget.style.opacity="1",d(null),u(null)},[]),h=S.useCallback((R,p)=>{R.preventDefault(),R.dataTransfer.dropEffect="move",u(p)},[]),A=S.useCallback((R,p)=>{R.preventDefault(),c!==null&&c!==p&&n({type:"REORDER_CELL",fromIndex:c,toIndex:p}),d(null),u(null)},[c,n]);return t.cells.length===0?i.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:[t.appMode==="studio"&&i.jsx(vl,{}),i.jsx(cW,{t:o})]}):i.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:[t.appMode==="studio"&&i.jsx(vl,{afterId:void 0}),t.cells.map((R,p)=>i.jsxs(ye.Fragment,{children:[i.jsxs("div",{ref:N=>e(R.id,N),"data-cell-id":R.id,draggable:t.appMode==="studio",onDragStart:t.appMode==="studio"?N=>T(N,p):void 0,onDragEnd:t.appMode==="studio"?f:void 0,onDragOver:t.appMode==="studio"?N=>h(N,p):void 0,onDrop:t.appMode==="studio"?N=>A(N,p):void 0,onClick:N=>{const I=N.target;!I.closest(".cm-editor")&&!I.closest("textarea")&&!I.closest("input")&&a(R.id)},style:{outline:s===R.id?`2px solid ${o.accent}40`:"none",outlineOffset:2,borderRadius:10,transition:"outline 0.1s, transform 0.15s",position:"relative",...E===p&&c!==null&&c!==p?{borderTop:`2px solid ${o.accent}`}:{}},children:[i.jsx("div",{style:{position:"absolute",left:-20,top:8,width:16,height:24,display:"flex",alignItems:"center",justifyContent:"center",cursor:"grab",color:o.textMuted,opacity:0,transition:"opacity 0.15s",zIndex:5},className:"drag-handle",children:i.jsxs("svg",{width:"8",height:"14",viewBox:"0 0 8 14",fill:"currentColor",children:[i.jsx("circle",{cx:"2",cy:"2",r:"1.2"}),i.jsx("circle",{cx:"6",cy:"2",r:"1.2"}),i.jsx("circle",{cx:"2",cy:"7",r:"1.2"}),i.jsx("circle",{cx:"6",cy:"7",r:"1.2"}),i.jsx("circle",{cx:"2",cy:"12",r:"1.2"}),i.jsx("circle",{cx:"6",cy:"12",r:"1.2"})]})}),i.jsx(eW,{cell:R,index:p})]}),t.appMode==="studio"&&i.jsx(vl,{afterId:R.id})]},R.id)),i.jsx("style",{children:`
776
- [data-cell-id]:hover .drag-handle { opacity: 0.5 !important; }
777
- [data-cell-id]:hover .drag-handle:hover { opacity: 1 !important; }
778
- `})]})}function cW({t:e}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 0",gap:12,color:e.textMuted},children:[i.jsx("svg",{width:"40",height:"40",viewBox:"0 0 16 16",fill:"currentColor",style:{opacity:.3},children:i.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 8.75 4.25V1.5ZM8.75 5.5h2.836L10.25 3.664V4.25c0 .138.112.25.25.25H8.75Z"})}),i.jsx("span",{style:{fontSize:13,fontFamily:e.font},children:"Empty notebook. Click + to add your first cell."})]})}function dW(){const{state:e}=fe(),t=ie[e.themeMode],n=e.cells.filter(r=>r.type==="markdown"||r.result&&r.status!=="running"||r.error);return i.jsx("div",{style:{flex:1,overflow:"auto",background:t.appBg,padding:"32px 24px 48px"},children:i.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",display:"flex",flexDirection:"column",gap:24},children:[i.jsxs("div",{style:{textAlign:"center",marginBottom:8},children:[i.jsx("h1",{style:{fontSize:28,fontWeight:700,color:t.textPrimary,fontFamily:t.font,letterSpacing:"-0.3px",margin:0},children:e.notebookTitle||"Untitled"}),i.jsxs("p",{style:{fontSize:12,color:t.textMuted,fontFamily:t.font,marginTop:6},children:[e.cells.filter(r=>r.result).length," results",e.activeFile?` · ${e.activeFile.path}`:""]})]}),n.length===0?i.jsx("div",{style:{textAlign:"center",padding:48,color:t.textMuted,fontSize:14,fontFamily:t.font},children:"No outputs to display. Run some cells first, then switch to dashboard mode."}):n.map(r=>i.jsx(EW,{cell:r},r.id))]})})}function EW({cell:e}){const{state:t}=fe(),n=ie[t.themeMode];if(e.type==="markdown")return i.jsx("div",{style:{background:n.cellBg,borderRadius:10,border:`1px solid ${n.cellBorder}`,padding:"16px 24px",fontSize:14,lineHeight:1.7,fontFamily:n.font,color:n.textSecondary,whiteSpace:"pre-wrap"},dangerouslySetInnerHTML:{__html:TW(e.content,n)}});if(e.error)return i.jsxs("div",{style:{background:n.cellBg,borderRadius:10,border:`1px solid ${n.error}40`,padding:"16px 24px"},children:[e.name&&i.jsx(uW,{name:e.name,t:n}),i.jsx("div",{style:{color:n.error,fontSize:12,fontFamily:n.fontMono,whiteSpace:"pre-wrap"},children:e.error})]});if(!e.result)return null;const r=io(e.result,e.chartConfig),o=r!=="table";return i.jsxs("div",{style:{background:n.cellBg,borderRadius:10,border:`1px solid ${n.cellBorder}`,overflow:"hidden"},children:[i.jsxs("div",{style:{padding:"10px 20px",borderBottom:`1px solid ${n.cellBorder}`,display:"flex",alignItems:"center",gap:8},children:[e.name?i.jsx("span",{style:{fontSize:13,fontWeight:600,color:n.textPrimary,fontFamily:n.font,flex:1},children:e.name}):i.jsx("span",{style:{flex:1}}),i.jsxs("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.fontMono},children:[e.result.rowCount??e.result.rows.length," rows",e.result.executionTime!=null&&i.jsxs(i.Fragment,{children:[" · ",e.result.executionTime<1e3?`${e.result.executionTime}ms`:`${(e.result.executionTime/1e3).toFixed(1)}s`]})]})]}),i.jsx("div",{style:{padding:o?"16px 20px":0},children:o?Yi(r,e.result,t.themeMode,e.chartConfig):i.jsx(yo,{result:e.result,themeMode:t.themeMode})})]})}function uW({name:e,t}){return i.jsx("div",{style:{fontSize:13,fontWeight:600,color:t.textPrimary,fontFamily:t.font,marginBottom:8},children:e})}function TW(e,t){const n=r=>r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return e.split(`
779
- `).map(r=>{const o=r.trim(),s=o.match(/^(#{1,6})\s+(.+)$/);if(s){const l=s[1].length;return`<div style="font-size:${["28px","22px","18px","16px","14px","13px"][l-1]};font-weight:${l<=2?700:600};color:${t.textPrimary};margin:8px 0 4px">${n(s[2])}</div>`}if(/^[-*_]{3,}$/.test(o))return`<hr style="border:none;border-top:1px solid ${t.cellBorder};margin:8px 0"/>`;if(!o)return'<div style="height:6px"></div>';let a=n(o);return a=a.replace(/\*{2}(.+?)\*{2}/g,"<strong>$1</strong>"),a=a.replace(/\*(.+?)\*/g,"<em>$1</em>"),a=a.replace(/`(.+?)`/g,`<code style="background:${t.editorBg};padding:1px 4px;border-radius:3px;font-size:0.9em">$1</code>`),`<div style="margin-bottom:4px">${a}</div>`}).join("")}const Qh=[{value:"draft",label:"Draft",dot:"#f59e0b"},{value:"in_review",label:"In review",dot:"#5b8def"},{value:"certified",label:"Certified",dot:"#4ade80"},{value:"deprecated",label:"Deprecated",dot:"#ef4444"}];function fW(e){return e?Qh.find(t=>t.value===e)??{value:e,label:e,dot:"#888"}:null}function SW(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(null),s=S.useRef(null);if(S.useEffect(()=>{if(!r)return;const f=A=>{s.current&&!s.current.contains(A.target)&&o(null)},h=A=>{A.key==="Escape"&&o(null)};return document.addEventListener("mousedown",f),document.addEventListener("keydown",h),()=>{document.removeEventListener("mousedown",f),document.removeEventListener("keydown",h)}},[r]),!e.activeFile)return null;const a=e.activeFile.name.replace(/\.dqlnb$/,""),l=e.notebookMetadata,c=f=>{t({type:"UPDATE_NOTEBOOK_METADATA",updates:f})},d=fW(l.status),E=(l.categories??[]).length>0,u=!!l.description,T=!!l.projectFilter;return i.jsxs("div",{ref:s,style:{maxWidth:1080,margin:"0 auto",padding:"32px 48px 8px",display:"flex",flexDirection:"column",gap:12},children:[i.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center",position:"relative"},children:[i.jsx(xs,{t:n,active:r==="status",filled:!!d,icon:i.jsx("span",{style:{color:(d==null?void 0:d.dot)??n.textMuted,fontSize:12},children:"●"}),label:(d==null?void 0:d.label)??"Add status",onClick:()=>o(r==="status"?null:"status"),children:r==="status"&&i.jsxs(Ls,{t:n,children:[Qh.map(f=>i.jsxs("button",{onClick:()=>{c({status:f.value}),o(null)},style:of(n,l.status===f.value),children:[i.jsx("span",{style:{color:f.dot,fontSize:12},children:"●"}),i.jsx("span",{children:f.label})]},f.value)),l.status&&i.jsx("button",{onClick:()=>{c({status:void 0}),o(null)},style:{...of(n,!1),color:n.textMuted},children:i.jsx("span",{children:"Clear"})})]})}),i.jsx(xs,{t:n,active:r==="categories",filled:E,icon:i.jsx("span",{style:{fontFamily:n.fontMono,fontSize:10},children:"#"}),label:E?(l.categories??[]).slice(0,3).join(", ")+((l.categories??[]).length>3?"…":""):"Add categories",onClick:()=>o(r==="categories"?null:"categories"),children:r==="categories"&&i.jsx(Ls,{t:n,width:260,children:i.jsx(pW,{t:n,value:l.categories??[],onChange:f=>c({categories:f.length?f:void 0})})})}),i.jsx(xs,{t:n,active:r==="description",filled:u,icon:i.jsx("span",{style:{fontFamily:n.fontMono,fontSize:10},children:"✎"}),label:u?nf(l.description,48):"Add description",onClick:()=>o(r==="description"?null:"description"),children:r==="description"&&i.jsx(Ls,{t:n,width:320,children:i.jsx(rf,{multiline:!0,initial:l.description??"",onCommit:f=>c({description:f||void 0}),placeholder:"What does this notebook answer?",style:RW(n)})})}),i.jsx(xs,{t:n,active:r==="projectFilter",filled:T,icon:i.jsx("span",{style:{fontFamily:n.fontMono,fontSize:10},children:"⌕"}),label:T?nf(l.projectFilter,32):"Add project filter",onClick:()=>o(r==="projectFilter"?null:"projectFilter"),children:r==="projectFilter"&&i.jsx(Ls,{t:n,width:280,children:i.jsx(rf,{initial:l.projectFilter??"",onCommit:f=>c({projectFilter:f||void 0}),placeholder:"e.g. team:analytics",style:Zh(n)})})})]}),i.jsx("div",{style:{fontSize:22,fontWeight:600,color:n.textPrimary,fontFamily:n.font,letterSpacing:"-0.01em"},children:a})]})}function nf(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}function rf({initial:e,onCommit:t,multiline:n,placeholder:r,style:o}){const[s,a]=S.useState(e),l=S.useRef(s);l.current=s;const c=()=>{const d=l.current.trim();d!==e.trim()&&t(d)};return S.useEffect(()=>()=>c(),[]),n?i.jsx("textarea",{autoFocus:!0,value:s,onChange:d=>a(d.target.value),onBlur:c,placeholder:r,rows:4,style:o}):i.jsx("input",{autoFocus:!0,value:s,onChange:d=>a(d.target.value),onBlur:c,onKeyDown:d=>{d.key==="Enter"&&(d.preventDefault(),d.target.blur())},placeholder:r,style:o})}function xs({t:e,active:t,filled:n,icon:r,label:o,onClick:s,children:a}){return i.jsxs("div",{style:{position:"relative"},children:[i.jsxs("button",{className:"dql-meta-pill",onClick:s,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 9px",borderRadius:12,border:n?`1px solid ${e.cellBorder}`:`1px dashed ${e.cellBorder}`,background:t?`${e.accent}12`:n?e.pillBg:"transparent",color:n?e.textPrimary:e.textMuted,fontSize:11,fontFamily:e.font,cursor:"pointer",transition:"background-color 80ms, border-color 80ms","--dql-pill-hover-bg":`${e.accent}10`,"--dql-pill-hover-border":e.textMuted},children:[r,i.jsx("span",{children:o})]}),a]})}function Ls({t:e,width:t=200,children:n}){return i.jsx("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,zIndex:20,width:t,background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,padding:6,boxShadow:"0 8px 24px rgba(0,0,0,0.35)",display:"flex",flexDirection:"column",gap:4},children:n})}function of(e,t){return{display:"inline-flex",alignItems:"center",gap:8,padding:"6px 8px",borderRadius:4,border:"none",background:t?`${e.accent}18`:"transparent",color:e.textPrimary,fontSize:12,fontFamily:e.font,textAlign:"left",cursor:"pointer"}}function RW(e){return{width:"100%",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:4,color:e.textPrimary,fontSize:12,fontFamily:e.font,padding:8,outline:"none",resize:"vertical"}}function Zh(e){return{width:"100%",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:4,color:e.textPrimary,fontSize:12,fontFamily:e.fontMono,padding:"6px 8px",outline:"none"}}function pW({t:e,value:t,onChange:n}){const[r,o]=S.useState(""),s=()=>{const a=r.trim();if(a){if(t.includes(a)){o("");return}n([...t,a]),o("")}};return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[t.length>0&&i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:t.map(a=>i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",borderRadius:10,background:e.pillBg,border:`1px solid ${e.cellBorder}`,color:e.textPrimary,fontSize:11,fontFamily:e.font},children:[a,i.jsx("button",{onClick:()=>n(t.filter(l=>l!==a)),style:{background:"transparent",border:"none",color:e.textMuted,cursor:"pointer",padding:0,fontSize:12,lineHeight:1},"aria-label":`Remove ${a}`,children:"×"})]},a))}),i.jsx("input",{autoFocus:!0,value:r,onChange:a=>o(a.target.value),onKeyDown:a=>{a.key==="Enter"||a.key===","?(a.preventDefault(),s()):a.key==="Backspace"&&!r&&t.length>0&&n(t.slice(0,-1))},placeholder:"Add category, press Enter",style:Zh(e)})]})}function AW({onOpenFile:e,registerCellRef:t}){const{state:n}=fe(),r=ie[n.themeMode];return n.activeFile?n.dashboardMode?i.jsx(dW,{}):i.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",background:r.appBg},children:[i.jsx(hW,{t:r}),i.jsxs("div",{style:{flex:1,overflow:"auto",padding:"0 0 40px"},children:[i.jsx(SW,{}),i.jsx(lW,{registerCellRef:t})]})]}):i.jsx(T0,{onOpenFile:e})}function hW({t:e}){const{state:t}=fe(),n=t.cells.length;return i.jsxs("div",{style:{height:32,flexShrink:0,borderBottom:`1px solid ${e.headerBorder}`,background:e.cellBg,display:"flex",alignItems:"center",padding:"0 16px",gap:12},children:[i.jsx(IW,{t:e}),i.jsx("div",{style:{flex:1}}),i.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.font,display:"flex",alignItems:"center",gap:12},children:[i.jsxs("span",{children:[n," ",n===1?"cell":"cells"]}),t.notebookDirty&&i.jsx("span",{style:{color:e.warning},children:"● unsaved"})]})]})}function IW({t:e}){const{state:t}=fe();if(!t.activeFile)return null;const n=t.activeFile.path.split("/").filter(Boolean);return i.jsx("div",{style:{display:"flex",alignItems:"center",gap:4,fontSize:12,fontFamily:e.fontMono,color:e.textMuted,overflow:"hidden"},children:n.map((r,o)=>i.jsxs(ye.Fragment,{children:[o>0&&i.jsx("span",{style:{color:e.textMuted,opacity:.5},children:"/"}),i.jsx("span",{style:{color:o===n.length-1?e.textSecondary:e.textMuted,fontWeight:o===n.length-1?500:400,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:o===n.length-1?200:100},children:r})]},o))})}const sf={blank:"Blank",revenue:"Revenue Analysis",pipeline:"Pipeline Health"},NW={blank:"Start with an empty notebook.",revenue:"Pre-built queries for revenue metrics and trends.",pipeline:"Templates for data pipeline health monitoring."};function af(e){return e.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function OW(e){return e.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(e)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function mW(e){switch(e){case"revenue":return[Ke("markdown",`# Revenue Analysis
780
-
781
- This notebook analyzes revenue metrics and trends over time.`),{...Ke("sql",`SELECT
782
- DATE_TRUNC('month', order_date) AS month,
783
- SUM(amount) AS revenue
784
- FROM orders
785
- GROUP BY 1
786
- ORDER BY 1`),name:"monthly_revenue"},{...Ke("sql",`SELECT
787
- product_category,
788
- SUM(amount) AS total_revenue,
789
- COUNT(*) AS orders
790
- FROM orders
791
- GROUP BY 1
792
- ORDER BY 2 DESC`),name:"revenue_by_category"}];case"pipeline":return[Ke("markdown",`# Pipeline Health
793
-
794
- Monitor data pipeline performance, SLA compliance, and error rates.`),{...Ke("sql",`SELECT
795
- pipeline_name,
796
- COUNT(*) AS runs,
797
- AVG(duration_seconds) AS avg_duration,
798
- SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failures
799
- FROM pipeline_runs
800
- GROUP BY 1
801
- ORDER BY 4 DESC`),name:"pipeline_summary"},{...Ke("sql",`SELECT
802
- *
803
- FROM pipeline_runs
804
- WHERE status = 'failed'
805
- AND run_date >= CURRENT_DATE - INTERVAL '7 days'
806
- ORDER BY run_date DESC`),name:"recent_failures"}];default:return[Ke("sql")]}}function gW({onFileOpened:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],[o,s]=S.useState(""),[a,l]=S.useState("blank"),[c,d]=S.useState(null),[E,u]=S.useState(!1),T=S.useRef(null);S.useEffect(()=>{var A;(A=T.current)==null||A.focus()},[]),S.useEffect(()=>{const A=R=>{R.key==="Escape"&&n({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[n]);const f=async()=>{const A=OW(o);if(A){d(A);return}u(!0),d(null);const R=af(o),p=mW(a);try{const N=await J.createNotebook(R,a),I={name:`${R}.dqlnb`,path:N.path,type:"notebook",folder:"notebooks",isNew:!0};n({type:"FILE_ADDED",file:I}),n({type:"OPEN_FILE",file:I,cells:p,title:o.trim()}),n({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),e(I)}catch{const N=`notebooks/${R}.dqlnb`,I={name:`${R}.dqlnb`,path:N,type:"notebook",folder:"notebooks",isNew:!0};n({type:"FILE_ADDED",file:I}),n({type:"OPEN_FILE",file:I,cells:p,title:o.trim()}),n({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),e(I)}finally{u(!1)}},h=A=>{A.target===A.currentTarget&&n({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return i.jsx("div",{onClick:h,style:{position:"fixed",inset:0,background:r.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:i.jsxs("div",{style:{background:r.modalBg,border:`1px solid ${r.cellBorder}`,borderRadius:12,width:480,maxWidth:"calc(100vw - 48px)",boxShadow:"0 20px 60px rgba(0,0,0,0.5)",overflow:"hidden"},children:[i.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[i.jsx("h2",{style:{fontSize:16,fontWeight:600,color:r.textPrimary,fontFamily:r.font,margin:0},children:"New Notebook"}),i.jsx("button",{onClick:()=>n({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:"transparent",border:"none",cursor:"pointer",color:r.textMuted,fontSize:18,lineHeight:1,padding:"2px 4px",borderRadius:4},children:"×"})]}),i.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:20},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,fontWeight:500,color:r.textSecondary,fontFamily:r.font},children:"Name"}),i.jsx("input",{ref:T,value:o,onChange:A=>{s(A.target.value),d(null)},onKeyDown:A=>{A.key==="Enter"&&f()},placeholder:"my-analysis",style:{background:r.inputBg,border:`1px solid ${c?r.error:r.inputBorder}`,borderRadius:6,color:r.textPrimary,fontSize:13,fontFamily:r.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),c&&i.jsx("span",{style:{fontSize:11,color:r.error,fontFamily:r.font},children:c}),o&&!c&&i.jsxs("span",{style:{fontSize:11,color:r.textMuted,fontFamily:r.fontMono},children:["File: ",af(o),".dqlnb"]})]}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,fontWeight:500,color:r.textSecondary,fontFamily:r.font},children:"Template"}),i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:8},children:Object.keys(sf).map(A=>i.jsx(CW,{value:A,selected:a===A,onSelect:()=>l(A),label:sf[A],description:NW[A],t:r},A))})]})]}),i.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${r.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[i.jsx("button",{onClick:()=>n({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:r.btnBg,border:`1px solid ${r.btnBorder}`,borderRadius:6,color:r.textSecondary,cursor:"pointer",fontSize:13,fontFamily:r.font,fontWeight:500,padding:"7px 16px"},children:"Cancel"}),i.jsx("button",{onClick:f,disabled:E||!o.trim(),style:{background:r.accent,border:`1px solid ${r.accent}`,borderRadius:6,color:"#ffffff",cursor:E||!o.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:r.font,fontWeight:500,padding:"7px 20px",opacity:E||!o.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:E?"Creating…":"Create Notebook"})]})]})})}function CW({value:e,selected:t,onSelect:n,label:r,description:o,t:s}){const[a,l]=S.useState(!1);return i.jsxs("div",{onClick:n,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{display:"flex",alignItems:"flex-start",gap:10,padding:"10px 12px",borderRadius:8,border:`1px solid ${t?s.cellBorderActive:a?s.textMuted:s.inputBorder}`,background:t?`${s.cellBorderActive}10`:a?s.sidebarItemHover:"transparent",cursor:"pointer",transition:"all 0.15s"},children:[i.jsx("div",{style:{width:16,height:16,borderRadius:8,border:`2px solid ${t?s.accent:s.textMuted}`,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:1,transition:"border-color 0.15s"},children:t&&i.jsx("div",{style:{width:8,height:8,borderRadius:4,background:s.accent}})}),i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:13,fontWeight:500,color:s.textPrimary,fontFamily:s.font,marginBottom:2},children:r}),i.jsx("div",{style:{fontSize:12,color:s.textSecondary,fontFamily:s.font},children:o})]})]})}function lf(e){return e.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function xW(e){return e.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(e)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function LW({onFileOpened:e}){const{state:t,dispatch:n}=fe(),r=ie[t.themeMode],[o,s]=S.useState(""),[a,l]=S.useState(null),[c,d]=S.useState(!1),E=S.useRef(null);S.useEffect(()=>{var f;(f=E.current)==null||f.focus()},[]),S.useEffect(()=>{const f=h=>{h.key==="Escape"&&n({type:"CLOSE_NEW_BLOCK_MODAL"})};return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[n]);const u=async()=>{var A;const f=xW(o);if(f){l(f);return}d(!0),l(null);const h=lf(o);try{const R=await J.createBlock(o.trim()),p={name:`${h}.dql`,path:R.path,type:"block",folder:"blocks",isNew:!0};n({type:"FILE_ADDED",file:p}),n({type:"CLOSE_NEW_BLOCK_MODAL"}),e(p)}catch(R){(A=R.message)!=null&&A.includes("already exists")?l("A block with this name already exists."):l(R.message??"Failed to create block.")}finally{d(!1)}},T=f=>{f.target===f.currentTarget&&n({type:"CLOSE_NEW_BLOCK_MODAL"})};return i.jsx("div",{onClick:T,style:{position:"fixed",inset:0,background:r.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:i.jsxs("div",{style:{background:r.modalBg,border:`1px solid ${r.cellBorder}`,borderRadius:12,width:420,maxWidth:"calc(100vw - 48px)",boxShadow:"0 20px 60px rgba(0,0,0,0.5)",overflow:"hidden"},children:[i.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[i.jsx("h2",{style:{fontSize:16,fontWeight:600,color:r.textPrimary,fontFamily:r.font,margin:0},children:"New Block"}),i.jsx("button",{onClick:()=>n({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:"transparent",border:"none",cursor:"pointer",color:r.textMuted,fontSize:18,lineHeight:1,padding:"2px 4px",borderRadius:4},children:"×"})]}),i.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:16},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[i.jsx("label",{style:{fontSize:12,fontWeight:500,color:r.textSecondary,fontFamily:r.font},children:"Block Name"}),i.jsx("input",{ref:E,value:o,onChange:f=>{s(f.target.value),l(null)},onKeyDown:f=>{f.key==="Enter"&&u()},placeholder:"revenue-summary",style:{background:r.inputBg,border:`1px solid ${a?r.error:r.inputBorder}`,borderRadius:6,color:r.textPrimary,fontSize:13,fontFamily:r.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),a&&i.jsx("span",{style:{fontSize:11,color:r.error,fontFamily:r.font},children:a}),o&&!a&&i.jsxs("span",{style:{fontSize:11,color:r.textMuted,fontFamily:r.fontMono},children:["blocks/",lf(o),".dql"]})]}),i.jsxs("div",{style:{fontSize:12,color:r.textMuted,fontFamily:r.font,lineHeight:1.5,padding:"8px 12px",background:r.pillBg,borderRadius:6},children:["Blocks are reusable SQL queries stored in the ",i.jsx("code",{style:{fontFamily:r.fontMono,fontSize:11},children:"blocks/"})," folder. They can be referenced from notebooks and other blocks."]})]}),i.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${r.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[i.jsx("button",{onClick:()=>n({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:r.btnBg,border:`1px solid ${r.btnBorder}`,borderRadius:6,color:r.textSecondary,cursor:"pointer",fontSize:13,fontFamily:r.font,fontWeight:500,padding:"7px 16px"},children:"Cancel"}),i.jsx("button",{onClick:u,disabled:c||!o.trim(),style:{background:r.accent,border:`1px solid ${r.accent}`,borderRadius:6,color:"#ffffff",cursor:c||!o.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:r.font,fontWeight:500,padding:"7px 20px",opacity:c||!o.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:c?"Creating...":"Create Block"})]})]})})}function yW({item:e,favorite:t,onInsert:n,onPreview:r,onCopySql:o,onToggleFavorite:s,t:a}){if(!e)return null;const l=e.kind==="metric"||e.kind==="dimension",c=!!e.sql,d=e.source?`${e.source.provider} · ${e.source.objectType}`:null;return i.jsxs("div",{style:{borderTop:`1px solid ${a.headerBorder}`,padding:"12px 10px",display:"flex",flexDirection:"column",gap:10,background:`${a.cellBg}cc`},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsxs("div",{style:{flex:1,minWidth:0},children:[i.jsx("div",{style:{fontSize:12,fontWeight:600,color:a.textPrimary,fontFamily:a.font},children:e.label||e.name}),i.jsxs("div",{style:{fontSize:10,color:a.textMuted,fontFamily:a.fontMono},children:[e.kind," · ",e.name]})]}),i.jsx("button",{onClick:s,style:{background:t?"#e3b34122":"transparent",border:`1px solid ${t?"#e3b34166":a.cellBorder}`,borderRadius:6,color:t?"#e3b341":a.textMuted,cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"4px 8px"},children:t?"Favorited":"Favorite"})]}),e.description&&i.jsx("div",{style:{fontSize:12,color:a.textSecondary,fontFamily:a.font,lineHeight:1.5},children:e.description}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8,fontSize:11,fontFamily:a.fontMono,color:a.textMuted},children:[i.jsxs("div",{children:["domain: ",e.domain||"uncategorized"]}),i.jsxs("div",{children:["owner: ",e.owner??"unassigned"]}),e.table?i.jsxs("div",{children:["table: ",e.table]}):i.jsx("div",{}),e.cube?i.jsxs("div",{children:["cube: ",e.cube]}):i.jsx("div",{}),e.type?i.jsxs("div",{children:["type: ",e.type]}):i.jsx("div",{}),d?i.jsxs("div",{children:["source: ",d]}):i.jsx("div",{})]}),e.tags.length>0&&i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.tags.map(E=>i.jsx("span",{style:{fontSize:10,color:a.textMuted,background:a.pillBg,borderRadius:999,padding:"2px 8px",fontFamily:a.font},children:E},E))}),e.sql&&i.jsxs("div",{style:{position:"relative"},children:[i.jsx("pre",{style:{margin:0,padding:"8px 10px",paddingRight:32,background:a.editorBg,border:`1px solid ${a.cellBorder}`,borderRadius:6,fontSize:10,fontFamily:a.fontMono,color:a.textSecondary,overflowX:"auto",whiteSpace:"pre-wrap"},children:e.sql}),i.jsx("button",{onClick:o,title:"Copy SQL",style:{position:"absolute",top:6,right:6,background:a.btnBg,border:`1px solid ${a.cellBorder}`,borderRadius:4,color:a.textMuted,cursor:"pointer",fontSize:10,fontFamily:a.font,padding:"2px 6px",opacity:.7,lineHeight:1},children:"Copy"})]}),e.joins&&e.joins.length>0&&i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i.jsx("div",{style:{fontSize:11,fontWeight:600,color:a.textSecondary,fontFamily:a.font},children:"Joins"}),e.joins.map(E=>i.jsxs("div",{style:{fontSize:10,color:a.textMuted,fontFamily:a.fontMono},children:[E.left," ",E.type," ",E.right]},E.name))]}),e.levels&&e.levels.length>0&&i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i.jsx("div",{style:{fontSize:11,fontWeight:600,color:a.textSecondary,fontFamily:a.font},children:"Levels"}),e.levels.map(E=>i.jsxs("div",{style:{fontSize:10,color:a.textMuted,fontFamily:a.fontMono},children:[E.order,". ",E.label," → ",E.dimension]},E.name))]}),i.jsxs("div",{style:{display:"flex",gap:8},children:[i.jsx("button",{onClick:r,disabled:!c,style:{flex:1,background:a.btnBg,border:`1px solid ${a.btnBorder}`,borderRadius:6,color:a.textSecondary,cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"6px 10px"},children:"Preview Data"}),i.jsx("button",{onClick:o,disabled:!e.sql,style:{flex:1,background:a.btnBg,border:`1px solid ${a.btnBorder}`,borderRadius:6,color:a.textSecondary,cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"6px 10px"},children:"Copy SQL"}),i.jsx("button",{onClick:n,disabled:!l,style:{flex:1,background:a.accent,border:`1px solid ${a.accent}`,borderRadius:6,color:"#fff",cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"6px 10px"},children:l?"Insert":"Inspect"})]})]})}function _W({query:e,provider:t,cube:n,owner:r,domain:o,tag:s,type:a,providers:l,cubes:c,owners:d,domains:E,tags:u,onQueryChange:T,onProviderChange:f,onCubeChange:h,onOwnerChange:A,onDomainChange:R,onTagChange:p,onTypeChange:N,t:I}){const O=(t?1:0)+(o?1:0)+(n?1:0)+(r?1:0)+(s?1:0)+(a?1:0),[C,m]=S.useState(O>0),g={width:"100%",background:I.inputBg,border:`1px solid ${I.inputBorder}`,borderRadius:6,color:I.textPrimary,fontSize:12,fontFamily:I.font,padding:"7px 10px",outline:"none",boxSizing:"border-box"},y=()=>{f(""),R(""),h(""),A(""),p(""),N("")};return i.jsxs("div",{style:{padding:"10px",display:"flex",flexDirection:"column",gap:8,borderBottom:`1px solid ${I.headerBorder}`},children:[i.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[i.jsx("input",{value:e,onChange:x=>T(x.target.value),placeholder:"Search labels, cubes, owners, tags...",style:{...g,flex:1}}),i.jsxs("button",{onClick:()=>m(x=>!x),style:{background:O>0?`${I.accent}18`:"transparent",border:`1px solid ${O>0?I.accent:I.inputBorder}`,borderRadius:6,color:O>0?I.accent:I.textMuted,cursor:"pointer",fontSize:11,fontFamily:I.font,padding:"6px 10px",whiteSpace:"nowrap"},title:C?"Hide filters":"Show filters",children:["Filters",O>0?` · ${O}`:""]})]}),C&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:6},children:[i.jsxs("select",{value:t,onChange:x=>f(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All providers"}),l.map(x=>i.jsx("option",{value:x,children:x},x))]}),i.jsxs("select",{value:o,onChange:x=>R(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All domains"}),E.map(x=>i.jsx("option",{value:x,children:x},x))]}),i.jsxs("select",{value:n,onChange:x=>h(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All cubes"}),c.map(x=>i.jsx("option",{value:x,children:x},x))]}),i.jsxs("select",{value:r,onChange:x=>A(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All owners"}),d.map(x=>i.jsx("option",{value:x,children:x},x))]}),i.jsxs("select",{value:s,onChange:x=>p(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All tags"}),u.map(x=>i.jsx("option",{value:x,children:x},x))]}),i.jsxs("select",{value:a,onChange:x=>N(x.target.value),style:g,children:[i.jsx("option",{value:"",children:"All types"}),i.jsx("option",{value:"cube",children:"Cubes"}),i.jsx("option",{value:"metric",children:"Metrics"}),i.jsx("option",{value:"dimension",children:"Dimensions"}),i.jsx("option",{value:"hierarchy",children:"Hierarchies"}),i.jsx("option",{value:"segment",children:"Segments"}),i.jsx("option",{value:"pre_aggregation",children:"Pre-aggregations"})]})]}),O>0&&i.jsx("button",{onClick:y,style:{alignSelf:"flex-start",background:"transparent",border:"none",color:I.textMuted,cursor:"pointer",fontSize:11,fontFamily:I.font,padding:0,textDecoration:"underline"},children:"Clear filters"})]})]})}function hc({label:e,depth:t=0,badge:n,badgeColor:r,count:o,expanded:s,favorite:a,selected:l,onClick:c,onDoubleClick:d,onToggle:E,onFavoriteToggle:u,onDragStart:T,title:f,muted:h,t:A}){const[R,p]=S.useState(!1);return i.jsxs("button",{draggable:!!T,onDragStart:T,onClick:c,onDoubleClick:d,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),title:f,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:`5px 8px 5px ${10+t*14}px`,background:l?`${A.accent}18`:R?A.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:h?A.textMuted:A.textPrimary,fontSize:12,fontFamily:A.font,textAlign:"left"},children:[E?i.jsx("span",{onClick:N=>{N.stopPropagation(),E()},style:{display:"inline-flex",transform:s?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",color:A.textMuted},children:i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:"M3 2l4 3-4 3V2Z"})})}):i.jsx("span",{style:{width:10,flexShrink:0}}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),n&&i.jsx("span",{style:{fontSize:9,fontFamily:A.fontMono,color:r??A.accent,background:`${r??A.accent}18`,borderRadius:4,padding:"1px 4px",flexShrink:0},children:n}),typeof o=="number"&&i.jsx("span",{style:{fontSize:10,color:A.textMuted,background:A.pillBg,borderRadius:999,padding:"1px 6px",flexShrink:0},children:o}),typeof a=="boolean"&&i.jsx("span",{onClick:N=>{N.stopPropagation(),u==null||u()},style:{color:a?"#e3b341":A.textMuted,display:"inline-flex",flexShrink:0},children:i.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:i.jsx("path",{d:"M8 1.25l1.938 3.927 4.335.63-3.136 3.056.74 4.318L8 11.143l-3.877 2.038.74-4.318L1.727 5.807l4.335-.63L8 1.25Z"})})})]})}const ys=31,cf=10;function DW(){var Pr,zo,Jo,qo,Qo,Zo,es,vr;const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState("semantic"),[s,a]=S.useState("validate"),[l,c]=S.useState(""),[d,E]=S.useState(""),[u,T]=S.useState(""),[f,h]=S.useState(""),[A,R]=S.useState(""),[p,N]=S.useState(""),[I,O]=S.useState(""),[C,m]=S.useState({}),[g,y]=S.useState(null),[x,w]=S.useState(null),[D,U]=S.useState([]),[F,_]=S.useState({}),[B,b]=S.useState(""),[P,M]=S.useState(new Set),[L,v]=S.useState(!1),[G,k]=S.useState(!1),[q,K]=S.useState(null),[j,z]=S.useState(null),[Q,X]=S.useState([]),[Z,le]=S.useState(!1),[re,se]=S.useState(null),[W,ae]=S.useState(!1),[Te,ce]=S.useState(!1),[ee,he]=S.useState(null),[Oe,ke]=S.useState(null),[Sn,jt]=S.useState(null),[Hn,Bo]=S.useState(!1),[Yt,yt]=S.useState(0),[Wt,Fo]=S.useState(400),[Go,Dr]=S.useState(300),[Ho,aa]=S.useState(420),[Vt,ko]=S.useState(!1),[$t,jo]=S.useState(!1),kn=S.useRef(null);S.useEffect(()=>{t({type:"SET_BLOCK_STUDIO_CATALOG_LOADING",loading:!0}),z(null),J.getBlockStudioCatalog().then(Y=>{t({type:"SET_BLOCK_STUDIO_CATALOG",catalog:Y}),U(Y.databaseTree)}).catch(()=>{z("Failed to load schema. Check your connection and try refreshing.")}).finally(()=>t({type:"SET_BLOCK_STUDIO_CATALOG_LOADING",loading:!1}))},[t]),S.useEffect(()=>{if(!g||g.startsWith("provider:")||g.startsWith("domain:")||g.startsWith("group:")){w(null);return}J.getSemanticObject(g).then(w).catch(()=>w(null))},[g]),S.useEffect(()=>{const Y=window.setTimeout(()=>{e.blockStudioDraft.trim()&&J.validateBlockStudio(e.blockStudioDraft,e.activeBlockPath).then(ue=>t({type:"SET_BLOCK_STUDIO_VALIDATION",validation:ue})).catch(()=>{})},250);return()=>window.clearTimeout(Y)},[e.blockStudioDraft,e.activeBlockPath,t]);const Mr=((Pr=e.blockStudioCatalog)==null?void 0:Pr.semanticTree)??null,ot=S.useMemo(()=>YW(Mr)?Mr:WW(e.semanticLayer),[Mr,e.semanticLayer]),la=S.useMemo(()=>wl(ot,"provider"),[ot]),ca=S.useMemo(()=>wl(ot,"cube"),[ot]),da=S.useMemo(()=>wl(ot,"owner"),[ot]),jn=S.useMemo(()=>ot?eI(ot,{query:l,provider:d,domain:u,cube:f,owner:A,tag:p,type:I}):null,[ot,l,d,u,f,A,p,I]),Rn=S.useMemo(()=>tI((jn==null?void 0:jn.children)??[],C),[jn,C]),Ea=S.useMemo(()=>kW(D,B),[D,B]),ua=S.useMemo(()=>jW(D),[D]),br={metrics:e.semanticLayer.metrics.length,dimensions:e.semanticLayer.dimensions.length,hierarchies:e.semanticLayer.hierarchies.length},Ta=Rn.length*ys,Yo=S.useMemo(()=>{const Y=Math.max(0,Math.floor(Yt/ys)-cf),ue=Math.min(Rn.length,Math.ceil((Yt+Wt)/ys)+cf);return{offsetTop:Y*ys,rows:Rn.slice(Y,ue)}},[Rn,Yt,Wt]);S.useEffect(()=>{const Y=kn.current;if(!Y)return;const ue=()=>Fo(Y.clientHeight||400);if(ue(),typeof ResizeObserver>"u")return window.addEventListener("resize",ue),()=>window.removeEventListener("resize",ue);const Le=new ResizeObserver(()=>ue());return Le.observe(Y),()=>Le.disconnect()},[]),S.useEffect(()=>{yt(0),kn.current&&(kn.current.scrollTop=0)},[l,d,u,f,A,p,I]);const Yn=S.useMemo(()=>{var ue;const Y=_E(e.blockStudioDraft);return e.blockStudioMetadata?{...Y,name:(Y==null?void 0:Y.name)||e.blockStudioMetadata.name,domain:(Y==null?void 0:Y.domain)||e.blockStudioMetadata.domain,description:(Y==null?void 0:Y.description)||e.blockStudioMetadata.description,owner:(Y==null?void 0:Y.owner)||e.blockStudioMetadata.owner,tags:(ue=Y==null?void 0:Y.tags)!=null&&ue.length?Y.tags:e.blockStudioMetadata.tags,blockType:(Y==null?void 0:Y.blockType)||"custom"}:Y},[e.blockStudioDraft,e.blockStudioMetadata]),Xt=(Yn==null?void 0:Yn.name)??((zo=e.blockStudioMetadata)==null?void 0:zo.name)??null;S.useEffect(()=>{if(!Xt)return;const Y=`block:${Xt}`;t({type:"SET_LINEAGE_FOCUS",nodeId:Y}),ce(!0),Promise.all([J.fetchLineageNode(Y),J.queryLineage({focus:Y}),J.fetchLineagePaths(Y)]).then(([ue,Le,De])=>{he(ue),ke(Le.graph??null),jt(De)}).catch(()=>{he(null),ke(null),jt(null)}).finally(()=>ce(!1))},[Xt,t]);const st=Y=>{t({type:"SET_BLOCK_STUDIO_DRAFT",draft:Y})},Wo=async()=>{var Y,ue,Le;v(!0);try{const De=await J.runBlockStudio(e.blockStudioDraft,e.activeBlockPath);t({type:"SET_BLOCK_STUDIO_PREVIEW",preview:De}),a("results")}catch(De){t({type:"SET_BLOCK_STUDIO_VALIDATION",validation:{valid:!1,chartConfig:(Y=e.blockStudioValidation)==null?void 0:Y.chartConfig,executableSql:((ue=e.blockStudioValidation)==null?void 0:ue.executableSql)??null,semanticRefs:((Le=e.blockStudioValidation)==null?void 0:Le.semanticRefs)??{metrics:[],dimensions:[],segments:[]},diagnostics:[{severity:"error",code:"block_run_failed",message:De instanceof Error?De.message:String(De)}]}}),a("validate")}finally{v(!1)}},fa=async()=>{if(!e.blockStudioMetadata){t({type:"OPEN_NEW_BLOCK_MODAL"});return}k(!0),K(null);try{const Y=await J.saveBlockStudio({path:e.activeBlockPath,source:e.blockStudioDraft,metadata:{name:e.blockStudioMetadata.name,domain:e.blockStudioMetadata.domain,description:e.blockStudioMetadata.description,owner:e.blockStudioMetadata.owner,tags:e.blockStudioMetadata.tags}});t({type:"OPEN_BLOCK_STUDIO",file:{name:`${Y.metadata.name}.dql`,path:Y.path,type:"block",folder:"blocks"},payload:Y}),e.files.some(Le=>Le.path===Y.path)||t({type:"FILE_ADDED",file:{name:`${Y.metadata.name}.dql`,path:Y.path,type:"block",folder:"blocks"}}),a("save")}catch(Y){const ue=(Y==null?void 0:Y.message)??"Save failed";K(ue.includes("409")||ue.includes("BLOCK_EXISTS")?"A block with this name already exists. Rename and try again.":ue),setTimeout(()=>K(null),5e3)}finally{k(!1)}},Vo=Y=>{var ue;if(Y.kind==="metric"||Y.kind==="dimension"){const Le=X_(Y.kind==="metric"?"metric":"dimension",Y.name);(((ue=_E(e.blockStudioDraft))==null?void 0:ue.blockType)??"custom")==="semantic"?st(K_(e.blockStudioDraft,{kind:Y.kind==="metric"?"metric":"dimension",name:Y.name})):W0(Le)||st(z_(e.blockStudioDraft,Le)),t({type:"ADD_SEMANTIC_RECENT",name:Y.name});return}if(Y.kind==="segment"&&Y.sql){st(_s(e.blockStudioDraft,`/* segment:${Y.name} */ (${Y.sql})`));return}Y.kind==="pre_aggregation"&&st(_s(e.blockStudioDraft,`/* pre_aggregation:${Y.name} */`))},Sa=Y=>{st(_s(e.blockStudioDraft,Y))},Ra=async Y=>{if(!(!Y.path||Y.kind!=="table"||Y.children&&Y.children.length>0)){M(ue=>new Set(ue).add(Y.id));try{const ue=await J.describeTable(Y.path);U(Le=>nI(Le,Y.id,{...Y,children:ue.map(De=>({id:`db-column:${Y.path}:${De.name}`,label:De.name,kind:"column",path:Y.path,type:De.type}))}))}finally{M(ue=>{const Le=new Set(ue);return Le.delete(Y.id),Le})}}},$o=S.useCallback(async()=>{try{const Y=await J.getBlockStudioCatalog();Y!=null&&Y.databaseTree&&U(Y.databaseTree),t({type:"SET_BLOCK_STUDIO_CATALOG",catalog:Y})}catch{}},[t]),pa=((Jo=e.blockStudioValidation)==null?void 0:Jo.chartConfig)??((qo=e.blockStudioPreview)==null?void 0:qo.chartConfig)??{chart:"table"},Aa=e.blockStudioPreview?io(e.blockStudioPreview.result,e.blockStudioPreview.chartConfig):"table",Xo=Y=>{Y.preventDefault();const ue=Y.clientX,Le=Go,De=Ur=>{const wr=Math.min(520,Math.max(280,Le+Ur.clientX-ue));Dr(wr)},pn=()=>{window.removeEventListener("mousemove",De),window.removeEventListener("mouseup",pn)};window.addEventListener("mousemove",De),window.addEventListener("mouseup",pn)},Ko=Y=>{Y.preventDefault();const ue=Y.clientY,Le=Ho,De=Ur=>{const wr=Math.min(520,Math.max(180,Le-(Ur.clientY-ue)));aa(wr)},pn=()=>{window.removeEventListener("mousemove",De),window.removeEventListener("mouseup",pn)};window.addEventListener("mousemove",De),window.addEventListener("mouseup",pn)};return i.jsxs("div",{style:{flex:1,position:"relative",display:"grid",gridTemplateColumns:Vt?"0 0 minmax(0, 1fr)":`${Go}px 6px minmax(0, 1fr)`,gridTemplateRows:$t?"minmax(0, 1fr) 0 0":`minmax(0, 1fr) 6px ${Ho}px`,overflow:"hidden",background:n.appBg},children:[i.jsxs("div",{style:{borderRight:Vt?"none":`1px solid ${n.headerBorder}`,display:Vt?"none":"flex",flexDirection:"column",overflow:"hidden",background:n.sidebarBg,minWidth:0},children:[i.jsxs("div",{style:{padding:"10px 14px",display:"flex",alignItems:"center",gap:10,borderBottom:`1px solid ${n.headerBorder}`},children:[i.jsx("span",{style:{fontSize:10,fontWeight:600,letterSpacing:"0.06em",color:n.textMuted,textTransform:"uppercase",fontFamily:n.font},children:"Explorer"}),i.jsxs("span",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font},children:[br.metrics," metrics · ",br.dimensions," dims · ",br.hierarchies," hier"]}),i.jsx("div",{style:{flex:1}}),e.semanticLayer.provider&&i.jsx("span",{style:{fontSize:9,fontWeight:700,color:n.accent,background:`${n.accent}18`,borderRadius:999,padding:"2px 7px",textTransform:"uppercase",letterSpacing:"0.04em"},children:e.semanticLayer.provider}),i.jsx("button",{onClick:()=>ko(!0),style:{background:"transparent",border:"none",color:n.textMuted,cursor:"pointer",fontSize:14,fontFamily:n.font,padding:0,lineHeight:1},title:"Collapse explorer",children:"‹"})]}),i.jsxs("div",{style:{display:"flex",padding:"0 14px",gap:16,borderBottom:`1px solid ${n.headerBorder}`},children:[i.jsx(Ef,{active:r==="semantic",onClick:()=>o("semantic"),label:"Semantic",t:n}),i.jsx(Ef,{active:r==="database",onClick:()=>o("database"),label:"Database",t:n})]}),r==="semantic"?i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{padding:12,borderBottom:`1px solid ${n.headerBorder}`,background:`${n.cellBg}66`},children:i.jsx(_W,{query:l,provider:d,cube:f,owner:A,domain:u,tag:p,type:I,providers:la,cubes:ca,owners:da,domains:e.semanticLayer.domains,tags:e.semanticLayer.tags,onQueryChange:c,onProviderChange:E,onCubeChange:h,onOwnerChange:R,onDomainChange:T,onTagChange:N,onTypeChange:O,t:n})}),i.jsx("div",{ref:kn,onScroll:Y=>yt(Y.currentTarget.scrollTop),style:{flex:1,overflowY:"auto",borderBottom:`1px solid ${n.headerBorder}`,background:n.cellBg},children:j?i.jsxs("div",{style:{padding:16,display:"grid",gap:8,textAlign:"center"},children:[i.jsx("div",{style:{fontSize:12,color:"#f85149",fontFamily:n.font},children:j}),i.jsx("button",{onClick:()=>{z(null),$o()},style:{fontSize:11,color:n.accent,background:`${n.accent}18`,border:"none",borderRadius:6,padding:"6px 12px",cursor:"pointer",fontFamily:n.font},children:"Retry"})]}):e.blockStudioCatalogLoading?i.jsx(Ut,{message:"Loading semantic catalog…"}):Rn.length===0?i.jsx(Ut,{message:"No semantic objects match the current filters."}):i.jsx("div",{style:{height:Ta,position:"relative"},children:i.jsx("div",{style:{position:"absolute",top:Yo.offsetTop,left:0,right:0},children:Yo.rows.map(Y=>i.jsx(HW,{row:Y,selectedId:g,setSelectedId:y,expanded:C,setExpanded:m,onInsert:Vo,favorites:new Set(e.semanticLayer.favorites),dispatch:t,t:n},Y.node.id))})})}),i.jsx(yW,{item:x,favorite:!!(x&&e.semanticLayer.favorites.includes(x.name)),onInsert:()=>x&&Vo(x),onPreview:()=>{x!=null&&x.sql&&st(_s(e.blockStudioDraft,x.sql))},onCopySql:()=>{x!=null&&x.sql&&navigator.clipboard.writeText(x.sql)},onToggleFavorite:()=>{!x||x.kind!=="metric"&&x.kind!=="dimension"||J.toggleFavorite(x.name).then(Y=>t({type:"SET_SEMANTIC_FAVORITES",favorites:Y}))},t:n})]}):i.jsx(GW,{tree:Ea,totalTree:D,expanded:F,setExpanded:_,onEnsureColumns:Ra,onInsert:Sa,query:B,onQueryChange:b,stats:ua,connectionName:((Qo=e.blockStudioCatalog)==null?void 0:Qo.connection.current)??"default",loadingNodes:P,onRefresh:$o,t:n})]}),i.jsx("div",{onMouseDown:Vt?void 0:Xo,style:{display:Vt?"none":"block",cursor:"col-resize",background:n.headerBorder}}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,overflow:"hidden",gridColumn:"3",gridRow:"1"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",borderBottom:`1px solid ${n.headerBorder}`,background:n.cellBg},children:[Vt&&i.jsx("button",{onClick:()=>ko(!1),style:{background:"transparent",border:"none",color:n.textMuted,cursor:"pointer",fontSize:14,fontFamily:n.font,padding:0,lineHeight:1},title:"Open explorer",children:"›"}),i.jsx("span",{style:{fontSize:10,fontWeight:600,letterSpacing:"0.06em",color:n.textMuted,textTransform:"uppercase",fontFamily:n.font},children:"Source"}),i.jsx("div",{style:{flex:1}}),i.jsx(df,{label:"Run",onClick:()=>void Wo(),busy:L}),i.jsx(df,{label:"Save",onClick:()=>void fa(),busy:G}),q&&i.jsx("span",{style:{fontSize:11,color:"#f85149",fontFamily:n.font,padding:"4px 8px",background:"#f8514918",borderRadius:6},children:q})]}),i.jsx("div",{style:{flex:1,overflow:"hidden"},children:i.jsx(rd,{value:e.blockStudioDraft,onChange:st,onRun:()=>void Wo(),themeMode:e.themeMode,autoFocus:!0,wrap:!1,errorMessage:(es=(Zo=e.blockStudioValidation)==null?void 0:Zo.diagnostics.find(Y=>Y.severity==="error"))==null?void 0:es.message})})]}),i.jsx("div",{onMouseDown:$t?void 0:Ko,style:{gridColumn:"1 / -1",gridRow:"2",display:$t?"none":"block",cursor:"row-resize",background:n.headerBorder}}),i.jsxs("div",{style:{gridColumn:"1 / -1",gridRow:"3",borderTop:$t?"none":`1px solid ${n.headerBorder}`,display:$t?"none":"flex",flexDirection:"column",overflow:"hidden",background:n.cellBg},children:[i.jsxs("div",{style:{padding:"10px 14px",display:"flex",gap:6,alignItems:"center",borderBottom:`1px solid ${n.headerBorder}`,flexWrap:"wrap"},children:[i.jsx("span",{style:{fontSize:10,fontWeight:600,letterSpacing:"0.06em",color:n.textMuted,textTransform:"uppercase",fontFamily:n.font,marginRight:4},children:"Output"}),i.jsx(Qt,{active:s==="results",onClick:()=>a("results"),label:"Results"}),i.jsx(Qt,{active:s==="visualization",onClick:()=>a("visualization"),label:"Visualization"}),i.jsx(Qt,{active:s==="lineage",onClick:()=>a("lineage"),label:"Lineage"}),i.jsx("span",{style:{width:1,height:18,background:n.headerBorder,margin:"0 6px"}}),i.jsx("span",{style:{fontSize:10,fontWeight:600,letterSpacing:"0.06em",color:n.textMuted,textTransform:"uppercase",fontFamily:n.font,marginRight:4},children:"Governance"}),i.jsx(Qt,{active:s==="validate",onClick:()=>a("validate"),label:"Validate"}),i.jsx(Qt,{active:s==="tests",onClick:()=>a("tests"),label:"Tests"}),i.jsx(Qt,{active:s==="history",onClick:()=>{a("history"),!Z&&e.activeBlockPath&&J.getBlockHistory(e.activeBlockPath).then(Y=>{X(Y.entries),le(!0)})},label:"History"}),i.jsx(Qt,{active:s==="save",onClick:()=>a("save"),label:"Metadata"}),i.jsx("div",{style:{flex:1}}),i.jsx("button",{onClick:()=>jo(!0),style:{background:"transparent",border:`1px solid ${n.btnBorder}`,borderRadius:6,color:n.textMuted,cursor:"pointer",fontSize:11,fontFamily:n.font,padding:"4px 8px"},title:"Hide pane",children:"▾ Hide"})]}),i.jsxs("div",{style:{flex:1,overflow:"auto"},children:[s==="results"&&(e.blockStudioPreview?i.jsxs("div",{style:{display:"grid",gap:12,padding:12},children:[i.jsx("div",{style:{fontSize:11,color:n.textMuted,fontFamily:n.fontMono},children:e.blockStudioPreview.sql}),Aa==="table"?i.jsx(yo,{result:e.blockStudioPreview.result,themeMode:e.themeMode}):i.jsx(MD,{result:e.blockStudioPreview.result,chartConfig:e.blockStudioPreview.chartConfig,themeMode:e.themeMode})]}):i.jsx(Ut,{message:"Run the block to preview results and visualization."})),s==="visualization"&&i.jsx(bW,{chartConfig:pa,onChange:Y=>st($_(e.blockStudioDraft,Y)),t:n}),s==="lineage"&&i.jsx(PW,{blockName:Xt,loading:Te,detail:ee,graph:Oe,paths:Sn,onSelectNode:Y=>{t({type:"SET_LINEAGE_FOCUS",nodeId:Y}),e.lineageFullscreen||t({type:"TOGGLE_LINEAGE_FULLSCREEN"})},onOpenFull:()=>{Xt&&(t({type:"SET_LINEAGE_FOCUS",nodeId:`block:${Xt}`}),e.lineageFullscreen||t({type:"TOGGLE_LINEAGE_FULLSCREEN"}))},t:n}),s==="tests"&&i.jsx(BW,{source:e.blockStudioDraft,blockPath:e.activeBlockPath,testResults:re,running:W,onRunTests:async()=>{if(e.activeBlockPath){ae(!0);try{const Y=await J.runBlockTests(e.blockStudioDraft,e.activeBlockPath);se(Y.assertions??[])}catch{se([])}finally{ae(!1)}}},t:n}),s==="validate"&&i.jsx(MW,{diagnostics:((vr=e.blockStudioValidation)==null?void 0:vr.diagnostics)??[],t:n}),s==="history"&&i.jsx(FW,{entries:Q,t:n}),s==="save"&&i.jsxs("div",{style:{display:"grid",gap:12},children:[e.activeBlockPath&&e.blockStudioMetadata&&i.jsx("div",{style:{padding:"12px 12px 0"},children:i.jsx(wW,{currentStatus:e.blockStudioMetadata.reviewStatus??"draft",blockPath:e.activeBlockPath,onStatusChanged:Y=>{e.blockStudioMetadata&&t({type:"SET_BLOCK_STUDIO_METADATA",metadata:{...e.blockStudioMetadata,reviewStatus:Y}})},t:n})}),i.jsx(vW,{metadata:e.blockStudioMetadata,draftMetadata:Yn,onChange:Y=>{if(!e.blockStudioMetadata)return;t({type:"SET_BLOCK_STUDIO_METADATA",metadata:{...e.blockStudioMetadata,...Y}});let ue=e.blockStudioDraft;typeof Y.name=="string"&&(ue=XR(ue,Y.name)),typeof Y.domain=="string"&&(ue=Ha(ue,"domain",Y.domain)),typeof Y.owner=="string"&&(ue=Ha(ue,"owner",Y.owner)),typeof Y.description=="string"&&(ue=Ha(ue,"description",Y.description)),Y.tags&&(ue=V_(ue,Y.tags)),st(ue)},t:n})]})]})]}),$t&&i.jsx("div",{style:{position:"absolute",right:16,bottom:16},children:i.jsx("button",{onClick:()=>jo(!1),style:{background:n.btnBg,border:`1px solid ${n.btnBorder}`,borderRadius:6,color:n.textSecondary,cursor:"pointer",fontSize:12,fontFamily:n.font,padding:"8px 12px"},children:"Open Results"})})]})}function Qt({active:e,onClick:t,label:n,busy:r}){const{state:o}=fe(),s=ie[o.themeMode];return i.jsx("button",{onClick:t,style:{background:e?`${s.accent}18`:s.btnBg,border:`1px solid ${e?s.accent:s.btnBorder}`,borderRadius:6,color:e?s.accent:s.textSecondary,cursor:"pointer",fontSize:11,fontFamily:s.font,padding:"6px 10px",opacity:r?.7:1},children:r?`${n}…`:n})}function df(e){return i.jsx(Qt,{active:!1,...e})}function Ef({active:e,onClick:t,label:n,t:r}){return i.jsx("button",{onClick:t,style:{background:"transparent",border:"none",borderBottom:`2px solid ${e?r.accent:"transparent"}`,color:e?r.textPrimary:r.textMuted,cursor:"pointer",fontSize:12,fontWeight:e?600:500,fontFamily:r.font,padding:"10px 2px",marginBottom:-1},children:n})}function Ul({label:e,value:t,t:n}){return i.jsxs("div",{style:{background:n.cellBg,border:`1px solid ${n.headerBorder}`,borderRadius:10,padding:"10px 12px"},children:[i.jsx("div",{style:{fontSize:10,fontWeight:700,color:n.textMuted,fontFamily:n.font,textTransform:"uppercase",letterSpacing:"0.05em"},children:e}),i.jsx("div",{style:{fontSize:20,fontWeight:700,color:n.textPrimary,fontFamily:n.font,marginTop:4},children:t})]})}function MW({diagnostics:e,t}){return e.length===0?i.jsx(Ut,{message:"No validation messages."}):i.jsx("div",{style:{display:"grid",gap:8,padding:12},children:e.map((n,r)=>i.jsxs("div",{style:{padding:"10px 12px",borderRadius:8,border:`1px solid ${n.severity==="error"?t.error:n.severity==="warning"?t.warning:t.cellBorder}`,background:n.severity==="error"?`${t.error}12`:n.severity==="warning"?`${t.warning}12`:t.pillBg},children:[i.jsx("div",{style:{fontSize:10,fontWeight:700,color:n.severity==="error"?t.error:n.severity==="warning"?t.warning:t.textMuted,textTransform:"uppercase",letterSpacing:"0.04em"},children:n.severity}),i.jsx("div",{style:{fontSize:12,color:t.textPrimary,marginTop:4},children:n.message})]},`${n.code??n.message}-${r}`))})}function bW({chartConfig:e,onChange:t,t:n}){const r={width:"100%",background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:6,color:n.textPrimary,fontSize:12,fontFamily:n.font,padding:"8px 10px",outline:"none"};return i.jsxs("div",{style:{display:"grid",gap:10,padding:12},children:[i.jsxs("select",{value:e.chart??"table",onChange:o=>t({...e,chart:o.target.value}),style:r,children:[i.jsx("option",{value:"table",children:"Table"}),ki.map(o=>i.jsx("option",{value:o.value,children:o.label},o.value))]}),i.jsx("input",{value:e.x??"",onChange:o=>t({...e,x:o.target.value}),placeholder:"x binding",style:r}),i.jsx("input",{value:e.y??"",onChange:o=>t({...e,y:o.target.value}),placeholder:"y binding",style:r}),i.jsx("input",{value:e.color??"",onChange:o=>t({...e,color:o.target.value}),placeholder:"color binding",style:r}),i.jsx("input",{value:e.title??"",onChange:o=>t({...e,title:o.target.value}),placeholder:"title",style:r})]})}function PW({blockName:e,loading:t,detail:n,graph:r,paths:o,onSelectNode:s,onOpenFull:a,t:l}){if(!e)return i.jsx(Ut,{message:"Lineage will appear once the block has a name."});if(t)return i.jsx(Ut,{message:"Loading block lineage…"});if(!(n!=null&&n.node))return i.jsxs("div",{style:{padding:12,display:"grid",gap:12},children:[i.jsx("div",{style:{fontSize:12,color:l.textMuted,fontFamily:l.font},children:"No lineage node was found for this block yet. Save the block or compile the project if you expect it to appear in the graph."}),i.jsx("div",{children:i.jsx("button",{onClick:a,style:{background:l.btnBg,border:`1px solid ${l.btnBorder}`,borderRadius:6,color:l.textPrimary,cursor:"pointer",fontSize:11,fontFamily:l.font,padding:"6px 10px"},children:"Open Full Lineage"})})]});const c=`block:${e}`;return i.jsxs("div",{style:{padding:12,display:"grid",gap:12,overflowY:"auto"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:12,fontWeight:700,color:l.textPrimary,fontFamily:l.font},children:n.node.name}),i.jsx("div",{style:{fontSize:11,color:l.textMuted,fontFamily:l.font},children:n.node.domain?`Domain: ${n.node.domain}`:"Block lineage focus"})]}),i.jsx("div",{style:{flex:1}}),i.jsx("button",{onClick:a,style:{background:l.btnBg,border:`1px solid ${l.btnBorder}`,borderRadius:6,color:l.textPrimary,cursor:"pointer",fontSize:11,fontFamily:l.font,padding:"6px 10px"},children:"Open Full Lineage"})]}),(o==null?void 0:o.layerSummary)&&i.jsx(AM,{layerSummary:o.layerSummary,t:l}),r&&r.nodes.length>0&&i.jsx(_d,{nodes:r.nodes,edges:r.edges,focalNodeId:c,height:360,onNodeClick:s,layoutMode:"flow"}),o&&(o.upstreamPaths.length>0||o.downstreamPaths.length>0)&&i.jsxs("div",{style:{display:"grid",gap:10},children:[o.upstreamPaths.length>0&&i.jsx(nu,{title:"Source to Block",paths:o.upstreamPaths,onNodeClick:s,focalNodeId:c,t:l}),o.downstreamPaths.length>0&&i.jsx(nu,{title:"Block to Consumption",paths:o.downstreamPaths,onNodeClick:s,focalNodeId:c,t:l})]})]})}function vW({metadata:e,draftMetadata:t,onChange:n,t:r}){const o={width:"100%",background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:6,color:r.textPrimary,fontSize:12,fontFamily:r.font,padding:"8px 10px",outline:"none"},s={name:(t==null?void 0:t.name)||(e==null?void 0:e.name)||"",domain:(t==null?void 0:t.domain)||(e==null?void 0:e.domain)||"uncategorized",description:(t==null?void 0:t.description)||(e==null?void 0:e.description)||"",owner:(t==null?void 0:t.owner)||(e==null?void 0:e.owner)||"",tags:(t==null?void 0:t.tags)||(e==null?void 0:e.tags)||[]};return i.jsxs("div",{style:{display:"grid",gap:10,padding:12},children:[i.jsx("input",{value:s.name,onChange:a=>n({name:a.target.value}),placeholder:"Block name",style:o}),i.jsx("input",{value:s.domain,onChange:a=>n({domain:a.target.value}),placeholder:"Domain",style:o}),i.jsx("input",{value:s.owner,onChange:a=>n({owner:a.target.value}),placeholder:"Owner",style:o}),i.jsx("input",{value:s.description,onChange:a=>n({description:a.target.value}),placeholder:"Description",style:o}),i.jsx("input",{value:s.tags.join(", "),onChange:a=>n({tags:a.target.value.split(",").map(l=>l.trim()).filter(Boolean)}),placeholder:"Tags",style:o})]})}function Ut({message:e}){const{state:t}=fe(),n=ie[t.themeMode];return i.jsx("div",{style:{padding:16,fontSize:12,color:n.textMuted},children:e})}const uf={draft:"#8b949e",review:"#d29922",certified:"#3fb950",deprecated:"#f85149"},UW={draft:["review"],review:["certified","draft"],certified:["deprecated"],deprecated:["draft"]};function wW({currentStatus:e,blockPath:t,onStatusChanged:n,t:r}){const[o,s]=S.useState(!1),a=UW[e]??[],l=async c=>{if(t){s(!0);try{const d=await J.updateBlockStatus(t,c);d.ok&&d.status&&n(d.status)}finally{s(!1)}}};return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 12px",background:r.pillBg,borderRadius:8},children:[i.jsx("span",{style:{fontSize:11,color:r.textMuted,fontFamily:r.font},children:"Status:"}),i.jsx("span",{style:{fontSize:11,fontWeight:600,color:uf[e]??r.textMuted,background:`${uf[e]??r.textMuted}18`,padding:"2px 8px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em",fontFamily:r.font},children:e}),i.jsx("span",{style:{flex:1}}),a.map(c=>i.jsx("button",{onClick:()=>void l(c),disabled:o,style:{background:c==="certified"?"#3fb950":c==="deprecated"?"#f85149":r.btnBg,border:`1px solid ${c==="certified"?"#3fb950":c==="deprecated"?"#f85149":r.btnBorder}`,borderRadius:4,color:c==="certified"||c==="deprecated"?"#fff":r.textSecondary,cursor:o?"not-allowed":"pointer",fontSize:10,fontWeight:600,fontFamily:r.font,padding:"3px 10px",textTransform:"capitalize",opacity:o?.5:1},children:o?"...":c==="certified"?"Certify":c==="deprecated"?"Deprecate":`Move to ${c}`},c))]})}function BW({source:e,blockPath:t,testResults:n,running:r,onRunTests:o,t:s}){const l=[...e.matchAll(/assert\s+(\w+)\s*(>=?|<=?|==|!=|IN)\s*(\S+)/g)].map(c=>({field:c[1],operator:c[2],expected:c[3]}));return i.jsxs("div",{style:{padding:12,display:"grid",gap:10},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i.jsx("span",{style:{fontSize:12,fontWeight:600,color:s.textPrimary,fontFamily:s.font},children:"Test Assertions"}),i.jsx("span",{style:{flex:1}}),i.jsx("button",{onClick:o,disabled:r||!t,style:{background:s.accent,border:"none",borderRadius:6,color:"#fff",cursor:r||!t?"not-allowed":"pointer",fontSize:11,fontWeight:600,fontFamily:s.font,padding:"5px 14px",opacity:r||!t?.5:1},children:r?"Running...":"Run Tests"})]}),l.length===0&&i.jsxs("div",{style:{fontSize:12,color:s.textMuted,fontFamily:s.font,lineHeight:1.5},children:["No test assertions found. Add assertions in your block:",i.jsx("pre",{style:{margin:"8px 0 0",padding:"8px 10px",background:s.editorBg,border:`1px solid ${s.cellBorder}`,borderRadius:6,fontSize:10,fontFamily:s.fontMono,color:s.textSecondary},children:`tests {
807
- assert row_count > 0
808
- assert max_value <= 1000000
809
- }`})]}),l.map((c,d)=>{const E=n==null?void 0:n[d],u=E==null?void 0:E.passed;return i.jsxs("div",{style:{padding:"8px 12px",borderRadius:8,border:`1px solid ${E?u?"#3fb95040":"#f8514940":s.cellBorder}`,background:E?u?"#3fb95008":"#f8514908":"transparent",display:"flex",alignItems:"center",gap:8},children:[E&&i.jsx("span",{style:{fontSize:14,color:u?"#3fb950":"#f85149",fontWeight:700},children:u?"✓":"✗"}),i.jsxs("div",{style:{flex:1},children:[i.jsxs("div",{style:{fontSize:12,color:s.textPrimary,fontFamily:s.fontMono},children:[c.field," ",c.operator," ",c.expected]}),E&&!u&&E.actual&&i.jsxs("div",{style:{fontSize:11,color:"#f85149",fontFamily:s.font,marginTop:2},children:["Actual: ",E.actual]})]})]},d)}),n&&n.length>0&&i.jsxs("div",{style:{padding:"8px 12px",background:s.pillBg,borderRadius:8,fontSize:12,fontFamily:s.font,color:s.textSecondary},children:[n.filter(c=>c.passed).length,"/",n.length," passed"]})]})}function FW({entries:e,t}){return e.length===0?i.jsx(Ut,{message:"No version history available. Commit changes to build history."}):i.jsxs("div",{style:{padding:12,display:"grid",gap:8},children:[i.jsx("div",{style:{fontSize:12,fontWeight:600,color:t.textPrimary,fontFamily:t.font},children:"Version History"}),e.map(n=>i.jsxs("div",{style:{padding:"8px 12px",border:`1px solid ${t.cellBorder}`,borderRadius:8,background:t.inputBg},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:4},children:[i.jsx("span",{style:{fontSize:10,fontFamily:t.fontMono,color:t.accent,background:`${t.accent}12`,padding:"1px 6px",borderRadius:4},children:n.hash.slice(0,7)}),i.jsx("span",{style:{fontSize:11,color:t.textMuted,fontFamily:t.font},children:new Date(n.date).toLocaleDateString()}),i.jsx("span",{style:{fontSize:11,color:t.textMuted,fontFamily:t.font,marginLeft:"auto"},children:n.author})]}),i.jsx("div",{style:{fontSize:12,color:t.textPrimary,fontFamily:t.font},children:n.message})]},n.hash))]})}function GW({tree:e,totalTree:t,expanded:n,setExpanded:r,onEnsureColumns:o,onInsert:s,query:a,onQueryChange:l,stats:c,connectionName:d,loadingNodes:E,onRefresh:u,t:T}){const f={width:"100%",background:T.inputBg,border:`1px solid ${T.inputBorder}`,borderRadius:8,color:T.textPrimary,fontSize:12,fontFamily:T.font,padding:"8px 10px",outline:"none",boxSizing:"border-box"},h=(A,R=0)=>{var g,y,x;const p=A.kind!=="column",N=n[A.id]??R<1,I=E.has(A.id),O=A.kind==="schema"?(g=A.children)==null?void 0:g.length:A.kind==="table"?(y=A.children)==null?void 0:y.length:void 0,C=A.kind==="column"?A.type:A.kind,m=A.kind==="column"&&A.type?HR(A.type,T.accent):void 0;return i.jsxs("div",{children:[i.jsx(hc,{label:I?`${A.label} …`:A.label,depth:R,count:O,expanded:p?N:void 0,onToggle:p?()=>{r(w=>({...w,[A.id]:!N})),N||o(A)}:void 0,badge:C,badgeColor:m,onClick:()=>{if(A.kind==="table"&&A.path&&s(A.path),A.kind==="column"){const w=A.path?A.path.split(".").pop():"";s(w?`${w}.${A.label}`:A.label)}},onDoubleClick:()=>{A.kind==="table"&&A.path&&s(`SELECT *
810
- FROM ${A.path}
811
- LIMIT 100`)},t:T}),p&&N&&((x=A.children)==null?void 0:x.map(w=>h(w,R+1)))]},A.id)};return i.jsxs(i.Fragment,{children:[i.jsxs("div",{style:{padding:12,display:"grid",gap:12,borderBottom:`1px solid ${T.headerBorder}`,background:`${T.cellBg}66`},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[i.jsxs("div",{children:[i.jsx("div",{style:{fontSize:12,fontWeight:700,color:T.textPrimary,fontFamily:T.font},children:"Database Browser"}),i.jsx("div",{style:{fontSize:11,color:T.textMuted,fontFamily:T.font},children:"Browse the active connection, inspect schemas and columns, then insert tables or starter queries into the block."})]}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx("button",{onClick:u,title:"Refresh schema",style:{background:"none",border:"none",cursor:"pointer",padding:4,borderRadius:6,color:T.textMuted,fontSize:14,lineHeight:1},children:"↻"}),i.jsx("span",{style:{fontSize:10,fontWeight:700,color:T.accent,background:`${T.accent}18`,borderRadius:999,padding:"5px 9px",textTransform:"uppercase",letterSpacing:"0.04em"},children:d})]})]}),i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:8},children:[i.jsx(Ul,{label:"Schemas",value:c.schemas,t:T}),i.jsx(Ul,{label:"Tables",value:c.tables,t:T}),i.jsx(Ul,{label:"Columns",value:c.columns,t:T})]}),i.jsx("input",{value:a,onChange:A=>l(A.target.value),placeholder:"Search schemas, tables, columns...",style:f})]}),i.jsx("div",{style:{flex:1,overflowY:"auto",padding:e.length>0?"6px 0 0":0},children:t.length===0?i.jsx(Ut,{message:"No schemas were found for the active connection yet."}):e.length===0?i.jsx(Ut,{message:"No database objects match the current search."}):e.map(A=>h(A))})]})}function HW({row:e,selectedId:t,setSelectedId:n,expanded:r,setExpanded:o,onInsert:s,favorites:a,dispatch:l,t:c}){var h;const{node:d,depth:E,hasChildren:u,isExpanded:T}=e,f=d.id.split(":").slice(1).join(":");return u?i.jsx(hc,{label:d.label,depth:E,count:(h=d.children)==null?void 0:h.length,expanded:T,onToggle:()=>o(A=>({...A,[d.id]:!T})),onClick:()=>n(d.id),selected:t===d.id,t:c}):i.jsx(hc,{label:d.label,depth:E,badge:d.kind,selected:t===d.id,onClick:()=>n(d.id),onDoubleClick:()=>{J.getSemanticObject(d.id).then(s).catch(()=>{})},onFavoriteToggle:d.kind==="metric"||d.kind==="dimension"?()=>void J.toggleFavorite(f).then(A=>l({type:"SET_SEMANTIC_FAVORITES",favorites:A})):void 0,favorite:d.kind==="metric"||d.kind==="dimension"?a.has(f):void 0,t:c})}function _s(e,t){const n=e.match(/query\s*=\s*"""([\s\S]*?)"""/i);return n?e.replace(n[0],`query = """${n[1].trimEnd()}
812
- ${t}
813
- """`):/^\s*block\s+"/i.test(e.trim())?e.replace(/\n\}\s*$/,`
814
-
815
- query = """
816
- ${t}
817
- """
818
- }
819
- `):`${e.trimEnd()}
820
- ${t}
821
- `}function wl(e,t){if(!e)return[];const n=new Set,r=o=>{var a;const s=(a=o.meta)==null?void 0:a[t];typeof s=="string"&&s.trim()&&n.add(s.trim());for(const l of o.children??[])r(l)};return r(e),Array.from(n).sort((o,s)=>o.localeCompare(s))}function eI(e,t){var T,f,h,A,R;const n=t.query.trim().toLowerCase(),r=Object.values(e.meta??{}).filter(p=>p!=null).map(p=>String(p).toLowerCase()),o=!n||e.label.toLowerCase().includes(n)||e.id.toLowerCase().includes(n)||r.some(p=>p.includes(n)),s=!t.type||e.kind===t.type||e.kind==="provider"||e.kind==="domain"||e.kind==="group",a=!t.domain||e.kind==="provider"||e.kind==="group"||((T=e.meta)==null?void 0:T.domain)===t.domain||e.kind==="domain"&&e.label===t.domain,l=!t.provider||((f=e.meta)==null?void 0:f.provider)===t.provider||e.id===`provider:${t.provider}`,c=!t.cube||((h=e.meta)==null?void 0:h.cube)===t.cube,d=!t.owner||((A=e.meta)==null?void 0:A.owner)===t.owner,E=!t.tag||String(((R=e.meta)==null?void 0:R.tags)??"").split(",").filter(Boolean).includes(t.tag),u=(e.children??[]).map(p=>eI(p,t)).filter(p=>!!p);return u.length>0?{...e,children:u,count:e.kind==="provider"||e.kind==="domain"||e.kind==="group"?u.length:e.count}:o&&s&&a&&l&&c&&d&&E?{...e,children:[]}:null}function tI(e,t,n=0){const r=[];for(const o of e){const s=!!(o.children&&o.children.length>0),a=t[o.id]??n<3;r.push({node:o,depth:n,hasChildren:s,isExpanded:a}),s&&a&&r.push(...tI(o.children??[],t,n+1))}return r}function nI(e,t,n){return e.map(r=>r.id===t?n:r.children?{...r,children:nI(r.children,t,n)}:r)}function kW(e,t){const n=t.trim().toLowerCase();if(!n)return e;const r=o=>{const s=[o.label,o.path,o.type].filter(l=>!!l).some(l=>l.toLowerCase().includes(n)),a=(o.children??[]).map(l=>r(l)).filter(l=>!!l);return s||a.length>0?{...o,children:a}:null};return e.map(o=>r(o)).filter(o=>!!o)}function jW(e){let t=0,n=0,r=0;const o=s=>{s.kind==="schema"&&(t+=1),s.kind==="table"&&(n+=1),s.kind==="column"&&(r+=1);for(const a of s.children??[])o(a)};for(const s of e)o(s);return{schemas:t,tables:n,columns:r}}function YW(e){return!!(e&&e.children&&e.children.length>0)}function WW(e){if(e.metrics.length===0&&e.dimensions.length===0&&e.hierarchies.length===0)return null;const t=e.provider??"dql",n=new Map,r=(s,a)=>{const l=n.get(s)??[];l.push(a),n.set(s,l)};for(const s of e.metrics){const a=s.domain||"uncategorized";r(a,{id:`metric:${s.name}`,label:s.label||s.name,kind:"metric",meta:{provider:t,domain:a,cube:s.table,owner:s.owner??"",tags:s.tags.join(",")}})}for(const s of e.dimensions){const a=s.domain||"uncategorized";r(a,{id:`dimension:${s.name}`,label:s.label||s.name,kind:"dimension",meta:{provider:t,domain:a,cube:s.table,owner:s.owner??"",tags:s.tags.join(",")}})}for(const s of e.hierarchies){const a=s.domain||"uncategorized";r(a,{id:`hierarchy:${s.name}`,label:s.label||s.name,kind:"hierarchy",meta:{provider:t,domain:a}})}const o=Array.from(n.entries()).sort((s,a)=>s[0].localeCompare(a[0])).map(([s,a])=>{const l=a.filter(u=>u.kind==="metric"),c=a.filter(u=>u.kind==="dimension"),d=a.filter(u=>u.kind==="hierarchy"),E=[];return l.length>0&&E.push({id:`group:${s}:metrics`,label:"Metrics",kind:"group",count:l.length,meta:{provider:t,domain:s},children:l.sort((u,T)=>u.label.localeCompare(T.label))}),c.length>0&&E.push({id:`group:${s}:dimensions`,label:"Dimensions",kind:"group",count:c.length,meta:{provider:t,domain:s},children:c.sort((u,T)=>u.label.localeCompare(T.label))}),d.length>0&&E.push({id:`group:${s}:hierarchies`,label:"Hierarchies",kind:"group",count:d.length,meta:{provider:t,domain:s},children:d.sort((u,T)=>u.label.localeCompare(T.label))}),{id:`domain:${t}:${s}`,label:s,kind:"domain",count:E.length,meta:{provider:t,domain:s},children:E}});return{id:"root:semantic",label:"Semantic Layer",kind:"group",children:[{id:`provider:${t}`,label:t.toUpperCase(),kind:"provider",count:o.length,meta:{provider:t},children:o}]}}const rI={source_table:"TABLE",dbt_model:"DBT",dbt_source:"SOURCE",block:"BLOCK",metric:"METRIC",dimension:"DIM",domain:"DOMAIN",chart:"CHART",dashboard:"NOTEBOOK"};function VW(e,t,n="flow",r="LR"){var a;const o=new Ai.graphlib.Graph().setDefaultEdgeLabel(()=>({})),s=r==="LR";o.setGraph({rankdir:r,ranksep:n==="layered"?120:s?80:60,nodesep:s?40:50,marginx:32,marginy:32});for(const l of e){const c={width:190,height:58};if(n==="layered"&&((a=l.data)!=null&&a.layer)){const d=Qs.indexOf(l.data.layer);d>=0&&(c.rank=d)}o.setNode(l.id,c)}for(const l of t)o.setEdge(l.source,l.target);return Ai.layout(o),e.map(l=>{const c=o.node(l.id);return{...l,position:{x:c.x-95,y:c.y-29},data:{...l.data,direction:r}}})}function $W({data:e,selected:t}){const n=e.nodeType,r=Be[n]??"var(--color-text-tertiary)",o=rI[n]??n.toUpperCase(),s=e.direction??"LR",a=s==="LR"?oe.Left:oe.Top,l=s==="LR"?oe.Right:oe.Bottom;return i.jsxs("div",{style:{minWidth:156,maxWidth:220,background:"var(--color-bg-card)",border:`2px solid ${t?"var(--color-accent-blue)":r}`,borderRadius:10,padding:"8px 10px",boxShadow:t?"0 0 0 1px color-mix(in srgb, var(--color-accent-blue) 25%, transparent)":"none"},children:[i.jsx(cn,{type:"target",position:a,style:{width:7,height:7,background:r,border:"none"}}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[i.jsx("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.04em",color:"var(--color-bg-primary)",background:r,borderRadius:4,padding:"2px 6px"},children:o}),e.domain&&i.jsx("span",{style:{color:"var(--color-text-tertiary)",fontSize:10},children:e.domain})]}),i.jsx("div",{style:{color:"var(--color-text-primary)",fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.label,children:e.label}),i.jsx("div",{style:{color:"var(--color-text-tertiary)",fontSize:10,marginTop:3},children:Gi[n]??n}),i.jsx(cn,{type:"source",position:l,style:{width:7,height:7,background:r,border:"none"}})]})}const XW={dagNode:$W};function Qn({label:e,active:t,color:n,onClick:r}){return i.jsx("button",{onClick:r,style:{borderRadius:999,border:`1px solid ${t?n:"var(--color-border-primary)"}`,background:t?`color-mix(in srgb, ${n} 13%, transparent)`:"transparent",color:t?n:"var(--color-text-tertiary)",fontSize:10,fontWeight:700,padding:"4px 8px",cursor:"pointer"},children:e})}function KW(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],[r,o]=S.useState(!0),[s,a]=S.useState({nodes:[],edges:[]}),[l,c]=S.useState({nodes:[],edges:[]}),[d,E]=S.useState(null),[u,T]=S.useState(null),[f,h]=S.useState(""),[A,R]=S.useState([]),[p,N]=S.useState({source_table:!0,dbt_model:!0,dbt_source:!0,block:!0,dashboard:!0,domain:!0}),[I,O]=S.useState("flow"),[C,m]=S.useState("LR"),[g,y,x]=rh([]),[w,D,U]=oh([]),F=S.useCallback(async()=>{o(!0);const L=await J.fetchLineage(),v={nodes:L.nodes??[],edges:L.edges??[]};a(v),c(v),o(!1)},[]);S.useEffect(()=>{F()},[F]),S.useEffect(()=>{let L=!1;if(f.trim().length<2){R([]);return}return J.searchLineage(f.trim()).then(v=>{L||R(v.matches??[])}),()=>{L=!0}},[f]);const _=S.useMemo(()=>{const L=new Set(l.nodes.filter(v=>p[v.type]??!1).map(v=>v.id));return{nodes:l.nodes.filter(v=>L.has(v.id)),edges:l.edges.filter(v=>L.has(v.source)&&L.has(v.target))}},[l,p]);S.useEffect(()=>{const L=_.nodes.map(G=>({id:G.id,type:"dagNode",position:{x:0,y:0},data:{label:G.name,nodeType:G.type,domain:G.domain,layer:Jc(G)}})),v=_.edges.map((G,k)=>({id:`edge-${k}-${G.source}-${G.target}-${G.type}`,source:G.source,target:G.target,style:{stroke:Kr[G.type]??"var(--color-text-tertiary)",strokeWidth:1.6},markerEnd:{type:Rr.ArrowClosed,color:Kr[G.type]??"var(--color-text-tertiary)",width:12,height:12}}));y(VW(L,v,I,C)),D(v)},[_,I,C,D,y]);const B=S.useCallback(async L=>{const v=await J.queryLineage({focus:L});c(v.graph??{nodes:[],edges:[]}),E(v.focalNode??null),T(v.focalNode??null),t({type:"SET_LINEAGE_FOCUS",nodeId:L}),h(""),R([])},[t]);S.useEffect(()=>{e.lineageFocusNodeId&&B(e.lineageFocusNodeId)},[B,e.lineageFocusNodeId]);const b=S.useCallback(()=>{c(s),E(null),T(null),t({type:"SET_LINEAGE_FOCUS",nodeId:null})},[t,s]),P=S.useCallback(async(L,v)=>{await B(v.id)},[B]),M=S.useMemo(()=>{if(!u)return null;const L=l.edges.filter(G=>G.target===u.id).length,v=l.edges.filter(G=>G.source===u.id).length;return{incoming:L,outgoing:v}},[l.edges,u]);return r?i.jsx("div",{style:{padding:16,color:n.textMuted,fontSize:12},children:"Loading lineage graph..."}):s.nodes.length===0?i.jsx("div",{style:{padding:16,color:n.textMuted,fontSize:12},children:"No lineage graph available yet."}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100%",background:"var(--color-bg-primary)"},children:[i.jsxs("div",{style:{padding:8,borderBottom:`1px solid ${n.headerBorder}`,background:n.sidebarBg},children:[i.jsxs("div",{style:{display:"flex",gap:6,marginBottom:8,flexWrap:"wrap",alignItems:"center"},children:[i.jsxs("div",{style:{display:"flex",borderRadius:6,border:`1px solid ${n.headerBorder}`,overflow:"hidden"},children:[i.jsx("button",{onClick:()=>O("flow"),style:{padding:"4px 8px",fontSize:10,fontWeight:700,border:"none",cursor:"pointer",background:I==="flow"?"var(--color-bg-tertiary)":"transparent",color:I==="flow"?"var(--color-text-primary)":"var(--color-text-tertiary)"},children:"Flow"}),i.jsx("button",{onClick:()=>O("layered"),style:{padding:"4px 8px",fontSize:10,fontWeight:700,border:"none",borderLeft:`1px solid ${n.headerBorder}`,cursor:"pointer",background:I==="layered"?"var(--color-bg-tertiary)":"transparent",color:I==="layered"?"var(--color-text-primary)":"var(--color-text-tertiary)"},children:"Layered"})]}),i.jsxs("div",{style:{display:"flex",borderRadius:6,border:`1px solid ${n.headerBorder}`,overflow:"hidden",marginRight:4},children:[i.jsxs("button",{title:"Horizontal layout (left → right)",onClick:()=>m("LR"),style:{padding:"4px 8px",fontSize:10,fontWeight:700,border:"none",cursor:"pointer",background:C==="LR"?"var(--color-bg-tertiary)":"transparent",color:C==="LR"?"var(--color-text-primary)":"var(--color-text-tertiary)",display:"flex",alignItems:"center",gap:3},children:[i.jsxs("svg",{width:"14",height:"10",viewBox:"0 0 14 10",fill:"none",children:[i.jsx("rect",{x:"0",y:"2",width:"4",height:"6",rx:"1",fill:"currentColor",opacity:"0.7"}),i.jsx("line",{x1:"4",y1:"5",x2:"10",y2:"5",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M9 3l2 2-2 2",stroke:"currentColor",strokeWidth:"1.2",fill:"none"}),i.jsx("rect",{x:"10",y:"2",width:"4",height:"6",rx:"1",fill:"currentColor"})]}),"LR"]}),i.jsxs("button",{title:"Vertical layout (top → bottom)",onClick:()=>m("TB"),style:{padding:"4px 8px",fontSize:10,fontWeight:700,border:"none",borderLeft:`1px solid ${n.headerBorder}`,cursor:"pointer",background:C==="TB"?"var(--color-bg-tertiary)":"transparent",color:C==="TB"?"var(--color-text-primary)":"var(--color-text-tertiary)",display:"flex",alignItems:"center",gap:3},children:[i.jsxs("svg",{width:"10",height:"14",viewBox:"0 0 10 14",fill:"none",children:[i.jsx("rect",{x:"2",y:"0",width:"6",height:"4",rx:"1",fill:"currentColor",opacity:"0.7"}),i.jsx("line",{x1:"5",y1:"4",x2:"5",y2:"10",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M3 9l2 2 2-2",stroke:"currentColor",strokeWidth:"1.2",fill:"none"}),i.jsx("rect",{x:"2",y:"10",width:"6",height:"4",rx:"1",fill:"currentColor"})]}),"TB"]})]}),i.jsx(Qn,{label:"Tables",active:p.source_table,color:Be.source_table,onClick:()=>N(L=>({...L,source_table:!L.source_table}))}),i.jsx(Qn,{label:"dbt Models",active:p.dbt_model,color:Be.dbt_model,onClick:()=>N(L=>({...L,dbt_model:!L.dbt_model}))}),i.jsx(Qn,{label:"dbt Sources",active:p.dbt_source,color:Be.dbt_source,onClick:()=>N(L=>({...L,dbt_source:!L.dbt_source}))}),i.jsx(Qn,{label:"DQL Blocks",active:p.block,color:Be.block,onClick:()=>N(L=>({...L,block:!L.block}))}),i.jsx(Qn,{label:"Notebooks",active:p.dashboard,color:Be.dashboard,onClick:()=>N(L=>({...L,dashboard:!L.dashboard}))}),i.jsx(Qn,{label:"Domains",active:p.domain,color:Be.domain,onClick:()=>N(L=>({...L,domain:!L.domain}))})]}),i.jsxs("div",{style:{display:"flex",gap:8},children:[i.jsx("input",{value:f,onChange:L=>h(L.target.value),placeholder:"Search lineage and focus the graph...",style:{flex:1,padding:"8px 10px",borderRadius:6,border:`1px solid ${n.headerBorder}`,background:"var(--color-bg-sunken)",color:n.textPrimary,fontSize:12,outline:"none"}}),d&&i.jsx("button",{onClick:b,style:{borderRadius:6,border:`1px solid ${n.headerBorder}`,background:"transparent",color:n.textPrimary,cursor:"pointer",fontSize:12,fontWeight:600,padding:"8px 10px"},children:"Show All"})]}),i.jsx("div",{style:{marginTop:8,color:n.textMuted,fontSize:11,lineHeight:1.5},children:"This graph connects raw source tables and dbt DAGs to DQL blocks and the notebooks that consume them. Search to focus on a single path instead of scanning the full project graph."}),A.length>0&&i.jsx("div",{style:{marginTop:8,border:`1px solid ${n.headerBorder}`,borderRadius:8,overflow:"hidden"},children:A.slice(0,8).map(L=>i.jsxs("button",{onClick:()=>void B(L.node.id),style:{width:"100%",textAlign:"left",padding:"8px 10px",background:"transparent",border:"none",borderTop:`1px solid ${n.headerBorder}`,color:n.textPrimary,cursor:"pointer"},children:[i.jsx("span",{style:{color:Be[L.node.type]??"var(--color-text-tertiary)",fontSize:10,fontWeight:700,marginRight:8},children:rI[L.node.type]??L.node.type.toUpperCase()}),L.node.name]},L.node.id))})]}),i.jsx("div",{style:{flex:1,position:"relative"},children:i.jsxs(nh,{nodes:g,edges:w,onNodesChange:x,onEdgesChange:U,onNodeClick:P,nodeTypes:XW,fitView:!0,fitViewOptions:{padding:.18},proOptions:{hideAttribution:!0},style:{background:"var(--color-bg-primary)"},children:[i.jsx(ih,{color:"var(--color-border-secondary)",gap:24,size:1}),i.jsx(oB,{showInteractive:!1}),i.jsx(pB,{nodeColor:L=>{var v;return Be[((v=L.data)==null?void 0:v.nodeType)??"source_table"]??"var(--color-text-tertiary)"},maskColor:"color-mix(in srgb, var(--color-bg-primary) 55%, transparent)",style:{background:"var(--color-bg-sunken)",border:"1px solid var(--color-border-primary)"}}),i.jsx(Nr,{position:"top-left",children:i.jsxs("div",{style:{background:"color-mix(in srgb, var(--color-bg-card) 92%, transparent)",border:"1px solid var(--color-border-primary)",borderRadius:8,padding:"8px 10px",minWidth:220,color:"var(--color-text-primary)",fontSize:12},children:[i.jsx("div",{style:{fontWeight:700,marginBottom:4},children:d?d.name:"Full Lineage View"}),i.jsxs("div",{style:{color:"var(--color-text-tertiary)",fontSize:11},children:[l.nodes.length," node(s), ",l.edges.length," edge(s)"]}),i.jsx("div",{style:{color:"var(--color-text-tertiary)",fontSize:11,marginTop:6,lineHeight:1.5},children:d?`Focused on ${Gi[d.type]??d.type}. Upstream shows provenance from tables/dbt; downstream shows DQL and notebook consumption.`:"Full project lineage across source tables, dbt, DQL blocks, and notebooks."}),u&&M&&i.jsxs("div",{style:{marginTop:8,color:"var(--color-text-tertiary)",fontSize:11},children:[M.incoming," upstream, ",M.outgoing," downstream"]})]})}),i.jsx(Nr,{position:"bottom-left",children:i.jsx("div",{style:{display:"flex",gap:10,background:"color-mix(in srgb, var(--color-bg-card) 92%, transparent)",border:"1px solid var(--color-border-primary)",borderRadius:8,padding:"6px 10px",color:"var(--color-text-tertiary)",fontSize:10},children:Object.entries(Kr).map(([L,v])=>i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[i.jsx("span",{style:{width:10,height:2,background:v,display:"inline-block"}}),o_[L]??L]},L))})})]})})]})}const zW=[{key:"all",label:"All changes"},{key:"M",label:"Modified"},{key:"A",label:"Added"},{key:"D",label:"Deleted"},{key:"R",label:"Renamed"},{key:"?",label:"Untracked"}];function JW(e){const t=e;return t.trim()==="??"?"?":t[0]==="R"||t[1]==="R"?"R":t.includes("A")?"A":t.includes("D")?"D":"M"}function qW(e){const t=[];for(const n of e){const r=n.status[0]??" ",o=n.status[1]??" ",s=JW(n.status);if(n.status==="??"){t.push({path:n.path,status:"?",staged:!1,partiallyStaged:!1});continue}const a=r!==" "&&r!=="?";a&&(o!==" "&&o!=="?")?(t.push({path:n.path,status:s,staged:!0,partiallyStaged:!0}),t.push({path:n.path,status:s,staged:!1,partiallyStaged:!0})):a?t.push({path:n.path,status:s,staged:!0,partiallyStaged:!1}):t.push({path:n.path,status:s,staged:!1,partiallyStaged:!1})}return t}function QW(){const{state:e}=fe(),t=ie[e.themeMode],[n,r]=S.useState(null),[o,s]=S.useState({current:null,branches:[]}),[a,l]=S.useState({url:null,name:null}),[c,d]=S.useState(null),[E,u]=S.useState(!1),[T,f]=S.useState(null),[h,A]=S.useState(""),[R,p]=S.useState("all"),[N,I]=S.useState(""),[O,C]=S.useState(null),[m,g]=S.useState(null),[y,x]=S.useState(!1),[w,D]=S.useState(!1),[U,F]=S.useState(!1),[_,B]=S.useState(""),b=S.useRef(null),P=S.useCallback(async()=>{x(!0);try{const[ee,he,Oe]=await Promise.all([J.fetchGitStatus(),J.fetchGitBranches(),J.fetchGitRemote()]);r(ee),s({current:he.current,branches:he.branches}),l({url:Oe.url,name:Oe.name})}finally{window.setTimeout(()=>x(!1),350)}},[]);S.useEffect(()=>{P()},[P]),S.useEffect(()=>{const ee=window.setInterval(()=>{P()},4e3);return()=>window.clearInterval(ee)},[P]),S.useEffect(()=>{if(!w)return;const ee=he=>{b.current&&!b.current.contains(he.target)&&(D(!1),F(!1))};return document.addEventListener("mousedown",ee),()=>document.removeEventListener("mousedown",ee)},[w]),S.useEffect(()=>{if(!c){f(null);return}let ee=!1;return J.fetchGitDiff(c,E).then(he=>{ee||f(he)}),()=>{ee=!0}},[c,E,n]);const M=S.useMemo(()=>qW((n==null?void 0:n.changes)??[]),[n==null?void 0:n.changes]),L=M.filter(ee=>ee.staged),v=M.filter(ee=>!ee.staged),G=S.useCallback(ee=>!(R!=="all"&&ee.status!==R||h&&!ee.path.toLowerCase().includes(h.toLowerCase())),[R,h]),k=L.filter(G),q=v.filter(G);S.useEffect(()=>{if(c&&M.some(Oe=>Oe.path===c&&Oe.staged===E))return;const ee=q[0]??k[0];ee?(d(ee.path),u(ee.staged)):d(null)},[M,c,E,k,q]);const K=S.useCallback((ee,he)=>{g({kind:ee,text:he}),window.setTimeout(()=>g(null),3e3)},[]),j=S.useCallback(async(ee,he,Oe)=>{C(ee);try{const ke=await he();return ke.ok?(Oe&&K("ok",Oe),await P()):K("err",ke.error??`${ee} failed`),ke}finally{C(null)}},[K,P]),z=ee=>j("stage",()=>J.gitStage([ee])),Q=ee=>j("unstage",()=>J.gitUnstage([ee])),X=ee=>{window.confirm(`Discard local changes to ${ee}? This cannot be undone.`)&&j("discard",()=>J.gitDiscard([ee]),"Discarded local changes")},Z=()=>j("stage",async()=>{const ee=v.map(he=>he.path);return ee.length===0?{ok:!0}:J.gitStage(ee)}),le=async()=>{const ee=N.trim();if(!ee)return K("err","Commit message required");const he=L.length===0;(await j("commit",()=>J.gitCommit(ee,he),"Committed")).ok&&I("")},re=async()=>{const ee=N.trim();if(!ee)return K("err","Commit message required");const he=L.length===0;(await j("commit",()=>J.gitCommit(ee,he))).ok&&(I(""),await j("push",()=>J.gitPush(),"Pushed to remote"))},se=()=>j("pull",()=>J.gitPull(),"Pulled from remote"),W=()=>j("push",()=>J.gitPush(),"Pushed to remote"),ae=ee=>{D(!1),j("checkout",()=>J.gitCheckout(ee),`Switched to ${ee}`)},Te=async()=>{const ee=_.trim();ee&&(D(!1),F(!1),B(""),j("branch",()=>J.gitCreateBranch(ee,!0),`Created and switched to ${ee}`))},ce=M.find(ee=>ee.path===c&&ee.staged===E)??null;return n&&!n.inRepo?i.jsx(cV,{t}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,background:t.appBg},children:[i.jsx(ZW,{t,branchCurrent:o.current,branches:o.branches,ahead:(n==null?void 0:n.ahead)??0,behind:(n==null?void 0:n.behind)??0,remoteUrl:a.url,refreshing:y,busy:O,onPull:se,onPush:W,onRefresh:()=>void P(),onCheckout:ae,branchMenuOpen:w,setBranchMenuOpen:D,newBranchOpen:U,setNewBranchOpen:F,newBranchName:_,setNewBranchName:B,onCreateBranch:Te,branchMenuRef:b}),i.jsxs("div",{style:{display:"flex",flex:1,minHeight:0,overflow:"hidden"},children:[i.jsx(tV,{t,stagedFiles:k,unstagedFiles:q,totalCount:M.length,selectedPath:c,selectedStaged:E,onSelect:(ee,he)=>{d(ee),u(he)},query:h,setQuery:A,statusFilter:R,setStatusFilter:p,onStage:z,onUnstage:Q,onStageAll:Z,ahead:(n==null?void 0:n.ahead)??0,behind:(n==null?void 0:n.behind)??0,branchCurrent:o.current}),i.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",overflow:"hidden",background:t.appBg},children:[ce&&T?i.jsxs(i.Fragment,{children:[i.jsx(nV,{t,entry:ce,onStage:()=>z(ce.path),onUnstage:()=>Q(ce.path),onDiscard:()=>X(ce.path),stagedView:E}),i.jsx(rV,{t,diff:T.diff})]}):i.jsx(iV,{t,hasFiles:M.length>0}),i.jsx(aV,{t,commitMsg:N,setCommitMsg:I,stagedCount:L.length,unstagedCount:v.length,onCommit:le,onCommitAndPush:re,busy:O})]})]}),m&&i.jsx(lV,{t,kind:m.kind,text:m.text})]})}function ZW(e){const{t}=e;return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 20px",borderBottom:`1px solid ${t.headerBorder}`,background:t.appBg,flexShrink:0,whiteSpace:"nowrap"},children:[i.jsx("span",{style:{fontFamily:t.fontMono,fontSize:10,fontWeight:700,letterSpacing:"0.08em",padding:"3px 7px",borderRadius:3,background:`${t.accent}1f`,color:t.accent,border:`1px solid ${t.accent}40`},children:"GIT"}),i.jsx("span",{style:{fontSize:14,fontWeight:500,color:t.textPrimary},children:"Source control"}),i.jsxs("div",{ref:e.branchMenuRef,style:{position:"relative"},children:[i.jsxs("button",{onClick:()=>e.setBranchMenuOpen(!e.branchMenuOpen),style:{display:"inline-flex",alignItems:"center",gap:5,background:t.cellBg,border:`1px solid ${t.cellBorder}`,color:t.textPrimary,padding:"3px 8px",borderRadius:4,fontSize:11,fontFamily:t.fontMono,cursor:"pointer"},children:[i.jsx(xr,{size:11,strokeWidth:1.75}),e.branchCurrent??"detached",i.jsx(Xx,{size:10,strokeWidth:1.75,style:{opacity:.6}})]}),e.branchMenuOpen&&i.jsxs("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:220,maxHeight:360,overflow:"auto",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:6,boxShadow:"0 8px 24px rgba(0,0,0,0.18)",padding:"6px 0",zIndex:100},children:[e.branches.map(n=>i.jsxs("button",{onClick:()=>e.onCheckout(n),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"5px 10px",background:"transparent",border:"none",fontFamily:t.fontMono,fontSize:12,color:t.textPrimary,cursor:"pointer",textAlign:"left"},onMouseEnter:r=>r.currentTarget.style.background=t.btnHover,onMouseLeave:r=>r.currentTarget.style.background="transparent",children:[n===e.branchCurrent?i.jsx(Vx,{size:11,strokeWidth:2,color:t.success}):i.jsx("span",{style:{width:11,display:"inline-block"}}),n]},n)),i.jsx("div",{style:{borderTop:`1px solid ${t.cellBorder}`,margin:"4px 0"}}),e.newBranchOpen?i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 8px"},children:[i.jsx("input",{autoFocus:!0,value:e.newBranchName,onChange:n=>e.setNewBranchName(n.target.value),onKeyDown:n=>{n.key==="Enter"&&e.onCreateBranch(),n.key==="Escape"&&(e.setNewBranchOpen(!1),e.setNewBranchName(""))},placeholder:"new-branch-name",style:{flex:1,background:t.appBg,color:t.textPrimary,border:`1px solid ${t.cellBorder}`,borderRadius:4,padding:"4px 7px",fontSize:12,fontFamily:t.fontMono,outline:"none"}}),i.jsx("button",{onClick:e.onCreateBranch,style:lr(t,"primary"),children:"Create"})]}):i.jsxs("button",{onClick:()=>e.setNewBranchOpen(!0),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"6px 10px",background:"transparent",border:"none",fontSize:12,color:t.accent,cursor:"pointer",textAlign:"left"},onMouseEnter:n=>n.currentTarget.style.background=t.btnHover,onMouseLeave:n=>n.currentTarget.style.background="transparent",children:[i.jsx(FL,{size:11,strokeWidth:1.75}),"Create new branch…"]})]})]}),e.remoteUrl&&i.jsxs(i.Fragment,{children:[i.jsx("span",{style:{fontSize:11,color:t.textMuted},children:"·"}),i.jsx("span",{style:{fontSize:11,color:t.textMuted,fontFamily:t.fontMono,maxWidth:360,overflow:"hidden",textOverflow:"ellipsis"},title:e.remoteUrl,children:eV(e.remoteUrl)})]}),i.jsx("span",{style:{fontSize:11,color:t.textMuted},children:"·"}),i.jsxs("span",{style:{fontSize:11,color:t.success,display:"inline-flex",alignItems:"center",gap:5},children:[i.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:t.success}}),"ready"]}),i.jsx("div",{style:{flex:1}}),i.jsx("button",{onClick:e.onRefresh,title:"Refresh",style:{background:"transparent",border:`1px solid ${t.btnBorder}`,padding:"6px 8px",borderRadius:5,cursor:"pointer",color:t.textMuted},children:i.jsx(PR,{size:12,strokeWidth:1.75,style:{animation:e.refreshing?"dql-spin 0.6s linear":void 0}})}),i.jsx("style",{children:"@keyframes dql-spin { to { transform: rotate(360deg); } }"}),i.jsxs("button",{onClick:e.onPull,disabled:!!e.busy,style:Tf(t),children:[i.jsx(CR,{size:12,strokeWidth:1.75,color:t.warning}),"Pull",e.behind>0&&i.jsx("span",{style:{fontFamily:t.fontMono,fontSize:10,color:t.textMuted,marginLeft:2},children:e.behind})]}),i.jsxs("button",{onClick:e.onPush,disabled:!!e.busy,style:Tf(t,!0),children:[i.jsx(xR,{size:12,strokeWidth:1.75}),"Push",e.ahead>0&&i.jsx("span",{style:{fontFamily:t.fontMono,fontSize:10,opacity:.75,marginLeft:2},children:e.ahead})]})]})}function Tf(e,t=!1){return{display:"inline-flex",alignItems:"center",gap:5,background:t?e.accent:e.cellBg,color:t?"#fff":e.textPrimary,border:`1px solid ${t?e.accent:e.btnBorder}`,padding:"5px 12px",borderRadius:6,fontSize:12,fontFamily:e.font,fontWeight:t?500:400,cursor:"pointer",whiteSpace:"nowrap"}}function lr(e,t="default"){return{background:t==="primary"?e.accent:e.cellBg,color:t==="primary"?"#fff":e.textPrimary,border:`1px solid ${t==="primary"?e.accent:e.btnBorder}`,padding:"4px 9px",borderRadius:4,fontSize:11,cursor:"pointer",whiteSpace:"nowrap",fontFamily:e.font}}function eV(e){return e.replace(/^git@([^:]+):/,"$1/").replace(/^https?:\/\//,"").replace(/\.git$/,"")}function tV(e){const{t}=e;return i.jsxs("div",{style:{width:300,flexShrink:0,background:t.sidebarBg,borderRight:`1px solid ${t.headerBorder}`,display:"flex",flexDirection:"column",overflow:"hidden"},children:[i.jsxs("div",{style:{padding:"12px 14px 10px",borderBottom:`1px solid ${t.headerBorder}`},children:[i.jsx("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:8,fontSize:10,fontWeight:600,letterSpacing:"0.08em",textTransform:"uppercase",color:t.textMuted},children:"Source control"}),i.jsxs("div",{style:{display:"flex",alignItems:"baseline",gap:8,marginBottom:10},children:[i.jsx("span",{style:{fontSize:18,fontWeight:700,letterSpacing:"-0.01em",color:t.textPrimary},children:"Changes"}),i.jsxs("span",{style:{fontSize:11,color:t.textMuted},children:[e.totalCount," files"]}),i.jsx("div",{style:{flex:1}}),e.unstagedFiles.length>0&&i.jsx("button",{onClick:e.onStageAll,style:lr(t),children:"Stage all"})]}),i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:6,padding:"5px 9px",marginBottom:7},children:[i.jsx(kL,{size:11,strokeWidth:1.75,color:t.textMuted}),i.jsx("input",{value:e.query,onChange:n=>e.setQuery(n.target.value),placeholder:"Filter by path…",style:{background:"transparent",border:"none",outline:"none",color:t.textPrimary,fontSize:12,flex:1,width:"100%",fontFamily:t.font}}),e.query&&i.jsx("button",{onClick:()=>e.setQuery(""),style:{background:"transparent",border:"none",color:t.textMuted,cursor:"pointer",padding:0},children:i.jsx(vR,{size:11,strokeWidth:1.75})})]}),i.jsx("select",{value:e.statusFilter,onChange:n=>e.setStatusFilter(n.target.value),style:{width:"100%",background:t.cellBg,color:t.textPrimary,border:`1px solid ${t.cellBorder}`,borderRadius:6,padding:"5px 9px",fontSize:12,cursor:"pointer",fontFamily:t.font},children:zW.map(n=>i.jsx("option",{value:n.key,children:n.label},n.key))})]}),i.jsxs("div",{style:{flex:1,overflow:"auto",padding:"6px 8px"},children:[i.jsx(ff,{t,label:"Staged",count:e.stagedFiles.length}),e.stagedFiles.length===0?i.jsx("div",{style:{fontSize:11,color:t.textMuted,padding:"4px 10px",fontStyle:"italic"},children:"No staged changes"}):e.stagedFiles.map(n=>i.jsx(Sf,{t,file:n,active:e.selectedPath===n.path&&e.selectedStaged===!0,onClick:()=>e.onSelect(n.path,!0),actionLabel:"Unstage",onAction:()=>e.onUnstage(n.path)},`staged-${n.path}`)),i.jsx("div",{style:{height:8}}),i.jsx(ff,{t,label:"Changes",count:e.unstagedFiles.length}),e.unstagedFiles.length===0?i.jsx("div",{style:{fontSize:11,color:t.textMuted,padding:"4px 10px",fontStyle:"italic"},children:e.totalCount===0?"Working tree clean":"No unstaged changes"}):e.unstagedFiles.map(n=>i.jsx(Sf,{t,file:n,active:e.selectedPath===n.path&&e.selectedStaged===!1,onClick:()=>e.onSelect(n.path,!1),actionLabel:"Stage",onAction:()=>e.onStage(n.path)},`unstaged-${n.path}`))]}),i.jsxs("div",{style:{padding:"10px 14px",borderTop:`1px solid ${t.headerBorder}`,fontSize:10,color:t.textMuted,display:"flex",alignItems:"center",gap:6},children:[i.jsx(xr,{size:11,strokeWidth:1.75}),i.jsx("span",{style:{fontFamily:t.fontMono,color:t.textPrimary},children:e.branchCurrent??"detached"}),i.jsx("span",{children:"·"}),e.behind>0&&i.jsxs("span",{style:{color:t.warning},children:["↓",e.behind]}),e.ahead>0&&i.jsxs("span",{style:{color:t.success},children:["↑",e.ahead]}),e.behind===0&&e.ahead===0&&i.jsx("span",{children:"up to date"})]})]})}function ff({t:e,label:t,count:n}){return i.jsxs("div",{style:{fontSize:10,color:e.textMuted,fontWeight:600,letterSpacing:"0.07em",textTransform:"uppercase",padding:"6px 8px 4px",display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{children:t}),i.jsx("span",{style:{color:e.textMuted,opacity:.7},children:"·"}),i.jsx("span",{style:{color:e.textMuted},children:n})]})}function Sf({t:e,file:t,active:n,onClick:r,actionLabel:o,onAction:s}){const[a,l]=S.useState(!1),c=t.path.split("/").slice(0,-1).join("/"),d=t.path.split("/").pop()??t.path;return i.jsxs("div",{onClick:r,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderRadius:5,marginBottom:1,cursor:"pointer",background:n?`${e.accent}18`:a?e.btnHover:"transparent",border:n?`1px solid ${e.accent}45`:"1px solid transparent"},children:[i.jsx(oI,{t:e,status:t.status}),i.jsxs("div",{style:{flex:1,minWidth:0},children:[i.jsx("div",{style:{fontSize:12,color:e.textPrimary,fontFamily:e.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d}),c&&i.jsx("div",{style:{fontSize:10,color:e.textMuted,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:c})]}),a&&i.jsx("button",{onClick:E=>{E.stopPropagation(),s()},style:{background:e.cellBg,border:`1px solid ${e.btnBorder}`,color:e.textPrimary,padding:"2px 7px",borderRadius:3,fontSize:10,cursor:"pointer",flexShrink:0,fontFamily:e.font},children:o})]})}function oI({t:e,status:t}){const r={M:e.warning,A:e.success,D:e.error,R:e.accent,"?":e.textMuted}[t];return i.jsx("span",{style:{width:18,height:18,borderRadius:3,flexShrink:0,background:`${r}1a`,color:r,border:`1px solid ${r}40`,display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:700,fontFamily:e.fontMono},children:t})}function nV({t:e,entry:t,stagedView:n,onStage:r,onUnstage:o,onDiscard:s}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"12px 20px",borderBottom:`1px solid ${e.headerBorder}`,background:e.cellBg,flexShrink:0},children:[i.jsx(oI,{t:e,status:t.status}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,minWidth:0,flex:1},children:[i.jsx("div",{style:{fontSize:13,fontWeight:500,color:e.textPrimary,fontFamily:e.fontMono},children:t.path}),i.jsxs("div",{style:{fontSize:11,color:e.textMuted,display:"flex",gap:8},children:[i.jsx("span",{children:n?"Staged changes":"Unstaged changes"}),t.partiallyStaged&&i.jsxs(i.Fragment,{children:[i.jsx("span",{children:"·"}),i.jsx("span",{style:{color:e.warning},children:"partially staged"})]})]})]}),!n&&i.jsxs(i.Fragment,{children:[i.jsx("button",{onClick:s,style:lr(e),children:"Discard"}),i.jsx("button",{onClick:r,style:lr(e,"primary"),children:"Stage"})]}),n&&i.jsx("button",{onClick:o,style:lr(e),children:"Unstage"})]})}function rV({t:e,diff:t}){return t.trim()?i.jsx("div",{style:{flex:1,overflow:"auto",background:e.cellBg,fontFamily:e.fontMono,fontSize:12,lineHeight:"20px"},children:oV(t).map((n,r)=>i.jsx(sV,{t:e,line:n},r))}):i.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:e.textMuted,fontSize:13,background:e.appBg},children:"No textual diff (binary file or empty change)"})}function oV(e){const t=[];let n=0,r=0;const o=e.split(`
822
- `);let s=0;for(const a of o){if(s++>1e3){t.push({kind:"meta",text:"… diff truncated (over 1000 lines)",oldNum:null,newNum:null});break}if(!(a.startsWith("diff --git")||a.startsWith("index ")||a.startsWith("+++ ")||a.startsWith("--- "))){if(a.startsWith("@@")){const l=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(a);l&&(n=Number(l[1]),r=Number(l[2])),t.push({kind:"hunk",text:a,oldNum:null,newNum:null});continue}a.startsWith("+")?t.push({kind:"add",text:a.slice(1),oldNum:null,newNum:r++}):a.startsWith("-")?t.push({kind:"del",text:a.slice(1),oldNum:n++,newNum:null}):a.startsWith("\\")?t.push({kind:"meta",text:a,oldNum:null,newNum:null}):t.push({kind:"ctx",text:a.startsWith(" ")?a.slice(1):a,oldNum:n++,newNum:r++})}}return t}function sV({t:e,line:t}){if(t.kind==="hunk")return i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"80px 1fr",background:`${e.accent}14`,borderTop:`1px solid ${e.accent}30`,borderBottom:`1px solid ${e.accent}30`,color:e.accent},children:[i.jsx("div",{style:{padding:"2px 10px",textAlign:"right",borderRight:`1px solid ${e.accent}30`,color:e.textMuted},children:"⋯"}),i.jsx("div",{style:{padding:"2px 12px",whiteSpace:"pre"},children:t.text})]});if(t.kind==="meta")return i.jsx("div",{style:{padding:"2px 12px",color:e.textMuted,fontStyle:"italic"},children:t.text});const n={add:{bg:`${e.success}18`,gutter:`${e.success}55`,ch:"+",chColor:e.success},del:{bg:`${e.error}18`,gutter:`${e.error}55`,ch:"−",chColor:e.error},ctx:{bg:"transparent",gutter:e.cellBorder,ch:" ",chColor:e.textMuted}}[t.kind];return i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"40px 40px 20px 1fr",background:n.bg,borderLeft:`3px solid ${n.gutter}`},children:[i.jsx("div",{style:{padding:"0 6px",color:e.textMuted,textAlign:"right",userSelect:"none"},children:t.oldNum??""}),i.jsx("div",{style:{padding:"0 6px",color:e.textMuted,textAlign:"right",userSelect:"none",borderRight:`1px solid ${e.cellBorder}`},children:t.newNum??""}),i.jsx("div",{style:{padding:"0 4px",color:n.chColor,textAlign:"center",userSelect:"none"},children:n.ch}),i.jsx("div",{style:{padding:"0 10px",whiteSpace:"pre",color:e.textPrimary,overflow:"hidden"},children:t.text})]})}function iV({t:e,hasFiles:t}){return i.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:8,color:e.textMuted,fontSize:13,background:e.appBg},children:[i.jsx(MR,{size:28,strokeWidth:1.5,color:e.textMuted,style:{opacity:.4}}),t?"Select a file to view its diff":"Working tree clean — no changes to review"]})}function aV({t:e,commitMsg:t,setCommitMsg:n,stagedCount:r,unstagedCount:o,onCommit:s,onCommitAndPush:a,busy:l}){const c=r===0&&o>0,d=r===0&&o===0,E=c?`Will stage all ${o} change${o===1?"":"s"} and commit`:r>0?`Committing ${r} staged file${r===1?"":"s"}`:"Nothing to commit";return i.jsxs("div",{style:{padding:"12px 20px",borderTop:`1px solid ${e.headerBorder}`,background:e.cellBg,flexShrink:0,display:"flex",flexDirection:"column",gap:6},children:[i.jsx("div",{style:{fontSize:10,color:e.textMuted,letterSpacing:"0.04em"},children:E}),i.jsxs("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[i.jsx("input",{value:t,onChange:u=>n(u.target.value),onKeyDown:u=>{(u.metaKey||u.ctrlKey)&&u.key==="Enter"&&(u.preventDefault(),s())},placeholder:"Commit message (⌘↵ to commit)…",style:{flex:1,background:e.appBg,color:e.textPrimary,border:`1px solid ${e.cellBorder}`,borderRadius:6,padding:"7px 10px",fontSize:12,outline:"none",fontFamily:e.font}}),i.jsx("button",{onClick:s,disabled:!!l||d||!t.trim(),style:{...lr(e),padding:"7px 12px",fontSize:12,opacity:d||!t.trim()?.45:1},children:"Commit"}),i.jsx("button",{onClick:a,disabled:!!l||d||!t.trim(),style:{background:e.success,color:"#fff",border:`1px solid ${e.success}`,padding:"7px 14px",borderRadius:6,fontSize:12,fontWeight:500,cursor:"pointer",opacity:d||!t.trim()?.5:1,fontFamily:e.font},children:"Commit & Push"})]})]})}function lV({t:e,kind:t,text:n}){const r=t==="ok"?e.success:e.error;return i.jsx("div",{style:{position:"absolute",bottom:80,right:24,background:e.cellBg,border:`1px solid ${r}55`,borderLeft:`3px solid ${r}`,borderRadius:6,padding:"8px 14px",fontSize:12,color:e.textPrimary,boxShadow:"0 8px 24px rgba(0,0,0,0.18)",maxWidth:420,zIndex:200},children:n})}function cV({t:e}){return i.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:12,padding:40,background:e.appBg},children:[i.jsx(xr,{size:36,strokeWidth:1.5,color:e.textMuted,style:{opacity:.5}}),i.jsx("div",{style:{fontSize:16,fontWeight:600,color:e.textPrimary},children:"Not a git repository"}),i.jsxs("div",{style:{fontSize:13,color:e.textMuted,maxWidth:420,textAlign:"center"},children:["Initialize this folder with ",i.jsx("code",{style:{fontFamily:e.fontMono},children:"git init"})," to start tracking changes."]})]})}const dV=380;function EV(){var N;const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],r=e.lineageDrawerNodeId,[o,s]=S.useState({nodes:[],edges:[],focalNode:null}),[a,l]=S.useState(!1),c=S.useRef(null),[d,E]=S.useState(360);if(S.useEffect(()=>{const I=c.current;if(!I)return;const O=new ResizeObserver(C=>{for(const m of C){const g=Math.max(160,m.contentRect.height);E(g)}});return O.observe(I),()=>O.disconnect()},[]),S.useEffect(()=>{if(!r)return;let I=!1;return l(!0),J.queryLineage({focus:r,upstreamDepth:2,downstreamDepth:2}).then(O=>{var C,m;I||(s({nodes:((C=O.graph)==null?void 0:C.nodes)??[],edges:((m=O.graph)==null?void 0:m.edges)??[],focalNode:O.focalNode??null}),l(!1))}).catch(()=>{I||l(!1)}),()=>{I=!0}},[r]),!r)return null;const u=o.focalNode,T=u?o.edges.filter(I=>I.target===u.id).length:0,f=u?o.edges.filter(I=>I.source===u.id).length:0,h=u?Be[u.type]??n.textSecondary:n.textSecondary,A=u?Fi[u.type]??u.type.toUpperCase():"",R=I=>{I!==r&&t({type:"OPEN_LINEAGE_DRAWER",nodeId:I})},p=()=>{t({type:"SET_LINEAGE_FOCUS",nodeId:r}),t({type:"CLOSE_LINEAGE_DRAWER"}),e.lineageFullscreen||t({type:"TOGGLE_LINEAGE_FULLSCREEN"})};return i.jsxs("aside",{"aria-label":"Lineage drawer",style:{width:dV,flexShrink:0,borderLeft:`1px solid ${n.headerBorder}`,background:n.appBg,color:n.textPrimary,display:"flex",flexDirection:"column",overflow:"hidden",animation:"dql-drawer-slide-in 180ms cubic-bezier(0.22, 0.61, 0.36, 1)"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 14px",borderBottom:`1px solid ${n.headerBorder}`},children:[i.jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",minWidth:38,padding:"2px 6px",background:h,color:n.appBg,fontSize:10,fontWeight:700,letterSpacing:"0.04em",borderRadius:4},title:u?Gi[u.type]??u.type:"",children:A||"NODE"}),i.jsxs("div",{style:{flex:1,minWidth:0},children:[i.jsx("div",{style:{fontSize:13,fontWeight:600,color:n.textPrimary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:(u==null?void 0:u.name)??r,children:(u==null?void 0:u.name)??r}),i.jsxs("div",{style:{fontSize:11,color:n.textMuted,marginTop:2},children:["Lineage · ↑ ",T," · ↓ ",f]})]}),i.jsx(Rf,{title:"Open full graph",onClick:p,t:n,children:i.jsx(LL,{size:14,strokeWidth:1.75})}),i.jsx(Rf,{title:"Close",onClick:()=>t({type:"CLOSE_LINEAGE_DRAWER"}),t:n,children:i.jsx(vR,{size:14,strokeWidth:2})})]}),i.jsx("div",{ref:c,style:{flex:1,minHeight:0,padding:12,overflow:"hidden",display:"flex"},children:a?i.jsx("div",{style:{color:n.textMuted,fontSize:12,padding:8},children:"Loading lineage…"}):o.nodes.length===0?i.jsx("div",{style:{color:n.textMuted,fontSize:12,padding:8},children:"No lineage available for this node."}):i.jsx("div",{style:{flex:1,minWidth:0},children:i.jsx(_d,{nodes:o.nodes,edges:o.edges,focalNodeId:r,height:Math.max(0,d-24),onNodeClick:R,interactive:!0})})}),((N=u==null?void 0:u.metadata)==null?void 0:N.path)!=null&&typeof u.metadata.path=="string"&&i.jsxs("div",{style:{padding:"8px 14px",borderTop:`1px solid ${n.headerBorder}`,fontSize:11,color:n.textMuted,display:"flex",alignItems:"center",gap:6},children:[i.jsx(oL,{size:11,strokeWidth:1.75}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:u.metadata.path,children:u.metadata.path})]})]})}function Rf({title:e,onClick:t,children:n,t:r}){return i.jsx("button",{"aria-label":e,title:e,onClick:t,style:{width:26,height:26,display:"inline-flex",alignItems:"center",justifyContent:"center",background:"transparent",border:`1px solid ${r.headerBorder}`,borderRadius:5,color:r.textSecondary,cursor:"pointer"},onMouseEnter:o=>{o.currentTarget.style.color=r.textPrimary,o.currentTarget.style.background=r.textPrimary+"0f"},onMouseLeave:o=>{o.currentTarget.style.color=r.textSecondary,o.currentTarget.style.background="transparent"},children:n})}function uV(){const{state:e,dispatch:t}=fe(),{executeAll:n}=Hi();S.useEffect(()=>{const r=o=>{const s=o.metaKey||o.ctrlKey;if(s&&o.key==="b"&&!o.shiftKey){o.preventDefault(),t({type:"TOGGLE_SIDEBAR"});return}if(s&&o.shiftKey&&o.key==="Enter"){o.preventDefault(),e.activeFile&&n();return}if(s&&o.key==="j"&&!o.shiftKey){o.preventDefault(),t({type:"TOGGLE_DEV_PANEL"});return}if(s&&o.key==="d"&&!o.shiftKey){o.preventDefault(),e.activeFile&&t({type:"TOGGLE_DASHBOARD_MODE"});return}if(o.key==="Escape"){if(e.dashboardMode){t({type:"TOGGLE_DASHBOARD_MODE"});return}if(e.newNotebookModalOpen){t({type:"CLOSE_NEW_NOTEBOOK_MODAL"});return}if(e.newBlockModalOpen){t({type:"CLOSE_NEW_BLOCK_MODAL"});return}}};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[t,n,e.activeFile,e.newNotebookModalOpen,e.newBlockModalOpen,e.dashboardMode])}const TV=600;function fV(e,t){const n=t.filter(r=>r.result||r.error||(r.executionCount??0)>0).map(r=>({cellId:r.id,status:r.status,result:r.result,error:r.error,executionCount:r.executionCount,executedAt:new Date().toISOString()}));return{version:1,notebookPath:e,capturedAt:new Date().toISOString(),cells:n}}function pf(e){return e.map(t=>{var n;return`${t.id}:${t.executionCount??0}:${((n=t.result)==null?void 0:n.rowCount)??-1}:${(t.error??"").length}`}).join("|")}function SV(){var o;const{state:e}=fe(),t=S.useRef(null),n=S.useRef(""),r=S.useRef(null);S.useEffect(()=>{var l;const s=((l=e.activeFile)==null?void 0:l.path)??null;if(!s)return;if(s!==r.current){r.current=s,n.current=pf(e.cells);return}const a=pf(e.cells);return a!==n.current&&(n.current=a,t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{const c=fV(s,e.cells);J.saveRunSnapshot(s,c).catch(()=>{})},TV)),()=>{t.current&&(clearTimeout(t.current),t.current=null)}},[e.cells,(o=e.activeFile)==null?void 0:o.path])}function RV(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode],r=S.useRef({}),[o,s]=S.useState(!1);uV(),SV(),S.useEffect(()=>{const c=d=>{(d.metaKey||d.ctrlKey)&&d.key.toLowerCase()==="k"&&!d.shiftKey&&(d.preventDefault(),s(E=>!E)),(d.metaKey||d.ctrlKey)&&d.shiftKey&&d.key.toLowerCase()==="i"&&(d.preventDefault(),t({type:"TOGGLE_INSPECTOR"}))};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[t]);const a=S.useCallback(async c=>{try{if(c.type==="block"){const A=await J.openBlockStudio(c.path);t({type:"OPEN_BLOCK_STUDIO",file:c,payload:A});return}const{content:d}=await J.readNotebook(c.path),{title:E,cells:u,metadata:T}=F_(c.path,d),f=c.path.endsWith(".dqlnb")?await J.fetchRunSnapshot(c.path):null;let h=u;if(f!=null&&f.found&&f.snapshot){const A=new Map(f.snapshot.cells.map(R=>[R.cellId,R]));h=u.map(R=>{const p=A.get(R.id);return p?{...R,status:p.status??R.status,result:p.result??R.result,error:p.error??R.error,executionCount:p.executionCount??R.executionCount,fromSnapshot:p.result!=null}:R})}t({type:"OPEN_FILE",file:c,cells:h,title:E,metadata:T}),e.sidebarPanel!=="files"&&t({type:"SET_SIDEBAR_PANEL",panel:"files"})}catch(d){if(console.error("Failed to open file:",d),c.type==="block")try{const{content:E}=await J.readNotebook(c.path);t({type:"OPEN_BLOCK_STUDIO",file:c,payload:{path:c.path,source:E,companionPath:null,metadata:{name:c.name.replace(/\.dql$/i,""),path:c.path,domain:c.path.split("/").slice(1,-1).join("/")||"uncategorized",description:"",owner:"",tags:[]},validation:{valid:!1,diagnostics:[{severity:"warning",message:"Opened block without studio metadata. Save once to normalize it."}],semanticRefs:{metrics:[],dimensions:[],segments:[]}}}});return}catch(E){console.error("Failed to open block fallback:",E)}else t({type:"OPEN_FILE",file:c,cells:[Ke("sql")],title:c.name})}},[t,e.sidebarPanel]);S.useCallback(c=>{const d=r.current[c];d&&d.scrollIntoView({behavior:"smooth",block:"start"})},[]);const l=S.useCallback((c,d)=>{d?r.current[c]=d:delete r.current[c]},[]);return i.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100vh",width:"100vw",background:n.appBg,fontFamily:n.font,color:n.textPrimary,overflow:"hidden"},children:[i.jsx(i0,{}),i.jsxs("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[e.appMode==="studio"&&i.jsx(Iy,{}),e.appMode==="studio"&&e.sidebarOpen&&i.jsx(b_,{onOpenFile:a}),i.jsx("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:e.lineageFullscreen?i.jsx(KW,{}):e.mainView==="connection"?i.jsx(Af,{title:"Connections",description:"Manage database connections, edit driver settings, and test connectivity in a full-page workspace.",children:i.jsx(kR,{})}):e.mainView==="reference"?i.jsx(Af,{title:"Quick Reference",description:"Browse the complete DQL guide, semantic workflows, and authoring patterns in a documentation-style view.",children:i.jsx(jR,{themeMode:e.themeMode})}):e.mainView==="git"?i.jsx(QW,{}):i.jsx(i.Fragment,{children:e.mainView==="block_studio"?i.jsx(DW,{}):i.jsxs(i.Fragment,{children:[i.jsx(AW,{onOpenFile:a,registerCellRef:l}),e.appMode==="studio"&&i.jsx(E0,{})]})})}),e.appMode==="studio"&&e.lineageDrawerOpen&&!e.lineageFullscreen&&!e.dashboardMode&&i.jsx(EV,{}),e.appMode==="studio"&&e.inspectorOpen&&!e.lineageFullscreen&&!e.lineageDrawerOpen&&!e.dashboardMode&&i.jsx(ny,{})]}),e.newNotebookModalOpen&&i.jsx(gW,{onFileOpened:a}),e.newBlockModalOpen&&i.jsx(LW,{onFileOpened:a}),i.jsx(ty,{open:o,onClose:()=>s(!1)})]})}function Af({title:e,description:t,children:n}){return i.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",minWidth:0,overflow:"hidden"},children:[i.jsxs("div",{style:{padding:"18px 24px 12px",borderBottom:"1px solid rgba(127, 127, 127, 0.16)"},children:[i.jsx("div",{style:{fontSize:22,fontWeight:700},children:e}),i.jsx("div",{style:{fontSize:13,opacity:.72,marginTop:6,maxWidth:760,lineHeight:1.5},children:t})]}),i.jsx("div",{style:{flex:1,minHeight:0,overflow:"auto"},children:n})]})}function pV(){const{state:e,dispatch:t}=fe(),n=S.useRef(null),r=S.useRef(null);S.useEffect(()=>{var o;n.current=((o=e.activeFile)==null?void 0:o.path)??null},[e.activeFile]),S.useEffect(()=>{if(typeof EventSource>"u")return;const o=()=>{const s=new EventSource(`${window.location.origin}/api/watch`);r.current=s,s.addEventListener("change",a=>{try{const l=JSON.parse(a.data);(l.type==="file-added"||l.type==="file-deleted")&&J.listNotebooks().then(c=>{t({type:"SET_FILES",files:c})}),l.type==="file-changed"&&J.listNotebooks().then(c=>{t({type:"SET_FILES",files:c})}),l.type==="semantic-reload"&&(t({type:"SET_SEMANTIC_LOADING",loading:!0}),J.getSemanticLayer().then(c=>{t({type:"SET_SEMANTIC_LAYER",layer:c})}))}catch{}}),s.addEventListener("error",()=>{s.close(),setTimeout(o,5e3)})};return o(),()=>{var s;(s=r.current)==null||s.close(),r.current=null}},[t])}function AV(){const{state:e,dispatch:t}=fe(),n=ie[e.themeMode];return S.useEffect(()=>{const r="dql-global-styles";let o=document.getElementById(r);o||(o=document.createElement("style"),o.id=r,document.head.appendChild(o)),o.textContent=`
823
- * { margin: 0; padding: 0; box-sizing: border-box; }
824
- body {
825
- font-family: var(--font-ui, ${n.font});
826
- overflow: hidden;
827
- background: var(--color-bg-primary);
828
- color: var(--color-text-primary);
829
- }
830
- ::-webkit-scrollbar { width: 6px; height: 6px; }
831
- ::-webkit-scrollbar-track { background: transparent; }
832
- ::-webkit-scrollbar-thumb {
833
- background: var(--color-border-secondary);
834
- border-radius: 3px;
835
- }
836
- ::-webkit-scrollbar-thumb:hover {
837
- background: var(--color-text-tertiary);
838
- }
839
- ::selection {
840
- background: color-mix(in srgb, var(--color-accent-blue) 25%, transparent);
841
- color: var(--color-text-primary);
842
- }
843
- .dql-meta-pill:hover {
844
- background: var(--dql-pill-hover-bg) !important;
845
- border-color: var(--dql-pill-hover-border) !important;
846
- }
847
- `},[n]),S.useEffect(()=>{const r=e.themeMode==="dark"||e.themeMode==="midnight"?"obsidian":e.themeMode==="light"?"paper":e.themeMode==="arctic"?"white":e.themeMode;document.documentElement.setAttribute("data-theme",r)},[e.themeMode]),S.useEffect(()=>{t({type:"SET_FILES_LOADING",loading:!0}),J.listNotebooks().then(r=>{t({type:"SET_FILES",files:r}),t({type:"SET_FILES_LOADING",loading:!1})})},[t]),S.useEffect(()=>{t({type:"SET_SCHEMA_LOADING",loading:!0}),J.getSchema().then(r=>{t({type:"SET_SCHEMA",tables:r}),t({type:"SET_SCHEMA_LOADING",loading:!1})})},[t]),pV(),i.jsx(oN,{theme:e.themeMode,applyGlobal:!0,children:i.jsx(Sm,{delayDuration:200,skipDelayDuration:400,children:i.jsx(RV,{})})})}function hV(){return i.jsx(_x,{children:i.jsx(AV,{})})}tN.createRoot(document.getElementById("root")).render(i.jsx(hV,{}));