@pgplex/pgconsole 1.0.3 → 1.0.5

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.
@@ -21,7 +21,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
21
21
  ${rect.right}px ${rect.top}px,
22
22
  ${rect.left}px ${rect.top}px
23
23
  )`}return(0,import_jsx_runtime.jsx)(`div`,{ref,role:`presentation`,"data-base-ui-inert":``,...otherProps,style:{position:`fixed`,inset:0,userSelect:`none`,WebkitUserSelect:`none`,clipPath}})}),MenuPositioner=import_react.forwardRef(function(componentProps,forwardedRef){let{anchor:anchorProp,positionMethod:positionMethodProp=`absolute`,className,render,side,align:alignProp,sideOffset:sideOffsetProp=0,alignOffset:alignOffsetProp=0,collisionBoundary=`clipping-ancestors`,collisionPadding=5,arrowPadding=5,sticky=!1,disableAnchorTracking=!1,collisionAvoidance:collisionAvoidanceProp=DROPDOWN_COLLISION_AVOIDANCE,...elementProps}=componentProps,{store}=useMenuRootContext(),keepMounted=useMenuPortalContext(),contextMenuContext=useContextMenuRootContext(!0),parent=store.useState(`parent`),floatingRootContext=store.useState(`floatingRootContext`),floatingTreeRoot=store.useState(`floatingTreeRoot`),mounted=store.useState(`mounted`),open=store.useState(`open`),modal=store.useState(`modal`),triggerElement=store.useState(`activeTriggerElement`),lastOpenChangeReason=store.useState(`lastOpenChangeReason`),floatingNodeId=store.useState(`floatingNodeId`),floatingParentNodeId=store.useState(`floatingParentNodeId`),anchor=anchorProp,sideOffset=sideOffsetProp,alignOffset=alignOffsetProp,align=alignProp,collisionAvoidance=collisionAvoidanceProp;parent.type===`context-menu`&&(anchor=anchorProp??parent.context?.anchor,align??=`start`,!side&&align!==`center`&&(alignOffset=componentProps.alignOffset??2,sideOffset=componentProps.sideOffset??-5));let computedSide=side,computedAlign=align;parent.type===`menu`?(computedSide??=`inline-end`,computedAlign??=`start`,collisionAvoidance=componentProps.collisionAvoidance??POPUP_COLLISION_AVOIDANCE):parent.type===`menubar`&&(computedSide??=`bottom`,computedAlign??=`start`);let contextMenu=parent.type===`context-menu`,positioner=useAnchorPositioning({anchor,floatingRootContext,positionMethod:contextMenuContext?`fixed`:positionMethodProp,mounted,side:computedSide,sideOffset,align:computedAlign,alignOffset,arrowPadding:contextMenu?0:arrowPadding,collisionBoundary,collisionPadding,sticky,nodeId:floatingNodeId,keepMounted,disableAnchorTracking,collisionAvoidance,shiftCrossAxis:contextMenu,externalTree:floatingTreeRoot}),positionerProps=import_react.useMemo(()=>{let hiddenStyles={};return open||(hiddenStyles.pointerEvents=`none`),{role:`presentation`,hidden:!mounted,style:{...positioner.positionerStyles,...hiddenStyles}}},[open,mounted,positioner.positionerStyles]);import_react.useEffect(()=>{function onMenuOpenChange(details){details.open?(details.parentNodeId===floatingNodeId&&store.set(`hoverEnabled`,!1),details.nodeId!==floatingNodeId&&details.parentNodeId===store.select(`floatingParentNodeId`)&&store.setOpen(!1,createChangeEventDetails(siblingOpen))):details.parentNodeId===floatingNodeId&&details.reason!==`sibling-open`&&store.set(`hoverEnabled`,!0)}return floatingTreeRoot.events.on(`menuopenchange`,onMenuOpenChange),()=>{floatingTreeRoot.events.off(`menuopenchange`,onMenuOpenChange)}},[store,floatingTreeRoot.events,floatingNodeId]),import_react.useEffect(()=>{if(store.select(`floatingParentNodeId`)==null)return;function onParentClose(details){if(details.open||details.nodeId!==store.select(`floatingParentNodeId`))return;let reason=details.reason??`sibling-open`;store.setOpen(!1,createChangeEventDetails(reason))}return floatingTreeRoot.events.on(`menuopenchange`,onParentClose),()=>{floatingTreeRoot.events.off(`menuopenchange`,onParentClose)}},[floatingTreeRoot.events,store]),import_react.useEffect(()=>{function onItemHover(event){!open||event.nodeId!==store.select(`floatingParentNodeId`)||event.target&&triggerElement&&triggerElement!==event.target&&store.setOpen(!1,createChangeEventDetails(siblingOpen))}return floatingTreeRoot.events.on(`itemhover`,onItemHover),()=>{floatingTreeRoot.events.off(`itemhover`,onItemHover)}},[floatingTreeRoot.events,open,triggerElement,store]),import_react.useEffect(()=>{let eventDetails={open,nodeId:floatingNodeId,parentNodeId:floatingParentNodeId,reason:store.select(`lastOpenChangeReason`)};floatingTreeRoot.events.emit(`menuopenchange`,eventDetails)},[floatingTreeRoot.events,open,store,floatingNodeId,floatingParentNodeId]);let state$1=import_react.useMemo(()=>({open,side:positioner.side,align:positioner.align,anchorHidden:positioner.anchorHidden,nested:parent.type===`menu`}),[open,positioner.side,positioner.align,positioner.anchorHidden,parent.type]),contextValue=import_react.useMemo(()=>({side:positioner.side,align:positioner.align,arrowRef:positioner.arrowRef,arrowUncentered:positioner.arrowUncentered,arrowStyles:positioner.arrowStyles,nodeId:positioner.context.nodeId}),[positioner.side,positioner.align,positioner.arrowRef,positioner.arrowUncentered,positioner.arrowStyles,positioner.context.nodeId]),element$3=useRenderElement(`div`,componentProps,{state:state$1,stateAttributesMapping:popupStateMapping,ref:[forwardedRef,store.useStateSetter(`positionerElement`)],props:[positionerProps,elementProps]}),shouldRenderBackdrop=mounted&&parent.type!==`menu`&&(parent.type!==`menubar`&&modal&&lastOpenChangeReason!==`trigger-hover`||parent.type===`menubar`&&parent.context.modal),backdropCutout=null;return parent.type===`menubar`?backdropCutout=parent.context.contentElement:parent.type===void 0&&(backdropCutout=triggerElement),(0,import_jsx_runtime.jsxs)(MenuPositionerContext.Provider,{value:contextValue,children:[shouldRenderBackdrop&&(0,import_jsx_runtime.jsx)(InternalBackdrop,{ref:parent.type===`context-menu`||parent.type===`nested-context-menu`?parent.context.internalBackdropRef:null,inert:inertValue(!open),cutout:backdropCutout}),(0,import_jsx_runtime.jsx)(FloatingNode,{id:floatingNodeId,children:(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef:store.context.itemDomElements,labelsRef:store.context.itemLabels,children:element$3})})]})});var originalHtmlStyles={},originalBodyStyles={},originalHtmlScrollBehavior=``;function hasInsetScrollbars(referenceElement){if(typeof document>`u`)return!1;let doc$1=ownerDocument(referenceElement);return getWindow(doc$1).innerWidth-doc$1.documentElement.clientWidth>0}function supportsStableScrollbarGutter(referenceElement){if(!(typeof CSS<`u`&&CSS.supports&&CSS.supports(`scrollbar-gutter`,`stable`))||typeof document>`u`)return!1;let html$5=ownerDocument(referenceElement).documentElement,originalStyles={scrollbarGutter:html$5.style.scrollbarGutter,overflowY:html$5.style.overflowY};html$5.style.scrollbarGutter=`stable`,html$5.style.overflowY=`scroll`;let before=html$5.offsetWidth;html$5.style.overflowY=`hidden`;let after=html$5.offsetWidth;return Object.assign(html$5.style,originalStyles),before===after}function preventScrollOverlayScrollbars(referenceElement){let doc$1=ownerDocument(referenceElement),html$5=doc$1.documentElement,body$2=doc$1.body,elementToLock=isOverflowElement(html$5)?html$5:body$2,originalOverflow=elementToLock.style.overflow;return elementToLock.style.overflow=`hidden`,()=>{elementToLock.style.overflow=originalOverflow}}function preventScrollInsetScrollbars(referenceElement){let doc$1=ownerDocument(referenceElement),html$5=doc$1.documentElement,body$2=doc$1.body,win=getWindow(html$5),scrollTop=0,scrollLeft=0,updateGutterOnly=!1,resizeFrame=AnimationFrame.create();if(isWebKit&&(win.visualViewport?.scale??1)!==1)return()=>{};function lockScroll(){let htmlStyles=win.getComputedStyle(html$5),bodyStyles=win.getComputedStyle(body$2),scrollbarGutterValue=(htmlStyles.scrollbarGutter||``).includes(`both-edges`)?`stable both-edges`:`stable`;scrollTop=html$5.scrollTop,scrollLeft=html$5.scrollLeft,originalHtmlStyles={scrollbarGutter:html$5.style.scrollbarGutter,overflowY:html$5.style.overflowY,overflowX:html$5.style.overflowX},originalHtmlScrollBehavior=html$5.style.scrollBehavior,originalBodyStyles={position:body$2.style.position,height:body$2.style.height,width:body$2.style.width,boxSizing:body$2.style.boxSizing,overflowY:body$2.style.overflowY,overflowX:body$2.style.overflowX,scrollBehavior:body$2.style.scrollBehavior};let isScrollableY=html$5.scrollHeight>html$5.clientHeight,isScrollableX=html$5.scrollWidth>html$5.clientWidth,hasConstantOverflowY=htmlStyles.overflowY===`scroll`||bodyStyles.overflowY===`scroll`,hasConstantOverflowX=htmlStyles.overflowX===`scroll`||bodyStyles.overflowX===`scroll`,scrollbarWidth=Math.max(0,win.innerWidth-body$2.clientWidth),scrollbarHeight=Math.max(0,win.innerHeight-body$2.clientHeight),marginY=parseFloat(bodyStyles.marginTop)+parseFloat(bodyStyles.marginBottom),marginX=parseFloat(bodyStyles.marginLeft)+parseFloat(bodyStyles.marginRight),elementToLock=isOverflowElement(html$5)?html$5:body$2;if(updateGutterOnly=supportsStableScrollbarGutter(referenceElement),updateGutterOnly){html$5.style.scrollbarGutter=scrollbarGutterValue,elementToLock.style.overflowY=`hidden`,elementToLock.style.overflowX=`hidden`;return}Object.assign(html$5.style,{scrollbarGutter:scrollbarGutterValue,overflowY:`hidden`,overflowX:`hidden`}),(isScrollableY||hasConstantOverflowY)&&(html$5.style.overflowY=`scroll`),(isScrollableX||hasConstantOverflowX)&&(html$5.style.overflowX=`scroll`),Object.assign(body$2.style,{position:`relative`,height:marginY||scrollbarHeight?`calc(100dvh - ${marginY+scrollbarHeight}px)`:`100dvh`,width:marginX||scrollbarWidth?`calc(100vw - ${marginX+scrollbarWidth}px)`:`100vw`,boxSizing:`border-box`,overflow:`hidden`,scrollBehavior:`unset`}),body$2.scrollTop=scrollTop,body$2.scrollLeft=scrollLeft,html$5.setAttribute(`data-base-ui-scroll-locked`,``),html$5.style.scrollBehavior=`unset`}function cleanup(){Object.assign(html$5.style,originalHtmlStyles),Object.assign(body$2.style,originalBodyStyles),updateGutterOnly||(html$5.scrollTop=scrollTop,html$5.scrollLeft=scrollLeft,html$5.removeAttribute(`data-base-ui-scroll-locked`),html$5.style.scrollBehavior=originalHtmlScrollBehavior)}function handleResize(){cleanup(),resizeFrame.request(lockScroll)}return lockScroll(),win.addEventListener(`resize`,handleResize),()=>{resizeFrame.cancel(),cleanup(),typeof win.removeEventListener==`function`&&win.removeEventListener(`resize`,handleResize)}}var ScrollLocker=class{lockCount=0;restore=null;timeoutLock=Timeout.create();timeoutUnlock=Timeout.create();acquire(referenceElement){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(referenceElement)),this.release}release=()=>{--this.lockCount,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{this.lockCount===0&&this.restore&&(this.restore?.(),this.restore=null)};lock(referenceElement){if(this.lockCount===0||this.restore!==null)return;let html$5=ownerDocument(referenceElement).documentElement,htmlOverflowY=getWindow(html$5).getComputedStyle(html$5).overflowY;if(htmlOverflowY===`hidden`||htmlOverflowY===`clip`){this.restore=NOOP;return}this.restore=isIOS||!hasInsetScrollbars(referenceElement)?preventScrollOverlayScrollbars(referenceElement):preventScrollInsetScrollbars(referenceElement)}},SCROLL_LOCKER=new ScrollLocker;function useScrollLock(enabled=!0,referenceElement=null){useIsoLayoutEffect(()=>{if(enabled)return SCROLL_LOCKER.acquire(referenceElement)},[enabled,referenceElement])}const MenubarContext=import_react.createContext(null);function useMenubarContext(optional){let context=import_react.useContext(MenubarContext);if(context===null&&!optional)throw Error(formatErrorMessage(5));return context}function useEnhancedClickHandler(handler){let lastClickInteractionTypeRef=import_react.useRef(``),handlePointerDown=import_react.useCallback(event=>{event.defaultPrevented||(lastClickInteractionTypeRef.current=event.pointerType,handler(event,event.pointerType))},[handler]);return{onClick:import_react.useCallback(event=>{if(event.detail===0){handler(event,`keyboard`);return}`pointerType`in event&&handler(event,event.pointerType),handler(event,lastClickInteractionTypeRef.current),lastClickInteractionTypeRef.current=``},[handler]),onPointerDown:handlePointerDown}}function useOpenInteractionType(open){let[openMethod,setOpenMethod]=import_react.useState(null),handleTriggerClick=useStableCallback((_$2,interactionType)=>{open||setOpenMethod(interactionType||(isIOS?`touch`:``))}),reset=import_react.useCallback(()=>{setOpenMethod(null)},[]),{onClick,onPointerDown}=useEnhancedClickHandler(handleTriggerClick);return import_react.useMemo(()=>({openMethod,reset,triggerProps:{onClick,onPointerDown}}),[openMethod,reset,onClick,onPointerDown])}var selectors$2={...popupStoreSelectors,disabled:createSelector(state$1=>state$1.parent.type===`menubar`&&state$1.parent.context.disabled||state$1.disabled),modal:createSelector(state$1=>(state$1.parent.type===void 0||state$1.parent.type===`context-menu`)&&(state$1.modal??!0)),allowMouseEnter:createSelector(state$1=>state$1.parent.type===`menu`?state$1.parent.store.select(`allowMouseEnter`):state$1.allowMouseEnter),stickIfOpen:createSelector(state$1=>state$1.stickIfOpen),parent:createSelector(state$1=>state$1.parent),rootId:createSelector(state$1=>state$1.parent.type===`menu`?state$1.parent.store.select(`rootId`):state$1.parent.type===void 0?state$1.rootId:state$1.parent.context.rootId),activeIndex:createSelector(state$1=>state$1.activeIndex),isActive:createSelector((state$1,itemIndex)=>state$1.activeIndex===itemIndex),hoverEnabled:createSelector(state$1=>state$1.hoverEnabled),instantType:createSelector(state$1=>state$1.instantType),lastOpenChangeReason:createSelector(state$1=>state$1.openChangeReason),floatingTreeRoot:createSelector(state$1=>state$1.parent.type===`menu`?state$1.parent.store.select(`floatingTreeRoot`):state$1.floatingTreeRoot),floatingNodeId:createSelector(state$1=>state$1.floatingNodeId),floatingParentNodeId:createSelector(state$1=>state$1.floatingParentNodeId),itemProps:createSelector(state$1=>state$1.itemProps),closeDelay:createSelector(state$1=>state$1.closeDelay),keyboardEventRelay:createSelector(state$1=>{if(state$1.keyboardEventRelay)return state$1.keyboardEventRelay;if(state$1.parent.type===`menu`)return state$1.parent.store.select(`keyboardEventRelay`)})},MenuStore=class MenuStore extends ReactStore{constructor(initialState){super({...createInitialState$1(),...initialState},{positionerRef:import_react.createRef(),popupRef:import_react.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:import_react.createRef(),beforeContentFocusGuardRef:import_react.createRef(),onOpenChangeComplete:void 0,triggerElements:new PopupTriggerMap},selectors$2),this.observe(createSelector(state$1=>state$1.allowMouseEnter),(allowMouseEnter,oldValue)=>{this.state.parent.type===`menu`&&allowMouseEnter!==oldValue&&this.state.parent.store.set(`allowMouseEnter`,allowMouseEnter)}),this.unsubscribeParentListener=this.observe(`parent`,parent=>{if(this.unsubscribeParentListener?.(),parent.type===`menu`){this.unsubscribeParentListener=parent.store.subscribe(()=>{this.notifyAll()}),this.context.allowMouseUpTriggerRef=parent.store.context.allowMouseUpTriggerRef;return}parent.type!==void 0&&(this.context.allowMouseUpTriggerRef=parent.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(open,eventDetails){this.state.floatingRootContext.context.events.emit(`setOpen`,{open,eventDetails})}static useStore(externalStore,initialState){let internalStore=useRefWithInit(()=>new MenuStore(initialState)).current;return externalStore??internalStore}unsubscribeParentListener=null};function createInitialState$1(){return{...createInitialPopupStoreState(),disabled:!1,modal:!0,allowMouseEnter:!0,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0}}const MenuSubmenuRootContext=import_react.createContext(void 0);function useMenuSubmenuRootContext(){return import_react.useContext(MenuSubmenuRootContext)}var import_react_dom$6=__toESM(require_react_dom());function MenuRoot(props){let{children,open:openProp,onOpenChange,onOpenChangeComplete,defaultOpen=!1,disabled:disabledProp=!1,modal:modalProp,loopFocus=!0,orientation=`vertical`,actionsRef,closeParentOnEsc=!1,handle:handle$1,triggerId:triggerIdProp,defaultTriggerId:defaultTriggerIdProp=null,highlightItemOnHover=!0}=props,contextMenuContext=useContextMenuRootContext(!0),parentMenuRootContext=useMenuRootContext(!0),menubarContext=useMenubarContext(!0),isSubmenu=useMenuSubmenuRootContext(),parentFromContext=import_react.useMemo(()=>isSubmenu&&parentMenuRootContext?{type:`menu`,store:parentMenuRootContext.store}:menubarContext?{type:`menubar`,context:menubarContext}:contextMenuContext&&!parentMenuRootContext?{type:`context-menu`,context:contextMenuContext}:{type:void 0},[contextMenuContext,parentMenuRootContext,menubarContext,isSubmenu]),store=MenuStore.useStore(handle$1?.store,{parent:parentFromContext}),floatingTreeRoot=store.useState(`floatingTreeRoot`),floatingNodeIdFromContext=useFloatingNodeId(floatingTreeRoot),floatingParentNodeIdFromContext=useFloatingParentNodeId();useIsoLayoutEffect(()=>{contextMenuContext&&!parentMenuRootContext?store.update({parent:{type:`context-menu`,context:contextMenuContext},floatingNodeId:floatingNodeIdFromContext,floatingParentNodeId:floatingParentNodeIdFromContext}):parentMenuRootContext&&store.update({floatingNodeId:floatingNodeIdFromContext,floatingParentNodeId:floatingParentNodeIdFromContext})},[contextMenuContext,parentMenuRootContext,floatingNodeIdFromContext,floatingParentNodeIdFromContext,store]),store.useControlledProp(`open`,openProp,defaultOpen),store.useControlledProp(`activeTriggerId`,triggerIdProp,defaultTriggerIdProp),store.useContextCallback(`onOpenChangeComplete`,onOpenChangeComplete);let open=store.useState(`open`),activeTriggerElement=store.useState(`activeTriggerElement`),positionerElement=store.useState(`positionerElement`),hoverEnabled=store.useState(`hoverEnabled`),modal=store.useState(`modal`),disabled$1=store.useState(`disabled`),lastOpenChangeReason=store.useState(`lastOpenChangeReason`),parent=store.useState(`parent`),activeIndex=store.useState(`activeIndex`),payload=store.useState(`payload`),floatingParentNodeId=store.useState(`floatingParentNodeId`),openEventRef=import_react.useRef(null),nested=floatingParentNodeId!=null,floatingEvents;store.useSyncedValues({disabled:disabledProp,modal:parent.type===void 0?modalProp:void 0,rootId:useId()});let{openMethod,triggerProps:interactionTypeProps,reset:resetOpenInteractionType}=useOpenInteractionType(open);useImplicitActiveTrigger(store);let{forceUnmount}=useOpenStateTransitions(open,store,()=>{store.update({allowMouseEnter:!1,stickIfOpen:!0}),resetOpenInteractionType()}),allowOutsidePressDismissalRef=import_react.useRef(parent.type!==`context-menu`),allowOutsidePressDismissalTimeout=useTimeout();import_react.useEffect(()=>{if(open||(openEventRef.current=null),parent.type===`context-menu`){if(!open){allowOutsidePressDismissalTimeout.clear(),allowOutsidePressDismissalRef.current=!1;return}allowOutsidePressDismissalTimeout.start(500,()=>{allowOutsidePressDismissalRef.current=!0})}},[allowOutsidePressDismissalTimeout,open,parent.type]),useScrollLock(open&&modal&&lastOpenChangeReason!==`trigger-hover`&&openMethod!==`touch`,positionerElement),useIsoLayoutEffect(()=>{!open&&!hoverEnabled&&store.set(`hoverEnabled`,!0)},[open,hoverEnabled,store]);let allowTouchToCloseRef=import_react.useRef(!0),allowTouchToCloseTimeout=useTimeout(),setOpen=useStableCallback((nextOpen,eventDetails)=>{let reason=eventDetails.reason;if(open===nextOpen&&eventDetails.trigger===activeTriggerElement&&lastOpenChangeReason===reason||(eventDetails.preventUnmountOnClose=()=>{store.set(`preventUnmountingOnClose`,!0)},!nextOpen&&eventDetails.trigger==null&&(eventDetails.trigger=activeTriggerElement??void 0),onOpenChange?.(nextOpen,eventDetails),eventDetails.isCanceled))return;let details={open:nextOpen,nativeEvent:eventDetails.event,reason:eventDetails.reason,nested};floatingEvents?.emit(`openchange`,details);let nativeEvent=eventDetails.event;if(nextOpen===!1&&nativeEvent?.type===`click`&&nativeEvent.pointerType===`touch`&&!allowTouchToCloseRef.current)return;if(!nextOpen&&activeIndex!==null){let activeOption=store.context.itemDomElements.current[activeIndex];queueMicrotask(()=>{activeOption?.setAttribute(`tabindex`,`-1`)})}nextOpen&&reason===`trigger-focus`?(allowTouchToCloseRef.current=!1,allowTouchToCloseTimeout.start(300,()=>{allowTouchToCloseRef.current=!0})):(allowTouchToCloseRef.current=!0,allowTouchToCloseTimeout.clear());let isKeyboardClick=(reason===`trigger-press`||reason===`item-press`)&&nativeEvent.detail===0&&nativeEvent?.isTrusted,isDismissClose=!nextOpen&&(reason===`escape-key`||reason==null);function changeState(){let updatedState={open:nextOpen,openChangeReason:reason};openEventRef.current=eventDetails.event??null;let newTriggerId=eventDetails.trigger?.id??null;(newTriggerId||nextOpen)&&(updatedState.activeTriggerId=newTriggerId,updatedState.activeTriggerElement=eventDetails.trigger??null),store.update(updatedState)}reason===`trigger-hover`?import_react_dom$6.flushSync(changeState):changeState(),parent.type===`menubar`&&(reason===`trigger-focus`||reason===`focus-out`||reason===`trigger-hover`||reason===`list-navigation`||reason===`sibling-open`)?store.set(`instantType`,`group`):isKeyboardClick||isDismissClose?store.set(`instantType`,isKeyboardClick?`click`:`dismiss`):store.set(`instantType`,void 0)}),createMenuEventDetails=import_react.useCallback(reason=>{let details=createChangeEventDetails(reason);return details.preventUnmountOnClose=()=>{store.set(`preventUnmountingOnClose`,!0)},details},[store]),handleImperativeClose=import_react.useCallback(()=>{store.setOpen(!1,createMenuEventDetails(imperativeAction))},[store,createMenuEventDetails]);import_react.useImperativeHandle(actionsRef,()=>({unmount:forceUnmount,close:handleImperativeClose}),[forceUnmount,handleImperativeClose]);let ctx;parent.type===`context-menu`&&(ctx=parent.context),import_react.useImperativeHandle(ctx?.positionerRef,()=>positionerElement,[positionerElement]),import_react.useImperativeHandle(ctx?.actionsRef,()=>({setOpen}),[setOpen]);let floatingRootContext=useSyncedFloatingRootContext({popupStore:store,onOpenChange:setOpen});floatingEvents=floatingRootContext.context.events,import_react.useEffect(()=>{let handleSetOpenEvent=({open:nextOpen,eventDetails})=>setOpen(nextOpen,eventDetails);return floatingEvents.on(`setOpen`,handleSetOpenEvent),()=>{floatingEvents?.off(`setOpen`,handleSetOpenEvent)}},[floatingEvents,setOpen]);let dismiss=useDismiss(floatingRootContext,{enabled:!disabled$1,bubbles:{escapeKey:closeParentOnEsc&&parent.type===`menu`},outsidePress(){return parent.type!==`context-menu`||openEventRef.current?.type===`contextmenu`?!0:allowOutsidePressDismissalRef.current},externalTree:nested?floatingTreeRoot:void 0}),role=useRole(floatingRootContext,{role:`menu`}),direction=useDirection(),setActiveIndex=import_react.useCallback(index$4=>{store.select(`activeIndex`)!==index$4&&store.set(`activeIndex`,index$4)},[store]),listNavigation$1=useListNavigation(floatingRootContext,{enabled:!disabled$1,listRef:store.context.itemDomElements,activeIndex,nested:parent.type!==void 0,loopFocus,orientation,parentOrientation:parent.type===`menubar`?parent.context.orientation:void 0,rtl:direction===`rtl`,disabledIndices:EMPTY_ARRAY,onNavigate:setActiveIndex,openOnArrowKeyDown:parent.type!==`context-menu`,externalTree:nested?floatingTreeRoot:void 0,focusItemOnHover:highlightItemOnHover}),onTypingChange=import_react.useCallback(nextTyping=>{store.context.typingRef.current=nextTyping},[store]),{getReferenceProps,getFloatingProps,getItemProps,getTriggerProps}=useInteractions([dismiss,role,listNavigation$1,useTypeahead(floatingRootContext,{listRef:store.context.itemLabels,activeIndex,resetMs:500,onMatch:index$4=>{open&&index$4!==activeIndex&&store.set(`activeIndex`,index$4)},onTypingChange})]),activeTriggerProps=import_react.useMemo(()=>{let mergedProps=mergeProps(getReferenceProps(),{onMouseEnter(){store.set(`hoverEnabled`,!0)},onMouseMove(){store.set(`allowMouseEnter`,!0)}},interactionTypeProps);return delete mergedProps.role,mergedProps},[getReferenceProps,store,interactionTypeProps]),inactiveTriggerProps=import_react.useMemo(()=>{let triggerProps=getTriggerProps();if(!triggerProps)return triggerProps;let mergedProps=mergeProps(triggerProps,interactionTypeProps);return delete mergedProps.role,delete mergedProps[`aria-controls`],mergedProps},[getTriggerProps,interactionTypeProps]),disableHoverTimeout=useAnimationFrame(),popupProps=import_react.useMemo(()=>getFloatingProps({onMouseEnter(){parent.type===`menu`&&disableHoverTimeout.request(()=>store.set(`hoverEnabled`,!1))},onMouseMove(){store.set(`allowMouseEnter`,!0)},onClick(){store.select(`hoverEnabled`)&&store.set(`hoverEnabled`,!1)},onKeyDown(event){let relay=store.select(`keyboardEventRelay`);relay&&!event.isPropagationStopped()&&relay(event)}}),[getFloatingProps,parent.type,disableHoverTimeout,store]),itemProps=import_react.useMemo(()=>getItemProps(),[getItemProps]);store.useSyncedValues({floatingRootContext,activeTriggerProps,inactiveTriggerProps,popupProps,itemProps});let context=import_react.useMemo(()=>({store,parent:parentFromContext}),[store,parentFromContext]),content$3=(0,import_jsx_runtime.jsx)(MenuRootContext.Provider,{value:context,children:typeof children==`function`?children({payload}):children});return parent.type===void 0||parent.type===`context-menu`?(0,import_jsx_runtime.jsx)(FloatingTree,{externalTree:floatingTreeRoot,children:content$3}):content$3}function getPseudoElementBounds(element$3){let elementRect=element$3.getBoundingClientRect(),beforeStyles=window.getComputedStyle(element$3,`::before`),afterStyles=window.getComputedStyle(element$3,`::after`);if(!(beforeStyles.content!==`none`||afterStyles.content!==`none`))return elementRect;let beforeWidth=parseFloat(beforeStyles.width)||0,beforeHeight=parseFloat(beforeStyles.height)||0,afterWidth=parseFloat(afterStyles.width)||0,afterHeight=parseFloat(afterStyles.height)||0,totalWidth=Math.max(elementRect.width,beforeWidth,afterWidth),totalHeight=Math.max(elementRect.height,beforeHeight,afterHeight),widthDiff=totalWidth-elementRect.width,heightDiff=totalHeight-elementRect.height;return{left:elementRect.left-widthDiff/2,right:elementRect.right+widthDiff/2,top:elementRect.top-heightDiff/2,bottom:elementRect.bottom+heightDiff/2}}function useCompositeItem(params={}){let{highlightItemOnHover,highlightedIndex,onHighlightedIndexChange}=useCompositeRootContext(),{ref,index:index$4}=useCompositeListItem(params),isHighlighted=highlightedIndex===index$4,itemRef=import_react.useRef(null),mergedRef=useMergedRefs(ref,itemRef);return{compositeProps:import_react.useMemo(()=>({tabIndex:isHighlighted?0:-1,onFocus(){onHighlightedIndexChange(index$4)},onMouseMove(){let item=itemRef.current;if(!highlightItemOnHover||!item)return;let disabled$1=item.hasAttribute(`disabled`)||item.ariaDisabled===`true`;!isHighlighted&&!disabled$1&&item.focus()}}),[isHighlighted,onHighlightedIndexChange,index$4,highlightItemOnHover]),compositeRef:mergedRef,index:index$4}}function CompositeItem(componentProps){let{render,className,state:state$1=EMPTY_OBJECT,props=EMPTY_ARRAY,refs=EMPTY_ARRAY,metadata,stateAttributesMapping:stateAttributesMapping$13,tag=`div`,...elementProps}=componentProps,{compositeProps,compositeRef}=useCompositeItem({metadata});return useRenderElement(tag,componentProps,{state:state$1,ref:[...refs,compositeRef],props:[compositeProps,...props,elementProps],stateAttributesMapping:stateAttributesMapping$13})}function findRootOwnerId(node$1){if(isHTMLElement(node$1)&&node$1.hasAttribute(`data-rootownerid`))return node$1.getAttribute(`data-rootownerid`)??void 0;if(!isLastTraversableNode(node$1))return findRootOwnerId(getParentNode(node$1))}function useMixedToggleClickHandler(params){let{enabled=!0,mouseDownAction,open}=params,ignoreClickRef=import_react.useRef(!1);return import_react.useMemo(()=>enabled?{onMouseDown:event=>{(mouseDownAction===`open`&&!open||mouseDownAction===`close`&&open)&&(ignoreClickRef.current=!0,ownerDocument(event.currentTarget).addEventListener(`click`,()=>{ignoreClickRef.current=!1},{once:!0}))},onClick:event=>{ignoreClickRef.current&&(ignoreClickRef.current=!1,event.preventBaseUIHandler())}}:EMPTY_OBJECT,[enabled,mouseDownAction,open])}var import_react_dom$5=__toESM(require_react_dom()),BOUNDARY_OFFSET$1=2;const MenuTrigger$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabledProp=!1,nativeButton=!0,id:idProp,openOnHover:openOnHoverProp,delay=100,closeDelay=0,handle:handle$1,payload,...elementProps}=componentProps,rootContext=useMenuRootContext(!0),store=handle$1?.store??rootContext?.store;if(!store)throw Error(formatErrorMessage(85));let thisTriggerId=useBaseUiId(idProp),isTriggerActive=store.useState(`isTriggerActive`,thisTriggerId),floatingRootContext=store.useState(`floatingRootContext`),isOpenedByThisTrigger=store.useState(`isOpenedByTrigger`,thisTriggerId),triggerElementRef=import_react.useRef(null),parent=useMenuParent(),compositeRootContext=useCompositeRootContext(!0),floatingTreeRootFromContext=useFloatingTree(),floatingTreeRoot=import_react.useMemo(()=>floatingTreeRootFromContext??new FloatingTreeStore,[floatingTreeRootFromContext]),{registerTrigger,isMountedByThisTrigger}=useTriggerDataForwarding(thisTriggerId,triggerElementRef,store,{payload,closeDelay,parent,floatingTreeRoot,floatingNodeId:useFloatingNodeId(floatingTreeRoot),floatingParentNodeId:useFloatingParentNodeId(),keyboardEventRelay:compositeRootContext?.relayKeyboardEvent}),isInMenubar=parent.type===`menubar`,rootDisabled=store.useState(`disabled`),disabled$1=disabledProp||rootDisabled||isInMenubar&&parent.context.disabled,{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton});import_react.useEffect(()=>{!isOpenedByThisTrigger&&parent.type===void 0&&(store.context.allowMouseUpTriggerRef.current=!1)},[store,isOpenedByThisTrigger,parent.type]);let triggerRef=import_react.useRef(null),allowMouseUpTriggerTimeout=useTimeout(),handleDocumentMouseUp=useStableCallback(mouseEvent=>{if(!triggerRef.current)return;allowMouseUpTriggerTimeout.clear(),store.context.allowMouseUpTriggerRef.current=!1;let mouseUpTarget=mouseEvent.target;if(contains(triggerRef.current,mouseUpTarget)||contains(store.select(`positionerElement`),mouseUpTarget)||mouseUpTarget===triggerRef.current||mouseUpTarget!=null&&findRootOwnerId(mouseUpTarget)===store.select(`rootId`))return;let bounds=getPseudoElementBounds(triggerRef.current);mouseEvent.clientX>=bounds.left-BOUNDARY_OFFSET$1&&mouseEvent.clientX<=bounds.right+BOUNDARY_OFFSET$1&&mouseEvent.clientY>=bounds.top-BOUNDARY_OFFSET$1&&mouseEvent.clientY<=bounds.bottom+BOUNDARY_OFFSET$1||floatingTreeRoot.events.emit(`close`,{domEvent:mouseEvent,reason:cancelOpen})});import_react.useEffect(()=>{isOpenedByThisTrigger&&store.select(`lastOpenChangeReason`)===`trigger-hover`&&ownerDocument(triggerRef.current).addEventListener(`mouseup`,handleDocumentMouseUp,{once:!0})},[isOpenedByThisTrigger,handleDocumentMouseUp,store]);let parentMenubarHasSubmenuOpen=isInMenubar&&parent.context.hasSubmenuOpen,hoverProps=useHoverReferenceInteraction(floatingRootContext,{enabled:(openOnHoverProp??parentMenubarHasSubmenuOpen)&&!disabled$1&&parent.type!==`context-menu`&&(!isInMenubar||parentMenubarHasSubmenuOpen&&!isMountedByThisTrigger),handleClose:safePolygon({blockPointerEvents:!isInMenubar}),mouseOnly:!0,move:!1,restMs:parent.type===void 0?delay:void 0,delay:{close:closeDelay},triggerElementRef,externalTree:floatingTreeRoot,isActiveTrigger:isTriggerActive}),stickIfOpen=useStickIfOpen(isOpenedByThisTrigger,store.select(`lastOpenChangeReason`)),click=useClick(floatingRootContext,{enabled:!disabled$1&&parent.type!==`context-menu`,event:isOpenedByThisTrigger&&isInMenubar?`click`:`mousedown`,toggle:!0,ignoreMouse:!1,stickIfOpen:parent.type===void 0?stickIfOpen:!1}),focus=useFocus(floatingRootContext,{enabled:!disabled$1&&parentMenubarHasSubmenuOpen}),mixedToggleHandlers=useMixedToggleClickHandler({open:isOpenedByThisTrigger,enabled:isInMenubar,mouseDownAction:`open`}),localInteractionProps=useInteractions([click,focus]),state$1=import_react.useMemo(()=>({disabled:disabled$1,open:isOpenedByThisTrigger}),[disabled$1,isOpenedByThisTrigger]),rootTriggerProps=store.useState(`triggerProps`,isMountedByThisTrigger),ref=[triggerRef,forwardedRef,buttonRef,registerTrigger,triggerElementRef],props=[localInteractionProps.getReferenceProps(),hoverProps??EMPTY_OBJECT,rootTriggerProps,{"aria-haspopup":`menu`,id:thisTriggerId,onMouseDown:event=>{store.select(`open`)||(allowMouseUpTriggerTimeout.start(200,()=>{store.context.allowMouseUpTriggerRef.current=!0}),ownerDocument(event.currentTarget).addEventListener(`mouseup`,handleDocumentMouseUp,{once:!0}))}},isInMenubar?{role:`menuitem`}:{},mixedToggleHandlers,elementProps,getButtonProps],preFocusGuardRef=import_react.useRef(null),handlePreFocusGuardFocus=useStableCallback(event=>{import_react_dom$5.flushSync(()=>{store.setOpen(!1,createChangeEventDetails(focusOut,event.nativeEvent,event.currentTarget))}),getTabbableBeforeElement(preFocusGuardRef.current)?.focus()}),handleFocusTargetFocus=useStableCallback(event=>{let currentPositionerElement=store.select(`positionerElement`);if(currentPositionerElement&&isOutsideEvent(event,currentPositionerElement))store.context.beforeContentFocusGuardRef.current?.focus();else{import_react_dom$5.flushSync(()=>{store.setOpen(!1,createChangeEventDetails(focusOut,event.nativeEvent,event.currentTarget))});let nextTabbable=getTabbableAfterElement(store.context.triggerFocusTargetRef.current||triggerElementRef.current);for(;nextTabbable!==null&&contains(currentPositionerElement,nextTabbable);){let prevTabbable=nextTabbable;if(nextTabbable=getNextTabbable(nextTabbable),nextTabbable===prevTabbable)break}nextTabbable?.focus()}}),element$3=useRenderElement(`button`,componentProps,{enabled:!isInMenubar,stateAttributesMapping:pressableTriggerOpenStateMapping,state:state$1,ref,props});return isInMenubar?(0,import_jsx_runtime.jsx)(CompositeItem,{tag:`button`,render,className,state:state$1,refs:ref,props,stateAttributesMapping:pressableTriggerOpenStateMapping}):isOpenedByThisTrigger?(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[(0,import_jsx_runtime.jsx)(FocusGuard,{ref:preFocusGuardRef,onFocus:handlePreFocusGuardFocus},`${thisTriggerId}-pre-focus-guard`),(0,import_jsx_runtime.jsx)(import_react.Fragment,{children:element$3},thisTriggerId),(0,import_jsx_runtime.jsx)(FocusGuard,{ref:store.context.triggerFocusTargetRef,onFocus:handleFocusTargetFocus},`${thisTriggerId}-post-focus-guard`)]}):(0,import_jsx_runtime.jsx)(import_react.Fragment,{children:element$3},thisTriggerId)});function useStickIfOpen(open,openReason){let stickIfOpenTimeout=useTimeout(),[stickIfOpen,setStickIfOpen]=import_react.useState(!1);return useIsoLayoutEffect(()=>{open&&openReason===`trigger-hover`?(setStickIfOpen(!0),stickIfOpenTimeout.start(500,()=>{setStickIfOpen(!1)})):open||(stickIfOpenTimeout.clear(),setStickIfOpen(!1))},[open,openReason,stickIfOpenTimeout]),stickIfOpen}function useMenuParent(){let contextMenuContext=useContextMenuRootContext(!0),parentContext=useMenuRootContext(!0),menubarContext=useMenubarContext(!0);return import_react.useMemo(()=>menubarContext?{type:`menubar`,context:menubarContext}:contextMenuContext&&!parentContext?{type:`context-menu`,context:contextMenuContext}:{type:void 0},[contextMenuContext,parentContext,menubarContext])}const Separator=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,orientation=`horizontal`,...elementProps}=componentProps;return useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({orientation}),[orientation]),ref:forwardedRef,props:[{role:`separator`,"aria-orientation":orientation},elementProps]})});var Menu=MenuRoot,MenuPortal=MenuPortal$1;function MenuTrigger(props){return(0,import_jsx_runtime.jsx)(MenuTrigger$1,{"data-slot":`menu-trigger`,...props})}function MenuPopup({children,className,sideOffset=4,align=`center`,alignOffset,side=`bottom`,...props}){return(0,import_jsx_runtime.jsx)(MenuPortal$1,{children:(0,import_jsx_runtime.jsx)(MenuPositioner,{align,alignOffset,className:`z-50`,"data-slot":`menu-positioner`,side,sideOffset,children:(0,import_jsx_runtime.jsx)(MenuPopup$1,{className:cn(`relative flex not-[class*='w-']:min-w-32 origin-(--transform-origin) rounded-lg border bg-popover bg-clip-padding shadow-lg outline-none transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] focus:outline-none has-data-starting-style:scale-98 has-data-starting-style:opacity-0 dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]`,className),"data-slot":`menu-popup`,...props,children:(0,import_jsx_runtime.jsx)(`div`,{className:`max-h-(--available-height) w-full overflow-y-auto p-1`,children})})})})}function MenuItem({className,inset,variant=`default`,...props}){return(0,import_jsx_runtime.jsx)(MenuItem$1,{className:cn(`[&_svg]:-mx-0.5 flex min-h-8 cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-inset:ps-8 data-[variant=destructive]:text-destructive-foreground data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,className),"data-inset":inset,"data-slot":`menu-item`,"data-variant":variant,...props})}function MenuSeparator({className,...props}){return(0,import_jsx_runtime.jsx)(Separator,{className:cn(`mx-2 my-1 h-px bg-border`,className),"data-slot":`menu-separator`,...props})}var badgeVariants=cva(`relative inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-sm border border-transparent font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11`,{defaultVariants:{size:`default`,variant:`default`},variants:{size:{default:`h-5.5 min-w-5.5 px-[calc(--spacing(1)-1px)] text-sm sm:h-4.5 sm:min-w-4.5 sm:text-xs`,lg:`h-6.5 min-w-6.5 px-[calc(--spacing(1.5)-1px)] text-base sm:h-5.5 sm:min-w-5.5 sm:text-sm`,sm:`h-5 min-w-5 rounded-[calc(var(--radius-sm)-2px)] px-[calc(--spacing(1)-1px)] text-xs sm:h-4 sm:min-w-4 sm:text-[.625rem]`},variant:{default:`bg-primary text-primary-foreground [button,a&]:hover:bg-primary/90`,destructive:`bg-destructive text-white [button,a&]:hover:bg-destructive/90`,error:`bg-destructive/8 text-destructive-foreground dark:bg-destructive/16`,info:`bg-info/8 text-info-foreground dark:bg-info/16`,muted:`bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400`,outline:`border-border bg-transparent dark:bg-input/32 [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48`,secondary:`bg-secondary text-secondary-foreground [button,a&]:hover:bg-secondary/90`,success:`bg-success/8 text-success-foreground dark:bg-success/16`,warning:`bg-warning/8 text-warning-foreground dark:bg-warning/16`}}});function Badge({className,variant,size:size$3,render,...props}){return useRender({defaultTagName:`span`,props:mergeProps({className:cn(badgeVariants({className,size:size$3,variant})),"data-slot":`badge`},props),render})}function assert(condition,msg){if(!condition)throw Error(msg)}var FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648;function assertInt32(arg){if(typeof arg!=`number`)throw Error(`invalid int 32: `+typeof arg);if(!Number.isInteger(arg)||arg>INT32_MAX||arg<INT32_MIN)throw Error(`invalid int 32: `+arg)}function assertUInt32(arg){if(typeof arg!=`number`)throw Error(`invalid uint 32: `+typeof arg);if(!Number.isInteger(arg)||arg>UINT32_MAX||arg<0)throw Error(`invalid uint 32: `+arg)}function assertFloat32(arg){if(typeof arg!=`number`)throw Error(`invalid float 32: `+typeof arg);if(Number.isFinite(arg)&&(arg>FLOAT32_MAX||arg<FLOAT32_MIN))throw Error(`invalid float 32: `+arg)}var enumTypeSymbol=Symbol(`@bufbuild/protobuf/enum-type`);function getEnumType(enumObject){let t$1=enumObject[enumTypeSymbol];return assert(t$1,`missing enum type on enum object`),t$1}function setEnumType(enumObject,typeName$1,values,opt){enumObject[enumTypeSymbol]=makeEnumType(typeName$1,values.map(v$1=>({no:v$1.no,name:v$1.name,localName:enumObject[v$1.no]})),opt)}function makeEnumType(typeName$1,values,_opt){let names=Object.create(null),numbers=Object.create(null),normalValues=[];for(let value of values){let n=normalizeEnumValue(value);normalValues.push(n),names[value.name]=n,numbers[value.no]=n}return{typeName:typeName$1,values:normalValues,findName(name$2){return names[name$2]},findNumber(no){return numbers[no]}}}function makeEnum(typeName$1,values,opt){let enumObject={};for(let value of values){let n=normalizeEnumValue(value);enumObject[n.localName]=n.no,enumObject[n.no]=n.localName}return setEnumType(enumObject,typeName$1,values,opt),enumObject}function normalizeEnumValue(value){return`localName`in value?value:Object.assign(Object.assign({},value),{localName:value.name})}var Message=class{equals(other){return this.getType().runtime.util.equals(this.getType(),this,other)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(bytes,options$1){let format=this.getType().runtime.bin,opt=format.makeReadOptions(options$1);return format.readMessage(this,opt.readerFactory(bytes),bytes.byteLength,opt),this}fromJson(jsonValue,options$1){let type=this.getType(),format=type.runtime.json,opt=format.makeReadOptions(options$1);return format.readMessage(type,jsonValue,opt,this),this}fromJsonString(jsonString,options$1){let json$1;try{json$1=JSON.parse(jsonString)}catch(e){throw Error(`cannot decode ${this.getType().typeName} from JSON: ${e instanceof Error?e.message:String(e)}`)}return this.fromJson(json$1,options$1)}toBinary(options$1){let bin=this.getType().runtime.bin,opt=bin.makeWriteOptions(options$1),writer=opt.writerFactory();return bin.writeMessage(this,writer,opt),writer.finish()}toJson(options$1){let json$1=this.getType().runtime.json,opt=json$1.makeWriteOptions(options$1);return json$1.writeMessage(this,opt)}toJsonString(options$1){var _a$1;let value=this.toJson(options$1);return JSON.stringify(value,null,options$1?.prettySpaces??0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}};function makeMessageType(runtime,typeName$1,fields,opt){var _a$1;let localName=opt?.localName??typeName$1.substring(typeName$1.lastIndexOf(`.`)+1),type={[localName]:function(data){runtime.util.initFields(this),runtime.util.initPartial(data,this)}}[localName];return Object.setPrototypeOf(type.prototype,new Message),Object.assign(type,{runtime,typeName:typeName$1,fields:runtime.util.newFieldList(fields),fromBinary(bytes,options$1){return new type().fromBinary(bytes,options$1)},fromJson(jsonValue,options$1){return new type().fromJson(jsonValue,options$1)},fromJsonString(jsonString,options$1){return new type().fromJsonString(jsonString,options$1)},equals(a$1,b$2){return runtime.util.equals(type,a$1,b$2)}}),type}function varint64read(){let lowBits=0,highBits=0;for(let shift$4=0;shift$4<28;shift$4+=7){let b$2=this.buf[this.pos++];if(lowBits|=(b$2&127)<<shift$4,!(b$2&128))return this.assertBounds(),[lowBits,highBits]}let middleByte=this.buf[this.pos++];if(lowBits|=(middleByte&15)<<28,highBits=(middleByte&112)>>4,!(middleByte&128))return this.assertBounds(),[lowBits,highBits];for(let shift$4=3;shift$4<=31;shift$4+=7){let b$2=this.buf[this.pos++];if(highBits|=(b$2&127)<<shift$4,!(b$2&128))return this.assertBounds(),[lowBits,highBits]}throw Error(`invalid varint`)}function varint64write(lo,hi,bytes){for(let i$3=0;i$3<28;i$3+=7){let shift$4=lo>>>i$3,hasNext=!(!(shift$4>>>7)&&hi==0),byte=(hasNext?shift$4|128:shift$4)&255;if(bytes.push(byte),!hasNext)return}let splitBits=lo>>>28&15|(hi&7)<<4,hasMoreBits=!!(hi>>3);if(bytes.push((hasMoreBits?splitBits|128:splitBits)&255),hasMoreBits){for(let i$3=3;i$3<31;i$3+=7){let shift$4=hi>>>i$3,hasNext=!!(shift$4>>>7),byte=(hasNext?shift$4|128:shift$4)&255;if(bytes.push(byte),!hasNext)return}bytes.push(hi>>>31&1)}}var TWO_PWR_32_DBL=4294967296;function int64FromString(dec$1){let minus=dec$1[0]===`-`;minus&&(dec$1=dec$1.slice(1));let base$1=1e6,lowBits=0,highBits=0;function add1e6digit(begin,end){let digit1e6=Number(dec$1.slice(begin,end));highBits*=base$1,lowBits=lowBits*base$1+digit1e6,lowBits>=TWO_PWR_32_DBL&&(highBits+=lowBits/TWO_PWR_32_DBL|0,lowBits%=TWO_PWR_32_DBL)}return add1e6digit(-24,-18),add1e6digit(-18,-12),add1e6digit(-12,-6),add1e6digit(-6),minus?negate(lowBits,highBits):newBits(lowBits,highBits)}function int64ToString(lo,hi){let bits=newBits(lo,hi),negative=bits.hi&2147483648;negative&&(bits=negate(bits.lo,bits.hi));let result=uInt64ToString(bits.lo,bits.hi);return negative?`-`+result:result}function uInt64ToString(lo,hi){if({lo,hi}=toUnsigned(lo,hi),hi<=2097151)return String(TWO_PWR_32_DBL*hi+lo);let low=lo&16777215,mid=(lo>>>24|hi<<8)&16777215,high=hi>>16&65535,digitA=low+mid*6777216+high*6710656,digitB=mid+high*8147497,digitC=high*2,base$1=1e7;return digitA>=base$1&&(digitB+=Math.floor(digitA/base$1),digitA%=base$1),digitB>=base$1&&(digitC+=Math.floor(digitB/base$1),digitB%=base$1),digitC.toString()+decimalFrom1e7WithLeadingZeros(digitB)+decimalFrom1e7WithLeadingZeros(digitA)}function toUnsigned(lo,hi){return{lo:lo>>>0,hi:hi>>>0}}function newBits(lo,hi){return{lo:lo|0,hi:hi|0}}function negate(lowBits,highBits){return highBits=~highBits,lowBits?lowBits=~lowBits+1:highBits+=1,newBits(lowBits,highBits)}var decimalFrom1e7WithLeadingZeros=digit1e7=>{let partial=String(digit1e7);return`0000000`.slice(partial.length)+partial};function varint32write(value,bytes){if(value>=0){for(;value>127;)bytes.push(value&127|128),value>>>=7;bytes.push(value)}else{for(let i$3=0;i$3<9;i$3++)bytes.push(value&127|128),value>>=7;bytes.push(1)}}function varint32read(){let b$2=this.buf[this.pos++],result=b$2&127;if(!(b$2&128)||(b$2=this.buf[this.pos++],result|=(b$2&127)<<7,!(b$2&128))||(b$2=this.buf[this.pos++],result|=(b$2&127)<<14,!(b$2&128))||(b$2=this.buf[this.pos++],result|=(b$2&127)<<21,!(b$2&128)))return this.assertBounds(),result;b$2=this.buf[this.pos++],result|=(b$2&15)<<28;for(let readBytes=5;b$2&128&&readBytes<10;readBytes++)b$2=this.buf[this.pos++];if(b$2&128)throw Error(`invalid varint`);return this.assertBounds(),result>>>0}function makeInt64Support(){let dv=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof dv.getBigInt64==`function`&&typeof dv.getBigUint64==`function`&&typeof dv.setBigInt64==`function`&&typeof dv.setBigUint64==`function`&&(typeof process!=`object`||{}.BUF_BIGINT_DISABLE!==`1`)){let MIN=BigInt(`-9223372036854775808`),MAX$1=BigInt(`9223372036854775807`),UMIN=BigInt(`0`),UMAX=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(value){let bi=typeof value==`bigint`?value:BigInt(value);if(bi>MAX$1||bi<MIN)throw Error(`int64 invalid: ${value}`);return bi},uParse(value){let bi=typeof value==`bigint`?value:BigInt(value);if(bi>UMAX||bi<UMIN)throw Error(`uint64 invalid: ${value}`);return bi},enc(value){return dv.setBigInt64(0,this.parse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},uEnc(value){return dv.setBigInt64(0,this.uParse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},dec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigInt64(0,!0)},uDec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigUint64(0,!0)}}}let assertInt64String=value=>assert(/^-?[0-9]+$/.test(value),`int64 invalid: ${value}`),assertUInt64String=value=>assert(/^[0-9]+$/.test(value),`uint64 invalid: ${value}`);return{zero:`0`,supported:!1,parse(value){return typeof value!=`string`&&(value=value.toString()),assertInt64String(value),value},uParse(value){return typeof value!=`string`&&(value=value.toString()),assertUInt64String(value),value},enc(value){return typeof value!=`string`&&(value=value.toString()),assertInt64String(value),int64FromString(value)},uEnc(value){return typeof value!=`string`&&(value=value.toString()),assertUInt64String(value),int64FromString(value)},dec(lo,hi){return int64ToString(lo,hi)},uDec(lo,hi){return uInt64ToString(lo,hi)}}}const protoInt64=makeInt64Support();var ScalarType;(function(ScalarType$1){ScalarType$1[ScalarType$1.DOUBLE=1]=`DOUBLE`,ScalarType$1[ScalarType$1.FLOAT=2]=`FLOAT`,ScalarType$1[ScalarType$1.INT64=3]=`INT64`,ScalarType$1[ScalarType$1.UINT64=4]=`UINT64`,ScalarType$1[ScalarType$1.INT32=5]=`INT32`,ScalarType$1[ScalarType$1.FIXED64=6]=`FIXED64`,ScalarType$1[ScalarType$1.FIXED32=7]=`FIXED32`,ScalarType$1[ScalarType$1.BOOL=8]=`BOOL`,ScalarType$1[ScalarType$1.STRING=9]=`STRING`,ScalarType$1[ScalarType$1.BYTES=12]=`BYTES`,ScalarType$1[ScalarType$1.UINT32=13]=`UINT32`,ScalarType$1[ScalarType$1.SFIXED32=15]=`SFIXED32`,ScalarType$1[ScalarType$1.SFIXED64=16]=`SFIXED64`,ScalarType$1[ScalarType$1.SINT32=17]=`SINT32`,ScalarType$1[ScalarType$1.SINT64=18]=`SINT64`})(ScalarType||={});var LongType;(function(LongType$1){LongType$1[LongType$1.BIGINT=0]=`BIGINT`,LongType$1[LongType$1.STRING=1]=`STRING`})(LongType||={});function scalarEquals(type,a$1,b$2){if(a$1===b$2)return!0;if(type==ScalarType.BYTES){if(!(a$1 instanceof Uint8Array)||!(b$2 instanceof Uint8Array)||a$1.length!==b$2.length)return!1;for(let i$3=0;i$3<a$1.length;i$3++)if(a$1[i$3]!==b$2[i$3])return!1;return!0}switch(type){case ScalarType.UINT64:case ScalarType.FIXED64:case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return a$1==b$2}return!1}function scalarZeroValue(type,longType){switch(type){case ScalarType.BOOL:return!1;case ScalarType.UINT64:case ScalarType.FIXED64:case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return longType==0?protoInt64.zero:`0`;case ScalarType.DOUBLE:case ScalarType.FLOAT:return 0;case ScalarType.BYTES:return new Uint8Array;case ScalarType.STRING:return``;default:return 0}}function isScalarZeroValue(type,value){switch(type){case ScalarType.BOOL:return value===!1;case ScalarType.STRING:return value===``;case ScalarType.BYTES:return value instanceof Uint8Array&&!value.byteLength;default:return value==0}}var WireType;(function(WireType$1){WireType$1[WireType$1.Varint=0]=`Varint`,WireType$1[WireType$1.Bit64=1]=`Bit64`,WireType$1[WireType$1.LengthDelimited=2]=`LengthDelimited`,WireType$1[WireType$1.StartGroup=3]=`StartGroup`,WireType$1[WireType$1.EndGroup=4]=`EndGroup`,WireType$1[WireType$1.Bit32=5]=`Bit32`})(WireType||={});var BinaryWriter=class{constructor(textEncoder){this.stack=[],this.textEncoder=textEncoder??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let len=0;for(let i$3=0;i$3<this.chunks.length;i$3++)len+=this.chunks[i$3].length;let bytes=new Uint8Array(len),offset$3=0;for(let i$3=0;i$3<this.chunks.length;i$3++)bytes.set(this.chunks[i$3],offset$3),offset$3+=this.chunks[i$3].length;return this.chunks=[],bytes}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let chunk=this.finish(),prev=this.stack.pop();if(!prev)throw Error(`invalid state, fork stack empty`);return this.chunks=prev.chunks,this.buf=prev.buf,this.uint32(chunk.byteLength),this.raw(chunk)}tag(fieldNo,type){return this.uint32((fieldNo<<3|type)>>>0)}raw(chunk){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(chunk),this}uint32(value){for(assertUInt32(value);value>127;)this.buf.push(value&127|128),value>>>=7;return this.buf.push(value),this}int32(value){return assertInt32(value),varint32write(value,this.buf),this}bool(value){return this.buf.push(value?1:0),this}bytes(value){return this.uint32(value.byteLength),this.raw(value)}string(value){let chunk=this.textEncoder.encode(value);return this.uint32(chunk.byteLength),this.raw(chunk)}float(value){assertFloat32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setFloat32(0,value,!0),this.raw(chunk)}double(value){let chunk=new Uint8Array(8);return new DataView(chunk.buffer).setFloat64(0,value,!0),this.raw(chunk)}fixed32(value){assertUInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setUint32(0,value,!0),this.raw(chunk)}sfixed32(value){assertInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setInt32(0,value,!0),this.raw(chunk)}sint32(value){return assertInt32(value),value=(value<<1^value>>31)>>>0,varint32write(value,this.buf),this}sfixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt64.enc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}fixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt64.uEnc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}int64(value){let tc=protoInt64.enc(value);return varint64write(tc.lo,tc.hi,this.buf),this}sint64(value){let tc=protoInt64.enc(value),sign=tc.hi>>31;return varint64write(tc.lo<<1^sign,(tc.hi<<1|tc.lo>>>31)^sign,this.buf),this}uint64(value){let tc=protoInt64.uEnc(value);return varint64write(tc.lo,tc.hi,this.buf),this}},BinaryReader=class{constructor(buf,textDecoder){this.varint64=varint64read,this.uint32=varint32read,this.buf=buf,this.len=buf.length,this.pos=0,this.view=new DataView(buf.buffer,buf.byteOffset,buf.byteLength),this.textDecoder=textDecoder??new TextDecoder}tag(){let tag=this.uint32(),fieldNo=tag>>>3,wireType=tag&7;if(fieldNo<=0||wireType<0||wireType>5)throw Error(`illegal tag: field no `+fieldNo+` wire type `+wireType);return[fieldNo,wireType]}skip(wireType,fieldNo){let start=this.pos;switch(wireType){case WireType.Varint:for(;this.buf[this.pos++]&128;);break;case WireType.Bit64:this.pos+=4;case WireType.Bit32:this.pos+=4;break;case WireType.LengthDelimited:let len=this.uint32();this.pos+=len;break;case WireType.StartGroup:for(;;){let[fn,wt]=this.tag();if(wt===WireType.EndGroup){if(fieldNo!==void 0&&fn!==fieldNo)throw Error(`invalid end group tag`);break}this.skip(wt,fn)}break;default:throw Error(`cant skip wire type `+wireType)}return this.assertBounds(),this.buf.subarray(start,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let zze=this.uint32();return zze>>>1^-(zze&1)}int64(){return protoInt64.dec(...this.varint64())}uint64(){return protoInt64.uDec(...this.varint64())}sint64(){let[lo,hi]=this.varint64(),s$1=-(lo&1);return lo=(lo>>>1|(hi&1)<<31)^s$1,hi=hi>>>1^s$1,protoInt64.dec(lo,hi)}bool(){let[lo,hi]=this.varint64();return lo!==0||hi!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return protoInt64.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return protoInt64.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let len=this.uint32(),start=this.pos;return this.pos+=len,this.assertBounds(),this.buf.subarray(start,start+len)}string(){return this.textDecoder.decode(this.bytes())}};function makeExtension(runtime,typeName$1,extendee,field){let fi;return{typeName:typeName$1,extendee,get field(){if(!fi){let i$3=typeof field==`function`?field():field;i$3.name=typeName$1.split(`.`).pop(),i$3.jsonName=`[${typeName$1}]`,fi=runtime.util.newFieldList([i$3]).list()[0]}return fi},runtime}}function createExtensionContainer(extension$1){let localName=extension$1.field.localName,container=Object.create(null);return container[localName]=initExtensionField(extension$1),[container,()=>container[localName]]}function initExtensionField(ext){let field=ext.field;if(field.repeated)return[];if(field.default!==void 0)return field.default;switch(field.kind){case`enum`:return field.T.values[0].no;case`scalar`:return scalarZeroValue(field.T,field.L);case`message`:let T$2=field.T,value=new T$2;return T$2.fieldWrapper?T$2.fieldWrapper.unwrapField(value):value;case`map`:throw`map fields are not allowed to be extensions`}}function filterUnknownFields(unknownFields,field){if(!field.repeated&&(field.kind==`enum`||field.kind==`scalar`)){for(let i$3=unknownFields.length-1;i$3>=0;--i$3)if(unknownFields[i$3].no==field.no)return[unknownFields[i$3]];return[]}return unknownFields.filter(uf=>uf.no===field.no)}var encTable=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.split(``),decTable=[];for(let i$3=0;i$3<encTable.length;i$3++)decTable[encTable[i$3].charCodeAt(0)]=i$3;decTable[45]=encTable.indexOf(`+`),decTable[95]=encTable.indexOf(`/`);const protoBase64={dec(base64Str){let es=base64Str.length*3/4;base64Str[base64Str.length-2]==`=`?es-=2:base64Str[base64Str.length-1]==`=`&&--es;let bytes=new Uint8Array(es),bytePos=0,groupPos=0,b$2,p$1=0;for(let i$3=0;i$3<base64Str.length;i$3++){if(b$2=decTable[base64Str.charCodeAt(i$3)],b$2===void 0)switch(base64Str[i$3]){case`=`:groupPos=0;case`
24
- `:case`\r`:case` `:case` `:continue;default:throw Error(`invalid base64 string.`)}switch(groupPos){case 0:p$1=b$2,groupPos=1;break;case 1:bytes[bytePos++]=p$1<<2|(b$2&48)>>4,p$1=b$2,groupPos=2;break;case 2:bytes[bytePos++]=(p$1&15)<<4|(b$2&60)>>2,p$1=b$2,groupPos=3;break;case 3:bytes[bytePos++]=(p$1&3)<<6|b$2,groupPos=0;break}}if(groupPos==1)throw Error(`invalid base64 string.`);return bytes.subarray(0,bytePos)},enc(bytes){let base64$2=``,groupPos=0,b$2,p$1=0;for(let i$3=0;i$3<bytes.length;i$3++)switch(b$2=bytes[i$3],groupPos){case 0:base64$2+=encTable[b$2>>2],p$1=(b$2&3)<<4,groupPos=1;break;case 1:base64$2+=encTable[p$1|b$2>>4],p$1=(b$2&15)<<2,groupPos=2;break;case 2:base64$2+=encTable[p$1|b$2>>6],base64$2+=encTable[b$2&63],groupPos=0;break}return groupPos&&(base64$2+=encTable[p$1],base64$2+=`=`,groupPos==1&&(base64$2+=`=`)),base64$2}};function getExtension(message,extension$1,options$1){assertExtendee(extension$1,message);let opt=extension$1.runtime.bin.makeReadOptions(options$1),ufs=filterUnknownFields(message.getType().runtime.bin.listUnknownFields(message),extension$1.field),[container,get]=createExtensionContainer(extension$1);for(let uf of ufs)extension$1.runtime.bin.readField(container,opt.readerFactory(uf.data),extension$1.field,uf.wireType,opt);return get()}function setExtension(message,extension$1,value,options$1){assertExtendee(extension$1,message);let readOpt=extension$1.runtime.bin.makeReadOptions(options$1),writeOpt=extension$1.runtime.bin.makeWriteOptions(options$1);if(hasExtension(message,extension$1)){let ufs=message.getType().runtime.bin.listUnknownFields(message).filter(uf=>uf.no!=extension$1.field.no);message.getType().runtime.bin.discardUnknownFields(message);for(let uf of ufs)message.getType().runtime.bin.onUnknownField(message,uf.no,uf.wireType,uf.data)}let writer=writeOpt.writerFactory(),f$2=extension$1.field;!f$2.opt&&!f$2.repeated&&(f$2.kind==`enum`||f$2.kind==`scalar`)&&(f$2=Object.assign(Object.assign({},extension$1.field),{opt:!0})),extension$1.runtime.bin.writeField(f$2,value,writer,writeOpt);let reader=readOpt.readerFactory(writer.finish());for(;reader.pos<reader.len;){let[no,wireType]=reader.tag(),data=reader.skip(wireType,no);message.getType().runtime.bin.onUnknownField(message,no,wireType,data)}}function hasExtension(message,extension$1){let messageType=message.getType();return extension$1.extendee.typeName===messageType.typeName&&!!messageType.runtime.bin.listUnknownFields(message).find(uf=>uf.no==extension$1.field.no)}function assertExtendee(extension$1,message){assert(extension$1.extendee.typeName==message.getType().typeName,`extension ${extension$1.typeName} can only be applied to message ${extension$1.extendee.typeName}`)}function isFieldSet(field,target){let localName=field.localName;if(field.repeated)return target[localName].length>0;if(field.oneof)return target[field.oneof.localName].case===localName;switch(field.kind){case`enum`:case`scalar`:return field.opt||field.req?target[localName]!==void 0:field.kind==`enum`?target[localName]!==field.T.values[0].no:!isScalarZeroValue(field.T,target[localName]);case`message`:return target[localName]!==void 0;case`map`:return Object.keys(target[localName]).length>0}}function clearField(field,target){let localName=field.localName,implicitPresence=!field.opt&&!field.req;if(field.repeated)target[localName]=[];else if(field.oneof)target[field.oneof.localName]={case:void 0};else switch(field.kind){case`map`:target[localName]={};break;case`enum`:target[localName]=implicitPresence?field.T.values[0].no:void 0;break;case`scalar`:target[localName]=implicitPresence?scalarZeroValue(field.T,field.L):void 0;break;case`message`:target[localName]=void 0;break}}function isMessage(arg,type){if(typeof arg!=`object`||!arg||!Object.getOwnPropertyNames(Message.prototype).every(m$2=>m$2 in arg&&typeof arg[m$2]==`function`))return!1;let actualType=arg.getType();return actualType===null||typeof actualType!=`function`||!(`typeName`in actualType)||typeof actualType.typeName!=`string`?!1:type===void 0?!0:actualType.typeName==type.typeName}function wrapField(type,value){return isMessage(value)||!type.fieldWrapper?value:type.fieldWrapper.wrapField(value)}var wktWrapperToScalarType={"google.protobuf.DoubleValue":ScalarType.DOUBLE,"google.protobuf.FloatValue":ScalarType.FLOAT,"google.protobuf.Int64Value":ScalarType.INT64,"google.protobuf.UInt64Value":ScalarType.UINT64,"google.protobuf.Int32Value":ScalarType.INT32,"google.protobuf.UInt32Value":ScalarType.UINT32,"google.protobuf.BoolValue":ScalarType.BOOL,"google.protobuf.StringValue":ScalarType.STRING,"google.protobuf.BytesValue":ScalarType.BYTES},jsonReadDefaults={ignoreUnknownFields:!1},jsonWriteDefaults={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function makeReadOptions$1(options$1){return options$1?Object.assign(Object.assign({},jsonReadDefaults),options$1):jsonReadDefaults}function makeWriteOptions$1(options$1){return options$1?Object.assign(Object.assign({},jsonWriteDefaults),options$1):jsonWriteDefaults}var tokenNull=Symbol(),tokenIgnoredUnknownEnum=Symbol();function makeJsonFormat(){return{makeReadOptions:makeReadOptions$1,makeWriteOptions:makeWriteOptions$1,readMessage(type,json$1,options$1,message){if(json$1==null||Array.isArray(json$1)||typeof json$1!=`object`)throw Error(`cannot decode message ${type.typeName} from JSON: ${debugJsonValue(json$1)}`);message??=new type;let oneofSeen=new Map,registry=options$1.typeRegistry;for(let[jsonKey,jsonValue]of Object.entries(json$1)){let field=type.fields.findJsonName(jsonKey);if(field){if(field.oneof){if(jsonValue===null&&field.kind==`scalar`)continue;let seen$1=oneofSeen.get(field.oneof);if(seen$1!==void 0)throw Error(`cannot decode message ${type.typeName} from JSON: multiple keys for oneof "${field.oneof.name}" present: "${seen$1}", "${jsonKey}"`);oneofSeen.set(field.oneof,jsonKey)}readField$1(message,jsonValue,field,options$1,type)}else{let found=!1;if(registry?.findExtension&&jsonKey.startsWith(`[`)&&jsonKey.endsWith(`]`)){let ext=registry.findExtension(jsonKey.substring(1,jsonKey.length-1));if(ext&&ext.extendee.typeName==type.typeName){found=!0;let[container,get]=createExtensionContainer(ext);readField$1(container,jsonValue,ext.field,options$1,ext),setExtension(message,ext,get(),options$1)}}if(!found&&!options$1.ignoreUnknownFields)throw Error(`cannot decode message ${type.typeName} from JSON: key "${jsonKey}" is unknown`)}}return message},writeMessage(message,options$1){let type=message.getType(),json$1={},field;try{for(field of type.fields.byNumber()){if(!isFieldSet(field,message)){if(field.req)throw`required field not set`;if(!options$1.emitDefaultValues||!canEmitFieldDefaultValue(field))continue}let value=field.oneof?message[field.oneof.localName].value:message[field.localName],jsonValue=writeField$1(field,value,options$1);jsonValue!==void 0&&(json$1[options$1.useProtoFieldName?field.name:field.jsonName]=jsonValue)}let registry=options$1.typeRegistry;if(registry?.findExtensionFor)for(let uf of type.runtime.bin.listUnknownFields(message)){let ext=registry.findExtensionFor(type.typeName,uf.no);if(ext&&hasExtension(message,ext)){let value=getExtension(message,ext,options$1),jsonValue=writeField$1(ext.field,value,options$1);jsonValue!==void 0&&(json$1[ext.field.jsonName]=jsonValue)}}}catch(e){let m$2=field?`cannot encode field ${type.typeName}.${field.name} to JSON`:`cannot encode message ${type.typeName} to JSON`,r$4=e instanceof Error?e.message:String(e);throw Error(m$2+(r$4.length>0?`: ${r$4}`:``))}return json$1},readScalar(type,json$1,longType){return readScalar$1(type,json$1,longType??LongType.BIGINT,!0)},writeScalar(type,value,emitDefaultValues){if(value!==void 0&&(emitDefaultValues||isScalarZeroValue(type,value)))return writeScalar$1(type,value)},debug:debugJsonValue}}function debugJsonValue(json$1){if(json$1===null)return`null`;switch(typeof json$1){case`object`:return Array.isArray(json$1)?`array`:`object`;case`string`:return json$1.length>100?`string`:`"${json$1.split(`"`).join(`\\"`)}"`;default:return String(json$1)}}function readField$1(target,jsonValue,field,options$1,parentType){let localName=field.localName;if(field.repeated){if(assert(field.kind!=`map`),jsonValue===null)return;if(!Array.isArray(jsonValue))throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);let targetArray=target[localName];for(let jsonItem of jsonValue){if(jsonItem===null)throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`);switch(field.kind){case`message`:targetArray.push(field.T.fromJson(jsonItem,options$1));break;case`enum`:let enumValue=readEnum(field.T,jsonItem,options$1.ignoreUnknownFields,!0);enumValue!==tokenIgnoredUnknownEnum&&targetArray.push(enumValue);break;case`scalar`:try{targetArray.push(readScalar$1(field.T,jsonItem,field.L,!0))}catch(e){let m$2=`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}}else if(field.kind==`map`){if(jsonValue===null)return;if(typeof jsonValue!=`object`||Array.isArray(jsonValue))throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);let targetMap=target[localName];for(let[jsonMapKey,jsonMapValue]of Object.entries(jsonValue)){if(jsonMapValue===null)throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: map value null`);let key$1;try{key$1=readMapKey(field.K,jsonMapKey)}catch(e){let m$2=`cannot decode map key for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}switch(field.V.kind){case`message`:targetMap[key$1]=field.V.T.fromJson(jsonMapValue,options$1);break;case`enum`:let enumValue=readEnum(field.V.T,jsonMapValue,options$1.ignoreUnknownFields,!0);enumValue!==tokenIgnoredUnknownEnum&&(targetMap[key$1]=enumValue);break;case`scalar`:try{targetMap[key$1]=readScalar$1(field.V.T,jsonMapValue,LongType.BIGINT,!0)}catch(e){let m$2=`cannot decode map value for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}}else switch(field.oneof&&(target=target[field.oneof.localName]={case:localName},localName=`value`),field.kind){case`message`:let messageType=field.T;if(jsonValue===null&&messageType.typeName!=`google.protobuf.Value`)return;let currentValue=target[localName];isMessage(currentValue)?currentValue.fromJson(jsonValue,options$1):(target[localName]=currentValue=messageType.fromJson(jsonValue,options$1),messageType.fieldWrapper&&!field.oneof&&(target[localName]=messageType.fieldWrapper.unwrapField(currentValue)));break;case`enum`:let enumValue=readEnum(field.T,jsonValue,options$1.ignoreUnknownFields,!1);switch(enumValue){case tokenNull:clearField(field,target);break;case tokenIgnoredUnknownEnum:break;default:target[localName]=enumValue;break}break;case`scalar`:try{let scalarValue=readScalar$1(field.T,jsonValue,field.L,!1);switch(scalarValue){case tokenNull:clearField(field,target);break;default:target[localName]=scalarValue;break}}catch(e){let m$2=`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}function readMapKey(type,json$1){if(type===ScalarType.BOOL)switch(json$1){case`true`:json$1=!0;break;case`false`:json$1=!1;break}return readScalar$1(type,json$1,LongType.BIGINT,!0).toString()}function readScalar$1(type,json$1,longType,nullAsZeroValue){if(json$1===null)return nullAsZeroValue?scalarZeroValue(type,longType):tokenNull;switch(type){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(json$1===`NaN`)return NaN;if(json$1===`Infinity`)return 1/0;if(json$1===`-Infinity`)return-1/0;if(json$1===``||typeof json$1==`string`&&json$1.trim().length!==json$1.length||typeof json$1!=`string`&&typeof json$1!=`number`)break;let float=Number(json$1);if(Number.isNaN(float)||!Number.isFinite(float))break;return type==ScalarType.FLOAT&&assertFloat32(float),float;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:let int32;if(typeof json$1==`number`?int32=json$1:typeof json$1==`string`&&json$1.length>0&&json$1.trim().length===json$1.length&&(int32=Number(json$1)),int32===void 0)break;return type==ScalarType.UINT32||type==ScalarType.FIXED32?assertUInt32(int32):assertInt32(int32),int32;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(typeof json$1!=`number`&&typeof json$1!=`string`)break;let long=protoInt64.parse(json$1);return longType?long.toString():long;case ScalarType.FIXED64:case ScalarType.UINT64:if(typeof json$1!=`number`&&typeof json$1!=`string`)break;let uLong=protoInt64.uParse(json$1);return longType?uLong.toString():uLong;case ScalarType.BOOL:if(typeof json$1!=`boolean`)break;return json$1;case ScalarType.STRING:if(typeof json$1!=`string`)break;return json$1;case ScalarType.BYTES:if(json$1===``)return new Uint8Array;if(typeof json$1!=`string`)break;return protoBase64.dec(json$1)}throw Error()}function readEnum(type,json$1,ignoreUnknownFields,nullAsZeroValue){if(json$1===null)return type.typeName==`google.protobuf.NullValue`?0:nullAsZeroValue?type.values[0].no:tokenNull;switch(typeof json$1){case`number`:if(Number.isInteger(json$1))return json$1;break;case`string`:let value=type.findName(json$1);if(value!==void 0)return value.no;if(ignoreUnknownFields)return tokenIgnoredUnknownEnum;break}throw Error(`cannot decode enum ${type.typeName} from JSON: ${debugJsonValue(json$1)}`)}function canEmitFieldDefaultValue(field){return field.repeated||field.kind==`map`?!0:!(field.oneof||field.kind==`message`||field.opt||field.req)}function writeField$1(field,value,options$1){if(field.kind==`map`){assert(typeof value==`object`&&!!value);let jsonObj={},entries=Object.entries(value);switch(field.V.kind){case`scalar`:for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=writeScalar$1(field.V.T,entryValue);break;case`message`:for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=entryValue.toJson(options$1);break;case`enum`:let enumType=field.V.T;for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=writeEnum(enumType,entryValue,options$1.enumAsInteger);break}return options$1.emitDefaultValues||entries.length>0?jsonObj:void 0}if(field.repeated){assert(Array.isArray(value));let jsonArr=[];switch(field.kind){case`scalar`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(writeScalar$1(field.T,value[i$3]));break;case`enum`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(writeEnum(field.T,value[i$3],options$1.enumAsInteger));break;case`message`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(value[i$3].toJson(options$1));break}return options$1.emitDefaultValues||jsonArr.length>0?jsonArr:void 0}switch(field.kind){case`scalar`:return writeScalar$1(field.T,value);case`enum`:return writeEnum(field.T,value,options$1.enumAsInteger);case`message`:return wrapField(field.T,value).toJson(options$1)}}function writeEnum(type,value,enumAsInteger){var _a$1;return assert(typeof value==`number`),type.typeName==`google.protobuf.NullValue`?null:enumAsInteger?value:type.findNumber(value)?.name??value}function writeScalar$1(type,value){switch(type){case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.UINT32:return assert(typeof value==`number`),value;case ScalarType.FLOAT:case ScalarType.DOUBLE:return assert(typeof value==`number`),Number.isNaN(value)?`NaN`:value===1/0?`Infinity`:value===-1/0?`-Infinity`:value;case ScalarType.STRING:return assert(typeof value==`string`),value;case ScalarType.BOOL:return assert(typeof value==`boolean`),value;case ScalarType.UINT64:case ScalarType.FIXED64:case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return assert(typeof value==`bigint`||typeof value==`string`||typeof value==`number`),value.toString();case ScalarType.BYTES:return assert(value instanceof Uint8Array),protoBase64.enc(value)}}var unknownFieldsSymbol=Symbol(`@bufbuild/protobuf/unknown-fields`),readDefaults={readUnknownFields:!0,readerFactory:bytes=>new BinaryReader(bytes)},writeDefaults={writeUnknownFields:!0,writerFactory:()=>new BinaryWriter};function makeReadOptions(options$1){return options$1?Object.assign(Object.assign({},readDefaults),options$1):readDefaults}function makeWriteOptions(options$1){return options$1?Object.assign(Object.assign({},writeDefaults),options$1):writeDefaults}function makeBinaryFormat(){return{makeReadOptions,makeWriteOptions,listUnknownFields(message){var _a$1;return message[unknownFieldsSymbol]??[]},discardUnknownFields(message){delete message[unknownFieldsSymbol]},writeUnknownFields(message,writer){let c=message[unknownFieldsSymbol];if(c)for(let f$2 of c)writer.tag(f$2.no,f$2.wireType).raw(f$2.data)},onUnknownField(message,no,wireType,data){let m$2=message;Array.isArray(m$2[unknownFieldsSymbol])||(m$2[unknownFieldsSymbol]=[]),m$2[unknownFieldsSymbol].push({no,wireType,data})},readMessage(message,reader,lengthOrEndTagFieldNo,options$1,delimitedMessageEncoding){let type=message.getType(),end=delimitedMessageEncoding?reader.len:reader.pos+lengthOrEndTagFieldNo,fieldNo,wireType;for(;reader.pos<end&&([fieldNo,wireType]=reader.tag(),!(delimitedMessageEncoding===!0&&wireType==WireType.EndGroup));){let field=type.fields.find(fieldNo);if(!field){let data=reader.skip(wireType,fieldNo);options$1.readUnknownFields&&this.onUnknownField(message,fieldNo,wireType,data);continue}readField(message,reader,field,wireType,options$1)}if(delimitedMessageEncoding&&(wireType!=WireType.EndGroup||fieldNo!==lengthOrEndTagFieldNo))throw Error(`invalid end group tag`)},readField,writeMessage(message,writer,options$1){let type=message.getType();for(let field of type.fields.byNumber()){if(!isFieldSet(field,message)){if(field.req)throw Error(`cannot encode field ${type.typeName}.${field.name} to binary: required field not set`);continue}writeField(field,field.oneof?message[field.oneof.localName].value:message[field.localName],writer,options$1)}return options$1.writeUnknownFields&&this.writeUnknownFields(message,writer),writer},writeField(field,value,writer,options$1){value!==void 0&&writeField(field,value,writer,options$1)}}}function readField(target,reader,field,wireType,options$1){let{repeated,localName}=field;switch(field.oneof&&(target=target[field.oneof.localName],target.case!=localName&&delete target.value,target.case=localName,localName=`value`),field.kind){case`scalar`:case`enum`:let scalarType=field.kind==`enum`?ScalarType.INT32:field.T,read=readScalar;if(field.kind==`scalar`&&field.L>0&&(read=readScalarLTString),repeated){let arr=target[localName];if(wireType==WireType.LengthDelimited&&scalarType!=ScalarType.STRING&&scalarType!=ScalarType.BYTES){let e=reader.uint32()+reader.pos;for(;reader.pos<e;)arr.push(read(reader,scalarType))}else arr.push(read(reader,scalarType))}else target[localName]=read(reader,scalarType);break;case`message`:let messageType=field.T;repeated?target[localName].push(readMessageField(reader,new messageType,options$1,field)):isMessage(target[localName])?readMessageField(reader,target[localName],options$1,field):(target[localName]=readMessageField(reader,new messageType,options$1,field),messageType.fieldWrapper&&!field.oneof&&!field.repeated&&(target[localName]=messageType.fieldWrapper.unwrapField(target[localName])));break;case`map`:let[mapKey,mapVal]=readMapEntry(field,reader,options$1);target[localName][mapKey]=mapVal;break}}function readMessageField(reader,message,options$1,field){let format=message.getType().runtime.bin,delimited=field?.delimited;return format.readMessage(message,reader,delimited?field.no:reader.uint32(),options$1,delimited),message}function readMapEntry(field,reader,options$1){let length=reader.uint32(),end=reader.pos+length,key$1,val;for(;reader.pos<end;){let[fieldNo]=reader.tag();switch(fieldNo){case 1:key$1=readScalar(reader,field.K);break;case 2:switch(field.V.kind){case`scalar`:val=readScalar(reader,field.V.T);break;case`enum`:val=reader.int32();break;case`message`:val=readMessageField(reader,new field.V.T,options$1,void 0);break}break}}if(key$1===void 0&&(key$1=scalarZeroValue(field.K,LongType.BIGINT)),typeof key$1!=`string`&&typeof key$1!=`number`&&(key$1=key$1.toString()),val===void 0)switch(field.V.kind){case`scalar`:val=scalarZeroValue(field.V.T,LongType.BIGINT);break;case`enum`:val=field.V.T.values[0].no;break;case`message`:val=new field.V.T;break}return[key$1,val]}function readScalarLTString(reader,type){let v$1=readScalar(reader,type);return typeof v$1==`bigint`?v$1.toString():v$1}function readScalar(reader,type){switch(type){case ScalarType.STRING:return reader.string();case ScalarType.BOOL:return reader.bool();case ScalarType.DOUBLE:return reader.double();case ScalarType.FLOAT:return reader.float();case ScalarType.INT32:return reader.int32();case ScalarType.INT64:return reader.int64();case ScalarType.UINT64:return reader.uint64();case ScalarType.FIXED64:return reader.fixed64();case ScalarType.BYTES:return reader.bytes();case ScalarType.FIXED32:return reader.fixed32();case ScalarType.SFIXED32:return reader.sfixed32();case ScalarType.SFIXED64:return reader.sfixed64();case ScalarType.SINT64:return reader.sint64();case ScalarType.UINT32:return reader.uint32();case ScalarType.SINT32:return reader.sint32()}}function writeField(field,value,writer,options$1){assert(value!==void 0);let repeated=field.repeated;switch(field.kind){case`scalar`:case`enum`:let scalarType=field.kind==`enum`?ScalarType.INT32:field.T;if(repeated)if(assert(Array.isArray(value)),field.packed)writePacked(writer,scalarType,field.no,value);else for(let item of value)writeScalar(writer,scalarType,field.no,item);else writeScalar(writer,scalarType,field.no,value);break;case`message`:if(repeated){assert(Array.isArray(value));for(let item of value)writeMessageField(writer,options$1,field,item)}else writeMessageField(writer,options$1,field,value);break;case`map`:assert(typeof value==`object`&&!!value);for(let[key$1,val]of Object.entries(value))writeMapEntry(writer,options$1,field,key$1,val);break}}function writeMapEntry(writer,options$1,field,key$1,value){writer.tag(field.no,WireType.LengthDelimited),writer.fork();let keyValue=key$1;switch(field.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:keyValue=Number.parseInt(key$1);break;case ScalarType.BOOL:assert(key$1==`true`||key$1==`false`),keyValue=key$1==`true`;break}switch(writeScalar(writer,field.K,1,keyValue),field.V.kind){case`scalar`:writeScalar(writer,field.V.T,2,value);break;case`enum`:writeScalar(writer,ScalarType.INT32,2,value);break;case`message`:assert(value!==void 0),writer.tag(2,WireType.LengthDelimited).bytes(value.toBinary(options$1));break}writer.join()}function writeMessageField(writer,options$1,field,value){let message=wrapField(field.T,value);field.delimited?writer.tag(field.no,WireType.StartGroup).raw(message.toBinary(options$1)).tag(field.no,WireType.EndGroup):writer.tag(field.no,WireType.LengthDelimited).bytes(message.toBinary(options$1))}function writeScalar(writer,type,fieldNo,value){assert(value!==void 0);let[wireType,method]=scalarTypeInfo(type);writer.tag(fieldNo,wireType)[method](value)}function writePacked(writer,type,fieldNo,value){if(!value.length)return;writer.tag(fieldNo,WireType.LengthDelimited).fork();let[,method]=scalarTypeInfo(type);for(let i$3=0;i$3<value.length;i$3++)writer[method](value[i$3]);writer.join()}function scalarTypeInfo(type){let wireType=WireType.Varint;switch(type){case ScalarType.BYTES:case ScalarType.STRING:wireType=WireType.LengthDelimited;break;case ScalarType.DOUBLE:case ScalarType.FIXED64:case ScalarType.SFIXED64:wireType=WireType.Bit64;break;case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.FLOAT:wireType=WireType.Bit32;break}let method=ScalarType[type].toLowerCase();return[wireType,method]}function makeUtilCommon(){return{setEnumType,initPartial(source,target){if(source===void 0)return;let type=target.getType();for(let member of type.fields.byMember()){let localName=member.localName,t$1=target,s$1=source;if(s$1[localName]!=null)switch(member.kind){case`oneof`:let sk=s$1[localName].case;if(sk===void 0)continue;let sourceField=member.findField(sk),val=s$1[localName].value;sourceField&&sourceField.kind==`message`&&!isMessage(val,sourceField.T)?val=new sourceField.T(val):sourceField&&sourceField.kind===`scalar`&&sourceField.T===ScalarType.BYTES&&(val=toU8Arr(val)),t$1[localName]={case:sk,value:val};break;case`scalar`:case`enum`:let copy=s$1[localName];member.T===ScalarType.BYTES&&(copy=member.repeated?copy.map(toU8Arr):toU8Arr(copy)),t$1[localName]=copy;break;case`map`:switch(member.V.kind){case`scalar`:case`enum`:if(member.V.T===ScalarType.BYTES)for(let[k$2,v$1]of Object.entries(s$1[localName]))t$1[localName][k$2]=toU8Arr(v$1);else Object.assign(t$1[localName],s$1[localName]);break;case`message`:let messageType=member.V.T;for(let k$2 of Object.keys(s$1[localName])){let val$1=s$1[localName][k$2];messageType.fieldWrapper||(val$1=new messageType(val$1)),t$1[localName][k$2]=val$1}break}break;case`message`:let mt=member.T;if(member.repeated)t$1[localName]=s$1[localName].map(val$1=>isMessage(val$1,mt)?val$1:new mt(val$1));else{let val$1=s$1[localName];mt.fieldWrapper?mt.typeName===`google.protobuf.BytesValue`?t$1[localName]=toU8Arr(val$1):t$1[localName]=val$1:t$1[localName]=isMessage(val$1,mt)?val$1:new mt(val$1)}break}}},equals(type,a$1,b$2){return a$1===b$2?!0:!a$1||!b$2?!1:type.fields.byMember().every(m$2=>{let va=a$1[m$2.localName],vb=b$2[m$2.localName];if(m$2.repeated){if(va.length!==vb.length)return!1;switch(m$2.kind){case`message`:return va.every((a$2,i$3)=>m$2.T.equals(a$2,vb[i$3]));case`scalar`:return va.every((a$2,i$3)=>scalarEquals(m$2.T,a$2,vb[i$3]));case`enum`:return va.every((a$2,i$3)=>scalarEquals(ScalarType.INT32,a$2,vb[i$3]))}throw Error(`repeated cannot contain ${m$2.kind}`)}switch(m$2.kind){case`message`:let a$2=va,b$3=vb;return m$2.T.fieldWrapper&&(a$2!==void 0&&!isMessage(a$2)&&(a$2=m$2.T.fieldWrapper.wrapField(a$2)),b$3!==void 0&&!isMessage(b$3)&&(b$3=m$2.T.fieldWrapper.wrapField(b$3))),m$2.T.equals(a$2,b$3);case`enum`:return scalarEquals(ScalarType.INT32,va,vb);case`scalar`:return scalarEquals(m$2.T,va,vb);case`oneof`:if(va.case!==vb.case)return!1;let s$1=m$2.findField(va.case);if(s$1===void 0)return!0;switch(s$1.kind){case`message`:return s$1.T.equals(va.value,vb.value);case`enum`:return scalarEquals(ScalarType.INT32,va.value,vb.value);case`scalar`:return scalarEquals(s$1.T,va.value,vb.value)}throw Error(`oneof cannot contain ${s$1.kind}`);case`map`:let keys$1=Object.keys(va).concat(Object.keys(vb));switch(m$2.V.kind){case`message`:let messageType=m$2.V.T;return keys$1.every(k$2=>messageType.equals(va[k$2],vb[k$2]));case`enum`:return keys$1.every(k$2=>scalarEquals(ScalarType.INT32,va[k$2],vb[k$2]));case`scalar`:let scalarType=m$2.V.T;return keys$1.every(k$2=>scalarEquals(scalarType,va[k$2],vb[k$2]))}break}})},clone(message){let type=message.getType(),target=new type,any=target;for(let member of type.fields.byMember()){let source=message[member.localName],copy;if(member.repeated)copy=source.map(cloneSingularField);else if(member.kind==`map`){copy=any[member.localName];for(let[key$1,v$1]of Object.entries(source))copy[key$1]=cloneSingularField(v$1)}else copy=member.kind==`oneof`?member.findField(source.case)?{case:source.case,value:cloneSingularField(source.value)}:{case:void 0}:cloneSingularField(source);any[member.localName]=copy}for(let uf of type.runtime.bin.listUnknownFields(message))type.runtime.bin.onUnknownField(any,uf.no,uf.wireType,uf.data);return target}}}function cloneSingularField(value){if(value===void 0)return value;if(isMessage(value))return value.clone();if(value instanceof Uint8Array){let c=new Uint8Array(value.byteLength);return c.set(value),c}return value}function toU8Arr(input){return input instanceof Uint8Array?input:new Uint8Array(input)}function makeProtoRuntime(syntax,newFieldList,initFields){return{syntax,json:makeJsonFormat(),bin:makeBinaryFormat(),util:Object.assign(Object.assign({},makeUtilCommon()),{newFieldList,initFields}),makeMessageType(typeName$1,fields,opt){return makeMessageType(this,typeName$1,fields,opt)},makeEnum,makeEnumType,getEnumType,makeExtension(typeName$1,extendee,field){return makeExtension(this,typeName$1,extendee,field)}}}var InternalFieldList=class{constructor(fields,normalizer){this._fields=fields,this._normalizer=normalizer}findJsonName(jsonName){if(!this.jsonNames){let t$1={};for(let f$2 of this.list())t$1[f$2.jsonName]=t$1[f$2.name]=f$2;this.jsonNames=t$1}return this.jsonNames[jsonName]}find(fieldNo){if(!this.numbers){let t$1={};for(let f$2 of this.list())t$1[f$2.no]=f$2;this.numbers=t$1}return this.numbers[fieldNo]}list(){return this.all||=this._normalizer(this._fields),this.all}byNumber(){return this.numbersAsc||=this.list().concat().sort((a$1,b$2)=>a$1.no-b$2.no),this.numbersAsc}byMember(){if(!this.members){this.members=[];let a$1=this.members,o$2;for(let f$2 of this.list())f$2.oneof?f$2.oneof!==o$2&&(o$2=f$2.oneof,a$1.push(o$2)):a$1.push(f$2)}return this.members}};function localFieldName(protoName,inOneof){let name$2=protoCamelCase(protoName);return inOneof?name$2:safeObjectProperty(safeMessageProperty(name$2))}function localOneofName(protoName){return localFieldName(protoName,!1)}const fieldJsonName=protoCamelCase;function protoCamelCase(snakeCase){let capNext=!1,b$2=[];for(let i$3=0;i$3<snakeCase.length;i$3++){let c=snakeCase.charAt(i$3);switch(c){case`_`:capNext=!0;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:b$2.push(c),capNext=!1;break;default:capNext&&(capNext=!1,c=c.toUpperCase()),b$2.push(c);break}}return b$2.join(``)}var reservedObjectProperties=new Set([`constructor`,`toString`,`toJSON`,`valueOf`]),reservedMessageProperties=new Set([`getType`,`clone`,`equals`,`fromBinary`,`fromJson`,`fromJsonString`,`toBinary`,`toJson`,`toJsonString`,`toObject`]),fallback=name$2=>`${name$2}$`,safeMessageProperty=name$2=>reservedMessageProperties.has(name$2)?fallback(name$2):name$2;const safeObjectProperty=name$2=>reservedObjectProperties.has(name$2)?fallback(name$2):name$2;var InternalOneofInfo=class{constructor(name$2){this.kind=`oneof`,this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=name$2,this.localName=localOneofName(name$2)}addField(field){assert(field.oneof===this,`field ${field.name} not one of ${this.name}`),this.fields.push(field)}findField(localName){if(!this._lookup){this._lookup=Object.create(null);for(let i$3=0;i$3<this.fields.length;i$3++)this._lookup[this.fields[i$3].localName]=this.fields[i$3]}return this._lookup[localName]}};function normalizeFieldInfos(fieldInfos,packedByDefault){var _a$1,_b,_c,_d,_e,_f;let r$4=[],o$2;for(let field of typeof fieldInfos==`function`?fieldInfos():fieldInfos){let f$2=field;if(f$2.localName=localFieldName(field.name,field.oneof!==void 0),f$2.jsonName=field.jsonName??fieldJsonName(field.name),f$2.repeated=field.repeated??!1,field.kind==`scalar`&&(f$2.L=field.L??LongType.BIGINT),f$2.delimited=field.delimited??!1,f$2.req=field.req??!1,f$2.opt=field.opt??!1,field.packed===void 0&&(packedByDefault?f$2.packed=field.kind==`enum`||field.kind==`scalar`&&field.T!=ScalarType.BYTES&&field.T!=ScalarType.STRING:f$2.packed=!1),field.oneof!==void 0){let ooname=typeof field.oneof==`string`?field.oneof:field.oneof.name;(!o$2||o$2.name!=ooname)&&(o$2=new InternalOneofInfo(ooname)),f$2.oneof=o$2,o$2.addField(f$2)}r$4.push(f$2)}return r$4}const proto3=makeProtoRuntime(`proto3`,fields=>new InternalFieldList(fields,source=>normalizeFieldInfos(source,!0)),target=>{for(let member of target.getType().fields.byMember()){if(member.opt)continue;let name$2=member.localName,t$1=target;if(member.repeated){t$1[name$2]=[];continue}switch(member.kind){case`oneof`:t$1[name$2]={case:void 0};break;case`enum`:t$1[name$2]=0;break;case`map`:t$1[name$2]={};break;case`scalar`:t$1[name$2]=scalarZeroValue(member.T,member.L);break;case`message`:break}}});var MethodKind;(function(MethodKind$1){MethodKind$1[MethodKind$1.Unary=0]=`Unary`,MethodKind$1[MethodKind$1.ServerStreaming=1]=`ServerStreaming`,MethodKind$1[MethodKind$1.ClientStreaming=2]=`ClientStreaming`,MethodKind$1[MethodKind$1.BiDiStreaming=3]=`BiDiStreaming`})(MethodKind||={});var MethodIdempotency;(function(MethodIdempotency$1){MethodIdempotency$1[MethodIdempotency$1.NoSideEffects=1]=`NoSideEffects`,MethodIdempotency$1[MethodIdempotency$1.Idempotent=2]=`Idempotent`})(MethodIdempotency||={});var Code$1;(function(Code$2){Code$2[Code$2.Canceled=1]=`Canceled`,Code$2[Code$2.Unknown=2]=`Unknown`,Code$2[Code$2.InvalidArgument=3]=`InvalidArgument`,Code$2[Code$2.DeadlineExceeded=4]=`DeadlineExceeded`,Code$2[Code$2.NotFound=5]=`NotFound`,Code$2[Code$2.AlreadyExists=6]=`AlreadyExists`,Code$2[Code$2.PermissionDenied=7]=`PermissionDenied`,Code$2[Code$2.ResourceExhausted=8]=`ResourceExhausted`,Code$2[Code$2.FailedPrecondition=9]=`FailedPrecondition`,Code$2[Code$2.Aborted=10]=`Aborted`,Code$2[Code$2.OutOfRange=11]=`OutOfRange`,Code$2[Code$2.Unimplemented=12]=`Unimplemented`,Code$2[Code$2.Internal=13]=`Internal`,Code$2[Code$2.Unavailable=14]=`Unavailable`,Code$2[Code$2.DataLoss=15]=`DataLoss`,Code$2[Code$2.Unauthenticated=16]=`Unauthenticated`})(Code$1||={});function codeToString(value){let name$2=Code$1[value];return typeof name$2==`string`?name$2[0].toLowerCase()+name$2.substring(1).replace(/[A-Z]/g,c=>`_`+c.toLowerCase()):value.toString()}var stringToCode;function codeFromString(value){if(!stringToCode){stringToCode={};for(let value$1 of Object.values(Code$1))typeof value$1!=`string`&&(stringToCode[codeToString(value$1)]=value$1)}return stringToCode[value]}var ConnectError=class ConnectError extends Error{constructor(message,code$2=Code$1.Unknown,metadata,outgoingDetails,cause){super(createMessage(message,code$2)),this.name=`ConnectError`,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=message,this.code=code$2,this.metadata=new Headers(metadata??{}),this.details=outgoingDetails??[],this.cause=cause}static from(reason,code$2=Code$1.Unknown){return reason instanceof ConnectError?reason:reason instanceof Error?reason.name==`AbortError`?new ConnectError(reason.message,Code$1.Canceled):new ConnectError(reason.message,code$2,void 0,void 0,reason):new ConnectError(String(reason),code$2,void 0,void 0,reason)}static[Symbol.hasInstance](v$1){return v$1 instanceof Error?Object.getPrototypeOf(v$1)===ConnectError.prototype?!0:v$1.name===`ConnectError`&&`code`in v$1&&typeof v$1.code==`number`&&`metadata`in v$1&&`details`in v$1&&Array.isArray(v$1.details)&&`rawMessage`in v$1&&typeof v$1.rawMessage==`string`&&`cause`in v$1:!1}findDetails(typeOrRegistry){let registry=`typeName`in typeOrRegistry?{findMessage:typeName$1=>typeName$1===typeOrRegistry.typeName?typeOrRegistry:void 0}:typeOrRegistry,details=[];for(let data of this.details){if(`getType`in data){registry.findMessage(data.getType().typeName)&&details.push(data);continue}let type=registry.findMessage(data.type);if(type)try{details.push(type.fromBinary(data.value))}catch{}}return details}};function createMessage(message,code$2){return message.length?`[${codeToString(code$2)}] ${message}`:`[${codeToString(code$2)}]`}function appendHeaders(...headers){let h$1=new Headers;for(let e of headers)e.forEach((value,key$1)=>{h$1.append(key$1,value)});return h$1}function makeAnyClient(service,createMethod){let client={};for(let[localName,methodInfo]of Object.entries(service.methods)){let method=createMethod(Object.assign(Object.assign({},methodInfo),{localName,service}));method!=null&&(client[localName]=method)}return client}const compressedFlag=1;function createEnvelopeReadableStream(stream){let reader,buffer=new Uint8Array;function append(chunk){let n=new Uint8Array(buffer.length+chunk.length);n.set(buffer),n.set(chunk,buffer.length),buffer=n}return new ReadableStream({start(){reader=stream.getReader()},async pull(controller){let header;for(;;){if(header===void 0&&buffer.byteLength>=5){let length=0;for(let i$3=1;i$3<5;i$3++)length=(length<<8)+buffer[i$3];header={flags:buffer[0],length}}if(header!==void 0&&buffer.byteLength>=header.length+5)break;let result=await reader.read();if(result.done)break;append(result.value)}if(header===void 0){if(buffer.byteLength==0){controller.close();return}controller.error(new ConnectError(`premature end of stream`,Code$1.DataLoss));return}let data=buffer.subarray(5,5+header.length);buffer=buffer.subarray(5+header.length),controller.enqueue({flags:header.flags,data})}})}function encodeEnvelope(flags,data){let bytes=new Uint8Array(data.length+5);bytes.set(data,5);let v$1=new DataView(bytes.buffer,bytes.byteOffset,bytes.byteLength);return v$1.setUint8(0,flags),v$1.setUint32(1,data.length),bytes}var __asyncValues$1=function(o$2){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var m$2=o$2[Symbol.asyncIterator],i$3;return m$2?m$2.call(o$2):(o$2=typeof __values==`function`?__values(o$2):o$2[Symbol.iterator](),i$3={},verb(`next`),verb(`throw`),verb(`return`),i$3[Symbol.asyncIterator]=function(){return this},i$3);function verb(n){i$3[n]=o$2[n]&&function(v$1){return new Promise(function(resolve,reject){v$1=o$2[n](v$1),settle(resolve,reject,v$1.done,v$1.value)})}}function settle(resolve,reject,d$1,v$1){Promise.resolve(v$1).then(function(v$2){resolve({value:v$2,done:d$1})},reject)}},__await$2=function(v$1){return this instanceof __await$2?(this.v=v$1,this):new __await$2(v$1)},__asyncGenerator$2=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await$2?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}},__asyncDelegator$1=function(o$2){var i$3,p$1;return i$3={},verb(`next`),verb(`throw`,function(e){throw e}),verb(`return`),i$3[Symbol.iterator]=function(){return this},i$3;function verb(n,f$2){i$3[n]=o$2[n]?function(v$1){return(p$1=!p$1)?{value:__await$2(o$2[n](v$1)),done:!1}:f$2?f$2(v$1):v$1}:f$2}};function createAsyncIterable(items){return __asyncGenerator$2(this,arguments,function*(){yield __await$2(yield*__asyncDelegator$1(__asyncValues$1(items)))})}var __asyncValues=function(o$2){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var m$2=o$2[Symbol.asyncIterator],i$3;return m$2?m$2.call(o$2):(o$2=typeof __values==`function`?__values(o$2):o$2[Symbol.iterator](),i$3={},verb(`next`),verb(`throw`),verb(`return`),i$3[Symbol.asyncIterator]=function(){return this},i$3);function verb(n){i$3[n]=o$2[n]&&function(v$1){return new Promise(function(resolve,reject){v$1=o$2[n](v$1),settle(resolve,reject,v$1.done,v$1.value)})}}function settle(resolve,reject,d$1,v$1){Promise.resolve(v$1).then(function(v$2){resolve({value:v$2,done:d$1})},reject)}},__await$1=function(v$1){return this instanceof __await$1?(this.v=v$1,this):new __await$1(v$1)},__asyncDelegator=function(o$2){var i$3,p$1;return i$3={},verb(`next`),verb(`throw`,function(e){throw e}),verb(`return`),i$3[Symbol.iterator]=function(){return this},i$3;function verb(n,f$2){i$3[n]=o$2[n]?function(v$1){return(p$1=!p$1)?{value:__await$1(o$2[n](v$1)),done:!1}:f$2?f$2(v$1):v$1}:f$2}},__asyncGenerator$1=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await$1?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}};function createClient(service,transport$1){return makeAnyClient(service,method=>{switch(method.kind){case MethodKind.Unary:return createUnaryFn(transport$1,service,method);case MethodKind.ServerStreaming:return createServerStreamingFn(transport$1,service,method);case MethodKind.ClientStreaming:return createClientStreamingFn(transport$1,service,method);case MethodKind.BiDiStreaming:return createBiDiStreamingFn(transport$1,service,method);default:return null}})}function createPromiseClient(service,transport$1){return createClient(service,transport$1)}function createUnaryFn(transport$1,service,method){return async function(input,options$1){var _a$1,_b;let response=await transport$1.unary(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,input,options$1?.contextValues);return(_a$1=options$1?.onHeader)==null||_a$1.call(options$1,response.header),(_b=options$1?.onTrailer)==null||_b.call(options$1,response.trailer),response.message}}function createServerStreamingFn(transport$1,service,method){return function(input,options$1){return handleStreamResponse(transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,createAsyncIterable([input]),options$1?.contextValues),options$1)}}function createClientStreamingFn(transport$1,service,method){return async function(request,options$1){var _a$1,e_1,_b,_c,_d,_e;let response=await transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,request,options$1?.contextValues);(_d=options$1?.onHeader)==null||_d.call(options$1,response.header);let singleMessage,count=0;try{for(var _f=!0,_g=__asyncValues(response.message),_h;_h=await _g.next(),_a$1=_h.done,!_a$1;_f=!0)_c=_h.value,_f=!1,singleMessage=_c,count++}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_f&&!_a$1&&(_b=_g.return)&&await _b.call(_g)}finally{if(e_1)throw e_1.error}}if(!singleMessage)throw new ConnectError(`protocol error: missing response message`,Code$1.Unimplemented);if(count>1)throw new ConnectError(`protocol error: received extra messages for client streaming method`,Code$1.Unimplemented);return(_e=options$1?.onTrailer)==null||_e.call(options$1,response.trailer),singleMessage}}function createBiDiStreamingFn(transport$1,service,method){return function(request,options$1){return handleStreamResponse(transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,request,options$1?.contextValues),options$1)}}function handleStreamResponse(stream,options$1){let it=(function(){return __asyncGenerator$1(this,arguments,function*(){var _a$1,_b;let response=yield __await$1(stream);(_a$1=options$1?.onHeader)==null||_a$1.call(options$1,response.header),yield __await$1(yield*__asyncDelegator(__asyncValues(response.message))),(_b=options$1?.onTrailer)==null||_b.call(options$1,response.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>it.next()})}}function createLinkedAbortController(...signals){let controller=new AbortController,sa=signals.filter(s$1=>s$1!==void 0).concat(controller.signal);for(let signal of sa){if(signal.aborted){onAbort.apply(signal);break}signal.addEventListener(`abort`,onAbort)}function onAbort(){controller.signal.aborted||controller.abort(getAbortSignalReason(this));for(let signal of sa)signal.removeEventListener(`abort`,onAbort)}return controller}function createDeadlineSignal(timeoutMs){let controller=new AbortController,listener=()=>{controller.abort(new ConnectError(`the operation timed out`,Code$1.DeadlineExceeded))},timeoutId;return timeoutMs!==void 0&&(timeoutMs<=0?listener():timeoutId=setTimeout(listener,timeoutMs)),{signal:controller.signal,cleanup:()=>clearTimeout(timeoutId)}}function getAbortSignalReason(signal){if(!signal.aborted)return;if(signal.reason!==void 0)return signal.reason;let e=Error(`This operation was aborted`);return e.name=`AbortError`,e}function createContextValues(){return{get(key$1){return key$1.id in this?this[key$1.id]:key$1.defaultValue},set(key$1,value){return this[key$1.id]=value,this},delete(key$1){return delete this[key$1.id],this}}}function createMethodUrl(baseUrl,service,method){let s$1=typeof service==`string`?service:service.typeName,m$2=typeof method==`string`?method:method.name;return baseUrl.toString().replace(/\/?$/,`/${s$1}/${m$2}`)}function normalize$3(type,message){return message instanceof type?message:new type(message)}function normalizeIterable(messageType,input){function transform$1(result){return result.done===!0?result:{done:result.done,value:normalize$3(messageType,result.value)}}return{[Symbol.asyncIterator](){let it=input[Symbol.asyncIterator](),res={next:()=>it.next().then(transform$1)};return it.throw!==void 0&&(res.throw=e=>it.throw(e).then(transform$1)),it.return!==void 0&&(res.return=v$1=>it.return(v$1).then(transform$1)),res}}}function applyInterceptors(next,interceptors){var _a$1;return interceptors?.concat().reverse().reduce((n,i$3)=>i$3(n),next)??next}function getJsonOptions(options$1){var _a$1;let o$2=Object.assign({},options$1);return o$2.ignoreUnknownFields??=!0,o$2}function createClientMethodSerializers(method,useBinaryFormat,jsonOptions,binaryOptions){let input=useBinaryFormat?createBinarySerialization(method.I,binaryOptions):createJsonSerialization(method.I,jsonOptions);return{parse:(useBinaryFormat?createBinarySerialization(method.O,binaryOptions):createJsonSerialization(method.O,jsonOptions)).parse,serialize:input.serialize}}function createBinarySerialization(messageType,options$1){return{parse(data){try{return messageType.fromBinary(data,options$1)}catch(e){throw new ConnectError(`parse binary: ${e instanceof Error?e.message:String(e)}`,Code$1.Internal)}},serialize(data){try{return data.toBinary(options$1)}catch(e){throw new ConnectError(`serialize binary: ${e instanceof Error?e.message:String(e)}`,Code$1.Internal)}}}}function createJsonSerialization(messageType,options$1){var _a$1,_b;let textEncoder=options$1?.textEncoder??new TextEncoder,textDecoder=options$1?.textDecoder??new TextDecoder,o$2=getJsonOptions(options$1);return{parse(data){try{let json$1=textDecoder.decode(data);return messageType.fromJsonString(json$1,o$2)}catch(e){throw ConnectError.from(e,Code$1.InvalidArgument)}},serialize(data){try{let json$1=data.toJsonString(o$2);return textEncoder.encode(json$1)}catch(e){throw ConnectError.from(e,Code$1.Internal)}}}}const contentTypeRegExp=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i,contentTypeUnaryProto=`application/proto`,contentTypeUnaryJson=`application/json`,contentTypeStreamProto=`application/connect+proto`,contentTypeStreamJson=`application/connect+json`;function parseContentType(contentType){let match=contentType?.match(contentTypeRegExp);if(match)return{stream:!!match[1],binary:!!match[3]}}var __rest=function(s$1,e){var t$1={};for(var p$1 in s$1)Object.prototype.hasOwnProperty.call(s$1,p$1)&&e.indexOf(p$1)<0&&(t$1[p$1]=s$1[p$1]);if(s$1!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i$3=0,p$1=Object.getOwnPropertySymbols(s$1);i$3<p$1.length;i$3++)e.indexOf(p$1[i$3])<0&&Object.prototype.propertyIsEnumerable.call(s$1,p$1[i$3])&&(t$1[p$1[i$3]]=s$1[p$1[i$3]]);return t$1};function errorFromJson(jsonValue,metadata,fallback$1){var _a$1;if(metadata&&new Headers(metadata).forEach((value,key$1)=>fallback$1.metadata.append(key$1,value)),typeof jsonValue!=`object`||!jsonValue||Array.isArray(jsonValue))throw fallback$1;let code$2=fallback$1.code;`code`in jsonValue&&typeof jsonValue.code==`string`&&(code$2=codeFromString(jsonValue.code)??code$2);let message=jsonValue.message;if(message!=null&&typeof message!=`string`)throw fallback$1;let error=new ConnectError(message??``,code$2,metadata);if(`details`in jsonValue&&Array.isArray(jsonValue.details))for(let detail of jsonValue.details){if(typeof detail!=`object`||!detail||Array.isArray(detail)||typeof detail.type!=`string`||typeof detail.value!=`string`)throw fallback$1;try{error.details.push({type:detail.type,value:protoBase64.dec(detail.value),debug:detail.debug})}catch{throw fallback$1}}return error}const endStreamFlag=2;function endStreamFromJson(data){let parseErr=new ConnectError(`invalid end stream`,Code$1.Unknown),jsonValue;try{jsonValue=JSON.parse(typeof data==`string`?data:new TextDecoder().decode(data))}catch{throw parseErr}if(typeof jsonValue!=`object`||!jsonValue||Array.isArray(jsonValue))throw parseErr;let metadata=new Headers;if(`metadata`in jsonValue){if(typeof jsonValue.metadata!=`object`||jsonValue.metadata==null||Array.isArray(jsonValue.metadata))throw parseErr;for(let[key$1,values]of Object.entries(jsonValue.metadata)){if(!Array.isArray(values)||values.some(value=>typeof value!=`string`))throw parseErr;for(let value of values)metadata.append(key$1,value)}}return{metadata,error:`error`in jsonValue&&jsonValue.error!=null?errorFromJson(jsonValue.error,metadata,parseErr):void 0}}const headerContentType=`Content-Type`,headerUnaryContentLength=`Content-Length`,headerUnaryEncoding=`Content-Encoding`,headerUnaryAcceptEncoding=`Accept-Encoding`,headerTimeout=`Connect-Timeout-Ms`,headerProtocolVersion=`Connect-Protocol-Version`,headerUserAgent=`User-Agent`;function codeFromHttpStatus(httpStatus){switch(httpStatus){case 400:return Code$1.Internal;case 401:return Code$1.Unauthenticated;case 403:return Code$1.PermissionDenied;case 404:return Code$1.Unimplemented;case 429:return Code$1.Unavailable;case 502:return Code$1.Unavailable;case 503:return Code$1.Unavailable;case 504:return Code$1.Unavailable;default:return Code$1.Unknown}}function trailerDemux(header){let h$1=new Headers,t$1=new Headers;return header.forEach((value,key$1)=>{key$1.toLowerCase().startsWith(`trailer-`)?t$1.append(key$1.substring(8),value):h$1.append(key$1,value)}),[h$1,t$1]}const protocolVersion=`1`;function requestHeader(methodKind,useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent){let result=new Headers(userProvidedHeaders??{});return timeoutMs!==void 0&&result.set(`Connect-Timeout-Ms`,`${timeoutMs}`),result.set(headerContentType,methodKind==MethodKind.Unary?useBinaryFormat?`application/proto`:`application/json`:useBinaryFormat?`application/connect+proto`:`application/connect+json`),result.set(headerProtocolVersion,`1`),setUserAgent&&!result.has(`User-Agent`)&&result.set(`User-Agent`,`connect-es/1.7.0`),result}function validateResponse(methodKind,useBinaryFormat,status,headers){let mimeType=headers.get(headerContentType),parsedType=parseContentType(mimeType);if(status!==200){let errorFromStatus=new ConnectError(`HTTP ${status}`,codeFromHttpStatus(status),headers);if(methodKind==MethodKind.Unary&&parsedType&&!parsedType.binary)return{isUnaryError:!0,unaryError:errorFromStatus};throw errorFromStatus}let allowedContentType={binary:useBinaryFormat,stream:methodKind!==MethodKind.Unary};if(parsedType?.binary!==allowedContentType.binary||parsedType.stream!==allowedContentType.stream)throw new ConnectError(`unsupported content type ${mimeType}`,parsedType===void 0?Code$1.Unknown:Code$1.Internal,headers);return{isUnaryError:!1}}var contentTypePrefix=`application/`;function encodeMessageForUrl(message,useBase64){return useBase64?protoBase64.enc(message).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``):encodeURIComponent(new TextDecoder().decode(message))}function transformConnectPostToGetRequest(request,message,useBase64){let query=`?connect=v1`,contentType=request.header.get(headerContentType);contentType?.indexOf(contentTypePrefix)===0&&(query+=`&encoding=`+encodeURIComponent(contentType.slice(12)));let compression=request.header.get(headerUnaryEncoding);compression!==null&&compression!==`identity`&&(query+=`&compression=`+encodeURIComponent(compression),useBase64=!0),useBase64&&(query+=`&base64=1`),query+=`&message=`+encodeMessageForUrl(message,useBase64);let url=request.url+query,header=new Headers(request.header);return[headerProtocolVersion,headerContentType,`Content-Length`,headerUnaryEncoding,`Accept-Encoding`].forEach(h$1=>header.delete(h$1)),Object.assign(Object.assign({},request),{init:Object.assign(Object.assign({},request.init),{method:`GET`}),url,header})}function runUnaryCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt);return next(Object.assign(Object.assign({},opt.req),{message:normalize$3(opt.req.method.I,opt.req.message),signal})).then(res=>(done(),res),abort)}function runStreamingCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalizeIterable(opt.req.method.I,opt.req.message),signal}),doneCalled=!1;return signal.addEventListener(`abort`,function(){var _a$1,_b;let it=opt.req.message[Symbol.asyncIterator]();doneCalled||(_a$1=it.throw)==null||_a$1.call(it,this.reason).catch(()=>{}),(_b=it.return)==null||_b.call(it).catch(()=>{})}),next(req).then(res=>Object.assign(Object.assign({},res),{message:{[Symbol.asyncIterator](){let it=res.message[Symbol.asyncIterator]();return{next(){return it.next().then(r$4=>(r$4.done==1&&(doneCalled=!0,done()),r$4),abort)}}}}}),abort)}function setupSignal(opt){let{signal,cleanup}=createDeadlineSignal(opt.timeoutMs),controller=createLinkedAbortController(opt.signal,signal);return[controller.signal,function(reason){let e=ConnectError.from(signal.aborted?getAbortSignalReason(signal):reason);return controller.abort(e),cleanup(),Promise.reject(e)},function(){cleanup(),controller.abort()}]}function assertFetchApi(){try{new Headers}catch{throw Error(`connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.`)}}var __await=function(v$1){return this instanceof __await?(this.v=v$1,this):new __await(v$1)},__asyncGenerator=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}};function createConnectTransport(options$1){var _a$1;assertFetchApi();let useBinaryFormat=options$1.useBinaryFormat??!1;return{async unary(service,method,signal,timeoutMs,header,message,contextValues){var _a$2;let{serialize:serialize$1,parse:parse$2}=createClientMethodSerializers(method,useBinaryFormat,options$1.jsonOptions,options$1.binaryOptions);return timeoutMs=timeoutMs===void 0?options$1.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:options$1.interceptors,signal,timeoutMs,req:{stream:!1,service,method,url:createMethodUrl(options$1.baseUrl,service,method),init:{method:`POST`,credentials:options$1.credentials??`same-origin`,redirect:`error`,mode:`cors`},header:requestHeader(method.kind,useBinaryFormat,timeoutMs,header,!1),contextValues:contextValues??createContextValues(),message},next:async req=>{var _a$3;let useGet=options$1.useHttpGet===!0&&method.idempotency===MethodIdempotency.NoSideEffects,body$2=null;useGet?req=transformConnectPostToGetRequest(req,serialize$1(req.message),useBinaryFormat):body$2=serialize$1(req.message);let response=await(options$1.fetch??globalThis.fetch)(req.url,Object.assign(Object.assign({},req.init),{headers:req.header,signal:req.signal,body:body$2})),{isUnaryError,unaryError}=validateResponse(method.kind,useBinaryFormat,response.status,response.headers);if(isUnaryError)throw errorFromJson(await response.json(),appendHeaders(...trailerDemux(response.headers)),unaryError);let[demuxedHeader,demuxedTrailer]=trailerDemux(response.headers);return{stream:!1,service,method,header:demuxedHeader,message:useBinaryFormat?parse$2(new Uint8Array(await response.arrayBuffer())):method.O.fromJson(await response.json(),getJsonOptions(options$1.jsonOptions)),trailer:demuxedTrailer}}})},async stream(service,method,signal,timeoutMs,header,input,contextValues){var _a$2;let{serialize:serialize$1,parse:parse$2}=createClientMethodSerializers(method,useBinaryFormat,options$1.jsonOptions,options$1.binaryOptions);function parseResponseBody(body$2,trailerTarget,header$1,signal$1){return __asyncGenerator(this,arguments,function*(){let reader=createEnvelopeReadableStream(body$2).getReader(),endStreamReceived=!1;for(;;){let result=yield __await(reader.read());if(result.done)break;let{flags,data}=result.value;if((flags&1)==1)throw new ConnectError(`protocol error: received unsupported compressed output`,Code$1.Internal);if((flags&2)==2){endStreamReceived=!0;let endStream=endStreamFromJson(data);if(endStream.error){let error=endStream.error;throw header$1.forEach((value,key$1)=>{error.metadata.append(key$1,value)}),error}endStream.metadata.forEach((value,key$1)=>trailerTarget.set(key$1,value));continue}yield yield __await(parse$2(data))}if(`throwIfAborted`in signal$1&&signal$1.throwIfAborted(),!endStreamReceived)throw`missing EndStreamResponse`})}async function createRequestBody(input$1){if(method.kind!=MethodKind.ServerStreaming)throw`The fetch API does not support streaming request bodies`;let r$4=await input$1[Symbol.asyncIterator]().next();if(r$4.done==1)throw`missing request message`;return encodeEnvelope(0,serialize$1(r$4.value))}return timeoutMs=timeoutMs===void 0?options$1.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runStreamingCall({interceptors:options$1.interceptors,timeoutMs,signal,req:{stream:!0,service,method,url:createMethodUrl(options$1.baseUrl,service,method),init:{method:`POST`,credentials:options$1.credentials??`same-origin`,redirect:`error`,mode:`cors`},header:requestHeader(method.kind,useBinaryFormat,timeoutMs,header,!1),contextValues:contextValues??createContextValues(),message:input},next:async req=>{var _a$3;let fRes=await(options$1.fetch??globalThis.fetch)(req.url,Object.assign(Object.assign({},req.init),{headers:req.header,signal:req.signal,body:await createRequestBody(req.message)}));if(validateResponse(method.kind,useBinaryFormat,fRes.status,fRes.headers),fRes.body===null)throw`missing response body`;let trailer=new Headers;return Object.assign(Object.assign({},req),{header:fRes.headers,trailer,message:parseResponseBody(fRes.body,trailer,fRes.headers,req.signal)})}})}}}var Label=class Label extends Message{constructor(data){super(),this.id=``,this.name=``,this.color=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.Label`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`color`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new Label().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Label().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Label().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Label,a$1,b$2)}},Connection=class Connection extends Message{constructor(data){super(),this.id=``,this.name=``,this.description=``,this.host=``,this.port=0,this.database=``,this.username=``,this.hasPassword=!1,this.sslMode=``,this.labels=[],this.version=``,this.permissions=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.Connection`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`description`,kind:`scalar`,T:9},{no:4,name:`host`,kind:`scalar`,T:9},{no:5,name:`port`,kind:`scalar`,T:5},{no:6,name:`database`,kind:`scalar`,T:9},{no:7,name:`username`,kind:`scalar`,T:9},{no:8,name:`has_password`,kind:`scalar`,T:8},{no:9,name:`ssl_mode`,kind:`scalar`,T:9},{no:10,name:`labels`,kind:`message`,T:Label,repeated:!0},{no:11,name:`version`,kind:`scalar`,T:9},{no:12,name:`permissions`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new Connection().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Connection().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Connection().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Connection,a$1,b$2)}},ListConnectionsRequest=class ListConnectionsRequest extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.ListConnectionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new ListConnectionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListConnectionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListConnectionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListConnectionsRequest,a$1,b$2)}},ListConnectionsResponse=class ListConnectionsResponse extends Message{constructor(data){super(),this.connections=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.ListConnectionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connections`,kind:`message`,T:Connection,repeated:!0}]);static fromBinary(bytes,options$1){return new ListConnectionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListConnectionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListConnectionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListConnectionsResponse,a$1,b$2)}},GetConnectionRequest=class GetConnectionRequest extends Message{constructor(data){super(),this.id=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.GetConnectionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetConnectionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConnectionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConnectionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConnectionRequest,a$1,b$2)}},GetConnectionResponse=class GetConnectionResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.GetConnectionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection`,kind:`message`,T:Connection}]);static fromBinary(bytes,options$1){return new GetConnectionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConnectionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConnectionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConnectionResponse,a$1,b$2)}},TestConnectionRequest=class TestConnectionRequest extends Message{constructor(data){super(),this.id=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.TestConnectionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TestConnectionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TestConnectionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TestConnectionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TestConnectionRequest,a$1,b$2)}},TestConnectionResponse=class TestConnectionResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,this.latencyMs=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.TestConnectionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`latency_ms`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new TestConnectionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TestConnectionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TestConnectionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TestConnectionResponse,a$1,b$2)}};const ConnectionService={typeName:`connection.v1.ConnectionService`,methods:{listConnections:{name:`ListConnections`,I:ListConnectionsRequest,O:ListConnectionsResponse,kind:MethodKind.Unary},getConnection:{name:`GetConnection`,I:GetConnectionRequest,O:GetConnectionResponse,kind:MethodKind.Unary},testConnection:{name:`TestConnection`,I:TestConnectionRequest,O:TestConnectionResponse,kind:MethodKind.Unary}}};var ExecuteSQLRequest=class ExecuteSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.sql=``,this.queryId=``,this.searchPath=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ExecuteSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`sql`,kind:`scalar`,T:9},{no:3,name:`query_id`,kind:`scalar`,T:9},{no:4,name:`search_path`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExecuteSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExecuteSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExecuteSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExecuteSQLRequest,a$1,b$2)}},ExecuteSQLResponse=class ExecuteSQLResponse extends Message{constructor(data){super(),this.columns=[],this.rows=[],this.rowCount=0,this.executionTimeMs=0,this.error=``,this.backendPid=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ExecuteSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`columns`,kind:`message`,T:ColumnMetadata,repeated:!0},{no:2,name:`rows`,kind:`message`,T:Row,repeated:!0},{no:3,name:`row_count`,kind:`scalar`,T:5},{no:4,name:`execution_time_ms`,kind:`scalar`,T:5},{no:5,name:`error`,kind:`scalar`,T:9},{no:6,name:`backend_pid`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new ExecuteSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExecuteSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExecuteSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExecuteSQLResponse,a$1,b$2)}},Row=class Row extends Message{constructor(data){super(),this.values=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.Row`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`values`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new Row().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Row().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Row().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Row,a$1,b$2)}},ColumnMetadata=class ColumnMetadata extends Message{constructor(data){super(),this.name=``,this.type=``,this.tableName=``,this.schemaName=``,this.isPrimaryKey=!1,this.isNullable=!1,this.hasDefault=!1,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ColumnMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`table_name`,kind:`scalar`,T:9},{no:4,name:`schema_name`,kind:`scalar`,T:9},{no:5,name:`is_primary_key`,kind:`scalar`,T:8},{no:6,name:`is_nullable`,kind:`scalar`,T:8},{no:7,name:`has_default`,kind:`scalar`,T:8}]);static fromBinary(bytes,options$1){return new ColumnMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ColumnMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ColumnMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ColumnMetadata,a$1,b$2)}},CancelQueryRequest=class CancelQueryRequest extends Message{constructor(data){super(),this.connectionId=``,this.queryId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.CancelQueryRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`query_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new CancelQueryRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new CancelQueryRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new CancelQueryRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(CancelQueryRequest,a$1,b$2)}},CancelQueryResponse=class CancelQueryResponse extends Message{constructor(data){super(),this.cancelled=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.CancelQueryResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`cancelled`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new CancelQueryResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new CancelQueryResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new CancelQueryResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(CancelQueryResponse,a$1,b$2)}},GetSchemasRequest=class GetSchemasRequest extends Message{constructor(data){super(),this.connectionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetSchemasRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetSchemasRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetSchemasRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetSchemasRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetSchemasRequest,a$1,b$2)}},GetSchemasResponse=class GetSchemasResponse extends Message{constructor(data){super(),this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetSchemasResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new GetSchemasResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetSchemasResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetSchemasResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetSchemasResponse,a$1,b$2)}},GetTablesRequest=class GetTablesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTablesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTablesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTablesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTablesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTablesRequest,a$1,b$2)}},GetTablesResponse=class GetTablesResponse extends Message{constructor(data){super(),this.tables=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTablesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`tables`,kind:`message`,T:TableInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetTablesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTablesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTablesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTablesResponse,a$1,b$2)}},TableInfo=class TableInfo extends Message{constructor(data){super(),this.name=``,this.type=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TableInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TableInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TableInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TableInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TableInfo,a$1,b$2)}},GetColumnsRequest=class GetColumnsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetColumnsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetColumnsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetColumnsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetColumnsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetColumnsRequest,a$1,b$2)}},GetColumnsResponse=class GetColumnsResponse extends Message{constructor(data){super(),this.columns=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetColumnsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`columns`,kind:`message`,T:ColumnInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetColumnsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetColumnsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetColumnsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetColumnsResponse,a$1,b$2)}},ColumnInfo=class ColumnInfo extends Message{constructor(data){super(),this.name=``,this.type=``,this.nullable=!1,this.isPrimaryKey=!1,this.defaultValue=``,this.comment=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ColumnInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`nullable`,kind:`scalar`,T:8},{no:4,name:`is_primary_key`,kind:`scalar`,T:8},{no:5,name:`default_value`,kind:`scalar`,T:9},{no:6,name:`comment`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ColumnInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ColumnInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ColumnInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ColumnInfo,a$1,b$2)}},GetTableInfoRequest=class GetTableInfoRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTableInfoRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTableInfoRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTableInfoRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTableInfoRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTableInfoRequest,a$1,b$2)}},GetTableInfoResponse=class GetTableInfoResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTableInfoResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`metadata`,kind:`message`,T:TableMetadata}]);static fromBinary(bytes,options$1){return new GetTableInfoResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTableInfoResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTableInfoResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTableInfoResponse,a$1,b$2)}},TableMetadata=class TableMetadata extends Message{constructor(data){super(),this.owner=``,this.rowCount=protoInt64.zero,this.totalSize=protoInt64.zero,this.tableSize=protoInt64.zero,this.indexSize=protoInt64.zero,this.encoding=``,this.collation=``,this.comment=``,this.kind=``,this.definition=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TableMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`owner`,kind:`scalar`,T:9},{no:2,name:`row_count`,kind:`scalar`,T:3},{no:3,name:`total_size`,kind:`scalar`,T:3},{no:4,name:`table_size`,kind:`scalar`,T:3},{no:5,name:`index_size`,kind:`scalar`,T:3},{no:6,name:`encoding`,kind:`scalar`,T:9},{no:7,name:`collation`,kind:`scalar`,T:9},{no:8,name:`comment`,kind:`scalar`,T:9},{no:9,name:`kind`,kind:`scalar`,T:9},{no:10,name:`definition`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TableMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TableMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TableMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TableMetadata,a$1,b$2)}},IndexInfo=class IndexInfo extends Message{constructor(data){super(),this.name=``,this.isUnique=!1,this.isPrimary=!1,this.method=``,this.columns=[],this.definition=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.IndexInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`is_unique`,kind:`scalar`,T:8},{no:3,name:`is_primary`,kind:`scalar`,T:8},{no:4,name:`method`,kind:`scalar`,T:9},{no:5,name:`columns`,kind:`scalar`,T:9,repeated:!0},{no:6,name:`definition`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new IndexInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new IndexInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new IndexInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(IndexInfo,a$1,b$2)}},GetIndexesRequest=class GetIndexesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetIndexesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetIndexesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetIndexesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetIndexesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetIndexesRequest,a$1,b$2)}},GetIndexesResponse=class GetIndexesResponse extends Message{constructor(data){super(),this.indexes=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetIndexesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`indexes`,kind:`message`,T:IndexInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetIndexesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetIndexesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetIndexesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetIndexesResponse,a$1,b$2)}},ConstraintInfo=class ConstraintInfo extends Message{constructor(data){super(),this.name=``,this.type=``,this.columns=[],this.definition=``,this.refTable=``,this.refColumns=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ConstraintInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`columns`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`definition`,kind:`scalar`,T:9},{no:5,name:`ref_table`,kind:`scalar`,T:9},{no:6,name:`ref_columns`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new ConstraintInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ConstraintInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ConstraintInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ConstraintInfo,a$1,b$2)}},GetConstraintsRequest=class GetConstraintsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetConstraintsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetConstraintsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConstraintsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConstraintsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConstraintsRequest,a$1,b$2)}},GetConstraintsResponse=class GetConstraintsResponse extends Message{constructor(data){super(),this.constraints=[],this.referencedBy=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetConstraintsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`constraints`,kind:`message`,T:ConstraintInfo,repeated:!0},{no:2,name:`referenced_by`,kind:`message`,T:ConstraintInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetConstraintsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConstraintsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConstraintsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConstraintsResponse,a$1,b$2)}},TriggerInfo=class TriggerInfo extends Message{constructor(data){super(),this.name=``,this.timing=``,this.event=``,this.level=``,this.function=``,this.enabled=!1,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TriggerInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`timing`,kind:`scalar`,T:9},{no:3,name:`event`,kind:`scalar`,T:9},{no:4,name:`level`,kind:`scalar`,T:9},{no:5,name:`function`,kind:`scalar`,T:9},{no:6,name:`enabled`,kind:`scalar`,T:8}]);static fromBinary(bytes,options$1){return new TriggerInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TriggerInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TriggerInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TriggerInfo,a$1,b$2)}},GetTriggersRequest=class GetTriggersRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTriggersRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTriggersRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTriggersRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTriggersRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTriggersRequest,a$1,b$2)}},GetTriggersResponse=class GetTriggersResponse extends Message{constructor(data){super(),this.triggers=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTriggersResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`triggers`,kind:`message`,T:TriggerInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetTriggersResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTriggersResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTriggersResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTriggersResponse,a$1,b$2)}},PolicyInfo=class PolicyInfo extends Message{constructor(data){super(),this.name=``,this.command=``,this.permissive=``,this.roles=[],this.usingExpr=``,this.checkExpr=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.PolicyInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`command`,kind:`scalar`,T:9},{no:3,name:`permissive`,kind:`scalar`,T:9},{no:4,name:`roles`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`using_expr`,kind:`scalar`,T:9},{no:6,name:`check_expr`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new PolicyInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new PolicyInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new PolicyInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(PolicyInfo,a$1,b$2)}},GetPoliciesRequest=class GetPoliciesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetPoliciesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetPoliciesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetPoliciesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetPoliciesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetPoliciesRequest,a$1,b$2)}},GetPoliciesResponse=class GetPoliciesResponse extends Message{constructor(data){super(),this.policies=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetPoliciesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`policies`,kind:`message`,T:PolicyInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetPoliciesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetPoliciesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetPoliciesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetPoliciesResponse,a$1,b$2)}},GrantInfo=class GrantInfo extends Message{constructor(data){super(),this.grantee=``,this.privileges=[],this.grantor=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GrantInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`grantee`,kind:`scalar`,T:9},{no:2,name:`privileges`,kind:`scalar`,T:9,repeated:!0},{no:3,name:`grantor`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GrantInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GrantInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GrantInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GrantInfo,a$1,b$2)}},GetGrantsRequest=class GetGrantsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetGrantsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetGrantsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetGrantsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetGrantsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetGrantsRequest,a$1,b$2)}},GetGrantsResponse=class GetGrantsResponse extends Message{constructor(data){super(),this.grants=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetGrantsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`grants`,kind:`message`,T:GrantInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetGrantsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetGrantsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetGrantsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetGrantsResponse,a$1,b$2)}},MaterializedViewInfo=class MaterializedViewInfo extends Message{constructor(data){super(),this.name=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.MaterializedViewInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new MaterializedViewInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new MaterializedViewInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new MaterializedViewInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(MaterializedViewInfo,a$1,b$2)}},GetMaterializedViewsRequest=class GetMaterializedViewsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetMaterializedViewsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetMaterializedViewsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetMaterializedViewsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetMaterializedViewsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetMaterializedViewsRequest,a$1,b$2)}},GetMaterializedViewsResponse=class GetMaterializedViewsResponse extends Message{constructor(data){super(),this.materializedViews=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetMaterializedViewsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`materialized_views`,kind:`message`,T:MaterializedViewInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetMaterializedViewsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetMaterializedViewsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetMaterializedViewsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetMaterializedViewsResponse,a$1,b$2)}},FunctionInfo=class FunctionInfo extends Message{constructor(data){super(),this.name=``,this.returnType=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.FunctionInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`return_type`,kind:`scalar`,T:9},{no:3,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FunctionInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FunctionInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FunctionInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FunctionInfo,a$1,b$2)}},GetFunctionsRequest=class GetFunctionsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionsRequest,a$1,b$2)}},GetFunctionsResponse=class GetFunctionsResponse extends Message{constructor(data){super(),this.functions=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`functions`,kind:`message`,T:FunctionInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetFunctionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionsResponse,a$1,b$2)}},ProcedureInfo=class ProcedureInfo extends Message{constructor(data){super(),this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ProcedureInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ProcedureInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ProcedureInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ProcedureInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ProcedureInfo,a$1,b$2)}},GetProceduresRequest=class GetProceduresRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetProceduresRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetProceduresRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetProceduresRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetProceduresRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetProceduresRequest,a$1,b$2)}},GetProceduresResponse=class GetProceduresResponse extends Message{constructor(data){super(),this.procedures=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetProceduresResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`procedures`,kind:`message`,T:ProcedureInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetProceduresResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetProceduresResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetProceduresResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetProceduresResponse,a$1,b$2)}},GetFunctionInfoRequest=class GetFunctionInfoRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionInfoRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`name`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionInfoRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionInfoRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionInfoRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionInfoRequest,a$1,b$2)}},GetFunctionInfoResponse=class GetFunctionInfoResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionInfoResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`metadata`,kind:`message`,T:FunctionMetadata}]);static fromBinary(bytes,options$1){return new GetFunctionInfoResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionInfoResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionInfoResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionInfoResponse,a$1,b$2)}},FunctionMetadata=class FunctionMetadata extends Message{constructor(data){super(),this.name=``,this.kind=``,this.owner=``,this.language=``,this.returnType=``,this.arguments=``,this.definition=``,this.volatility=``,this.comment=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.FunctionMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`kind`,kind:`scalar`,T:9},{no:3,name:`owner`,kind:`scalar`,T:9},{no:4,name:`language`,kind:`scalar`,T:9},{no:5,name:`return_type`,kind:`scalar`,T:9},{no:6,name:`arguments`,kind:`scalar`,T:9},{no:7,name:`definition`,kind:`scalar`,T:9},{no:8,name:`volatility`,kind:`scalar`,T:9},{no:9,name:`comment`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FunctionMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FunctionMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FunctionMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FunctionMetadata,a$1,b$2)}},GetFunctionDependenciesRequest=class GetFunctionDependenciesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionDependenciesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`name`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionDependenciesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionDependenciesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionDependenciesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionDependenciesRequest,a$1,b$2)}},GetFunctionDependenciesResponse=class GetFunctionDependenciesResponse extends Message{constructor(data){super(),this.dependencies=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionDependenciesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`dependencies`,kind:`message`,T:DependencyInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetFunctionDependenciesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionDependenciesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionDependenciesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionDependenciesResponse,a$1,b$2)}},DependencyInfo=class DependencyInfo extends Message{constructor(data){super(),this.schema=``,this.name=``,this.type=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.DependencyInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`schema`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`type`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new DependencyInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new DependencyInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new DependencyInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(DependencyInfo,a$1,b$2)}},ActiveSession=class ActiveSession extends Message{constructor(data){super(),this.pid=0,this.usename=``,this.datname=``,this.applicationName=``,this.clientAddr=``,this.state=``,this.query=``,this.queryStart=``,this.stateChange=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ActiveSession`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`pid`,kind:`scalar`,T:5},{no:2,name:`usename`,kind:`scalar`,T:9},{no:3,name:`datname`,kind:`scalar`,T:9},{no:4,name:`application_name`,kind:`scalar`,T:9},{no:5,name:`client_addr`,kind:`scalar`,T:9},{no:6,name:`state`,kind:`scalar`,T:9},{no:7,name:`query`,kind:`scalar`,T:9},{no:8,name:`query_start`,kind:`scalar`,T:9},{no:9,name:`state_change`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ActiveSession().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ActiveSession().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ActiveSession().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ActiveSession,a$1,b$2)}},GetActiveSessionsRequest=class GetActiveSessionsRequest extends Message{constructor(data){super(),this.connectionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetActiveSessionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetActiveSessionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetActiveSessionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetActiveSessionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetActiveSessionsRequest,a$1,b$2)}},GetActiveSessionsResponse=class GetActiveSessionsResponse extends Message{constructor(data){super(),this.sessions=[],this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetActiveSessionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sessions`,kind:`message`,T:ActiveSession,repeated:!0},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetActiveSessionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetActiveSessionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetActiveSessionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetActiveSessionsResponse,a$1,b$2)}},TerminateSessionRequest=class TerminateSessionRequest extends Message{constructor(data){super(),this.connectionId=``,this.pid=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TerminateSessionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`pid`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new TerminateSessionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TerminateSessionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TerminateSessionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TerminateSessionRequest,a$1,b$2)}},TerminateSessionResponse=class TerminateSessionResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TerminateSessionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TerminateSessionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TerminateSessionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TerminateSessionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TerminateSessionResponse,a$1,b$2)}},AuditExportRequest=class AuditExportRequest extends Message{constructor(data){super(),this.connectionId=``,this.sql=``,this.rowCount=0,this.format=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.AuditExportRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`sql`,kind:`scalar`,T:9},{no:3,name:`row_count`,kind:`scalar`,T:5},{no:4,name:`format`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AuditExportRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AuditExportRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AuditExportRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AuditExportRequest,a$1,b$2)}},AuditExportResponse=class AuditExportResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.AuditExportResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new AuditExportResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AuditExportResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AuditExportResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AuditExportResponse,a$1,b$2)}};const QueryService={typeName:`query.v1.QueryService`,methods:{executeSQL:{name:`ExecuteSQL`,I:ExecuteSQLRequest,O:ExecuteSQLResponse,kind:MethodKind.ServerStreaming},cancelQuery:{name:`CancelQuery`,I:CancelQueryRequest,O:CancelQueryResponse,kind:MethodKind.Unary},getSchemas:{name:`GetSchemas`,I:GetSchemasRequest,O:GetSchemasResponse,kind:MethodKind.Unary},getTables:{name:`GetTables`,I:GetTablesRequest,O:GetTablesResponse,kind:MethodKind.Unary},getColumns:{name:`GetColumns`,I:GetColumnsRequest,O:GetColumnsResponse,kind:MethodKind.Unary},getTableInfo:{name:`GetTableInfo`,I:GetTableInfoRequest,O:GetTableInfoResponse,kind:MethodKind.Unary},getIndexes:{name:`GetIndexes`,I:GetIndexesRequest,O:GetIndexesResponse,kind:MethodKind.Unary},getConstraints:{name:`GetConstraints`,I:GetConstraintsRequest,O:GetConstraintsResponse,kind:MethodKind.Unary},getTriggers:{name:`GetTriggers`,I:GetTriggersRequest,O:GetTriggersResponse,kind:MethodKind.Unary},getPolicies:{name:`GetPolicies`,I:GetPoliciesRequest,O:GetPoliciesResponse,kind:MethodKind.Unary},getGrants:{name:`GetGrants`,I:GetGrantsRequest,O:GetGrantsResponse,kind:MethodKind.Unary},getMaterializedViews:{name:`GetMaterializedViews`,I:GetMaterializedViewsRequest,O:GetMaterializedViewsResponse,kind:MethodKind.Unary},getFunctions:{name:`GetFunctions`,I:GetFunctionsRequest,O:GetFunctionsResponse,kind:MethodKind.Unary},getProcedures:{name:`GetProcedures`,I:GetProceduresRequest,O:GetProceduresResponse,kind:MethodKind.Unary},getFunctionInfo:{name:`GetFunctionInfo`,I:GetFunctionInfoRequest,O:GetFunctionInfoResponse,kind:MethodKind.Unary},getFunctionDependencies:{name:`GetFunctionDependencies`,I:GetFunctionDependenciesRequest,O:GetFunctionDependenciesResponse,kind:MethodKind.Unary},getActiveSessions:{name:`GetActiveSessions`,I:GetActiveSessionsRequest,O:GetActiveSessionsResponse,kind:MethodKind.Unary},terminateSession:{name:`TerminateSession`,I:TerminateSessionRequest,O:TerminateSessionResponse,kind:MethodKind.Unary},auditExport:{name:`AuditExport`,I:AuditExportRequest,O:AuditExportResponse,kind:MethodKind.Unary}}};var AIProvider=class AIProvider extends Message{constructor(data){super(),this.id=``,this.name=``,this.vendor=``,this.model=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AIProvider`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`vendor`,kind:`scalar`,T:9},{no:4,name:`model`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AIProvider().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AIProvider().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AIProvider().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AIProvider,a$1,b$2)}},ListAIProvidersRequest=class ListAIProvidersRequest extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ListAIProvidersRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new ListAIProvidersRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListAIProvidersRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListAIProvidersRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListAIProvidersRequest,a$1,b$2)}},ListAIProvidersResponse=class ListAIProvidersResponse extends Message{constructor(data){super(),this.providers=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ListAIProvidersResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`providers`,kind:`message`,T:AIProvider,repeated:!0}]);static fromBinary(bytes,options$1){return new ListAIProvidersResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListAIProvidersResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListAIProvidersResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListAIProvidersResponse,a$1,b$2)}},GenerateSQLRequest=class GenerateSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.prompt=``,this.schemas=[],this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.GenerateSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`prompt`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GenerateSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GenerateSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GenerateSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GenerateSQLRequest,a$1,b$2)}},GenerateSQLResponse=class GenerateSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.GenerateSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GenerateSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GenerateSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GenerateSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GenerateSQLResponse,a$1,b$2)}},ExplainSQLRequest=class ExplainSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.schemas=[],this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ExplainSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExplainSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExplainSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExplainSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExplainSQLRequest,a$1,b$2)}},ExplainSQLResponse=class ExplainSQLResponse extends Message{constructor(data){super(),this.explanation=``,this.error=``,this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ExplainSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`explanation`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExplainSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExplainSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExplainSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExplainSQLResponse,a$1,b$2)}},FixSQLRequest=class FixSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.errorMessage=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.FixSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`error_message`,kind:`scalar`,T:9},{no:5,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new FixSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FixSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FixSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FixSQLRequest,a$1,b$2)}},FixSQLResponse=class FixSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.FixSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FixSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FixSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FixSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FixSQLResponse,a$1,b$2)}},RewriteSQLRequest=class RewriteSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RewriteSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new RewriteSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RewriteSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RewriteSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RewriteSQLRequest,a$1,b$2)}},RewriteSQLResponse=class RewriteSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RewriteSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RewriteSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RewriteSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RewriteSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RewriteSQLResponse,a$1,b$2)}},RefreshSchemaCacheRequest=class RefreshSchemaCacheRequest extends Message{constructor(data){super(),this.connectionId=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RefreshSchemaCacheRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new RefreshSchemaCacheRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RefreshSchemaCacheRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RefreshSchemaCacheRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RefreshSchemaCacheRequest,a$1,b$2)}},RefreshSchemaCacheResponse=class RefreshSchemaCacheResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RefreshSchemaCacheResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RefreshSchemaCacheResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RefreshSchemaCacheResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RefreshSchemaCacheResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RefreshSchemaCacheResponse,a$1,b$2)}},AssessChangeRiskRequest=class AssessChangeRiskRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sqlStatements=[],this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AssessChangeRiskRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql_statements`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new AssessChangeRiskRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AssessChangeRiskRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AssessChangeRiskRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AssessChangeRiskRequest,a$1,b$2)}},RiskFinding=class RiskFinding extends Message{constructor(data){super(),this.severity=``,this.category=``,this.description=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RiskFinding`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`severity`,kind:`scalar`,T:9},{no:2,name:`category`,kind:`scalar`,T:9},{no:3,name:`description`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RiskFinding().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RiskFinding().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RiskFinding().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RiskFinding,a$1,b$2)}},AssessChangeRiskResponse=class AssessChangeRiskResponse extends Message{constructor(data){super(),this.overallRisk=``,this.findings=[],this.error=``,this.dependencyGraph=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AssessChangeRiskResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`overall_risk`,kind:`scalar`,T:9},{no:2,name:`findings`,kind:`message`,T:RiskFinding,repeated:!0},{no:3,name:`error`,kind:`scalar`,T:9},{no:4,name:`dependency_graph`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AssessChangeRiskResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AssessChangeRiskResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AssessChangeRiskResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AssessChangeRiskResponse,a$1,b$2)}};const AIService={typeName:`ai.v1.AIService`,methods:{listAIProviders:{name:`ListAIProviders`,I:ListAIProvidersRequest,O:ListAIProvidersResponse,kind:MethodKind.Unary},generateSQL:{name:`GenerateSQL`,I:GenerateSQLRequest,O:GenerateSQLResponse,kind:MethodKind.Unary},explainSQL:{name:`ExplainSQL`,I:ExplainSQLRequest,O:ExplainSQLResponse,kind:MethodKind.Unary},fixSQL:{name:`FixSQL`,I:FixSQLRequest,O:FixSQLResponse,kind:MethodKind.Unary},rewriteSQL:{name:`RewriteSQL`,I:RewriteSQLRequest,O:RewriteSQLResponse,kind:MethodKind.Unary},refreshSchemaCache:{name:`RefreshSchemaCache`,I:RefreshSchemaCacheRequest,O:RefreshSchemaCacheResponse,kind:MethodKind.Unary},assessChangeRisk:{name:`AssessChangeRisk`,I:AssessChangeRiskRequest,O:AssessChangeRiskResponse,kind:MethodKind.Unary}}};var transport=createConnectTransport({baseUrl:``,credentials:`include`});const connectionClient=createPromiseClient(ConnectionService,transport),queryClient$1=createPromiseClient(QueryService,transport),aiClient=createPromiseClient(AIService,transport),queryKeys={all:[`query`],schemas:connectionId=>[...queryKeys.all,`schemas`,connectionId],tables:(connectionId,schema)=>[...queryKeys.all,`tables`,connectionId,schema],columns:(connectionId,schema,table$1)=>[...queryKeys.all,`columns`,connectionId,schema,table$1],tableInfo:(connectionId,schema,table$1)=>[...queryKeys.all,`tableInfo`,connectionId,schema,table$1],indexes:(connectionId,schema,table$1)=>[...queryKeys.all,`indexes`,connectionId,schema,table$1],constraints:(connectionId,schema,table$1)=>[...queryKeys.all,`constraints`,connectionId,schema,table$1],triggers:(connectionId,schema,table$1)=>[...queryKeys.all,`triggers`,connectionId,schema,table$1],policies:(connectionId,schema,table$1)=>[...queryKeys.all,`policies`,connectionId,schema,table$1],grants:(connectionId,schema,table$1)=>[...queryKeys.all,`grants`,connectionId,schema,table$1],materializedViews:(connectionId,schema)=>[...queryKeys.all,`materializedViews`,connectionId,schema],functions:(connectionId,schema)=>[...queryKeys.all,`functions`,connectionId,schema],procedures:(connectionId,schema)=>[...queryKeys.all,`procedures`,connectionId,schema],functionInfo:(connectionId,schema,name$2,args)=>[...queryKeys.all,`functionInfo`,connectionId,schema,name$2,args],functionDependencies:(connectionId,schema,name$2,args)=>[...queryKeys.all,`functionDependencies`,connectionId,schema,name$2,args],processes:connectionId=>[...queryKeys.all,`processes`,connectionId]},connectionKeys={all:[`connections`],list:()=>[...connectionKeys.all,`list`],detail:id=>[...connectionKeys.all,`detail`,id]};function useSchemas(connectionId){return useQuery({queryKey:queryKeys.schemas(connectionId),queryFn:async()=>(await queryClient$1.getSchemas({connectionId})).schemas,enabled:!!connectionId})}function useTables(connectionId,schema){return useQuery({queryKey:queryKeys.tables(connectionId,schema),queryFn:async()=>(await queryClient$1.getTables({connectionId,schema})).tables,enabled:!!connectionId&&!!schema})}function useColumns(connectionId,schema,table$1){return useQuery({queryKey:queryKeys.columns(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getColumns({connectionId,schema,table:table$1})).columns,enabled:!!connectionId&&!!schema&&!!table$1})}function useTableInfo(connectionId,schema,table$1){return useQuery({queryKey:queryKeys.tableInfo(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getTableInfo({connectionId,schema,table:table$1})).metadata,enabled:!!connectionId&&!!schema&&!!table$1})}function useIndexes(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.indexes(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getIndexes({connectionId,schema,table:table$1})).indexes,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useConstraints(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.constraints(connectionId,schema,table$1),queryFn:async()=>{let response=await queryClient$1.getConstraints({connectionId,schema,table:table$1});return{constraints:response.constraints,referencedBy:response.referencedBy}},enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useTriggers(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.triggers(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getTriggers({connectionId,schema,table:table$1})).triggers,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function usePolicies(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.policies(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getPolicies({connectionId,schema,table:table$1})).policies,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useGrants(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.grants(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getGrants({connectionId,schema,table:table$1})).grants,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useMaterializedViews(connectionId,schema){return useQuery({queryKey:queryKeys.materializedViews(connectionId,schema),queryFn:async()=>(await queryClient$1.getMaterializedViews({connectionId,schema})).materializedViews,enabled:!!connectionId&&!!schema})}function useFunctions(connectionId,schema){return useQuery({queryKey:queryKeys.functions(connectionId,schema),queryFn:async()=>(await queryClient$1.getFunctions({connectionId,schema})).functions,enabled:!!connectionId&&!!schema})}function useProcedures(connectionId,schema){return useQuery({queryKey:queryKeys.procedures(connectionId,schema),queryFn:async()=>(await queryClient$1.getProcedures({connectionId,schema})).procedures,enabled:!!connectionId&&!!schema})}function useFunctionInfo(connectionId,schema,name$2,args){return useQuery({queryKey:queryKeys.functionInfo(connectionId,schema,name$2,args),queryFn:async()=>(await queryClient$1.getFunctionInfo({connectionId,schema,name:name$2,arguments:args})).metadata,enabled:!!connectionId&&!!schema&&!!name$2})}function useFunctionDependencies(connectionId,schema,name$2,args){return useQuery({queryKey:queryKeys.functionDependencies(connectionId,schema,name$2,args),queryFn:async()=>(await queryClient$1.getFunctionDependencies({connectionId,schema,name:name$2,arguments:args})).dependencies,enabled:!!connectionId&&!!schema&&!!name$2})}function useExecuteSQL(){return useMutation({mutationFn:async({connectionId,sql,queryId,searchPath,onPid})=>{let lastResponse=null;for await(let response of queryClient$1.executeSQL({connectionId,sql,queryId,searchPath})){response.backendPid&&onPid&&response.columns.length===0&&!response.error&&onPid(response.backendPid);let mappedRows=response.rows.map(row=>{let obj={};return response.columns.forEach((col,i$3)=>{obj[col.name]=row.values[i$3]}),obj});lastResponse={columns:response.columns.map(col=>({name:col.name,type:col.type,tableName:col.tableName,schemaName:col.schemaName,isPrimaryKey:col.isPrimaryKey,isNullable:col.isNullable,hasDefault:col.hasDefault})),rows:mappedRows,rowCount:response.rowCount,executionTime:response.executionTimeMs,error:response.error,backendPid:response.backendPid}}if(!lastResponse)throw Error(`No response received from server`);return lastResponse}})}function useCancelQuery(){return useMutation({mutationFn:async({connectionId,queryId})=>{let response=await queryClient$1.cancelQuery({connectionId,queryId});return{cancelled:response.cancelled,error:response.error}}})}function useConnections(){return useQuery({queryKey:connectionKeys.list(),queryFn:async()=>(await connectionClient.listConnections({})).connections})}function useActiveProcesses(connectionId,enabled=!0){return useQuery({queryKey:queryKeys.processes(connectionId),queryFn:async()=>{let response=await queryClient$1.getActiveSessions({connectionId});if(response.error)throw Error(response.error);return response.sessions},enabled:enabled&&!!connectionId,refetchInterval:5e3})}function useTerminateProcess(){let qc=useQueryClient();return useMutation({mutationFn:async({connectionId,pid})=>{let response=await queryClient$1.terminateSession({connectionId,pid});if(response.error)throw Error(response.error);return response.success},onSuccess:(_$2,{connectionId})=>{qc.invalidateQueries({queryKey:queryKeys.processes(connectionId)})}})}function useRefreshSchemaCache(){return useMutation({mutationFn:async({connectionId,schemas})=>{let response=await aiClient.refreshSchemaCache({connectionId,schemas:schemas||[]});if(response.error)throw Error(response.error);return response.success}})}function useConnectionHealth(connectionId,enabled=!0){return useQuery({queryKey:[...connectionKeys.all,`health`,connectionId],queryFn:async()=>{let response=await connectionClient.testConnection({id:connectionId});return{success:response.success,error:response.error,latencyMs:response.latencyMs}},enabled:enabled&&!!connectionId,staleTime:6e4,retry:1})}var PERMISSION_VARIANTS={admin:`default`,ddl:`warning`,write:`info`,read:`success`,explain:`muted`,execute:`secondary`,export:`outline`},PERMISSION_ORDER=[`explain`,`read`,`execute`,`export`,`write`,`ddl`,`admin`];function sortPermissions(permissions){return[...permissions].sort((a$1,b$2)=>PERMISSION_ORDER.indexOf(a$1)-PERMISSION_ORDER.indexOf(b$2))}function ConnectionSwitcher({selectedConnectionId}){let navigate=useNavigate(),{data:connections,isLoading}=useConnections(),{authEnabled}=useSession(),{data:healthCheck}=useConnectionHealth(selectedConnectionId,!!selectedConnectionId),isConnectionDown=healthCheck&&!healthCheck.success,currentConnection=connections?.find(c=>c.id===selectedConnectionId);return isLoading?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,import_jsx_runtime.jsx)(Database,{size:14}),(0,import_jsx_runtime.jsx)(`span`,{children:`Loading...`})]}):!connections||connections.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,import_jsx_runtime.jsx)(Database,{size:14}),(0,import_jsx_runtime.jsx)(`span`,{children:`No connections`}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs`,children:[`(Check`,` `,(0,import_jsx_runtime.jsx)(`a`,{href:`https://docs.pgconsole.com/configuration/iam-permissions`,target:`_blank`,rel:`noopener noreferrer`,className:`text-blue-500 hover:underline`,children:`IAM permissions`}),`)`]})]}):(0,import_jsx_runtime.jsxs)(Menu,{children:[(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsxs)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(MenuTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`!h-auto !py-1 !px-2 gap-1`})}),children:[currentConnection?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col items-start text-left gap-0.5`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium whitespace-nowrap`,children:currentConnection.name}),isConnectionDown&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(CircleAlert,{className:`text-red-500`,size:14})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-sm`,children:[`Connection unavailable`,healthCheck?.error&&(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-400 mt-1`,children:healthCheck.error})]})})]}),currentConnection.labels&&currentConnection.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:currentConnection.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&currentConnection.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:sortPermissions(currentConnection.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:[currentConnection.host,`:`,currentConnection.port,`/`,currentConnection.database]})]}):`Select connection`,(0,import_jsx_runtime.jsx)(ChevronDown,{size:14,className:`shrink-0`})]}),currentConnection&&(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`font-medium`,children:currentConnection.name}),currentConnection.labels&&currentConnection.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:currentConnection.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&currentConnection.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:sortPermissions(currentConnection.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-muted-foreground`,children:[currentConnection.host,`:`,currentConnection.port,`/`,currentConnection.database]})]})})]}),(0,import_jsx_runtime.jsx)(MenuPopup,{children:connections.map(conn=>(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>navigate(`/?connectionId=${conn.id}`),className:selectedConnectionId===conn.id?`bg-gray-100`:``,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium`,children:conn.name}),conn.labels&&conn.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:conn.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&conn.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:sortPermissions(conn.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[conn.host,`:`,conn.port,`/`,conn.database]})]})},conn.id))})]})}const SubscriptionModalContext=(0,import_react.createContext)(null);function useSubscriptionModal(){let context=(0,import_react.useContext)(SubscriptionModalContext);if(!context)throw Error(`useSubscriptionModal must be used within SubscriptionModalProvider`);return context}function useOwner(){let{isOwner}=useSession();return isOwner}const AvatarRootContext=import_react.createContext(void 0);function useAvatarRootContext(){let context=import_react.useContext(AvatarRootContext);if(context===void 0)throw Error(formatErrorMessage(13));return context}const avatarStateAttributesMapping={imageLoadingStatus:()=>null},AvatarRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,[imageLoadingStatus,setImageLoadingStatus]=import_react.useState(`idle`),state$1=import_react.useMemo(()=>({imageLoadingStatus}),[imageLoadingStatus]),contextValue=import_react.useMemo(()=>({imageLoadingStatus,setImageLoadingStatus}),[imageLoadingStatus,setImageLoadingStatus]),element$3=useRenderElement(`span`,componentProps,{state:state$1,ref:forwardedRef,props:elementProps,stateAttributesMapping:avatarStateAttributesMapping});return(0,import_jsx_runtime.jsx)(AvatarRootContext.Provider,{value:contextValue,children:element$3})}),AvatarFallback$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,delay,...elementProps}=componentProps,{imageLoadingStatus}=useAvatarRootContext(),[delayPassed,setDelayPassed]=import_react.useState(delay===void 0),timeout=useTimeout();return import_react.useEffect(()=>(delay!==void 0&&timeout.start(delay,()=>setDelayPassed(!0)),timeout.clear),[timeout,delay]),useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({imageLoadingStatus}),[imageLoadingStatus]),ref:forwardedRef,props:elementProps,stateAttributesMapping:avatarStateAttributesMapping,enabled:imageLoadingStatus!==`loaded`&&delayPassed})});function Avatar({className,...props}){return(0,import_jsx_runtime.jsx)(AvatarRoot,{className:cn(`inline-flex size-8 shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-background align-middle font-medium text-xs`,className),"data-slot":`avatar`,...props})}function AvatarFallback({className,...props}){return(0,import_jsx_runtime.jsx)(AvatarFallback$1,{className:cn(`flex size-full items-center justify-center rounded-full bg-muted`,className),"data-slot":`avatar-fallback`,...props})}function UserAvatar({user,size:size$3=`md`,className}){let[erroredUrl,setErroredUrl]=(0,import_react.useState)(null),avatarUrl=user?.avatar,initial=(user?.name||user?.email||`U`).charAt(0).toUpperCase(),sizeClasses={xs:`size-6 text-xs`,sm:`size-8 text-xs`,md:`size-10 text-sm`,lg:`size-12 text-base`},showImage=avatarUrl&&avatarUrl!==erroredUrl;return(0,import_jsx_runtime.jsx)(Avatar,{className:`${sizeClasses[size$3]} ${className||``}`,children:showImage?(0,import_jsx_runtime.jsx)(`img`,{src:avatarUrl,alt:user?.name||user?.email||`User`,className:`size-full object-cover`,onError:()=>setErroredUrl(avatarUrl)}):(0,import_jsx_runtime.jsx)(AvatarFallback,{className:`bg-gray-200 text-gray-600`,children:initial})})}var logo_light_full_default=`/assets/logo-light-full-3Wf7NsR1.svg`;function Header({selectedConnectionId}){let navigate=useNavigate(),{user,authEnabled}=useSession(),subscriptionModal=useSubscriptionModal(),isOwner=useOwner(),isGuest=user?.email===`guest`,showSignIn=!user&&authEnabled,handleSignOut=async()=>{await signOut(),window.location.href=`/signin`};return(0,import_jsx_runtime.jsxs)(`header`,{className:`h-12 bg-gray-100 border-b border-gray-300 flex items-center px-3 justify-between`,children:[(0,import_jsx_runtime.jsx)(ConnectionSwitcher,{selectedConnectionId}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>window.open(`https://docs.pgconsole.com`,`_blank`),className:`flex items-center justify-center hover:opacity-80`,"aria-label":`Documentation`,children:(0,import_jsx_runtime.jsx)(`img`,{src:logo_light_full_default,alt:`pgconsole docs`,className:`h-7.5`})}),user&&!isGuest?(0,import_jsx_runtime.jsxs)(Menu,{children:[(0,import_jsx_runtime.jsx)(MenuTrigger,{render:(0,import_jsx_runtime.jsx)(`button`,{className:`flex items-center hover:opacity-80 transition-opacity`,"aria-label":`User menu`,children:(0,import_jsx_runtime.jsx)(UserAvatar,{user,size:`sm`})})}),(0,import_jsx_runtime.jsxs)(MenuPopup,{align:`end`,side:`bottom`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`px-3 py-2 border-b border-gray-200`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:user.name}),(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-500`,children:[user.name!==user.email&&(0,import_jsx_runtime.jsx)(`span`,{children:user.email}),isOwner&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-blue-600 font-medium`,children:`(Owner)`})]})]}),isOwner&&(0,import_jsx_runtime.jsxs)(MenuItem,{onClick:()=>subscriptionModal.open(),children:[(0,import_jsx_runtime.jsx)(CreditCard,{size:14}),`Subscription`]}),(0,import_jsx_runtime.jsxs)(MenuItem,{onClick:handleSignOut,children:[(0,import_jsx_runtime.jsx)(LogOut,{size:14}),`Sign Out`]}),(0,import_jsx_runtime.jsx)(`div`,{className:`px-3 py-2 border-t border-gray-200`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-400`,children:[`v`,`1.0.3`,` (`,`26aabdb`,`) · `,new Date(`2026-02-09T17:26:30.404Z`).toLocaleDateString()]})})]})]}):showSignIn?(0,import_jsx_runtime.jsx)(`button`,{className:`text-xs text-gray-500 hover:text-gray-700 transition-colors px-2`,onClick:()=>navigate(`/signin`),children:`Sign In`}):null]})]})}function SearchInput({value,onClear,className,...props}){let hasValue=value!=null&&String(value).length>0;return(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,children:[(0,import_jsx_runtime.jsx)(Search,{className:`pointer-events-none absolute left-2.5 top-1/2 z-10 -translate-y-1/2 size-4 text-muted-foreground`}),(0,import_jsx_runtime.jsx)(Input,{type:`text`,value,className:`[&_[data-slot=input]]:pl-8 ${hasValue?`[&_[data-slot=input]]:pr-8`:``} ${className||``}`,...props}),hasValue&&onClear&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-xs`,className:`absolute right-1 top-1/2 z-10 -translate-y-1/2`,onClick:onClear,children:(0,import_jsx_runtime.jsx)(X,{className:`size-3`})})]})}function useOnFirstRender(fn){let ref=import_react.useRef(!0);ref.current&&(ref.current=!1,fn())}const SelectRootContext=import_react.createContext(null),SelectFloatingContext=import_react.createContext(null);function useSelectRootContext(){let context=import_react.useContext(SelectRootContext);if(context===null)throw Error(formatErrorMessage(60));return context}function useSelectFloatingContext(){let context=import_react.useContext(SelectFloatingContext);if(context===null)throw Error(formatErrorMessage(61));return context}const defaultItemEquality=(item,value)=>Object.is(item,value);function compareItemEquality(item,value,comparer){return item==null||value==null?Object.is(item,value):comparer(item,value)}function itemIncludes(collection,value,comparer){return!collection||collection.length===0?!1:collection.some(item=>item===void 0?!1:compareItemEquality(item,value,comparer))}function findItemIndex(collection,value,comparer){return!collection||collection.length===0?-1:collection.findIndex(item=>item===void 0?!1:compareItemEquality(item,value,comparer))}function removeItem(collection,value,comparer){return collection.filter(item=>!compareItemEquality(item,value,comparer))}function serializeValue(value){if(value==null)return``;if(typeof value==`string`)return value;try{return JSON.stringify(value)}catch{return String(value)}}function isGroupedItems(items){return items!=null&&items.length>0&&typeof items[0]==`object`&&items[0]!=null&&`items`in items[0]}function hasNullItemLabel(items){if(!Array.isArray(items))return items!=null&&!(`null`in items);if(isGroupedItems(items)){for(let group of items)for(let item of group.items)if(item&&item.value==null&&item.label!=null)return!0;return!1}for(let item of items)if(item&&item.value==null&&item.label!=null)return!0;return!1}function stringifyAsLabel(item,itemToStringLabel){if(itemToStringLabel&&item!=null)return itemToStringLabel(item)??``;if(item&&typeof item==`object`){if(`label`in item&&item.label!=null)return String(item.label);if(`value`in item)return String(item.value)}return serializeValue(item)}function stringifyAsValue(item,itemToStringValue){return itemToStringValue&&item!=null?itemToStringValue(item)??``:item&&typeof item==`object`&&`value`in item&&`label`in item?serializeValue(item.value):serializeValue(item)}function resolveSelectedLabel(value,items,itemToStringLabel){function fallback$1(){return stringifyAsLabel(value,itemToStringLabel)}if(itemToStringLabel&&value!=null)return itemToStringLabel(value);if(value&&typeof value==`object`&&`label`in value&&value.label!=null)return value.label;if(items&&!Array.isArray(items))return items[value]??fallback$1();if(Array.isArray(items)){let flatItems=isGroupedItems(items)?items.flatMap(g=>g.items):items;if(typeof value!=`object`||!value){let match=flatItems.find(item=>item.value===value);return match&&match.label!=null?match.label:fallback$1()}if(`value`in value){let match=flatItems.find(item=>item&&item.value===value.value);if(match&&match.label!=null)return match.label}}return fallback$1()}function resolveMultipleLabels(values,items,itemToStringLabel){return values.reduce((acc,value,index$4)=>(index$4>0&&acc.push(`, `),acc.push((0,import_jsx_runtime.jsx)(import_react.Fragment,{children:resolveSelectedLabel(value,items,itemToStringLabel)},index$4)),acc),[])}const selectors$1={id:createSelector(state$1=>state$1.id),modal:createSelector(state$1=>state$1.modal),multiple:createSelector(state$1=>state$1.multiple),items:createSelector(state$1=>state$1.items),itemToStringLabel:createSelector(state$1=>state$1.itemToStringLabel),itemToStringValue:createSelector(state$1=>state$1.itemToStringValue),isItemEqualToValue:createSelector(state$1=>state$1.isItemEqualToValue),value:createSelector(state$1=>state$1.value),hasSelectedValue:createSelector(state$1=>{let{value,multiple,itemToStringValue}=state$1;return value==null?!1:multiple&&Array.isArray(value)?value.length>0:stringifyAsValue(value,itemToStringValue)!==``}),hasNullItemLabel:createSelector((state$1,enabled)=>enabled?hasNullItemLabel(state$1.items):!1),open:createSelector(state$1=>state$1.open),mounted:createSelector(state$1=>state$1.mounted),forceMount:createSelector(state$1=>state$1.forceMount),transitionStatus:createSelector(state$1=>state$1.transitionStatus),openMethod:createSelector(state$1=>state$1.openMethod),activeIndex:createSelector(state$1=>state$1.activeIndex),selectedIndex:createSelector(state$1=>state$1.selectedIndex),isActive:createSelector((state$1,index$4)=>state$1.activeIndex===index$4),isSelected:createSelector((state$1,index$4,candidate)=>{let comparer=state$1.isItemEqualToValue,storeValue=state$1.value;return state$1.multiple?Array.isArray(storeValue)&&storeValue.some(item=>compareItemEquality(item,candidate,comparer)):state$1.selectedIndex===index$4&&state$1.selectedIndex!==null?!0:compareItemEquality(storeValue,candidate,comparer)}),isSelectedByFocus:createSelector((state$1,index$4)=>state$1.selectedIndex===index$4),popupProps:createSelector(state$1=>state$1.popupProps),triggerProps:createSelector(state$1=>state$1.triggerProps),triggerElement:createSelector(state$1=>state$1.triggerElement),positionerElement:createSelector(state$1=>state$1.positionerElement),listElement:createSelector(state$1=>state$1.listElement),scrollUpArrowVisible:createSelector(state$1=>state$1.scrollUpArrowVisible),scrollDownArrowVisible:createSelector(state$1=>state$1.scrollDownArrowVisible),hasScrollArrows:createSelector(state$1=>state$1.hasScrollArrows)};function useValueChanged(value,onChange){let valueRef=import_react.useRef(value),onChangeCallback=useStableCallback(onChange);useIsoLayoutEffect(()=>{valueRef.current!==value&&onChangeCallback(valueRef.current)},[value,onChangeCallback]),useIsoLayoutEffect(()=>{valueRef.current=value},[value])}function SelectRoot(props){let{id,value:valueProp,defaultValue=null,onValueChange,open:openProp,defaultOpen=!1,onOpenChange,name:nameProp,disabled:disabledProp=!1,readOnly:readOnly$1=!1,required=!1,modal=!0,actionsRef,inputRef,onOpenChangeComplete,items,multiple=!1,itemToStringLabel,itemToStringValue,isItemEqualToValue=defaultItemEquality,highlightItemOnHover=!0,children}=props,{clearErrors}=useFormContext(),{setDirty,setTouched,setFocused,shouldValidateOnChange,validityData,setFilled,name:fieldName,disabled:fieldDisabled,validation,validationMode}=useFieldRootContext(),generatedId=useLabelableId({id}),disabled$1=fieldDisabled||disabledProp,name$2=fieldName??nameProp,[value,setValueUnwrapped]=useControlled({controlled:valueProp,default:multiple?defaultValue??EMPTY_ARRAY:defaultValue,name:`Select`,state:`value`}),[open,setOpenUnwrapped]=useControlled({controlled:openProp,default:defaultOpen,name:`Select`,state:`open`}),listRef=import_react.useRef([]),labelsRef=import_react.useRef([]),popupRef=import_react.useRef(null),scrollHandlerRef=import_react.useRef(null),scrollArrowsMountedCountRef=import_react.useRef(0),valueRef=import_react.useRef(null),valuesRef=import_react.useRef([]),typingRef=import_react.useRef(!1),keyboardActiveRef=import_react.useRef(!1),selectedItemTextRef=import_react.useRef(null),selectionRef=import_react.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}),alignItemWithTriggerActiveRef=import_react.useRef(!1),{mounted,setMounted,transitionStatus}=useTransitionStatus(open),{openMethod,triggerProps:interactionTypeProps,reset:resetOpenInteractionType}=useOpenInteractionType(open),store=useRefWithInit(()=>new Store({id:generatedId,modal,multiple,itemToStringLabel,itemToStringValue,isItemEqualToValue,value,open,mounted,transitionStatus,items,forceMount:!1,openMethod:null,activeIndex:null,selectedIndex:null,popupProps:{},triggerProps:{},triggerElement:null,positionerElement:null,listElement:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1,hasScrollArrows:!1})).current,activeIndex=useStore(store,selectors$1.activeIndex),selectedIndex=useStore(store,selectors$1.selectedIndex),triggerElement=useStore(store,selectors$1.triggerElement),positionerElement=useStore(store,selectors$1.positionerElement),serializedValue=import_react.useMemo(()=>multiple&&Array.isArray(value)&&value.length===0?``:stringifyAsValue(value,itemToStringValue),[multiple,value,itemToStringValue]),fieldStringValue=import_react.useMemo(()=>multiple&&Array.isArray(value)?value.map(currentValue=>stringifyAsValue(currentValue,itemToStringValue)):stringifyAsValue(value,itemToStringValue),[multiple,value,itemToStringValue]),controlRef=useValueAsRef(store.state.triggerElement);useField({id:generatedId,commit:validation.commit,value,controlRef,name:name$2,getValue:()=>fieldStringValue});let initialValueRef=import_react.useRef(value);useIsoLayoutEffect(()=>{value!==initialValueRef.current&&store.set(`forceMount`,!0)},[store,value]),useIsoLayoutEffect(()=>{setFilled(multiple?Array.isArray(value)&&value.length>0:value!=null)},[multiple,value,setFilled]),useIsoLayoutEffect(function(){if(open)return;let registry=valuesRef.current;if(multiple){let currentValue=Array.isArray(value)?value:[];if(currentValue.length===0){store.set(`selectedIndex`,null);return}let lastValue=currentValue[currentValue.length-1],lastIndex=findItemIndex(registry,lastValue,isItemEqualToValue);store.set(`selectedIndex`,lastIndex===-1?null:lastIndex);return}let index$4=findItemIndex(registry,value,isItemEqualToValue);store.set(`selectedIndex`,index$4===-1?null:index$4)},[multiple,open,value,valuesRef,isItemEqualToValue,store]),useValueChanged(value,()=>{clearErrors(name$2),setDirty(value!==validityData.initialValue),shouldValidateOnChange()?validation.commit(value):validation.commit(value,!0)});let setOpen=useStableCallback((nextOpen,eventDetails)=>{if(onOpenChange?.(nextOpen,eventDetails),!eventDetails.isCanceled&&(setOpenUnwrapped(nextOpen),!nextOpen&&(eventDetails.reason===`focus-out`||eventDetails.reason===`outside-press`)&&(setTouched(!0),setFocused(!1),validationMode===`onBlur`&&validation.commit(value)),!nextOpen&&store.state.activeIndex!==null)){let activeOption=listRef.current[store.state.activeIndex];queueMicrotask(()=>{activeOption?.setAttribute(`tabindex`,`-1`)})}}),handleUnmount=useStableCallback(()=>{setMounted(!1),store.set(`activeIndex`,null),resetOpenInteractionType(),onOpenChangeComplete?.(!1)});useOpenChangeComplete({enabled:!actionsRef,open,ref:popupRef,onComplete(){open||handleUnmount()}}),import_react.useImperativeHandle(actionsRef,()=>({unmount:handleUnmount}),[handleUnmount]);let setValue=useStableCallback((nextValue,eventDetails)=>{onValueChange?.(nextValue,eventDetails),!eventDetails.isCanceled&&setValueUnwrapped(nextValue)}),handleScrollArrowVisibility=useStableCallback(()=>{let scroller=store.state.listElement||popupRef.current;if(!scroller)return;let viewportTop=scroller.scrollTop,viewportBottom=scroller.scrollTop+scroller.clientHeight,shouldShowUp=viewportTop>1,shouldShowDown=viewportBottom<scroller.scrollHeight-1;store.state.scrollUpArrowVisible!==shouldShowUp&&store.set(`scrollUpArrowVisible`,shouldShowUp),store.state.scrollDownArrowVisible!==shouldShowDown&&store.set(`scrollDownArrowVisible`,shouldShowDown)}),floatingContext=useFloatingRootContext({open,onOpenChange:setOpen,elements:{reference:triggerElement,floating:positionerElement}}),{getReferenceProps,getFloatingProps,getItemProps}=useInteractions([useClick(floatingContext,{enabled:!readOnly$1&&!disabled$1,event:`mousedown`}),useDismiss(floatingContext,{bubbles:!1}),useListNavigation(floatingContext,{enabled:!readOnly$1&&!disabled$1,listRef,activeIndex,selectedIndex,disabledIndices:EMPTY_ARRAY,onNavigate(nextActiveIndex){nextActiveIndex===null&&!open||store.set(`activeIndex`,nextActiveIndex)},focusItemOnHover:!1}),useTypeahead(floatingContext,{enabled:!readOnly$1&&!disabled$1&&(open||!multiple),listRef:labelsRef,activeIndex,selectedIndex,onMatch(index$4){open?store.set(`activeIndex`,index$4):setValue(valuesRef.current[index$4],createChangeEventDetails(`none`))},onTypingChange(typing){typingRef.current=typing}})]),mergedTriggerProps=import_react.useMemo(()=>mergeProps(getReferenceProps(),interactionTypeProps,generatedId?{id:generatedId}:EMPTY_OBJECT),[getReferenceProps,interactionTypeProps,generatedId]);useOnFirstRender(()=>{store.update({popupProps:getFloatingProps(),triggerProps:mergedTriggerProps})}),useIsoLayoutEffect(()=>{store.update({id:generatedId,modal,multiple,value,open,mounted,transitionStatus,popupProps:getFloatingProps(),triggerProps:mergedTriggerProps,items,itemToStringLabel,itemToStringValue,isItemEqualToValue,openMethod})},[store,generatedId,modal,multiple,value,open,mounted,transitionStatus,getFloatingProps,mergedTriggerProps,items,itemToStringLabel,itemToStringValue,isItemEqualToValue,openMethod]);let contextValue=import_react.useMemo(()=>({store,name:name$2,required,disabled:disabled$1,readOnly:readOnly$1,multiple,itemToStringLabel,itemToStringValue,highlightItemOnHover,setValue,setOpen,listRef,popupRef,scrollHandlerRef,handleScrollArrowVisibility,scrollArrowsMountedCountRef,getItemProps,events:floatingContext.context.events,valueRef,valuesRef,labelsRef,typingRef,selectionRef,selectedItemTextRef,validation,onOpenChangeComplete,keyboardActiveRef,alignItemWithTriggerActiveRef,initialValueRef}),[store,name$2,required,disabled$1,readOnly$1,multiple,itemToStringLabel,itemToStringValue,highlightItemOnHover,setValue,setOpen,getItemProps,floatingContext.context.events,validation,onOpenChangeComplete,handleScrollArrowVisibility]),ref=useMergedRefs(inputRef,validation.inputRef),hasMultipleSelection=multiple&&Array.isArray(value)&&value.length>0,hiddenInputs=import_react.useMemo(()=>!multiple||!Array.isArray(value)||!name$2?null:value.map(v$1=>{let currentSerializedValue=stringifyAsValue(v$1,itemToStringValue);return(0,import_jsx_runtime.jsx)(`input`,{type:`hidden`,name:name$2,value:currentSerializedValue},currentSerializedValue)}),[multiple,value,name$2,itemToStringValue]);return(0,import_jsx_runtime.jsx)(SelectRootContext.Provider,{value:contextValue,children:(0,import_jsx_runtime.jsxs)(SelectFloatingContext.Provider,{value:floatingContext,children:[children,(0,import_jsx_runtime.jsx)(`input`,{...validation.getInputValidationProps({onFocus(){store.state.triggerElement?.focus({focusVisible:!0})},onChange(event){if(event.nativeEvent.defaultPrevented)return;let nextValue=event.target.value,details=createChangeEventDetails(none$3,event.nativeEvent);function handleChange(){if(multiple)return;let matchingValue=valuesRef.current.find(v$1=>stringifyAsValue(v$1,itemToStringValue).toLowerCase()===nextValue.toLowerCase());matchingValue!=null&&(setDirty(matchingValue!==validityData.initialValue),setValue(matchingValue,details),shouldValidateOnChange()&&validation.commit(matchingValue))}store.set(`forceMount`,!0),queueMicrotask(handleChange)}}),name:multiple?void 0:name$2,value:serializedValue,disabled:disabled$1,required:required&&!hasMultipleSelection,readOnly:readOnly$1,ref,style:name$2?visuallyHiddenInput:visuallyHidden,tabIndex:-1,"aria-hidden":!0}),hiddenInputs]})})}var BOUNDARY_OFFSET=2,SELECTED_DELAY=400,UNSELECTED_DELAY=200,stateAttributesMapping$9={...pressableTriggerOpenStateMapping,...fieldValidityMapping,value:()=>null};const SelectTrigger$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,disabled:disabledProp=!1,nativeButton=!0,...elementProps}=componentProps,{setTouched,setFocused,validationMode,state:fieldState,disabled:fieldDisabled}=useFieldRootContext(),{labelId}=useLabelableContext(),{store,setOpen,selectionRef,validation,readOnly:readOnly$1,required,alignItemWithTriggerActiveRef,disabled:selectDisabled,keyboardActiveRef}=useSelectRootContext(),disabled$1=fieldDisabled||selectDisabled||disabledProp,open=useStore(store,selectors$1.open),value=useStore(store,selectors$1.value),triggerProps=useStore(store,selectors$1.triggerProps),positionerElement=useStore(store,selectors$1.positionerElement),listElement=useStore(store,selectors$1.listElement),rootId=useStore(store,selectors$1.id),hasSelectedValue=useStore(store,selectors$1.hasSelectedValue),shouldCheckNullItemLabel=!hasSelectedValue&&open,hasNullItemLabel$1=useStore(store,selectors$1.hasNullItemLabel,shouldCheckNullItemLabel),id=idProp??rootId;useLabelableId({id});let positionerRef=useValueAsRef(positionerElement),triggerRef=import_react.useRef(null),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),mergedRef=useMergedRefs(forwardedRef,triggerRef,buttonRef,useStableCallback(element$3=>{store.set(`triggerElement`,element$3)})),timeoutFocus=useTimeout(),timeoutMouseDown=useTimeout(),selectedDelayTimeout=useTimeout(),unselectedDelayTimeout=useTimeout();import_react.useEffect(()=>{if(open)return hasSelectedValue||hasNullItemLabel$1?unselectedDelayTimeout.start(UNSELECTED_DELAY,()=>{selectionRef.current.allowUnselectedMouseUp=!0,selectedDelayTimeout.start(UNSELECTED_DELAY,()=>{selectionRef.current.allowSelectedMouseUp=!0})}):selectedDelayTimeout.start(SELECTED_DELAY,()=>{selectionRef.current.allowUnselectedMouseUp=!0,selectionRef.current.allowSelectedMouseUp=!0}),()=>{selectedDelayTimeout.clear(),unselectedDelayTimeout.clear()};selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1},timeoutMouseDown.clear()},[open,hasSelectedValue,hasNullItemLabel$1,selectionRef,timeoutMouseDown,selectedDelayTimeout,unselectedDelayTimeout]);let ariaControlsId=import_react.useMemo(()=>listElement?.id??getFloatingFocusElement(positionerElement)?.id,[listElement,positionerElement]),props=mergeProps(triggerProps,{id,role:`combobox`,"aria-expanded":open?`true`:`false`,"aria-haspopup":`listbox`,"aria-controls":open?ariaControlsId:void 0,"aria-labelledby":labelId,"aria-readonly":readOnly$1||void 0,"aria-required":required||void 0,tabIndex:disabled$1?-1:0,ref:mergedRef,onFocus(event){setFocused(!0),open&&alignItemWithTriggerActiveRef.current&&setOpen(!1,createChangeEventDetails(none$3,event.nativeEvent)),timeoutFocus.start(0,()=>{store.set(`forceMount`,!0)})},onBlur(event){contains(positionerElement,event.relatedTarget)||(setTouched(!0),setFocused(!1),validationMode===`onBlur`&&validation.commit(value))},onPointerMove(){keyboardActiveRef.current=!1},onKeyDown(){keyboardActiveRef.current=!0},onMouseDown(event){if(open)return;let doc$1=ownerDocument(event.currentTarget);function handleMouseUp(mouseEvent){if(!triggerRef.current)return;let mouseUpTarget=mouseEvent.target;if(contains(triggerRef.current,mouseUpTarget)||contains(positionerRef.current,mouseUpTarget)||mouseUpTarget===triggerRef.current)return;let bounds=getPseudoElementBounds(triggerRef.current);mouseEvent.clientX>=bounds.left-BOUNDARY_OFFSET&&mouseEvent.clientX<=bounds.right+BOUNDARY_OFFSET&&mouseEvent.clientY>=bounds.top-BOUNDARY_OFFSET&&mouseEvent.clientY<=bounds.bottom+BOUNDARY_OFFSET||setOpen(!1,createChangeEventDetails(cancelOpen,mouseEvent))}timeoutMouseDown.start(0,()=>{doc$1.addEventListener(`mouseup`,handleMouseUp,{once:!0})})}},validation.getValidationProps,elementProps,getButtonProps);props.role=`combobox`;let state$1=import_react.useMemo(()=>({...fieldState,open,disabled:disabled$1,value,readOnly:readOnly$1,placeholder:!hasSelectedValue}),[fieldState,open,disabled$1,value,readOnly$1,hasSelectedValue]);return useRenderElement(`button`,componentProps,{ref:[forwardedRef,triggerRef],state:state$1,stateAttributesMapping:stateAttributesMapping$9,props})});var stateAttributesMapping$8={value:()=>null};const SelectValue$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,children:childrenProp,placeholder,...elementProps}=componentProps,{store,valueRef}=useSelectRootContext(),value=useStore(store,selectors$1.value),items=useStore(store,selectors$1.items),itemToStringLabel=useStore(store,selectors$1.itemToStringLabel),hasSelectedValue=useStore(store,selectors$1.hasSelectedValue),shouldCheckNullItemLabel=!hasSelectedValue&&placeholder!=null&&childrenProp==null,hasNullLabel=useStore(store,selectors$1.hasNullItemLabel,shouldCheckNullItemLabel),state$1=import_react.useMemo(()=>({value,placeholder:!hasSelectedValue}),[value,hasSelectedValue]),children=null;return children=typeof childrenProp==`function`?childrenProp(value):childrenProp??(!hasSelectedValue&&placeholder!=null&&!hasNullLabel?placeholder:Array.isArray(value)?resolveMultipleLabels(value,items,itemToStringLabel):resolveSelectedLabel(value,items,itemToStringLabel)),useRenderElement(`span`,componentProps,{state:state$1,ref:[forwardedRef,valueRef],props:[{children},elementProps],stateAttributesMapping:stateAttributesMapping$8})}),SelectIcon=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,{store}=useSelectRootContext(),open=useStore(store,selectors$1.open);return useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({open}),[open]),ref:forwardedRef,props:[{"aria-hidden":!0,children:`▼`},elementProps],stateAttributesMapping:triggerOpenStateMapping})}),SelectPortalContext=import_react.createContext(void 0),SelectPortal=import_react.forwardRef(function(portalProps,forwardedRef){let{store}=useSelectRootContext(),mounted=useStore(store,selectors$1.mounted),forceMount=useStore(store,selectors$1.forceMount);return mounted||forceMount?(0,import_jsx_runtime.jsx)(SelectPortalContext.Provider,{value:!0,children:(0,import_jsx_runtime.jsx)(FloatingPortal,{ref:forwardedRef,...portalProps})}):null}),SelectPositionerContext=import_react.createContext(void 0);function useSelectPositionerContext(){let context=import_react.useContext(SelectPositionerContext);if(!context)throw Error(formatErrorMessage(59));return context}function clearStyles(element$3,originalStyles){element$3&&Object.assign(element$3.style,originalStyles)}const LIST_FUNCTIONAL_STYLES={position:`relative`,maxHeight:`100%`,overflowX:`hidden`,overflowY:`auto`};var FIXED={position:`fixed`};const SelectPositioner=import_react.forwardRef(function(componentProps,forwardedRef){let{anchor,positionMethod=`absolute`,className,render,side=`bottom`,align=`center`,sideOffset=0,alignOffset=0,collisionBoundary=`clipping-ancestors`,collisionPadding,arrowPadding=5,sticky=!1,disableAnchorTracking,alignItemWithTrigger=!0,collisionAvoidance=DROPDOWN_COLLISION_AVOIDANCE,...elementProps}=componentProps,{store,listRef,labelsRef,alignItemWithTriggerActiveRef,selectedItemTextRef,valuesRef,initialValueRef,popupRef,setValue}=useSelectRootContext(),floatingRootContext=useSelectFloatingContext(),open=useStore(store,selectors$1.open),mounted=useStore(store,selectors$1.mounted),modal=useStore(store,selectors$1.modal),value=useStore(store,selectors$1.value),openMethod=useStore(store,selectors$1.openMethod),positionerElement=useStore(store,selectors$1.positionerElement),triggerElement=useStore(store,selectors$1.triggerElement),isItemEqualToValue=useStore(store,selectors$1.isItemEqualToValue),scrollUpArrowRef=import_react.useRef(null),scrollDownArrowRef=import_react.useRef(null),[controlledAlignItemWithTrigger,setControlledAlignItemWithTrigger]=import_react.useState(alignItemWithTrigger),alignItemWithTriggerActive=mounted&&controlledAlignItemWithTrigger&&openMethod!==`touch`;!mounted&&controlledAlignItemWithTrigger!==alignItemWithTrigger&&setControlledAlignItemWithTrigger(alignItemWithTrigger),useIsoLayoutEffect(()=>{mounted||(selectors$1.scrollUpArrowVisible(store.state)&&store.set(`scrollUpArrowVisible`,!1),selectors$1.scrollDownArrowVisible(store.state)&&store.set(`scrollDownArrowVisible`,!1))},[store,mounted]),import_react.useImperativeHandle(alignItemWithTriggerActiveRef,()=>alignItemWithTriggerActive),useScrollLock((alignItemWithTriggerActive||modal)&&open&&openMethod!==`touch`,triggerElement);let positioning=useAnchorPositioning({anchor,floatingRootContext,positionMethod,mounted,side,sideOffset,align,alignOffset,arrowPadding,collisionBoundary,collisionPadding,sticky,disableAnchorTracking:disableAnchorTracking??alignItemWithTriggerActive,collisionAvoidance,keepMounted:!0}),renderedSide=alignItemWithTriggerActive?`none`:positioning.side,positionerStyles=alignItemWithTriggerActive?FIXED:positioning.positionerStyles,defaultProps=import_react.useMemo(()=>{let hiddenStyles={};return open||(hiddenStyles.pointerEvents=`none`),{role:`presentation`,hidden:!mounted,style:{...positionerStyles,...hiddenStyles}}},[open,mounted,positionerStyles]),state$1=import_react.useMemo(()=>({open,side:renderedSide,align:positioning.align,anchorHidden:positioning.anchorHidden}),[open,renderedSide,positioning.align,positioning.anchorHidden]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,useStableCallback(element$4=>{store.set(`positionerElement`,element$4)})],state:state$1,stateAttributesMapping:popupStateMapping,props:[defaultProps,elementProps]}),prevMapSizeRef=import_react.useRef(0),onMapChange=useStableCallback(map=>{if(map.size===0&&prevMapSizeRef.current===0||valuesRef.current.length===0)return;let prevSize=prevMapSizeRef.current;if(prevMapSizeRef.current=map.size,map.size===prevSize)return;let eventDetails=createChangeEventDetails(none$3);if(prevSize!==0&&!store.state.multiple&&value!==null&&findItemIndex(valuesRef.current,value,isItemEqualToValue)===-1){let initial=initialValueRef.current,nextValue=initial!=null&&itemIncludes(valuesRef.current,initial,isItemEqualToValue)?initial:null;setValue(nextValue,eventDetails),nextValue===null&&(store.set(`selectedIndex`,null),selectedItemTextRef.current=null)}if(prevSize!==0&&store.state.multiple&&Array.isArray(value)){let nextValue=value.filter(v$1=>itemIncludes(valuesRef.current,v$1,isItemEqualToValue));(nextValue.length!==value.length||nextValue.some(v$1=>!itemIncludes(value,v$1,isItemEqualToValue)))&&(setValue(nextValue,eventDetails),nextValue.length===0&&(store.set(`selectedIndex`,null),selectedItemTextRef.current=null))}if(open&&alignItemWithTriggerActive){store.update({scrollUpArrowVisible:!1,scrollDownArrowVisible:!1});let stylesToClear={height:``};clearStyles(positionerElement,stylesToClear),clearStyles(popupRef.current,stylesToClear)}}),contextValue=import_react.useMemo(()=>({...positioning,side:renderedSide,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollUpArrowRef,scrollDownArrowRef}),[positioning,renderedSide,alignItemWithTriggerActive,setControlledAlignItemWithTrigger]);return(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef:listRef,labelsRef,onMapChange,children:(0,import_jsx_runtime.jsxs)(SelectPositionerContext.Provider,{value:contextValue,children:[mounted&&modal&&(0,import_jsx_runtime.jsx)(InternalBackdrop,{inert:inertValue(!open),cutout:triggerElement}),element$3]})})});function isMouseWithinBounds(event){let targetRect=event.currentTarget.getBoundingClientRect();return targetRect.top+1<=event.clientY&&event.clientY<=targetRect.bottom-1&&targetRect.left+1<=event.clientX&&event.clientX<=targetRect.right-1}var DISABLE_SCROLLBAR_CLASS_NAME=`base-ui-disable-scrollbar`;const styleDisableScrollbar={className:DISABLE_SCROLLBAR_CLASS_NAME,getElement(nonce){return(0,import_jsx_runtime.jsx)(`style`,{nonce,href:DISABLE_SCROLLBAR_CLASS_NAME,precedence:`base-ui:low`,children:`.${DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.${DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}`})}};function clamp(val,min$1=-(2**53-1),max$1=2**53-1){return Math.max(min$1,Math.min(val,max$1))}const CSPContext=import_react.createContext(void 0);var DEFAULT_CSP_CONTEXT_VALUE={disableStyleElements:!1};function useCSPContext(){return import_react.useContext(CSPContext)??DEFAULT_CSP_CONTEXT_VALUE}var import_react_dom$4=__toESM(require_react_dom()),stateAttributesMapping$7={...popupStateMapping,...transitionStatusMapping};const SelectPopup$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{store,popupRef,onOpenChangeComplete,setOpen,valueRef,selectedItemTextRef,keyboardActiveRef,multiple,handleScrollArrowVisibility,scrollHandlerRef,highlightItemOnHover}=useSelectRootContext(),{side,align,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollDownArrowRef,scrollUpArrowRef}=useSelectPositionerContext(),insideToolbar=useToolbarRootContext(!0)!=null,floatingRootContext=useSelectFloatingContext(),{nonce,disableStyleElements}=useCSPContext(),highlightTimeout=useTimeout(),id=useStore(store,selectors$1.id),open=useStore(store,selectors$1.open),mounted=useStore(store,selectors$1.mounted),popupProps=useStore(store,selectors$1.popupProps),transitionStatus=useStore(store,selectors$1.transitionStatus),triggerElement=useStore(store,selectors$1.triggerElement),positionerElement=useStore(store,selectors$1.positionerElement),listElement=useStore(store,selectors$1.listElement),initialHeightRef=import_react.useRef(0),reachedMaxHeightRef=import_react.useRef(!1),maxHeightRef=import_react.useRef(0),initialPlacedRef=import_react.useRef(!1),originalPositionerStylesRef=import_react.useRef({}),scrollArrowFrame=useAnimationFrame(),handleScroll=useStableCallback(scroller=>{if(!positionerElement||!popupRef.current||!initialPlacedRef.current)return;if(reachedMaxHeightRef.current||!alignItemWithTriggerActive){handleScrollArrowVisibility();return}let isTopPositioned=positionerElement.style.top===`0px`,isBottomPositioned=positionerElement.style.bottom===`0px`,currentHeight=positionerElement.getBoundingClientRect().height,doc$1=ownerDocument(positionerElement),positionerStyles=getComputedStyle(positionerElement),marginTop=parseFloat(positionerStyles.marginTop),marginBottom=parseFloat(positionerStyles.marginBottom),maxPopupHeight=getMaxPopupHeight(getComputedStyle(popupRef.current)),viewportHeight=doc$1.documentElement.clientHeight-marginTop-marginBottom,scrollTop=scroller.scrollTop,maxScrollTop=scroller.scrollHeight-scroller.clientHeight,nextPositionerHeight=0,nextScrollTop=null,setReachedMax=!1;if(isTopPositioned){let idealHeight=currentHeight+(maxScrollTop-scrollTop),nextHeight=Math.min(idealHeight,viewportHeight);nextPositionerHeight=nextHeight,nextHeight===viewportHeight?setReachedMax=!0:nextScrollTop=maxScrollTop}else if(isBottomPositioned){let diff=scrollTop-0,idealHeight=currentHeight+diff,nextHeight=Math.min(idealHeight,viewportHeight),overshoot=idealHeight-viewportHeight;nextPositionerHeight=nextHeight,nextHeight===viewportHeight?(setReachedMax=!0,scrollTop<maxScrollTop&&(nextScrollTop=scrollTop-(diff-overshoot))):nextScrollTop=0}nextPositionerHeight!==0&&(positionerElement.style.height=`${nextPositionerHeight}px`),nextScrollTop!=null&&(scroller.scrollTop=nextScrollTop),(setReachedMax||nextPositionerHeight>=maxPopupHeight)&&(reachedMaxHeightRef.current=!0),handleScrollArrowVisibility()});import_react.useImperativeHandle(scrollHandlerRef,()=>handleScroll,[handleScroll]),useOpenChangeComplete({open,ref:popupRef,onComplete(){open&&onOpenChangeComplete?.(!0)}});let state$1=import_react.useMemo(()=>({open,transitionStatus,side,align}),[open,transitionStatus,side,align]);useIsoLayoutEffect(()=>{!positionerElement||!popupRef.current||Object.keys(originalPositionerStylesRef.current).length||(originalPositionerStylesRef.current={top:positionerElement.style.top||`0`,left:positionerElement.style.left||`0`,right:positionerElement.style.right,height:positionerElement.style.height,bottom:positionerElement.style.bottom,minHeight:positionerElement.style.minHeight,maxHeight:positionerElement.style.maxHeight,marginTop:positionerElement.style.marginTop,marginBottom:positionerElement.style.marginBottom})},[popupRef,positionerElement]),useIsoLayoutEffect(()=>{open||alignItemWithTriggerActive||(initialPlacedRef.current=!1,reachedMaxHeightRef.current=!1,initialHeightRef.current=0,maxHeightRef.current=0,clearStyles(positionerElement,originalPositionerStylesRef.current))},[open,alignItemWithTriggerActive,positionerElement,popupRef]),useIsoLayoutEffect(()=>{let popupElement=popupRef.current;if(!(!open||!triggerElement||!positionerElement||!popupElement||store.state.transitionStatus===`ending`)){if(!alignItemWithTriggerActive){initialPlacedRef.current=!0,scrollArrowFrame.request(handleScrollArrowVisibility),popupElement.style.removeProperty(`--transform-origin`);return}queueMicrotask(()=>{let restoreTransformStyles=unsetTransformStyles(popupElement);popupElement.style.removeProperty(`--transform-origin`);try{let positionerStyles=getComputedStyle(positionerElement),popupStyles=getComputedStyle(popupElement),doc$1=ownerDocument(triggerElement),win=getWindow(positionerElement),triggerRect=triggerElement.getBoundingClientRect(),positionerRect=positionerElement.getBoundingClientRect(),triggerX=triggerRect.left,triggerHeight=triggerRect.height,scroller=listElement||popupElement,scrollHeight=scroller.scrollHeight,borderBottom=parseFloat(popupStyles.borderBottomWidth),marginTop=parseFloat(positionerStyles.marginTop)||10,marginBottom=parseFloat(positionerStyles.marginBottom)||10,minHeight=parseFloat(positionerStyles.minHeight)||100,maxPopupHeight=getMaxPopupHeight(popupStyles),paddingLeft=5,paddingRight=5,triggerCollisionThreshold=20,viewportHeight=doc$1.documentElement.clientHeight-marginTop-marginBottom,viewportWidth=doc$1.documentElement.clientWidth,availableSpaceBeneathTrigger=viewportHeight-triggerRect.bottom+triggerHeight,textElement=selectedItemTextRef.current,valueElement=valueRef.current,textRect,offsetX=0,offsetY=0;if(textElement&&valueElement){let valueRect=valueElement.getBoundingClientRect();textRect=textElement.getBoundingClientRect();let valueLeftFromTriggerLeft=valueRect.left-triggerX,textLeftFromPositionerLeft=textRect.left-positionerRect.left,valueCenterFromPositionerTop=valueRect.top-triggerRect.top+valueRect.height/2,textCenterFromTriggerTop=textRect.top-positionerRect.top+textRect.height/2;offsetX=valueLeftFromTriggerLeft-textLeftFromPositionerLeft,offsetY=textCenterFromTriggerTop-valueCenterFromPositionerTop}let idealHeight=availableSpaceBeneathTrigger+offsetY+marginBottom+borderBottom,height=Math.min(viewportHeight,idealHeight),maxHeight=viewportHeight-marginTop-marginBottom,scrollTop=idealHeight-height,left=Math.max(5,triggerX+offsetX),maxRight=viewportWidth-5,rightOverflow=Math.max(0,left+positionerRect.width-maxRight);positionerElement.style.left=`${left-rightOverflow}px`,positionerElement.style.height=`${height}px`,positionerElement.style.maxHeight=`auto`,positionerElement.style.marginTop=`${marginTop}px`,positionerElement.style.marginBottom=`${marginBottom}px`,popupElement.style.height=`100%`;let maxScrollTop=scroller.scrollHeight-scroller.clientHeight,isTopPositioned=scrollTop>=maxScrollTop;isTopPositioned&&(height=Math.min(viewportHeight,positionerRect.height)-(scrollTop-maxScrollTop));let fallbackToAlignPopupToTrigger=triggerRect.top<20||triggerRect.bottom>viewportHeight-20||height<Math.min(scrollHeight,minHeight),isPinchZoomed=(win.visualViewport?.scale??1)!==1&&isWebKit;if(fallbackToAlignPopupToTrigger||isPinchZoomed){initialPlacedRef.current=!0,clearStyles(positionerElement,originalPositionerStylesRef.current),import_react_dom$4.flushSync(()=>setControlledAlignItemWithTrigger(!1));return}if(isTopPositioned){let topOffset=Math.max(0,viewportHeight-idealHeight);positionerElement.style.top=positionerRect.height>=maxHeight?`0`:`${topOffset}px`,positionerElement.style.height=`${height}px`,scroller.scrollTop=scroller.scrollHeight-scroller.clientHeight,initialHeightRef.current=Math.max(minHeight,height)}else positionerElement.style.bottom=`0`,initialHeightRef.current=Math.max(minHeight,height),scroller.scrollTop=scrollTop;if(textRect){let popupTop=positionerRect.top,popupHeight=positionerRect.height,textCenterY=textRect.top+textRect.height/2,clampedY=clamp(popupHeight>0?(textCenterY-popupTop)/popupHeight*100:50,0,100);popupElement.style.setProperty(`--transform-origin`,`50% ${clampedY}%`)}(initialHeightRef.current===viewportHeight||height>=maxPopupHeight)&&(reachedMaxHeightRef.current=!0),handleScrollArrowVisibility(),setTimeout(()=>{initialPlacedRef.current=!0})}finally{restoreTransformStyles()}})}},[store,open,positionerElement,triggerElement,valueRef,selectedItemTextRef,popupRef,handleScrollArrowVisibility,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollArrowFrame,scrollDownArrowRef,scrollUpArrowRef,listElement]),import_react.useEffect(()=>{if(!alignItemWithTriggerActive||!positionerElement||!open)return;let win=getWindow(positionerElement);function handleResize(event){setOpen(!1,createChangeEventDetails(`window-resize`,event))}return win.addEventListener(`resize`,handleResize),()=>{win.removeEventListener(`resize`,handleResize)}},[setOpen,alignItemWithTriggerActive,positionerElement,open]);let defaultProps={...listElement?{role:`presentation`,"aria-orientation":void 0}:{role:`listbox`,"aria-multiselectable":multiple||void 0,id:`${id}-list`},onKeyDown(event){keyboardActiveRef.current=!0,insideToolbar&&COMPOSITE_KEYS.has(event.key)&&event.stopPropagation()},onMouseMove(){keyboardActiveRef.current=!1},onPointerLeave(event){if(!highlightItemOnHover||isMouseWithinBounds(event)||event.pointerType===`touch`)return;let popup=event.currentTarget;highlightTimeout.start(0,()=>{store.set(`activeIndex`,null),popup.focus({preventScroll:!0})})},onScroll(event){listElement||scrollHandlerRef.current?.(event.currentTarget)},...alignItemWithTriggerActive&&{style:listElement?{height:`100%`}:LIST_FUNCTIONAL_STYLES}},element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,popupRef],state:state$1,stateAttributesMapping:stateAttributesMapping$7,props:[popupProps,defaultProps,getDisabledMountTransitionStyles(transitionStatus),{className:!listElement&&alignItemWithTriggerActive?styleDisableScrollbar.className:void 0},elementProps]});return(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[!disableStyleElements&&styleDisableScrollbar.getElement(nonce),(0,import_jsx_runtime.jsx)(FloatingFocusManager,{context:floatingRootContext,modal:!1,disabled:!mounted,restoreFocus:!0,children:element$3})]})});function getMaxPopupHeight(popupStyles){let maxHeightStyle=popupStyles.maxHeight||``;return maxHeightStyle.endsWith(`px`)&&parseFloat(maxHeightStyle)||1/0}var UNSET_TRANSFORM_STYLES={transform:`none`,scale:`1`,translate:`0 0`};function restoreInlineStyleProperty(style$1,property,value){value?style$1.setProperty(property,value):style$1.removeProperty(property)}function unsetTransformStyles(popupElement){let{style:style$1}=popupElement,originalStyles={},props=Object.keys(UNSET_TRANSFORM_STYLES);for(let prop of props)originalStyles[prop]=style$1.getPropertyValue(prop),style$1.setProperty(prop,UNSET_TRANSFORM_STYLES[prop]);return()=>{for(let prop of props)restoreInlineStyleProperty(style$1,prop,originalStyles[prop])}}const SelectList=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,{store,scrollHandlerRef}=useSelectRootContext(),{alignItemWithTriggerActive}=useSelectPositionerContext(),hasScrollArrows=useStore(store,selectors$1.hasScrollArrows),openMethod=useStore(store,selectors$1.openMethod),multiple=useStore(store,selectors$1.multiple),defaultProps={id:`${useStore(store,selectors$1.id)}-list`,role:`listbox`,"aria-multiselectable":multiple||void 0,onScroll(event){scrollHandlerRef.current?.(event.currentTarget)},...alignItemWithTriggerActive&&{style:LIST_FUNCTIONAL_STYLES},className:hasScrollArrows&&openMethod!==`touch`?styleDisableScrollbar.className:void 0};return useRenderElement(`div`,componentProps,{ref:[forwardedRef,useStableCallback(element$3=>{store.set(`listElement`,element$3)})],props:[defaultProps,elementProps]})}),SelectItemContext=import_react.createContext(void 0);function useSelectItemContext(){let context=import_react.useContext(SelectItemContext);if(!context)throw Error(formatErrorMessage(57));return context}const SelectItem$1=import_react.memo(import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,value=null,label,disabled:disabled$1=!1,nativeButton=!1,...elementProps}=componentProps,textRef=import_react.useRef(null),listItem$1=useCompositeListItem({label,textRef,indexGuessBehavior:IndexGuessBehavior.GuessFromOrder}),{store,getItemProps,setOpen,setValue,selectionRef,typingRef,valuesRef,keyboardActiveRef,multiple,highlightItemOnHover}=useSelectRootContext(),highlightTimeout=useTimeout(),highlighted=useStore(store,selectors$1.isActive,listItem$1.index),selected=useStore(store,selectors$1.isSelected,listItem$1.index,value),selectedByFocus=useStore(store,selectors$1.isSelectedByFocus,listItem$1.index),isItemEqualToValue=useStore(store,selectors$1.isItemEqualToValue),index$4=listItem$1.index,hasRegistered=index$4!==-1,itemRef=import_react.useRef(null),indexRef=useValueAsRef(index$4);useIsoLayoutEffect(()=>{if(!hasRegistered)return;let values=valuesRef.current;return values[index$4]=value,()=>{delete values[index$4]}},[hasRegistered,index$4,value,valuesRef]),useIsoLayoutEffect(()=>{if(!hasRegistered)return;let selectedValue=store.state.value,candidate=selectedValue;multiple&&Array.isArray(selectedValue)&&selectedValue.length>0&&(candidate=selectedValue[selectedValue.length-1]),candidate!==void 0&&compareItemEquality(candidate,value,isItemEqualToValue)&&store.set(`selectedIndex`,index$4)},[hasRegistered,index$4,multiple,isItemEqualToValue,store,value]);let state$1=import_react.useMemo(()=>({disabled:disabled$1,selected,highlighted}),[disabled$1,selected,highlighted]),rootProps=getItemProps({active:highlighted,selected});rootProps.onFocus=void 0,rootProps.id=void 0;let lastKeyRef=import_react.useRef(null),pointerTypeRef=import_react.useRef(`mouse`),didPointerDownRef=import_react.useRef(!1),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,focusableWhenDisabled:!0,native:nativeButton});function commitSelection(event){let selectedValue=store.state.value;if(multiple){let currentValue=Array.isArray(selectedValue)?selectedValue:[];setValue(selected?removeItem(currentValue,value,isItemEqualToValue):[...currentValue,value],createChangeEventDetails(itemPress,event))}else setValue(value,createChangeEventDetails(itemPress,event)),setOpen(!1,createChangeEventDetails(itemPress,event))}let defaultProps={role:`option`,"aria-selected":selected,tabIndex:highlighted?0:-1,onFocus(){store.set(`activeIndex`,index$4)},onMouseEnter(){!keyboardActiveRef.current&&store.state.selectedIndex===null&&store.set(`activeIndex`,index$4)},onMouseMove(){highlightItemOnHover&&store.set(`activeIndex`,index$4)},onMouseLeave(event){!highlightItemOnHover||keyboardActiveRef.current||isMouseWithinBounds(event)||highlightTimeout.start(0,()=>{store.state.activeIndex===index$4&&store.set(`activeIndex`,null)})},onTouchStart(){selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}},onKeyDown(event){lastKeyRef.current=event.key,store.set(`activeIndex`,index$4)},onClick(event){didPointerDownRef.current=!1,!(event.type===`keydown`&&lastKeyRef.current===null)&&(disabled$1||lastKeyRef.current===` `&&typingRef.current||pointerTypeRef.current!==`touch`&&!highlighted||(lastKeyRef.current=null,commitSelection(event.nativeEvent)))},onPointerEnter(event){pointerTypeRef.current=event.pointerType},onPointerDown(event){pointerTypeRef.current=event.pointerType,didPointerDownRef.current=!0},onMouseUp(event){if(disabled$1)return;if(didPointerDownRef.current){didPointerDownRef.current=!1;return}let disallowSelectedMouseUp=!selectionRef.current.allowSelectedMouseUp&&selected,disallowUnselectedMouseUp=!selectionRef.current.allowUnselectedMouseUp&&!selected;disallowSelectedMouseUp||disallowUnselectedMouseUp||pointerTypeRef.current!==`touch`&&!highlighted||commitSelection(event.nativeEvent)}},element$3=useRenderElement(`div`,componentProps,{ref:[buttonRef,forwardedRef,listItem$1.ref,itemRef],state:state$1,props:[rootProps,defaultProps,elementProps,getButtonProps]}),contextValue=import_react.useMemo(()=>({selected,indexRef,textRef,selectedByFocus,hasRegistered}),[selected,indexRef,textRef,selectedByFocus,hasRegistered]);return(0,import_jsx_runtime.jsx)(SelectItemContext.Provider,{value:contextValue,children:element$3})})),SelectItemIndicator=import_react.forwardRef(function(componentProps,forwardedRef){let keepMounted=componentProps.keepMounted??!1,{selected}=useSelectItemContext();return keepMounted||selected?(0,import_jsx_runtime.jsx)(Inner,{...componentProps,ref:forwardedRef}):null});var Inner=import_react.memo(import_react.forwardRef((componentProps,forwardedRef)=>{let{render,className,keepMounted,...elementProps}=componentProps,{selected}=useSelectItemContext(),indicatorRef=import_react.useRef(null),{transitionStatus,setMounted}=useTransitionStatus(selected),state$1=import_react.useMemo(()=>({selected,transitionStatus}),[selected,transitionStatus]),element$3=useRenderElement(`span`,componentProps,{ref:[forwardedRef,indicatorRef],state:state$1,props:[{"aria-hidden":!0,children:`✔️`},elementProps],stateAttributesMapping:transitionStatusMapping});return useOpenChangeComplete({open:selected,ref:indicatorRef,onComplete(){selected||setMounted(!1)}}),element$3}));const SelectItemText=import_react.memo(import_react.forwardRef(function(componentProps,forwardedRef){let{indexRef,textRef,selectedByFocus,hasRegistered}=useSelectItemContext(),{selectedItemTextRef}=useSelectRootContext(),{className,render,...elementProps}=componentProps;return useRenderElement(`div`,componentProps,{ref:[import_react.useCallback(node$1=>{if(!node$1||!hasRegistered)return;let hasNoSelectedItemText=selectedItemTextRef.current===null||!selectedItemTextRef.current.isConnected;(selectedByFocus||hasNoSelectedItemText&&indexRef.current===0)&&(selectedItemTextRef.current=node$1)},[selectedItemTextRef,indexRef,selectedByFocus,hasRegistered]),forwardedRef,textRef],props:elementProps})})),SelectScrollArrow=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,direction,keepMounted=!1,...elementProps}=componentProps,{store,popupRef,listRef,handleScrollArrowVisibility,scrollArrowsMountedCountRef}=useSelectRootContext(),{side,scrollDownArrowRef,scrollUpArrowRef}=useSelectPositionerContext(),stateVisible=useStore(store,direction===`up`?selectors$1.scrollUpArrowVisible:selectors$1.scrollDownArrowVisible),openMethod=useStore(store,selectors$1.openMethod),visible=stateVisible&&openMethod!==`touch`,timeout=useTimeout(),scrollArrowRef=direction===`up`?scrollUpArrowRef:scrollDownArrowRef,{transitionStatus,setMounted}=useTransitionStatus(visible);useIsoLayoutEffect(()=>(scrollArrowsMountedCountRef.current+=1,store.state.hasScrollArrows||store.set(`hasScrollArrows`,!0),()=>{scrollArrowsMountedCountRef.current=Math.max(0,scrollArrowsMountedCountRef.current-1),scrollArrowsMountedCountRef.current===0&&store.state.hasScrollArrows&&store.set(`hasScrollArrows`,!1)}),[store,scrollArrowsMountedCountRef]),useOpenChangeComplete({open:visible,ref:scrollArrowRef,onComplete(){visible||setMounted(!1)}});let state$1=import_react.useMemo(()=>({direction,visible,side,transitionStatus}),[direction,visible,side,transitionStatus]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,scrollArrowRef],state:state$1,props:[{"aria-hidden":!0,children:direction===`up`?`▲`:`▼`,style:{position:`absolute`},onMouseMove(event){if(event.movementX===0&&event.movementY===0||timeout.isStarted())return;store.set(`activeIndex`,null);function scrollNextItem(){let scroller=store.state.listElement??popupRef.current;if(!scroller)return;store.set(`activeIndex`,null),handleScrollArrowVisibility();let isScrolledToTop=scroller.scrollTop===0,isScrolledToBottom$1=Math.round(scroller.scrollTop+scroller.clientHeight)>=scroller.scrollHeight;if(listRef.current.length===0&&(direction===`up`?store.set(`scrollUpArrowVisible`,!isScrolledToTop):store.set(`scrollDownArrowVisible`,!isScrolledToBottom$1)),direction===`up`&&isScrolledToTop||direction===`down`&&isScrolledToBottom$1){timeout.clear();return}if((store.state.listElement||popupRef.current)&&listRef.current&&listRef.current.length>0){let items=listRef.current,scrollArrowHeight=scrollArrowRef.current?.offsetHeight||0;if(direction===`up`){let firstVisibleIndex=0,scrollTop=scroller.scrollTop+scrollArrowHeight;for(let i$3=0;i$3<items.length;i$3+=1){let item=items[i$3];if(item&&item.offsetTop>=scrollTop){firstVisibleIndex=i$3;break}}let targetIndex=Math.max(0,firstVisibleIndex-1);if(targetIndex<firstVisibleIndex){let targetItem=items[targetIndex];targetItem&&(scroller.scrollTop=Math.max(0,targetItem.offsetTop-scrollArrowHeight))}else scroller.scrollTop=0}else{let lastVisibleIndex=items.length-1,scrollBottom=scroller.scrollTop+scroller.clientHeight-scrollArrowHeight;for(let i$3=0;i$3<items.length;i$3+=1){let item=items[i$3];if(item&&item.offsetTop+item.offsetHeight>scrollBottom){lastVisibleIndex=Math.max(0,i$3-1);break}}let targetIndex=Math.min(items.length-1,lastVisibleIndex+1);if(targetIndex>lastVisibleIndex){let targetItem=items[targetIndex];targetItem&&(scroller.scrollTop=targetItem.offsetTop+targetItem.offsetHeight-scroller.clientHeight+scrollArrowHeight)}else scroller.scrollTop=scroller.scrollHeight-scroller.clientHeight}}timeout.start(40,scrollNextItem)}timeout.start(40,scrollNextItem)},onMouseLeave(){timeout.clear()}},elementProps]});return visible||keepMounted?element$3:null}),SelectScrollDownArrow=import_react.forwardRef(function(props,forwardedRef){return(0,import_jsx_runtime.jsx)(SelectScrollArrow,{...props,ref:forwardedRef,direction:`down`})}),SelectScrollUpArrow=import_react.forwardRef(function(props,forwardedRef){return(0,import_jsx_runtime.jsx)(SelectScrollArrow,{...props,ref:forwardedRef,direction:`up`})});var Select=SelectRoot;function SelectTrigger({className,size:size$3=`default`,children,...props}){return(0,import_jsx_runtime.jsxs)(SelectTrigger$1,{className:cn(`relative inline-flex min-h-9 w-full min-w-36 select-none items-center justify-between gap-2 rounded-lg border border-input bg-background bg-clip-padding px-[calc(--spacing(3)-1px)] text-left text-base shadow-xs outline-none ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 focus-visible:border-ring focus-visible:ring-[3px] aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/16 data-disabled:pointer-events-none data-disabled:opacity-64 sm:min-h-8 sm:text-sm dark:bg-input/32 dark:not-in-data-[slot=group]:bg-clip-border dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-visible,[aria-invalid],[data-pressed]]:shadow-none`,size$3===`sm`&&`min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7`,size$3===`lg`&&`min-h-10 sm:min-h-9`,className),"data-slot":`select-trigger`,...props,children:[children,(0,import_jsx_runtime.jsx)(SelectIcon,{"data-slot":`select-icon`,children:(0,import_jsx_runtime.jsx)(ChevronsUpDown,{className:`-me-1 size-4.5 opacity-80 sm:size-4`})})]})}function SelectValue({className,...props}){return(0,import_jsx_runtime.jsx)(SelectValue$1,{className:cn(`flex-1 truncate data-placeholder:text-muted-foreground`,className),"data-slot":`select-value`,...props})}function SelectPopup({className,children,sideOffset=4,alignItemWithTrigger=!0,...props}){return(0,import_jsx_runtime.jsx)(SelectPortal,{children:(0,import_jsx_runtime.jsx)(SelectPositioner,{alignItemWithTrigger,className:`z-50 select-none`,"data-slot":`select-positioner`,sideOffset,children:(0,import_jsx_runtime.jsxs)(SelectPopup$1,{className:`origin-(--transform-origin) transition-[scale,opacity] has-data-[side=none]:scale-100 has-data-starting-style:scale-98 has-data-starting-style:opacity-0 has-data-[side=none]:transition-none`,"data-slot":`select-popup`,...props,children:[(0,import_jsx_runtime.jsx)(SelectScrollUpArrow,{className:`top-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:top-px before:h-[200%] before:rounded-t-[calc(var(--radius-lg)-1px)] before:bg-linear-to-b before:from-50% before:from-popover`,"data-slot":`select-scroll-up-arrow`,children:(0,import_jsx_runtime.jsx)(ChevronUp,{className:`relative size-4.5 sm:size-4`})}),(0,import_jsx_runtime.jsx)(`span`,{className:`relative block h-full rounded-lg border bg-popover bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-lg dark:not-in-data-[slot=group]:bg-clip-border`,children:(0,import_jsx_runtime.jsx)(SelectList,{className:cn(`max-h-(--available-height) min-w-(--anchor-width) overflow-y-auto p-1`,className),"data-slot":`select-list`,children})}),(0,import_jsx_runtime.jsx)(SelectScrollDownArrow,{className:`bottom-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:bottom-px before:h-[200%] before:rounded-b-[calc(var(--radius-lg)-1px)] before:bg-linear-to-t before:from-50% before:from-popover`,"data-slot":`select-scroll-down-arrow`,children:(0,import_jsx_runtime.jsx)(ChevronDown,{className:`relative size-4.5 sm:size-4`})})]})})})}function SelectItem({className,children,...props}){return(0,import_jsx_runtime.jsxs)(SelectItem$1,{className:cn(`grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-pointer grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,className),"data-slot":`select-item`,...props,children:[(0,import_jsx_runtime.jsx)(SelectItemIndicator,{className:`col-start-1`,children:(0,import_jsx_runtime.jsx)(`svg`,{fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/1500/svg`,children:(0,import_jsx_runtime.jsx)(`path`,{d:`M5.252 12.7 10.2 18.63 18.748 5.37`})})}),(0,import_jsx_runtime.jsx)(SelectItemText,{className:`col-start-2 min-w-0`,children})]})}function SchemaSelector({value,onChange,schemas,disabled:disabled$1}){return(0,import_jsx_runtime.jsxs)(Select,{value,onValueChange:v$1=>v$1&&onChange(v$1),disabled:disabled$1,children:[(0,import_jsx_runtime.jsx)(SelectTrigger,{size:`sm`,className:`w-full`,children:(0,import_jsx_runtime.jsx)(SelectValue,{children:val=>val??`Select schema`})}),(0,import_jsx_runtime.jsx)(SelectPopup,{children:schemas.map(schema=>(0,import_jsx_runtime.jsx)(SelectItem,{value:schema,children:schema},schema))})]})}function useCollapsibleRoot(parameters){let{open:openParam,defaultOpen,onOpenChange,disabled:disabled$1}=parameters,isControlled=openParam!==void 0,[open,setOpen]=useControlled({controlled:openParam,default:defaultOpen,name:`Collapsible`,state:`open`}),{mounted,setMounted,transitionStatus}=useTransitionStatus(open,!0,!0),[visible,setVisible]=import_react.useState(open),[{height,width},setDimensions]=import_react.useState({height:void 0,width:void 0}),defaultPanelId=useBaseUiId(),[panelIdState,setPanelIdState]=import_react.useState(),panelId=panelIdState??defaultPanelId,[hiddenUntilFound,setHiddenUntilFound]=import_react.useState(!1),[keepMounted,setKeepMounted]=import_react.useState(!1),abortControllerRef=import_react.useRef(null),animationTypeRef=import_react.useRef(null),transitionDimensionRef=import_react.useRef(null),panelRef=import_react.useRef(null),runOnceAnimationsFinish=useAnimationsFinished(panelRef,!1),handleTrigger=useStableCallback(event=>{let nextOpen=!open,eventDetails=createChangeEventDetails(triggerPress,event.nativeEvent);if(onOpenChange(nextOpen,eventDetails),eventDetails.isCanceled)return;let panel=panelRef.current;animationTypeRef.current===`css-animation`&&panel!=null&&panel.style.removeProperty(`animation-name`),!hiddenUntilFound&&!keepMounted&&(animationTypeRef.current!=null&&animationTypeRef.current!==`css-animation`&&!mounted&&nextOpen&&setMounted(!0),animationTypeRef.current===`css-animation`&&(!visible&&nextOpen&&setVisible(!0),!mounted&&nextOpen&&setMounted(!0))),setOpen(nextOpen),animationTypeRef.current===`none`&&mounted&&!nextOpen&&setMounted(!1)});return useIsoLayoutEffect(()=>{isControlled&&animationTypeRef.current===`none`&&!keepMounted&&!open&&setMounted(!1)},[isControlled,keepMounted,open,openParam,setMounted]),import_react.useMemo(()=>({abortControllerRef,animationTypeRef,disabled:disabled$1,handleTrigger,height,mounted,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setOpen,setPanelIdState,setVisible,transitionDimensionRef,transitionStatus,visible,width}),[abortControllerRef,animationTypeRef,disabled$1,handleTrigger,height,mounted,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setOpen,setVisible,transitionDimensionRef,transitionStatus,visible,width])}const CollapsibleRootContext=import_react.createContext(void 0);function useCollapsibleRootContext(){let context=import_react.useContext(CollapsibleRootContext);if(context===void 0)throw Error(formatErrorMessage(15));return context}let CollapsiblePanelDataAttributes=function(CollapsiblePanelDataAttributes$1){return CollapsiblePanelDataAttributes$1.open=`data-open`,CollapsiblePanelDataAttributes$1.closed=`data-closed`,CollapsiblePanelDataAttributes$1[CollapsiblePanelDataAttributes$1.startingStyle=TransitionStatusDataAttributes.startingStyle]=`startingStyle`,CollapsiblePanelDataAttributes$1[CollapsiblePanelDataAttributes$1.endingStyle=TransitionStatusDataAttributes.endingStyle]=`endingStyle`,CollapsiblePanelDataAttributes$1}({}),CollapsibleTriggerDataAttributes=function(CollapsibleTriggerDataAttributes$1){return CollapsibleTriggerDataAttributes$1.panelOpen=`data-panel-open`,CollapsibleTriggerDataAttributes$1}({});var PANEL_OPEN_HOOK={[CollapsiblePanelDataAttributes.open]:``},PANEL_CLOSED_HOOK={[CollapsiblePanelDataAttributes.closed]:``};const triggerOpenStateMapping$1={open(value){return value?{[CollapsibleTriggerDataAttributes.panelOpen]:``}:null}},collapsibleOpenStateMapping={open(value){return value?PANEL_OPEN_HOOK:PANEL_CLOSED_HOOK}},collapsibleStateAttributesMapping={...collapsibleOpenStateMapping,...transitionStatusMapping},CollapsibleRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,defaultOpen=!1,disabled:disabled$1=!1,onOpenChange:onOpenChangeProp,open,...elementProps}=componentProps,onOpenChange=useStableCallback(onOpenChangeProp),collapsible=useCollapsibleRoot({open,defaultOpen,onOpenChange,disabled:disabled$1}),state$1=import_react.useMemo(()=>({open:collapsible.open,disabled:collapsible.disabled,transitionStatus:collapsible.transitionStatus}),[collapsible.open,collapsible.disabled,collapsible.transitionStatus]),contextValue=import_react.useMemo(()=>({...collapsible,onOpenChange,state:state$1}),[collapsible,onOpenChange,state$1]),element$3=useRenderElement(`div`,componentProps,{state:state$1,ref:forwardedRef,props:elementProps,stateAttributesMapping:collapsibleStateAttributesMapping});return(0,import_jsx_runtime.jsx)(CollapsibleRootContext.Provider,{value:contextValue,children:element$3})});var stateAttributesMapping$6={...triggerOpenStateMapping$1,...transitionStatusMapping};const CollapsibleTrigger$1=import_react.forwardRef(function(componentProps,forwardedRef){let{panelId,open,handleTrigger,state:state$1,disabled:contextDisabled}=useCollapsibleRootContext(),{className,disabled:disabled$1=contextDisabled,id,render,nativeButton=!0,...elementProps}=componentProps,{getButtonProps,buttonRef}=useButton({disabled:disabled$1,focusableWhenDisabled:!0,native:nativeButton}),props=import_react.useMemo(()=>({"aria-controls":open?panelId:void 0,"aria-expanded":open,onClick:handleTrigger}),[panelId,open,handleTrigger]);return useRenderElement(`button`,componentProps,{state:state$1,ref:[forwardedRef,buttonRef],props:[props,elementProps,getButtonProps],stateAttributesMapping:stateAttributesMapping$6})});let AccordionRootDataAttributes=function(AccordionRootDataAttributes$1){return AccordionRootDataAttributes$1.disabled=`data-disabled`,AccordionRootDataAttributes$1.orientation=`data-orientation`,AccordionRootDataAttributes$1}({});function useCollapsiblePanel(parameters){let{abortControllerRef,animationTypeRef,externalRef,height,hiddenUntilFound,keepMounted,id:idParam,mounted,onOpenChange,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setOpen,setVisible,transitionDimensionRef,visible,width}=parameters,isBeforeMatchRef=import_react.useRef(!1),latestAnimationNameRef=import_react.useRef(null),shouldCancelInitialOpenAnimationRef=import_react.useRef(open),shouldCancelInitialOpenTransitionRef=import_react.useRef(open),endingStyleFrame=useAnimationFrame(),hidden=import_react.useMemo(()=>animationTypeRef.current===`css-animation`?!visible:!open&&!mounted,[open,mounted,visible,animationTypeRef]),mergedPanelRef=useMergedRefs(externalRef,panelRef,useStableCallback(element$3=>{if(!element$3)return;if(animationTypeRef.current==null||transitionDimensionRef.current==null){let panelStyles=getComputedStyle(element$3),hasAnimation=panelStyles.animationName!==`none`&&panelStyles.animationName!==``,hasTransition=panelStyles.transitionDuration!==`0s`&&panelStyles.transitionDuration!==``;hasAnimation&&hasTransition||(panelStyles.animationName===`none`&&panelStyles.transitionDuration!==`0s`?animationTypeRef.current=`css-transition`:panelStyles.animationName!==`none`&&panelStyles.transitionDuration===`0s`?animationTypeRef.current=`css-animation`:animationTypeRef.current=`none`),element$3.getAttribute(AccordionRootDataAttributes.orientation)===`horizontal`||panelStyles.transitionProperty.indexOf(`width`)>-1?transitionDimensionRef.current=`width`:transitionDimensionRef.current=`height`}if(animationTypeRef.current!==`css-transition`)return;(height===void 0||width===void 0)&&(setDimensions({height:element$3.scrollHeight,width:element$3.scrollWidth}),shouldCancelInitialOpenTransitionRef.current&&element$3.style.setProperty(`transition-duration`,`0s`));let frame=-1,nextFrame=-1;return frame=AnimationFrame.request(()=>{shouldCancelInitialOpenTransitionRef.current=!1,nextFrame=AnimationFrame.request(()=>{setTimeout(()=>{element$3.style.removeProperty(`transition-duration`)})})}),()=>{AnimationFrame.cancel(frame),AnimationFrame.cancel(nextFrame)}}));return useIsoLayoutEffect(()=>{if(animationTypeRef.current!==`css-transition`)return;let panel=panelRef.current;if(!panel)return;let resizeFrame=-1;if(abortControllerRef.current!=null&&(abortControllerRef.current.abort(),abortControllerRef.current=null),open){let originalLayoutStyles={"justify-content":panel.style.justifyContent,"align-items":panel.style.alignItems,"align-content":panel.style.alignContent,"justify-items":panel.style.justifyItems};Object.keys(originalLayoutStyles).forEach(key$1=>{panel.style.setProperty(key$1,`initial`,`important`)}),!shouldCancelInitialOpenTransitionRef.current&&!keepMounted&&panel.setAttribute(CollapsiblePanelDataAttributes.startingStyle,``),setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),resizeFrame=AnimationFrame.request(()=>{Object.entries(originalLayoutStyles).forEach(([key$1,value])=>{value===``?panel.style.removeProperty(key$1):panel.style.setProperty(key$1,value)})})}else{if(panel.scrollHeight===0&&panel.scrollWidth===0)return;setDimensions({height:panel.scrollHeight,width:panel.scrollWidth});let abortController=new AbortController;abortControllerRef.current=abortController;let signal=abortController.signal,attributeObserver=null,endingStyleAttribute=CollapsiblePanelDataAttributes.endingStyle;return attributeObserver=new MutationObserver(mutationList=>{mutationList.some(mutation=>mutation.type===`attributes`&&mutation.attributeName===endingStyleAttribute)&&(attributeObserver?.disconnect(),attributeObserver=null,runOnceAnimationsFinish(()=>{setDimensions({height:0,width:0}),panel.style.removeProperty(`content-visibility`),setMounted(!1),abortControllerRef.current===abortController&&(abortControllerRef.current=null)},signal))}),attributeObserver.observe(panel,{attributes:!0,attributeFilter:[endingStyleAttribute]}),()=>{attributeObserver?.disconnect(),endingStyleFrame.cancel(),abortControllerRef.current===abortController&&(abortController.abort(),abortControllerRef.current=null)}}return()=>{AnimationFrame.cancel(resizeFrame)}},[abortControllerRef,animationTypeRef,endingStyleFrame,hiddenUntilFound,keepMounted,mounted,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted]),useIsoLayoutEffect(()=>{if(animationTypeRef.current!==`css-animation`)return;let panel=panelRef.current;panel&&(latestAnimationNameRef.current=panel.style.animationName||latestAnimationNameRef.current,panel.style.setProperty(`animation-name`,`none`),setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),!shouldCancelInitialOpenAnimationRef.current&&!isBeforeMatchRef.current&&panel.style.removeProperty(`animation-name`),open?(abortControllerRef.current!=null&&(abortControllerRef.current.abort(),abortControllerRef.current=null),setMounted(!0),setVisible(!0)):(abortControllerRef.current=new AbortController,runOnceAnimationsFinish(()=>{setMounted(!1),setVisible(!1),abortControllerRef.current=null},abortControllerRef.current.signal)))},[abortControllerRef,animationTypeRef,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setVisible,visible]),useOnMount(()=>{let frame=AnimationFrame.request(()=>{shouldCancelInitialOpenAnimationRef.current=!1});return()=>AnimationFrame.cancel(frame)}),useIsoLayoutEffect(()=>{if(!hiddenUntilFound)return;let panel=panelRef.current;if(!panel)return;let frame=-1,nextFrame=-1;return open&&isBeforeMatchRef.current&&(panel.style.transitionDuration=`0s`,setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),frame=AnimationFrame.request(()=>{isBeforeMatchRef.current=!1,nextFrame=AnimationFrame.request(()=>{setTimeout(()=>{panel.style.removeProperty(`transition-duration`)})})})),()=>{AnimationFrame.cancel(frame),AnimationFrame.cancel(nextFrame)}},[hiddenUntilFound,open,panelRef,setDimensions]),useIsoLayoutEffect(()=>{let panel=panelRef.current;panel&&hiddenUntilFound&&hidden&&(panel.setAttribute(`hidden`,`until-found`),animationTypeRef.current===`css-transition`&&panel.setAttribute(CollapsiblePanelDataAttributes.startingStyle,``))},[hiddenUntilFound,hidden,animationTypeRef,panelRef]),import_react.useEffect(function(){let panel=panelRef.current;if(!panel)return;function handleBeforeMatch(event){isBeforeMatchRef.current=!0,setOpen(!0),onOpenChange(!0,createChangeEventDetails(none$3,event))}return panel.addEventListener(`beforematch`,handleBeforeMatch),()=>{panel.removeEventListener(`beforematch`,handleBeforeMatch)}},[onOpenChange,panelRef,setOpen]),import_react.useMemo(()=>({props:{hidden,id:idParam,ref:mergedPanelRef}}),[hidden,idParam,mergedPanelRef])}let CollapsiblePanelCssVars=function(CollapsiblePanelCssVars$1){return CollapsiblePanelCssVars$1.collapsiblePanelHeight=`--collapsible-panel-height`,CollapsiblePanelCssVars$1.collapsiblePanelWidth=`--collapsible-panel-width`,CollapsiblePanelCssVars$1}({});const CollapsiblePanel$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,hiddenUntilFound:hiddenUntilFoundProp,keepMounted:keepMountedProp,render,id:idProp,...elementProps}=componentProps,{abortControllerRef,animationTypeRef,height,mounted,onOpenChange,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setPanelIdState,setOpen,setVisible,state:state$1,transitionDimensionRef,visible,width,transitionStatus}=useCollapsibleRootContext(),hiddenUntilFound=hiddenUntilFoundProp??!1,keepMounted=keepMountedProp??!1;useIsoLayoutEffect(()=>{if(idProp)return setPanelIdState(idProp),()=>{setPanelIdState(void 0)}},[idProp,setPanelIdState]),useIsoLayoutEffect(()=>{setHiddenUntilFound(hiddenUntilFound)},[setHiddenUntilFound,hiddenUntilFound]),useIsoLayoutEffect(()=>{setKeepMounted(keepMounted)},[setKeepMounted,keepMounted]);let{props}=useCollapsiblePanel({abortControllerRef,animationTypeRef,externalRef:forwardedRef,height,hiddenUntilFound,id:panelId,keepMounted,mounted,onOpenChange,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setOpen,setVisible,transitionDimensionRef,visible,width});useOpenChangeComplete({open:open&&transitionStatus===`idle`,ref:panelRef,onComplete(){open&&setDimensions({height:void 0,width:void 0})}});let element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({...state$1,transitionStatus}),[state$1,transitionStatus]),ref:[forwardedRef,panelRef],props:[props,{style:{[CollapsiblePanelCssVars.collapsiblePanelHeight]:height===void 0?`auto`:`${height}px`,[CollapsiblePanelCssVars.collapsiblePanelWidth]:width===void 0?`auto`:`${width}px`}},elementProps],stateAttributesMapping:collapsibleStateAttributesMapping});return keepMounted||hiddenUntilFound||!keepMounted&&mounted?element$3:null});function Collapsible({...props}){return(0,import_jsx_runtime.jsx)(CollapsibleRoot,{"data-slot":`collapsible`,...props})}function CollapsibleTrigger({className,...props}){return(0,import_jsx_runtime.jsx)(CollapsibleTrigger$1,{className:cn(`cursor-pointer`,className),"data-slot":`collapsible-trigger`,...props})}function CollapsiblePanel({className,...props}){return(0,import_jsx_runtime.jsx)(CollapsiblePanel$1,{className:cn(`h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0`,className),"data-slot":`collapsible-panel`,...props})}const ScrollAreaRootContext=import_react.createContext(void 0);function useScrollAreaRootContext(){let context=import_react.useContext(ScrollAreaRootContext);if(context===void 0)throw Error(formatErrorMessage(53));return context}let ScrollAreaRootCssVars=function(ScrollAreaRootCssVars$1){return ScrollAreaRootCssVars$1.scrollAreaCornerHeight=`--scroll-area-corner-height`,ScrollAreaRootCssVars$1.scrollAreaCornerWidth=`--scroll-area-corner-width`,ScrollAreaRootCssVars$1}({});const SCROLL_TIMEOUT=500,MIN_THUMB_SIZE=16;function getOffset(element$3,prop,axis){if(!element$3)return 0;let styles=getComputedStyle(element$3),propAxis=axis===`x`?`Inline`:`Block`;return axis===`x`&&prop===`margin`?parseFloat(styles[`${prop}InlineStart`])*2:parseFloat(styles[`${prop}${propAxis}Start`])+parseFloat(styles[`${prop}${propAxis}End`])}let ScrollAreaScrollbarDataAttributes=function(ScrollAreaScrollbarDataAttributes$1){return ScrollAreaScrollbarDataAttributes$1.orientation=`data-orientation`,ScrollAreaScrollbarDataAttributes$1.hovering=`data-hovering`,ScrollAreaScrollbarDataAttributes$1.scrolling=`data-scrolling`,ScrollAreaScrollbarDataAttributes$1.hasOverflowX=`data-has-overflow-x`,ScrollAreaScrollbarDataAttributes$1.hasOverflowY=`data-has-overflow-y`,ScrollAreaScrollbarDataAttributes$1.overflowXStart=`data-overflow-x-start`,ScrollAreaScrollbarDataAttributes$1.overflowXEnd=`data-overflow-x-end`,ScrollAreaScrollbarDataAttributes$1.overflowYStart=`data-overflow-y-start`,ScrollAreaScrollbarDataAttributes$1.overflowYEnd=`data-overflow-y-end`,ScrollAreaScrollbarDataAttributes$1}({}),ScrollAreaRootDataAttributes=function(ScrollAreaRootDataAttributes$1){return ScrollAreaRootDataAttributes$1.hasOverflowX=`data-has-overflow-x`,ScrollAreaRootDataAttributes$1.hasOverflowY=`data-has-overflow-y`,ScrollAreaRootDataAttributes$1.overflowXStart=`data-overflow-x-start`,ScrollAreaRootDataAttributes$1.overflowXEnd=`data-overflow-x-end`,ScrollAreaRootDataAttributes$1.overflowYStart=`data-overflow-y-start`,ScrollAreaRootDataAttributes$1.overflowYEnd=`data-overflow-y-end`,ScrollAreaRootDataAttributes$1}({});const scrollAreaStateAttributesMapping={hasOverflowX:value=>value?{[ScrollAreaRootDataAttributes.hasOverflowX]:``}:null,hasOverflowY:value=>value?{[ScrollAreaRootDataAttributes.hasOverflowY]:``}:null,overflowXStart:value=>value?{[ScrollAreaRootDataAttributes.overflowXStart]:``}:null,overflowXEnd:value=>value?{[ScrollAreaRootDataAttributes.overflowXEnd]:``}:null,overflowYStart:value=>value?{[ScrollAreaRootDataAttributes.overflowYStart]:``}:null,overflowYEnd:value=>value?{[ScrollAreaRootDataAttributes.overflowYEnd]:``}:null,cornerHidden:()=>null};var DEFAULT_COORDS={x:0,y:0},DEFAULT_SIZE={width:0,height:0},DEFAULT_OVERFLOW_EDGES={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},DEFAULT_HIDDEN_STATE={x:!1,y:!1,corner:!1};const ScrollAreaRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,overflowEdgeThreshold:overflowEdgeThresholdProp,...elementProps}=componentProps,overflowEdgeThreshold=normalizeOverflowEdgeThreshold(overflowEdgeThresholdProp),rootId=useBaseUiId(),scrollYTimeout=useTimeout(),scrollXTimeout=useTimeout(),{nonce,disableStyleElements}=useCSPContext(),[hovering,setHovering]=import_react.useState(!1),[scrollingX,setScrollingX]=import_react.useState(!1),[scrollingY,setScrollingY]=import_react.useState(!1),[touchModality,setTouchModality]=import_react.useState(!1),[cornerSize,setCornerSize]=import_react.useState(DEFAULT_SIZE),[thumbSize,setThumbSize]=import_react.useState(DEFAULT_SIZE),[overflowEdges,setOverflowEdges]=import_react.useState(DEFAULT_OVERFLOW_EDGES),[hiddenState,setHiddenState]=import_react.useState(DEFAULT_HIDDEN_STATE),rootRef=import_react.useRef(null),viewportRef=import_react.useRef(null),scrollbarYRef=import_react.useRef(null),scrollbarXRef=import_react.useRef(null),thumbYRef=import_react.useRef(null),thumbXRef=import_react.useRef(null),cornerRef=import_react.useRef(null),thumbDraggingRef=import_react.useRef(!1),startYRef=import_react.useRef(0),startXRef=import_react.useRef(0),startScrollTopRef=import_react.useRef(0),startScrollLeftRef=import_react.useRef(0),currentOrientationRef=import_react.useRef(`vertical`),scrollPositionRef=import_react.useRef(DEFAULT_COORDS),handleScroll=useStableCallback(scrollPosition=>{let offsetX=scrollPosition.x-scrollPositionRef.current.x,offsetY=scrollPosition.y-scrollPositionRef.current.y;scrollPositionRef.current=scrollPosition,offsetY!==0&&(setScrollingY(!0),scrollYTimeout.start(500,()=>{setScrollingY(!1)})),offsetX!==0&&(setScrollingX(!0),scrollXTimeout.start(500,()=>{setScrollingX(!1)}))}),handlePointerDown=useStableCallback(event=>{event.button===0&&(thumbDraggingRef.current=!0,startYRef.current=event.clientY,startXRef.current=event.clientX,currentOrientationRef.current=event.currentTarget.getAttribute(ScrollAreaScrollbarDataAttributes.orientation),viewportRef.current&&(startScrollTopRef.current=viewportRef.current.scrollTop,startScrollLeftRef.current=viewportRef.current.scrollLeft),thumbYRef.current&&currentOrientationRef.current===`vertical`&&thumbYRef.current.setPointerCapture(event.pointerId),thumbXRef.current&&currentOrientationRef.current===`horizontal`&&thumbXRef.current.setPointerCapture(event.pointerId))}),handlePointerMove=useStableCallback(event=>{if(!thumbDraggingRef.current)return;let deltaY=event.clientY-startYRef.current,deltaX=event.clientX-startXRef.current;if(viewportRef.current){let scrollableContentHeight=viewportRef.current.scrollHeight,viewportHeight=viewportRef.current.clientHeight,scrollableContentWidth=viewportRef.current.scrollWidth,viewportWidth=viewportRef.current.clientWidth;if(thumbYRef.current&&scrollbarYRef.current&&currentOrientationRef.current===`vertical`){let scrollbarYOffset=getOffset(scrollbarYRef.current,`padding`,`y`),thumbYOffset=getOffset(thumbYRef.current,`margin`,`y`),thumbHeight=thumbYRef.current.offsetHeight,scrollRatioY=deltaY/(scrollbarYRef.current.offsetHeight-thumbHeight-scrollbarYOffset-thumbYOffset);viewportRef.current.scrollTop=startScrollTopRef.current+scrollRatioY*(scrollableContentHeight-viewportHeight),event.preventDefault(),setScrollingY(!0),scrollYTimeout.start(500,()=>{setScrollingY(!1)})}if(thumbXRef.current&&scrollbarXRef.current&&currentOrientationRef.current===`horizontal`){let scrollbarXOffset=getOffset(scrollbarXRef.current,`padding`,`x`),thumbXOffset=getOffset(thumbXRef.current,`margin`,`x`),thumbWidth=thumbXRef.current.offsetWidth,scrollRatioX=deltaX/(scrollbarXRef.current.offsetWidth-thumbWidth-scrollbarXOffset-thumbXOffset);viewportRef.current.scrollLeft=startScrollLeftRef.current+scrollRatioX*(scrollableContentWidth-viewportWidth),event.preventDefault(),setScrollingX(!0),scrollXTimeout.start(500,()=>{setScrollingX(!1)})}}}),handlePointerUp=useStableCallback(event=>{thumbDraggingRef.current=!1,thumbYRef.current&&currentOrientationRef.current===`vertical`&&thumbYRef.current.releasePointerCapture(event.pointerId),thumbXRef.current&&currentOrientationRef.current===`horizontal`&&thumbXRef.current.releasePointerCapture(event.pointerId)});function handleTouchModalityChange(event){setTouchModality(event.pointerType===`touch`)}function handlePointerEnterOrMove(event){handleTouchModalityChange(event),event.pointerType!==`touch`&&setHovering(contains(rootRef.current,event.target))}let state$1=import_react.useMemo(()=>({hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hiddenState.x,hiddenState.y,hiddenState.corner,overflowEdges]),props={role:`presentation`,onPointerEnter:handlePointerEnterOrMove,onPointerMove:handlePointerEnterOrMove,onPointerDown:handleTouchModalityChange,onPointerLeave(){setHovering(!1)},style:{position:`relative`,[ScrollAreaRootCssVars.scrollAreaCornerHeight]:`${cornerSize.height}px`,[ScrollAreaRootCssVars.scrollAreaCornerWidth]:`${cornerSize.width}px`}},element$3=useRenderElement(`div`,componentProps,{state:state$1,ref:[forwardedRef,rootRef],props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({handlePointerDown,handlePointerMove,handlePointerUp,handleScroll,cornerSize,setCornerSize,thumbSize,setThumbSize,touchModality,cornerRef,scrollingX,setScrollingX,scrollingY,setScrollingY,hovering,setHovering,viewportRef,rootRef,scrollbarYRef,scrollbarXRef,thumbYRef,thumbXRef,rootId,hiddenState,setHiddenState,overflowEdges,setOverflowEdges,viewportState:state$1,overflowEdgeThreshold}),[handlePointerDown,handlePointerMove,handlePointerUp,handleScroll,cornerSize,thumbSize,touchModality,scrollingX,setScrollingX,scrollingY,setScrollingY,hovering,setHovering,rootId,hiddenState,overflowEdges,state$1,overflowEdgeThreshold]);return(0,import_jsx_runtime.jsxs)(ScrollAreaRootContext.Provider,{value:contextValue,children:[!disableStyleElements&&styleDisableScrollbar.getElement(nonce),element$3]})});function normalizeOverflowEdgeThreshold(threshold){if(typeof threshold==`number`){let value=Math.max(0,threshold);return{xStart:value,xEnd:value,yStart:value,yEnd:value}}return{xStart:Math.max(0,threshold?.xStart||0),xEnd:Math.max(0,threshold?.xEnd||0),yStart:Math.max(0,threshold?.yStart||0),yEnd:Math.max(0,threshold?.yEnd||0)}}const ScrollAreaViewportContext=import_react.createContext(void 0);function onVisible(element$3,callback){if(typeof IntersectionObserver>`u`)return()=>{};let observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.intersectionRatio>0&&(callback(),observer.disconnect())})});return observer.observe(element$3),()=>{observer.disconnect()}}let ScrollAreaViewportCssVars=function(ScrollAreaViewportCssVars$1){return ScrollAreaViewportCssVars$1.scrollAreaOverflowXStart=`--scroll-area-overflow-x-start`,ScrollAreaViewportCssVars$1.scrollAreaOverflowXEnd=`--scroll-area-overflow-x-end`,ScrollAreaViewportCssVars$1.scrollAreaOverflowYStart=`--scroll-area-overflow-y-start`,ScrollAreaViewportCssVars$1.scrollAreaOverflowYEnd=`--scroll-area-overflow-y-end`,ScrollAreaViewportCssVars$1}({});var scrollAreaOverflowVarsRegistered=!1;function removeCSSVariableInheritance(){scrollAreaOverflowVarsRegistered||isWebKit||(typeof CSS<`u`&&`registerProperty`in CSS&&[ScrollAreaViewportCssVars.scrollAreaOverflowXStart,ScrollAreaViewportCssVars.scrollAreaOverflowXEnd,ScrollAreaViewportCssVars.scrollAreaOverflowYStart,ScrollAreaViewportCssVars.scrollAreaOverflowYEnd].forEach(name$2=>{try{CSS.registerProperty({name:name$2,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),scrollAreaOverflowVarsRegistered=!0)}const ScrollAreaViewport=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{viewportRef,scrollbarYRef,scrollbarXRef,thumbYRef,thumbXRef,cornerRef,cornerSize,setCornerSize,setThumbSize,rootId,setHiddenState,hiddenState,handleScroll,setHovering,setOverflowEdges,overflowEdges,overflowEdgeThreshold}=useScrollAreaRootContext(),direction=useDirection(),programmaticScrollRef=import_react.useRef(!0),scrollEndTimeout=useTimeout(),waitForAnimationsTimeout=useTimeout(),computeThumbPosition=useStableCallback(()=>{let viewportEl=viewportRef.current,scrollbarYEl=scrollbarYRef.current,scrollbarXEl=scrollbarXRef.current,thumbYEl=thumbYRef.current,thumbXEl=thumbXRef.current,cornerEl=cornerRef.current;if(!viewportEl)return;let scrollableContentHeight=viewportEl.scrollHeight,scrollableContentWidth=viewportEl.scrollWidth,viewportHeight=viewportEl.clientHeight,viewportWidth=viewportEl.clientWidth,scrollTop=viewportEl.scrollTop,scrollLeft=viewportEl.scrollLeft;if(scrollableContentHeight===0||scrollableContentWidth===0)return;let scrollbarYHidden=viewportHeight>=scrollableContentHeight,scrollbarXHidden=viewportWidth>=scrollableContentWidth,ratioX=viewportWidth/scrollableContentWidth,ratioY=viewportHeight/scrollableContentHeight,maxScrollLeft=Math.max(0,scrollableContentWidth-viewportWidth),maxScrollTop=Math.max(0,scrollableContentHeight-viewportHeight),scrollLeftFromStart=0,scrollLeftFromEnd=0;scrollbarXHidden||(scrollLeftFromStart=clamp(direction===`rtl`?-scrollLeft:scrollLeft,0,maxScrollLeft),scrollLeftFromEnd=maxScrollLeft-scrollLeftFromStart);let scrollTopFromStart=scrollbarYHidden?0:clamp(scrollTop,0,maxScrollTop),scrollTopFromEnd=scrollbarYHidden?0:maxScrollTop-scrollTopFromStart,nextWidth=scrollbarXHidden?0:viewportWidth,nextHeight=scrollbarYHidden?0:viewportHeight,nextCornerWidth=0,nextCornerHeight=0;!scrollbarXHidden&&!scrollbarYHidden&&(nextCornerWidth=scrollbarYEl?.offsetWidth||0,nextCornerHeight=scrollbarXEl?.offsetHeight||0);let cornerNotYetSized=cornerSize.width===0&&cornerSize.height===0,cornerWidthOffset=cornerNotYetSized?nextCornerWidth:0,cornerHeightOffset=cornerNotYetSized?nextCornerHeight:0,scrollbarXOffset=getOffset(scrollbarXEl,`padding`,`x`),scrollbarYOffset=getOffset(scrollbarYEl,`padding`,`y`),thumbXOffset=getOffset(thumbXEl,`margin`,`x`),thumbYOffset=getOffset(thumbYEl,`margin`,`y`),idealNextWidth=nextWidth-scrollbarXOffset-thumbXOffset,idealNextHeight=nextHeight-scrollbarYOffset-thumbYOffset,maxNextWidth=scrollbarXEl?Math.min(scrollbarXEl.offsetWidth-cornerWidthOffset,idealNextWidth):idealNextWidth,maxNextHeight=scrollbarYEl?Math.min(scrollbarYEl.offsetHeight-cornerHeightOffset,idealNextHeight):idealNextHeight,clampedNextWidth=Math.max(16,maxNextWidth*ratioX),clampedNextHeight=Math.max(16,maxNextHeight*ratioY);if(setThumbSize(prevSize=>prevSize.height===clampedNextHeight&&prevSize.width===clampedNextWidth?prevSize:{width:clampedNextWidth,height:clampedNextHeight}),scrollbarYEl&&thumbYEl){let maxThumbOffsetY=scrollbarYEl.offsetHeight-clampedNextHeight-scrollbarYOffset-thumbYOffset,scrollRangeY=scrollableContentHeight-viewportHeight,scrollRatioY=scrollRangeY===0?0:scrollTop/scrollRangeY,thumbOffsetY=Math.min(maxThumbOffsetY,Math.max(0,scrollRatioY*maxThumbOffsetY));thumbYEl.style.transform=`translate3d(0,${thumbOffsetY}px,0)`}if(scrollbarXEl&&thumbXEl){let maxThumbOffsetX=scrollbarXEl.offsetWidth-clampedNextWidth-scrollbarXOffset-thumbXOffset,scrollRangeX=scrollableContentWidth-viewportWidth,scrollRatioX=scrollRangeX===0?0:scrollLeft/scrollRangeX,thumbOffsetX=direction===`rtl`?clamp(scrollRatioX*maxThumbOffsetX,-maxThumbOffsetX,0):clamp(scrollRatioX*maxThumbOffsetX,0,maxThumbOffsetX);thumbXEl.style.transform=`translate3d(${thumbOffsetX}px,0,0)`}let clampedScrollLeftStart=clamp(scrollLeftFromStart,0,maxScrollLeft),clampedScrollLeftEnd=clamp(scrollLeftFromEnd,0,maxScrollLeft),clampedScrollTopStart=clamp(scrollTopFromStart,0,maxScrollTop),clampedScrollTopEnd=clamp(scrollTopFromEnd,0,maxScrollTop),overflowMetricsPx=[[ScrollAreaViewportCssVars.scrollAreaOverflowXStart,clampedScrollLeftStart],[ScrollAreaViewportCssVars.scrollAreaOverflowXEnd,clampedScrollLeftEnd],[ScrollAreaViewportCssVars.scrollAreaOverflowYStart,clampedScrollTopStart],[ScrollAreaViewportCssVars.scrollAreaOverflowYEnd,clampedScrollTopEnd]];for(let[cssVar,value]of overflowMetricsPx)viewportEl.style.setProperty(cssVar,`${value}px`);cornerEl&&(scrollbarXHidden||scrollbarYHidden?setCornerSize({width:0,height:0}):!scrollbarXHidden&&!scrollbarYHidden&&setCornerSize({width:nextCornerWidth,height:nextCornerHeight})),setHiddenState(prevState=>{let cornerHidden=scrollbarYHidden||scrollbarXHidden;return prevState.y===scrollbarYHidden&&prevState.x===scrollbarXHidden&&prevState.corner===cornerHidden?prevState:{y:scrollbarYHidden,x:scrollbarXHidden,corner:cornerHidden}});let nextOverflowEdges={xStart:!scrollbarXHidden&&clampedScrollLeftStart>overflowEdgeThreshold.xStart,xEnd:!scrollbarXHidden&&clampedScrollLeftEnd>overflowEdgeThreshold.xEnd,yStart:!scrollbarYHidden&&clampedScrollTopStart>overflowEdgeThreshold.yStart,yEnd:!scrollbarYHidden&&clampedScrollTopEnd>overflowEdgeThreshold.yEnd};setOverflowEdges(prev=>prev.xStart===nextOverflowEdges.xStart&&prev.xEnd===nextOverflowEdges.xEnd&&prev.yStart===nextOverflowEdges.yStart&&prev.yEnd===nextOverflowEdges.yEnd?prev:nextOverflowEdges)});useIsoLayoutEffect(()=>{if(!viewportRef.current)return;removeCSSVariableInheritance();let hasInitialized=!1;return onVisible(viewportRef.current,()=>{if(!hasInitialized){hasInitialized=!0;return}computeThumbPosition()})},[computeThumbPosition,viewportRef]),useIsoLayoutEffect(()=>{queueMicrotask(computeThumbPosition)},[computeThumbPosition,hiddenState,direction]),useIsoLayoutEffect(()=>{viewportRef.current?.matches(`:hover`)&&setHovering(!0)},[viewportRef,setHovering]),import_react.useEffect(()=>{let viewport=viewportRef.current;if(typeof ResizeObserver>`u`||!viewport)return;let hasInitialized=!1,ro=new ResizeObserver(()=>{if(!hasInitialized){hasInitialized=!0;return}computeThumbPosition()});return ro.observe(viewport),waitForAnimationsTimeout.start(0,()=>{let animations=viewport.getAnimations({subtree:!0});animations.length!==0&&Promise.all(animations.map(animation=>animation.finished)).then(computeThumbPosition).catch(()=>{})}),()=>{ro.disconnect(),waitForAnimationsTimeout.clear()}},[computeThumbPosition,viewportRef,waitForAnimationsTimeout]);function handleUserInteraction(){programmaticScrollRef.current=!1}let props={role:`presentation`,...rootId&&{"data-id":`${rootId}-viewport`},...(!hiddenState.x||!hiddenState.y)&&{tabIndex:0},className:styleDisableScrollbar.className,style:{overflow:`scroll`},onScroll(){viewportRef.current&&(computeThumbPosition(),programmaticScrollRef.current||handleScroll({x:viewportRef.current.scrollLeft,y:viewportRef.current.scrollTop}),scrollEndTimeout.start(100,()=>{programmaticScrollRef.current=!0}))},onWheel:handleUserInteraction,onTouchMove:handleUserInteraction,onPointerMove:handleUserInteraction,onPointerEnter:handleUserInteraction,onKeyDown:handleUserInteraction},viewportState=import_react.useMemo(()=>({hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hiddenState.x,hiddenState.y,hiddenState.corner,overflowEdges]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,viewportRef],state:viewportState,props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({computeThumbPosition}),[computeThumbPosition]);return(0,import_jsx_runtime.jsx)(ScrollAreaViewportContext.Provider,{value:contextValue,children:element$3})}),ScrollAreaScrollbarContext=import_react.createContext(void 0);function useScrollAreaScrollbarContext(){let context=import_react.useContext(ScrollAreaScrollbarContext);if(context===void 0)throw Error(formatErrorMessage(54));return context}let ScrollAreaScrollbarCssVars=function(ScrollAreaScrollbarCssVars$1){return ScrollAreaScrollbarCssVars$1.scrollAreaThumbHeight=`--scroll-area-thumb-height`,ScrollAreaScrollbarCssVars$1.scrollAreaThumbWidth=`--scroll-area-thumb-width`,ScrollAreaScrollbarCssVars$1}({});const ScrollAreaScrollbar=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,orientation=`vertical`,keepMounted=!1,...elementProps}=componentProps,{hovering,scrollingX,scrollingY,hiddenState,overflowEdges,scrollbarYRef,scrollbarXRef,viewportRef,thumbYRef,thumbXRef,handlePointerDown,handlePointerUp,rootId,thumbSize}=useScrollAreaRootContext(),state$1=import_react.useMemo(()=>({hovering,scrolling:{horizontal:scrollingX,vertical:scrollingY}[orientation],orientation,hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hovering,scrollingX,scrollingY,orientation,hiddenState,overflowEdges]),direction=useDirection();import_react.useEffect(()=>{let viewportEl=viewportRef.current,scrollbarEl=orientation===`vertical`?scrollbarYRef.current:scrollbarXRef.current;if(!scrollbarEl)return;function handleWheel(event){if(!(!viewportEl||!scrollbarEl||event.ctrlKey)){if(event.preventDefault(),orientation===`vertical`){if(viewportEl.scrollTop===0&&event.deltaY<0)return}else if(viewportEl.scrollLeft===0&&event.deltaX<0)return;if(orientation===`vertical`){if(viewportEl.scrollTop===viewportEl.scrollHeight-viewportEl.clientHeight&&event.deltaY>0)return}else if(viewportEl.scrollLeft===viewportEl.scrollWidth-viewportEl.clientWidth&&event.deltaX>0)return;orientation===`vertical`?viewportEl.scrollTop+=event.deltaY:viewportEl.scrollLeft+=event.deltaX}}return scrollbarEl.addEventListener(`wheel`,handleWheel,{passive:!1}),()=>{scrollbarEl.removeEventListener(`wheel`,handleWheel)}},[orientation,scrollbarXRef,scrollbarYRef,viewportRef]);let props={...rootId&&{"data-id":`${rootId}-scrollbar`},onPointerDown(event){if(event.button===0&&event.currentTarget===event.target&&viewportRef.current){if(thumbYRef.current&&scrollbarYRef.current&&orientation===`vertical`){let thumbYOffset=getOffset(thumbYRef.current,`margin`,`y`),scrollbarYOffset=getOffset(scrollbarYRef.current,`padding`,`y`),thumbHeight=thumbYRef.current.offsetHeight,trackRectY=scrollbarYRef.current.getBoundingClientRect(),clickY=event.clientY-trackRectY.top-thumbHeight/2-scrollbarYOffset+thumbYOffset/2,scrollableContentHeight=viewportRef.current.scrollHeight,viewportHeight=viewportRef.current.clientHeight,newScrollTop=clickY/(scrollbarYRef.current.offsetHeight-thumbHeight-scrollbarYOffset-thumbYOffset)*(scrollableContentHeight-viewportHeight);viewportRef.current.scrollTop=newScrollTop}if(thumbXRef.current&&scrollbarXRef.current&&orientation===`horizontal`){let thumbXOffset=getOffset(thumbXRef.current,`margin`,`x`),scrollbarXOffset=getOffset(scrollbarXRef.current,`padding`,`x`),thumbWidth=thumbXRef.current.offsetWidth,trackRectX=scrollbarXRef.current.getBoundingClientRect(),clickX=event.clientX-trackRectX.left-thumbWidth/2-scrollbarXOffset+thumbXOffset/2,scrollableContentWidth=viewportRef.current.scrollWidth,viewportWidth=viewportRef.current.clientWidth,scrollRatioX=clickX/(scrollbarXRef.current.offsetWidth-thumbWidth-scrollbarXOffset-thumbXOffset),newScrollLeft;direction===`rtl`?(newScrollLeft=(1-scrollRatioX)*(scrollableContentWidth-viewportWidth),viewportRef.current.scrollLeft<=0&&(newScrollLeft=-newScrollLeft)):newScrollLeft=scrollRatioX*(scrollableContentWidth-viewportWidth),viewportRef.current.scrollLeft=newScrollLeft}handlePointerDown(event)}},onPointerUp:handlePointerUp,style:{position:`absolute`,touchAction:`none`,WebkitUserSelect:`none`,userSelect:`none`,...orientation===`vertical`&&{top:0,bottom:`var(${ScrollAreaRootCssVars.scrollAreaCornerHeight})`,insetInlineEnd:0,[ScrollAreaScrollbarCssVars.scrollAreaThumbHeight]:`${thumbSize.height}px`},...orientation===`horizontal`&&{insetInlineStart:0,insetInlineEnd:`var(${ScrollAreaRootCssVars.scrollAreaCornerWidth})`,bottom:0,[ScrollAreaScrollbarCssVars.scrollAreaThumbWidth]:`${thumbSize.width}px`}}},element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,orientation===`vertical`?scrollbarYRef:scrollbarXRef],state:state$1,props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({orientation}),[orientation]),isHidden$1=orientation===`vertical`?hiddenState.y:hiddenState.x;return keepMounted||!isHidden$1?(0,import_jsx_runtime.jsx)(ScrollAreaScrollbarContext.Provider,{value:contextValue,children:element$3}):null}),ScrollAreaThumb=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{thumbYRef,thumbXRef,handlePointerDown,handlePointerMove,handlePointerUp,setScrollingX,setScrollingY}=useScrollAreaRootContext(),{orientation}=useScrollAreaScrollbarContext(),state$1=import_react.useMemo(()=>({orientation}),[orientation]);return useRenderElement(`div`,componentProps,{ref:[forwardedRef,orientation===`vertical`?thumbYRef:thumbXRef],state:state$1,props:[{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp(event){orientation===`vertical`&&setScrollingY(!1),orientation===`horizontal`&&setScrollingX(!1),handlePointerUp(event)},style:{...orientation===`vertical`&&{height:`var(${ScrollAreaScrollbarCssVars.scrollAreaThumbHeight})`},...orientation===`horizontal`&&{width:`var(${ScrollAreaScrollbarCssVars.scrollAreaThumbWidth})`}}},elementProps]})}),ScrollAreaCorner=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{cornerRef,cornerSize,hiddenState}=useScrollAreaRootContext(),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,cornerRef],props:[{style:{position:`absolute`,bottom:0,insetInlineEnd:0,width:cornerSize.width,height:cornerSize.height}},elementProps]});return hiddenState.corner?null:element$3});function ScrollArea({className,children,scrollFade=!1,scrollbarGutter=!1,...props}){return(0,import_jsx_runtime.jsxs)(ScrollAreaRoot,{className:cn(`size-full min-h-0`,className),...props,children:[(0,import_jsx_runtime.jsx)(ScrollAreaViewport,{className:cn(`h-full overscroll-contain rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,scrollFade&&`mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]`,scrollbarGutter&&`data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5`),"data-slot":`scroll-area-viewport`,children}),(0,import_jsx_runtime.jsx)(ScrollBar,{orientation:`vertical`}),(0,import_jsx_runtime.jsx)(ScrollBar,{orientation:`horizontal`}),(0,import_jsx_runtime.jsx)(ScrollAreaCorner,{"data-slot":`scroll-area-corner`})]})}function ScrollBar({className,orientation=`vertical`,...props}){return(0,import_jsx_runtime.jsx)(ScrollAreaScrollbar,{className:cn(`m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100`,className),"data-slot":`scroll-area-scrollbar`,orientation,...props,children:(0,import_jsx_runtime.jsx)(ScrollAreaThumb,{className:`relative flex-1 rounded-full bg-foreground/20`,"data-slot":`scroll-area-thumb`})})}function highlightMatch(text$5,query){if(!query)return text$5;let index$4=text$5.toLowerCase().indexOf(query.toLowerCase());return index$4===-1?text$5:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[text$5.slice(0,index$4),(0,import_jsx_runtime.jsx)(`mark`,{className:`bg-yellow-200 text-inherit`,children:text$5.slice(index$4,index$4+query.length)}),text$5.slice(index$4+query.length)]})}function ObjectSection({title,icon:Icon$1,objects,searchQuery,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,schema,objectType}){let[sectionOpen,setSectionOpen]=(0,import_react.useState)(!0),filteredObjects=objects.filter(obj=>obj.name.toLowerCase().includes(searchQuery.toLowerCase()));return filteredObjects.length===0&&searchQuery?null:(0,import_jsx_runtime.jsxs)(Collapsible,{open:sectionOpen,onOpenChange:setSectionOpen,className:`mt-2 first:mt-0`,children:[(0,import_jsx_runtime.jsxs)(CollapsibleTrigger,{className:`flex items-center gap-1.5 w-full px-2 py-1 text-xs font-semibold text-gray-500 uppercase tracking-wide hover:text-gray-700 rounded overflow-hidden`,children:[(0,import_jsx_runtime.jsx)(ChevronRight,{className:cn(`size-3 shrink-0 transition-transform`,sectionOpen&&`rotate-90`)}),(0,import_jsx_runtime.jsx)(Icon$1,{className:`size-3.5 shrink-0`}),(0,import_jsx_runtime.jsx)(`span`,{className:`truncate`,children:title}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,size:`sm`,className:`rounded-full shrink-0 text-[10px] lowercase`,children:filteredObjects.length})]}),(0,import_jsx_runtime.jsx)(CollapsiblePanel,{children:(0,import_jsx_runtime.jsx)(`div`,{className:`ml-5 mt-0.5 border-l border-gray-200 pl-1`,children:filteredObjects.map(obj=>{let objectKey=obj.arguments===void 0?obj.name:`${obj.name}(${obj.arguments})`,isSelected=selectedObject?.schema===schema&&selectedObject?.name===obj.name&&selectedObject?.type===objectType&&(obj.arguments===void 0||selectedObject?.arguments===obj.arguments);return(0,import_jsx_runtime.jsx)(ObjectItem,{objectName:obj.name,searchQuery,isSelected,onClick:()=>{onObjectSelect({schema,name:obj.name,type:objectType,arguments:obj.arguments})},onDoubleClick:()=>onObjectDoubleClick(schema,obj.name,objectType,obj.arguments),onViewSchema:()=>onViewSchema(schema,obj.name,objectType,obj.arguments),onGenerateSQL:onGenerateSQL?sqlType=>onGenerateSQL(schema,obj.name,objectType,sqlType):void 0,objectType},objectKey)})})})]})}function ObjectItem({objectName,searchQuery,isSelected,onClick,onDoubleClick,onViewSchema,onGenerateSQL,objectType}){let isFunction=objectType===`function`||objectType===`procedure`,isTableLike=objectType===`table`||objectType===`view`||objectType===`materialized_view`,isTable=objectType===`table`,[contextMenu,setContextMenu]=(0,import_react.useState)(null),[submenuOpen,setSubmenuOpen]=(0,import_react.useState)(!1),closeTimeoutRef=(0,import_react.useRef)(null),handleSubmenuEnter=()=>{closeTimeoutRef.current&&=(clearTimeout(closeTimeoutRef.current),null),setSubmenuOpen(!0)},handleSubmenuLeave=()=>{closeTimeoutRef.current=window.setTimeout(()=>{setSubmenuOpen(!1)},100)},closeMenu=()=>{setSubmenuOpen(!1),setContextMenu(null)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:cn(`group flex items-center gap-1 w-full px-2 py-0.5 text-[13px] text-gray-700 rounded cursor-pointer`,isSelected?`bg-blue-100 text-blue-900`:`hover:bg-gray-50`),onClick,onDoubleClick,onContextMenu:e=>{e.preventDefault(),setContextMenu({x:e.clientX,y:e.clientY})},children:[(0,import_jsx_runtime.jsx)(`span`,{className:`flex-1 truncate`,children:highlightMatch(objectName,searchQuery)}),(0,import_jsx_runtime.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover:opacity-100 p-0.5 rounded hover:bg-accent text-gray-500 hover:text-gray-700`,onClick:e=>{e.stopPropagation(),onViewSchema()},title:isFunction?`View definition`:`View schema`,children:(0,import_jsx_runtime.jsx)(Info$1,{className:`size-3.5`})})]}),contextMenu&&(0,import_jsx_runtime.jsxs)(`div`,{className:`fixed z-50`,style:{left:contextMenu.x,top:contextMenu.y},children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`min-w-32 rounded-lg border bg-popover shadow-lg p-1`,onMouseLeave:()=>{submenuOpen||closeMenu()},children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onDoubleClick(),closeMenu()},children:isFunction?`Edit Definition`:`Select Rows`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onViewSchema(),closeMenu()},children:isFunction?`View Definition`:`View Schema`}),isTableLike&&onGenerateSQL&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`div`,{className:`mx-2 my-1 h-px bg-border`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,onMouseEnter:handleSubmenuEnter,onMouseLeave:handleSubmenuLeave,children:[(0,import_jsx_runtime.jsxs)(`button`,{className:cn(`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,submenuOpen&&`bg-accent text-accent-foreground`),children:[(0,import_jsx_runtime.jsx)(`span`,{className:`whitespace-nowrap`,children:`Quick SQL`}),(0,import_jsx_runtime.jsx)(ChevronRight,{className:`ml-auto size-4 opacity-80`})]}),submenuOpen&&(0,import_jsx_runtime.jsxs)(`div`,{className:`absolute left-full top-0 ml-0 min-w-24 rounded-lg border bg-popover shadow-lg p-1`,onMouseEnter:handleSubmenuEnter,onMouseLeave:handleSubmenuLeave,children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`select`),closeMenu()},children:`SELECT`}),isTable&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`insert`),closeMenu()},children:`INSERT`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`update`),closeMenu()},children:`UPDATE`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`delete`),closeMenu()},children:`DELETE`})]})]})]})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`fixed inset-0 -z-10`,onClick:closeMenu,onContextMenu:e=>{e.preventDefault(),closeMenu()}})]})]})}function ObjectTree(props){let{tables,views,materializedViews,functions,procedures,connectionId:_connectionId,...shared}=props;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`flex-1`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`py-1 px-2`,children:[(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Tables`,icon:Grid3x3,objects:tables,objectType:`table`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Views`,icon:Eye,objects:views,objectType:`view`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Materialized`,icon:Layers,objects:materializedViews,objectType:`materialized_view`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Functions`,icon:SquareFunction,objects:functions,objectType:`function`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Procedures`,icon:Code,objects:procedures,objectType:`procedure`,...shared})]})})}function ObjectSidebar({connectionId,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,selectedSchema,onSchemaChange,onNewQuery,schemas,tables,isSchemasLoading,isTablesLoading,schemasError,tablesError}){let[searchQuery,setSearchQuery]=(0,import_react.useState)(``),queryClient$2=useQueryClient(),{mutate:refreshSchemaCache}=useRefreshSchemaCache(),{data:materializedViewsData=[],isLoading:mvLoading,error:mvError,refetch:refetchMaterializedViews}=useMaterializedViews(connectionId,selectedSchema||``),{data:functionsData=[],isLoading:functionsLoading,error:functionsError,refetch:refetchFunctions}=useFunctions(connectionId,selectedSchema||``),{data:proceduresData=[],isLoading:proceduresLoading,error:proceduresError,refetch:refetchProcedures}=useProcedures(connectionId,selectedSchema||``),tablesList=tables.filter(t$1=>t$1.type===`table`),viewsList=tables.filter(t$1=>t$1.type===`view`),isLoading=isSchemasLoading||isTablesLoading||mvLoading||functionsLoading||proceduresLoading,hasError=schemasError||tablesError||mvError||functionsError||proceduresError,errorMessage=schemasError?.message||tablesError?.message||mvError?.message||functionsError?.message||proceduresError?.message;return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`px-2 pt-2 space-y-2`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex gap-1 items-center`,children:[(0,import_jsx_runtime.jsx)(SchemaSelector,{value:selectedSchema||``,onChange:onSchemaChange,schemas,disabled:isSchemasLoading}),(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,className:`shrink-0`,onClick:()=>{queryClient$2.invalidateQueries({queryKey:queryKeys.schemas(connectionId)}),selectedSchema&&queryClient$2.invalidateQueries({queryKey:queryKeys.tables(connectionId,selectedSchema)}),refetchMaterializedViews(),refetchFunctions(),refetchProcedures(),queryClient$2.invalidateQueries({queryKey:[...connectionKeys.all,`health`,connectionId]}),refreshSchemaCache({connectionId,schemas:selectedSchema?[selectedSchema]:[]})},children:(0,import_jsx_runtime.jsx)(RefreshCw,{className:`h-2 w-2`})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:`Refresh`})]}),onNewQuery&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 font-mono font-semibold`,onClick:()=>onNewQuery(),children:`SQL`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:`New Query`})]})]}),(0,import_jsx_runtime.jsx)(SearchInput,{value:searchQuery,onChange:e=>setSearchQuery(e.target.value),onClear:()=>setSearchQuery(``),size:`sm`})]}),hasError?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center text-red-500 text-sm px-4 text-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`div`,{children:`Failed to load schema`}),errorMessage&&(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-600 max-w-full break-words`,children:errorMessage}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-500`,children:`Use the refresh button above to retry`})]}):isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-gray-500 text-sm`,children:`Loading...`}):(0,import_jsx_runtime.jsx)(ObjectTree,{tables:tablesList,views:viewsList,materializedViews:materializedViewsData,functions:functionsData,procedures:proceduresData,searchQuery,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,schema:selectedSchema||``,connectionId})]})}function getSchemaTabIcon(objectType){switch(objectType){case`view`:return Eye;case`materialized_view`:return Layers;case`function`:return SquareFunction;case`procedure`:return Code;case`table`:default:return Grid3x3}}function EditorTabs({tabs,activeTabId,onTabSelect,onTabClose,onCloseOthers,onCloseToRight,onCloseAll,rightPanelOpen,onRightPanelToggle}){let scrollContainerRef=(0,import_react.useRef)(null),[contextMenu,setContextMenu]=(0,import_react.useState)(null),handleWheel=(0,import_react.useCallback)(e=>{scrollContainerRef.current&&(e.preventDefault(),scrollContainerRef.current.scrollLeft+=e.deltaY)},[]),handleContextMenu=(0,import_react.useCallback)((e,tabId)=>{e.preventDefault(),setContextMenu({tabId,x:e.clientX,y:e.clientY})},[]),closeContextMenu=(0,import_react.useCallback)(()=>{setContextMenu(null)},[]),isLastTab=(contextMenu?tabs.findIndex(t$1=>t$1.tab.id===contextMenu.tabId):-1)===tabs.length-1;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`div`,{ref:scrollContainerRef,className:`flex items-center flex-1 min-w-0 overflow-x-auto [&::-webkit-scrollbar]:h-1 [&::-webkit-scrollbar]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-transparent hover:[&::-webkit-scrollbar-thumb]:bg-gray-300`,onWheel:handleWheel,children:tabs.map(({tab:tab$1})=>(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsxs)(`div`,{className:cn(`group flex items-center gap-1 h-8 px-3 border-r border-gray-200 cursor-pointer text-sm shrink min-w-0`,activeTabId===tab$1.id?`bg-white text-gray-900`:`text-gray-600 hover:bg-gray-100`),style:{minWidth:`80px`,maxWidth:`160px`},onClick:()=>onTabSelect(tab$1.id),onContextMenu:e=>handleContextMenu(e,tab$1.id),children:[tab$1.type===`schema`?(()=>(0,import_jsx_runtime.jsx)(getSchemaTabIcon(tab$1.objectType),{className:`size-3.5 shrink-0 text-gray-500`}))():(0,import_jsx_runtime.jsx)(FileCode,{className:`size-3.5 shrink-0 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`truncate flex-1`,children:tab$1.name}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,className:`opacity-0 group-hover:opacity-100 shrink-0 !size-4 !min-h-0 !p-0 !rounded-sm`,onClick:e=>{e.stopPropagation(),onTabClose(tab$1.id)},children:(0,import_jsx_runtime.jsx)(X,{className:`size-3`})})]})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:tab$1.name})]},tab$1.id))}),onRightPanelToggle&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:rightPanelOpen?`secondary`:`ghost`,size:`icon-sm`,className:`shrink-0 mx-1`,onClick:onRightPanelToggle,children:(0,import_jsx_runtime.jsx)(PanelRight,{className:`size-4`})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:rightPanelOpen?`Hide panel`:`Show panel`})]}),(0,import_jsx_runtime.jsx)(Menu,{open:contextMenu!==null,onOpenChange:open=>!open&&closeContextMenu(),children:(0,import_jsx_runtime.jsxs)(MenuPopup,{className:`whitespace-nowrap`,style:{position:`fixed`,left:contextMenu?.x??0,top:contextMenu?.y??0},side:`bottom`,align:`start`,sideOffset:0,children:[(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onTabClose(contextMenu.tabId),closeContextMenu()},children:`Close`}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onCloseOthers(contextMenu.tabId),closeContextMenu()},disabled:tabs.length<=1,children:`Close Others`}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onCloseToRight(contextMenu.tabId),closeContextMenu()},disabled:isLastTab,children:`Close to the Right`}),(0,import_jsx_runtime.jsx)(MenuSeparator,{}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{onCloseAll(),closeContextMenu()},children:`Close All`})]})})]})}var rangeFrom=[],rangeTo=[];(()=>{let numbers=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(s$1=>s$1?parseInt(s$1,36):1);for(let i$3=0,n=0;i$3<numbers.length;i$3++)(i$3%2?rangeTo:rangeFrom).push(n+=numbers[i$3])})();function isExtendingChar(code$2){if(code$2<768)return!1;for(let from=0,to=rangeFrom.length;;){let mid=from+to>>1;if(code$2<rangeFrom[mid])to=mid;else if(code$2>=rangeTo[mid])from=mid+1;else return!0;if(from==to)return!1}}function isRegionalIndicator(code$2){return code$2>=127462&&code$2<=127487}var ZWJ=8205;function findClusterBreak$1(str,pos,forward=!0,includeExtending=!0){return(forward?nextClusterBreak:prevClusterBreak)(str,pos,includeExtending)}function nextClusterBreak(str,pos,includeExtending){if(pos==str.length)return pos;pos&&surrogateLow$1(str.charCodeAt(pos))&&surrogateHigh$1(str.charCodeAt(pos-1))&&pos--;let prev=codePointAt$1(str,pos);for(pos+=codePointSize$1(prev);pos<str.length;){let next=codePointAt$1(str,pos);if(prev==ZWJ||next==ZWJ||includeExtending&&isExtendingChar(next))pos+=codePointSize$1(next),prev=next;else if(isRegionalIndicator(next)){let countBefore=0,i$3=pos-2;for(;i$3>=0&&isRegionalIndicator(codePointAt$1(str,i$3));)countBefore++,i$3-=2;if(countBefore%2==0)break;pos+=2}else break}return pos}function prevClusterBreak(str,pos,includeExtending){for(;pos>0;){let found=nextClusterBreak(str,pos-2,includeExtending);if(found<pos)return found;pos--}return 0}function codePointAt$1(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh$1(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);return surrogateLow$1(code1)?(code0-55296<<10)+(code1-56320)+65536:code0}function surrogateLow$1(ch){return ch>=56320&&ch<57344}function surrogateHigh$1(ch){return ch>=55296&&ch<56320}function codePointSize$1(code$2){return code$2<65536?1:2}var Text=class Text{lineAt(pos){if(pos<0||pos>this.length)throw RangeError(`Invalid position ${pos} in document of length ${this.length}`);return this.lineInner(pos,!1,1,0)}line(n){if(n<1||n>this.lines)throw RangeError(`Invalid line number ${n} in ${this.lines}-line document`);return this.lineInner(n,!0,1,0)}replace(from,to,text$5){[from,to]=clip(this,from,to);let parts=[];return this.decompose(0,from,parts,2),text$5.length&&text$5.decompose(0,text$5.length,parts,3),this.decompose(to,this.length,parts,1),TextNode.from(parts,this.length-(to-from)+text$5.length)}append(other){return this.replace(this.length,this.length,other)}slice(from,to=this.length){[from,to]=clip(this,from,to);let parts=[];return this.decompose(from,to,parts,0),TextNode.from(parts,to-from)}eq(other){if(other==this)return!0;if(other.length!=this.length||other.lines!=this.lines)return!1;let start=this.scanIdentical(other,1),end=this.length-this.scanIdentical(other,-1),a$1=new RawTextCursor(this),b$2=new RawTextCursor(other);for(let skip=start,pos=start;;){if(a$1.next(skip),b$2.next(skip),skip=0,a$1.lineBreak!=b$2.lineBreak||a$1.done!=b$2.done||a$1.value!=b$2.value)return!1;if(pos+=a$1.value.length,a$1.done||pos>=end)return!0}}iter(dir=1){return new RawTextCursor(this,dir)}iterRange(from,to=this.length){return new PartialTextCursor(this,from,to)}iterLines(from,to){let inner;if(from==null)inner=this.iter();else{to??=this.lines+1;let start=this.line(from).from;inner=this.iterRange(start,Math.max(start,to==this.lines+1?this.length:to<=1?0:this.line(to-1).to))}return new LineCursor(inner)}toString(){return this.sliceString(0)}toJSON(){let lines=[];return this.flatten(lines),lines}constructor(){}static of(text$5){if(text$5.length==0)throw RangeError(`A document must have at least one line`);return text$5.length==1&&!text$5[0]?Text.empty:text$5.length<=32?new TextLeaf(text$5):TextNode.from(TextLeaf.split(text$5,[]))}},TextLeaf=class TextLeaf extends Text{constructor(text$5,length=textLength(text$5)){super(),this.text=text$5,this.length=length}get lines(){return this.text.length}get children(){return null}lineInner(target,isLine,line,offset$3){for(let i$3=0;;i$3++){let string$3=this.text[i$3],end=offset$3+string$3.length;if((isLine?line:end)>=target)return new Line(offset$3,end,line,string$3);offset$3=end+1,line++}}decompose(from,to,target,open){let text$5=from<=0&&to>=this.length?this:new TextLeaf(sliceText(this.text,from,to),Math.min(to,this.length)-Math.max(0,from));if(open&1){let prev=target.pop(),joined=appendText(text$5.text,prev.text.slice(),0,text$5.length);if(joined.length<=32)target.push(new TextLeaf(joined,prev.length+text$5.length));else{let mid=joined.length>>1;target.push(new TextLeaf(joined.slice(0,mid)),new TextLeaf(joined.slice(mid)))}}else target.push(text$5)}replace(from,to,text$5){if(!(text$5 instanceof TextLeaf))return super.replace(from,to,text$5);[from,to]=clip(this,from,to);let lines=appendText(this.text,appendText(text$5.text,sliceText(this.text,0,from)),to),newLen=this.length+text$5.length-(to-from);return lines.length<=32?new TextLeaf(lines,newLen):TextNode.from(TextLeaf.split(lines,[]),newLen)}sliceString(from,to=this.length,lineSep=`
24
+ `:case`\r`:case` `:case` `:continue;default:throw Error(`invalid base64 string.`)}switch(groupPos){case 0:p$1=b$2,groupPos=1;break;case 1:bytes[bytePos++]=p$1<<2|(b$2&48)>>4,p$1=b$2,groupPos=2;break;case 2:bytes[bytePos++]=(p$1&15)<<4|(b$2&60)>>2,p$1=b$2,groupPos=3;break;case 3:bytes[bytePos++]=(p$1&3)<<6|b$2,groupPos=0;break}}if(groupPos==1)throw Error(`invalid base64 string.`);return bytes.subarray(0,bytePos)},enc(bytes){let base64$2=``,groupPos=0,b$2,p$1=0;for(let i$3=0;i$3<bytes.length;i$3++)switch(b$2=bytes[i$3],groupPos){case 0:base64$2+=encTable[b$2>>2],p$1=(b$2&3)<<4,groupPos=1;break;case 1:base64$2+=encTable[p$1|b$2>>4],p$1=(b$2&15)<<2,groupPos=2;break;case 2:base64$2+=encTable[p$1|b$2>>6],base64$2+=encTable[b$2&63],groupPos=0;break}return groupPos&&(base64$2+=encTable[p$1],base64$2+=`=`,groupPos==1&&(base64$2+=`=`)),base64$2}};function getExtension(message,extension$1,options$1){assertExtendee(extension$1,message);let opt=extension$1.runtime.bin.makeReadOptions(options$1),ufs=filterUnknownFields(message.getType().runtime.bin.listUnknownFields(message),extension$1.field),[container,get]=createExtensionContainer(extension$1);for(let uf of ufs)extension$1.runtime.bin.readField(container,opt.readerFactory(uf.data),extension$1.field,uf.wireType,opt);return get()}function setExtension(message,extension$1,value,options$1){assertExtendee(extension$1,message);let readOpt=extension$1.runtime.bin.makeReadOptions(options$1),writeOpt=extension$1.runtime.bin.makeWriteOptions(options$1);if(hasExtension(message,extension$1)){let ufs=message.getType().runtime.bin.listUnknownFields(message).filter(uf=>uf.no!=extension$1.field.no);message.getType().runtime.bin.discardUnknownFields(message);for(let uf of ufs)message.getType().runtime.bin.onUnknownField(message,uf.no,uf.wireType,uf.data)}let writer=writeOpt.writerFactory(),f$2=extension$1.field;!f$2.opt&&!f$2.repeated&&(f$2.kind==`enum`||f$2.kind==`scalar`)&&(f$2=Object.assign(Object.assign({},extension$1.field),{opt:!0})),extension$1.runtime.bin.writeField(f$2,value,writer,writeOpt);let reader=readOpt.readerFactory(writer.finish());for(;reader.pos<reader.len;){let[no,wireType]=reader.tag(),data=reader.skip(wireType,no);message.getType().runtime.bin.onUnknownField(message,no,wireType,data)}}function hasExtension(message,extension$1){let messageType=message.getType();return extension$1.extendee.typeName===messageType.typeName&&!!messageType.runtime.bin.listUnknownFields(message).find(uf=>uf.no==extension$1.field.no)}function assertExtendee(extension$1,message){assert(extension$1.extendee.typeName==message.getType().typeName,`extension ${extension$1.typeName} can only be applied to message ${extension$1.extendee.typeName}`)}function isFieldSet(field,target){let localName=field.localName;if(field.repeated)return target[localName].length>0;if(field.oneof)return target[field.oneof.localName].case===localName;switch(field.kind){case`enum`:case`scalar`:return field.opt||field.req?target[localName]!==void 0:field.kind==`enum`?target[localName]!==field.T.values[0].no:!isScalarZeroValue(field.T,target[localName]);case`message`:return target[localName]!==void 0;case`map`:return Object.keys(target[localName]).length>0}}function clearField(field,target){let localName=field.localName,implicitPresence=!field.opt&&!field.req;if(field.repeated)target[localName]=[];else if(field.oneof)target[field.oneof.localName]={case:void 0};else switch(field.kind){case`map`:target[localName]={};break;case`enum`:target[localName]=implicitPresence?field.T.values[0].no:void 0;break;case`scalar`:target[localName]=implicitPresence?scalarZeroValue(field.T,field.L):void 0;break;case`message`:target[localName]=void 0;break}}function isMessage(arg,type){if(typeof arg!=`object`||!arg||!Object.getOwnPropertyNames(Message.prototype).every(m$2=>m$2 in arg&&typeof arg[m$2]==`function`))return!1;let actualType=arg.getType();return actualType===null||typeof actualType!=`function`||!(`typeName`in actualType)||typeof actualType.typeName!=`string`?!1:type===void 0?!0:actualType.typeName==type.typeName}function wrapField(type,value){return isMessage(value)||!type.fieldWrapper?value:type.fieldWrapper.wrapField(value)}var wktWrapperToScalarType={"google.protobuf.DoubleValue":ScalarType.DOUBLE,"google.protobuf.FloatValue":ScalarType.FLOAT,"google.protobuf.Int64Value":ScalarType.INT64,"google.protobuf.UInt64Value":ScalarType.UINT64,"google.protobuf.Int32Value":ScalarType.INT32,"google.protobuf.UInt32Value":ScalarType.UINT32,"google.protobuf.BoolValue":ScalarType.BOOL,"google.protobuf.StringValue":ScalarType.STRING,"google.protobuf.BytesValue":ScalarType.BYTES},jsonReadDefaults={ignoreUnknownFields:!1},jsonWriteDefaults={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function makeReadOptions$1(options$1){return options$1?Object.assign(Object.assign({},jsonReadDefaults),options$1):jsonReadDefaults}function makeWriteOptions$1(options$1){return options$1?Object.assign(Object.assign({},jsonWriteDefaults),options$1):jsonWriteDefaults}var tokenNull=Symbol(),tokenIgnoredUnknownEnum=Symbol();function makeJsonFormat(){return{makeReadOptions:makeReadOptions$1,makeWriteOptions:makeWriteOptions$1,readMessage(type,json$1,options$1,message){if(json$1==null||Array.isArray(json$1)||typeof json$1!=`object`)throw Error(`cannot decode message ${type.typeName} from JSON: ${debugJsonValue(json$1)}`);message??=new type;let oneofSeen=new Map,registry=options$1.typeRegistry;for(let[jsonKey,jsonValue]of Object.entries(json$1)){let field=type.fields.findJsonName(jsonKey);if(field){if(field.oneof){if(jsonValue===null&&field.kind==`scalar`)continue;let seen$1=oneofSeen.get(field.oneof);if(seen$1!==void 0)throw Error(`cannot decode message ${type.typeName} from JSON: multiple keys for oneof "${field.oneof.name}" present: "${seen$1}", "${jsonKey}"`);oneofSeen.set(field.oneof,jsonKey)}readField$1(message,jsonValue,field,options$1,type)}else{let found=!1;if(registry?.findExtension&&jsonKey.startsWith(`[`)&&jsonKey.endsWith(`]`)){let ext=registry.findExtension(jsonKey.substring(1,jsonKey.length-1));if(ext&&ext.extendee.typeName==type.typeName){found=!0;let[container,get]=createExtensionContainer(ext);readField$1(container,jsonValue,ext.field,options$1,ext),setExtension(message,ext,get(),options$1)}}if(!found&&!options$1.ignoreUnknownFields)throw Error(`cannot decode message ${type.typeName} from JSON: key "${jsonKey}" is unknown`)}}return message},writeMessage(message,options$1){let type=message.getType(),json$1={},field;try{for(field of type.fields.byNumber()){if(!isFieldSet(field,message)){if(field.req)throw`required field not set`;if(!options$1.emitDefaultValues||!canEmitFieldDefaultValue(field))continue}let value=field.oneof?message[field.oneof.localName].value:message[field.localName],jsonValue=writeField$1(field,value,options$1);jsonValue!==void 0&&(json$1[options$1.useProtoFieldName?field.name:field.jsonName]=jsonValue)}let registry=options$1.typeRegistry;if(registry?.findExtensionFor)for(let uf of type.runtime.bin.listUnknownFields(message)){let ext=registry.findExtensionFor(type.typeName,uf.no);if(ext&&hasExtension(message,ext)){let value=getExtension(message,ext,options$1),jsonValue=writeField$1(ext.field,value,options$1);jsonValue!==void 0&&(json$1[ext.field.jsonName]=jsonValue)}}}catch(e){let m$2=field?`cannot encode field ${type.typeName}.${field.name} to JSON`:`cannot encode message ${type.typeName} to JSON`,r$4=e instanceof Error?e.message:String(e);throw Error(m$2+(r$4.length>0?`: ${r$4}`:``))}return json$1},readScalar(type,json$1,longType){return readScalar$1(type,json$1,longType??LongType.BIGINT,!0)},writeScalar(type,value,emitDefaultValues){if(value!==void 0&&(emitDefaultValues||isScalarZeroValue(type,value)))return writeScalar$1(type,value)},debug:debugJsonValue}}function debugJsonValue(json$1){if(json$1===null)return`null`;switch(typeof json$1){case`object`:return Array.isArray(json$1)?`array`:`object`;case`string`:return json$1.length>100?`string`:`"${json$1.split(`"`).join(`\\"`)}"`;default:return String(json$1)}}function readField$1(target,jsonValue,field,options$1,parentType){let localName=field.localName;if(field.repeated){if(assert(field.kind!=`map`),jsonValue===null)return;if(!Array.isArray(jsonValue))throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);let targetArray=target[localName];for(let jsonItem of jsonValue){if(jsonItem===null)throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`);switch(field.kind){case`message`:targetArray.push(field.T.fromJson(jsonItem,options$1));break;case`enum`:let enumValue=readEnum(field.T,jsonItem,options$1.ignoreUnknownFields,!0);enumValue!==tokenIgnoredUnknownEnum&&targetArray.push(enumValue);break;case`scalar`:try{targetArray.push(readScalar$1(field.T,jsonItem,field.L,!0))}catch(e){let m$2=`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}}else if(field.kind==`map`){if(jsonValue===null)return;if(typeof jsonValue!=`object`||Array.isArray(jsonValue))throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);let targetMap=target[localName];for(let[jsonMapKey,jsonMapValue]of Object.entries(jsonValue)){if(jsonMapValue===null)throw Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: map value null`);let key$1;try{key$1=readMapKey(field.K,jsonMapKey)}catch(e){let m$2=`cannot decode map key for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}switch(field.V.kind){case`message`:targetMap[key$1]=field.V.T.fromJson(jsonMapValue,options$1);break;case`enum`:let enumValue=readEnum(field.V.T,jsonMapValue,options$1.ignoreUnknownFields,!0);enumValue!==tokenIgnoredUnknownEnum&&(targetMap[key$1]=enumValue);break;case`scalar`:try{targetMap[key$1]=readScalar$1(field.V.T,jsonMapValue,LongType.BIGINT,!0)}catch(e){let m$2=`cannot decode map value for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}}else switch(field.oneof&&(target=target[field.oneof.localName]={case:localName},localName=`value`),field.kind){case`message`:let messageType=field.T;if(jsonValue===null&&messageType.typeName!=`google.protobuf.Value`)return;let currentValue=target[localName];isMessage(currentValue)?currentValue.fromJson(jsonValue,options$1):(target[localName]=currentValue=messageType.fromJson(jsonValue,options$1),messageType.fieldWrapper&&!field.oneof&&(target[localName]=messageType.fieldWrapper.unwrapField(currentValue)));break;case`enum`:let enumValue=readEnum(field.T,jsonValue,options$1.ignoreUnknownFields,!1);switch(enumValue){case tokenNull:clearField(field,target);break;case tokenIgnoredUnknownEnum:break;default:target[localName]=enumValue;break}break;case`scalar`:try{let scalarValue=readScalar$1(field.T,jsonValue,field.L,!1);switch(scalarValue){case tokenNull:clearField(field,target);break;default:target[localName]=scalarValue;break}}catch(e){let m$2=`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;throw e instanceof Error&&e.message.length>0&&(m$2+=`: ${e.message}`),Error(m$2)}break}}function readMapKey(type,json$1){if(type===ScalarType.BOOL)switch(json$1){case`true`:json$1=!0;break;case`false`:json$1=!1;break}return readScalar$1(type,json$1,LongType.BIGINT,!0).toString()}function readScalar$1(type,json$1,longType,nullAsZeroValue){if(json$1===null)return nullAsZeroValue?scalarZeroValue(type,longType):tokenNull;switch(type){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(json$1===`NaN`)return NaN;if(json$1===`Infinity`)return 1/0;if(json$1===`-Infinity`)return-1/0;if(json$1===``||typeof json$1==`string`&&json$1.trim().length!==json$1.length||typeof json$1!=`string`&&typeof json$1!=`number`)break;let float=Number(json$1);if(Number.isNaN(float)||!Number.isFinite(float))break;return type==ScalarType.FLOAT&&assertFloat32(float),float;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:let int32;if(typeof json$1==`number`?int32=json$1:typeof json$1==`string`&&json$1.length>0&&json$1.trim().length===json$1.length&&(int32=Number(json$1)),int32===void 0)break;return type==ScalarType.UINT32||type==ScalarType.FIXED32?assertUInt32(int32):assertInt32(int32),int32;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(typeof json$1!=`number`&&typeof json$1!=`string`)break;let long=protoInt64.parse(json$1);return longType?long.toString():long;case ScalarType.FIXED64:case ScalarType.UINT64:if(typeof json$1!=`number`&&typeof json$1!=`string`)break;let uLong=protoInt64.uParse(json$1);return longType?uLong.toString():uLong;case ScalarType.BOOL:if(typeof json$1!=`boolean`)break;return json$1;case ScalarType.STRING:if(typeof json$1!=`string`)break;return json$1;case ScalarType.BYTES:if(json$1===``)return new Uint8Array;if(typeof json$1!=`string`)break;return protoBase64.dec(json$1)}throw Error()}function readEnum(type,json$1,ignoreUnknownFields,nullAsZeroValue){if(json$1===null)return type.typeName==`google.protobuf.NullValue`?0:nullAsZeroValue?type.values[0].no:tokenNull;switch(typeof json$1){case`number`:if(Number.isInteger(json$1))return json$1;break;case`string`:let value=type.findName(json$1);if(value!==void 0)return value.no;if(ignoreUnknownFields)return tokenIgnoredUnknownEnum;break}throw Error(`cannot decode enum ${type.typeName} from JSON: ${debugJsonValue(json$1)}`)}function canEmitFieldDefaultValue(field){return field.repeated||field.kind==`map`?!0:!(field.oneof||field.kind==`message`||field.opt||field.req)}function writeField$1(field,value,options$1){if(field.kind==`map`){assert(typeof value==`object`&&!!value);let jsonObj={},entries=Object.entries(value);switch(field.V.kind){case`scalar`:for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=writeScalar$1(field.V.T,entryValue);break;case`message`:for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=entryValue.toJson(options$1);break;case`enum`:let enumType=field.V.T;for(let[entryKey,entryValue]of entries)jsonObj[entryKey.toString()]=writeEnum(enumType,entryValue,options$1.enumAsInteger);break}return options$1.emitDefaultValues||entries.length>0?jsonObj:void 0}if(field.repeated){assert(Array.isArray(value));let jsonArr=[];switch(field.kind){case`scalar`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(writeScalar$1(field.T,value[i$3]));break;case`enum`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(writeEnum(field.T,value[i$3],options$1.enumAsInteger));break;case`message`:for(let i$3=0;i$3<value.length;i$3++)jsonArr.push(value[i$3].toJson(options$1));break}return options$1.emitDefaultValues||jsonArr.length>0?jsonArr:void 0}switch(field.kind){case`scalar`:return writeScalar$1(field.T,value);case`enum`:return writeEnum(field.T,value,options$1.enumAsInteger);case`message`:return wrapField(field.T,value).toJson(options$1)}}function writeEnum(type,value,enumAsInteger){var _a$1;return assert(typeof value==`number`),type.typeName==`google.protobuf.NullValue`?null:enumAsInteger?value:type.findNumber(value)?.name??value}function writeScalar$1(type,value){switch(type){case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.UINT32:return assert(typeof value==`number`),value;case ScalarType.FLOAT:case ScalarType.DOUBLE:return assert(typeof value==`number`),Number.isNaN(value)?`NaN`:value===1/0?`Infinity`:value===-1/0?`-Infinity`:value;case ScalarType.STRING:return assert(typeof value==`string`),value;case ScalarType.BOOL:return assert(typeof value==`boolean`),value;case ScalarType.UINT64:case ScalarType.FIXED64:case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return assert(typeof value==`bigint`||typeof value==`string`||typeof value==`number`),value.toString();case ScalarType.BYTES:return assert(value instanceof Uint8Array),protoBase64.enc(value)}}var unknownFieldsSymbol=Symbol(`@bufbuild/protobuf/unknown-fields`),readDefaults={readUnknownFields:!0,readerFactory:bytes=>new BinaryReader(bytes)},writeDefaults={writeUnknownFields:!0,writerFactory:()=>new BinaryWriter};function makeReadOptions(options$1){return options$1?Object.assign(Object.assign({},readDefaults),options$1):readDefaults}function makeWriteOptions(options$1){return options$1?Object.assign(Object.assign({},writeDefaults),options$1):writeDefaults}function makeBinaryFormat(){return{makeReadOptions,makeWriteOptions,listUnknownFields(message){var _a$1;return message[unknownFieldsSymbol]??[]},discardUnknownFields(message){delete message[unknownFieldsSymbol]},writeUnknownFields(message,writer){let c=message[unknownFieldsSymbol];if(c)for(let f$2 of c)writer.tag(f$2.no,f$2.wireType).raw(f$2.data)},onUnknownField(message,no,wireType,data){let m$2=message;Array.isArray(m$2[unknownFieldsSymbol])||(m$2[unknownFieldsSymbol]=[]),m$2[unknownFieldsSymbol].push({no,wireType,data})},readMessage(message,reader,lengthOrEndTagFieldNo,options$1,delimitedMessageEncoding){let type=message.getType(),end=delimitedMessageEncoding?reader.len:reader.pos+lengthOrEndTagFieldNo,fieldNo,wireType;for(;reader.pos<end&&([fieldNo,wireType]=reader.tag(),!(delimitedMessageEncoding===!0&&wireType==WireType.EndGroup));){let field=type.fields.find(fieldNo);if(!field){let data=reader.skip(wireType,fieldNo);options$1.readUnknownFields&&this.onUnknownField(message,fieldNo,wireType,data);continue}readField(message,reader,field,wireType,options$1)}if(delimitedMessageEncoding&&(wireType!=WireType.EndGroup||fieldNo!==lengthOrEndTagFieldNo))throw Error(`invalid end group tag`)},readField,writeMessage(message,writer,options$1){let type=message.getType();for(let field of type.fields.byNumber()){if(!isFieldSet(field,message)){if(field.req)throw Error(`cannot encode field ${type.typeName}.${field.name} to binary: required field not set`);continue}writeField(field,field.oneof?message[field.oneof.localName].value:message[field.localName],writer,options$1)}return options$1.writeUnknownFields&&this.writeUnknownFields(message,writer),writer},writeField(field,value,writer,options$1){value!==void 0&&writeField(field,value,writer,options$1)}}}function readField(target,reader,field,wireType,options$1){let{repeated,localName}=field;switch(field.oneof&&(target=target[field.oneof.localName],target.case!=localName&&delete target.value,target.case=localName,localName=`value`),field.kind){case`scalar`:case`enum`:let scalarType=field.kind==`enum`?ScalarType.INT32:field.T,read=readScalar;if(field.kind==`scalar`&&field.L>0&&(read=readScalarLTString),repeated){let arr=target[localName];if(wireType==WireType.LengthDelimited&&scalarType!=ScalarType.STRING&&scalarType!=ScalarType.BYTES){let e=reader.uint32()+reader.pos;for(;reader.pos<e;)arr.push(read(reader,scalarType))}else arr.push(read(reader,scalarType))}else target[localName]=read(reader,scalarType);break;case`message`:let messageType=field.T;repeated?target[localName].push(readMessageField(reader,new messageType,options$1,field)):isMessage(target[localName])?readMessageField(reader,target[localName],options$1,field):(target[localName]=readMessageField(reader,new messageType,options$1,field),messageType.fieldWrapper&&!field.oneof&&!field.repeated&&(target[localName]=messageType.fieldWrapper.unwrapField(target[localName])));break;case`map`:let[mapKey,mapVal]=readMapEntry(field,reader,options$1);target[localName][mapKey]=mapVal;break}}function readMessageField(reader,message,options$1,field){let format=message.getType().runtime.bin,delimited=field?.delimited;return format.readMessage(message,reader,delimited?field.no:reader.uint32(),options$1,delimited),message}function readMapEntry(field,reader,options$1){let length=reader.uint32(),end=reader.pos+length,key$1,val;for(;reader.pos<end;){let[fieldNo]=reader.tag();switch(fieldNo){case 1:key$1=readScalar(reader,field.K);break;case 2:switch(field.V.kind){case`scalar`:val=readScalar(reader,field.V.T);break;case`enum`:val=reader.int32();break;case`message`:val=readMessageField(reader,new field.V.T,options$1,void 0);break}break}}if(key$1===void 0&&(key$1=scalarZeroValue(field.K,LongType.BIGINT)),typeof key$1!=`string`&&typeof key$1!=`number`&&(key$1=key$1.toString()),val===void 0)switch(field.V.kind){case`scalar`:val=scalarZeroValue(field.V.T,LongType.BIGINT);break;case`enum`:val=field.V.T.values[0].no;break;case`message`:val=new field.V.T;break}return[key$1,val]}function readScalarLTString(reader,type){let v$1=readScalar(reader,type);return typeof v$1==`bigint`?v$1.toString():v$1}function readScalar(reader,type){switch(type){case ScalarType.STRING:return reader.string();case ScalarType.BOOL:return reader.bool();case ScalarType.DOUBLE:return reader.double();case ScalarType.FLOAT:return reader.float();case ScalarType.INT32:return reader.int32();case ScalarType.INT64:return reader.int64();case ScalarType.UINT64:return reader.uint64();case ScalarType.FIXED64:return reader.fixed64();case ScalarType.BYTES:return reader.bytes();case ScalarType.FIXED32:return reader.fixed32();case ScalarType.SFIXED32:return reader.sfixed32();case ScalarType.SFIXED64:return reader.sfixed64();case ScalarType.SINT64:return reader.sint64();case ScalarType.UINT32:return reader.uint32();case ScalarType.SINT32:return reader.sint32()}}function writeField(field,value,writer,options$1){assert(value!==void 0);let repeated=field.repeated;switch(field.kind){case`scalar`:case`enum`:let scalarType=field.kind==`enum`?ScalarType.INT32:field.T;if(repeated)if(assert(Array.isArray(value)),field.packed)writePacked(writer,scalarType,field.no,value);else for(let item of value)writeScalar(writer,scalarType,field.no,item);else writeScalar(writer,scalarType,field.no,value);break;case`message`:if(repeated){assert(Array.isArray(value));for(let item of value)writeMessageField(writer,options$1,field,item)}else writeMessageField(writer,options$1,field,value);break;case`map`:assert(typeof value==`object`&&!!value);for(let[key$1,val]of Object.entries(value))writeMapEntry(writer,options$1,field,key$1,val);break}}function writeMapEntry(writer,options$1,field,key$1,value){writer.tag(field.no,WireType.LengthDelimited),writer.fork();let keyValue=key$1;switch(field.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:keyValue=Number.parseInt(key$1);break;case ScalarType.BOOL:assert(key$1==`true`||key$1==`false`),keyValue=key$1==`true`;break}switch(writeScalar(writer,field.K,1,keyValue),field.V.kind){case`scalar`:writeScalar(writer,field.V.T,2,value);break;case`enum`:writeScalar(writer,ScalarType.INT32,2,value);break;case`message`:assert(value!==void 0),writer.tag(2,WireType.LengthDelimited).bytes(value.toBinary(options$1));break}writer.join()}function writeMessageField(writer,options$1,field,value){let message=wrapField(field.T,value);field.delimited?writer.tag(field.no,WireType.StartGroup).raw(message.toBinary(options$1)).tag(field.no,WireType.EndGroup):writer.tag(field.no,WireType.LengthDelimited).bytes(message.toBinary(options$1))}function writeScalar(writer,type,fieldNo,value){assert(value!==void 0);let[wireType,method]=scalarTypeInfo(type);writer.tag(fieldNo,wireType)[method](value)}function writePacked(writer,type,fieldNo,value){if(!value.length)return;writer.tag(fieldNo,WireType.LengthDelimited).fork();let[,method]=scalarTypeInfo(type);for(let i$3=0;i$3<value.length;i$3++)writer[method](value[i$3]);writer.join()}function scalarTypeInfo(type){let wireType=WireType.Varint;switch(type){case ScalarType.BYTES:case ScalarType.STRING:wireType=WireType.LengthDelimited;break;case ScalarType.DOUBLE:case ScalarType.FIXED64:case ScalarType.SFIXED64:wireType=WireType.Bit64;break;case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.FLOAT:wireType=WireType.Bit32;break}let method=ScalarType[type].toLowerCase();return[wireType,method]}function makeUtilCommon(){return{setEnumType,initPartial(source,target){if(source===void 0)return;let type=target.getType();for(let member of type.fields.byMember()){let localName=member.localName,t$1=target,s$1=source;if(s$1[localName]!=null)switch(member.kind){case`oneof`:let sk=s$1[localName].case;if(sk===void 0)continue;let sourceField=member.findField(sk),val=s$1[localName].value;sourceField&&sourceField.kind==`message`&&!isMessage(val,sourceField.T)?val=new sourceField.T(val):sourceField&&sourceField.kind===`scalar`&&sourceField.T===ScalarType.BYTES&&(val=toU8Arr(val)),t$1[localName]={case:sk,value:val};break;case`scalar`:case`enum`:let copy=s$1[localName];member.T===ScalarType.BYTES&&(copy=member.repeated?copy.map(toU8Arr):toU8Arr(copy)),t$1[localName]=copy;break;case`map`:switch(member.V.kind){case`scalar`:case`enum`:if(member.V.T===ScalarType.BYTES)for(let[k$2,v$1]of Object.entries(s$1[localName]))t$1[localName][k$2]=toU8Arr(v$1);else Object.assign(t$1[localName],s$1[localName]);break;case`message`:let messageType=member.V.T;for(let k$2 of Object.keys(s$1[localName])){let val$1=s$1[localName][k$2];messageType.fieldWrapper||(val$1=new messageType(val$1)),t$1[localName][k$2]=val$1}break}break;case`message`:let mt=member.T;if(member.repeated)t$1[localName]=s$1[localName].map(val$1=>isMessage(val$1,mt)?val$1:new mt(val$1));else{let val$1=s$1[localName];mt.fieldWrapper?mt.typeName===`google.protobuf.BytesValue`?t$1[localName]=toU8Arr(val$1):t$1[localName]=val$1:t$1[localName]=isMessage(val$1,mt)?val$1:new mt(val$1)}break}}},equals(type,a$1,b$2){return a$1===b$2?!0:!a$1||!b$2?!1:type.fields.byMember().every(m$2=>{let va=a$1[m$2.localName],vb=b$2[m$2.localName];if(m$2.repeated){if(va.length!==vb.length)return!1;switch(m$2.kind){case`message`:return va.every((a$2,i$3)=>m$2.T.equals(a$2,vb[i$3]));case`scalar`:return va.every((a$2,i$3)=>scalarEquals(m$2.T,a$2,vb[i$3]));case`enum`:return va.every((a$2,i$3)=>scalarEquals(ScalarType.INT32,a$2,vb[i$3]))}throw Error(`repeated cannot contain ${m$2.kind}`)}switch(m$2.kind){case`message`:let a$2=va,b$3=vb;return m$2.T.fieldWrapper&&(a$2!==void 0&&!isMessage(a$2)&&(a$2=m$2.T.fieldWrapper.wrapField(a$2)),b$3!==void 0&&!isMessage(b$3)&&(b$3=m$2.T.fieldWrapper.wrapField(b$3))),m$2.T.equals(a$2,b$3);case`enum`:return scalarEquals(ScalarType.INT32,va,vb);case`scalar`:return scalarEquals(m$2.T,va,vb);case`oneof`:if(va.case!==vb.case)return!1;let s$1=m$2.findField(va.case);if(s$1===void 0)return!0;switch(s$1.kind){case`message`:return s$1.T.equals(va.value,vb.value);case`enum`:return scalarEquals(ScalarType.INT32,va.value,vb.value);case`scalar`:return scalarEquals(s$1.T,va.value,vb.value)}throw Error(`oneof cannot contain ${s$1.kind}`);case`map`:let keys$1=Object.keys(va).concat(Object.keys(vb));switch(m$2.V.kind){case`message`:let messageType=m$2.V.T;return keys$1.every(k$2=>messageType.equals(va[k$2],vb[k$2]));case`enum`:return keys$1.every(k$2=>scalarEquals(ScalarType.INT32,va[k$2],vb[k$2]));case`scalar`:let scalarType=m$2.V.T;return keys$1.every(k$2=>scalarEquals(scalarType,va[k$2],vb[k$2]))}break}})},clone(message){let type=message.getType(),target=new type,any=target;for(let member of type.fields.byMember()){let source=message[member.localName],copy;if(member.repeated)copy=source.map(cloneSingularField);else if(member.kind==`map`){copy=any[member.localName];for(let[key$1,v$1]of Object.entries(source))copy[key$1]=cloneSingularField(v$1)}else copy=member.kind==`oneof`?member.findField(source.case)?{case:source.case,value:cloneSingularField(source.value)}:{case:void 0}:cloneSingularField(source);any[member.localName]=copy}for(let uf of type.runtime.bin.listUnknownFields(message))type.runtime.bin.onUnknownField(any,uf.no,uf.wireType,uf.data);return target}}}function cloneSingularField(value){if(value===void 0)return value;if(isMessage(value))return value.clone();if(value instanceof Uint8Array){let c=new Uint8Array(value.byteLength);return c.set(value),c}return value}function toU8Arr(input){return input instanceof Uint8Array?input:new Uint8Array(input)}function makeProtoRuntime(syntax,newFieldList,initFields){return{syntax,json:makeJsonFormat(),bin:makeBinaryFormat(),util:Object.assign(Object.assign({},makeUtilCommon()),{newFieldList,initFields}),makeMessageType(typeName$1,fields,opt){return makeMessageType(this,typeName$1,fields,opt)},makeEnum,makeEnumType,getEnumType,makeExtension(typeName$1,extendee,field){return makeExtension(this,typeName$1,extendee,field)}}}var InternalFieldList=class{constructor(fields,normalizer){this._fields=fields,this._normalizer=normalizer}findJsonName(jsonName){if(!this.jsonNames){let t$1={};for(let f$2 of this.list())t$1[f$2.jsonName]=t$1[f$2.name]=f$2;this.jsonNames=t$1}return this.jsonNames[jsonName]}find(fieldNo){if(!this.numbers){let t$1={};for(let f$2 of this.list())t$1[f$2.no]=f$2;this.numbers=t$1}return this.numbers[fieldNo]}list(){return this.all||=this._normalizer(this._fields),this.all}byNumber(){return this.numbersAsc||=this.list().concat().sort((a$1,b$2)=>a$1.no-b$2.no),this.numbersAsc}byMember(){if(!this.members){this.members=[];let a$1=this.members,o$2;for(let f$2 of this.list())f$2.oneof?f$2.oneof!==o$2&&(o$2=f$2.oneof,a$1.push(o$2)):a$1.push(f$2)}return this.members}};function localFieldName(protoName,inOneof){let name$2=protoCamelCase(protoName);return inOneof?name$2:safeObjectProperty(safeMessageProperty(name$2))}function localOneofName(protoName){return localFieldName(protoName,!1)}const fieldJsonName=protoCamelCase;function protoCamelCase(snakeCase){let capNext=!1,b$2=[];for(let i$3=0;i$3<snakeCase.length;i$3++){let c=snakeCase.charAt(i$3);switch(c){case`_`:capNext=!0;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:b$2.push(c),capNext=!1;break;default:capNext&&(capNext=!1,c=c.toUpperCase()),b$2.push(c);break}}return b$2.join(``)}var reservedObjectProperties=new Set([`constructor`,`toString`,`toJSON`,`valueOf`]),reservedMessageProperties=new Set([`getType`,`clone`,`equals`,`fromBinary`,`fromJson`,`fromJsonString`,`toBinary`,`toJson`,`toJsonString`,`toObject`]),fallback=name$2=>`${name$2}$`,safeMessageProperty=name$2=>reservedMessageProperties.has(name$2)?fallback(name$2):name$2;const safeObjectProperty=name$2=>reservedObjectProperties.has(name$2)?fallback(name$2):name$2;var InternalOneofInfo=class{constructor(name$2){this.kind=`oneof`,this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=name$2,this.localName=localOneofName(name$2)}addField(field){assert(field.oneof===this,`field ${field.name} not one of ${this.name}`),this.fields.push(field)}findField(localName){if(!this._lookup){this._lookup=Object.create(null);for(let i$3=0;i$3<this.fields.length;i$3++)this._lookup[this.fields[i$3].localName]=this.fields[i$3]}return this._lookup[localName]}};function normalizeFieldInfos(fieldInfos,packedByDefault){var _a$1,_b,_c,_d,_e,_f;let r$4=[],o$2;for(let field of typeof fieldInfos==`function`?fieldInfos():fieldInfos){let f$2=field;if(f$2.localName=localFieldName(field.name,field.oneof!==void 0),f$2.jsonName=field.jsonName??fieldJsonName(field.name),f$2.repeated=field.repeated??!1,field.kind==`scalar`&&(f$2.L=field.L??LongType.BIGINT),f$2.delimited=field.delimited??!1,f$2.req=field.req??!1,f$2.opt=field.opt??!1,field.packed===void 0&&(packedByDefault?f$2.packed=field.kind==`enum`||field.kind==`scalar`&&field.T!=ScalarType.BYTES&&field.T!=ScalarType.STRING:f$2.packed=!1),field.oneof!==void 0){let ooname=typeof field.oneof==`string`?field.oneof:field.oneof.name;(!o$2||o$2.name!=ooname)&&(o$2=new InternalOneofInfo(ooname)),f$2.oneof=o$2,o$2.addField(f$2)}r$4.push(f$2)}return r$4}const proto3=makeProtoRuntime(`proto3`,fields=>new InternalFieldList(fields,source=>normalizeFieldInfos(source,!0)),target=>{for(let member of target.getType().fields.byMember()){if(member.opt)continue;let name$2=member.localName,t$1=target;if(member.repeated){t$1[name$2]=[];continue}switch(member.kind){case`oneof`:t$1[name$2]={case:void 0};break;case`enum`:t$1[name$2]=0;break;case`map`:t$1[name$2]={};break;case`scalar`:t$1[name$2]=scalarZeroValue(member.T,member.L);break;case`message`:break}}});var MethodKind;(function(MethodKind$1){MethodKind$1[MethodKind$1.Unary=0]=`Unary`,MethodKind$1[MethodKind$1.ServerStreaming=1]=`ServerStreaming`,MethodKind$1[MethodKind$1.ClientStreaming=2]=`ClientStreaming`,MethodKind$1[MethodKind$1.BiDiStreaming=3]=`BiDiStreaming`})(MethodKind||={});var MethodIdempotency;(function(MethodIdempotency$1){MethodIdempotency$1[MethodIdempotency$1.NoSideEffects=1]=`NoSideEffects`,MethodIdempotency$1[MethodIdempotency$1.Idempotent=2]=`Idempotent`})(MethodIdempotency||={});var Code$1;(function(Code$2){Code$2[Code$2.Canceled=1]=`Canceled`,Code$2[Code$2.Unknown=2]=`Unknown`,Code$2[Code$2.InvalidArgument=3]=`InvalidArgument`,Code$2[Code$2.DeadlineExceeded=4]=`DeadlineExceeded`,Code$2[Code$2.NotFound=5]=`NotFound`,Code$2[Code$2.AlreadyExists=6]=`AlreadyExists`,Code$2[Code$2.PermissionDenied=7]=`PermissionDenied`,Code$2[Code$2.ResourceExhausted=8]=`ResourceExhausted`,Code$2[Code$2.FailedPrecondition=9]=`FailedPrecondition`,Code$2[Code$2.Aborted=10]=`Aborted`,Code$2[Code$2.OutOfRange=11]=`OutOfRange`,Code$2[Code$2.Unimplemented=12]=`Unimplemented`,Code$2[Code$2.Internal=13]=`Internal`,Code$2[Code$2.Unavailable=14]=`Unavailable`,Code$2[Code$2.DataLoss=15]=`DataLoss`,Code$2[Code$2.Unauthenticated=16]=`Unauthenticated`})(Code$1||={});function codeToString(value){let name$2=Code$1[value];return typeof name$2==`string`?name$2[0].toLowerCase()+name$2.substring(1).replace(/[A-Z]/g,c=>`_`+c.toLowerCase()):value.toString()}var stringToCode;function codeFromString(value){if(!stringToCode){stringToCode={};for(let value$1 of Object.values(Code$1))typeof value$1!=`string`&&(stringToCode[codeToString(value$1)]=value$1)}return stringToCode[value]}var ConnectError=class ConnectError extends Error{constructor(message,code$2=Code$1.Unknown,metadata,outgoingDetails,cause){super(createMessage(message,code$2)),this.name=`ConnectError`,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=message,this.code=code$2,this.metadata=new Headers(metadata??{}),this.details=outgoingDetails??[],this.cause=cause}static from(reason,code$2=Code$1.Unknown){return reason instanceof ConnectError?reason:reason instanceof Error?reason.name==`AbortError`?new ConnectError(reason.message,Code$1.Canceled):new ConnectError(reason.message,code$2,void 0,void 0,reason):new ConnectError(String(reason),code$2,void 0,void 0,reason)}static[Symbol.hasInstance](v$1){return v$1 instanceof Error?Object.getPrototypeOf(v$1)===ConnectError.prototype?!0:v$1.name===`ConnectError`&&`code`in v$1&&typeof v$1.code==`number`&&`metadata`in v$1&&`details`in v$1&&Array.isArray(v$1.details)&&`rawMessage`in v$1&&typeof v$1.rawMessage==`string`&&`cause`in v$1:!1}findDetails(typeOrRegistry){let registry=`typeName`in typeOrRegistry?{findMessage:typeName$1=>typeName$1===typeOrRegistry.typeName?typeOrRegistry:void 0}:typeOrRegistry,details=[];for(let data of this.details){if(`getType`in data){registry.findMessage(data.getType().typeName)&&details.push(data);continue}let type=registry.findMessage(data.type);if(type)try{details.push(type.fromBinary(data.value))}catch{}}return details}};function createMessage(message,code$2){return message.length?`[${codeToString(code$2)}] ${message}`:`[${codeToString(code$2)}]`}function appendHeaders(...headers){let h$1=new Headers;for(let e of headers)e.forEach((value,key$1)=>{h$1.append(key$1,value)});return h$1}function makeAnyClient(service,createMethod){let client={};for(let[localName,methodInfo]of Object.entries(service.methods)){let method=createMethod(Object.assign(Object.assign({},methodInfo),{localName,service}));method!=null&&(client[localName]=method)}return client}const compressedFlag=1;function createEnvelopeReadableStream(stream){let reader,buffer=new Uint8Array;function append(chunk){let n=new Uint8Array(buffer.length+chunk.length);n.set(buffer),n.set(chunk,buffer.length),buffer=n}return new ReadableStream({start(){reader=stream.getReader()},async pull(controller){let header;for(;;){if(header===void 0&&buffer.byteLength>=5){let length=0;for(let i$3=1;i$3<5;i$3++)length=(length<<8)+buffer[i$3];header={flags:buffer[0],length}}if(header!==void 0&&buffer.byteLength>=header.length+5)break;let result=await reader.read();if(result.done)break;append(result.value)}if(header===void 0){if(buffer.byteLength==0){controller.close();return}controller.error(new ConnectError(`premature end of stream`,Code$1.DataLoss));return}let data=buffer.subarray(5,5+header.length);buffer=buffer.subarray(5+header.length),controller.enqueue({flags:header.flags,data})}})}function encodeEnvelope(flags,data){let bytes=new Uint8Array(data.length+5);bytes.set(data,5);let v$1=new DataView(bytes.buffer,bytes.byteOffset,bytes.byteLength);return v$1.setUint8(0,flags),v$1.setUint32(1,data.length),bytes}var __asyncValues$1=function(o$2){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var m$2=o$2[Symbol.asyncIterator],i$3;return m$2?m$2.call(o$2):(o$2=typeof __values==`function`?__values(o$2):o$2[Symbol.iterator](),i$3={},verb(`next`),verb(`throw`),verb(`return`),i$3[Symbol.asyncIterator]=function(){return this},i$3);function verb(n){i$3[n]=o$2[n]&&function(v$1){return new Promise(function(resolve,reject){v$1=o$2[n](v$1),settle(resolve,reject,v$1.done,v$1.value)})}}function settle(resolve,reject,d$1,v$1){Promise.resolve(v$1).then(function(v$2){resolve({value:v$2,done:d$1})},reject)}},__await$2=function(v$1){return this instanceof __await$2?(this.v=v$1,this):new __await$2(v$1)},__asyncGenerator$2=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await$2?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}},__asyncDelegator$1=function(o$2){var i$3,p$1;return i$3={},verb(`next`),verb(`throw`,function(e){throw e}),verb(`return`),i$3[Symbol.iterator]=function(){return this},i$3;function verb(n,f$2){i$3[n]=o$2[n]?function(v$1){return(p$1=!p$1)?{value:__await$2(o$2[n](v$1)),done:!1}:f$2?f$2(v$1):v$1}:f$2}};function createAsyncIterable(items){return __asyncGenerator$2(this,arguments,function*(){yield __await$2(yield*__asyncDelegator$1(__asyncValues$1(items)))})}var __asyncValues=function(o$2){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var m$2=o$2[Symbol.asyncIterator],i$3;return m$2?m$2.call(o$2):(o$2=typeof __values==`function`?__values(o$2):o$2[Symbol.iterator](),i$3={},verb(`next`),verb(`throw`),verb(`return`),i$3[Symbol.asyncIterator]=function(){return this},i$3);function verb(n){i$3[n]=o$2[n]&&function(v$1){return new Promise(function(resolve,reject){v$1=o$2[n](v$1),settle(resolve,reject,v$1.done,v$1.value)})}}function settle(resolve,reject,d$1,v$1){Promise.resolve(v$1).then(function(v$2){resolve({value:v$2,done:d$1})},reject)}},__await$1=function(v$1){return this instanceof __await$1?(this.v=v$1,this):new __await$1(v$1)},__asyncDelegator=function(o$2){var i$3,p$1;return i$3={},verb(`next`),verb(`throw`,function(e){throw e}),verb(`return`),i$3[Symbol.iterator]=function(){return this},i$3;function verb(n,f$2){i$3[n]=o$2[n]?function(v$1){return(p$1=!p$1)?{value:__await$1(o$2[n](v$1)),done:!1}:f$2?f$2(v$1):v$1}:f$2}},__asyncGenerator$1=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await$1?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}};function createClient(service,transport$1){return makeAnyClient(service,method=>{switch(method.kind){case MethodKind.Unary:return createUnaryFn(transport$1,service,method);case MethodKind.ServerStreaming:return createServerStreamingFn(transport$1,service,method);case MethodKind.ClientStreaming:return createClientStreamingFn(transport$1,service,method);case MethodKind.BiDiStreaming:return createBiDiStreamingFn(transport$1,service,method);default:return null}})}function createPromiseClient(service,transport$1){return createClient(service,transport$1)}function createUnaryFn(transport$1,service,method){return async function(input,options$1){var _a$1,_b;let response=await transport$1.unary(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,input,options$1?.contextValues);return(_a$1=options$1?.onHeader)==null||_a$1.call(options$1,response.header),(_b=options$1?.onTrailer)==null||_b.call(options$1,response.trailer),response.message}}function createServerStreamingFn(transport$1,service,method){return function(input,options$1){return handleStreamResponse(transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,createAsyncIterable([input]),options$1?.contextValues),options$1)}}function createClientStreamingFn(transport$1,service,method){return async function(request,options$1){var _a$1,e_1,_b,_c,_d,_e;let response=await transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,request,options$1?.contextValues);(_d=options$1?.onHeader)==null||_d.call(options$1,response.header);let singleMessage,count=0;try{for(var _f=!0,_g=__asyncValues(response.message),_h;_h=await _g.next(),_a$1=_h.done,!_a$1;_f=!0)_c=_h.value,_f=!1,singleMessage=_c,count++}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_f&&!_a$1&&(_b=_g.return)&&await _b.call(_g)}finally{if(e_1)throw e_1.error}}if(!singleMessage)throw new ConnectError(`protocol error: missing response message`,Code$1.Unimplemented);if(count>1)throw new ConnectError(`protocol error: received extra messages for client streaming method`,Code$1.Unimplemented);return(_e=options$1?.onTrailer)==null||_e.call(options$1,response.trailer),singleMessage}}function createBiDiStreamingFn(transport$1,service,method){return function(request,options$1){return handleStreamResponse(transport$1.stream(service,method,options$1?.signal,options$1?.timeoutMs,options$1?.headers,request,options$1?.contextValues),options$1)}}function handleStreamResponse(stream,options$1){let it=(function(){return __asyncGenerator$1(this,arguments,function*(){var _a$1,_b;let response=yield __await$1(stream);(_a$1=options$1?.onHeader)==null||_a$1.call(options$1,response.header),yield __await$1(yield*__asyncDelegator(__asyncValues(response.message))),(_b=options$1?.onTrailer)==null||_b.call(options$1,response.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>it.next()})}}function createLinkedAbortController(...signals){let controller=new AbortController,sa=signals.filter(s$1=>s$1!==void 0).concat(controller.signal);for(let signal of sa){if(signal.aborted){onAbort.apply(signal);break}signal.addEventListener(`abort`,onAbort)}function onAbort(){controller.signal.aborted||controller.abort(getAbortSignalReason(this));for(let signal of sa)signal.removeEventListener(`abort`,onAbort)}return controller}function createDeadlineSignal(timeoutMs){let controller=new AbortController,listener=()=>{controller.abort(new ConnectError(`the operation timed out`,Code$1.DeadlineExceeded))},timeoutId;return timeoutMs!==void 0&&(timeoutMs<=0?listener():timeoutId=setTimeout(listener,timeoutMs)),{signal:controller.signal,cleanup:()=>clearTimeout(timeoutId)}}function getAbortSignalReason(signal){if(!signal.aborted)return;if(signal.reason!==void 0)return signal.reason;let e=Error(`This operation was aborted`);return e.name=`AbortError`,e}function createContextValues(){return{get(key$1){return key$1.id in this?this[key$1.id]:key$1.defaultValue},set(key$1,value){return this[key$1.id]=value,this},delete(key$1){return delete this[key$1.id],this}}}function createMethodUrl(baseUrl,service,method){let s$1=typeof service==`string`?service:service.typeName,m$2=typeof method==`string`?method:method.name;return baseUrl.toString().replace(/\/?$/,`/${s$1}/${m$2}`)}function normalize$3(type,message){return message instanceof type?message:new type(message)}function normalizeIterable(messageType,input){function transform$1(result){return result.done===!0?result:{done:result.done,value:normalize$3(messageType,result.value)}}return{[Symbol.asyncIterator](){let it=input[Symbol.asyncIterator](),res={next:()=>it.next().then(transform$1)};return it.throw!==void 0&&(res.throw=e=>it.throw(e).then(transform$1)),it.return!==void 0&&(res.return=v$1=>it.return(v$1).then(transform$1)),res}}}function applyInterceptors(next,interceptors){var _a$1;return interceptors?.concat().reverse().reduce((n,i$3)=>i$3(n),next)??next}function getJsonOptions(options$1){var _a$1;let o$2=Object.assign({},options$1);return o$2.ignoreUnknownFields??=!0,o$2}function createClientMethodSerializers(method,useBinaryFormat,jsonOptions,binaryOptions){let input=useBinaryFormat?createBinarySerialization(method.I,binaryOptions):createJsonSerialization(method.I,jsonOptions);return{parse:(useBinaryFormat?createBinarySerialization(method.O,binaryOptions):createJsonSerialization(method.O,jsonOptions)).parse,serialize:input.serialize}}function createBinarySerialization(messageType,options$1){return{parse(data){try{return messageType.fromBinary(data,options$1)}catch(e){throw new ConnectError(`parse binary: ${e instanceof Error?e.message:String(e)}`,Code$1.Internal)}},serialize(data){try{return data.toBinary(options$1)}catch(e){throw new ConnectError(`serialize binary: ${e instanceof Error?e.message:String(e)}`,Code$1.Internal)}}}}function createJsonSerialization(messageType,options$1){var _a$1,_b;let textEncoder=options$1?.textEncoder??new TextEncoder,textDecoder=options$1?.textDecoder??new TextDecoder,o$2=getJsonOptions(options$1);return{parse(data){try{let json$1=textDecoder.decode(data);return messageType.fromJsonString(json$1,o$2)}catch(e){throw ConnectError.from(e,Code$1.InvalidArgument)}},serialize(data){try{let json$1=data.toJsonString(o$2);return textEncoder.encode(json$1)}catch(e){throw ConnectError.from(e,Code$1.Internal)}}}}const contentTypeRegExp=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i,contentTypeUnaryProto=`application/proto`,contentTypeUnaryJson=`application/json`,contentTypeStreamProto=`application/connect+proto`,contentTypeStreamJson=`application/connect+json`;function parseContentType(contentType){let match=contentType?.match(contentTypeRegExp);if(match)return{stream:!!match[1],binary:!!match[3]}}var __rest=function(s$1,e){var t$1={};for(var p$1 in s$1)Object.prototype.hasOwnProperty.call(s$1,p$1)&&e.indexOf(p$1)<0&&(t$1[p$1]=s$1[p$1]);if(s$1!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i$3=0,p$1=Object.getOwnPropertySymbols(s$1);i$3<p$1.length;i$3++)e.indexOf(p$1[i$3])<0&&Object.prototype.propertyIsEnumerable.call(s$1,p$1[i$3])&&(t$1[p$1[i$3]]=s$1[p$1[i$3]]);return t$1};function errorFromJson(jsonValue,metadata,fallback$1){var _a$1;if(metadata&&new Headers(metadata).forEach((value,key$1)=>fallback$1.metadata.append(key$1,value)),typeof jsonValue!=`object`||!jsonValue||Array.isArray(jsonValue))throw fallback$1;let code$2=fallback$1.code;`code`in jsonValue&&typeof jsonValue.code==`string`&&(code$2=codeFromString(jsonValue.code)??code$2);let message=jsonValue.message;if(message!=null&&typeof message!=`string`)throw fallback$1;let error=new ConnectError(message??``,code$2,metadata);if(`details`in jsonValue&&Array.isArray(jsonValue.details))for(let detail of jsonValue.details){if(typeof detail!=`object`||!detail||Array.isArray(detail)||typeof detail.type!=`string`||typeof detail.value!=`string`)throw fallback$1;try{error.details.push({type:detail.type,value:protoBase64.dec(detail.value),debug:detail.debug})}catch{throw fallback$1}}return error}const endStreamFlag=2;function endStreamFromJson(data){let parseErr=new ConnectError(`invalid end stream`,Code$1.Unknown),jsonValue;try{jsonValue=JSON.parse(typeof data==`string`?data:new TextDecoder().decode(data))}catch{throw parseErr}if(typeof jsonValue!=`object`||!jsonValue||Array.isArray(jsonValue))throw parseErr;let metadata=new Headers;if(`metadata`in jsonValue){if(typeof jsonValue.metadata!=`object`||jsonValue.metadata==null||Array.isArray(jsonValue.metadata))throw parseErr;for(let[key$1,values]of Object.entries(jsonValue.metadata)){if(!Array.isArray(values)||values.some(value=>typeof value!=`string`))throw parseErr;for(let value of values)metadata.append(key$1,value)}}return{metadata,error:`error`in jsonValue&&jsonValue.error!=null?errorFromJson(jsonValue.error,metadata,parseErr):void 0}}const headerContentType=`Content-Type`,headerUnaryContentLength=`Content-Length`,headerUnaryEncoding=`Content-Encoding`,headerUnaryAcceptEncoding=`Accept-Encoding`,headerTimeout=`Connect-Timeout-Ms`,headerProtocolVersion=`Connect-Protocol-Version`,headerUserAgent=`User-Agent`;function codeFromHttpStatus(httpStatus){switch(httpStatus){case 400:return Code$1.Internal;case 401:return Code$1.Unauthenticated;case 403:return Code$1.PermissionDenied;case 404:return Code$1.Unimplemented;case 429:return Code$1.Unavailable;case 502:return Code$1.Unavailable;case 503:return Code$1.Unavailable;case 504:return Code$1.Unavailable;default:return Code$1.Unknown}}function trailerDemux(header){let h$1=new Headers,t$1=new Headers;return header.forEach((value,key$1)=>{key$1.toLowerCase().startsWith(`trailer-`)?t$1.append(key$1.substring(8),value):h$1.append(key$1,value)}),[h$1,t$1]}const protocolVersion=`1`;function requestHeader(methodKind,useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent){let result=new Headers(userProvidedHeaders??{});return timeoutMs!==void 0&&result.set(`Connect-Timeout-Ms`,`${timeoutMs}`),result.set(headerContentType,methodKind==MethodKind.Unary?useBinaryFormat?`application/proto`:`application/json`:useBinaryFormat?`application/connect+proto`:`application/connect+json`),result.set(headerProtocolVersion,`1`),setUserAgent&&!result.has(`User-Agent`)&&result.set(`User-Agent`,`connect-es/1.7.0`),result}function validateResponse(methodKind,useBinaryFormat,status,headers){let mimeType=headers.get(headerContentType),parsedType=parseContentType(mimeType);if(status!==200){let errorFromStatus=new ConnectError(`HTTP ${status}`,codeFromHttpStatus(status),headers);if(methodKind==MethodKind.Unary&&parsedType&&!parsedType.binary)return{isUnaryError:!0,unaryError:errorFromStatus};throw errorFromStatus}let allowedContentType={binary:useBinaryFormat,stream:methodKind!==MethodKind.Unary};if(parsedType?.binary!==allowedContentType.binary||parsedType.stream!==allowedContentType.stream)throw new ConnectError(`unsupported content type ${mimeType}`,parsedType===void 0?Code$1.Unknown:Code$1.Internal,headers);return{isUnaryError:!1}}var contentTypePrefix=`application/`;function encodeMessageForUrl(message,useBase64){return useBase64?protoBase64.enc(message).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``):encodeURIComponent(new TextDecoder().decode(message))}function transformConnectPostToGetRequest(request,message,useBase64){let query=`?connect=v1`,contentType=request.header.get(headerContentType);contentType?.indexOf(contentTypePrefix)===0&&(query+=`&encoding=`+encodeURIComponent(contentType.slice(12)));let compression=request.header.get(headerUnaryEncoding);compression!==null&&compression!==`identity`&&(query+=`&compression=`+encodeURIComponent(compression),useBase64=!0),useBase64&&(query+=`&base64=1`),query+=`&message=`+encodeMessageForUrl(message,useBase64);let url=request.url+query,header=new Headers(request.header);return[headerProtocolVersion,headerContentType,`Content-Length`,headerUnaryEncoding,`Accept-Encoding`].forEach(h$1=>header.delete(h$1)),Object.assign(Object.assign({},request),{init:Object.assign(Object.assign({},request.init),{method:`GET`}),url,header})}function runUnaryCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt);return next(Object.assign(Object.assign({},opt.req),{message:normalize$3(opt.req.method.I,opt.req.message),signal})).then(res=>(done(),res),abort)}function runStreamingCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalizeIterable(opt.req.method.I,opt.req.message),signal}),doneCalled=!1;return signal.addEventListener(`abort`,function(){var _a$1,_b;let it=opt.req.message[Symbol.asyncIterator]();doneCalled||(_a$1=it.throw)==null||_a$1.call(it,this.reason).catch(()=>{}),(_b=it.return)==null||_b.call(it).catch(()=>{})}),next(req).then(res=>Object.assign(Object.assign({},res),{message:{[Symbol.asyncIterator](){let it=res.message[Symbol.asyncIterator]();return{next(){return it.next().then(r$4=>(r$4.done==1&&(doneCalled=!0,done()),r$4),abort)}}}}}),abort)}function setupSignal(opt){let{signal,cleanup}=createDeadlineSignal(opt.timeoutMs),controller=createLinkedAbortController(opt.signal,signal);return[controller.signal,function(reason){let e=ConnectError.from(signal.aborted?getAbortSignalReason(signal):reason);return controller.abort(e),cleanup(),Promise.reject(e)},function(){cleanup(),controller.abort()}]}function assertFetchApi(){try{new Headers}catch{throw Error(`connect-web requires the fetch API. Are you running on an old version of Node.js? Node.js is not supported in Connect for Web - please stay tuned for Connect for Node.`)}}var __await=function(v$1){return this instanceof __await?(this.v=v$1,this):new __await(v$1)},__asyncGenerator=function(thisArg,_arguments,generator$1){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var g=generator$1.apply(thisArg,_arguments||[]),i$3,q$1=[];return i$3={},verb(`next`),verb(`throw`),verb(`return`,awaitReturn),i$3[Symbol.asyncIterator]=function(){return this},i$3;function awaitReturn(f$2){return function(v$1){return Promise.resolve(v$1).then(f$2,reject)}}function verb(n,f$2){g[n]&&(i$3[n]=function(v$1){return new Promise(function(a$1,b$2){q$1.push([n,v$1,a$1,b$2])>1||resume(n,v$1)})},f$2&&(i$3[n]=f$2(i$3[n])))}function resume(n,v$1){try{step(g[n](v$1))}catch(e){settle(q$1[0][3],e)}}function step(r$4){r$4.value instanceof __await?Promise.resolve(r$4.value.v).then(fulfill,reject):settle(q$1[0][2],r$4)}function fulfill(value){resume(`next`,value)}function reject(value){resume(`throw`,value)}function settle(f$2,v$1){f$2(v$1),q$1.shift(),q$1.length&&resume(q$1[0][0],q$1[0][1])}};function createConnectTransport(options$1){var _a$1;assertFetchApi();let useBinaryFormat=options$1.useBinaryFormat??!1;return{async unary(service,method,signal,timeoutMs,header,message,contextValues){var _a$2;let{serialize:serialize$1,parse:parse$2}=createClientMethodSerializers(method,useBinaryFormat,options$1.jsonOptions,options$1.binaryOptions);return timeoutMs=timeoutMs===void 0?options$1.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:options$1.interceptors,signal,timeoutMs,req:{stream:!1,service,method,url:createMethodUrl(options$1.baseUrl,service,method),init:{method:`POST`,credentials:options$1.credentials??`same-origin`,redirect:`error`,mode:`cors`},header:requestHeader(method.kind,useBinaryFormat,timeoutMs,header,!1),contextValues:contextValues??createContextValues(),message},next:async req=>{var _a$3;let useGet=options$1.useHttpGet===!0&&method.idempotency===MethodIdempotency.NoSideEffects,body$2=null;useGet?req=transformConnectPostToGetRequest(req,serialize$1(req.message),useBinaryFormat):body$2=serialize$1(req.message);let response=await(options$1.fetch??globalThis.fetch)(req.url,Object.assign(Object.assign({},req.init),{headers:req.header,signal:req.signal,body:body$2})),{isUnaryError,unaryError}=validateResponse(method.kind,useBinaryFormat,response.status,response.headers);if(isUnaryError)throw errorFromJson(await response.json(),appendHeaders(...trailerDemux(response.headers)),unaryError);let[demuxedHeader,demuxedTrailer]=trailerDemux(response.headers);return{stream:!1,service,method,header:demuxedHeader,message:useBinaryFormat?parse$2(new Uint8Array(await response.arrayBuffer())):method.O.fromJson(await response.json(),getJsonOptions(options$1.jsonOptions)),trailer:demuxedTrailer}}})},async stream(service,method,signal,timeoutMs,header,input,contextValues){var _a$2;let{serialize:serialize$1,parse:parse$2}=createClientMethodSerializers(method,useBinaryFormat,options$1.jsonOptions,options$1.binaryOptions);function parseResponseBody(body$2,trailerTarget,header$1,signal$1){return __asyncGenerator(this,arguments,function*(){let reader=createEnvelopeReadableStream(body$2).getReader(),endStreamReceived=!1;for(;;){let result=yield __await(reader.read());if(result.done)break;let{flags,data}=result.value;if((flags&1)==1)throw new ConnectError(`protocol error: received unsupported compressed output`,Code$1.Internal);if((flags&2)==2){endStreamReceived=!0;let endStream=endStreamFromJson(data);if(endStream.error){let error=endStream.error;throw header$1.forEach((value,key$1)=>{error.metadata.append(key$1,value)}),error}endStream.metadata.forEach((value,key$1)=>trailerTarget.set(key$1,value));continue}yield yield __await(parse$2(data))}if(`throwIfAborted`in signal$1&&signal$1.throwIfAborted(),!endStreamReceived)throw`missing EndStreamResponse`})}async function createRequestBody(input$1){if(method.kind!=MethodKind.ServerStreaming)throw`The fetch API does not support streaming request bodies`;let r$4=await input$1[Symbol.asyncIterator]().next();if(r$4.done==1)throw`missing request message`;return encodeEnvelope(0,serialize$1(r$4.value))}return timeoutMs=timeoutMs===void 0?options$1.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runStreamingCall({interceptors:options$1.interceptors,timeoutMs,signal,req:{stream:!0,service,method,url:createMethodUrl(options$1.baseUrl,service,method),init:{method:`POST`,credentials:options$1.credentials??`same-origin`,redirect:`error`,mode:`cors`},header:requestHeader(method.kind,useBinaryFormat,timeoutMs,header,!1),contextValues:contextValues??createContextValues(),message:input},next:async req=>{var _a$3;let fRes=await(options$1.fetch??globalThis.fetch)(req.url,Object.assign(Object.assign({},req.init),{headers:req.header,signal:req.signal,body:await createRequestBody(req.message)}));if(validateResponse(method.kind,useBinaryFormat,fRes.status,fRes.headers),fRes.body===null)throw`missing response body`;let trailer=new Headers;return Object.assign(Object.assign({},req),{header:fRes.headers,trailer,message:parseResponseBody(fRes.body,trailer,fRes.headers,req.signal)})}})}}}var Label=class Label extends Message{constructor(data){super(),this.id=``,this.name=``,this.color=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.Label`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`color`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new Label().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Label().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Label().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Label,a$1,b$2)}},Connection=class Connection extends Message{constructor(data){super(),this.id=``,this.name=``,this.description=``,this.host=``,this.port=0,this.database=``,this.username=``,this.hasPassword=!1,this.sslMode=``,this.labels=[],this.version=``,this.permissions=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.Connection`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`description`,kind:`scalar`,T:9},{no:4,name:`host`,kind:`scalar`,T:9},{no:5,name:`port`,kind:`scalar`,T:5},{no:6,name:`database`,kind:`scalar`,T:9},{no:7,name:`username`,kind:`scalar`,T:9},{no:8,name:`has_password`,kind:`scalar`,T:8},{no:9,name:`ssl_mode`,kind:`scalar`,T:9},{no:10,name:`labels`,kind:`message`,T:Label,repeated:!0},{no:11,name:`version`,kind:`scalar`,T:9},{no:12,name:`permissions`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new Connection().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Connection().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Connection().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Connection,a$1,b$2)}},ListConnectionsRequest=class ListConnectionsRequest extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.ListConnectionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new ListConnectionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListConnectionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListConnectionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListConnectionsRequest,a$1,b$2)}},ListConnectionsResponse=class ListConnectionsResponse extends Message{constructor(data){super(),this.connections=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.ListConnectionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connections`,kind:`message`,T:Connection,repeated:!0}]);static fromBinary(bytes,options$1){return new ListConnectionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListConnectionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListConnectionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListConnectionsResponse,a$1,b$2)}},GetConnectionRequest=class GetConnectionRequest extends Message{constructor(data){super(),this.id=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.GetConnectionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetConnectionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConnectionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConnectionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConnectionRequest,a$1,b$2)}},GetConnectionResponse=class GetConnectionResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.GetConnectionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection`,kind:`message`,T:Connection}]);static fromBinary(bytes,options$1){return new GetConnectionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConnectionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConnectionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConnectionResponse,a$1,b$2)}},TestConnectionRequest=class TestConnectionRequest extends Message{constructor(data){super(),this.id=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.TestConnectionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TestConnectionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TestConnectionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TestConnectionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TestConnectionRequest,a$1,b$2)}},TestConnectionResponse=class TestConnectionResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,this.latencyMs=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`connection.v1.TestConnectionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`latency_ms`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new TestConnectionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TestConnectionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TestConnectionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TestConnectionResponse,a$1,b$2)}};const ConnectionService={typeName:`connection.v1.ConnectionService`,methods:{listConnections:{name:`ListConnections`,I:ListConnectionsRequest,O:ListConnectionsResponse,kind:MethodKind.Unary},getConnection:{name:`GetConnection`,I:GetConnectionRequest,O:GetConnectionResponse,kind:MethodKind.Unary},testConnection:{name:`TestConnection`,I:TestConnectionRequest,O:TestConnectionResponse,kind:MethodKind.Unary}}};var ExecuteSQLRequest=class ExecuteSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.sql=``,this.queryId=``,this.searchPath=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ExecuteSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`sql`,kind:`scalar`,T:9},{no:3,name:`query_id`,kind:`scalar`,T:9},{no:4,name:`search_path`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExecuteSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExecuteSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExecuteSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExecuteSQLRequest,a$1,b$2)}},ExecuteSQLResponse=class ExecuteSQLResponse extends Message{constructor(data){super(),this.columns=[],this.rows=[],this.rowCount=0,this.executionTimeMs=0,this.error=``,this.backendPid=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ExecuteSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`columns`,kind:`message`,T:ColumnMetadata,repeated:!0},{no:2,name:`rows`,kind:`message`,T:Row,repeated:!0},{no:3,name:`row_count`,kind:`scalar`,T:5},{no:4,name:`execution_time_ms`,kind:`scalar`,T:5},{no:5,name:`error`,kind:`scalar`,T:9},{no:6,name:`backend_pid`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new ExecuteSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExecuteSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExecuteSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExecuteSQLResponse,a$1,b$2)}},Row=class Row extends Message{constructor(data){super(),this.values=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.Row`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`values`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new Row().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new Row().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new Row().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(Row,a$1,b$2)}},ColumnMetadata=class ColumnMetadata extends Message{constructor(data){super(),this.name=``,this.type=``,this.tableName=``,this.schemaName=``,this.isPrimaryKey=!1,this.isNullable=!1,this.hasDefault=!1,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ColumnMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`table_name`,kind:`scalar`,T:9},{no:4,name:`schema_name`,kind:`scalar`,T:9},{no:5,name:`is_primary_key`,kind:`scalar`,T:8},{no:6,name:`is_nullable`,kind:`scalar`,T:8},{no:7,name:`has_default`,kind:`scalar`,T:8}]);static fromBinary(bytes,options$1){return new ColumnMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ColumnMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ColumnMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ColumnMetadata,a$1,b$2)}},CancelQueryRequest=class CancelQueryRequest extends Message{constructor(data){super(),this.connectionId=``,this.queryId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.CancelQueryRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`query_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new CancelQueryRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new CancelQueryRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new CancelQueryRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(CancelQueryRequest,a$1,b$2)}},CancelQueryResponse=class CancelQueryResponse extends Message{constructor(data){super(),this.cancelled=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.CancelQueryResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`cancelled`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new CancelQueryResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new CancelQueryResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new CancelQueryResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(CancelQueryResponse,a$1,b$2)}},GetSchemasRequest=class GetSchemasRequest extends Message{constructor(data){super(),this.connectionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetSchemasRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetSchemasRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetSchemasRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetSchemasRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetSchemasRequest,a$1,b$2)}},GetSchemasResponse=class GetSchemasResponse extends Message{constructor(data){super(),this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetSchemasResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new GetSchemasResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetSchemasResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetSchemasResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetSchemasResponse,a$1,b$2)}},GetTablesRequest=class GetTablesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTablesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTablesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTablesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTablesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTablesRequest,a$1,b$2)}},GetTablesResponse=class GetTablesResponse extends Message{constructor(data){super(),this.tables=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTablesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`tables`,kind:`message`,T:TableInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetTablesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTablesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTablesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTablesResponse,a$1,b$2)}},TableInfo=class TableInfo extends Message{constructor(data){super(),this.name=``,this.type=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TableInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TableInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TableInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TableInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TableInfo,a$1,b$2)}},GetColumnsRequest=class GetColumnsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetColumnsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetColumnsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetColumnsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetColumnsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetColumnsRequest,a$1,b$2)}},GetColumnsResponse=class GetColumnsResponse extends Message{constructor(data){super(),this.columns=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetColumnsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`columns`,kind:`message`,T:ColumnInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetColumnsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetColumnsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetColumnsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetColumnsResponse,a$1,b$2)}},ColumnInfo=class ColumnInfo extends Message{constructor(data){super(),this.name=``,this.type=``,this.nullable=!1,this.isPrimaryKey=!1,this.defaultValue=``,this.comment=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ColumnInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`nullable`,kind:`scalar`,T:8},{no:4,name:`is_primary_key`,kind:`scalar`,T:8},{no:5,name:`default_value`,kind:`scalar`,T:9},{no:6,name:`comment`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ColumnInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ColumnInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ColumnInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ColumnInfo,a$1,b$2)}},GetTableInfoRequest=class GetTableInfoRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTableInfoRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTableInfoRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTableInfoRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTableInfoRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTableInfoRequest,a$1,b$2)}},GetTableInfoResponse=class GetTableInfoResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTableInfoResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`metadata`,kind:`message`,T:TableMetadata}]);static fromBinary(bytes,options$1){return new GetTableInfoResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTableInfoResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTableInfoResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTableInfoResponse,a$1,b$2)}},TableMetadata=class TableMetadata extends Message{constructor(data){super(),this.owner=``,this.rowCount=protoInt64.zero,this.totalSize=protoInt64.zero,this.tableSize=protoInt64.zero,this.indexSize=protoInt64.zero,this.encoding=``,this.collation=``,this.comment=``,this.kind=``,this.definition=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TableMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`owner`,kind:`scalar`,T:9},{no:2,name:`row_count`,kind:`scalar`,T:3},{no:3,name:`total_size`,kind:`scalar`,T:3},{no:4,name:`table_size`,kind:`scalar`,T:3},{no:5,name:`index_size`,kind:`scalar`,T:3},{no:6,name:`encoding`,kind:`scalar`,T:9},{no:7,name:`collation`,kind:`scalar`,T:9},{no:8,name:`comment`,kind:`scalar`,T:9},{no:9,name:`kind`,kind:`scalar`,T:9},{no:10,name:`definition`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TableMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TableMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TableMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TableMetadata,a$1,b$2)}},IndexInfo=class IndexInfo extends Message{constructor(data){super(),this.name=``,this.isUnique=!1,this.isPrimary=!1,this.method=``,this.columns=[],this.definition=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.IndexInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`is_unique`,kind:`scalar`,T:8},{no:3,name:`is_primary`,kind:`scalar`,T:8},{no:4,name:`method`,kind:`scalar`,T:9},{no:5,name:`columns`,kind:`scalar`,T:9,repeated:!0},{no:6,name:`definition`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new IndexInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new IndexInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new IndexInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(IndexInfo,a$1,b$2)}},GetIndexesRequest=class GetIndexesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetIndexesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetIndexesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetIndexesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetIndexesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetIndexesRequest,a$1,b$2)}},GetIndexesResponse=class GetIndexesResponse extends Message{constructor(data){super(),this.indexes=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetIndexesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`indexes`,kind:`message`,T:IndexInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetIndexesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetIndexesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetIndexesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetIndexesResponse,a$1,b$2)}},ConstraintInfo=class ConstraintInfo extends Message{constructor(data){super(),this.name=``,this.type=``,this.columns=[],this.definition=``,this.refTable=``,this.refColumns=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ConstraintInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`scalar`,T:9},{no:3,name:`columns`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`definition`,kind:`scalar`,T:9},{no:5,name:`ref_table`,kind:`scalar`,T:9},{no:6,name:`ref_columns`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new ConstraintInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ConstraintInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ConstraintInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ConstraintInfo,a$1,b$2)}},GetConstraintsRequest=class GetConstraintsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetConstraintsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetConstraintsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConstraintsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConstraintsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConstraintsRequest,a$1,b$2)}},GetConstraintsResponse=class GetConstraintsResponse extends Message{constructor(data){super(),this.constraints=[],this.referencedBy=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetConstraintsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`constraints`,kind:`message`,T:ConstraintInfo,repeated:!0},{no:2,name:`referenced_by`,kind:`message`,T:ConstraintInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetConstraintsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetConstraintsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetConstraintsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetConstraintsResponse,a$1,b$2)}},TriggerInfo=class TriggerInfo extends Message{constructor(data){super(),this.name=``,this.timing=``,this.event=``,this.level=``,this.function=``,this.enabled=!1,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TriggerInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`timing`,kind:`scalar`,T:9},{no:3,name:`event`,kind:`scalar`,T:9},{no:4,name:`level`,kind:`scalar`,T:9},{no:5,name:`function`,kind:`scalar`,T:9},{no:6,name:`enabled`,kind:`scalar`,T:8}]);static fromBinary(bytes,options$1){return new TriggerInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TriggerInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TriggerInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TriggerInfo,a$1,b$2)}},GetTriggersRequest=class GetTriggersRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTriggersRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetTriggersRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTriggersRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTriggersRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTriggersRequest,a$1,b$2)}},GetTriggersResponse=class GetTriggersResponse extends Message{constructor(data){super(),this.triggers=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetTriggersResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`triggers`,kind:`message`,T:TriggerInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetTriggersResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetTriggersResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetTriggersResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetTriggersResponse,a$1,b$2)}},PolicyInfo=class PolicyInfo extends Message{constructor(data){super(),this.name=``,this.command=``,this.permissive=``,this.roles=[],this.usingExpr=``,this.checkExpr=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.PolicyInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`command`,kind:`scalar`,T:9},{no:3,name:`permissive`,kind:`scalar`,T:9},{no:4,name:`roles`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`using_expr`,kind:`scalar`,T:9},{no:6,name:`check_expr`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new PolicyInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new PolicyInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new PolicyInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(PolicyInfo,a$1,b$2)}},GetPoliciesRequest=class GetPoliciesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetPoliciesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetPoliciesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetPoliciesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetPoliciesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetPoliciesRequest,a$1,b$2)}},GetPoliciesResponse=class GetPoliciesResponse extends Message{constructor(data){super(),this.policies=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetPoliciesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`policies`,kind:`message`,T:PolicyInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetPoliciesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetPoliciesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetPoliciesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetPoliciesResponse,a$1,b$2)}},GrantInfo=class GrantInfo extends Message{constructor(data){super(),this.grantee=``,this.privileges=[],this.grantor=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GrantInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`grantee`,kind:`scalar`,T:9},{no:2,name:`privileges`,kind:`scalar`,T:9,repeated:!0},{no:3,name:`grantor`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GrantInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GrantInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GrantInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GrantInfo,a$1,b$2)}},GetGrantsRequest=class GetGrantsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.table=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetGrantsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`table`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetGrantsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetGrantsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetGrantsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetGrantsRequest,a$1,b$2)}},GetGrantsResponse=class GetGrantsResponse extends Message{constructor(data){super(),this.grants=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetGrantsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`grants`,kind:`message`,T:GrantInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetGrantsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetGrantsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetGrantsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetGrantsResponse,a$1,b$2)}},MaterializedViewInfo=class MaterializedViewInfo extends Message{constructor(data){super(),this.name=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.MaterializedViewInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new MaterializedViewInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new MaterializedViewInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new MaterializedViewInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(MaterializedViewInfo,a$1,b$2)}},GetMaterializedViewsRequest=class GetMaterializedViewsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetMaterializedViewsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetMaterializedViewsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetMaterializedViewsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetMaterializedViewsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetMaterializedViewsRequest,a$1,b$2)}},GetMaterializedViewsResponse=class GetMaterializedViewsResponse extends Message{constructor(data){super(),this.materializedViews=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetMaterializedViewsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`materialized_views`,kind:`message`,T:MaterializedViewInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetMaterializedViewsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetMaterializedViewsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetMaterializedViewsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetMaterializedViewsResponse,a$1,b$2)}},FunctionInfo=class FunctionInfo extends Message{constructor(data){super(),this.name=``,this.returnType=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.FunctionInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`return_type`,kind:`scalar`,T:9},{no:3,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FunctionInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FunctionInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FunctionInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FunctionInfo,a$1,b$2)}},GetFunctionsRequest=class GetFunctionsRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionsRequest,a$1,b$2)}},GetFunctionsResponse=class GetFunctionsResponse extends Message{constructor(data){super(),this.functions=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`functions`,kind:`message`,T:FunctionInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetFunctionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionsResponse,a$1,b$2)}},ProcedureInfo=class ProcedureInfo extends Message{constructor(data){super(),this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ProcedureInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ProcedureInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ProcedureInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ProcedureInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ProcedureInfo,a$1,b$2)}},GetProceduresRequest=class GetProceduresRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetProceduresRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetProceduresRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetProceduresRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetProceduresRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetProceduresRequest,a$1,b$2)}},GetProceduresResponse=class GetProceduresResponse extends Message{constructor(data){super(),this.procedures=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetProceduresResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`procedures`,kind:`message`,T:ProcedureInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetProceduresResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetProceduresResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetProceduresResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetProceduresResponse,a$1,b$2)}},GetFunctionInfoRequest=class GetFunctionInfoRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionInfoRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`name`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionInfoRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionInfoRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionInfoRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionInfoRequest,a$1,b$2)}},GetFunctionInfoResponse=class GetFunctionInfoResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionInfoResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`metadata`,kind:`message`,T:FunctionMetadata}]);static fromBinary(bytes,options$1){return new GetFunctionInfoResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionInfoResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionInfoResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionInfoResponse,a$1,b$2)}},FunctionMetadata=class FunctionMetadata extends Message{constructor(data){super(),this.name=``,this.kind=``,this.owner=``,this.language=``,this.returnType=``,this.arguments=``,this.definition=``,this.volatility=``,this.comment=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.FunctionMetadata`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`name`,kind:`scalar`,T:9},{no:2,name:`kind`,kind:`scalar`,T:9},{no:3,name:`owner`,kind:`scalar`,T:9},{no:4,name:`language`,kind:`scalar`,T:9},{no:5,name:`return_type`,kind:`scalar`,T:9},{no:6,name:`arguments`,kind:`scalar`,T:9},{no:7,name:`definition`,kind:`scalar`,T:9},{no:8,name:`volatility`,kind:`scalar`,T:9},{no:9,name:`comment`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FunctionMetadata().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FunctionMetadata().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FunctionMetadata().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FunctionMetadata,a$1,b$2)}},GetFunctionDependenciesRequest=class GetFunctionDependenciesRequest extends Message{constructor(data){super(),this.connectionId=``,this.schema=``,this.name=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionDependenciesRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schema`,kind:`scalar`,T:9},{no:3,name:`name`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetFunctionDependenciesRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionDependenciesRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionDependenciesRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionDependenciesRequest,a$1,b$2)}},GetFunctionDependenciesResponse=class GetFunctionDependenciesResponse extends Message{constructor(data){super(),this.dependencies=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetFunctionDependenciesResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`dependencies`,kind:`message`,T:DependencyInfo,repeated:!0}]);static fromBinary(bytes,options$1){return new GetFunctionDependenciesResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetFunctionDependenciesResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetFunctionDependenciesResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetFunctionDependenciesResponse,a$1,b$2)}},DependencyInfo=class DependencyInfo extends Message{constructor(data){super(),this.schema=``,this.name=``,this.type=``,this.arguments=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.DependencyInfo`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`schema`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`type`,kind:`scalar`,T:9},{no:4,name:`arguments`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new DependencyInfo().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new DependencyInfo().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new DependencyInfo().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(DependencyInfo,a$1,b$2)}},ActiveSession=class ActiveSession extends Message{constructor(data){super(),this.pid=0,this.usename=``,this.datname=``,this.applicationName=``,this.clientAddr=``,this.state=``,this.query=``,this.queryStart=``,this.stateChange=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.ActiveSession`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`pid`,kind:`scalar`,T:5},{no:2,name:`usename`,kind:`scalar`,T:9},{no:3,name:`datname`,kind:`scalar`,T:9},{no:4,name:`application_name`,kind:`scalar`,T:9},{no:5,name:`client_addr`,kind:`scalar`,T:9},{no:6,name:`state`,kind:`scalar`,T:9},{no:7,name:`query`,kind:`scalar`,T:9},{no:8,name:`query_start`,kind:`scalar`,T:9},{no:9,name:`state_change`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ActiveSession().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ActiveSession().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ActiveSession().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ActiveSession,a$1,b$2)}},GetActiveSessionsRequest=class GetActiveSessionsRequest extends Message{constructor(data){super(),this.connectionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetActiveSessionsRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetActiveSessionsRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetActiveSessionsRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetActiveSessionsRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetActiveSessionsRequest,a$1,b$2)}},GetActiveSessionsResponse=class GetActiveSessionsResponse extends Message{constructor(data){super(),this.sessions=[],this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.GetActiveSessionsResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sessions`,kind:`message`,T:ActiveSession,repeated:!0},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GetActiveSessionsResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GetActiveSessionsResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GetActiveSessionsResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GetActiveSessionsResponse,a$1,b$2)}},TerminateSessionRequest=class TerminateSessionRequest extends Message{constructor(data){super(),this.connectionId=``,this.pid=0,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TerminateSessionRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`pid`,kind:`scalar`,T:5}]);static fromBinary(bytes,options$1){return new TerminateSessionRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TerminateSessionRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TerminateSessionRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TerminateSessionRequest,a$1,b$2)}},TerminateSessionResponse=class TerminateSessionResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.TerminateSessionResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new TerminateSessionResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new TerminateSessionResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new TerminateSessionResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(TerminateSessionResponse,a$1,b$2)}},AuditExportRequest=class AuditExportRequest extends Message{constructor(data){super(),this.connectionId=``,this.sql=``,this.rowCount=0,this.format=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.AuditExportRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`sql`,kind:`scalar`,T:9},{no:3,name:`row_count`,kind:`scalar`,T:5},{no:4,name:`format`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AuditExportRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AuditExportRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AuditExportRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AuditExportRequest,a$1,b$2)}},AuditExportResponse=class AuditExportResponse extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`query.v1.AuditExportResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new AuditExportResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AuditExportResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AuditExportResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AuditExportResponse,a$1,b$2)}};const QueryService={typeName:`query.v1.QueryService`,methods:{executeSQL:{name:`ExecuteSQL`,I:ExecuteSQLRequest,O:ExecuteSQLResponse,kind:MethodKind.ServerStreaming},cancelQuery:{name:`CancelQuery`,I:CancelQueryRequest,O:CancelQueryResponse,kind:MethodKind.Unary},getSchemas:{name:`GetSchemas`,I:GetSchemasRequest,O:GetSchemasResponse,kind:MethodKind.Unary},getTables:{name:`GetTables`,I:GetTablesRequest,O:GetTablesResponse,kind:MethodKind.Unary},getColumns:{name:`GetColumns`,I:GetColumnsRequest,O:GetColumnsResponse,kind:MethodKind.Unary},getTableInfo:{name:`GetTableInfo`,I:GetTableInfoRequest,O:GetTableInfoResponse,kind:MethodKind.Unary},getIndexes:{name:`GetIndexes`,I:GetIndexesRequest,O:GetIndexesResponse,kind:MethodKind.Unary},getConstraints:{name:`GetConstraints`,I:GetConstraintsRequest,O:GetConstraintsResponse,kind:MethodKind.Unary},getTriggers:{name:`GetTriggers`,I:GetTriggersRequest,O:GetTriggersResponse,kind:MethodKind.Unary},getPolicies:{name:`GetPolicies`,I:GetPoliciesRequest,O:GetPoliciesResponse,kind:MethodKind.Unary},getGrants:{name:`GetGrants`,I:GetGrantsRequest,O:GetGrantsResponse,kind:MethodKind.Unary},getMaterializedViews:{name:`GetMaterializedViews`,I:GetMaterializedViewsRequest,O:GetMaterializedViewsResponse,kind:MethodKind.Unary},getFunctions:{name:`GetFunctions`,I:GetFunctionsRequest,O:GetFunctionsResponse,kind:MethodKind.Unary},getProcedures:{name:`GetProcedures`,I:GetProceduresRequest,O:GetProceduresResponse,kind:MethodKind.Unary},getFunctionInfo:{name:`GetFunctionInfo`,I:GetFunctionInfoRequest,O:GetFunctionInfoResponse,kind:MethodKind.Unary},getFunctionDependencies:{name:`GetFunctionDependencies`,I:GetFunctionDependenciesRequest,O:GetFunctionDependenciesResponse,kind:MethodKind.Unary},getActiveSessions:{name:`GetActiveSessions`,I:GetActiveSessionsRequest,O:GetActiveSessionsResponse,kind:MethodKind.Unary},terminateSession:{name:`TerminateSession`,I:TerminateSessionRequest,O:TerminateSessionResponse,kind:MethodKind.Unary},auditExport:{name:`AuditExport`,I:AuditExportRequest,O:AuditExportResponse,kind:MethodKind.Unary}}};var AIProvider=class AIProvider extends Message{constructor(data){super(),this.id=``,this.name=``,this.vendor=``,this.model=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AIProvider`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`vendor`,kind:`scalar`,T:9},{no:4,name:`model`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AIProvider().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AIProvider().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AIProvider().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AIProvider,a$1,b$2)}},ListAIProvidersRequest=class ListAIProvidersRequest extends Message{constructor(data){super(),proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ListAIProvidersRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[]);static fromBinary(bytes,options$1){return new ListAIProvidersRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListAIProvidersRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListAIProvidersRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListAIProvidersRequest,a$1,b$2)}},ListAIProvidersResponse=class ListAIProvidersResponse extends Message{constructor(data){super(),this.providers=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ListAIProvidersResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`providers`,kind:`message`,T:AIProvider,repeated:!0}]);static fromBinary(bytes,options$1){return new ListAIProvidersResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ListAIProvidersResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ListAIProvidersResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ListAIProvidersResponse,a$1,b$2)}},GenerateSQLRequest=class GenerateSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.prompt=``,this.schemas=[],this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.GenerateSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`prompt`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GenerateSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GenerateSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GenerateSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GenerateSQLRequest,a$1,b$2)}},GenerateSQLResponse=class GenerateSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.GenerateSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new GenerateSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new GenerateSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new GenerateSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(GenerateSQLResponse,a$1,b$2)}},ExplainSQLRequest=class ExplainSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.schemas=[],this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ExplainSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExplainSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExplainSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExplainSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExplainSQLRequest,a$1,b$2)}},ExplainSQLResponse=class ExplainSQLResponse extends Message{constructor(data){super(),this.explanation=``,this.error=``,this.sessionId=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.ExplainSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`explanation`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9},{no:3,name:`session_id`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new ExplainSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new ExplainSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new ExplainSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(ExplainSQLResponse,a$1,b$2)}},FixSQLRequest=class FixSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.errorMessage=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.FixSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`error_message`,kind:`scalar`,T:9},{no:5,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new FixSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FixSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FixSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FixSQLRequest,a$1,b$2)}},FixSQLResponse=class FixSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.FixSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new FixSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new FixSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new FixSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(FixSQLResponse,a$1,b$2)}},RewriteSQLRequest=class RewriteSQLRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sql=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RewriteSQLRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql`,kind:`scalar`,T:9},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new RewriteSQLRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RewriteSQLRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RewriteSQLRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RewriteSQLRequest,a$1,b$2)}},RewriteSQLResponse=class RewriteSQLResponse extends Message{constructor(data){super(),this.sql=``,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RewriteSQLResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`sql`,kind:`scalar`,T:9},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RewriteSQLResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RewriteSQLResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RewriteSQLResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RewriteSQLResponse,a$1,b$2)}},RefreshSchemaCacheRequest=class RefreshSchemaCacheRequest extends Message{constructor(data){super(),this.connectionId=``,this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RefreshSchemaCacheRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new RefreshSchemaCacheRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RefreshSchemaCacheRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RefreshSchemaCacheRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RefreshSchemaCacheRequest,a$1,b$2)}},RefreshSchemaCacheResponse=class RefreshSchemaCacheResponse extends Message{constructor(data){super(),this.success=!1,this.error=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RefreshSchemaCacheResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`success`,kind:`scalar`,T:8},{no:2,name:`error`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RefreshSchemaCacheResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RefreshSchemaCacheResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RefreshSchemaCacheResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RefreshSchemaCacheResponse,a$1,b$2)}},AssessChangeRiskRequest=class AssessChangeRiskRequest extends Message{constructor(data){super(),this.connectionId=``,this.providerId=``,this.sqlStatements=[],this.schemas=[],proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AssessChangeRiskRequest`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`connection_id`,kind:`scalar`,T:9},{no:2,name:`provider_id`,kind:`scalar`,T:9},{no:3,name:`sql_statements`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`schemas`,kind:`scalar`,T:9,repeated:!0}]);static fromBinary(bytes,options$1){return new AssessChangeRiskRequest().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AssessChangeRiskRequest().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AssessChangeRiskRequest().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AssessChangeRiskRequest,a$1,b$2)}},RiskFinding=class RiskFinding extends Message{constructor(data){super(),this.severity=``,this.category=``,this.description=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.RiskFinding`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`severity`,kind:`scalar`,T:9},{no:2,name:`category`,kind:`scalar`,T:9},{no:3,name:`description`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new RiskFinding().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new RiskFinding().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new RiskFinding().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(RiskFinding,a$1,b$2)}},AssessChangeRiskResponse=class AssessChangeRiskResponse extends Message{constructor(data){super(),this.overallRisk=``,this.findings=[],this.error=``,this.dependencyGraph=``,proto3.util.initPartial(data,this)}static#e=this.runtime=proto3;static#t=this.typeName=`ai.v1.AssessChangeRiskResponse`;static#n=this.fields=proto3.util.newFieldList(()=>[{no:1,name:`overall_risk`,kind:`scalar`,T:9},{no:2,name:`findings`,kind:`message`,T:RiskFinding,repeated:!0},{no:3,name:`error`,kind:`scalar`,T:9},{no:4,name:`dependency_graph`,kind:`scalar`,T:9}]);static fromBinary(bytes,options$1){return new AssessChangeRiskResponse().fromBinary(bytes,options$1)}static fromJson(jsonValue,options$1){return new AssessChangeRiskResponse().fromJson(jsonValue,options$1)}static fromJsonString(jsonString,options$1){return new AssessChangeRiskResponse().fromJsonString(jsonString,options$1)}static equals(a$1,b$2){return proto3.util.equals(AssessChangeRiskResponse,a$1,b$2)}};const AIService={typeName:`ai.v1.AIService`,methods:{listAIProviders:{name:`ListAIProviders`,I:ListAIProvidersRequest,O:ListAIProvidersResponse,kind:MethodKind.Unary},generateSQL:{name:`GenerateSQL`,I:GenerateSQLRequest,O:GenerateSQLResponse,kind:MethodKind.Unary},explainSQL:{name:`ExplainSQL`,I:ExplainSQLRequest,O:ExplainSQLResponse,kind:MethodKind.Unary},fixSQL:{name:`FixSQL`,I:FixSQLRequest,O:FixSQLResponse,kind:MethodKind.Unary},rewriteSQL:{name:`RewriteSQL`,I:RewriteSQLRequest,O:RewriteSQLResponse,kind:MethodKind.Unary},refreshSchemaCache:{name:`RefreshSchemaCache`,I:RefreshSchemaCacheRequest,O:RefreshSchemaCacheResponse,kind:MethodKind.Unary},assessChangeRisk:{name:`AssessChangeRisk`,I:AssessChangeRiskRequest,O:AssessChangeRiskResponse,kind:MethodKind.Unary}}};var transport=createConnectTransport({baseUrl:``,credentials:`include`});const connectionClient=createPromiseClient(ConnectionService,transport),queryClient$1=createPromiseClient(QueryService,transport),aiClient=createPromiseClient(AIService,transport),queryKeys={all:[`query`],schemas:connectionId=>[...queryKeys.all,`schemas`,connectionId],tables:(connectionId,schema)=>[...queryKeys.all,`tables`,connectionId,schema],columns:(connectionId,schema,table$1)=>[...queryKeys.all,`columns`,connectionId,schema,table$1],tableInfo:(connectionId,schema,table$1)=>[...queryKeys.all,`tableInfo`,connectionId,schema,table$1],indexes:(connectionId,schema,table$1)=>[...queryKeys.all,`indexes`,connectionId,schema,table$1],constraints:(connectionId,schema,table$1)=>[...queryKeys.all,`constraints`,connectionId,schema,table$1],triggers:(connectionId,schema,table$1)=>[...queryKeys.all,`triggers`,connectionId,schema,table$1],policies:(connectionId,schema,table$1)=>[...queryKeys.all,`policies`,connectionId,schema,table$1],grants:(connectionId,schema,table$1)=>[...queryKeys.all,`grants`,connectionId,schema,table$1],materializedViews:(connectionId,schema)=>[...queryKeys.all,`materializedViews`,connectionId,schema],functions:(connectionId,schema)=>[...queryKeys.all,`functions`,connectionId,schema],procedures:(connectionId,schema)=>[...queryKeys.all,`procedures`,connectionId,schema],functionInfo:(connectionId,schema,name$2,args)=>[...queryKeys.all,`functionInfo`,connectionId,schema,name$2,args],functionDependencies:(connectionId,schema,name$2,args)=>[...queryKeys.all,`functionDependencies`,connectionId,schema,name$2,args],processes:connectionId=>[...queryKeys.all,`processes`,connectionId]},connectionKeys={all:[`connections`],list:()=>[...connectionKeys.all,`list`],detail:id=>[...connectionKeys.all,`detail`,id]};function useSchemas(connectionId){return useQuery({queryKey:queryKeys.schemas(connectionId),queryFn:async()=>(await queryClient$1.getSchemas({connectionId})).schemas,enabled:!!connectionId})}function useTables(connectionId,schema){return useQuery({queryKey:queryKeys.tables(connectionId,schema),queryFn:async()=>(await queryClient$1.getTables({connectionId,schema})).tables,enabled:!!connectionId&&!!schema})}function useColumns(connectionId,schema,table$1){return useQuery({queryKey:queryKeys.columns(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getColumns({connectionId,schema,table:table$1})).columns,enabled:!!connectionId&&!!schema&&!!table$1})}function useTableInfo(connectionId,schema,table$1){return useQuery({queryKey:queryKeys.tableInfo(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getTableInfo({connectionId,schema,table:table$1})).metadata,enabled:!!connectionId&&!!schema&&!!table$1})}function useIndexes(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.indexes(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getIndexes({connectionId,schema,table:table$1})).indexes,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useConstraints(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.constraints(connectionId,schema,table$1),queryFn:async()=>{let response=await queryClient$1.getConstraints({connectionId,schema,table:table$1});return{constraints:response.constraints,referencedBy:response.referencedBy}},enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useTriggers(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.triggers(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getTriggers({connectionId,schema,table:table$1})).triggers,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function usePolicies(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.policies(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getPolicies({connectionId,schema,table:table$1})).policies,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useGrants(connectionId,schema,table$1,enabled=!0){return useQuery({queryKey:queryKeys.grants(connectionId,schema,table$1),queryFn:async()=>(await queryClient$1.getGrants({connectionId,schema,table:table$1})).grants,enabled:enabled&&!!connectionId&&!!schema&&!!table$1})}function useMaterializedViews(connectionId,schema){return useQuery({queryKey:queryKeys.materializedViews(connectionId,schema),queryFn:async()=>(await queryClient$1.getMaterializedViews({connectionId,schema})).materializedViews,enabled:!!connectionId&&!!schema})}function useFunctions(connectionId,schema){return useQuery({queryKey:queryKeys.functions(connectionId,schema),queryFn:async()=>(await queryClient$1.getFunctions({connectionId,schema})).functions,enabled:!!connectionId&&!!schema})}function useProcedures(connectionId,schema){return useQuery({queryKey:queryKeys.procedures(connectionId,schema),queryFn:async()=>(await queryClient$1.getProcedures({connectionId,schema})).procedures,enabled:!!connectionId&&!!schema})}function useFunctionInfo(connectionId,schema,name$2,args){return useQuery({queryKey:queryKeys.functionInfo(connectionId,schema,name$2,args),queryFn:async()=>(await queryClient$1.getFunctionInfo({connectionId,schema,name:name$2,arguments:args})).metadata,enabled:!!connectionId&&!!schema&&!!name$2})}function useFunctionDependencies(connectionId,schema,name$2,args){return useQuery({queryKey:queryKeys.functionDependencies(connectionId,schema,name$2,args),queryFn:async()=>(await queryClient$1.getFunctionDependencies({connectionId,schema,name:name$2,arguments:args})).dependencies,enabled:!!connectionId&&!!schema&&!!name$2})}function useExecuteSQL(){return useMutation({mutationFn:async({connectionId,sql,queryId,searchPath,onPid})=>{let lastResponse=null;for await(let response of queryClient$1.executeSQL({connectionId,sql,queryId,searchPath})){response.backendPid&&onPid&&response.columns.length===0&&!response.error&&onPid(response.backendPid);let mappedRows=response.rows.map(row=>{let obj={};return response.columns.forEach((col,i$3)=>{obj[col.name]=row.values[i$3]}),obj});lastResponse={columns:response.columns.map(col=>({name:col.name,type:col.type,tableName:col.tableName,schemaName:col.schemaName,isPrimaryKey:col.isPrimaryKey,isNullable:col.isNullable,hasDefault:col.hasDefault})),rows:mappedRows,rowCount:response.rowCount,executionTime:response.executionTimeMs,error:response.error,backendPid:response.backendPid}}if(!lastResponse)throw Error(`No response received from server`);return lastResponse}})}function useCancelQuery(){return useMutation({mutationFn:async({connectionId,queryId})=>{let response=await queryClient$1.cancelQuery({connectionId,queryId});return{cancelled:response.cancelled,error:response.error}}})}function useConnections(){return useQuery({queryKey:connectionKeys.list(),queryFn:async()=>(await connectionClient.listConnections({})).connections})}function useActiveProcesses(connectionId,enabled=!0){return useQuery({queryKey:queryKeys.processes(connectionId),queryFn:async()=>{let response=await queryClient$1.getActiveSessions({connectionId});if(response.error)throw Error(response.error);return response.sessions},enabled:enabled&&!!connectionId,refetchInterval:5e3})}function useTerminateProcess(){let qc=useQueryClient();return useMutation({mutationFn:async({connectionId,pid})=>{let response=await queryClient$1.terminateSession({connectionId,pid});if(response.error)throw Error(response.error);return response.success},onSuccess:(_$2,{connectionId})=>{qc.invalidateQueries({queryKey:queryKeys.processes(connectionId)})}})}function useRefreshSchemaCache(){return useMutation({mutationFn:async({connectionId,schemas})=>{let response=await aiClient.refreshSchemaCache({connectionId,schemas:schemas||[]});if(response.error)throw Error(response.error);return response.success}})}function useConnectionHealth(connectionId,enabled=!0){return useQuery({queryKey:[...connectionKeys.all,`health`,connectionId],queryFn:async()=>{let response=await connectionClient.testConnection({id:connectionId});return{success:response.success,error:response.error,latencyMs:response.latencyMs}},enabled:enabled&&!!connectionId,staleTime:6e4,retry:1})}var PERMISSION_VARIANTS={admin:`default`,ddl:`warning`,write:`info`,read:`success`,explain:`muted`,execute:`secondary`,export:`outline`},PERMISSION_ORDER=[`explain`,`read`,`execute`,`export`,`write`,`ddl`,`admin`];function sortPermissions(permissions){return[...permissions].sort((a$1,b$2)=>PERMISSION_ORDER.indexOf(a$1)-PERMISSION_ORDER.indexOf(b$2))}function ConnectionSwitcher({selectedConnectionId}){let navigate=useNavigate(),{data:connections,isLoading}=useConnections(),{authEnabled}=useSession(),{data:healthCheck}=useConnectionHealth(selectedConnectionId,!!selectedConnectionId),isConnectionDown=healthCheck&&!healthCheck.success,currentConnection=connections?.find(c=>c.id===selectedConnectionId);return isLoading?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,import_jsx_runtime.jsx)(Database,{size:14}),(0,import_jsx_runtime.jsx)(`span`,{children:`Loading...`})]}):!connections||connections.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,import_jsx_runtime.jsx)(Database,{size:14}),(0,import_jsx_runtime.jsx)(`span`,{children:`No connections`}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs`,children:[`(Check`,` `,(0,import_jsx_runtime.jsx)(`a`,{href:`https://docs.pgconsole.com/configuration/iam-permissions`,target:`_blank`,rel:`noopener noreferrer`,className:`text-blue-500 hover:underline`,children:`IAM permissions`}),`)`]})]}):(0,import_jsx_runtime.jsxs)(Menu,{children:[(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsxs)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(MenuTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`!h-auto !py-1 !px-2 gap-1`})}),children:[currentConnection?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col items-start text-left gap-0.5`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium whitespace-nowrap`,children:currentConnection.name}),isConnectionDown&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(CircleAlert,{className:`text-red-500`,size:14})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-sm`,children:[`Connection unavailable`,healthCheck?.error&&(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-400 mt-1`,children:healthCheck.error})]})})]}),currentConnection.labels&&currentConnection.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:currentConnection.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&currentConnection.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:sortPermissions(currentConnection.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:[currentConnection.host,`:`,currentConnection.port,`/`,currentConnection.database]})]}):`Select connection`,(0,import_jsx_runtime.jsx)(ChevronDown,{size:14,className:`shrink-0`})]}),currentConnection&&(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`font-medium`,children:currentConnection.name}),currentConnection.labels&&currentConnection.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:currentConnection.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&currentConnection.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:sortPermissions(currentConnection.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-muted-foreground`,children:[currentConnection.host,`:`,currentConnection.port,`/`,currentConnection.database]})]})})]}),(0,import_jsx_runtime.jsx)(MenuPopup,{children:connections.map(conn=>(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>navigate(`/?connectionId=${conn.id}`),className:selectedConnectionId===conn.id?`bg-gray-100`:``,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium`,children:conn.name}),conn.labels&&conn.labels.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:conn.labels.map(label=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:`outline`,style:{borderColor:label.color,color:label.color},children:label.name},label.id))}),authEnabled&&conn.permissions.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:sortPermissions(conn.permissions).map(perm=>(0,import_jsx_runtime.jsx)(Badge,{size:`sm`,variant:PERMISSION_VARIANTS[perm]??`muted`,children:perm},perm))})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[conn.host,`:`,conn.port,`/`,conn.database]})]})},conn.id))})]})}const SubscriptionModalContext=(0,import_react.createContext)(null);function useSubscriptionModal(){let context=(0,import_react.useContext)(SubscriptionModalContext);if(!context)throw Error(`useSubscriptionModal must be used within SubscriptionModalProvider`);return context}function useOwner(){let{isOwner}=useSession();return isOwner}const AvatarRootContext=import_react.createContext(void 0);function useAvatarRootContext(){let context=import_react.useContext(AvatarRootContext);if(context===void 0)throw Error(formatErrorMessage(13));return context}const avatarStateAttributesMapping={imageLoadingStatus:()=>null},AvatarRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,[imageLoadingStatus,setImageLoadingStatus]=import_react.useState(`idle`),state$1=import_react.useMemo(()=>({imageLoadingStatus}),[imageLoadingStatus]),contextValue=import_react.useMemo(()=>({imageLoadingStatus,setImageLoadingStatus}),[imageLoadingStatus,setImageLoadingStatus]),element$3=useRenderElement(`span`,componentProps,{state:state$1,ref:forwardedRef,props:elementProps,stateAttributesMapping:avatarStateAttributesMapping});return(0,import_jsx_runtime.jsx)(AvatarRootContext.Provider,{value:contextValue,children:element$3})}),AvatarFallback$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,delay,...elementProps}=componentProps,{imageLoadingStatus}=useAvatarRootContext(),[delayPassed,setDelayPassed]=import_react.useState(delay===void 0),timeout=useTimeout();return import_react.useEffect(()=>(delay!==void 0&&timeout.start(delay,()=>setDelayPassed(!0)),timeout.clear),[timeout,delay]),useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({imageLoadingStatus}),[imageLoadingStatus]),ref:forwardedRef,props:elementProps,stateAttributesMapping:avatarStateAttributesMapping,enabled:imageLoadingStatus!==`loaded`&&delayPassed})});function Avatar({className,...props}){return(0,import_jsx_runtime.jsx)(AvatarRoot,{className:cn(`inline-flex size-8 shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-background align-middle font-medium text-xs`,className),"data-slot":`avatar`,...props})}function AvatarFallback({className,...props}){return(0,import_jsx_runtime.jsx)(AvatarFallback$1,{className:cn(`flex size-full items-center justify-center rounded-full bg-muted`,className),"data-slot":`avatar-fallback`,...props})}function UserAvatar({user,size:size$3=`md`,className}){let[erroredUrl,setErroredUrl]=(0,import_react.useState)(null),avatarUrl=user?.avatar,initial=(user?.name||user?.email||`U`).charAt(0).toUpperCase(),sizeClasses={xs:`size-6 text-xs`,sm:`size-8 text-xs`,md:`size-10 text-sm`,lg:`size-12 text-base`},showImage=avatarUrl&&avatarUrl!==erroredUrl;return(0,import_jsx_runtime.jsx)(Avatar,{className:`${sizeClasses[size$3]} ${className||``}`,children:showImage?(0,import_jsx_runtime.jsx)(`img`,{src:avatarUrl,alt:user?.name||user?.email||`User`,className:`size-full object-cover`,onError:()=>setErroredUrl(avatarUrl)}):(0,import_jsx_runtime.jsx)(AvatarFallback,{className:`bg-gray-200 text-gray-600`,children:initial})})}var logo_light_full_default=`/assets/logo-light-full-3Wf7NsR1.svg`;function Header({selectedConnectionId}){let navigate=useNavigate(),{user,authEnabled}=useSession(),subscriptionModal=useSubscriptionModal(),isOwner=useOwner(),isGuest=user?.email===`guest`,showSignIn=!user&&authEnabled,handleSignOut=async()=>{await signOut(),window.location.href=`/signin`};return(0,import_jsx_runtime.jsxs)(`header`,{className:`h-12 bg-gray-100 border-b border-gray-300 flex items-center px-3 justify-between`,children:[(0,import_jsx_runtime.jsx)(ConnectionSwitcher,{selectedConnectionId}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>window.open(`https://docs.pgconsole.com`,`_blank`),className:`flex items-center justify-center hover:opacity-80`,"aria-label":`Documentation`,children:(0,import_jsx_runtime.jsx)(`img`,{src:logo_light_full_default,alt:`pgconsole docs`,className:`h-7.5`})}),user&&!isGuest?(0,import_jsx_runtime.jsxs)(Menu,{children:[(0,import_jsx_runtime.jsx)(MenuTrigger,{render:(0,import_jsx_runtime.jsx)(`button`,{className:`flex items-center hover:opacity-80 transition-opacity`,"aria-label":`User menu`,children:(0,import_jsx_runtime.jsx)(UserAvatar,{user,size:`sm`})})}),(0,import_jsx_runtime.jsxs)(MenuPopup,{align:`end`,side:`bottom`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`px-3 py-2 border-b border-gray-200`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:user.name}),(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-500`,children:[user.name!==user.email&&(0,import_jsx_runtime.jsx)(`span`,{children:user.email}),isOwner&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-blue-600 font-medium`,children:`(Owner)`})]})]}),isOwner&&(0,import_jsx_runtime.jsxs)(MenuItem,{onClick:()=>subscriptionModal.open(),children:[(0,import_jsx_runtime.jsx)(CreditCard,{size:14}),`Subscription`]}),(0,import_jsx_runtime.jsxs)(MenuItem,{onClick:handleSignOut,children:[(0,import_jsx_runtime.jsx)(LogOut,{size:14}),`Sign Out`]}),(0,import_jsx_runtime.jsx)(`div`,{className:`px-3 py-2 border-t border-gray-200`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-400`,children:[`v`,`1.0.5`,` (`,`1e2e764`,`) · `,new Date(`2026-02-10T03:59:16.699Z`).toLocaleDateString()]})})]})]}):showSignIn?(0,import_jsx_runtime.jsx)(`button`,{className:`text-xs text-gray-500 hover:text-gray-700 transition-colors px-2`,onClick:()=>navigate(`/signin`),children:`Sign In`}):null]})]})}function SearchInput({value,onClear,className,...props}){let hasValue=value!=null&&String(value).length>0;return(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,children:[(0,import_jsx_runtime.jsx)(Search,{className:`pointer-events-none absolute left-2.5 top-1/2 z-10 -translate-y-1/2 size-4 text-muted-foreground`}),(0,import_jsx_runtime.jsx)(Input,{type:`text`,value,className:`[&_[data-slot=input]]:pl-8 ${hasValue?`[&_[data-slot=input]]:pr-8`:``} ${className||``}`,...props}),hasValue&&onClear&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-xs`,className:`absolute right-1 top-1/2 z-10 -translate-y-1/2`,onClick:onClear,children:(0,import_jsx_runtime.jsx)(X,{className:`size-3`})})]})}function useOnFirstRender(fn){let ref=import_react.useRef(!0);ref.current&&(ref.current=!1,fn())}const SelectRootContext=import_react.createContext(null),SelectFloatingContext=import_react.createContext(null);function useSelectRootContext(){let context=import_react.useContext(SelectRootContext);if(context===null)throw Error(formatErrorMessage(60));return context}function useSelectFloatingContext(){let context=import_react.useContext(SelectFloatingContext);if(context===null)throw Error(formatErrorMessage(61));return context}const defaultItemEquality=(item,value)=>Object.is(item,value);function compareItemEquality(item,value,comparer){return item==null||value==null?Object.is(item,value):comparer(item,value)}function itemIncludes(collection,value,comparer){return!collection||collection.length===0?!1:collection.some(item=>item===void 0?!1:compareItemEquality(item,value,comparer))}function findItemIndex(collection,value,comparer){return!collection||collection.length===0?-1:collection.findIndex(item=>item===void 0?!1:compareItemEquality(item,value,comparer))}function removeItem(collection,value,comparer){return collection.filter(item=>!compareItemEquality(item,value,comparer))}function serializeValue(value){if(value==null)return``;if(typeof value==`string`)return value;try{return JSON.stringify(value)}catch{return String(value)}}function isGroupedItems(items){return items!=null&&items.length>0&&typeof items[0]==`object`&&items[0]!=null&&`items`in items[0]}function hasNullItemLabel(items){if(!Array.isArray(items))return items!=null&&!(`null`in items);if(isGroupedItems(items)){for(let group of items)for(let item of group.items)if(item&&item.value==null&&item.label!=null)return!0;return!1}for(let item of items)if(item&&item.value==null&&item.label!=null)return!0;return!1}function stringifyAsLabel(item,itemToStringLabel){if(itemToStringLabel&&item!=null)return itemToStringLabel(item)??``;if(item&&typeof item==`object`){if(`label`in item&&item.label!=null)return String(item.label);if(`value`in item)return String(item.value)}return serializeValue(item)}function stringifyAsValue(item,itemToStringValue){return itemToStringValue&&item!=null?itemToStringValue(item)??``:item&&typeof item==`object`&&`value`in item&&`label`in item?serializeValue(item.value):serializeValue(item)}function resolveSelectedLabel(value,items,itemToStringLabel){function fallback$1(){return stringifyAsLabel(value,itemToStringLabel)}if(itemToStringLabel&&value!=null)return itemToStringLabel(value);if(value&&typeof value==`object`&&`label`in value&&value.label!=null)return value.label;if(items&&!Array.isArray(items))return items[value]??fallback$1();if(Array.isArray(items)){let flatItems=isGroupedItems(items)?items.flatMap(g=>g.items):items;if(typeof value!=`object`||!value){let match=flatItems.find(item=>item.value===value);return match&&match.label!=null?match.label:fallback$1()}if(`value`in value){let match=flatItems.find(item=>item&&item.value===value.value);if(match&&match.label!=null)return match.label}}return fallback$1()}function resolveMultipleLabels(values,items,itemToStringLabel){return values.reduce((acc,value,index$4)=>(index$4>0&&acc.push(`, `),acc.push((0,import_jsx_runtime.jsx)(import_react.Fragment,{children:resolveSelectedLabel(value,items,itemToStringLabel)},index$4)),acc),[])}const selectors$1={id:createSelector(state$1=>state$1.id),modal:createSelector(state$1=>state$1.modal),multiple:createSelector(state$1=>state$1.multiple),items:createSelector(state$1=>state$1.items),itemToStringLabel:createSelector(state$1=>state$1.itemToStringLabel),itemToStringValue:createSelector(state$1=>state$1.itemToStringValue),isItemEqualToValue:createSelector(state$1=>state$1.isItemEqualToValue),value:createSelector(state$1=>state$1.value),hasSelectedValue:createSelector(state$1=>{let{value,multiple,itemToStringValue}=state$1;return value==null?!1:multiple&&Array.isArray(value)?value.length>0:stringifyAsValue(value,itemToStringValue)!==``}),hasNullItemLabel:createSelector((state$1,enabled)=>enabled?hasNullItemLabel(state$1.items):!1),open:createSelector(state$1=>state$1.open),mounted:createSelector(state$1=>state$1.mounted),forceMount:createSelector(state$1=>state$1.forceMount),transitionStatus:createSelector(state$1=>state$1.transitionStatus),openMethod:createSelector(state$1=>state$1.openMethod),activeIndex:createSelector(state$1=>state$1.activeIndex),selectedIndex:createSelector(state$1=>state$1.selectedIndex),isActive:createSelector((state$1,index$4)=>state$1.activeIndex===index$4),isSelected:createSelector((state$1,index$4,candidate)=>{let comparer=state$1.isItemEqualToValue,storeValue=state$1.value;return state$1.multiple?Array.isArray(storeValue)&&storeValue.some(item=>compareItemEquality(item,candidate,comparer)):state$1.selectedIndex===index$4&&state$1.selectedIndex!==null?!0:compareItemEquality(storeValue,candidate,comparer)}),isSelectedByFocus:createSelector((state$1,index$4)=>state$1.selectedIndex===index$4),popupProps:createSelector(state$1=>state$1.popupProps),triggerProps:createSelector(state$1=>state$1.triggerProps),triggerElement:createSelector(state$1=>state$1.triggerElement),positionerElement:createSelector(state$1=>state$1.positionerElement),listElement:createSelector(state$1=>state$1.listElement),scrollUpArrowVisible:createSelector(state$1=>state$1.scrollUpArrowVisible),scrollDownArrowVisible:createSelector(state$1=>state$1.scrollDownArrowVisible),hasScrollArrows:createSelector(state$1=>state$1.hasScrollArrows)};function useValueChanged(value,onChange){let valueRef=import_react.useRef(value),onChangeCallback=useStableCallback(onChange);useIsoLayoutEffect(()=>{valueRef.current!==value&&onChangeCallback(valueRef.current)},[value,onChangeCallback]),useIsoLayoutEffect(()=>{valueRef.current=value},[value])}function SelectRoot(props){let{id,value:valueProp,defaultValue=null,onValueChange,open:openProp,defaultOpen=!1,onOpenChange,name:nameProp,disabled:disabledProp=!1,readOnly:readOnly$1=!1,required=!1,modal=!0,actionsRef,inputRef,onOpenChangeComplete,items,multiple=!1,itemToStringLabel,itemToStringValue,isItemEqualToValue=defaultItemEquality,highlightItemOnHover=!0,children}=props,{clearErrors}=useFormContext(),{setDirty,setTouched,setFocused,shouldValidateOnChange,validityData,setFilled,name:fieldName,disabled:fieldDisabled,validation,validationMode}=useFieldRootContext(),generatedId=useLabelableId({id}),disabled$1=fieldDisabled||disabledProp,name$2=fieldName??nameProp,[value,setValueUnwrapped]=useControlled({controlled:valueProp,default:multiple?defaultValue??EMPTY_ARRAY:defaultValue,name:`Select`,state:`value`}),[open,setOpenUnwrapped]=useControlled({controlled:openProp,default:defaultOpen,name:`Select`,state:`open`}),listRef=import_react.useRef([]),labelsRef=import_react.useRef([]),popupRef=import_react.useRef(null),scrollHandlerRef=import_react.useRef(null),scrollArrowsMountedCountRef=import_react.useRef(0),valueRef=import_react.useRef(null),valuesRef=import_react.useRef([]),typingRef=import_react.useRef(!1),keyboardActiveRef=import_react.useRef(!1),selectedItemTextRef=import_react.useRef(null),selectionRef=import_react.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}),alignItemWithTriggerActiveRef=import_react.useRef(!1),{mounted,setMounted,transitionStatus}=useTransitionStatus(open),{openMethod,triggerProps:interactionTypeProps,reset:resetOpenInteractionType}=useOpenInteractionType(open),store=useRefWithInit(()=>new Store({id:generatedId,modal,multiple,itemToStringLabel,itemToStringValue,isItemEqualToValue,value,open,mounted,transitionStatus,items,forceMount:!1,openMethod:null,activeIndex:null,selectedIndex:null,popupProps:{},triggerProps:{},triggerElement:null,positionerElement:null,listElement:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1,hasScrollArrows:!1})).current,activeIndex=useStore(store,selectors$1.activeIndex),selectedIndex=useStore(store,selectors$1.selectedIndex),triggerElement=useStore(store,selectors$1.triggerElement),positionerElement=useStore(store,selectors$1.positionerElement),serializedValue=import_react.useMemo(()=>multiple&&Array.isArray(value)&&value.length===0?``:stringifyAsValue(value,itemToStringValue),[multiple,value,itemToStringValue]),fieldStringValue=import_react.useMemo(()=>multiple&&Array.isArray(value)?value.map(currentValue=>stringifyAsValue(currentValue,itemToStringValue)):stringifyAsValue(value,itemToStringValue),[multiple,value,itemToStringValue]),controlRef=useValueAsRef(store.state.triggerElement);useField({id:generatedId,commit:validation.commit,value,controlRef,name:name$2,getValue:()=>fieldStringValue});let initialValueRef=import_react.useRef(value);useIsoLayoutEffect(()=>{value!==initialValueRef.current&&store.set(`forceMount`,!0)},[store,value]),useIsoLayoutEffect(()=>{setFilled(multiple?Array.isArray(value)&&value.length>0:value!=null)},[multiple,value,setFilled]),useIsoLayoutEffect(function(){if(open)return;let registry=valuesRef.current;if(multiple){let currentValue=Array.isArray(value)?value:[];if(currentValue.length===0){store.set(`selectedIndex`,null);return}let lastValue=currentValue[currentValue.length-1],lastIndex=findItemIndex(registry,lastValue,isItemEqualToValue);store.set(`selectedIndex`,lastIndex===-1?null:lastIndex);return}let index$4=findItemIndex(registry,value,isItemEqualToValue);store.set(`selectedIndex`,index$4===-1?null:index$4)},[multiple,open,value,valuesRef,isItemEqualToValue,store]),useValueChanged(value,()=>{clearErrors(name$2),setDirty(value!==validityData.initialValue),shouldValidateOnChange()?validation.commit(value):validation.commit(value,!0)});let setOpen=useStableCallback((nextOpen,eventDetails)=>{if(onOpenChange?.(nextOpen,eventDetails),!eventDetails.isCanceled&&(setOpenUnwrapped(nextOpen),!nextOpen&&(eventDetails.reason===`focus-out`||eventDetails.reason===`outside-press`)&&(setTouched(!0),setFocused(!1),validationMode===`onBlur`&&validation.commit(value)),!nextOpen&&store.state.activeIndex!==null)){let activeOption=listRef.current[store.state.activeIndex];queueMicrotask(()=>{activeOption?.setAttribute(`tabindex`,`-1`)})}}),handleUnmount=useStableCallback(()=>{setMounted(!1),store.set(`activeIndex`,null),resetOpenInteractionType(),onOpenChangeComplete?.(!1)});useOpenChangeComplete({enabled:!actionsRef,open,ref:popupRef,onComplete(){open||handleUnmount()}}),import_react.useImperativeHandle(actionsRef,()=>({unmount:handleUnmount}),[handleUnmount]);let setValue=useStableCallback((nextValue,eventDetails)=>{onValueChange?.(nextValue,eventDetails),!eventDetails.isCanceled&&setValueUnwrapped(nextValue)}),handleScrollArrowVisibility=useStableCallback(()=>{let scroller=store.state.listElement||popupRef.current;if(!scroller)return;let viewportTop=scroller.scrollTop,viewportBottom=scroller.scrollTop+scroller.clientHeight,shouldShowUp=viewportTop>1,shouldShowDown=viewportBottom<scroller.scrollHeight-1;store.state.scrollUpArrowVisible!==shouldShowUp&&store.set(`scrollUpArrowVisible`,shouldShowUp),store.state.scrollDownArrowVisible!==shouldShowDown&&store.set(`scrollDownArrowVisible`,shouldShowDown)}),floatingContext=useFloatingRootContext({open,onOpenChange:setOpen,elements:{reference:triggerElement,floating:positionerElement}}),{getReferenceProps,getFloatingProps,getItemProps}=useInteractions([useClick(floatingContext,{enabled:!readOnly$1&&!disabled$1,event:`mousedown`}),useDismiss(floatingContext,{bubbles:!1}),useListNavigation(floatingContext,{enabled:!readOnly$1&&!disabled$1,listRef,activeIndex,selectedIndex,disabledIndices:EMPTY_ARRAY,onNavigate(nextActiveIndex){nextActiveIndex===null&&!open||store.set(`activeIndex`,nextActiveIndex)},focusItemOnHover:!1}),useTypeahead(floatingContext,{enabled:!readOnly$1&&!disabled$1&&(open||!multiple),listRef:labelsRef,activeIndex,selectedIndex,onMatch(index$4){open?store.set(`activeIndex`,index$4):setValue(valuesRef.current[index$4],createChangeEventDetails(`none`))},onTypingChange(typing){typingRef.current=typing}})]),mergedTriggerProps=import_react.useMemo(()=>mergeProps(getReferenceProps(),interactionTypeProps,generatedId?{id:generatedId}:EMPTY_OBJECT),[getReferenceProps,interactionTypeProps,generatedId]);useOnFirstRender(()=>{store.update({popupProps:getFloatingProps(),triggerProps:mergedTriggerProps})}),useIsoLayoutEffect(()=>{store.update({id:generatedId,modal,multiple,value,open,mounted,transitionStatus,popupProps:getFloatingProps(),triggerProps:mergedTriggerProps,items,itemToStringLabel,itemToStringValue,isItemEqualToValue,openMethod})},[store,generatedId,modal,multiple,value,open,mounted,transitionStatus,getFloatingProps,mergedTriggerProps,items,itemToStringLabel,itemToStringValue,isItemEqualToValue,openMethod]);let contextValue=import_react.useMemo(()=>({store,name:name$2,required,disabled:disabled$1,readOnly:readOnly$1,multiple,itemToStringLabel,itemToStringValue,highlightItemOnHover,setValue,setOpen,listRef,popupRef,scrollHandlerRef,handleScrollArrowVisibility,scrollArrowsMountedCountRef,getItemProps,events:floatingContext.context.events,valueRef,valuesRef,labelsRef,typingRef,selectionRef,selectedItemTextRef,validation,onOpenChangeComplete,keyboardActiveRef,alignItemWithTriggerActiveRef,initialValueRef}),[store,name$2,required,disabled$1,readOnly$1,multiple,itemToStringLabel,itemToStringValue,highlightItemOnHover,setValue,setOpen,getItemProps,floatingContext.context.events,validation,onOpenChangeComplete,handleScrollArrowVisibility]),ref=useMergedRefs(inputRef,validation.inputRef),hasMultipleSelection=multiple&&Array.isArray(value)&&value.length>0,hiddenInputs=import_react.useMemo(()=>!multiple||!Array.isArray(value)||!name$2?null:value.map(v$1=>{let currentSerializedValue=stringifyAsValue(v$1,itemToStringValue);return(0,import_jsx_runtime.jsx)(`input`,{type:`hidden`,name:name$2,value:currentSerializedValue},currentSerializedValue)}),[multiple,value,name$2,itemToStringValue]);return(0,import_jsx_runtime.jsx)(SelectRootContext.Provider,{value:contextValue,children:(0,import_jsx_runtime.jsxs)(SelectFloatingContext.Provider,{value:floatingContext,children:[children,(0,import_jsx_runtime.jsx)(`input`,{...validation.getInputValidationProps({onFocus(){store.state.triggerElement?.focus({focusVisible:!0})},onChange(event){if(event.nativeEvent.defaultPrevented)return;let nextValue=event.target.value,details=createChangeEventDetails(none$3,event.nativeEvent);function handleChange(){if(multiple)return;let matchingValue=valuesRef.current.find(v$1=>stringifyAsValue(v$1,itemToStringValue).toLowerCase()===nextValue.toLowerCase());matchingValue!=null&&(setDirty(matchingValue!==validityData.initialValue),setValue(matchingValue,details),shouldValidateOnChange()&&validation.commit(matchingValue))}store.set(`forceMount`,!0),queueMicrotask(handleChange)}}),name:multiple?void 0:name$2,value:serializedValue,disabled:disabled$1,required:required&&!hasMultipleSelection,readOnly:readOnly$1,ref,style:name$2?visuallyHiddenInput:visuallyHidden,tabIndex:-1,"aria-hidden":!0}),hiddenInputs]})})}var BOUNDARY_OFFSET=2,SELECTED_DELAY=400,UNSELECTED_DELAY=200,stateAttributesMapping$9={...pressableTriggerOpenStateMapping,...fieldValidityMapping,value:()=>null};const SelectTrigger$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,disabled:disabledProp=!1,nativeButton=!0,...elementProps}=componentProps,{setTouched,setFocused,validationMode,state:fieldState,disabled:fieldDisabled}=useFieldRootContext(),{labelId}=useLabelableContext(),{store,setOpen,selectionRef,validation,readOnly:readOnly$1,required,alignItemWithTriggerActiveRef,disabled:selectDisabled,keyboardActiveRef}=useSelectRootContext(),disabled$1=fieldDisabled||selectDisabled||disabledProp,open=useStore(store,selectors$1.open),value=useStore(store,selectors$1.value),triggerProps=useStore(store,selectors$1.triggerProps),positionerElement=useStore(store,selectors$1.positionerElement),listElement=useStore(store,selectors$1.listElement),rootId=useStore(store,selectors$1.id),hasSelectedValue=useStore(store,selectors$1.hasSelectedValue),shouldCheckNullItemLabel=!hasSelectedValue&&open,hasNullItemLabel$1=useStore(store,selectors$1.hasNullItemLabel,shouldCheckNullItemLabel),id=idProp??rootId;useLabelableId({id});let positionerRef=useValueAsRef(positionerElement),triggerRef=import_react.useRef(null),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),mergedRef=useMergedRefs(forwardedRef,triggerRef,buttonRef,useStableCallback(element$3=>{store.set(`triggerElement`,element$3)})),timeoutFocus=useTimeout(),timeoutMouseDown=useTimeout(),selectedDelayTimeout=useTimeout(),unselectedDelayTimeout=useTimeout();import_react.useEffect(()=>{if(open)return hasSelectedValue||hasNullItemLabel$1?unselectedDelayTimeout.start(UNSELECTED_DELAY,()=>{selectionRef.current.allowUnselectedMouseUp=!0,selectedDelayTimeout.start(UNSELECTED_DELAY,()=>{selectionRef.current.allowSelectedMouseUp=!0})}):selectedDelayTimeout.start(SELECTED_DELAY,()=>{selectionRef.current.allowUnselectedMouseUp=!0,selectionRef.current.allowSelectedMouseUp=!0}),()=>{selectedDelayTimeout.clear(),unselectedDelayTimeout.clear()};selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1},timeoutMouseDown.clear()},[open,hasSelectedValue,hasNullItemLabel$1,selectionRef,timeoutMouseDown,selectedDelayTimeout,unselectedDelayTimeout]);let ariaControlsId=import_react.useMemo(()=>listElement?.id??getFloatingFocusElement(positionerElement)?.id,[listElement,positionerElement]),props=mergeProps(triggerProps,{id,role:`combobox`,"aria-expanded":open?`true`:`false`,"aria-haspopup":`listbox`,"aria-controls":open?ariaControlsId:void 0,"aria-labelledby":labelId,"aria-readonly":readOnly$1||void 0,"aria-required":required||void 0,tabIndex:disabled$1?-1:0,ref:mergedRef,onFocus(event){setFocused(!0),open&&alignItemWithTriggerActiveRef.current&&setOpen(!1,createChangeEventDetails(none$3,event.nativeEvent)),timeoutFocus.start(0,()=>{store.set(`forceMount`,!0)})},onBlur(event){contains(positionerElement,event.relatedTarget)||(setTouched(!0),setFocused(!1),validationMode===`onBlur`&&validation.commit(value))},onPointerMove(){keyboardActiveRef.current=!1},onKeyDown(){keyboardActiveRef.current=!0},onMouseDown(event){if(open)return;let doc$1=ownerDocument(event.currentTarget);function handleMouseUp(mouseEvent){if(!triggerRef.current)return;let mouseUpTarget=mouseEvent.target;if(contains(triggerRef.current,mouseUpTarget)||contains(positionerRef.current,mouseUpTarget)||mouseUpTarget===triggerRef.current)return;let bounds=getPseudoElementBounds(triggerRef.current);mouseEvent.clientX>=bounds.left-BOUNDARY_OFFSET&&mouseEvent.clientX<=bounds.right+BOUNDARY_OFFSET&&mouseEvent.clientY>=bounds.top-BOUNDARY_OFFSET&&mouseEvent.clientY<=bounds.bottom+BOUNDARY_OFFSET||setOpen(!1,createChangeEventDetails(cancelOpen,mouseEvent))}timeoutMouseDown.start(0,()=>{doc$1.addEventListener(`mouseup`,handleMouseUp,{once:!0})})}},validation.getValidationProps,elementProps,getButtonProps);props.role=`combobox`;let state$1=import_react.useMemo(()=>({...fieldState,open,disabled:disabled$1,value,readOnly:readOnly$1,placeholder:!hasSelectedValue}),[fieldState,open,disabled$1,value,readOnly$1,hasSelectedValue]);return useRenderElement(`button`,componentProps,{ref:[forwardedRef,triggerRef],state:state$1,stateAttributesMapping:stateAttributesMapping$9,props})});var stateAttributesMapping$8={value:()=>null};const SelectValue$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,children:childrenProp,placeholder,...elementProps}=componentProps,{store,valueRef}=useSelectRootContext(),value=useStore(store,selectors$1.value),items=useStore(store,selectors$1.items),itemToStringLabel=useStore(store,selectors$1.itemToStringLabel),hasSelectedValue=useStore(store,selectors$1.hasSelectedValue),shouldCheckNullItemLabel=!hasSelectedValue&&placeholder!=null&&childrenProp==null,hasNullLabel=useStore(store,selectors$1.hasNullItemLabel,shouldCheckNullItemLabel),state$1=import_react.useMemo(()=>({value,placeholder:!hasSelectedValue}),[value,hasSelectedValue]),children=null;return children=typeof childrenProp==`function`?childrenProp(value):childrenProp??(!hasSelectedValue&&placeholder!=null&&!hasNullLabel?placeholder:Array.isArray(value)?resolveMultipleLabels(value,items,itemToStringLabel):resolveSelectedLabel(value,items,itemToStringLabel)),useRenderElement(`span`,componentProps,{state:state$1,ref:[forwardedRef,valueRef],props:[{children},elementProps],stateAttributesMapping:stateAttributesMapping$8})}),SelectIcon=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,{store}=useSelectRootContext(),open=useStore(store,selectors$1.open);return useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({open}),[open]),ref:forwardedRef,props:[{"aria-hidden":!0,children:`▼`},elementProps],stateAttributesMapping:triggerOpenStateMapping})}),SelectPortalContext=import_react.createContext(void 0),SelectPortal=import_react.forwardRef(function(portalProps,forwardedRef){let{store}=useSelectRootContext(),mounted=useStore(store,selectors$1.mounted),forceMount=useStore(store,selectors$1.forceMount);return mounted||forceMount?(0,import_jsx_runtime.jsx)(SelectPortalContext.Provider,{value:!0,children:(0,import_jsx_runtime.jsx)(FloatingPortal,{ref:forwardedRef,...portalProps})}):null}),SelectPositionerContext=import_react.createContext(void 0);function useSelectPositionerContext(){let context=import_react.useContext(SelectPositionerContext);if(!context)throw Error(formatErrorMessage(59));return context}function clearStyles(element$3,originalStyles){element$3&&Object.assign(element$3.style,originalStyles)}const LIST_FUNCTIONAL_STYLES={position:`relative`,maxHeight:`100%`,overflowX:`hidden`,overflowY:`auto`};var FIXED={position:`fixed`};const SelectPositioner=import_react.forwardRef(function(componentProps,forwardedRef){let{anchor,positionMethod=`absolute`,className,render,side=`bottom`,align=`center`,sideOffset=0,alignOffset=0,collisionBoundary=`clipping-ancestors`,collisionPadding,arrowPadding=5,sticky=!1,disableAnchorTracking,alignItemWithTrigger=!0,collisionAvoidance=DROPDOWN_COLLISION_AVOIDANCE,...elementProps}=componentProps,{store,listRef,labelsRef,alignItemWithTriggerActiveRef,selectedItemTextRef,valuesRef,initialValueRef,popupRef,setValue}=useSelectRootContext(),floatingRootContext=useSelectFloatingContext(),open=useStore(store,selectors$1.open),mounted=useStore(store,selectors$1.mounted),modal=useStore(store,selectors$1.modal),value=useStore(store,selectors$1.value),openMethod=useStore(store,selectors$1.openMethod),positionerElement=useStore(store,selectors$1.positionerElement),triggerElement=useStore(store,selectors$1.triggerElement),isItemEqualToValue=useStore(store,selectors$1.isItemEqualToValue),scrollUpArrowRef=import_react.useRef(null),scrollDownArrowRef=import_react.useRef(null),[controlledAlignItemWithTrigger,setControlledAlignItemWithTrigger]=import_react.useState(alignItemWithTrigger),alignItemWithTriggerActive=mounted&&controlledAlignItemWithTrigger&&openMethod!==`touch`;!mounted&&controlledAlignItemWithTrigger!==alignItemWithTrigger&&setControlledAlignItemWithTrigger(alignItemWithTrigger),useIsoLayoutEffect(()=>{mounted||(selectors$1.scrollUpArrowVisible(store.state)&&store.set(`scrollUpArrowVisible`,!1),selectors$1.scrollDownArrowVisible(store.state)&&store.set(`scrollDownArrowVisible`,!1))},[store,mounted]),import_react.useImperativeHandle(alignItemWithTriggerActiveRef,()=>alignItemWithTriggerActive),useScrollLock((alignItemWithTriggerActive||modal)&&open&&openMethod!==`touch`,triggerElement);let positioning=useAnchorPositioning({anchor,floatingRootContext,positionMethod,mounted,side,sideOffset,align,alignOffset,arrowPadding,collisionBoundary,collisionPadding,sticky,disableAnchorTracking:disableAnchorTracking??alignItemWithTriggerActive,collisionAvoidance,keepMounted:!0}),renderedSide=alignItemWithTriggerActive?`none`:positioning.side,positionerStyles=alignItemWithTriggerActive?FIXED:positioning.positionerStyles,defaultProps=import_react.useMemo(()=>{let hiddenStyles={};return open||(hiddenStyles.pointerEvents=`none`),{role:`presentation`,hidden:!mounted,style:{...positionerStyles,...hiddenStyles}}},[open,mounted,positionerStyles]),state$1=import_react.useMemo(()=>({open,side:renderedSide,align:positioning.align,anchorHidden:positioning.anchorHidden}),[open,renderedSide,positioning.align,positioning.anchorHidden]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,useStableCallback(element$4=>{store.set(`positionerElement`,element$4)})],state:state$1,stateAttributesMapping:popupStateMapping,props:[defaultProps,elementProps]}),prevMapSizeRef=import_react.useRef(0),onMapChange=useStableCallback(map=>{if(map.size===0&&prevMapSizeRef.current===0||valuesRef.current.length===0)return;let prevSize=prevMapSizeRef.current;if(prevMapSizeRef.current=map.size,map.size===prevSize)return;let eventDetails=createChangeEventDetails(none$3);if(prevSize!==0&&!store.state.multiple&&value!==null&&findItemIndex(valuesRef.current,value,isItemEqualToValue)===-1){let initial=initialValueRef.current,nextValue=initial!=null&&itemIncludes(valuesRef.current,initial,isItemEqualToValue)?initial:null;setValue(nextValue,eventDetails),nextValue===null&&(store.set(`selectedIndex`,null),selectedItemTextRef.current=null)}if(prevSize!==0&&store.state.multiple&&Array.isArray(value)){let nextValue=value.filter(v$1=>itemIncludes(valuesRef.current,v$1,isItemEqualToValue));(nextValue.length!==value.length||nextValue.some(v$1=>!itemIncludes(value,v$1,isItemEqualToValue)))&&(setValue(nextValue,eventDetails),nextValue.length===0&&(store.set(`selectedIndex`,null),selectedItemTextRef.current=null))}if(open&&alignItemWithTriggerActive){store.update({scrollUpArrowVisible:!1,scrollDownArrowVisible:!1});let stylesToClear={height:``};clearStyles(positionerElement,stylesToClear),clearStyles(popupRef.current,stylesToClear)}}),contextValue=import_react.useMemo(()=>({...positioning,side:renderedSide,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollUpArrowRef,scrollDownArrowRef}),[positioning,renderedSide,alignItemWithTriggerActive,setControlledAlignItemWithTrigger]);return(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef:listRef,labelsRef,onMapChange,children:(0,import_jsx_runtime.jsxs)(SelectPositionerContext.Provider,{value:contextValue,children:[mounted&&modal&&(0,import_jsx_runtime.jsx)(InternalBackdrop,{inert:inertValue(!open),cutout:triggerElement}),element$3]})})});function isMouseWithinBounds(event){let targetRect=event.currentTarget.getBoundingClientRect();return targetRect.top+1<=event.clientY&&event.clientY<=targetRect.bottom-1&&targetRect.left+1<=event.clientX&&event.clientX<=targetRect.right-1}var DISABLE_SCROLLBAR_CLASS_NAME=`base-ui-disable-scrollbar`;const styleDisableScrollbar={className:DISABLE_SCROLLBAR_CLASS_NAME,getElement(nonce){return(0,import_jsx_runtime.jsx)(`style`,{nonce,href:DISABLE_SCROLLBAR_CLASS_NAME,precedence:`base-ui:low`,children:`.${DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.${DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}`})}};function clamp(val,min$1=-(2**53-1),max$1=2**53-1){return Math.max(min$1,Math.min(val,max$1))}const CSPContext=import_react.createContext(void 0);var DEFAULT_CSP_CONTEXT_VALUE={disableStyleElements:!1};function useCSPContext(){return import_react.useContext(CSPContext)??DEFAULT_CSP_CONTEXT_VALUE}var import_react_dom$4=__toESM(require_react_dom()),stateAttributesMapping$7={...popupStateMapping,...transitionStatusMapping};const SelectPopup$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{store,popupRef,onOpenChangeComplete,setOpen,valueRef,selectedItemTextRef,keyboardActiveRef,multiple,handleScrollArrowVisibility,scrollHandlerRef,highlightItemOnHover}=useSelectRootContext(),{side,align,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollDownArrowRef,scrollUpArrowRef}=useSelectPositionerContext(),insideToolbar=useToolbarRootContext(!0)!=null,floatingRootContext=useSelectFloatingContext(),{nonce,disableStyleElements}=useCSPContext(),highlightTimeout=useTimeout(),id=useStore(store,selectors$1.id),open=useStore(store,selectors$1.open),mounted=useStore(store,selectors$1.mounted),popupProps=useStore(store,selectors$1.popupProps),transitionStatus=useStore(store,selectors$1.transitionStatus),triggerElement=useStore(store,selectors$1.triggerElement),positionerElement=useStore(store,selectors$1.positionerElement),listElement=useStore(store,selectors$1.listElement),initialHeightRef=import_react.useRef(0),reachedMaxHeightRef=import_react.useRef(!1),maxHeightRef=import_react.useRef(0),initialPlacedRef=import_react.useRef(!1),originalPositionerStylesRef=import_react.useRef({}),scrollArrowFrame=useAnimationFrame(),handleScroll=useStableCallback(scroller=>{if(!positionerElement||!popupRef.current||!initialPlacedRef.current)return;if(reachedMaxHeightRef.current||!alignItemWithTriggerActive){handleScrollArrowVisibility();return}let isTopPositioned=positionerElement.style.top===`0px`,isBottomPositioned=positionerElement.style.bottom===`0px`,currentHeight=positionerElement.getBoundingClientRect().height,doc$1=ownerDocument(positionerElement),positionerStyles=getComputedStyle(positionerElement),marginTop=parseFloat(positionerStyles.marginTop),marginBottom=parseFloat(positionerStyles.marginBottom),maxPopupHeight=getMaxPopupHeight(getComputedStyle(popupRef.current)),viewportHeight=doc$1.documentElement.clientHeight-marginTop-marginBottom,scrollTop=scroller.scrollTop,maxScrollTop=scroller.scrollHeight-scroller.clientHeight,nextPositionerHeight=0,nextScrollTop=null,setReachedMax=!1;if(isTopPositioned){let idealHeight=currentHeight+(maxScrollTop-scrollTop),nextHeight=Math.min(idealHeight,viewportHeight);nextPositionerHeight=nextHeight,nextHeight===viewportHeight?setReachedMax=!0:nextScrollTop=maxScrollTop}else if(isBottomPositioned){let diff=scrollTop-0,idealHeight=currentHeight+diff,nextHeight=Math.min(idealHeight,viewportHeight),overshoot=idealHeight-viewportHeight;nextPositionerHeight=nextHeight,nextHeight===viewportHeight?(setReachedMax=!0,scrollTop<maxScrollTop&&(nextScrollTop=scrollTop-(diff-overshoot))):nextScrollTop=0}nextPositionerHeight!==0&&(positionerElement.style.height=`${nextPositionerHeight}px`),nextScrollTop!=null&&(scroller.scrollTop=nextScrollTop),(setReachedMax||nextPositionerHeight>=maxPopupHeight)&&(reachedMaxHeightRef.current=!0),handleScrollArrowVisibility()});import_react.useImperativeHandle(scrollHandlerRef,()=>handleScroll,[handleScroll]),useOpenChangeComplete({open,ref:popupRef,onComplete(){open&&onOpenChangeComplete?.(!0)}});let state$1=import_react.useMemo(()=>({open,transitionStatus,side,align}),[open,transitionStatus,side,align]);useIsoLayoutEffect(()=>{!positionerElement||!popupRef.current||Object.keys(originalPositionerStylesRef.current).length||(originalPositionerStylesRef.current={top:positionerElement.style.top||`0`,left:positionerElement.style.left||`0`,right:positionerElement.style.right,height:positionerElement.style.height,bottom:positionerElement.style.bottom,minHeight:positionerElement.style.minHeight,maxHeight:positionerElement.style.maxHeight,marginTop:positionerElement.style.marginTop,marginBottom:positionerElement.style.marginBottom})},[popupRef,positionerElement]),useIsoLayoutEffect(()=>{open||alignItemWithTriggerActive||(initialPlacedRef.current=!1,reachedMaxHeightRef.current=!1,initialHeightRef.current=0,maxHeightRef.current=0,clearStyles(positionerElement,originalPositionerStylesRef.current))},[open,alignItemWithTriggerActive,positionerElement,popupRef]),useIsoLayoutEffect(()=>{let popupElement=popupRef.current;if(!(!open||!triggerElement||!positionerElement||!popupElement||store.state.transitionStatus===`ending`)){if(!alignItemWithTriggerActive){initialPlacedRef.current=!0,scrollArrowFrame.request(handleScrollArrowVisibility),popupElement.style.removeProperty(`--transform-origin`);return}queueMicrotask(()=>{let restoreTransformStyles=unsetTransformStyles(popupElement);popupElement.style.removeProperty(`--transform-origin`);try{let positionerStyles=getComputedStyle(positionerElement),popupStyles=getComputedStyle(popupElement),doc$1=ownerDocument(triggerElement),win=getWindow(positionerElement),triggerRect=triggerElement.getBoundingClientRect(),positionerRect=positionerElement.getBoundingClientRect(),triggerX=triggerRect.left,triggerHeight=triggerRect.height,scroller=listElement||popupElement,scrollHeight=scroller.scrollHeight,borderBottom=parseFloat(popupStyles.borderBottomWidth),marginTop=parseFloat(positionerStyles.marginTop)||10,marginBottom=parseFloat(positionerStyles.marginBottom)||10,minHeight=parseFloat(positionerStyles.minHeight)||100,maxPopupHeight=getMaxPopupHeight(popupStyles),paddingLeft=5,paddingRight=5,triggerCollisionThreshold=20,viewportHeight=doc$1.documentElement.clientHeight-marginTop-marginBottom,viewportWidth=doc$1.documentElement.clientWidth,availableSpaceBeneathTrigger=viewportHeight-triggerRect.bottom+triggerHeight,textElement=selectedItemTextRef.current,valueElement=valueRef.current,textRect,offsetX=0,offsetY=0;if(textElement&&valueElement){let valueRect=valueElement.getBoundingClientRect();textRect=textElement.getBoundingClientRect();let valueLeftFromTriggerLeft=valueRect.left-triggerX,textLeftFromPositionerLeft=textRect.left-positionerRect.left,valueCenterFromPositionerTop=valueRect.top-triggerRect.top+valueRect.height/2,textCenterFromTriggerTop=textRect.top-positionerRect.top+textRect.height/2;offsetX=valueLeftFromTriggerLeft-textLeftFromPositionerLeft,offsetY=textCenterFromTriggerTop-valueCenterFromPositionerTop}let idealHeight=availableSpaceBeneathTrigger+offsetY+marginBottom+borderBottom,height=Math.min(viewportHeight,idealHeight),maxHeight=viewportHeight-marginTop-marginBottom,scrollTop=idealHeight-height,left=Math.max(5,triggerX+offsetX),maxRight=viewportWidth-5,rightOverflow=Math.max(0,left+positionerRect.width-maxRight);positionerElement.style.left=`${left-rightOverflow}px`,positionerElement.style.height=`${height}px`,positionerElement.style.maxHeight=`auto`,positionerElement.style.marginTop=`${marginTop}px`,positionerElement.style.marginBottom=`${marginBottom}px`,popupElement.style.height=`100%`;let maxScrollTop=scroller.scrollHeight-scroller.clientHeight,isTopPositioned=scrollTop>=maxScrollTop;isTopPositioned&&(height=Math.min(viewportHeight,positionerRect.height)-(scrollTop-maxScrollTop));let fallbackToAlignPopupToTrigger=triggerRect.top<20||triggerRect.bottom>viewportHeight-20||height<Math.min(scrollHeight,minHeight),isPinchZoomed=(win.visualViewport?.scale??1)!==1&&isWebKit;if(fallbackToAlignPopupToTrigger||isPinchZoomed){initialPlacedRef.current=!0,clearStyles(positionerElement,originalPositionerStylesRef.current),import_react_dom$4.flushSync(()=>setControlledAlignItemWithTrigger(!1));return}if(isTopPositioned){let topOffset=Math.max(0,viewportHeight-idealHeight);positionerElement.style.top=positionerRect.height>=maxHeight?`0`:`${topOffset}px`,positionerElement.style.height=`${height}px`,scroller.scrollTop=scroller.scrollHeight-scroller.clientHeight,initialHeightRef.current=Math.max(minHeight,height)}else positionerElement.style.bottom=`0`,initialHeightRef.current=Math.max(minHeight,height),scroller.scrollTop=scrollTop;if(textRect){let popupTop=positionerRect.top,popupHeight=positionerRect.height,textCenterY=textRect.top+textRect.height/2,clampedY=clamp(popupHeight>0?(textCenterY-popupTop)/popupHeight*100:50,0,100);popupElement.style.setProperty(`--transform-origin`,`50% ${clampedY}%`)}(initialHeightRef.current===viewportHeight||height>=maxPopupHeight)&&(reachedMaxHeightRef.current=!0),handleScrollArrowVisibility(),setTimeout(()=>{initialPlacedRef.current=!0})}finally{restoreTransformStyles()}})}},[store,open,positionerElement,triggerElement,valueRef,selectedItemTextRef,popupRef,handleScrollArrowVisibility,alignItemWithTriggerActive,setControlledAlignItemWithTrigger,scrollArrowFrame,scrollDownArrowRef,scrollUpArrowRef,listElement]),import_react.useEffect(()=>{if(!alignItemWithTriggerActive||!positionerElement||!open)return;let win=getWindow(positionerElement);function handleResize(event){setOpen(!1,createChangeEventDetails(`window-resize`,event))}return win.addEventListener(`resize`,handleResize),()=>{win.removeEventListener(`resize`,handleResize)}},[setOpen,alignItemWithTriggerActive,positionerElement,open]);let defaultProps={...listElement?{role:`presentation`,"aria-orientation":void 0}:{role:`listbox`,"aria-multiselectable":multiple||void 0,id:`${id}-list`},onKeyDown(event){keyboardActiveRef.current=!0,insideToolbar&&COMPOSITE_KEYS.has(event.key)&&event.stopPropagation()},onMouseMove(){keyboardActiveRef.current=!1},onPointerLeave(event){if(!highlightItemOnHover||isMouseWithinBounds(event)||event.pointerType===`touch`)return;let popup=event.currentTarget;highlightTimeout.start(0,()=>{store.set(`activeIndex`,null),popup.focus({preventScroll:!0})})},onScroll(event){listElement||scrollHandlerRef.current?.(event.currentTarget)},...alignItemWithTriggerActive&&{style:listElement?{height:`100%`}:LIST_FUNCTIONAL_STYLES}},element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,popupRef],state:state$1,stateAttributesMapping:stateAttributesMapping$7,props:[popupProps,defaultProps,getDisabledMountTransitionStyles(transitionStatus),{className:!listElement&&alignItemWithTriggerActive?styleDisableScrollbar.className:void 0},elementProps]});return(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[!disableStyleElements&&styleDisableScrollbar.getElement(nonce),(0,import_jsx_runtime.jsx)(FloatingFocusManager,{context:floatingRootContext,modal:!1,disabled:!mounted,restoreFocus:!0,children:element$3})]})});function getMaxPopupHeight(popupStyles){let maxHeightStyle=popupStyles.maxHeight||``;return maxHeightStyle.endsWith(`px`)&&parseFloat(maxHeightStyle)||1/0}var UNSET_TRANSFORM_STYLES={transform:`none`,scale:`1`,translate:`0 0`};function restoreInlineStyleProperty(style$1,property,value){value?style$1.setProperty(property,value):style$1.removeProperty(property)}function unsetTransformStyles(popupElement){let{style:style$1}=popupElement,originalStyles={},props=Object.keys(UNSET_TRANSFORM_STYLES);for(let prop of props)originalStyles[prop]=style$1.getPropertyValue(prop),style$1.setProperty(prop,UNSET_TRANSFORM_STYLES[prop]);return()=>{for(let prop of props)restoreInlineStyleProperty(style$1,prop,originalStyles[prop])}}const SelectList=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,...elementProps}=componentProps,{store,scrollHandlerRef}=useSelectRootContext(),{alignItemWithTriggerActive}=useSelectPositionerContext(),hasScrollArrows=useStore(store,selectors$1.hasScrollArrows),openMethod=useStore(store,selectors$1.openMethod),multiple=useStore(store,selectors$1.multiple),defaultProps={id:`${useStore(store,selectors$1.id)}-list`,role:`listbox`,"aria-multiselectable":multiple||void 0,onScroll(event){scrollHandlerRef.current?.(event.currentTarget)},...alignItemWithTriggerActive&&{style:LIST_FUNCTIONAL_STYLES},className:hasScrollArrows&&openMethod!==`touch`?styleDisableScrollbar.className:void 0};return useRenderElement(`div`,componentProps,{ref:[forwardedRef,useStableCallback(element$3=>{store.set(`listElement`,element$3)})],props:[defaultProps,elementProps]})}),SelectItemContext=import_react.createContext(void 0);function useSelectItemContext(){let context=import_react.useContext(SelectItemContext);if(!context)throw Error(formatErrorMessage(57));return context}const SelectItem$1=import_react.memo(import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,value=null,label,disabled:disabled$1=!1,nativeButton=!1,...elementProps}=componentProps,textRef=import_react.useRef(null),listItem$1=useCompositeListItem({label,textRef,indexGuessBehavior:IndexGuessBehavior.GuessFromOrder}),{store,getItemProps,setOpen,setValue,selectionRef,typingRef,valuesRef,keyboardActiveRef,multiple,highlightItemOnHover}=useSelectRootContext(),highlightTimeout=useTimeout(),highlighted=useStore(store,selectors$1.isActive,listItem$1.index),selected=useStore(store,selectors$1.isSelected,listItem$1.index,value),selectedByFocus=useStore(store,selectors$1.isSelectedByFocus,listItem$1.index),isItemEqualToValue=useStore(store,selectors$1.isItemEqualToValue),index$4=listItem$1.index,hasRegistered=index$4!==-1,itemRef=import_react.useRef(null),indexRef=useValueAsRef(index$4);useIsoLayoutEffect(()=>{if(!hasRegistered)return;let values=valuesRef.current;return values[index$4]=value,()=>{delete values[index$4]}},[hasRegistered,index$4,value,valuesRef]),useIsoLayoutEffect(()=>{if(!hasRegistered)return;let selectedValue=store.state.value,candidate=selectedValue;multiple&&Array.isArray(selectedValue)&&selectedValue.length>0&&(candidate=selectedValue[selectedValue.length-1]),candidate!==void 0&&compareItemEquality(candidate,value,isItemEqualToValue)&&store.set(`selectedIndex`,index$4)},[hasRegistered,index$4,multiple,isItemEqualToValue,store,value]);let state$1=import_react.useMemo(()=>({disabled:disabled$1,selected,highlighted}),[disabled$1,selected,highlighted]),rootProps=getItemProps({active:highlighted,selected});rootProps.onFocus=void 0,rootProps.id=void 0;let lastKeyRef=import_react.useRef(null),pointerTypeRef=import_react.useRef(`mouse`),didPointerDownRef=import_react.useRef(!1),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,focusableWhenDisabled:!0,native:nativeButton});function commitSelection(event){let selectedValue=store.state.value;if(multiple){let currentValue=Array.isArray(selectedValue)?selectedValue:[];setValue(selected?removeItem(currentValue,value,isItemEqualToValue):[...currentValue,value],createChangeEventDetails(itemPress,event))}else setValue(value,createChangeEventDetails(itemPress,event)),setOpen(!1,createChangeEventDetails(itemPress,event))}let defaultProps={role:`option`,"aria-selected":selected,tabIndex:highlighted?0:-1,onFocus(){store.set(`activeIndex`,index$4)},onMouseEnter(){!keyboardActiveRef.current&&store.state.selectedIndex===null&&store.set(`activeIndex`,index$4)},onMouseMove(){highlightItemOnHover&&store.set(`activeIndex`,index$4)},onMouseLeave(event){!highlightItemOnHover||keyboardActiveRef.current||isMouseWithinBounds(event)||highlightTimeout.start(0,()=>{store.state.activeIndex===index$4&&store.set(`activeIndex`,null)})},onTouchStart(){selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}},onKeyDown(event){lastKeyRef.current=event.key,store.set(`activeIndex`,index$4)},onClick(event){didPointerDownRef.current=!1,!(event.type===`keydown`&&lastKeyRef.current===null)&&(disabled$1||lastKeyRef.current===` `&&typingRef.current||pointerTypeRef.current!==`touch`&&!highlighted||(lastKeyRef.current=null,commitSelection(event.nativeEvent)))},onPointerEnter(event){pointerTypeRef.current=event.pointerType},onPointerDown(event){pointerTypeRef.current=event.pointerType,didPointerDownRef.current=!0},onMouseUp(event){if(disabled$1)return;if(didPointerDownRef.current){didPointerDownRef.current=!1;return}let disallowSelectedMouseUp=!selectionRef.current.allowSelectedMouseUp&&selected,disallowUnselectedMouseUp=!selectionRef.current.allowUnselectedMouseUp&&!selected;disallowSelectedMouseUp||disallowUnselectedMouseUp||pointerTypeRef.current!==`touch`&&!highlighted||commitSelection(event.nativeEvent)}},element$3=useRenderElement(`div`,componentProps,{ref:[buttonRef,forwardedRef,listItem$1.ref,itemRef],state:state$1,props:[rootProps,defaultProps,elementProps,getButtonProps]}),contextValue=import_react.useMemo(()=>({selected,indexRef,textRef,selectedByFocus,hasRegistered}),[selected,indexRef,textRef,selectedByFocus,hasRegistered]);return(0,import_jsx_runtime.jsx)(SelectItemContext.Provider,{value:contextValue,children:element$3})})),SelectItemIndicator=import_react.forwardRef(function(componentProps,forwardedRef){let keepMounted=componentProps.keepMounted??!1,{selected}=useSelectItemContext();return keepMounted||selected?(0,import_jsx_runtime.jsx)(Inner,{...componentProps,ref:forwardedRef}):null});var Inner=import_react.memo(import_react.forwardRef((componentProps,forwardedRef)=>{let{render,className,keepMounted,...elementProps}=componentProps,{selected}=useSelectItemContext(),indicatorRef=import_react.useRef(null),{transitionStatus,setMounted}=useTransitionStatus(selected),state$1=import_react.useMemo(()=>({selected,transitionStatus}),[selected,transitionStatus]),element$3=useRenderElement(`span`,componentProps,{ref:[forwardedRef,indicatorRef],state:state$1,props:[{"aria-hidden":!0,children:`✔️`},elementProps],stateAttributesMapping:transitionStatusMapping});return useOpenChangeComplete({open:selected,ref:indicatorRef,onComplete(){selected||setMounted(!1)}}),element$3}));const SelectItemText=import_react.memo(import_react.forwardRef(function(componentProps,forwardedRef){let{indexRef,textRef,selectedByFocus,hasRegistered}=useSelectItemContext(),{selectedItemTextRef}=useSelectRootContext(),{className,render,...elementProps}=componentProps;return useRenderElement(`div`,componentProps,{ref:[import_react.useCallback(node$1=>{if(!node$1||!hasRegistered)return;let hasNoSelectedItemText=selectedItemTextRef.current===null||!selectedItemTextRef.current.isConnected;(selectedByFocus||hasNoSelectedItemText&&indexRef.current===0)&&(selectedItemTextRef.current=node$1)},[selectedItemTextRef,indexRef,selectedByFocus,hasRegistered]),forwardedRef,textRef],props:elementProps})})),SelectScrollArrow=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,direction,keepMounted=!1,...elementProps}=componentProps,{store,popupRef,listRef,handleScrollArrowVisibility,scrollArrowsMountedCountRef}=useSelectRootContext(),{side,scrollDownArrowRef,scrollUpArrowRef}=useSelectPositionerContext(),stateVisible=useStore(store,direction===`up`?selectors$1.scrollUpArrowVisible:selectors$1.scrollDownArrowVisible),openMethod=useStore(store,selectors$1.openMethod),visible=stateVisible&&openMethod!==`touch`,timeout=useTimeout(),scrollArrowRef=direction===`up`?scrollUpArrowRef:scrollDownArrowRef,{transitionStatus,setMounted}=useTransitionStatus(visible);useIsoLayoutEffect(()=>(scrollArrowsMountedCountRef.current+=1,store.state.hasScrollArrows||store.set(`hasScrollArrows`,!0),()=>{scrollArrowsMountedCountRef.current=Math.max(0,scrollArrowsMountedCountRef.current-1),scrollArrowsMountedCountRef.current===0&&store.state.hasScrollArrows&&store.set(`hasScrollArrows`,!1)}),[store,scrollArrowsMountedCountRef]),useOpenChangeComplete({open:visible,ref:scrollArrowRef,onComplete(){visible||setMounted(!1)}});let state$1=import_react.useMemo(()=>({direction,visible,side,transitionStatus}),[direction,visible,side,transitionStatus]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,scrollArrowRef],state:state$1,props:[{"aria-hidden":!0,children:direction===`up`?`▲`:`▼`,style:{position:`absolute`},onMouseMove(event){if(event.movementX===0&&event.movementY===0||timeout.isStarted())return;store.set(`activeIndex`,null);function scrollNextItem(){let scroller=store.state.listElement??popupRef.current;if(!scroller)return;store.set(`activeIndex`,null),handleScrollArrowVisibility();let isScrolledToTop=scroller.scrollTop===0,isScrolledToBottom$1=Math.round(scroller.scrollTop+scroller.clientHeight)>=scroller.scrollHeight;if(listRef.current.length===0&&(direction===`up`?store.set(`scrollUpArrowVisible`,!isScrolledToTop):store.set(`scrollDownArrowVisible`,!isScrolledToBottom$1)),direction===`up`&&isScrolledToTop||direction===`down`&&isScrolledToBottom$1){timeout.clear();return}if((store.state.listElement||popupRef.current)&&listRef.current&&listRef.current.length>0){let items=listRef.current,scrollArrowHeight=scrollArrowRef.current?.offsetHeight||0;if(direction===`up`){let firstVisibleIndex=0,scrollTop=scroller.scrollTop+scrollArrowHeight;for(let i$3=0;i$3<items.length;i$3+=1){let item=items[i$3];if(item&&item.offsetTop>=scrollTop){firstVisibleIndex=i$3;break}}let targetIndex=Math.max(0,firstVisibleIndex-1);if(targetIndex<firstVisibleIndex){let targetItem=items[targetIndex];targetItem&&(scroller.scrollTop=Math.max(0,targetItem.offsetTop-scrollArrowHeight))}else scroller.scrollTop=0}else{let lastVisibleIndex=items.length-1,scrollBottom=scroller.scrollTop+scroller.clientHeight-scrollArrowHeight;for(let i$3=0;i$3<items.length;i$3+=1){let item=items[i$3];if(item&&item.offsetTop+item.offsetHeight>scrollBottom){lastVisibleIndex=Math.max(0,i$3-1);break}}let targetIndex=Math.min(items.length-1,lastVisibleIndex+1);if(targetIndex>lastVisibleIndex){let targetItem=items[targetIndex];targetItem&&(scroller.scrollTop=targetItem.offsetTop+targetItem.offsetHeight-scroller.clientHeight+scrollArrowHeight)}else scroller.scrollTop=scroller.scrollHeight-scroller.clientHeight}}timeout.start(40,scrollNextItem)}timeout.start(40,scrollNextItem)},onMouseLeave(){timeout.clear()}},elementProps]});return visible||keepMounted?element$3:null}),SelectScrollDownArrow=import_react.forwardRef(function(props,forwardedRef){return(0,import_jsx_runtime.jsx)(SelectScrollArrow,{...props,ref:forwardedRef,direction:`down`})}),SelectScrollUpArrow=import_react.forwardRef(function(props,forwardedRef){return(0,import_jsx_runtime.jsx)(SelectScrollArrow,{...props,ref:forwardedRef,direction:`up`})});var Select=SelectRoot;function SelectTrigger({className,size:size$3=`default`,children,...props}){return(0,import_jsx_runtime.jsxs)(SelectTrigger$1,{className:cn(`relative inline-flex min-h-9 w-full min-w-36 select-none items-center justify-between gap-2 rounded-lg border border-input bg-background bg-clip-padding px-[calc(--spacing(3)-1px)] text-left text-base shadow-xs outline-none ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 focus-visible:border-ring focus-visible:ring-[3px] aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/16 data-disabled:pointer-events-none data-disabled:opacity-64 sm:min-h-8 sm:text-sm dark:bg-input/32 dark:not-in-data-[slot=group]:bg-clip-border dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-visible,[aria-invalid],[data-pressed]]:shadow-none`,size$3===`sm`&&`min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7`,size$3===`lg`&&`min-h-10 sm:min-h-9`,className),"data-slot":`select-trigger`,...props,children:[children,(0,import_jsx_runtime.jsx)(SelectIcon,{"data-slot":`select-icon`,children:(0,import_jsx_runtime.jsx)(ChevronsUpDown,{className:`-me-1 size-4.5 opacity-80 sm:size-4`})})]})}function SelectValue({className,...props}){return(0,import_jsx_runtime.jsx)(SelectValue$1,{className:cn(`flex-1 truncate data-placeholder:text-muted-foreground`,className),"data-slot":`select-value`,...props})}function SelectPopup({className,children,sideOffset=4,alignItemWithTrigger=!0,...props}){return(0,import_jsx_runtime.jsx)(SelectPortal,{children:(0,import_jsx_runtime.jsx)(SelectPositioner,{alignItemWithTrigger,className:`z-50 select-none`,"data-slot":`select-positioner`,sideOffset,children:(0,import_jsx_runtime.jsxs)(SelectPopup$1,{className:`origin-(--transform-origin) transition-[scale,opacity] has-data-[side=none]:scale-100 has-data-starting-style:scale-98 has-data-starting-style:opacity-0 has-data-[side=none]:transition-none`,"data-slot":`select-popup`,...props,children:[(0,import_jsx_runtime.jsx)(SelectScrollUpArrow,{className:`top-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:top-px before:h-[200%] before:rounded-t-[calc(var(--radius-lg)-1px)] before:bg-linear-to-b before:from-50% before:from-popover`,"data-slot":`select-scroll-up-arrow`,children:(0,import_jsx_runtime.jsx)(ChevronUp,{className:`relative size-4.5 sm:size-4`})}),(0,import_jsx_runtime.jsx)(`span`,{className:`relative block h-full rounded-lg border bg-popover bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-lg dark:not-in-data-[slot=group]:bg-clip-border`,children:(0,import_jsx_runtime.jsx)(SelectList,{className:cn(`max-h-(--available-height) min-w-(--anchor-width) overflow-y-auto p-1`,className),"data-slot":`select-list`,children})}),(0,import_jsx_runtime.jsx)(SelectScrollDownArrow,{className:`bottom-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:bottom-px before:h-[200%] before:rounded-b-[calc(var(--radius-lg)-1px)] before:bg-linear-to-t before:from-50% before:from-popover`,"data-slot":`select-scroll-down-arrow`,children:(0,import_jsx_runtime.jsx)(ChevronDown,{className:`relative size-4.5 sm:size-4`})})]})})})}function SelectItem({className,children,...props}){return(0,import_jsx_runtime.jsxs)(SelectItem$1,{className:cn(`grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-pointer grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,className),"data-slot":`select-item`,...props,children:[(0,import_jsx_runtime.jsx)(SelectItemIndicator,{className:`col-start-1`,children:(0,import_jsx_runtime.jsx)(`svg`,{fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/1500/svg`,children:(0,import_jsx_runtime.jsx)(`path`,{d:`M5.252 12.7 10.2 18.63 18.748 5.37`})})}),(0,import_jsx_runtime.jsx)(SelectItemText,{className:`col-start-2 min-w-0`,children})]})}function SchemaSelector({value,onChange,schemas,disabled:disabled$1}){return(0,import_jsx_runtime.jsxs)(Select,{value,onValueChange:v$1=>v$1&&onChange(v$1),disabled:disabled$1,children:[(0,import_jsx_runtime.jsx)(SelectTrigger,{size:`sm`,className:`w-full`,children:(0,import_jsx_runtime.jsx)(SelectValue,{children:val=>val??`Select schema`})}),(0,import_jsx_runtime.jsx)(SelectPopup,{children:schemas.map(schema=>(0,import_jsx_runtime.jsx)(SelectItem,{value:schema,children:schema},schema))})]})}function useCollapsibleRoot(parameters){let{open:openParam,defaultOpen,onOpenChange,disabled:disabled$1}=parameters,isControlled=openParam!==void 0,[open,setOpen]=useControlled({controlled:openParam,default:defaultOpen,name:`Collapsible`,state:`open`}),{mounted,setMounted,transitionStatus}=useTransitionStatus(open,!0,!0),[visible,setVisible]=import_react.useState(open),[{height,width},setDimensions]=import_react.useState({height:void 0,width:void 0}),defaultPanelId=useBaseUiId(),[panelIdState,setPanelIdState]=import_react.useState(),panelId=panelIdState??defaultPanelId,[hiddenUntilFound,setHiddenUntilFound]=import_react.useState(!1),[keepMounted,setKeepMounted]=import_react.useState(!1),abortControllerRef=import_react.useRef(null),animationTypeRef=import_react.useRef(null),transitionDimensionRef=import_react.useRef(null),panelRef=import_react.useRef(null),runOnceAnimationsFinish=useAnimationsFinished(panelRef,!1),handleTrigger=useStableCallback(event=>{let nextOpen=!open,eventDetails=createChangeEventDetails(triggerPress,event.nativeEvent);if(onOpenChange(nextOpen,eventDetails),eventDetails.isCanceled)return;let panel=panelRef.current;animationTypeRef.current===`css-animation`&&panel!=null&&panel.style.removeProperty(`animation-name`),!hiddenUntilFound&&!keepMounted&&(animationTypeRef.current!=null&&animationTypeRef.current!==`css-animation`&&!mounted&&nextOpen&&setMounted(!0),animationTypeRef.current===`css-animation`&&(!visible&&nextOpen&&setVisible(!0),!mounted&&nextOpen&&setMounted(!0))),setOpen(nextOpen),animationTypeRef.current===`none`&&mounted&&!nextOpen&&setMounted(!1)});return useIsoLayoutEffect(()=>{isControlled&&animationTypeRef.current===`none`&&!keepMounted&&!open&&setMounted(!1)},[isControlled,keepMounted,open,openParam,setMounted]),import_react.useMemo(()=>({abortControllerRef,animationTypeRef,disabled:disabled$1,handleTrigger,height,mounted,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setOpen,setPanelIdState,setVisible,transitionDimensionRef,transitionStatus,visible,width}),[abortControllerRef,animationTypeRef,disabled$1,handleTrigger,height,mounted,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setOpen,setVisible,transitionDimensionRef,transitionStatus,visible,width])}const CollapsibleRootContext=import_react.createContext(void 0);function useCollapsibleRootContext(){let context=import_react.useContext(CollapsibleRootContext);if(context===void 0)throw Error(formatErrorMessage(15));return context}let CollapsiblePanelDataAttributes=function(CollapsiblePanelDataAttributes$1){return CollapsiblePanelDataAttributes$1.open=`data-open`,CollapsiblePanelDataAttributes$1.closed=`data-closed`,CollapsiblePanelDataAttributes$1[CollapsiblePanelDataAttributes$1.startingStyle=TransitionStatusDataAttributes.startingStyle]=`startingStyle`,CollapsiblePanelDataAttributes$1[CollapsiblePanelDataAttributes$1.endingStyle=TransitionStatusDataAttributes.endingStyle]=`endingStyle`,CollapsiblePanelDataAttributes$1}({}),CollapsibleTriggerDataAttributes=function(CollapsibleTriggerDataAttributes$1){return CollapsibleTriggerDataAttributes$1.panelOpen=`data-panel-open`,CollapsibleTriggerDataAttributes$1}({});var PANEL_OPEN_HOOK={[CollapsiblePanelDataAttributes.open]:``},PANEL_CLOSED_HOOK={[CollapsiblePanelDataAttributes.closed]:``};const triggerOpenStateMapping$1={open(value){return value?{[CollapsibleTriggerDataAttributes.panelOpen]:``}:null}},collapsibleOpenStateMapping={open(value){return value?PANEL_OPEN_HOOK:PANEL_CLOSED_HOOK}},collapsibleStateAttributesMapping={...collapsibleOpenStateMapping,...transitionStatusMapping},CollapsibleRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,defaultOpen=!1,disabled:disabled$1=!1,onOpenChange:onOpenChangeProp,open,...elementProps}=componentProps,onOpenChange=useStableCallback(onOpenChangeProp),collapsible=useCollapsibleRoot({open,defaultOpen,onOpenChange,disabled:disabled$1}),state$1=import_react.useMemo(()=>({open:collapsible.open,disabled:collapsible.disabled,transitionStatus:collapsible.transitionStatus}),[collapsible.open,collapsible.disabled,collapsible.transitionStatus]),contextValue=import_react.useMemo(()=>({...collapsible,onOpenChange,state:state$1}),[collapsible,onOpenChange,state$1]),element$3=useRenderElement(`div`,componentProps,{state:state$1,ref:forwardedRef,props:elementProps,stateAttributesMapping:collapsibleStateAttributesMapping});return(0,import_jsx_runtime.jsx)(CollapsibleRootContext.Provider,{value:contextValue,children:element$3})});var stateAttributesMapping$6={...triggerOpenStateMapping$1,...transitionStatusMapping};const CollapsibleTrigger$1=import_react.forwardRef(function(componentProps,forwardedRef){let{panelId,open,handleTrigger,state:state$1,disabled:contextDisabled}=useCollapsibleRootContext(),{className,disabled:disabled$1=contextDisabled,id,render,nativeButton=!0,...elementProps}=componentProps,{getButtonProps,buttonRef}=useButton({disabled:disabled$1,focusableWhenDisabled:!0,native:nativeButton}),props=import_react.useMemo(()=>({"aria-controls":open?panelId:void 0,"aria-expanded":open,onClick:handleTrigger}),[panelId,open,handleTrigger]);return useRenderElement(`button`,componentProps,{state:state$1,ref:[forwardedRef,buttonRef],props:[props,elementProps,getButtonProps],stateAttributesMapping:stateAttributesMapping$6})});let AccordionRootDataAttributes=function(AccordionRootDataAttributes$1){return AccordionRootDataAttributes$1.disabled=`data-disabled`,AccordionRootDataAttributes$1.orientation=`data-orientation`,AccordionRootDataAttributes$1}({});function useCollapsiblePanel(parameters){let{abortControllerRef,animationTypeRef,externalRef,height,hiddenUntilFound,keepMounted,id:idParam,mounted,onOpenChange,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setOpen,setVisible,transitionDimensionRef,visible,width}=parameters,isBeforeMatchRef=import_react.useRef(!1),latestAnimationNameRef=import_react.useRef(null),shouldCancelInitialOpenAnimationRef=import_react.useRef(open),shouldCancelInitialOpenTransitionRef=import_react.useRef(open),endingStyleFrame=useAnimationFrame(),hidden=import_react.useMemo(()=>animationTypeRef.current===`css-animation`?!visible:!open&&!mounted,[open,mounted,visible,animationTypeRef]),mergedPanelRef=useMergedRefs(externalRef,panelRef,useStableCallback(element$3=>{if(!element$3)return;if(animationTypeRef.current==null||transitionDimensionRef.current==null){let panelStyles=getComputedStyle(element$3),hasAnimation=panelStyles.animationName!==`none`&&panelStyles.animationName!==``,hasTransition=panelStyles.transitionDuration!==`0s`&&panelStyles.transitionDuration!==``;hasAnimation&&hasTransition||(panelStyles.animationName===`none`&&panelStyles.transitionDuration!==`0s`?animationTypeRef.current=`css-transition`:panelStyles.animationName!==`none`&&panelStyles.transitionDuration===`0s`?animationTypeRef.current=`css-animation`:animationTypeRef.current=`none`),element$3.getAttribute(AccordionRootDataAttributes.orientation)===`horizontal`||panelStyles.transitionProperty.indexOf(`width`)>-1?transitionDimensionRef.current=`width`:transitionDimensionRef.current=`height`}if(animationTypeRef.current!==`css-transition`)return;(height===void 0||width===void 0)&&(setDimensions({height:element$3.scrollHeight,width:element$3.scrollWidth}),shouldCancelInitialOpenTransitionRef.current&&element$3.style.setProperty(`transition-duration`,`0s`));let frame=-1,nextFrame=-1;return frame=AnimationFrame.request(()=>{shouldCancelInitialOpenTransitionRef.current=!1,nextFrame=AnimationFrame.request(()=>{setTimeout(()=>{element$3.style.removeProperty(`transition-duration`)})})}),()=>{AnimationFrame.cancel(frame),AnimationFrame.cancel(nextFrame)}}));return useIsoLayoutEffect(()=>{if(animationTypeRef.current!==`css-transition`)return;let panel=panelRef.current;if(!panel)return;let resizeFrame=-1;if(abortControllerRef.current!=null&&(abortControllerRef.current.abort(),abortControllerRef.current=null),open){let originalLayoutStyles={"justify-content":panel.style.justifyContent,"align-items":panel.style.alignItems,"align-content":panel.style.alignContent,"justify-items":panel.style.justifyItems};Object.keys(originalLayoutStyles).forEach(key$1=>{panel.style.setProperty(key$1,`initial`,`important`)}),!shouldCancelInitialOpenTransitionRef.current&&!keepMounted&&panel.setAttribute(CollapsiblePanelDataAttributes.startingStyle,``),setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),resizeFrame=AnimationFrame.request(()=>{Object.entries(originalLayoutStyles).forEach(([key$1,value])=>{value===``?panel.style.removeProperty(key$1):panel.style.setProperty(key$1,value)})})}else{if(panel.scrollHeight===0&&panel.scrollWidth===0)return;setDimensions({height:panel.scrollHeight,width:panel.scrollWidth});let abortController=new AbortController;abortControllerRef.current=abortController;let signal=abortController.signal,attributeObserver=null,endingStyleAttribute=CollapsiblePanelDataAttributes.endingStyle;return attributeObserver=new MutationObserver(mutationList=>{mutationList.some(mutation=>mutation.type===`attributes`&&mutation.attributeName===endingStyleAttribute)&&(attributeObserver?.disconnect(),attributeObserver=null,runOnceAnimationsFinish(()=>{setDimensions({height:0,width:0}),panel.style.removeProperty(`content-visibility`),setMounted(!1),abortControllerRef.current===abortController&&(abortControllerRef.current=null)},signal))}),attributeObserver.observe(panel,{attributes:!0,attributeFilter:[endingStyleAttribute]}),()=>{attributeObserver?.disconnect(),endingStyleFrame.cancel(),abortControllerRef.current===abortController&&(abortController.abort(),abortControllerRef.current=null)}}return()=>{AnimationFrame.cancel(resizeFrame)}},[abortControllerRef,animationTypeRef,endingStyleFrame,hiddenUntilFound,keepMounted,mounted,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted]),useIsoLayoutEffect(()=>{if(animationTypeRef.current!==`css-animation`)return;let panel=panelRef.current;panel&&(latestAnimationNameRef.current=panel.style.animationName||latestAnimationNameRef.current,panel.style.setProperty(`animation-name`,`none`),setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),!shouldCancelInitialOpenAnimationRef.current&&!isBeforeMatchRef.current&&panel.style.removeProperty(`animation-name`),open?(abortControllerRef.current!=null&&(abortControllerRef.current.abort(),abortControllerRef.current=null),setMounted(!0),setVisible(!0)):(abortControllerRef.current=new AbortController,runOnceAnimationsFinish(()=>{setMounted(!1),setVisible(!1),abortControllerRef.current=null},abortControllerRef.current.signal)))},[abortControllerRef,animationTypeRef,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setVisible,visible]),useOnMount(()=>{let frame=AnimationFrame.request(()=>{shouldCancelInitialOpenAnimationRef.current=!1});return()=>AnimationFrame.cancel(frame)}),useIsoLayoutEffect(()=>{if(!hiddenUntilFound)return;let panel=panelRef.current;if(!panel)return;let frame=-1,nextFrame=-1;return open&&isBeforeMatchRef.current&&(panel.style.transitionDuration=`0s`,setDimensions({height:panel.scrollHeight,width:panel.scrollWidth}),frame=AnimationFrame.request(()=>{isBeforeMatchRef.current=!1,nextFrame=AnimationFrame.request(()=>{setTimeout(()=>{panel.style.removeProperty(`transition-duration`)})})})),()=>{AnimationFrame.cancel(frame),AnimationFrame.cancel(nextFrame)}},[hiddenUntilFound,open,panelRef,setDimensions]),useIsoLayoutEffect(()=>{let panel=panelRef.current;panel&&hiddenUntilFound&&hidden&&(panel.setAttribute(`hidden`,`until-found`),animationTypeRef.current===`css-transition`&&panel.setAttribute(CollapsiblePanelDataAttributes.startingStyle,``))},[hiddenUntilFound,hidden,animationTypeRef,panelRef]),import_react.useEffect(function(){let panel=panelRef.current;if(!panel)return;function handleBeforeMatch(event){isBeforeMatchRef.current=!0,setOpen(!0),onOpenChange(!0,createChangeEventDetails(none$3,event))}return panel.addEventListener(`beforematch`,handleBeforeMatch),()=>{panel.removeEventListener(`beforematch`,handleBeforeMatch)}},[onOpenChange,panelRef,setOpen]),import_react.useMemo(()=>({props:{hidden,id:idParam,ref:mergedPanelRef}}),[hidden,idParam,mergedPanelRef])}let CollapsiblePanelCssVars=function(CollapsiblePanelCssVars$1){return CollapsiblePanelCssVars$1.collapsiblePanelHeight=`--collapsible-panel-height`,CollapsiblePanelCssVars$1.collapsiblePanelWidth=`--collapsible-panel-width`,CollapsiblePanelCssVars$1}({});const CollapsiblePanel$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,hiddenUntilFound:hiddenUntilFoundProp,keepMounted:keepMountedProp,render,id:idProp,...elementProps}=componentProps,{abortControllerRef,animationTypeRef,height,mounted,onOpenChange,open,panelId,panelRef,runOnceAnimationsFinish,setDimensions,setHiddenUntilFound,setKeepMounted,setMounted,setPanelIdState,setOpen,setVisible,state:state$1,transitionDimensionRef,visible,width,transitionStatus}=useCollapsibleRootContext(),hiddenUntilFound=hiddenUntilFoundProp??!1,keepMounted=keepMountedProp??!1;useIsoLayoutEffect(()=>{if(idProp)return setPanelIdState(idProp),()=>{setPanelIdState(void 0)}},[idProp,setPanelIdState]),useIsoLayoutEffect(()=>{setHiddenUntilFound(hiddenUntilFound)},[setHiddenUntilFound,hiddenUntilFound]),useIsoLayoutEffect(()=>{setKeepMounted(keepMounted)},[setKeepMounted,keepMounted]);let{props}=useCollapsiblePanel({abortControllerRef,animationTypeRef,externalRef:forwardedRef,height,hiddenUntilFound,id:panelId,keepMounted,mounted,onOpenChange,open,panelRef,runOnceAnimationsFinish,setDimensions,setMounted,setOpen,setVisible,transitionDimensionRef,visible,width});useOpenChangeComplete({open:open&&transitionStatus===`idle`,ref:panelRef,onComplete(){open&&setDimensions({height:void 0,width:void 0})}});let element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({...state$1,transitionStatus}),[state$1,transitionStatus]),ref:[forwardedRef,panelRef],props:[props,{style:{[CollapsiblePanelCssVars.collapsiblePanelHeight]:height===void 0?`auto`:`${height}px`,[CollapsiblePanelCssVars.collapsiblePanelWidth]:width===void 0?`auto`:`${width}px`}},elementProps],stateAttributesMapping:collapsibleStateAttributesMapping});return keepMounted||hiddenUntilFound||!keepMounted&&mounted?element$3:null});function Collapsible({...props}){return(0,import_jsx_runtime.jsx)(CollapsibleRoot,{"data-slot":`collapsible`,...props})}function CollapsibleTrigger({className,...props}){return(0,import_jsx_runtime.jsx)(CollapsibleTrigger$1,{className:cn(`cursor-pointer`,className),"data-slot":`collapsible-trigger`,...props})}function CollapsiblePanel({className,...props}){return(0,import_jsx_runtime.jsx)(CollapsiblePanel$1,{className:cn(`h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0`,className),"data-slot":`collapsible-panel`,...props})}const ScrollAreaRootContext=import_react.createContext(void 0);function useScrollAreaRootContext(){let context=import_react.useContext(ScrollAreaRootContext);if(context===void 0)throw Error(formatErrorMessage(53));return context}let ScrollAreaRootCssVars=function(ScrollAreaRootCssVars$1){return ScrollAreaRootCssVars$1.scrollAreaCornerHeight=`--scroll-area-corner-height`,ScrollAreaRootCssVars$1.scrollAreaCornerWidth=`--scroll-area-corner-width`,ScrollAreaRootCssVars$1}({});const SCROLL_TIMEOUT=500,MIN_THUMB_SIZE=16;function getOffset(element$3,prop,axis){if(!element$3)return 0;let styles=getComputedStyle(element$3),propAxis=axis===`x`?`Inline`:`Block`;return axis===`x`&&prop===`margin`?parseFloat(styles[`${prop}InlineStart`])*2:parseFloat(styles[`${prop}${propAxis}Start`])+parseFloat(styles[`${prop}${propAxis}End`])}let ScrollAreaScrollbarDataAttributes=function(ScrollAreaScrollbarDataAttributes$1){return ScrollAreaScrollbarDataAttributes$1.orientation=`data-orientation`,ScrollAreaScrollbarDataAttributes$1.hovering=`data-hovering`,ScrollAreaScrollbarDataAttributes$1.scrolling=`data-scrolling`,ScrollAreaScrollbarDataAttributes$1.hasOverflowX=`data-has-overflow-x`,ScrollAreaScrollbarDataAttributes$1.hasOverflowY=`data-has-overflow-y`,ScrollAreaScrollbarDataAttributes$1.overflowXStart=`data-overflow-x-start`,ScrollAreaScrollbarDataAttributes$1.overflowXEnd=`data-overflow-x-end`,ScrollAreaScrollbarDataAttributes$1.overflowYStart=`data-overflow-y-start`,ScrollAreaScrollbarDataAttributes$1.overflowYEnd=`data-overflow-y-end`,ScrollAreaScrollbarDataAttributes$1}({}),ScrollAreaRootDataAttributes=function(ScrollAreaRootDataAttributes$1){return ScrollAreaRootDataAttributes$1.hasOverflowX=`data-has-overflow-x`,ScrollAreaRootDataAttributes$1.hasOverflowY=`data-has-overflow-y`,ScrollAreaRootDataAttributes$1.overflowXStart=`data-overflow-x-start`,ScrollAreaRootDataAttributes$1.overflowXEnd=`data-overflow-x-end`,ScrollAreaRootDataAttributes$1.overflowYStart=`data-overflow-y-start`,ScrollAreaRootDataAttributes$1.overflowYEnd=`data-overflow-y-end`,ScrollAreaRootDataAttributes$1}({});const scrollAreaStateAttributesMapping={hasOverflowX:value=>value?{[ScrollAreaRootDataAttributes.hasOverflowX]:``}:null,hasOverflowY:value=>value?{[ScrollAreaRootDataAttributes.hasOverflowY]:``}:null,overflowXStart:value=>value?{[ScrollAreaRootDataAttributes.overflowXStart]:``}:null,overflowXEnd:value=>value?{[ScrollAreaRootDataAttributes.overflowXEnd]:``}:null,overflowYStart:value=>value?{[ScrollAreaRootDataAttributes.overflowYStart]:``}:null,overflowYEnd:value=>value?{[ScrollAreaRootDataAttributes.overflowYEnd]:``}:null,cornerHidden:()=>null};var DEFAULT_COORDS={x:0,y:0},DEFAULT_SIZE={width:0,height:0},DEFAULT_OVERFLOW_EDGES={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},DEFAULT_HIDDEN_STATE={x:!1,y:!1,corner:!1};const ScrollAreaRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,overflowEdgeThreshold:overflowEdgeThresholdProp,...elementProps}=componentProps,overflowEdgeThreshold=normalizeOverflowEdgeThreshold(overflowEdgeThresholdProp),rootId=useBaseUiId(),scrollYTimeout=useTimeout(),scrollXTimeout=useTimeout(),{nonce,disableStyleElements}=useCSPContext(),[hovering,setHovering]=import_react.useState(!1),[scrollingX,setScrollingX]=import_react.useState(!1),[scrollingY,setScrollingY]=import_react.useState(!1),[touchModality,setTouchModality]=import_react.useState(!1),[cornerSize,setCornerSize]=import_react.useState(DEFAULT_SIZE),[thumbSize,setThumbSize]=import_react.useState(DEFAULT_SIZE),[overflowEdges,setOverflowEdges]=import_react.useState(DEFAULT_OVERFLOW_EDGES),[hiddenState,setHiddenState]=import_react.useState(DEFAULT_HIDDEN_STATE),rootRef=import_react.useRef(null),viewportRef=import_react.useRef(null),scrollbarYRef=import_react.useRef(null),scrollbarXRef=import_react.useRef(null),thumbYRef=import_react.useRef(null),thumbXRef=import_react.useRef(null),cornerRef=import_react.useRef(null),thumbDraggingRef=import_react.useRef(!1),startYRef=import_react.useRef(0),startXRef=import_react.useRef(0),startScrollTopRef=import_react.useRef(0),startScrollLeftRef=import_react.useRef(0),currentOrientationRef=import_react.useRef(`vertical`),scrollPositionRef=import_react.useRef(DEFAULT_COORDS),handleScroll=useStableCallback(scrollPosition=>{let offsetX=scrollPosition.x-scrollPositionRef.current.x,offsetY=scrollPosition.y-scrollPositionRef.current.y;scrollPositionRef.current=scrollPosition,offsetY!==0&&(setScrollingY(!0),scrollYTimeout.start(500,()=>{setScrollingY(!1)})),offsetX!==0&&(setScrollingX(!0),scrollXTimeout.start(500,()=>{setScrollingX(!1)}))}),handlePointerDown=useStableCallback(event=>{event.button===0&&(thumbDraggingRef.current=!0,startYRef.current=event.clientY,startXRef.current=event.clientX,currentOrientationRef.current=event.currentTarget.getAttribute(ScrollAreaScrollbarDataAttributes.orientation),viewportRef.current&&(startScrollTopRef.current=viewportRef.current.scrollTop,startScrollLeftRef.current=viewportRef.current.scrollLeft),thumbYRef.current&&currentOrientationRef.current===`vertical`&&thumbYRef.current.setPointerCapture(event.pointerId),thumbXRef.current&&currentOrientationRef.current===`horizontal`&&thumbXRef.current.setPointerCapture(event.pointerId))}),handlePointerMove=useStableCallback(event=>{if(!thumbDraggingRef.current)return;let deltaY=event.clientY-startYRef.current,deltaX=event.clientX-startXRef.current;if(viewportRef.current){let scrollableContentHeight=viewportRef.current.scrollHeight,viewportHeight=viewportRef.current.clientHeight,scrollableContentWidth=viewportRef.current.scrollWidth,viewportWidth=viewportRef.current.clientWidth;if(thumbYRef.current&&scrollbarYRef.current&&currentOrientationRef.current===`vertical`){let scrollbarYOffset=getOffset(scrollbarYRef.current,`padding`,`y`),thumbYOffset=getOffset(thumbYRef.current,`margin`,`y`),thumbHeight=thumbYRef.current.offsetHeight,scrollRatioY=deltaY/(scrollbarYRef.current.offsetHeight-thumbHeight-scrollbarYOffset-thumbYOffset);viewportRef.current.scrollTop=startScrollTopRef.current+scrollRatioY*(scrollableContentHeight-viewportHeight),event.preventDefault(),setScrollingY(!0),scrollYTimeout.start(500,()=>{setScrollingY(!1)})}if(thumbXRef.current&&scrollbarXRef.current&&currentOrientationRef.current===`horizontal`){let scrollbarXOffset=getOffset(scrollbarXRef.current,`padding`,`x`),thumbXOffset=getOffset(thumbXRef.current,`margin`,`x`),thumbWidth=thumbXRef.current.offsetWidth,scrollRatioX=deltaX/(scrollbarXRef.current.offsetWidth-thumbWidth-scrollbarXOffset-thumbXOffset);viewportRef.current.scrollLeft=startScrollLeftRef.current+scrollRatioX*(scrollableContentWidth-viewportWidth),event.preventDefault(),setScrollingX(!0),scrollXTimeout.start(500,()=>{setScrollingX(!1)})}}}),handlePointerUp=useStableCallback(event=>{thumbDraggingRef.current=!1,thumbYRef.current&&currentOrientationRef.current===`vertical`&&thumbYRef.current.releasePointerCapture(event.pointerId),thumbXRef.current&&currentOrientationRef.current===`horizontal`&&thumbXRef.current.releasePointerCapture(event.pointerId)});function handleTouchModalityChange(event){setTouchModality(event.pointerType===`touch`)}function handlePointerEnterOrMove(event){handleTouchModalityChange(event),event.pointerType!==`touch`&&setHovering(contains(rootRef.current,event.target))}let state$1=import_react.useMemo(()=>({hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hiddenState.x,hiddenState.y,hiddenState.corner,overflowEdges]),props={role:`presentation`,onPointerEnter:handlePointerEnterOrMove,onPointerMove:handlePointerEnterOrMove,onPointerDown:handleTouchModalityChange,onPointerLeave(){setHovering(!1)},style:{position:`relative`,[ScrollAreaRootCssVars.scrollAreaCornerHeight]:`${cornerSize.height}px`,[ScrollAreaRootCssVars.scrollAreaCornerWidth]:`${cornerSize.width}px`}},element$3=useRenderElement(`div`,componentProps,{state:state$1,ref:[forwardedRef,rootRef],props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({handlePointerDown,handlePointerMove,handlePointerUp,handleScroll,cornerSize,setCornerSize,thumbSize,setThumbSize,touchModality,cornerRef,scrollingX,setScrollingX,scrollingY,setScrollingY,hovering,setHovering,viewportRef,rootRef,scrollbarYRef,scrollbarXRef,thumbYRef,thumbXRef,rootId,hiddenState,setHiddenState,overflowEdges,setOverflowEdges,viewportState:state$1,overflowEdgeThreshold}),[handlePointerDown,handlePointerMove,handlePointerUp,handleScroll,cornerSize,thumbSize,touchModality,scrollingX,setScrollingX,scrollingY,setScrollingY,hovering,setHovering,rootId,hiddenState,overflowEdges,state$1,overflowEdgeThreshold]);return(0,import_jsx_runtime.jsxs)(ScrollAreaRootContext.Provider,{value:contextValue,children:[!disableStyleElements&&styleDisableScrollbar.getElement(nonce),element$3]})});function normalizeOverflowEdgeThreshold(threshold){if(typeof threshold==`number`){let value=Math.max(0,threshold);return{xStart:value,xEnd:value,yStart:value,yEnd:value}}return{xStart:Math.max(0,threshold?.xStart||0),xEnd:Math.max(0,threshold?.xEnd||0),yStart:Math.max(0,threshold?.yStart||0),yEnd:Math.max(0,threshold?.yEnd||0)}}const ScrollAreaViewportContext=import_react.createContext(void 0);function onVisible(element$3,callback){if(typeof IntersectionObserver>`u`)return()=>{};let observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.intersectionRatio>0&&(callback(),observer.disconnect())})});return observer.observe(element$3),()=>{observer.disconnect()}}let ScrollAreaViewportCssVars=function(ScrollAreaViewportCssVars$1){return ScrollAreaViewportCssVars$1.scrollAreaOverflowXStart=`--scroll-area-overflow-x-start`,ScrollAreaViewportCssVars$1.scrollAreaOverflowXEnd=`--scroll-area-overflow-x-end`,ScrollAreaViewportCssVars$1.scrollAreaOverflowYStart=`--scroll-area-overflow-y-start`,ScrollAreaViewportCssVars$1.scrollAreaOverflowYEnd=`--scroll-area-overflow-y-end`,ScrollAreaViewportCssVars$1}({});var scrollAreaOverflowVarsRegistered=!1;function removeCSSVariableInheritance(){scrollAreaOverflowVarsRegistered||isWebKit||(typeof CSS<`u`&&`registerProperty`in CSS&&[ScrollAreaViewportCssVars.scrollAreaOverflowXStart,ScrollAreaViewportCssVars.scrollAreaOverflowXEnd,ScrollAreaViewportCssVars.scrollAreaOverflowYStart,ScrollAreaViewportCssVars.scrollAreaOverflowYEnd].forEach(name$2=>{try{CSS.registerProperty({name:name$2,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),scrollAreaOverflowVarsRegistered=!0)}const ScrollAreaViewport=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{viewportRef,scrollbarYRef,scrollbarXRef,thumbYRef,thumbXRef,cornerRef,cornerSize,setCornerSize,setThumbSize,rootId,setHiddenState,hiddenState,handleScroll,setHovering,setOverflowEdges,overflowEdges,overflowEdgeThreshold}=useScrollAreaRootContext(),direction=useDirection(),programmaticScrollRef=import_react.useRef(!0),scrollEndTimeout=useTimeout(),waitForAnimationsTimeout=useTimeout(),computeThumbPosition=useStableCallback(()=>{let viewportEl=viewportRef.current,scrollbarYEl=scrollbarYRef.current,scrollbarXEl=scrollbarXRef.current,thumbYEl=thumbYRef.current,thumbXEl=thumbXRef.current,cornerEl=cornerRef.current;if(!viewportEl)return;let scrollableContentHeight=viewportEl.scrollHeight,scrollableContentWidth=viewportEl.scrollWidth,viewportHeight=viewportEl.clientHeight,viewportWidth=viewportEl.clientWidth,scrollTop=viewportEl.scrollTop,scrollLeft=viewportEl.scrollLeft;if(scrollableContentHeight===0||scrollableContentWidth===0)return;let scrollbarYHidden=viewportHeight>=scrollableContentHeight,scrollbarXHidden=viewportWidth>=scrollableContentWidth,ratioX=viewportWidth/scrollableContentWidth,ratioY=viewportHeight/scrollableContentHeight,maxScrollLeft=Math.max(0,scrollableContentWidth-viewportWidth),maxScrollTop=Math.max(0,scrollableContentHeight-viewportHeight),scrollLeftFromStart=0,scrollLeftFromEnd=0;scrollbarXHidden||(scrollLeftFromStart=clamp(direction===`rtl`?-scrollLeft:scrollLeft,0,maxScrollLeft),scrollLeftFromEnd=maxScrollLeft-scrollLeftFromStart);let scrollTopFromStart=scrollbarYHidden?0:clamp(scrollTop,0,maxScrollTop),scrollTopFromEnd=scrollbarYHidden?0:maxScrollTop-scrollTopFromStart,nextWidth=scrollbarXHidden?0:viewportWidth,nextHeight=scrollbarYHidden?0:viewportHeight,nextCornerWidth=0,nextCornerHeight=0;!scrollbarXHidden&&!scrollbarYHidden&&(nextCornerWidth=scrollbarYEl?.offsetWidth||0,nextCornerHeight=scrollbarXEl?.offsetHeight||0);let cornerNotYetSized=cornerSize.width===0&&cornerSize.height===0,cornerWidthOffset=cornerNotYetSized?nextCornerWidth:0,cornerHeightOffset=cornerNotYetSized?nextCornerHeight:0,scrollbarXOffset=getOffset(scrollbarXEl,`padding`,`x`),scrollbarYOffset=getOffset(scrollbarYEl,`padding`,`y`),thumbXOffset=getOffset(thumbXEl,`margin`,`x`),thumbYOffset=getOffset(thumbYEl,`margin`,`y`),idealNextWidth=nextWidth-scrollbarXOffset-thumbXOffset,idealNextHeight=nextHeight-scrollbarYOffset-thumbYOffset,maxNextWidth=scrollbarXEl?Math.min(scrollbarXEl.offsetWidth-cornerWidthOffset,idealNextWidth):idealNextWidth,maxNextHeight=scrollbarYEl?Math.min(scrollbarYEl.offsetHeight-cornerHeightOffset,idealNextHeight):idealNextHeight,clampedNextWidth=Math.max(16,maxNextWidth*ratioX),clampedNextHeight=Math.max(16,maxNextHeight*ratioY);if(setThumbSize(prevSize=>prevSize.height===clampedNextHeight&&prevSize.width===clampedNextWidth?prevSize:{width:clampedNextWidth,height:clampedNextHeight}),scrollbarYEl&&thumbYEl){let maxThumbOffsetY=scrollbarYEl.offsetHeight-clampedNextHeight-scrollbarYOffset-thumbYOffset,scrollRangeY=scrollableContentHeight-viewportHeight,scrollRatioY=scrollRangeY===0?0:scrollTop/scrollRangeY,thumbOffsetY=Math.min(maxThumbOffsetY,Math.max(0,scrollRatioY*maxThumbOffsetY));thumbYEl.style.transform=`translate3d(0,${thumbOffsetY}px,0)`}if(scrollbarXEl&&thumbXEl){let maxThumbOffsetX=scrollbarXEl.offsetWidth-clampedNextWidth-scrollbarXOffset-thumbXOffset,scrollRangeX=scrollableContentWidth-viewportWidth,scrollRatioX=scrollRangeX===0?0:scrollLeft/scrollRangeX,thumbOffsetX=direction===`rtl`?clamp(scrollRatioX*maxThumbOffsetX,-maxThumbOffsetX,0):clamp(scrollRatioX*maxThumbOffsetX,0,maxThumbOffsetX);thumbXEl.style.transform=`translate3d(${thumbOffsetX}px,0,0)`}let clampedScrollLeftStart=clamp(scrollLeftFromStart,0,maxScrollLeft),clampedScrollLeftEnd=clamp(scrollLeftFromEnd,0,maxScrollLeft),clampedScrollTopStart=clamp(scrollTopFromStart,0,maxScrollTop),clampedScrollTopEnd=clamp(scrollTopFromEnd,0,maxScrollTop),overflowMetricsPx=[[ScrollAreaViewportCssVars.scrollAreaOverflowXStart,clampedScrollLeftStart],[ScrollAreaViewportCssVars.scrollAreaOverflowXEnd,clampedScrollLeftEnd],[ScrollAreaViewportCssVars.scrollAreaOverflowYStart,clampedScrollTopStart],[ScrollAreaViewportCssVars.scrollAreaOverflowYEnd,clampedScrollTopEnd]];for(let[cssVar,value]of overflowMetricsPx)viewportEl.style.setProperty(cssVar,`${value}px`);cornerEl&&(scrollbarXHidden||scrollbarYHidden?setCornerSize({width:0,height:0}):!scrollbarXHidden&&!scrollbarYHidden&&setCornerSize({width:nextCornerWidth,height:nextCornerHeight})),setHiddenState(prevState=>{let cornerHidden=scrollbarYHidden||scrollbarXHidden;return prevState.y===scrollbarYHidden&&prevState.x===scrollbarXHidden&&prevState.corner===cornerHidden?prevState:{y:scrollbarYHidden,x:scrollbarXHidden,corner:cornerHidden}});let nextOverflowEdges={xStart:!scrollbarXHidden&&clampedScrollLeftStart>overflowEdgeThreshold.xStart,xEnd:!scrollbarXHidden&&clampedScrollLeftEnd>overflowEdgeThreshold.xEnd,yStart:!scrollbarYHidden&&clampedScrollTopStart>overflowEdgeThreshold.yStart,yEnd:!scrollbarYHidden&&clampedScrollTopEnd>overflowEdgeThreshold.yEnd};setOverflowEdges(prev=>prev.xStart===nextOverflowEdges.xStart&&prev.xEnd===nextOverflowEdges.xEnd&&prev.yStart===nextOverflowEdges.yStart&&prev.yEnd===nextOverflowEdges.yEnd?prev:nextOverflowEdges)});useIsoLayoutEffect(()=>{if(!viewportRef.current)return;removeCSSVariableInheritance();let hasInitialized=!1;return onVisible(viewportRef.current,()=>{if(!hasInitialized){hasInitialized=!0;return}computeThumbPosition()})},[computeThumbPosition,viewportRef]),useIsoLayoutEffect(()=>{queueMicrotask(computeThumbPosition)},[computeThumbPosition,hiddenState,direction]),useIsoLayoutEffect(()=>{viewportRef.current?.matches(`:hover`)&&setHovering(!0)},[viewportRef,setHovering]),import_react.useEffect(()=>{let viewport=viewportRef.current;if(typeof ResizeObserver>`u`||!viewport)return;let hasInitialized=!1,ro=new ResizeObserver(()=>{if(!hasInitialized){hasInitialized=!0;return}computeThumbPosition()});return ro.observe(viewport),waitForAnimationsTimeout.start(0,()=>{let animations=viewport.getAnimations({subtree:!0});animations.length!==0&&Promise.all(animations.map(animation=>animation.finished)).then(computeThumbPosition).catch(()=>{})}),()=>{ro.disconnect(),waitForAnimationsTimeout.clear()}},[computeThumbPosition,viewportRef,waitForAnimationsTimeout]);function handleUserInteraction(){programmaticScrollRef.current=!1}let props={role:`presentation`,...rootId&&{"data-id":`${rootId}-viewport`},...(!hiddenState.x||!hiddenState.y)&&{tabIndex:0},className:styleDisableScrollbar.className,style:{overflow:`scroll`},onScroll(){viewportRef.current&&(computeThumbPosition(),programmaticScrollRef.current||handleScroll({x:viewportRef.current.scrollLeft,y:viewportRef.current.scrollTop}),scrollEndTimeout.start(100,()=>{programmaticScrollRef.current=!0}))},onWheel:handleUserInteraction,onTouchMove:handleUserInteraction,onPointerMove:handleUserInteraction,onPointerEnter:handleUserInteraction,onKeyDown:handleUserInteraction},viewportState=import_react.useMemo(()=>({hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hiddenState.x,hiddenState.y,hiddenState.corner,overflowEdges]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,viewportRef],state:viewportState,props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({computeThumbPosition}),[computeThumbPosition]);return(0,import_jsx_runtime.jsx)(ScrollAreaViewportContext.Provider,{value:contextValue,children:element$3})}),ScrollAreaScrollbarContext=import_react.createContext(void 0);function useScrollAreaScrollbarContext(){let context=import_react.useContext(ScrollAreaScrollbarContext);if(context===void 0)throw Error(formatErrorMessage(54));return context}let ScrollAreaScrollbarCssVars=function(ScrollAreaScrollbarCssVars$1){return ScrollAreaScrollbarCssVars$1.scrollAreaThumbHeight=`--scroll-area-thumb-height`,ScrollAreaScrollbarCssVars$1.scrollAreaThumbWidth=`--scroll-area-thumb-width`,ScrollAreaScrollbarCssVars$1}({});const ScrollAreaScrollbar=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,orientation=`vertical`,keepMounted=!1,...elementProps}=componentProps,{hovering,scrollingX,scrollingY,hiddenState,overflowEdges,scrollbarYRef,scrollbarXRef,viewportRef,thumbYRef,thumbXRef,handlePointerDown,handlePointerUp,rootId,thumbSize}=useScrollAreaRootContext(),state$1=import_react.useMemo(()=>({hovering,scrolling:{horizontal:scrollingX,vertical:scrollingY}[orientation],orientation,hasOverflowX:!hiddenState.x,hasOverflowY:!hiddenState.y,overflowXStart:overflowEdges.xStart,overflowXEnd:overflowEdges.xEnd,overflowYStart:overflowEdges.yStart,overflowYEnd:overflowEdges.yEnd,cornerHidden:hiddenState.corner}),[hovering,scrollingX,scrollingY,orientation,hiddenState,overflowEdges]),direction=useDirection();import_react.useEffect(()=>{let viewportEl=viewportRef.current,scrollbarEl=orientation===`vertical`?scrollbarYRef.current:scrollbarXRef.current;if(!scrollbarEl)return;function handleWheel(event){if(!(!viewportEl||!scrollbarEl||event.ctrlKey)){if(event.preventDefault(),orientation===`vertical`){if(viewportEl.scrollTop===0&&event.deltaY<0)return}else if(viewportEl.scrollLeft===0&&event.deltaX<0)return;if(orientation===`vertical`){if(viewportEl.scrollTop===viewportEl.scrollHeight-viewportEl.clientHeight&&event.deltaY>0)return}else if(viewportEl.scrollLeft===viewportEl.scrollWidth-viewportEl.clientWidth&&event.deltaX>0)return;orientation===`vertical`?viewportEl.scrollTop+=event.deltaY:viewportEl.scrollLeft+=event.deltaX}}return scrollbarEl.addEventListener(`wheel`,handleWheel,{passive:!1}),()=>{scrollbarEl.removeEventListener(`wheel`,handleWheel)}},[orientation,scrollbarXRef,scrollbarYRef,viewportRef]);let props={...rootId&&{"data-id":`${rootId}-scrollbar`},onPointerDown(event){if(event.button===0&&event.currentTarget===event.target&&viewportRef.current){if(thumbYRef.current&&scrollbarYRef.current&&orientation===`vertical`){let thumbYOffset=getOffset(thumbYRef.current,`margin`,`y`),scrollbarYOffset=getOffset(scrollbarYRef.current,`padding`,`y`),thumbHeight=thumbYRef.current.offsetHeight,trackRectY=scrollbarYRef.current.getBoundingClientRect(),clickY=event.clientY-trackRectY.top-thumbHeight/2-scrollbarYOffset+thumbYOffset/2,scrollableContentHeight=viewportRef.current.scrollHeight,viewportHeight=viewportRef.current.clientHeight,newScrollTop=clickY/(scrollbarYRef.current.offsetHeight-thumbHeight-scrollbarYOffset-thumbYOffset)*(scrollableContentHeight-viewportHeight);viewportRef.current.scrollTop=newScrollTop}if(thumbXRef.current&&scrollbarXRef.current&&orientation===`horizontal`){let thumbXOffset=getOffset(thumbXRef.current,`margin`,`x`),scrollbarXOffset=getOffset(scrollbarXRef.current,`padding`,`x`),thumbWidth=thumbXRef.current.offsetWidth,trackRectX=scrollbarXRef.current.getBoundingClientRect(),clickX=event.clientX-trackRectX.left-thumbWidth/2-scrollbarXOffset+thumbXOffset/2,scrollableContentWidth=viewportRef.current.scrollWidth,viewportWidth=viewportRef.current.clientWidth,scrollRatioX=clickX/(scrollbarXRef.current.offsetWidth-thumbWidth-scrollbarXOffset-thumbXOffset),newScrollLeft;direction===`rtl`?(newScrollLeft=(1-scrollRatioX)*(scrollableContentWidth-viewportWidth),viewportRef.current.scrollLeft<=0&&(newScrollLeft=-newScrollLeft)):newScrollLeft=scrollRatioX*(scrollableContentWidth-viewportWidth),viewportRef.current.scrollLeft=newScrollLeft}handlePointerDown(event)}},onPointerUp:handlePointerUp,style:{position:`absolute`,touchAction:`none`,WebkitUserSelect:`none`,userSelect:`none`,...orientation===`vertical`&&{top:0,bottom:`var(${ScrollAreaRootCssVars.scrollAreaCornerHeight})`,insetInlineEnd:0,[ScrollAreaScrollbarCssVars.scrollAreaThumbHeight]:`${thumbSize.height}px`},...orientation===`horizontal`&&{insetInlineStart:0,insetInlineEnd:`var(${ScrollAreaRootCssVars.scrollAreaCornerWidth})`,bottom:0,[ScrollAreaScrollbarCssVars.scrollAreaThumbWidth]:`${thumbSize.width}px`}}},element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,orientation===`vertical`?scrollbarYRef:scrollbarXRef],state:state$1,props:[props,elementProps],stateAttributesMapping:scrollAreaStateAttributesMapping}),contextValue=import_react.useMemo(()=>({orientation}),[orientation]),isHidden$1=orientation===`vertical`?hiddenState.y:hiddenState.x;return keepMounted||!isHidden$1?(0,import_jsx_runtime.jsx)(ScrollAreaScrollbarContext.Provider,{value:contextValue,children:element$3}):null}),ScrollAreaThumb=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{thumbYRef,thumbXRef,handlePointerDown,handlePointerMove,handlePointerUp,setScrollingX,setScrollingY}=useScrollAreaRootContext(),{orientation}=useScrollAreaScrollbarContext(),state$1=import_react.useMemo(()=>({orientation}),[orientation]);return useRenderElement(`div`,componentProps,{ref:[forwardedRef,orientation===`vertical`?thumbYRef:thumbXRef],state:state$1,props:[{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp(event){orientation===`vertical`&&setScrollingY(!1),orientation===`horizontal`&&setScrollingX(!1),handlePointerUp(event)},style:{...orientation===`vertical`&&{height:`var(${ScrollAreaScrollbarCssVars.scrollAreaThumbHeight})`},...orientation===`horizontal`&&{width:`var(${ScrollAreaScrollbarCssVars.scrollAreaThumbWidth})`}}},elementProps]})}),ScrollAreaCorner=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{cornerRef,cornerSize,hiddenState}=useScrollAreaRootContext(),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,cornerRef],props:[{style:{position:`absolute`,bottom:0,insetInlineEnd:0,width:cornerSize.width,height:cornerSize.height}},elementProps]});return hiddenState.corner?null:element$3});function ScrollArea({className,children,scrollFade=!1,scrollbarGutter=!1,...props}){return(0,import_jsx_runtime.jsxs)(ScrollAreaRoot,{className:cn(`size-full min-h-0`,className),...props,children:[(0,import_jsx_runtime.jsx)(ScrollAreaViewport,{className:cn(`h-full overscroll-contain rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,scrollFade&&`mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]`,scrollbarGutter&&`data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5`),"data-slot":`scroll-area-viewport`,children}),(0,import_jsx_runtime.jsx)(ScrollBar,{orientation:`vertical`}),(0,import_jsx_runtime.jsx)(ScrollBar,{orientation:`horizontal`}),(0,import_jsx_runtime.jsx)(ScrollAreaCorner,{"data-slot":`scroll-area-corner`})]})}function ScrollBar({className,orientation=`vertical`,...props}){return(0,import_jsx_runtime.jsx)(ScrollAreaScrollbar,{className:cn(`m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100`,className),"data-slot":`scroll-area-scrollbar`,orientation,...props,children:(0,import_jsx_runtime.jsx)(ScrollAreaThumb,{className:`relative flex-1 rounded-full bg-foreground/20`,"data-slot":`scroll-area-thumb`})})}function highlightMatch(text$5,query){if(!query)return text$5;let index$4=text$5.toLowerCase().indexOf(query.toLowerCase());return index$4===-1?text$5:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[text$5.slice(0,index$4),(0,import_jsx_runtime.jsx)(`mark`,{className:`bg-yellow-200 text-inherit`,children:text$5.slice(index$4,index$4+query.length)}),text$5.slice(index$4+query.length)]})}function ObjectSection({title,icon:Icon$1,objects,searchQuery,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,schema,objectType}){let[sectionOpen,setSectionOpen]=(0,import_react.useState)(!0),filteredObjects=objects.filter(obj=>obj.name.toLowerCase().includes(searchQuery.toLowerCase()));return filteredObjects.length===0&&searchQuery?null:(0,import_jsx_runtime.jsxs)(Collapsible,{open:sectionOpen,onOpenChange:setSectionOpen,className:`mt-2 first:mt-0`,children:[(0,import_jsx_runtime.jsxs)(CollapsibleTrigger,{className:`flex items-center gap-1.5 w-full px-2 py-1 text-xs font-semibold text-gray-500 uppercase tracking-wide hover:text-gray-700 rounded overflow-hidden`,children:[(0,import_jsx_runtime.jsx)(ChevronRight,{className:cn(`size-3 shrink-0 transition-transform`,sectionOpen&&`rotate-90`)}),(0,import_jsx_runtime.jsx)(Icon$1,{className:`size-3.5 shrink-0`}),(0,import_jsx_runtime.jsx)(`span`,{className:`truncate`,children:title}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,size:`sm`,className:`rounded-full shrink-0 text-[10px] lowercase`,children:filteredObjects.length})]}),(0,import_jsx_runtime.jsx)(CollapsiblePanel,{children:(0,import_jsx_runtime.jsx)(`div`,{className:`ml-5 mt-0.5 border-l border-gray-200 pl-1`,children:filteredObjects.map(obj=>{let objectKey=obj.arguments===void 0?obj.name:`${obj.name}(${obj.arguments})`,isSelected=selectedObject?.schema===schema&&selectedObject?.name===obj.name&&selectedObject?.type===objectType&&(obj.arguments===void 0||selectedObject?.arguments===obj.arguments);return(0,import_jsx_runtime.jsx)(ObjectItem,{objectName:obj.name,searchQuery,isSelected,onClick:()=>{onObjectSelect({schema,name:obj.name,type:objectType,arguments:obj.arguments})},onDoubleClick:()=>onObjectDoubleClick(schema,obj.name,objectType,obj.arguments),onViewSchema:()=>onViewSchema(schema,obj.name,objectType,obj.arguments),onGenerateSQL:onGenerateSQL?sqlType=>onGenerateSQL(schema,obj.name,objectType,sqlType):void 0,objectType},objectKey)})})})]})}function ObjectItem({objectName,searchQuery,isSelected,onClick,onDoubleClick,onViewSchema,onGenerateSQL,objectType}){let isFunction=objectType===`function`||objectType===`procedure`,isTableLike=objectType===`table`||objectType===`view`||objectType===`materialized_view`,isTable=objectType===`table`,[contextMenu,setContextMenu]=(0,import_react.useState)(null),[submenuOpen,setSubmenuOpen]=(0,import_react.useState)(!1),closeTimeoutRef=(0,import_react.useRef)(null),handleSubmenuEnter=()=>{closeTimeoutRef.current&&=(clearTimeout(closeTimeoutRef.current),null),setSubmenuOpen(!0)},handleSubmenuLeave=()=>{closeTimeoutRef.current=window.setTimeout(()=>{setSubmenuOpen(!1)},100)},closeMenu=()=>{setSubmenuOpen(!1),setContextMenu(null)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:cn(`group flex items-center gap-1 w-full px-2 py-0.5 text-[13px] text-gray-700 rounded cursor-pointer`,isSelected?`bg-blue-100 text-blue-900`:`hover:bg-gray-50`),onClick,onDoubleClick,onContextMenu:e=>{e.preventDefault(),setContextMenu({x:e.clientX,y:e.clientY})},children:[(0,import_jsx_runtime.jsx)(`span`,{className:`flex-1 truncate`,children:highlightMatch(objectName,searchQuery)}),(0,import_jsx_runtime.jsx)(`button`,{type:`button`,className:`opacity-0 group-hover:opacity-100 p-0.5 rounded hover:bg-accent text-gray-500 hover:text-gray-700`,onClick:e=>{e.stopPropagation(),onViewSchema()},title:isFunction?`View definition`:`View schema`,children:(0,import_jsx_runtime.jsx)(Info$1,{className:`size-3.5`})})]}),contextMenu&&(0,import_jsx_runtime.jsxs)(`div`,{className:`fixed z-50`,style:{left:contextMenu.x,top:contextMenu.y},children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`min-w-32 rounded-lg border bg-popover shadow-lg p-1`,onMouseLeave:()=>{submenuOpen||closeMenu()},children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onDoubleClick(),closeMenu()},children:isFunction?`Edit Definition`:`Select Rows`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onViewSchema(),closeMenu()},children:isFunction?`View Definition`:`View Schema`}),isTableLike&&onGenerateSQL&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`div`,{className:`mx-2 my-1 h-px bg-border`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,onMouseEnter:handleSubmenuEnter,onMouseLeave:handleSubmenuLeave,children:[(0,import_jsx_runtime.jsxs)(`button`,{className:cn(`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,submenuOpen&&`bg-accent text-accent-foreground`),children:[(0,import_jsx_runtime.jsx)(`span`,{className:`whitespace-nowrap`,children:`Quick SQL`}),(0,import_jsx_runtime.jsx)(ChevronRight,{className:`ml-auto size-4 opacity-80`})]}),submenuOpen&&(0,import_jsx_runtime.jsxs)(`div`,{className:`absolute left-full top-0 ml-0 min-w-24 rounded-lg border bg-popover shadow-lg p-1`,onMouseEnter:handleSubmenuEnter,onMouseLeave:handleSubmenuLeave,children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`select`),closeMenu()},children:`SELECT`}),isTable&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`insert`),closeMenu()},children:`INSERT`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`update`),closeMenu()},children:`UPDATE`}),(0,import_jsx_runtime.jsx)(`button`,{className:`flex w-full min-h-7 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm outline-none hover:bg-accent hover:text-accent-foreground`,onClick:()=>{onGenerateSQL(`delete`),closeMenu()},children:`DELETE`})]})]})]})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`fixed inset-0 -z-10`,onClick:closeMenu,onContextMenu:e=>{e.preventDefault(),closeMenu()}})]})]})}function ObjectTree(props){let{tables,views,materializedViews,functions,procedures,connectionId:_connectionId,...shared}=props;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`flex-1`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`py-1 px-2`,children:[(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Tables`,icon:Grid3x3,objects:tables,objectType:`table`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Views`,icon:Eye,objects:views,objectType:`view`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Materialized`,icon:Layers,objects:materializedViews,objectType:`materialized_view`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Functions`,icon:SquareFunction,objects:functions,objectType:`function`,...shared}),(0,import_jsx_runtime.jsx)(ObjectSection,{title:`Procedures`,icon:Code,objects:procedures,objectType:`procedure`,...shared})]})})}function ObjectSidebar({connectionId,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,selectedSchema,onSchemaChange,onNewQuery,schemas,tables,isSchemasLoading,isTablesLoading,schemasError,tablesError}){let[searchQuery,setSearchQuery]=(0,import_react.useState)(``),queryClient$2=useQueryClient(),{mutate:refreshSchemaCache}=useRefreshSchemaCache(),{data:materializedViewsData=[],isLoading:mvLoading,error:mvError,refetch:refetchMaterializedViews}=useMaterializedViews(connectionId,selectedSchema||``),{data:functionsData=[],isLoading:functionsLoading,error:functionsError,refetch:refetchFunctions}=useFunctions(connectionId,selectedSchema||``),{data:proceduresData=[],isLoading:proceduresLoading,error:proceduresError,refetch:refetchProcedures}=useProcedures(connectionId,selectedSchema||``),tablesList=tables.filter(t$1=>t$1.type===`table`),viewsList=tables.filter(t$1=>t$1.type===`view`),isLoading=isSchemasLoading||isTablesLoading||mvLoading||functionsLoading||proceduresLoading,hasError=schemasError||tablesError||mvError||functionsError||proceduresError,errorMessage=schemasError?.message||tablesError?.message||mvError?.message||functionsError?.message||proceduresError?.message;return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`px-2 pt-2 space-y-2`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex gap-1 items-center`,children:[(0,import_jsx_runtime.jsx)(SchemaSelector,{value:selectedSchema||``,onChange:onSchemaChange,schemas,disabled:isSchemasLoading}),(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,className:`shrink-0`,onClick:()=>{queryClient$2.invalidateQueries({queryKey:queryKeys.schemas(connectionId)}),selectedSchema&&queryClient$2.invalidateQueries({queryKey:queryKeys.tables(connectionId,selectedSchema)}),refetchMaterializedViews(),refetchFunctions(),refetchProcedures(),queryClient$2.invalidateQueries({queryKey:[...connectionKeys.all,`health`,connectionId]}),refreshSchemaCache({connectionId,schemas:selectedSchema?[selectedSchema]:[]})},children:(0,import_jsx_runtime.jsx)(RefreshCw,{className:`h-2 w-2`})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:`Refresh`})]}),onNewQuery&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 font-mono font-semibold`,onClick:()=>onNewQuery(),children:`SQL`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:`New Query`})]})]}),(0,import_jsx_runtime.jsx)(SearchInput,{value:searchQuery,onChange:e=>setSearchQuery(e.target.value),onClear:()=>setSearchQuery(``),size:`sm`})]}),hasError?(0,import_jsx_runtime.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center text-red-500 text-sm px-4 text-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`div`,{children:`Failed to load schema`}),errorMessage&&(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-600 max-w-full break-words`,children:errorMessage}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-500`,children:`Use the refresh button above to retry`})]}):isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-gray-500 text-sm`,children:`Loading...`}):(0,import_jsx_runtime.jsx)(ObjectTree,{tables:tablesList,views:viewsList,materializedViews:materializedViewsData,functions:functionsData,procedures:proceduresData,searchQuery,selectedObject,onObjectSelect,onObjectDoubleClick,onViewSchema,onGenerateSQL,schema:selectedSchema||``,connectionId})]})}function getSchemaTabIcon(objectType){switch(objectType){case`view`:return Eye;case`materialized_view`:return Layers;case`function`:return SquareFunction;case`procedure`:return Code;case`table`:default:return Grid3x3}}function EditorTabs({tabs,activeTabId,onTabSelect,onTabClose,onCloseOthers,onCloseToRight,onCloseAll,rightPanelOpen,onRightPanelToggle}){let scrollContainerRef=(0,import_react.useRef)(null),[contextMenu,setContextMenu]=(0,import_react.useState)(null),handleWheel=(0,import_react.useCallback)(e=>{scrollContainerRef.current&&(e.preventDefault(),scrollContainerRef.current.scrollLeft+=e.deltaY)},[]),handleContextMenu=(0,import_react.useCallback)((e,tabId)=>{e.preventDefault(),setContextMenu({tabId,x:e.clientX,y:e.clientY})},[]),closeContextMenu=(0,import_react.useCallback)(()=>{setContextMenu(null)},[]),isLastTab=(contextMenu?tabs.findIndex(t$1=>t$1.tab.id===contextMenu.tabId):-1)===tabs.length-1;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`div`,{ref:scrollContainerRef,className:`flex items-center flex-1 min-w-0 overflow-x-auto [&::-webkit-scrollbar]:h-1 [&::-webkit-scrollbar]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-transparent hover:[&::-webkit-scrollbar-thumb]:bg-gray-300`,onWheel:handleWheel,children:tabs.map(({tab:tab$1})=>(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsxs)(`div`,{className:cn(`group flex items-center gap-1 h-8 px-3 border-r border-gray-200 cursor-pointer text-sm shrink min-w-0`,activeTabId===tab$1.id?`bg-white text-gray-900`:`text-gray-600 hover:bg-gray-100`),style:{minWidth:`80px`,maxWidth:`160px`},onClick:()=>onTabSelect(tab$1.id),onMouseDown:e=>{e.button===1&&(e.preventDefault(),onTabClose(tab$1.id))},onContextMenu:e=>handleContextMenu(e,tab$1.id),children:[tab$1.type===`schema`?(()=>(0,import_jsx_runtime.jsx)(getSchemaTabIcon(tab$1.objectType),{className:`size-3.5 shrink-0 text-gray-500`}))():(0,import_jsx_runtime.jsx)(FileCode,{className:`size-3.5 shrink-0 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`truncate flex-1`,children:tab$1.name}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,className:`opacity-0 group-hover:opacity-100 shrink-0 !size-4 !min-h-0 !p-0 !rounded-sm`,onClick:e=>{e.stopPropagation(),onTabClose(tab$1.id)},children:(0,import_jsx_runtime.jsx)(X,{className:`size-3`})})]})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:tab$1.name})]},tab$1.id))}),onRightPanelToggle&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{render:(0,import_jsx_runtime.jsx)(Button,{variant:rightPanelOpen?`secondary`:`ghost`,size:`icon-sm`,className:`shrink-0 mx-1`,onClick:onRightPanelToggle,children:(0,import_jsx_runtime.jsx)(PanelRight,{className:`size-4`})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`bottom`,children:rightPanelOpen?`Hide panel`:`Show panel`})]}),(0,import_jsx_runtime.jsx)(Menu,{open:contextMenu!==null,onOpenChange:open=>!open&&closeContextMenu(),children:(0,import_jsx_runtime.jsxs)(MenuPopup,{className:`whitespace-nowrap`,style:{position:`fixed`,left:contextMenu?.x??0,top:contextMenu?.y??0},side:`bottom`,align:`start`,sideOffset:0,children:[(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onTabClose(contextMenu.tabId),closeContextMenu()},children:`Close`}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onCloseOthers(contextMenu.tabId),closeContextMenu()},disabled:tabs.length<=1,children:`Close Others`}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{contextMenu&&onCloseToRight(contextMenu.tabId),closeContextMenu()},disabled:isLastTab,children:`Close to the Right`}),(0,import_jsx_runtime.jsx)(MenuSeparator,{}),(0,import_jsx_runtime.jsx)(MenuItem,{onClick:()=>{onCloseAll(),closeContextMenu()},children:`Close All`})]})})]})}var rangeFrom=[],rangeTo=[];(()=>{let numbers=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(s$1=>s$1?parseInt(s$1,36):1);for(let i$3=0,n=0;i$3<numbers.length;i$3++)(i$3%2?rangeTo:rangeFrom).push(n+=numbers[i$3])})();function isExtendingChar(code$2){if(code$2<768)return!1;for(let from=0,to=rangeFrom.length;;){let mid=from+to>>1;if(code$2<rangeFrom[mid])to=mid;else if(code$2>=rangeTo[mid])from=mid+1;else return!0;if(from==to)return!1}}function isRegionalIndicator(code$2){return code$2>=127462&&code$2<=127487}var ZWJ=8205;function findClusterBreak$1(str,pos,forward=!0,includeExtending=!0){return(forward?nextClusterBreak:prevClusterBreak)(str,pos,includeExtending)}function nextClusterBreak(str,pos,includeExtending){if(pos==str.length)return pos;pos&&surrogateLow$1(str.charCodeAt(pos))&&surrogateHigh$1(str.charCodeAt(pos-1))&&pos--;let prev=codePointAt$1(str,pos);for(pos+=codePointSize$1(prev);pos<str.length;){let next=codePointAt$1(str,pos);if(prev==ZWJ||next==ZWJ||includeExtending&&isExtendingChar(next))pos+=codePointSize$1(next),prev=next;else if(isRegionalIndicator(next)){let countBefore=0,i$3=pos-2;for(;i$3>=0&&isRegionalIndicator(codePointAt$1(str,i$3));)countBefore++,i$3-=2;if(countBefore%2==0)break;pos+=2}else break}return pos}function prevClusterBreak(str,pos,includeExtending){for(;pos>0;){let found=nextClusterBreak(str,pos-2,includeExtending);if(found<pos)return found;pos--}return 0}function codePointAt$1(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh$1(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);return surrogateLow$1(code1)?(code0-55296<<10)+(code1-56320)+65536:code0}function surrogateLow$1(ch){return ch>=56320&&ch<57344}function surrogateHigh$1(ch){return ch>=55296&&ch<56320}function codePointSize$1(code$2){return code$2<65536?1:2}var Text=class Text{lineAt(pos){if(pos<0||pos>this.length)throw RangeError(`Invalid position ${pos} in document of length ${this.length}`);return this.lineInner(pos,!1,1,0)}line(n){if(n<1||n>this.lines)throw RangeError(`Invalid line number ${n} in ${this.lines}-line document`);return this.lineInner(n,!0,1,0)}replace(from,to,text$5){[from,to]=clip(this,from,to);let parts=[];return this.decompose(0,from,parts,2),text$5.length&&text$5.decompose(0,text$5.length,parts,3),this.decompose(to,this.length,parts,1),TextNode.from(parts,this.length-(to-from)+text$5.length)}append(other){return this.replace(this.length,this.length,other)}slice(from,to=this.length){[from,to]=clip(this,from,to);let parts=[];return this.decompose(from,to,parts,0),TextNode.from(parts,to-from)}eq(other){if(other==this)return!0;if(other.length!=this.length||other.lines!=this.lines)return!1;let start=this.scanIdentical(other,1),end=this.length-this.scanIdentical(other,-1),a$1=new RawTextCursor(this),b$2=new RawTextCursor(other);for(let skip=start,pos=start;;){if(a$1.next(skip),b$2.next(skip),skip=0,a$1.lineBreak!=b$2.lineBreak||a$1.done!=b$2.done||a$1.value!=b$2.value)return!1;if(pos+=a$1.value.length,a$1.done||pos>=end)return!0}}iter(dir=1){return new RawTextCursor(this,dir)}iterRange(from,to=this.length){return new PartialTextCursor(this,from,to)}iterLines(from,to){let inner;if(from==null)inner=this.iter();else{to??=this.lines+1;let start=this.line(from).from;inner=this.iterRange(start,Math.max(start,to==this.lines+1?this.length:to<=1?0:this.line(to-1).to))}return new LineCursor(inner)}toString(){return this.sliceString(0)}toJSON(){let lines=[];return this.flatten(lines),lines}constructor(){}static of(text$5){if(text$5.length==0)throw RangeError(`A document must have at least one line`);return text$5.length==1&&!text$5[0]?Text.empty:text$5.length<=32?new TextLeaf(text$5):TextNode.from(TextLeaf.split(text$5,[]))}},TextLeaf=class TextLeaf extends Text{constructor(text$5,length=textLength(text$5)){super(),this.text=text$5,this.length=length}get lines(){return this.text.length}get children(){return null}lineInner(target,isLine,line,offset$3){for(let i$3=0;;i$3++){let string$3=this.text[i$3],end=offset$3+string$3.length;if((isLine?line:end)>=target)return new Line(offset$3,end,line,string$3);offset$3=end+1,line++}}decompose(from,to,target,open){let text$5=from<=0&&to>=this.length?this:new TextLeaf(sliceText(this.text,from,to),Math.min(to,this.length)-Math.max(0,from));if(open&1){let prev=target.pop(),joined=appendText(text$5.text,prev.text.slice(),0,text$5.length);if(joined.length<=32)target.push(new TextLeaf(joined,prev.length+text$5.length));else{let mid=joined.length>>1;target.push(new TextLeaf(joined.slice(0,mid)),new TextLeaf(joined.slice(mid)))}}else target.push(text$5)}replace(from,to,text$5){if(!(text$5 instanceof TextLeaf))return super.replace(from,to,text$5);[from,to]=clip(this,from,to);let lines=appendText(this.text,appendText(text$5.text,sliceText(this.text,0,from)),to),newLen=this.length+text$5.length-(to-from);return lines.length<=32?new TextLeaf(lines,newLen):TextNode.from(TextLeaf.split(lines,[]),newLen)}sliceString(from,to=this.length,lineSep=`
25
25
  `){[from,to]=clip(this,from,to);let result=``;for(let pos=0,i$3=0;pos<=to&&i$3<this.text.length;i$3++){let line=this.text[i$3],end=pos+line.length;pos>from&&i$3&&(result+=lineSep),from<end&&to>pos&&(result+=line.slice(Math.max(0,from-pos),to-pos)),pos=end+1}return result}flatten(target){for(let line of this.text)target.push(line)}scanIdentical(){return 0}static split(text$5,target){let part=[],len=-1;for(let line of text$5)part.push(line),len+=line.length+1,part.length==32&&(target.push(new TextLeaf(part,len)),part=[],len=-1);return len>-1&&target.push(new TextLeaf(part,len)),target}},TextNode=class TextNode extends Text{constructor(children,length){super(),this.children=children,this.length=length,this.lines=0;for(let child of children)this.lines+=child.lines}lineInner(target,isLine,line,offset$3){for(let i$3=0;;i$3++){let child=this.children[i$3],end=offset$3+child.length,endLine=line+child.lines-1;if((isLine?endLine:end)>=target)return child.lineInner(target,isLine,line,offset$3);offset$3=end+1,line=endLine+1}}decompose(from,to,target,open){for(let i$3=0,pos=0;pos<=to&&i$3<this.children.length;i$3++){let child=this.children[i$3],end=pos+child.length;if(from<=end&&to>=pos){let childOpen=open&((pos<=from?1:0)|(end>=to?2:0));pos>=from&&end<=to&&!childOpen?target.push(child):child.decompose(from-pos,to-pos,target,childOpen)}pos=end+1}}replace(from,to,text$5){if([from,to]=clip(this,from,to),text$5.lines<this.lines)for(let i$3=0,pos=0;i$3<this.children.length;i$3++){let child=this.children[i$3],end=pos+child.length;if(from>=pos&&to<=end){let updated=child.replace(from-pos,to-pos,text$5),totalLines=this.lines-child.lines+updated.lines;if(updated.lines<totalLines>>4&&updated.lines>totalLines>>6){let copy=this.children.slice();return copy[i$3]=updated,new TextNode(copy,this.length-(to-from)+text$5.length)}return super.replace(pos,end,updated)}pos=end+1}return super.replace(from,to,text$5)}sliceString(from,to=this.length,lineSep=`
26
26
  `){[from,to]=clip(this,from,to);let result=``;for(let i$3=0,pos=0;i$3<this.children.length&&pos<=to;i$3++){let child=this.children[i$3],end=pos+child.length;pos>from&&i$3&&(result+=lineSep),from<end&&to>pos&&(result+=child.sliceString(from-pos,to-pos,lineSep)),pos=end+1}return result}flatten(target){for(let child of this.children)child.flatten(target)}scanIdentical(other,dir){if(!(other instanceof TextNode))return 0;let length=0,[iA,iB,eA,eB]=dir>0?[0,0,this.children.length,other.children.length]:[this.children.length-1,other.children.length-1,-1,-1];for(;;iA+=dir,iB+=dir){if(iA==eA||iB==eB)return length;let chA=this.children[iA],chB=other.children[iB];if(chA!=chB)return length+chA.scanIdentical(chB,dir);length+=chA.length+1}}static from(children,length=children.reduce((l$2,ch)=>l$2+ch.length+1,-1)){let lines=0;for(let ch of children)lines+=ch.lines;if(lines<32){let flat=[];for(let ch of children)ch.flatten(flat);return new TextLeaf(flat,length)}let chunk=Math.max(32,lines>>5),maxChunk=chunk<<1,minChunk=chunk>>1,chunked=[],currentLines=0,currentLen=-1,currentChunk=[];function add$1(child){let last;if(child.lines>maxChunk&&child instanceof TextNode)for(let node$1 of child.children)add$1(node$1);else child.lines>minChunk&&(currentLines>minChunk||!currentLines)?(flush(),chunked.push(child)):child instanceof TextLeaf&&currentLines&&(last=currentChunk[currentChunk.length-1])instanceof TextLeaf&&child.lines+last.lines<=32?(currentLines+=child.lines,currentLen+=child.length+1,currentChunk[currentChunk.length-1]=new TextLeaf(last.text.concat(child.text),last.length+1+child.length)):(currentLines+child.lines>chunk&&flush(),currentLines+=child.lines,currentLen+=child.length+1,currentChunk.push(child))}function flush(){currentLines!=0&&(chunked.push(currentChunk.length==1?currentChunk[0]:TextNode.from(currentChunk,currentLen)),currentLen=-1,currentLines=currentChunk.length=0)}for(let child of children)add$1(child);return flush(),chunked.length==1?chunked[0]:new TextNode(chunked,length)}};Text.empty=new TextLeaf([``],0);function textLength(text$5){let length=-1;for(let line of text$5)length+=line.length+1;return length}function appendText(text$5,target,from=0,to=1e9){for(let pos=0,i$3=0,first=!0;i$3<text$5.length&&pos<=to;i$3++){let line=text$5[i$3],end=pos+line.length;end>=from&&(end>to&&(line=line.slice(0,to-pos)),pos<from&&(line=line.slice(from-pos)),first?(target[target.length-1]+=line,first=!1):target.push(line)),pos=end+1}return target}function sliceText(text$5,from,to){return appendText(text$5,[``],from,to)}var RawTextCursor=class{constructor(text$5,dir=1){this.dir=dir,this.done=!1,this.lineBreak=!1,this.value=``,this.nodes=[text$5],this.offsets=[dir>0?1:(text$5 instanceof TextLeaf?text$5.text.length:text$5.children.length)<<1]}nextInner(skip,dir){for(this.done=this.lineBreak=!1;;){let last=this.nodes.length-1,top$1=this.nodes[last],offsetValue=this.offsets[last],offset$3=offsetValue>>1,size$3=top$1 instanceof TextLeaf?top$1.text.length:top$1.children.length;if(offset$3==(dir>0?size$3:0)){if(last==0)return this.done=!0,this.value=``,this;dir>0&&this.offsets[last-1]++,this.nodes.pop(),this.offsets.pop()}else if((offsetValue&1)==(dir>0?0:1)){if(this.offsets[last]+=dir,skip==0)return this.lineBreak=!0,this.value=`
27
27
  `,this;skip--}else if(top$1 instanceof TextLeaf){let next=top$1.text[offset$3+(dir<0?-1:0)];if(this.offsets[last]+=dir,next.length>Math.max(0,skip))return this.value=skip==0?next:dir>0?next.slice(skip):next.slice(0,next.length-skip),this;skip-=next.length}else{let next=top$1.children[offset$3+(dir<0?-1:0)];skip>next.length?(skip-=next.length,this.offsets[last]+=dir):(dir<0&&this.offsets[last]--,this.nodes.push(next),this.offsets.push(dir>0?1:(next instanceof TextLeaf?next.text.length:next.children.length)<<1))}}}next(skip=0){return skip<0&&(this.nextInner(-skip,-this.dir),skip=this.value.length),this.nextInner(skip,this.dir)}},PartialTextCursor=class{constructor(text$5,start,end){this.value=``,this.done=!1,this.cursor=new RawTextCursor(text$5,start>end?-1:1),this.pos=start>end?text$5.length:0,this.from=Math.min(start,end),this.to=Math.max(start,end)}nextInner(skip,dir){if(dir<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;skip+=Math.max(0,dir<0?this.pos-this.to:this.from-this.pos);let limit=dir<0?this.pos-this.from:this.to-this.pos;skip>limit&&(skip=limit),limit-=skip;let{value}=this.cursor.next(skip);return this.pos+=(value.length+skip)*dir,this.value=value.length<=limit?value:dir<0?value.slice(value.length-limit):value.slice(0,limit),this.done=!this.value,this}next(skip=0){return skip<0?skip=Math.max(skip,this.from-this.pos):skip>0&&(skip=Math.min(skip,this.to-this.pos)),this.nextInner(skip,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},LineCursor=class{constructor(inner){this.inner=inner,this.afterBreak=!0,this.value=``,this.done=!1}next(skip=0){let{done,lineBreak,value}=this.inner.next(skip);return done&&this.afterBreak?(this.value=``,this.afterBreak=!1):done?(this.done=!0,this.value=``):lineBreak?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=value,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});var Line=class{constructor(from,to,number$2,text$5){this.from=from,this.to=to,this.number=number$2,this.text=text$5}get length(){return this.to-this.from}};function clip(text$5,from,to){return from=Math.max(0,Math.min(text$5.length,from)),[from,Math.max(from,Math.min(text$5.length,to))]}function findClusterBreak(str,pos,forward=!0,includeExtending=!0){return findClusterBreak$1(str,pos,forward,includeExtending)}function surrogateLow(ch){return ch>=56320&&ch<57344}function surrogateHigh(ch){return ch>=55296&&ch<56320}function codePointAt(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);return surrogateLow(code1)?(code0-55296<<10)+(code1-56320)+65536:code0}function fromCodePoint(code$2){return code$2<=65535?String.fromCharCode(code$2):(code$2-=65536,String.fromCharCode((code$2>>10)+55296,(code$2&1023)+56320))}function codePointSize(code$2){return code$2<65536?1:2}var DefaultSplit=/\r\n?|\n/,MapMode=(function(MapMode$1){return MapMode$1[MapMode$1.Simple=0]=`Simple`,MapMode$1[MapMode$1.TrackDel=1]=`TrackDel`,MapMode$1[MapMode$1.TrackBefore=2]=`TrackBefore`,MapMode$1[MapMode$1.TrackAfter=3]=`TrackAfter`,MapMode$1})(MapMode||={}),ChangeDesc=class ChangeDesc{constructor(sections){this.sections=sections}get length(){let result=0;for(let i$3=0;i$3<this.sections.length;i$3+=2)result+=this.sections[i$3];return result}get newLength(){let result=0;for(let i$3=0;i$3<this.sections.length;i$3+=2){let ins=this.sections[i$3+1];result+=ins<0?this.sections[i$3]:ins}return result}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(f$2){for(let i$3=0,posA=0,posB=0;i$3<this.sections.length;){let len=this.sections[i$3++],ins=this.sections[i$3++];ins<0?(f$2(posA,posB,len),posB+=len):posB+=ins,posA+=len}}iterChangedRanges(f$2,individual=!1){iterChanges(this,f$2,individual)}get invertedDesc(){let sections=[];for(let i$3=0;i$3<this.sections.length;){let len=this.sections[i$3++],ins=this.sections[i$3++];ins<0?sections.push(len,ins):sections.push(ins,len)}return new ChangeDesc(sections)}composeDesc(other){return this.empty?other:other.empty?this:composeSets(this,other)}mapDesc(other,before=!1){return other.empty?this:mapSet(this,other,before)}mapPos(pos,assoc=-1,mode=MapMode.Simple){let posA=0,posB=0;for(let i$3=0;i$3<this.sections.length;){let len=this.sections[i$3++],ins=this.sections[i$3++],endA=posA+len;if(ins<0){if(endA>pos)return posB+(pos-posA);posB+=len}else{if(mode!=MapMode.Simple&&endA>=pos&&(mode==MapMode.TrackDel&&posA<pos&&endA>pos||mode==MapMode.TrackBefore&&posA<pos||mode==MapMode.TrackAfter&&endA>pos))return null;if(endA>pos||endA==pos&&assoc<0&&!len)return pos==posA||assoc<0?posB:posB+ins;posB+=ins}posA=endA}if(pos>posA)throw RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);return posB}touchesRange(from,to=from){for(let i$3=0,pos=0;i$3<this.sections.length&&pos<=to;){let len=this.sections[i$3++],ins=this.sections[i$3++],end=pos+len;if(ins>=0&&pos<=to&&end>=from)return pos<from&&end>to?`cover`:!0;pos=end}return!1}toString(){let result=``;for(let i$3=0;i$3<this.sections.length;){let len=this.sections[i$3++],ins=this.sections[i$3++];result+=(result?` `:``)+len+(ins>=0?`:`+ins:``)}return result}toJSON(){return this.sections}static fromJSON(json$1){if(!Array.isArray(json$1)||json$1.length%2||json$1.some(a$1=>typeof a$1!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new ChangeDesc(json$1)}static create(sections){return new ChangeDesc(sections)}},ChangeSet=class ChangeSet extends ChangeDesc{constructor(sections,inserted){super(sections),this.inserted=inserted}apply(doc$1){if(this.length!=doc$1.length)throw RangeError(`Applying change set to a document with the wrong length`);return iterChanges(this,(fromA,toA,fromB,_toB,text$5)=>doc$1=doc$1.replace(fromB,fromB+(toA-fromA),text$5),!1),doc$1}mapDesc(other,before=!1){return mapSet(this,other,before,!0)}invert(doc$1){let sections=this.sections.slice(),inserted=[];for(let i$3=0,pos=0;i$3<sections.length;i$3+=2){let len=sections[i$3],ins=sections[i$3+1];if(ins>=0){sections[i$3]=ins,sections[i$3+1]=len;let index$4=i$3>>1;for(;inserted.length<index$4;)inserted.push(Text.empty);inserted.push(len?doc$1.slice(pos,pos+len):Text.empty)}pos+=len}return new ChangeSet(sections,inserted)}compose(other){return this.empty?other:other.empty?this:composeSets(this,other,!0)}map(other,before=!1){return other.empty?this:mapSet(this,other,before,!0)}iterChanges(f$2,individual=!1){iterChanges(this,f$2,individual)}get desc(){return ChangeDesc.create(this.sections)}filter(ranges){let resultSections=[],resultInserted=[],filteredSections=[],iter=new SectionIter(this);done:for(let i$3=0,pos=0;;){let next=i$3==ranges.length?1e9:ranges[i$3++];for(;pos<next||pos==next&&iter.len==0;){if(iter.done)break done;let len=Math.min(iter.len,next-pos);addSection(filteredSections,len,-1);let ins=iter.ins==-1?-1:iter.off==0?iter.ins:0;addSection(resultSections,len,ins),ins>0&&addInsert(resultInserted,resultSections,iter.text),iter.forward(len),pos+=len}let end=ranges[i$3++];for(;pos<end;){if(iter.done)break done;let len=Math.min(iter.len,end-pos);addSection(resultSections,len,-1),addSection(filteredSections,len,iter.ins==-1?-1:iter.off==0?iter.ins:0),iter.forward(len),pos+=len}}return{changes:new ChangeSet(resultSections,resultInserted),filtered:ChangeDesc.create(filteredSections)}}toJSON(){let parts=[];for(let i$3=0;i$3<this.sections.length;i$3+=2){let len=this.sections[i$3],ins=this.sections[i$3+1];ins<0?parts.push(len):ins==0?parts.push([len]):parts.push([len].concat(this.inserted[i$3>>1].toJSON()))}return parts}static of(changes,length,lineSep){let sections=[],inserted=[],pos=0,total=null;function flush(force=!1){if(!force&&!sections.length)return;pos<length&&addSection(sections,length-pos,-1);let set=new ChangeSet(sections,inserted);total=total?total.compose(set.map(total)):set,sections=[],inserted=[],pos=0}function process$1(spec){if(Array.isArray(spec))for(let sub of spec)process$1(sub);else if(spec instanceof ChangeSet){if(spec.length!=length)throw RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);flush(),total=total?total.compose(spec.map(total)):spec}else{let{from,to=from,insert:insert$1}=spec;if(from>to||from<0||to>length)throw RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);let insText=insert$1?typeof insert$1==`string`?Text.of(insert$1.split(lineSep||DefaultSplit)):insert$1:Text.empty,insLen=insText.length;if(from==to&&insLen==0)return;from<pos&&flush(),from>pos&&addSection(sections,from-pos,-1),addSection(sections,to-from,insLen),addInsert(inserted,sections,insText),pos=to}}return process$1(changes),flush(!total),total}static empty(length){return new ChangeSet(length?[length,-1]:[],[])}static fromJSON(json$1){if(!Array.isArray(json$1))throw RangeError(`Invalid JSON representation of ChangeSet`);let sections=[],inserted=[];for(let i$3=0;i$3<json$1.length;i$3++){let part=json$1[i$3];if(typeof part==`number`)sections.push(part,-1);else if(!Array.isArray(part)||typeof part[0]!=`number`||part.some((e,i$4)=>i$4&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(part.length==1)sections.push(part[0],0);else{for(;inserted.length<i$3;)inserted.push(Text.empty);inserted[i$3]=Text.of(part.slice(1)),sections.push(part[0],inserted[i$3].length)}}return new ChangeSet(sections,inserted)}static createSet(sections,inserted){return new ChangeSet(sections,inserted)}};function addSection(sections,len,ins,forceJoin=!1){if(len==0&&ins<=0)return;let last=sections.length-2;last>=0&&ins<=0&&ins==sections[last+1]?sections[last]+=len:last>=0&&len==0&&sections[last]==0?sections[last+1]+=ins:forceJoin?(sections[last]+=len,sections[last+1]+=ins):sections.push(len,ins)}function addInsert(values,sections,value){if(value.length==0)return;let index$4=sections.length-2>>1;if(index$4<values.length)values[values.length-1]=values[values.length-1].append(value);else{for(;values.length<index$4;)values.push(Text.empty);values.push(value)}}function iterChanges(desc,f$2,individual){let inserted=desc.inserted;for(let posA=0,posB=0,i$3=0;i$3<desc.sections.length;){let len=desc.sections[i$3++],ins=desc.sections[i$3++];if(ins<0)posA+=len,posB+=len;else{let endA=posA,endB=posB,text$5=Text.empty;for(;endA+=len,endB+=ins,ins&&inserted&&(text$5=text$5.append(inserted[i$3-2>>1])),!(individual||i$3==desc.sections.length||desc.sections[i$3+1]<0);)len=desc.sections[i$3++],ins=desc.sections[i$3++];f$2(posA,endA,posB,endB,text$5),posA=endA,posB=endB}}}function mapSet(setA,setB,before,mkSet=!1){let sections=[],insert$1=mkSet?[]:null,a$1=new SectionIter(setA),b$2=new SectionIter(setB);for(let inserted=-1;;)if(a$1.done&&b$2.len||b$2.done&&a$1.len)throw Error(`Mismatched change set lengths`);else if(a$1.ins==-1&&b$2.ins==-1){let len=Math.min(a$1.len,b$2.len);addSection(sections,len,-1),a$1.forward(len),b$2.forward(len)}else if(b$2.ins>=0&&(a$1.ins<0||inserted==a$1.i||a$1.off==0&&(b$2.len<a$1.len||b$2.len==a$1.len&&!before))){let len=b$2.len;for(addSection(sections,b$2.ins,-1);len;){let piece=Math.min(a$1.len,len);a$1.ins>=0&&inserted<a$1.i&&a$1.len<=piece&&(addSection(sections,0,a$1.ins),insert$1&&addInsert(insert$1,sections,a$1.text),inserted=a$1.i),a$1.forward(piece),len-=piece}b$2.next()}else if(a$1.ins>=0){let len=0,left=a$1.len;for(;left;)if(b$2.ins==-1){let piece=Math.min(left,b$2.len);len+=piece,left-=piece,b$2.forward(piece)}else if(b$2.ins==0&&b$2.len<left)left-=b$2.len,b$2.next();else break;addSection(sections,len,inserted<a$1.i?a$1.ins:0),insert$1&&inserted<a$1.i&&addInsert(insert$1,sections,a$1.text),inserted=a$1.i,a$1.forward(a$1.len-left)}else if(a$1.done&&b$2.done)return insert$1?ChangeSet.createSet(sections,insert$1):ChangeDesc.create(sections);else throw Error(`Mismatched change set lengths`)}function composeSets(setA,setB,mkSet=!1){let sections=[],insert$1=mkSet?[]:null,a$1=new SectionIter(setA),b$2=new SectionIter(setB);for(let open=!1;;)if(a$1.done&&b$2.done)return insert$1?ChangeSet.createSet(sections,insert$1):ChangeDesc.create(sections);else if(a$1.ins==0)addSection(sections,a$1.len,0,open),a$1.next();else if(b$2.len==0&&!b$2.done)addSection(sections,0,b$2.ins,open),insert$1&&addInsert(insert$1,sections,b$2.text),b$2.next();else if(a$1.done||b$2.done)throw Error(`Mismatched change set lengths`);else{let len=Math.min(a$1.len2,b$2.len),sectionLen=sections.length;if(a$1.ins==-1){let insB=b$2.ins==-1?-1:b$2.off?0:b$2.ins;addSection(sections,len,insB,open),insert$1&&insB&&addInsert(insert$1,sections,b$2.text)}else b$2.ins==-1?(addSection(sections,a$1.off?0:a$1.len,len,open),insert$1&&addInsert(insert$1,sections,a$1.textBit(len))):(addSection(sections,a$1.off?0:a$1.len,b$2.off?0:b$2.ins,open),insert$1&&!b$2.off&&addInsert(insert$1,sections,b$2.text));open=(a$1.ins>len||b$2.ins>=0&&b$2.len>len)&&(open||sections.length>sectionLen),a$1.forward2(len),b$2.forward(len)}}var SectionIter=class{constructor(set){this.set=set,this.i=0,this.next()}next(){let{sections}=this.set;this.i<sections.length?(this.len=sections[this.i++],this.ins=sections[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted}=this.set,index$4=this.i-2>>1;return index$4>=inserted.length?Text.empty:inserted[index$4]}textBit(len){let{inserted}=this.set,index$4=this.i-2>>1;return index$4>=inserted.length&&!len?Text.empty:inserted[index$4].slice(this.off,len==null?void 0:this.off+len)}forward(len){len==this.len?this.next():(this.len-=len,this.off+=len)}forward2(len){this.ins==-1?this.forward(len):len==this.ins?this.next():(this.ins-=len,this.off+=len)}},SelectionRange=class SelectionRange{constructor(from,to,flags){this.from=from,this.to=to,this.flags=flags}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let level=this.flags&7;return level==7?null:level}get goalColumn(){let value=this.flags>>6;return value==16777215?void 0:value}map(change,assoc=-1){let from,to;return this.empty?from=to=change.mapPos(this.from,assoc):(from=change.mapPos(this.from,1),to=change.mapPos(this.to,-1)),from==this.from&&to==this.to?this:new SelectionRange(from,to,this.flags)}extend(from,to=from){if(from<=this.anchor&&to>=this.anchor)return EditorSelection.range(from,to);let head$1=Math.abs(from-this.anchor)>Math.abs(to-this.anchor)?from:to;return EditorSelection.range(this.anchor,head$1)}eq(other,includeAssoc=!1){return this.anchor==other.anchor&&this.head==other.head&&this.goalColumn==other.goalColumn&&(!includeAssoc||!this.empty||this.assoc==other.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(json$1){if(!json$1||typeof json$1.anchor!=`number`||typeof json$1.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return EditorSelection.range(json$1.anchor,json$1.head)}static create(from,to,flags){return new SelectionRange(from,to,flags)}},EditorSelection=class EditorSelection{constructor(ranges,mainIndex){this.ranges=ranges,this.mainIndex=mainIndex}map(change,assoc=-1){return change.empty?this:EditorSelection.create(this.ranges.map(r$4=>r$4.map(change,assoc)),this.mainIndex)}eq(other,includeAssoc=!1){if(this.ranges.length!=other.ranges.length||this.mainIndex!=other.mainIndex)return!1;for(let i$3=0;i$3<this.ranges.length;i$3++)if(!this.ranges[i$3].eq(other.ranges[i$3],includeAssoc))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new EditorSelection([this.main],0)}addRange(range$1,main$1=!0){return EditorSelection.create([range$1].concat(this.ranges),main$1?0:this.mainIndex+1)}replaceRange(range$1,which=this.mainIndex){let ranges=this.ranges.slice();return ranges[which]=range$1,EditorSelection.create(ranges,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(r$4=>r$4.toJSON()),main:this.mainIndex}}static fromJSON(json$1){if(!json$1||!Array.isArray(json$1.ranges)||typeof json$1.main!=`number`||json$1.main>=json$1.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new EditorSelection(json$1.ranges.map(r$4=>SelectionRange.fromJSON(r$4)),json$1.main)}static single(anchor,head$1=anchor){return new EditorSelection([EditorSelection.range(anchor,head$1)],0)}static create(ranges,mainIndex=0){if(ranges.length==0)throw RangeError(`A selection needs at least one range`);for(let pos=0,i$3=0;i$3<ranges.length;i$3++){let range$1=ranges[i$3];if(range$1.empty?range$1.from<=pos:range$1.from<pos)return EditorSelection.normalized(ranges.slice(),mainIndex);pos=range$1.to}return new EditorSelection(ranges,mainIndex)}static cursor(pos,assoc=0,bidiLevel,goalColumn){return SelectionRange.create(pos,pos,(assoc==0?0:assoc<0?8:16)|(bidiLevel==null?7:Math.min(6,bidiLevel))|(goalColumn??16777215)<<6)}static range(anchor,head$1,goalColumn,bidiLevel){let flags=(goalColumn??16777215)<<6|(bidiLevel==null?7:Math.min(6,bidiLevel));return head$1<anchor?SelectionRange.create(head$1,anchor,48|flags):SelectionRange.create(anchor,head$1,(head$1>anchor?8:0)|flags)}static normalized(ranges,mainIndex=0){let main$1=ranges[mainIndex];ranges.sort((a$1,b$2)=>a$1.from-b$2.from),mainIndex=ranges.indexOf(main$1);for(let i$3=1;i$3<ranges.length;i$3++){let range$1=ranges[i$3],prev=ranges[i$3-1];if(range$1.empty?range$1.from<=prev.to:range$1.from<prev.to){let from=prev.from,to=Math.max(range$1.to,prev.to);i$3<=mainIndex&&mainIndex--,ranges.splice(--i$3,2,range$1.anchor>range$1.head?EditorSelection.range(to,from):EditorSelection.range(from,to))}}return new EditorSelection(ranges,mainIndex)}};function checkSelection(selection,docLength){for(let range$1 of selection.ranges)if(range$1.to>docLength)throw RangeError(`Selection points outside of document`)}var nextID=0,Facet=class Facet{constructor(combine,compareInput,compare$2,isStatic,enables){this.combine=combine,this.compareInput=compareInput,this.compare=compare$2,this.isStatic=isStatic,this.id=nextID++,this.default=combine([]),this.extensions=typeof enables==`function`?enables(this):enables}get reader(){return this}static define(config$1={}){return new Facet(config$1.combine||(a$1=>a$1),config$1.compareInput||((a$1,b$2)=>a$1===b$2),config$1.compare||(config$1.combine?(a$1,b$2)=>a$1===b$2:sameArray$1),!!config$1.static,config$1.enables)}of(value){return new FacetProvider([],this,0,value)}compute(deps,get){if(this.isStatic)throw Error(`Can't compute a static facet`);return new FacetProvider(deps,this,1,get)}computeN(deps,get){if(this.isStatic)throw Error(`Can't compute a static facet`);return new FacetProvider(deps,this,2,get)}from(field,get){return get||=x$1=>x$1,this.compute([field],state$1=>get(state$1.field(field)))}};function sameArray$1(a$1,b$2){return a$1==b$2||a$1.length==b$2.length&&a$1.every((e,i$3)=>e===b$2[i$3])}var FacetProvider=class{constructor(dependencies,facet,type,value){this.dependencies=dependencies,this.facet=facet,this.type=type,this.value=value,this.id=nextID++}dynamicSlot(addresses){var _a$1;let getter=this.value,compare$2=this.facet.compareInput,id=this.id,idx=addresses[id]>>1,multi=this.type==2,depDoc=!1,depSel=!1,depAddrs=[];for(let dep of this.dependencies)dep==`doc`?depDoc=!0:dep==`selection`?depSel=!0:(addresses[dep.id]??1)&1||depAddrs.push(addresses[dep.id]);return{create(state$1){return state$1.values[idx]=getter(state$1),1},update(state$1,tr$1){if(depDoc&&tr$1.docChanged||depSel&&(tr$1.docChanged||tr$1.selection)||ensureAll(state$1,depAddrs)){let newVal=getter(state$1);if(multi?!compareArray(newVal,state$1.values[idx],compare$2):!compare$2(newVal,state$1.values[idx]))return state$1.values[idx]=newVal,1}return 0},reconfigure:(state$1,oldState)=>{let newVal,oldAddr=oldState.config.address[id];if(oldAddr!=null){let oldVal=getAddr(oldState,oldAddr);if(this.dependencies.every(dep=>dep instanceof Facet?oldState.facet(dep)===state$1.facet(dep):dep instanceof StateField?oldState.field(dep,!1)==state$1.field(dep,!1):!0)||(multi?compareArray(newVal=getter(state$1),oldVal,compare$2):compare$2(newVal=getter(state$1),oldVal)))return state$1.values[idx]=oldVal,0}else newVal=getter(state$1);return state$1.values[idx]=newVal,1}}}};function compareArray(a$1,b$2,compare$2){if(a$1.length!=b$2.length)return!1;for(let i$3=0;i$3<a$1.length;i$3++)if(!compare$2(a$1[i$3],b$2[i$3]))return!1;return!0}function ensureAll(state$1,addrs){let changed=!1;for(let addr of addrs)ensureAddr(state$1,addr)&1&&(changed=!0);return changed}function dynamicFacetSlot(addresses,facet,providers){let providerAddrs=providers.map(p$1=>addresses[p$1.id]),providerTypes=providers.map(p$1=>p$1.type),dynamic=providerAddrs.filter(p$1=>!(p$1&1)),idx=addresses[facet.id]>>1;function get(state$1){let values=[];for(let i$3=0;i$3<providerAddrs.length;i$3++){let value=getAddr(state$1,providerAddrs[i$3]);if(providerTypes[i$3]==2)for(let val of value)values.push(val);else values.push(value)}return facet.combine(values)}return{create(state$1){for(let addr of providerAddrs)ensureAddr(state$1,addr);return state$1.values[idx]=get(state$1),1},update(state$1,tr$1){if(!ensureAll(state$1,dynamic))return 0;let value=get(state$1);return facet.compare(value,state$1.values[idx])?0:(state$1.values[idx]=value,1)},reconfigure(state$1,oldState){let depChanged=ensureAll(state$1,providerAddrs),oldProviders=oldState.config.facets[facet.id],oldValue=oldState.facet(facet);if(oldProviders&&!depChanged&&sameArray$1(providers,oldProviders))return state$1.values[idx]=oldValue,0;let value=get(state$1);return facet.compare(value,oldValue)?(state$1.values[idx]=oldValue,0):(state$1.values[idx]=value,1)}}}var initField=Facet.define({static:!0}),StateField=class StateField{constructor(id,createF,updateF,compareF,spec){this.id=id,this.createF=createF,this.updateF=updateF,this.compareF=compareF,this.spec=spec,this.provides=void 0}static define(config$1){let field=new StateField(nextID++,config$1.create,config$1.update,config$1.compare||((a$1,b$2)=>a$1===b$2),config$1);return config$1.provide&&(field.provides=config$1.provide(field)),field}create(state$1){return(state$1.facet(initField).find(i$3=>i$3.field==this)?.create||this.createF)(state$1)}slot(addresses){let idx=addresses[this.id]>>1;return{create:state$1=>(state$1.values[idx]=this.create(state$1),1),update:(state$1,tr$1)=>{let oldVal=state$1.values[idx],value=this.updateF(oldVal,tr$1);return this.compareF(oldVal,value)?0:(state$1.values[idx]=value,1)},reconfigure:(state$1,oldState)=>{let init=state$1.facet(initField),oldInit=oldState.facet(initField),reInit;return(reInit=init.find(i$3=>i$3.field==this))&&reInit!=oldInit.find(i$3=>i$3.field==this)?(state$1.values[idx]=reInit.create(state$1),1):oldState.config.address[this.id]==null?(state$1.values[idx]=this.create(state$1),1):(state$1.values[idx]=oldState.field(this),0)}}}init(create$3){return[this,initField.of({field:this,create:create$3})]}get extension(){return this}},Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(value){return ext=>new PrecExtension(ext,value)}var Prec={highest:prec(Prec_.highest),high:prec(Prec_.high),default:prec(Prec_.default),low:prec(Prec_.low),lowest:prec(Prec_.lowest)},PrecExtension=class{constructor(inner,prec$1){this.inner=inner,this.prec=prec$1}},Compartment=class Compartment{of(ext){return new CompartmentInstance(this,ext)}reconfigure(content$3){return Compartment.reconfigure.of({compartment:this,extension:content$3})}get(state$1){return state$1.config.compartments.get(this)}},CompartmentInstance=class{constructor(compartment,inner){this.compartment=compartment,this.inner=inner}},Configuration=class Configuration{constructor(base$1,compartments,dynamicSlots,address,staticValues,facets){for(this.base=base$1,this.compartments=compartments,this.dynamicSlots=dynamicSlots,this.address=address,this.staticValues=staticValues,this.facets=facets,this.statusTemplate=[];this.statusTemplate.length<dynamicSlots.length;)this.statusTemplate.push(0)}staticFacet(facet){let addr=this.address[facet.id];return addr==null?facet.default:this.staticValues[addr>>1]}static resolve(base$1,compartments,oldState){let fields=[],facets=Object.create(null),newCompartments=new Map;for(let ext of flatten(base$1,compartments,newCompartments))ext instanceof StateField?fields.push(ext):(facets[ext.facet.id]||(facets[ext.facet.id]=[])).push(ext);let address=Object.create(null),staticValues=[],dynamicSlots=[];for(let field of fields)address[field.id]=dynamicSlots.length<<1,dynamicSlots.push(a$1=>field.slot(a$1));let oldFacets=oldState?.config.facets;for(let id in facets){let providers=facets[id],facet=providers[0].facet,oldProviders=oldFacets&&oldFacets[id]||[];if(providers.every(p$1=>p$1.type==0))if(address[facet.id]=staticValues.length<<1|1,sameArray$1(oldProviders,providers))staticValues.push(oldState.facet(facet));else{let value=facet.combine(providers.map(p$1=>p$1.value));staticValues.push(oldState&&facet.compare(value,oldState.facet(facet))?oldState.facet(facet):value)}else{for(let p$1 of providers)p$1.type==0?(address[p$1.id]=staticValues.length<<1|1,staticValues.push(p$1.value)):(address[p$1.id]=dynamicSlots.length<<1,dynamicSlots.push(a$1=>p$1.dynamicSlot(a$1)));address[facet.id]=dynamicSlots.length<<1,dynamicSlots.push(a$1=>dynamicFacetSlot(a$1,facet,providers))}}return new Configuration(base$1,newCompartments,dynamicSlots.map(f$2=>f$2(address)),address,staticValues,facets)}};function flatten(extension$1,compartments,newCompartments){let result=[[],[],[],[],[]],seen$1=new Map;function inner(ext,prec$1){let known=seen$1.get(ext);if(known!=null){if(known<=prec$1)return;let found=result[known].indexOf(ext);found>-1&&result[known].splice(found,1),ext instanceof CompartmentInstance&&newCompartments.delete(ext.compartment)}if(seen$1.set(ext,prec$1),Array.isArray(ext))for(let e of ext)inner(e,prec$1);else if(ext instanceof CompartmentInstance){if(newCompartments.has(ext.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let content$3=compartments.get(ext.compartment)||ext.inner;newCompartments.set(ext.compartment,content$3),inner(content$3,prec$1)}else if(ext instanceof PrecExtension)inner(ext.inner,ext.prec);else if(ext instanceof StateField)result[prec$1].push(ext),ext.provides&&inner(ext.provides,prec$1);else if(ext instanceof FacetProvider)result[prec$1].push(ext),ext.facet.extensions&&inner(ext.facet.extensions,Prec_.default);else{let content$3=ext.extension;if(!content$3)throw Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);inner(content$3,prec$1)}}return inner(extension$1,Prec_.default),result.reduce((a$1,b$2)=>a$1.concat(b$2))}function ensureAddr(state$1,addr){if(addr&1)return 2;let idx=addr>>1,status=state$1.status[idx];if(status==4)throw Error(`Cyclic dependency between fields and/or facets`);if(status&2)return status;state$1.status[idx]=4;let changed=state$1.computeSlot(state$1,state$1.config.dynamicSlots[idx]);return state$1.status[idx]=2|changed}function getAddr(state$1,addr){return addr&1?state$1.config.staticValues[addr>>1]:state$1.values[addr>>1]}var languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:values=>values.some(v$1=>v$1),static:!0}),lineSeparator=Facet.define({combine:values=>values.length?values[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly=Facet.define({combine:values=>values.length?values[0]:!1}),Annotation=class{constructor(type,value){this.type=type,this.value=value}static define(){return new AnnotationType}},AnnotationType=class{of(value){return new Annotation(this,value)}},StateEffectType=class{constructor(map){this.map=map}of(value){return new StateEffect(this,value)}},StateEffect=class StateEffect{constructor(type,value){this.type=type,this.value=value}map(mapping){let mapped=this.type.map(this.value,mapping);return mapped===void 0?void 0:mapped==this.value?this:new StateEffect(this.type,mapped)}is(type){return this.type==type}static define(spec={}){return new StateEffectType(spec.map||(v$1=>v$1))}static mapEffects(effects,mapping){if(!effects.length)return effects;let result=[];for(let effect of effects){let mapped=effect.map(mapping);mapped&&result.push(mapped)}return result}};StateEffect.reconfigure=StateEffect.define(),StateEffect.appendConfig=StateEffect.define();var Transaction=class Transaction{constructor(startState,changes,selection,effects,annotations,scrollIntoView$2){this.startState=startState,this.changes=changes,this.selection=selection,this.effects=effects,this.annotations=annotations,this.scrollIntoView=scrollIntoView$2,this._doc=null,this._state=null,selection&&checkSelection(selection,changes.newLength),annotations.some(a$1=>a$1.type==Transaction.time)||(this.annotations=annotations.concat(Transaction.time.of(Date.now())))}static create(startState,changes,selection,effects,annotations,scrollIntoView$2){return new Transaction(startState,changes,selection,effects,annotations,scrollIntoView$2)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(type){for(let ann of this.annotations)if(ann.type==type)return ann.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(event){let e=this.annotation(Transaction.userEvent);return!!(e&&(e==event||e.length>event.length&&e.slice(0,event.length)==event&&e[event.length]==`.`))}};Transaction.time=Annotation.define(),Transaction.userEvent=Annotation.define(),Transaction.addToHistory=Annotation.define(),Transaction.remote=Annotation.define();function joinRanges(a$1,b$2){let result=[];for(let iA=0,iB=0;;){let from,to;if(iA<a$1.length&&(iB==b$2.length||b$2[iB]>=a$1[iA]))from=a$1[iA++],to=a$1[iA++];else if(iB<b$2.length)from=b$2[iB++],to=b$2[iB++];else return result;!result.length||result[result.length-1]<from?result.push(from,to):result[result.length-1]<to&&(result[result.length-1]=to)}}function mergeTransaction(a$1,b$2,sequential){var _a$1;let mapForA,mapForB,changes;return sequential?(mapForA=b$2.changes,mapForB=ChangeSet.empty(b$2.changes.length),changes=a$1.changes.compose(b$2.changes)):(mapForA=b$2.changes.map(a$1.changes),mapForB=a$1.changes.mapDesc(b$2.changes,!0),changes=a$1.changes.compose(mapForA)),{changes,selection:b$2.selection?b$2.selection.map(mapForB):a$1.selection?.map(mapForA),effects:StateEffect.mapEffects(a$1.effects,mapForA).concat(StateEffect.mapEffects(b$2.effects,mapForB)),annotations:a$1.annotations.length?a$1.annotations.concat(b$2.annotations):b$2.annotations,scrollIntoView:a$1.scrollIntoView||b$2.scrollIntoView}}function resolveTransactionInner(state$1,spec,docSize){let sel=spec.selection,annotations=asArray$1(spec.annotations);return spec.userEvent&&(annotations=annotations.concat(Transaction.userEvent.of(spec.userEvent))),{changes:spec.changes instanceof ChangeSet?spec.changes:ChangeSet.of(spec.changes||[],docSize,state$1.facet(lineSeparator)),selection:sel&&(sel instanceof EditorSelection?sel:EditorSelection.single(sel.anchor,sel.head)),effects:asArray$1(spec.effects),annotations,scrollIntoView:!!spec.scrollIntoView}}function resolveTransaction(state$1,specs,filter){let s$1=resolveTransactionInner(state$1,specs.length?specs[0]:{},state$1.doc.length);specs.length&&specs[0].filter===!1&&(filter=!1);for(let i$3=1;i$3<specs.length;i$3++){specs[i$3].filter===!1&&(filter=!1);let seq=!!specs[i$3].sequential;s$1=mergeTransaction(s$1,resolveTransactionInner(state$1,specs[i$3],seq?s$1.changes.newLength:state$1.doc.length),seq)}let tr$1=Transaction.create(state$1,s$1.changes,s$1.selection,s$1.effects,s$1.annotations,s$1.scrollIntoView);return extendTransaction(filter?filterTransaction(tr$1):tr$1)}function filterTransaction(tr$1){let state$1=tr$1.startState,result=!0;for(let filter of state$1.facet(changeFilter)){let value=filter(tr$1);if(value===!1){result=!1;break}Array.isArray(value)&&(result=result===!0?value:joinRanges(result,value))}if(result!==!0){let changes,back;if(result===!1)back=tr$1.changes.invertedDesc,changes=ChangeSet.empty(state$1.doc.length);else{let filtered=tr$1.changes.filter(result);changes=filtered.changes,back=filtered.filtered.mapDesc(filtered.changes).invertedDesc}tr$1=Transaction.create(state$1,changes,tr$1.selection&&tr$1.selection.map(back),StateEffect.mapEffects(tr$1.effects,back),tr$1.annotations,tr$1.scrollIntoView)}let filters=state$1.facet(transactionFilter);for(let i$3=filters.length-1;i$3>=0;i$3--){let filtered=filters[i$3](tr$1);tr$1=filtered instanceof Transaction?filtered:Array.isArray(filtered)&&filtered.length==1&&filtered[0]instanceof Transaction?filtered[0]:resolveTransaction(state$1,asArray$1(filtered),!1)}return tr$1}function extendTransaction(tr$1){let state$1=tr$1.startState,extenders=state$1.facet(transactionExtender),spec=tr$1;for(let i$3=extenders.length-1;i$3>=0;i$3--){let extension$1=extenders[i$3](tr$1);extension$1&&Object.keys(extension$1).length&&(spec=mergeTransaction(spec,resolveTransactionInner(state$1,extension$1,tr$1.changes.newLength),!0))}return spec==tr$1?tr$1:Transaction.create(state$1,tr$1.changes,tr$1.selection,spec.effects,spec.annotations,spec.scrollIntoView)}var none$2=[];function asArray$1(value){return value==null?none$2:Array.isArray(value)?value:[value]}var CharCategory=(function(CharCategory$1){return CharCategory$1[CharCategory$1.Word=0]=`Word`,CharCategory$1[CharCategory$1.Space=1]=`Space`,CharCategory$1[CharCategory$1.Other=2]=`Other`,CharCategory$1})(CharCategory||={}),nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,wordChar;try{wordChar=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function hasWordChar(str){if(wordChar)return wordChar.test(str);for(let i$3=0;i$3<str.length;i$3++){let ch=str[i$3];if(/\w/.test(ch)||ch>`€`&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch)))return!0}return!1}function makeCategorizer(wordChars){return char=>{if(!/\S/.test(char))return CharCategory.Space;if(hasWordChar(char))return CharCategory.Word;for(let i$3=0;i$3<wordChars.length;i$3++)if(char.indexOf(wordChars[i$3])>-1)return CharCategory.Word;return CharCategory.Other}}var EditorState=class EditorState{constructor(config$1,doc$1,selection,values,computeSlot,tr$1){this.config=config$1,this.doc=doc$1,this.selection=selection,this.values=values,this.status=config$1.statusTemplate.slice(),this.computeSlot=computeSlot,tr$1&&(tr$1._state=this);for(let i$3=0;i$3<this.config.dynamicSlots.length;i$3++)ensureAddr(this,i$3<<1);this.computeSlot=null}field(field,require$1=!0){let addr=this.config.address[field.id];if(addr==null){if(require$1)throw RangeError(`Field is not present in this state`);return}return ensureAddr(this,addr),getAddr(this,addr)}update(...specs){return resolveTransaction(this,specs,!0)}applyTransaction(tr$1){let conf=this.config,{base:base$1,compartments}=conf;for(let effect of tr$1.effects)effect.is(Compartment.reconfigure)?(conf&&=(compartments=new Map,conf.compartments.forEach((val,key$1)=>compartments.set(key$1,val)),null),compartments.set(effect.value.compartment,effect.value.extension)):effect.is(StateEffect.reconfigure)?(conf=null,base$1=effect.value):effect.is(StateEffect.appendConfig)&&(conf=null,base$1=asArray$1(base$1).concat(effect.value));let startValues;conf?startValues=tr$1.startState.values.slice():(conf=Configuration.resolve(base$1,compartments,this),startValues=new EditorState(conf,this.doc,this.selection,conf.dynamicSlots.map(()=>null),(state$1,slot)=>slot.reconfigure(state$1,this),null).values);let selection=tr$1.startState.facet(allowMultipleSelections)?tr$1.newSelection:tr$1.newSelection.asSingle();new EditorState(conf,tr$1.newDoc,selection,startValues,(state$1,slot)=>slot.update(state$1,tr$1),tr$1)}replaceSelection(text$5){return typeof text$5==`string`&&(text$5=this.toText(text$5)),this.changeByRange(range$1=>({changes:{from:range$1.from,to:range$1.to,insert:text$5},range:EditorSelection.cursor(range$1.from+text$5.length)}))}changeByRange(f$2){let sel=this.selection,result1=f$2(sel.ranges[0]),changes=this.changes(result1.changes),ranges=[result1.range],effects=asArray$1(result1.effects);for(let i$3=1;i$3<sel.ranges.length;i$3++){let result=f$2(sel.ranges[i$3]),newChanges=this.changes(result.changes),newMapped=newChanges.map(changes);for(let j$1=0;j$1<i$3;j$1++)ranges[j$1]=ranges[j$1].map(newMapped);let mapBy=changes.mapDesc(newChanges,!0);ranges.push(result.range.map(mapBy)),changes=changes.compose(newMapped),effects=StateEffect.mapEffects(effects,newMapped).concat(StateEffect.mapEffects(asArray$1(result.effects),mapBy))}return{changes,selection:EditorSelection.create(ranges,sel.mainIndex),effects}}changes(spec=[]){return spec instanceof ChangeSet?spec:ChangeSet.of(spec,this.doc.length,this.facet(EditorState.lineSeparator))}toText(string$3){return Text.of(string$3.split(this.facet(EditorState.lineSeparator)||DefaultSplit))}sliceDoc(from=0,to=this.doc.length){return this.doc.sliceString(from,to,this.lineBreak)}facet(facet){let addr=this.config.address[facet.id];return addr==null?facet.default:(ensureAddr(this,addr),getAddr(this,addr))}toJSON(fields){let result={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(fields)for(let prop in fields){let value=fields[prop];value instanceof StateField&&this.config.address[value.id]!=null&&(result[prop]=value.spec.toJSON(this.field(fields[prop]),this))}return result}static fromJSON(json$1,config$1={},fields){if(!json$1||typeof json$1.doc!=`string`)throw RangeError(`Invalid JSON representation for EditorState`);let fieldInit=[];if(fields){for(let prop in fields)if(Object.prototype.hasOwnProperty.call(json$1,prop)){let field=fields[prop],value=json$1[prop];fieldInit.push(field.init(state$1=>field.spec.fromJSON(value,state$1)))}}return EditorState.create({doc:json$1.doc,selection:EditorSelection.fromJSON(json$1.selection),extensions:config$1.extensions?fieldInit.concat([config$1.extensions]):fieldInit})}static create(config$1={}){let configuration=Configuration.resolve(config$1.extensions||[],new Map),doc$1=config$1.doc instanceof Text?config$1.doc:Text.of((config$1.doc||``).split(configuration.staticFacet(EditorState.lineSeparator)||DefaultSplit)),selection=config$1.selection?config$1.selection instanceof EditorSelection?config$1.selection:EditorSelection.single(config$1.selection.anchor,config$1.selection.head):EditorSelection.single(0);return checkSelection(selection,doc$1.length),configuration.staticFacet(allowMultipleSelections)||(selection=selection.asSingle()),new EditorState(configuration,doc$1,selection,configuration.dynamicSlots.map(()=>null),(state$1,slot)=>slot.create(state$1),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||`
@@ -61,7 +61,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
61
61
  `)),parts.push(`)`)}else createLine+=`()`,parts.push(createLine);if(!stmt.isProcedure){if(stmt.returnsTable&&stmt.returnsTable.length>0){parts.push(`RETURNS TABLE (`);let colLines=stmt.returnsTable.map(p$1=>INDENT+`${p$1.name||``} ${p$1.type}`.trim());parts.push(colLines.join(`,
62
62
  `)),parts.push(`)`)}else if(stmt.returnType){let returnsLine=`RETURNS `;stmt.returnsSetOf&&!stmt.returnType.toUpperCase().startsWith(`SETOF `)&&(returnsLine+=`SETOF `),returnsLine+=stmt.returnType,parts.push(returnsLine)}}if(stmt.language&&parts.push(`LANGUAGE `+stmt.language),stmt.volatility&&parts.push(stmt.volatility.toUpperCase()),stmt.strict===!0?parts.push(`STRICT`):stmt.strict===!1&&parts.push(`CALLED ON NULL INPUT`),stmt.securityDefiner===!0?parts.push(`SECURITY DEFINER`):stmt.securityDefiner===!1&&parts.push(`SECURITY INVOKER`),stmt.leakproof===!0?parts.push(`LEAKPROOF`):stmt.leakproof===!1&&parts.push(`NOT LEAKPROOF`),stmt.parallel&&parts.push(`PARALLEL `+stmt.parallel.toUpperCase()),stmt.cost!==null&&parts.push(`COST `+stmt.cost),stmt.rows!==null&&parts.push(`ROWS `+stmt.rows),stmt.body&&stmt.body.length>0)if(stmt.body.length===1){let bodyText=stmt.body[0],delimiter=chooseDollarDelimiter(bodyText);parts.push(`AS ${delimiter}`),parts.push(bodyText),parts.push(delimiter)}else parts.push(`AS '${escapeSqlString(stmt.body[0])}', '${escapeSqlString(stmt.body[1])}'`);return parts.join(`
63
63
  `)}function formatFunctionParameter(param){let parts=[];return param.mode&&param.mode!==`in`&&parts.push(param.mode.toUpperCase()),param.name&&parts.push(param.name),parts.push(param.type),param.default&&parts.push(`DEFAULT `+param.default),parts.join(` `)}function chooseDollarDelimiter(body$2){for(let delim of[`$$`,`$body$`,`$func$`,`$function$`,`$_$`])if(!body$2.includes(delim))return delim;let i$3=1;for(;body$2.includes(`$d${i$3}$`);)i$3++;return`$d${i$3}$`}function escapeSqlString(s$1){return s$1.replace(/'/g,`''`)}async function getEditorInfo(sql){if(!sql.trim())return{statementRanges:[],foldRegions:[]};try{let parsed=await parseSql(sql),ranges=getStatementBoundaries(sql,parsed);return{statementRanges:ranges,foldRegions:extractFoldRegions(sql,parsed,ranges)}}catch{return{statementRanges:[],foldRegions:[]}}}function getStatementBoundaries(sql,parsed){let rawStmts=parsed.raw.stmts;return rawStmts.map((stmt,i$3)=>{let rawFrom=stmt.stmt_location??0,to=i$3<rawStmts.length-1?rawStmts[i$3+1].stmt_location??sql.length:sql.length,from=rawFrom;for(;from<to&&/\s/.test(sql[from]);)from++;return{from,to}})}function extractFoldRegions(sql,parsed,ranges){let regions=[];for(let i$3=0;i$3<parsed.statements.length;i$3++){let stmt=parsed.statements[i$3],{from:stmtStart,to:stmtEnd}=ranges[i$3];stmt.kind===`select`&&extractSelectFoldRegions(sql,stmt,stmtStart,stmtEnd,regions)}let seen$1=new Set;return regions.filter(r$4=>seen$1.has(r$4.from)?!1:(seen$1.add(r$4.from),sql.slice(r$4.from,r$4.to).includes(`
64
- `)))}function extractSelectFoldRegions(sql,stmt,stmtStart,stmtEnd,regions){let clauses=[];if(stmt.columns.length>0){let selectIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`SELECT`);selectIdx!==-1&&clauses.push({keyword:`SELECT`,location:selectIdx})}if(stmt.from){let fromIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`FROM`);fromIdx!==-1&&clauses.push({keyword:`FROM`,location:fromIdx})}if(stmt.where){let whereIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`WHERE`);whereIdx!==-1&&clauses.push({keyword:`WHERE`,location:whereIdx})}if(stmt.groupBy){let groupIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`GROUP`);groupIdx!==-1&&clauses.push({keyword:`GROUP BY`,location:groupIdx})}if(stmt.having){let havingIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`HAVING`);havingIdx!==-1&&clauses.push({keyword:`HAVING`,location:havingIdx})}if(stmt.orderBy){let orderIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`ORDER`);orderIdx!==-1&&clauses.push({keyword:`ORDER BY`,location:orderIdx})}clauses.sort((a$1,b$2)=>a$1.location-b$2.location);for(let i$3=0;i$3<clauses.length;i$3++){let clause=clauses[i$3],nextClause=clauses[i$3+1],end=nextClause?nextClause.location:findStatementEnd(sql,clause.location,stmtEnd);regions.push({from:clause.location,to:end,keyword:clause.keyword})}stmt.setOp&&(extractSelectFoldRegions(sql,stmt.setOp.left,stmtStart,stmtEnd,regions),extractSelectFoldRegions(sql,stmt.setOp.right,stmtStart,stmtEnd,regions))}function findKeywordAfter(sql,start,end,keyword$1){let searchArea=sql.slice(start,end).toUpperCase(),idx=0;for(;idx<searchArea.length;){let found=searchArea.indexOf(keyword$1,idx);if(found===-1)return-1;let absoluteIdx=start+found,before=absoluteIdx>0?sql[absoluteIdx-1]:` `,after=sql[absoluteIdx+keyword$1.length]||` `;if(/[\s(]/.test(before)&&/[\s(]/.test(after))return absoluteIdx;idx=found+1}return-1}function findStatementEnd(sql,from,maxEnd){let semiIdx=sql.indexOf(`;`,from);return semiIdx!==-1&&semiIdx<maxEnd?semiIdx:maxEnd}var CONTROL_CHAR_REGEX=/[\x00-\x1F\x7F]/g,PG_TYPE_NAMES=new Set(`SERIAL.SERIAL4.SERIAL8.BIGSERIAL.SMALLSERIAL.INT2.INT4.INT8.FLOAT4.FLOAT8.BOOL.TEXT.BYTEA.UUID.JSON.JSONB.XML.MONEY.INET.CIDR.MACADDR.MACADDR8.POINT.LINE.LSEG.BOX.PATH.POLYGON.CIRCLE.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.TSTZRANGE.DATERANGE.INT4MULTIRANGE.INT8MULTIRANGE.NUMMULTIRANGE.TSMULTIRANGE.TSTZMULTIRANGE.DATEMULTIRANGE.TSVECTOR.TSQUERY.OID.REGCLASS.REGTYPE.REGPROC.REGPROCEDURE.REGOPER.REGOPERATOR.REGCONFIG.REGDICTIONARY.REGNAMESPACE.REGROLE.VOID.RECORD.TRIGGER.EVENT_TRIGGER.PG_LSN.PG_SNAPSHOT`.split(`.`));function mapTokenToClass(token$1,sql){switch(token$1.tokenName){case`SQL_COMMENT`:case`C_COMMENT`:return`pg-comment`;case`SCONST`:case`USCONST`:case`XCONST`:case`BCONST`:return`pg-string`;case`ICONST`:case`FCONST`:return`pg-number`;case`PARAM`:return`pg-param`;case`IDENT`:return PG_TYPE_NAMES.has(sql.slice(token$1.start,token$1.end).toUpperCase())?`pg-type`:null}switch(token$1.keywordKind){case 4:case 2:return`pg-keyword`;case 3:return`pg-type`;case 1:return`pg-keyword-unreserved`}return null}function tokensToRanges(tokens,sql){let ranges=[];for(let token$1 of tokens){let tokenClass=mapTokenToClass(token$1,sql);tokenClass&&ranges.push({from:token$1.start,to:token$1.end,class:tokenClass})}return ranges}function tokenize(sql){if(!isModuleLoaded()||!sql.trim())return[];try{return tokensToRanges(scanSync(sql).tokens,sql)}catch(err){if(err instanceof SyntaxError&&err.message.includes(`control character`))try{return tokensToRanges(scanSync(sql.replace(CONTROL_CHAR_REGEX,` `)).tokens,sql)}catch{return[]}return console.warn(`SQL tokenizer error:`,err),[]}}const SQL_KEYWORDS={statements:[`SELECT`,`INSERT INTO`,`UPDATE`,`DELETE FROM`,`WITH`,`CALL`,`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`EXPLAIN`,`ANALYZE`,`BEGIN`,`COMMIT`,`ROLLBACK`,`GRANT`,`REVOKE`],clauses:`FROM.WHERE.JOIN.LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL JOIN.CROSS JOIN.NATURAL JOIN.ON.USING.AND.OR.NOT.ORDER BY.GROUP BY.HAVING.LIMIT.OFFSET.FETCH.UNION.UNION ALL.INTERSECT.EXCEPT.AS.DISTINCT.ALL.INTO.VALUES.SET.RETURNING.WITH.LATERAL.WINDOW.FOR UPDATE.FOR SHARE`.split(`.`),orderByModifiers:[`ASC`,`DESC`,`NULLS FIRST`,`NULLS LAST`],groupByKeywords:[`ROLLUP`,`CUBE`,`GROUPING SETS`],operators:`IN.NOT IN.EXISTS.NOT EXISTS.BETWEEN.NOT BETWEEN.BETWEEN SYMMETRIC.LIKE.NOT LIKE.ILIKE.NOT ILIKE.SIMILAR TO.NOT SIMILAR TO.IS NULL.IS NOT NULL.IS TRUE.IS NOT TRUE.IS FALSE.IS NOT FALSE.IS UNKNOWN.IS NOT UNKNOWN.IS DISTINCT FROM.IS NOT DISTINCT FROM.CASE.WHEN.THEN.ELSE.END.CAST.ANY.SOME.TRUE.FALSE.NULL`.split(`.`)};function getAllKeywords(){return[...SQL_KEYWORDS.statements,...SQL_KEYWORDS.clauses,...SQL_KEYWORDS.orderByModifiers,...SQL_KEYWORDS.groupByKeywords,...SQL_KEYWORDS.operators]}function getOrderByModifiers(){return SQL_KEYWORDS.orderByModifiers}function getGroupByKeywords(){return SQL_KEYWORDS.groupByKeywords}function getExpressionKeywords(){return[...SQL_KEYWORDS.operators,`AND`,`OR`,`NOT`]}function getStatementKeywords(){return SQL_KEYWORDS.statements}const RETRIGGER_KEYWORDS=new Set(`SELECT.INSERT INTO.UPDATE.DELETE FROM.CALL.CREATE.CREATE TABLE.CREATE TEMP TABLE.CREATE TEMPORARY TABLE.CREATE UNLOGGED TABLE.CREATE OR REPLACE.CREATE TEMP.CREATE TEMPORARY.CREATE UNLOGGED.CREATE INDEX.CREATE UNIQUE INDEX.FROM.JOIN.LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL JOIN.CROSS JOIN.NATURAL JOIN.LATERAL.INTO.WHERE.AND.OR.ON.SET.ORDER BY.GROUP BY.HAVING.RETURNING.USING.ASC.DESC.WHEN.THEN.ELSE.PRIMARY KEY.FOREIGN KEY.REFERENCES.DEFAULT.CHECK.UNIQUE.NOT NULL.INHERITS.PARTITION BY.PARTITION BY RANGE.PARTITION BY LIST.PARTITION BY HASH`.split(`.`));var defaultParser$1={scanSync,isLoaded:isModuleLoaded};function mapTokenType(token$1,text$5){return token$1.tokenName===`SQL_COMMENT`||token$1.tokenName===`C_COMMENT`?`comment`:token$1.tokenName===`SCONST`||token$1.tokenName===`USCONST`||token$1.tokenName===`XCONST`||token$1.tokenName===`BCONST`||token$1.tokenName===`ICONST`||token$1.tokenName===`FCONST`?`literal`:token$1.tokenName===`Op`||text$5.length<=2&&[`=`,`<`,`>`,`!`,`+`,`-`,`*`,`/`,`%`,`^`,`|`,`&`,`~`,`@`,`#`].some(op=>text$5.includes(op))?`operator`:token$1.keywordKind>0?`keyword`:token$1.tokenName===`IDENT`?`identifier`:[`(`,`)`,`,`,`.`,`;`,`[`,`]`,`{`,`}`,`:`].includes(text$5)?`punctuation`:/^\s+$/.test(text$5)?`whitespace`:`identifier`}function tokenize$2(sql,cursorPosition,options$1){let parser$1=options$1?.parser??defaultParser$1;if(!parser$1.isLoaded()||!sql.trim())return{tokens:[],cursorTokenIndex:-1,cursorPositionInToken:0,rawCursorPosition:cursorPosition};try{let result=parser$1.scanSync(sql),tokens=[];for(let scanToken of result.tokens){let text$5=sql.slice(scanToken.start,scanToken.end);tokens.push({type:mapTokenType(scanToken,text$5),value:text$5,start:scanToken.start,end:scanToken.end,keywordKind:scanToken.keywordKind>0?scanToken.keywordKind:void 0})}let{cursorTokenIndex,cursorPositionInToken}=findCursorPosition(tokens,cursorPosition);return{tokens,cursorTokenIndex,cursorPositionInToken,rawCursorPosition:cursorPosition}}catch{return{tokens:[],cursorTokenIndex:-1,cursorPositionInToken:0,rawCursorPosition:cursorPosition}}}function findCursorPosition(tokens,cursorPosition){if(tokens.length===0)return{cursorTokenIndex:-1,cursorPositionInToken:0};for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(cursorPosition>=token$1.start&&cursorPosition<token$1.end)return{cursorTokenIndex:i$3,cursorPositionInToken:cursorPosition-token$1.start};if(cursorPosition===token$1.end)return i$3+1<tokens.length&&tokens[i$3+1].start===cursorPosition?{cursorTokenIndex:i$3+1,cursorPositionInToken:0}:{cursorTokenIndex:i$3,cursorPositionInToken:token$1.value.length};if(i$3+1<tokens.length&&cursorPosition<tokens[i$3+1].start)return{cursorTokenIndex:i$3,cursorPositionInToken:token$1.value.length}}return{cursorTokenIndex:tokens.length-1,cursorPositionInToken:tokens[tokens.length-1].value.length}}function getTokensUpToCursor(tokenized,includeCursorToken=!0){if(tokenized.cursorTokenIndex<0)return[];let endIndex=includeCursorToken?tokenized.cursorTokenIndex+1:tokenized.cursorTokenIndex;return tokenized.tokens.slice(0,endIndex)}function getPartialToken(tokenized){if(tokenized.cursorTokenIndex<0)return null;let token$1=tokenized.tokens[tokenized.cursorTokenIndex];return token$1?tokenized.cursorPositionInToken===token$1.value.length?tokenized.rawCursorPosition>token$1.end?null:token$1.type===`identifier`?token$1.value:null:tokenized.cursorPositionInToken>0?token$1.value.slice(0,tokenized.cursorPositionInToken):null:null}function isInsideStringOrComment(tokenized,cursorPosition,sql){if(tokenized.tokens.length===0&&sql&&sql.trim()){let sqlUpToCursor=sql.slice(0,cursorPosition),singleQuotes=(sqlUpToCursor.match(/'/g)||[]).length,doubleQuotes=(sqlUpToCursor.match(/"/g)||[]).length;if(singleQuotes%2==1||doubleQuotes%2==1||sqlUpToCursor.lastIndexOf(`/*`)>sqlUpToCursor.lastIndexOf(`*/`))return!0}if(tokenized.cursorTokenIndex<0)return!1;let token$1=tokenized.tokens[tokenized.cursorTokenIndex];return token$1?(token$1.type===`literal`||token$1.type===`comment`)&&cursorPosition<token$1.end||token$1.type===`comment`&&cursorPosition>=token$1.start&&cursorPosition<=token$1.end:!1}function createNode(type,start,end,text$5,children=[],isError=!1){return{type,start,end,text:text$5,children,isError,isMissing:!1,parent:null,namedChildren:children.filter(c=>!c.type.startsWith(`_`)),fieldName:null}}function parseFromTokens(tokenized,sql){let{tokens}=tokenized,errors=[],children=[];if(tokens.length===0)return{root:createNode(`source_file`,0,sql.length,sql,[]),errors:[],hasErrors:!1};let statementStart=0,currentTokens=[];for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(currentTokens.push(token$1),token$1.value===`;`||i$3===tokens.length-1){if(currentTokens.length>0){let statementNode=parseStatement(currentTokens,sql,statementStart);children.push(statementNode),statementNode.isError&&errors.push(statementNode),collectErrors(statementNode,errors)}statementStart=token$1.end,currentTokens=[]}}let root$4=createNode(`source_file`,0,sql.length,sql,children);return setParentReferences(root$4),{root:root$4,errors,hasErrors:errors.length>0}}function parseStatement(tokens,sql,baseOffset){if(tokens.length===0)return createNode(`empty_statement`,baseOffset,baseOffset,``,[],!1);let firstToken=tokens[0],lastToken=tokens[tokens.length-1],statementText=sql.slice(firstToken.start,lastToken.end);switch(firstToken.value.toUpperCase()){case`SELECT`:return parseSelectStatement(tokens,sql,firstToken.start,lastToken.end);case`WITH`:return parseWithStatement(tokens,sql,firstToken.start,lastToken.end);case`INSERT`:return parseInsertStatement(tokens,sql,firstToken.start,lastToken.end);case`UPDATE`:return parseUpdateStatement(tokens,sql,firstToken.start,lastToken.end);case`DELETE`:return parseDeleteStatement(tokens,sql,firstToken.start,lastToken.end);case`CALL`:return parseCallStatement(tokens,sql,firstToken.start,lastToken.end);default:return createNode(`unknown_statement`,firstToken.start,lastToken.end,statementText,[])}}function parseSelectStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`SELECT`,`FROM`,`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`OFFSET`,`FOR`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,clauseText=sql.slice(clauseStart,clauseEnd),nodeType;switch(clauseType){case`SELECT`:nodeType=`select_clause`;break;case`FROM`:nodeType=`from_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`GROUP`:nodeType=`group_by_clause`;break;case`HAVING`:nodeType=`having_clause`;break;case`ORDER`:nodeType=`order_by_clause`;break;case`LIMIT`:nodeType=`limit_clause`;break;case`OFFSET`:nodeType=`offset_clause`;break;case`FOR`:nodeType=`for_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,clauseText,[]))}return createNode(`select_statement`,start,end,sql.slice(start,end),children)}function parseWithStatement(tokens,sql,start,end){let children=[],mainQueryIndex=-1,parenDepth=0;for(let i$3=1;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(token$1.value===`(`&&parenDepth++,token$1.value===`)`&&parenDepth--,parenDepth===0&&[`SELECT`,`INSERT`,`UPDATE`,`DELETE`].includes(token$1.value.toUpperCase())){mainQueryIndex=i$3;break}}if(mainQueryIndex>0){let withTokens=tokens.slice(0,mainQueryIndex);if(withTokens.length>0){let withClause=createNode(`with_clause`,withTokens[0].start,withTokens[withTokens.length-1].end,sql.slice(withTokens[0].start,withTokens[withTokens.length-1].end),[]);children.push(withClause)}let mainQueryTokens=tokens.slice(mainQueryIndex),mainStmt=parseStatement(mainQueryTokens,sql,mainQueryTokens[0].start);children.push(mainStmt)}return createNode(`with_statement`,start,end,sql.slice(start,end),children)}function parseInsertStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`INSERT`,`VALUES`,`SELECT`,`RETURNING`,`ON`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`INSERT`:nodeType=`insert_clause`;break;case`VALUES`:nodeType=`values_clause`;break;case`SELECT`:nodeType=`select_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;case`ON`:nodeType=`on_conflict_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`insert_statement`,start,end,sql.slice(start,end),children)}function parseUpdateStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`UPDATE`,`SET`,`FROM`,`WHERE`,`RETURNING`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`UPDATE`:nodeType=`update_clause`;break;case`SET`:nodeType=`set_clause`;break;case`FROM`:nodeType=`from_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`update_statement`,start,end,sql.slice(start,end),children)}function parseDeleteStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`DELETE`,`FROM`,`USING`,`WHERE`,`RETURNING`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`DELETE`:nodeType=`delete_keyword`;break;case`FROM`:nodeType=`from_clause`;break;case`USING`:nodeType=`using_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`delete_statement`,start,end,sql.slice(start,end),children)}function parseCallStatement(tokens,sql,start,end){let children=[];if(tokens.length>0){let callToken=tokens[0];children.push(createNode(`call_keyword`,callToken.start,callToken.end,callToken.value,[]))}if(tokens.length>1){let restStart=tokens[1].start,restEnd=tokens[tokens.length-1].end;children.push(createNode(`procedure_call`,restStart,restEnd,sql.slice(restStart,restEnd),[]))}return createNode(`call_statement`,start,end,sql.slice(start,end),children)}function splitIntoClauses(tokens,keywords){let clauses=[],currentClause=[],currentKeyword=``,parenDepth=0;for(let token$1 of tokens){token$1.value===`(`&&parenDepth++,token$1.value===`)`&&parenDepth--;let upperValue=token$1.value.toUpperCase();parenDepth===0&&keywords.includes(upperValue)?((currentClause.length>0||currentKeyword)&&clauses.push({keyword:currentKeyword,tokens:currentClause}),currentKeyword=upperValue,currentClause=[token$1]):currentClause.push(token$1)}return(currentClause.length>0||currentKeyword)&&clauses.push({keyword:currentKeyword,tokens:currentClause}),clauses}function setParentReferences(node$1,parent=null){node$1.parent=parent;for(let child of node$1.children)setParentReferences(child,node$1)}function collectErrors(node$1,errors){node$1.isError&&!errors.includes(node$1)&&errors.push(node$1);for(let child of node$1.children)collectErrors(child,errors)}function findClauseAtPosition(tree,position$2){function findInNode(node$1){if(position$2<node$1.start||position$2>node$1.end)return null;for(let child of node$1.children){let found=findInNode(child);if(found)return found}return node$1.type.endsWith(`_clause`)||node$1.type.endsWith(`_statement`)?node$1:null}return findInNode(tree.root)}function findStatementAtPosition(tree,position$2){for(let child of tree.root.children)if(position$2>=child.start&&position$2<=child.end)return child;return tree.root.children[tree.root.children.length-1]||null}function extractCurrentStatement(tokenized,sql,cursorPosition){let{tokens}=tokenized,semicolons=[];for(let token$1 of tokens)token$1.value===`;`&&semicolons.push(token$1.end);let statementStart=0,statementEnd=sql.length;for(let semiEnd of semicolons)if(semiEnd<=cursorPosition)statementStart=semiEnd;else{statementEnd=semiEnd;break}let statementSql=sql.slice(statementStart,statementEnd),statementCursor=cursorPosition-statementStart;return{statementSql,statementCursor:Math.max(0,statementCursor),statementStart}}var TABLE_PRECEDING_KEYWORDS=[`FROM`,`JOIN`,`INTO`,`UPDATE`,`TABLE`],PG_DATA_TYPES=new Set(`SMALLINT.INTEGER.INT.BIGINT.DECIMAL.NUMERIC.REAL.DOUBLE.SERIAL.BIGSERIAL.CHAR.VARCHAR.TEXT.BYTEA.BOOLEAN.BOOL.TIMESTAMP.TIMESTAMPTZ.DATE.TIME.INTERVAL.UUID.JSON.JSONB.XML.MONEY.INET.CIDR.MACADDR.POINT.BOX.CIRCLE.POLYGON.TSVECTOR.TSQUERY.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.DATERANGE`.split(`.`)),JOIN_KEYWORDS=[`JOIN`,`INNER`,`LEFT`,`RIGHT`,`FULL`,`CROSS`,`NATURAL`],STATEMENT_KEYWORDS=[`SELECT`,`INSERT INTO`,`UPDATE`,`DELETE FROM`,`WITH`,`CALL`,`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`EXPLAIN`,`ANALYZE`,`BEGIN`,`COMMIT`,`ROLLBACK`,`GRANT`,`REVOKE`],EXPRESSION_KEYWORDS=[`SELECT`,`WHERE`,`AND`,`OR`,`NOT`,`ON`,`HAVING`,`WHEN`,`THEN`,`ELSE`,`SET`,`CASE`];function detectSection(tokenized,tree,cursorPosition,sql){if(isInsideStringOrComment(tokenized,cursorPosition))return createContext$1(`UNKNOWN`,`UNKNOWN`,{containingNode:null,partialToken:null});let tokensUpToCursor=getTokensUpToCursor(tokenized,!0),partialToken=getPartialToken(tokenized);if(tokensUpToCursor.length===0&&sql.slice(0,cursorPosition).trim().length===0)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!0,partialToken});if(tokensUpToCursor.length===1&&tokensUpToCursor[0].type===`identifier`)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!1,partialToken});if(tokensUpToCursor.length===1&&tokensUpToCursor[0].type===`keyword`){let keywordValue=tokensUpToCursor[0].value.toUpperCase();if(STATEMENT_KEYWORDS.some(stmt=>stmt.toUpperCase().startsWith(keywordValue))&&cursorPosition===tokensUpToCursor[0].end)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!1,partialToken:keywordValue})}let currentToken=tokensUpToCursor[tokensUpToCursor.length-1],isTypingKeywordAsIdentifier=currentToken?.type===`keyword`&&cursorPosition===currentToken.end;if(tokensUpToCursor.length>0&&!partialToken&&!isTypingKeywordAsIdentifier){let lastToken$1=tokensUpToCursor[tokensUpToCursor.length-1],hasWordBreak=cursorPosition>lastToken$1.end,isDotCompletion=lastToken$1.value===`.`,isOpenParenCompletion=lastToken$1.value===`(`;if(!hasWordBreak&&!isDotCompletion&&!isOpenParenCompletion)return createContext$1(`UNKNOWN`,`UNKNOWN`,{containingNode:null,partialToken:null})}if(isTypingKeywordAsIdentifier&&tokensUpToCursor.length>1){let tokensWithoutLast=tokensUpToCursor.slice(0,-1),effectivePartialToken=currentToken.value,prevKeyword=findLastKeyword(tokensWithoutLast),clauseNode$1=findClauseAtPosition(tree,cursorPosition),statementType$1=detectStatementType(findStatementAtPosition(tree,cursorPosition)),section$1=determineSectionFromContext(clauseNode$1,prevKeyword,!1,!1,tokensWithoutLast,sql),contextToken$1=tokensWithoutLast[tokensWithoutLast.length-1],isContextTokenValue$1=contextToken$1?.type===`identifier`||contextToken$1?.type===`literal`,isAfterCompletedExpr=isContextTokenValue$1&&hasComparisonBeforeLastToken(tokensWithoutLast);return createContext$1(section$1,statementType$1,{isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedExpression:isAfterCompletedExpr,isAfterCompletedIdentifier:isContextTokenValue$1&&!isAfterCompletedExpr&&contextToken$1?.type===`identifier`,partialToken:effectivePartialToken,tablePrefix:null,depth:calculateSubqueryDepth(tokensUpToCursor),containingNode:clauseNode$1})}let clauseNode=findClauseAtPosition(tree,cursorPosition),statementType=detectStatementType(findStatementAtPosition(tree,cursorPosition)),lastTokens=tokensUpToCursor.slice(-5),lastToken=lastTokens[lastTokens.length-1],prevToken=lastTokens.length>1?lastTokens[lastTokens.length-2]:null;if(lastToken?.value===`.`){let identToken=prevToken;if(identToken?.type===`identifier`)return createContext$1(detectSectionFromClause(clauseNode),statementType,{tablePrefix:identToken.value,containingNode:clauseNode,partialToken:null})}if(lastToken?.value===`;`)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!0,containingNode:clauseNode,partialToken});if(statementType===`INSERT`&&isAfterInsertColumns(tokensUpToCursor))return createContext$1(`INSERT_VALUES`,statementType,{isAtKeywordBoundary:!0,containingNode:clauseNode,partialToken});let lastKeyword=findLastKeyword(tokensUpToCursor),isAfterKeyword=lastToken?.type===`keyword`,isAfterComma=lastToken?.value===`,`,isTypingOperator=lastToken?.type===`operator`&&[`<`,`>`,`!`].includes(lastToken.value)&&cursorPosition===lastToken.end,partialOperator=isTypingOperator?lastToken.value:null,isAfterOperator=!isTypingOperator&&(lastToken?.type===`operator`||[`=`,`<`,`>`,`!`,`+`,`-`].some(op=>lastToken?.value?.includes(op))),section=determineSectionFromContext(clauseNode,lastKeyword,isAfterKeyword,isAfterComma,tokensUpToCursor,sql,partialToken),depth=calculateSubqueryDepth(tokensUpToCursor),contextToken=partialToken&&tokensUpToCursor.length>=2?tokensUpToCursor[tokensUpToCursor.length-2]:lastToken,contextTokens=partialToken&&tokensUpToCursor.length>=2?tokensUpToCursor.slice(0,-1):tokensUpToCursor,isContextTokenValue=contextToken?.type===`identifier`||contextToken?.type===`literal`,isAfterCompletedValue=partialToken?isContextTokenValue:!isAfterComma&&!isAfterKeyword&&!isAfterOperator&&!isTypingOperator&&(lastToken?.type===`identifier`||lastToken?.type===`literal`),isAfterCompletedExpression=isAfterCompletedValue&&hasComparisonBeforeLastToken(contextTokens),isAfterCompletedIdentifier=isAfterCompletedValue&&!isAfterCompletedExpression&&(partialToken?contextToken?.type===`identifier`:lastToken?.type===`identifier`),isAfterNot=isAfterKeyword&&lastToken?.value?.toUpperCase()===`NOT`,ORDER_BY_MODIFIERS_SET=new Set([`ASC`,`DESC`,`FIRST`,`LAST`]),isAfterOrderByModifier=isAfterKeyword&&lastToken?.value!==void 0&&ORDER_BY_MODIFIERS_SET.has(lastToken.value.toUpperCase());return createContext$1(section,statementType,{isAtKeywordBoundary:isAfterKeyword,isAfterComma,isAfterOperator,isAfterCompletedIdentifier:isAfterCompletedIdentifier&&!isAfterCompletedExpression,isAfterCompletedExpression,isTypingOperator,partialOperator,isAfterNot,isAfterOrderByModifier,partialToken,tablePrefix:null,depth,containingNode:clauseNode})}function hasComparisonBeforeLastToken(tokens){if(tokens.length<3)return!1;let comparisonOps=[`=`,`<>`,`!=`,`<`,`>`,`<=`,`>=`,`LIKE`,`ILIKE`,`IN`,`BETWEEN`];for(let i$3=tokens.length-2;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.type!==`whitespace`){if(token$1.type===`operator`||token$1.type===`keyword`&&comparisonOps.includes(token$1.value.toUpperCase()))return!0;break}}return!1}function createContext$1(section,statementType,overrides$1={}){return{section,statementType,isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedIdentifier:!1,isAfterCompletedExpression:!1,isTypingOperator:!1,partialOperator:null,isAfterNot:!1,isAfterOrderByModifier:!1,partialToken:null,tablePrefix:null,depth:0,parentContext:null,containingNode:null,...overrides$1}}function detectStatementType(node$1){if(!node$1)return`UNKNOWN`;let type=node$1.type.toLowerCase();return type.includes(`select`)?`SELECT`:type.includes(`insert`)?`INSERT`:type.includes(`update`)?`UPDATE`:type.includes(`delete`)?`DELETE`:type.includes(`with`)?`WITH`:type.includes(`call`)?`CALL`:type.includes(`create`)?`CREATE`:`UNKNOWN`}function detectSectionFromClause(node$1){if(!node$1)return`UNKNOWN`;let type=node$1.type.toLowerCase();return type.includes(`select_clause`)?`SELECT_COLUMNS`:type.includes(`from_clause`)?`FROM_TABLE`:type.includes(`where_clause`)?`WHERE_CONDITION`:type.includes(`group_by`)?`GROUP_BY`:type.includes(`having`)?`HAVING`:type.includes(`order_by`)?`ORDER_BY`:type.includes(`limit`)?`LIMIT`:type.includes(`offset`)?`OFFSET`:type.includes(`with_clause`)?`WITH_CTE_NAME`:type.includes(`insert`)?`INSERT_TABLE`:type.includes(`update`)?`UPDATE_TABLE`:type.includes(`set_clause`)?`UPDATE_SET`:type.includes(`delete`)?`DELETE_TABLE`:type.includes(`call`)?`CALL_PROCEDURE`:`UNKNOWN`}function determineSectionFromContext(clauseNode,lastKeyword,_isAfterKeyword,isAfterComma,tokens,_sql,partialToken){let lastKeywordValue=lastKeyword?.value?.toUpperCase(),tokensForCreateTable=partialToken&&tokens.length>0?tokens.slice(0,-1):tokens;if(lastKeywordValue&&JOIN_KEYWORDS.includes(lastKeywordValue))return`JOIN_TABLE`;if(lastKeywordValue===`BY`){let prevKeyword=findKeywordBefore(tokens,lastKeyword);if(prevKeyword?.value?.toUpperCase()===`ORDER`)return`ORDER_BY`;if(prevKeyword?.value?.toUpperCase()===`GROUP`)return`GROUP_BY`}if(lastKeywordValue===`ORDER`)return`ORDER_BY_INCOMPLETE`;if(lastKeywordValue===`GROUP`)return`GROUP_BY_INCOMPLETE`;if(lastKeywordValue===`IS`)return`IS_INCOMPLETE`;if(lastKeywordValue===`NOT`&&findKeywordBefore(tokens,lastKeyword)?.value?.toUpperCase()===`IS`)return`IS_NOT_INCOMPLETE`;if(lastKeywordValue===`NULLS`)return`NULLS_INCOMPLETE`;if(lastKeywordValue&&[`ASC`,`DESC`,`FIRST`,`LAST`].includes(lastKeywordValue))return`ORDER_BY`;if(lastKeywordValue===`ON`&&isInJoinContext(tokens))return`JOIN_CONDITION`;if(lastKeywordValue===`CALL`)return`CALL_PROCEDURE`;if(lastKeywordValue===`RETURNING`)return`RETURNING`;if(lastKeywordValue===`CREATE`)return`CREATE_OBJECT`;if(lastKeywordValue===`TEMP`||lastKeywordValue===`TEMPORARY`||lastKeywordValue===`UNLOGGED`){for(let i$3=tokens.length-1;i$3>=0&&tokens[i$3].value!==`;`;i$3--)if(tokens[i$3].value?.toUpperCase()===`CREATE`)return`CREATE_OBJECT`}let createCtx=getCreateTableContext(tokensForCreateTable);if(createCtx.isInCreateTable){if(createCtx.isAfterColumnList)return`CREATE_TABLE_OPTIONS`;if(createCtx.isInsideColumnList)switch(createCtx.lastColumnElement){case`none`:case`comma`:return`CREATE_TABLE_COLUMNS`;case`name`:return`CREATE_TABLE_COLUMN_TYPE`;case`type`:case`constraint`:return`CREATE_TABLE_COLUMN_CONSTRAINT`}if(!createCtx.isAfterTableName||createCtx.isAfterTableName&&!createCtx.isInsideColumnList&&!createCtx.isAfterColumnList)return`CREATE_TABLE_NAME`}return lastKeywordValue===`USING`&&isInDeleteContext(tokens)?`FROM_TABLE`:lastKeywordValue&&TABLE_PRECEDING_KEYWORDS.includes(lastKeywordValue)?lastKeywordValue===`FROM`?isInDeleteContext(tokens)?`DELETE_TABLE`:`FROM_TABLE`:lastKeywordValue===`INTO`?`INSERT_TABLE`:lastKeywordValue===`UPDATE`?`UPDATE_TABLE`:`FROM_TABLE`:lastKeywordValue&&EXPRESSION_KEYWORDS.includes(lastKeywordValue)?lastKeywordValue===`SELECT`?`SELECT_COLUMNS`:lastKeywordValue===`WHERE`?`WHERE_CONDITION`:lastKeywordValue===`HAVING`?`HAVING`:lastKeywordValue===`SET`?`UPDATE_SET`:`WHERE_CONDITION`:isAfterComma?determineSectionAfterComma(tokens,clauseNode):clauseNode?detectSectionFromClause(clauseNode):lastKeyword?`UNKNOWN`:`STATEMENT_START`}var CLAUSE_KEYWORDS=new Set(`SELECT.INSERT.UPDATE.DELETE.MERGE.CREATE.ALTER.DROP.TRUNCATE.FROM.WHERE.SET.INTO.VALUES.RETURNING.JOIN.LEFT.RIGHT.INNER.OUTER.FULL.CROSS.NATURAL.ON.USING.AND.OR.NOT.GROUP.ORDER.BY.HAVING.LIMIT.OFFSET.FETCH.UNION.INTERSECT.EXCEPT.ALL.DISTINCT.WITH.AS.RECURSIVE.CASE.WHEN.THEN.ELSE.END.CALL.IS.IN.BETWEEN.LIKE.ILIKE.SIMILAR.ASC.DESC.NULLS.FIRST.LAST.FOR.TABLE.ONLY.WINDOW.PARTITION.OVER.LATERAL.ROWS.RANGE.GROUPS.PRECEDING.FOLLOWING.CURRENT.ROW.UNBOUNDED.INHERITS.TABLESPACE.TEMP.TEMPORARY.UNLOGGED.IF.PRIMARY.KEY.UNIQUE.CHECK.REFERENCES.FOREIGN.DEFAULT.CONSTRAINT.NULL.COLLATE.GENERATED.IDENTITY.DEFERRABLE.INITIALLY.DEFERRED.IMMEDIATE`.split(`.`));function findLastKeyword(tokens){for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`;`)return null;if(token$1.type===`keyword`&&CLAUSE_KEYWORDS.has(token$1.value.toUpperCase()))return token$1}return null}function findKeywordBefore(tokens,targetToken){if(!targetToken)return null;let foundTarget=!1;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.start===targetToken.start&&token$1.end===targetToken.end){foundTarget=!0;continue}if(foundTarget&&token$1.type===`keyword`)return token$1}return null}function isInJoinContext(tokens){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(JOIN_KEYWORDS.includes(upper))return!0;if(upper===`FROM`||upper===`WHERE`||upper===`SELECT`)return!1}}return!1}function isInDeleteContext(tokens){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,token$1.value===`;`)return!1;if(parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`DELETE`)return!0;if(upper===`SELECT`||upper===`INSERT`||upper===`UPDATE`)return!1}}return!1}function getCreateTableContext(tokens){let result={isInCreateTable:!1,isAfterTableName:!1,isInsideColumnList:!1,isAfterColumnList:!1,lastColumnElement:`none`},parenDepth=0,foundCreateTable=!1,tableNameSeen=!1,columnListStart=-1;for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3],upper=token$1.value?.toUpperCase();if(token$1.value===`;`){foundCreateTable=!1,tableNameSeen=!1,parenDepth=0,columnListStart=-1;continue}if(upper===`CREATE`)for(let j$1=i$3+1;j$1<tokens.length;j$1++){let nextUpper=tokens[j$1].value?.toUpperCase();if(nextUpper===`TABLE`){foundCreateTable=!0;break}if(![`TEMP`,`TEMPORARY`,`UNLOGGED`,`IF`,`NOT`,`EXISTS`].includes(nextUpper||``))break}foundCreateTable&&!tableNameSeen&&token$1.type===`identifier`&&(tableNameSeen=!0),token$1.value===`(`&&(foundCreateTable&&tableNameSeen&&columnListStart===-1&&(columnListStart=i$3),parenDepth++),token$1.value===`)`&&parenDepth--}if(result.isInCreateTable=foundCreateTable,result.isAfterTableName=tableNameSeen,result.isInsideColumnList=columnListStart!==-1&&parenDepth>0,result.isAfterColumnList=columnListStart!==-1&&parenDepth===0,result.isInsideColumnList){let depth=0,last=`none`,CONSTRAINT_KW=new Set([`NOT`,`NULL`,`DEFAULT`,`PRIMARY`,`KEY`,`UNIQUE`,`REFERENCES`,`CHECK`,`CONSTRAINT`,`COLLATE`,`GENERATED`,`DEFERRABLE`,`INITIALLY`]);for(let i$3=columnListStart+1;i$3<tokens.length;i$3++){let t$1=tokens[i$3],u$1=t$1.value?.toUpperCase();if(t$1.value===`(`&&depth++,t$1.value===`)`){if(depth===0)break;depth--}depth>0||(t$1.value===`,`?last=`comma`:t$1.type===`identifier`&&(last===`comma`||last===`none`)?last=`name`:t$1.type===`keyword`&&PG_DATA_TYPES.has(u$1||``)||t$1.type===`identifier`&&last===`name`?last=`type`:t$1.type===`keyword`&&last===`type`&&CONSTRAINT_KW.has(u$1||``)&&(last=`constraint`))}result.lastColumnElement=last}return result}function determineSectionAfterComma(tokens,clauseNode){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`SELECT`)return`SELECT_COLUMNS`;if(upper===`FROM`)return`FROM_TABLE`;if(upper===`BY`){let prevKeyword=findKeywordBefore(tokens.slice(0,i$3+1),token$1);if(prevKeyword?.value?.toUpperCase()===`ORDER`)return`ORDER_BY`;if(prevKeyword?.value?.toUpperCase()===`GROUP`)return`GROUP_BY`}if(upper===`WHERE`||upper===`AND`||upper===`OR`)return`WHERE_CONDITION`;if(upper===`SET`)return`UPDATE_SET`}}return clauseNode?detectSectionFromClause(clauseNode):`SELECT_COLUMNS`}function isAfterInsertColumns(tokens){let closeIdx=tokens.length-1;if(tokens[closeIdx]?.value!==`)`&&(closeIdx--,tokens[closeIdx]?.value!==`)`))return!1;let depth=0;for(let i$3=closeIdx;i$3>=0;i$3--){let val=tokens[i$3].value;if(val===`)`&&depth++,val===`(`&&depth--,depth===0&&tokens[i$3].type===`keyword`){let upper=val.toUpperCase();if(upper===`VALUES`)return!1;if(upper===`INTO`)return!0}}return!1}function calculateSubqueryDepth(tokens){let depth=0,maxDepth=0;for(let token$1 of tokens)token$1.value===`(`&&(depth++,maxDepth=Math.max(maxDepth,depth)),token$1.value===`)`&&depth--;return depth}var defaultParser={parseSync,isLoaded:isModuleLoaded};function analyzeScope(_context,tokenized,_tree,sql,schema,options$1){let parser$1=options$1?.parser??defaultParser,scopeInfo={availableTables:[],availableColumns:[],ctes:[],resolvedColumns:new Map,isPgQueryValid:!1};scopeInfo.availableTables=extractTablesFromTokens(tokenized,sql);let ctesFromTokens=extractCTEsFromTokens(tokenized,sql);scopeInfo.ctes=ctesFromTokens;for(let cte of ctesFromTokens)scopeInfo.availableTables.push({name:cte.name,alias:null,schema:null,source:`cte`});let pgQueryResult=tryPgQueryParse(sql,parser$1);return pgQueryResult.valid&&(scopeInfo.isPgQueryValid=!0,mergePgQueryResults(scopeInfo,pgQueryResult,schema)),resolveColumnsForTables(scopeInfo,schema),scopeInfo}function extractTablesFromTokens(tokenized,_sql){let tables=[],tokens=tokenized.tokens;for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3],prevToken=i$3>0?tokens[i$3-1]:null,nextToken=i$3<tokens.length-1?tokens[i$3+1]:null,nextNextToken=i$3<tokens.length-2?tokens[i$3+2]:null,prevUpper=prevToken?.value?.toUpperCase();if((prevUpper===`FROM`||prevUpper===`JOIN`||prevUpper===`UPDATE`)&&token$1.type===`identifier`)if(nextToken?.value===`.`&&nextNextToken?.type===`identifier`){let schemaName=token$1.value,tableName=nextNextToken.value,aliasInfo=extractAlias(tokens,i$3+2);tables.push({name:tableName,alias:aliasInfo.alias,schema:schemaName,source:prevUpper===`JOIN`?`join`:`from`}),i$3=aliasInfo.endIndex-1}else{let aliasInfo=extractAlias(tokens,i$3);tables.push({name:token$1.value,alias:aliasInfo.alias,schema:null,source:prevUpper===`JOIN`?`join`:`from`}),i$3=aliasInfo.endIndex-1}if(prevUpper===`INTO`&&token$1.type===`identifier`){let aliasInfo=extractAlias(tokens,i$3);tables.push({name:token$1.value,alias:aliasInfo.alias,schema:null,source:`from`}),i$3=aliasInfo.endIndex-1}if(token$1.value===`,`&&isInFromClause(tokens,i$3)&&nextToken?.type===`identifier`){let aliasInfo=extractAlias(tokens,i$3+1);tables.push({name:nextToken.value,alias:aliasInfo.alias,schema:null,source:`from`}),i$3=aliasInfo.endIndex-1}}return tables}function extractAlias(tokens,tableIndex){let nextIndex=tableIndex+1,nextToken=tokens[nextIndex],nextNextToken=tokens[nextIndex+1];if(!nextToken)return{alias:null,endIndex:tableIndex+1};if(nextToken.value?.toUpperCase()===`AS`&&nextNextToken?.type===`identifier`)return{alias:nextNextToken.value,endIndex:nextIndex+2};if(nextToken.type===`identifier`){let upper=nextToken.value.toUpperCase();if(![`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`OFFSET`,`ON`,`JOIN`,`LEFT`,`RIGHT`,`INNER`,`OUTER`,`FULL`,`CROSS`,`NATURAL`,`SET`,`VALUES`].includes(upper))return{alias:nextToken.value,endIndex:nextIndex+1}}return{alias:null,endIndex:tableIndex+1}}function isInFromClause(tokens,index$4){let parenDepth=0;for(let i$3=index$4-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`FROM`)return!0;if([`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`SELECT`].includes(upper))return!1}}return!1}function extractCTEsFromTokens(tokenized,_sql){let ctes=[],tokens=tokenized.tokens;if(tokens.length===0||tokens[0].value.toUpperCase()!==`WITH`)return ctes;let i$3=1;for(tokens[i$3]?.value?.toUpperCase()===`RECURSIVE`&&i$3++;i$3<tokens.length;){let token$1=tokens[i$3];if(token$1.type===`identifier`){let cteName=token$1.value,columns=[];if(i$3++,tokens[i$3]?.value===`(`){for(i$3++;i$3<tokens.length&&tokens[i$3].value!==`)`;)tokens[i$3].type===`identifier`&&columns.push(tokens[i$3].value),i$3++;i$3++}for(;i$3<tokens.length&&tokens[i$3].value?.toUpperCase()!==`AS`;)i$3++;if(i$3++,tokens[i$3]?.value===`(`){let parenDepth=1;for(i$3++;i$3<tokens.length&&parenDepth>0;)tokens[i$3].value===`(`&&parenDepth++,tokens[i$3].value===`)`&&parenDepth--,i$3++}if(ctes.push({name:cteName,columns}),tokens[i$3]?.value===`,`){i$3++;continue}break}i$3++}return ctes}function tryPgQueryParse(sql,parser$1){if(!parser$1.isLoaded())return{valid:!1,tables:[],columns:[]};try{let result=parser$1.parseSync(sql),tables=[],columns=[];return extractFromPgQueryAST(result,tables,columns),{valid:!0,tables,columns}}catch{return{valid:!1,tables:[],columns:[]}}}function extractFromPgQueryAST(node$1,tables,columns){if(!node$1||typeof node$1!=`object`)return;let obj=node$1;if(`RangeVar`in obj){let rv=obj.RangeVar,alias=rv.alias;tables.push({schema:rv.schemaname||null,name:rv.relname,alias:alias?.aliasname||null})}if(`ColumnRef`in obj){let fields=obj.ColumnRef.fields;if(fields){let parts=fields.map(f$2=>{let field=f$2;return`String`in field?field.String.sval:`A_Star`in field?`*`:``});parts.length===1?columns.push({table:null,column:parts[0]}):parts.length===2&&columns.push({table:parts[0],column:parts[1]})}}for(let key$1 of Object.keys(obj)){let value=obj[key$1];if(Array.isArray(value))for(let item of value)extractFromPgQueryAST(item,tables,columns);else typeof value==`object`&&value&&extractFromPgQueryAST(value,tables,columns)}}function mergePgQueryResults(scopeInfo,pgQueryResult,_schema){for(let pgTable of pgQueryResult.tables)scopeInfo.availableTables.some(t$1=>t$1.name.toLowerCase()===pgTable.name.toLowerCase()&&(t$1.alias?.toLowerCase()===pgTable.alias?.toLowerCase()||!t$1.alias&&!pgTable.alias))||scopeInfo.availableTables.push({name:pgTable.name,alias:pgTable.alias,schema:pgTable.schema,source:`from`})}function resolveColumnsForTables(scopeInfo,schema){for(let tableRef of scopeInfo.availableTables){let schemaTable=findTableInSchema(tableRef,schema);if(schemaTable){let columns=schemaTable.columns.map(col=>({name:col.name,table:tableRef.alias||tableRef.name,type:col.type,nullable:col.nullable}));scopeInfo.resolvedColumns.set(tableRef.alias||tableRef.name,columns),scopeInfo.availableColumns.push(...columns)}let cte=scopeInfo.ctes.find(c=>c.name.toLowerCase()===tableRef.name.toLowerCase());if(cte&&cte.columns.length>0){let columns=cte.columns.map(colName=>({name:colName,table:tableRef.alias||tableRef.name,type:null,nullable:!0}));scopeInfo.resolvedColumns.set(tableRef.alias||tableRef.name,columns),scopeInfo.availableColumns.push(...columns)}}}function findTableInSchema(nameOrRef,schema){let tableName,schemaName;if(typeof nameOrRef==`string`)if(nameOrRef.includes(`.`)){let[schemaPart,tablePart]=nameOrRef.split(`.`);schemaName=schemaPart,tableName=tablePart}else schemaName=null,tableName=nameOrRef;else schemaName=nameOrRef.schema,tableName=nameOrRef.name;let nameLower=tableName.toLowerCase(),schemaLower=schemaName?.toLowerCase();return schemaLower?schema.tables.find(t$1=>t$1.schema.toLowerCase()===schemaLower&&t$1.name.toLowerCase()===nameLower):schema.tables.find(t$1=>t$1.schema===schema.defaultSchema&&t$1.name.toLowerCase()===nameLower)||schema.tables.find(t$1=>t$1.name.toLowerCase()===nameLower)}function resolveAlias(scopeInfo,alias){let aliasLower=alias.toLowerCase();for(let tableRef of scopeInfo.availableTables)if(tableRef.alias?.toLowerCase()===aliasLower)return tableRef.name;return null}function getColumnsForTable(scopeInfo,tableOrAlias){let key$1=tableOrAlias.toLowerCase();for(let[name$2,columns]of scopeInfo.resolvedColumns)if(name$2.toLowerCase()===key$1)return columns;let tableName=resolveAlias(scopeInfo,tableOrAlias);if(tableName){for(let[name$2,columns]of scopeInfo.resolvedColumns)if(name$2.toLowerCase()===tableName.toLowerCase())return columns}return[]}const PG_SYSTEM_FUNCTIONS=[{name:`abbrev`,signatures:[{args:`cidr`,returnType:`text`},{args:`inet`,returnType:`text`}],description:`abbreviated display of inet value`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`abs`,signatures:[{args:`real`,returnType:`real`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`smallint`},{args:`double precision`,returnType:`double precision`}],description:`absolute value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`age`,signatures:[{args:`xid`,returnType:`integer`},{args:`timestamp with time zone`,returnType:`interval`},{args:`timestamp without time zone`,returnType:`interval`},{args:`timestamp with time zone, timestamp with time zone`,returnType:`interval`},{args:`timestamp without time zone, timestamp without time zone`,returnType:`interval`}],description:`age of a transaction ID, in transactions before current transaction`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`any_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`arbitrary value from among input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`area`,signatures:[{args:`box`,returnType:`double precision`},{args:`path`,returnType:`double precision`},{args:`circle`,returnType:`double precision`}],description:`box area`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_agg`,signatures:[{args:`anyarray`,returnType:`anyarray`},{args:`anynonarray`,returnType:`anyarray`}],description:`concatenate aggregate input into an array`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`array_append`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`anycompatiblearray`}],description:`append element onto end of array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_cat`,signatures:[{args:`anycompatiblearray, anycompatiblearray`,returnType:`anycompatiblearray`}],description:`implementation of || operator`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_dims`,signatures:[{args:`anyarray`,returnType:`text`}],description:`array dimensions`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_fill`,signatures:[{args:`anyelement, integer[]`,returnType:`anyarray`},{args:`anyelement, integer[], integer[]`,returnType:`anyarray`}],description:`array constructor with value`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_length`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array length`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_lower`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array lower dimension`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_ndims`,signatures:[{args:`anyarray`,returnType:`integer`}],description:`number of array dimensions`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_position`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`integer`},{args:`anycompatiblearray, anycompatible, integer`,returnType:`integer`}],description:`returns an offset of value in array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_positions`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`integer[]`}],description:`returns an array of offsets of some value in array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_prepend`,signatures:[{args:`anycompatible, anycompatiblearray`,returnType:`anycompatiblearray`}],description:`prepend element onto front of array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_remove`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`anycompatiblearray`}],description:`remove any occurrences of an element from an array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_replace`,signatures:[{args:`anycompatiblearray, anycompatible, anycompatible`,returnType:`anycompatiblearray`}],description:`replace any occurrences of an element in an array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_sample`,signatures:[{args:`anyarray, integer`,returnType:`anyarray`}],description:`take samples from array`,category:`array`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`array_shuffle`,signatures:[{args:`anyarray`,returnType:`anyarray`}],description:`shuffle array`,category:`array`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`array_to_json`,signatures:[{args:`anyarray`,returnType:`json`},{args:`anyarray, boolean`,returnType:`json`}],description:`map array to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`array_to_string`,signatures:[{args:`anyarray, text`,returnType:`text`},{args:`anyarray, text, text`,returnType:`text`}],description:`concatenate array elements, using delimiter, into text`,category:`array`,volatility:`s`,kind:`f`,permission:`read`},{name:`array_upper`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array upper dimension`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`ascii`,signatures:[{args:`text`,returnType:`integer`}],description:`convert first char to int4`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`avg`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`the average (arithmetic mean) as numeric of all bigint values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_and`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-and smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_length`,signatures:[{args:`bit`,returnType:`integer`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`}],description:`length in bits`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`bit_or`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-or smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_xor`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-xor smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bool_and`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-and aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bool_or`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-or aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`box`,signatures:[{args:`point`,returnType:`box`},{args:`circle`,returnType:`box`},{args:`polygon`,returnType:`box`},{args:`point, point`,returnType:`box`}],description:`convert points to box`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`broadcast`,signatures:[{args:`inet`,returnType:`inet`}],description:`broadcast address of network`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`btrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from both ends of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`cardinality`,signatures:[{args:`anyarray`,returnType:`integer`}],description:`array cardinality`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`cbrt`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`cube root`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ceil`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer >= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ceiling`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer >= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`center`,signatures:[{args:`box`,returnType:`point`},{args:`circle`,returnType:`point`}],description:`center of`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`char_length`,signatures:[{args:`text`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`character length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`character_length`,signatures:[{args:`text`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`character length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`chr`,signatures:[{args:`integer`,returnType:`text`}],description:`convert int4 to char`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`circle`,signatures:[{args:`box`,returnType:`circle`},{args:`polygon`,returnType:`circle`},{args:`point, double precision`,returnType:`circle`}],description:`convert point and radius to circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`clock_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current clock time`,category:`datetime`,volatility:`v`,kind:`f`,permission:`read`},{name:`coalesce`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return first non-null argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`concat`,signatures:[{args:`VARIADIC "any"`,returnType:`text`}],description:`concatenate values`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`concat_ws`,signatures:[{args:`text, VARIADIC "any"`,returnType:`text`}],description:`concatenate values with separators`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`corr`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`correlation coefficient`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`count`,signatures:[{args:``,returnType:`bigint`},{args:`"any"`,returnType:`bigint`}],description:`number of input rows for which the input expression is not null`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`covar_pop`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`population covariance`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`covar_samp`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sample covariance`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`cume_dist`,signatures:[{args:``,returnType:`double precision`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`double precision`}],description:`fractional row number within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`current_database`,signatures:[{args:``,returnType:`name`}],description:`name of the current database`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_schema`,signatures:[{args:``,returnType:`name`}],description:`current schema name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_schemas`,signatures:[{args:`boolean`,returnType:`name[]`}],description:`current schema search list`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_user`,signatures:[{args:``,returnType:`name`}],description:`current user name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`date_add`,signatures:[{args:`timestamp with time zone, interval`,returnType:`timestamp with time zone`},{args:`timestamp with time zone, interval, text`,returnType:`timestamp with time zone`}],description:`add interval to timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_bin`,signatures:[{args:`interval, timestamp with time zone, timestamp with time zone`,returnType:`timestamp with time zone`},{args:`interval, timestamp without time zone, timestamp without time zone`,returnType:`timestamp without time zone`}],description:`bin timestamp into specified interval`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`,minVersion:14},{name:`date_part`,signatures:[{args:`text, date`,returnType:`double precision`},{args:`text, interval`,returnType:`double precision`},{args:`text, time with time zone`,returnType:`double precision`},{args:`text, time without time zone`,returnType:`double precision`},{args:`text, timestamp with time zone`,returnType:`double precision`},{args:`text, timestamp without time zone`,returnType:`double precision`}],description:`extract field from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_subtract`,signatures:[{args:`timestamp with time zone, interval`,returnType:`timestamp with time zone`},{args:`timestamp with time zone, interval, text`,returnType:`timestamp with time zone`}],description:`subtract interval from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_trunc`,signatures:[{args:`text, interval`,returnType:`interval`},{args:`text, timestamp with time zone`,returnType:`timestamp with time zone`},{args:`text, timestamp without time zone`,returnType:`timestamp without time zone`},{args:`text, timestamp with time zone, text`,returnType:`timestamp with time zone`}],description:`truncate timestamp with time zone to specified units`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`daterange`,signatures:[{args:`date, date`,returnType:`daterange`},{args:`date, date, text`,returnType:`daterange`}],description:`daterange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`decode`,signatures:[{args:`text, text`,returnType:`bytea`}],description:`convert ascii-encoded text string into bytea value`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`degrees`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`radians to degrees`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`dense_rank`,signatures:[{args:``,returnType:`bigint`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`bigint`}],description:`integer rank without gaps`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`diameter`,signatures:[{args:`circle`,returnType:`double precision`}],description:`diameter of circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`div`,signatures:[{args:`numeric, numeric`,returnType:`numeric`}],description:`trunc(x/y)`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`encode`,signatures:[{args:`bytea, text`,returnType:`text`}],description:`convert bytea value into some ascii-only text string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`every`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-and aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`exp`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`natural exponential (e^x)`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`extract`,signatures:[{args:`text, date`,returnType:`numeric`},{args:`text, interval`,returnType:`numeric`},{args:`text, time with time zone`,returnType:`numeric`},{args:`text, time without time zone`,returnType:`numeric`},{args:`text, timestamp with time zone`,returnType:`numeric`},{args:`text, timestamp without time zone`,returnType:`numeric`}],description:`extract field from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`factorial`,signatures:[{args:`bigint`,returnType:`numeric`}],description:`factorial`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`family`,signatures:[{args:`inet`,returnType:`integer`}],description:`address family (4 for IPv4, 6 for IPv6)`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`first_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`fetch the first row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`floor`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer <= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`format`,signatures:[{args:`text`,returnType:`text`},{args:`text, VARIADIC "any"`,returnType:`text`}],description:`format text message`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`gcd`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`}],description:`greatest common divisor`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`gen_random_uuid`,signatures:[{args:``,returnType:`uuid`}],description:`generate random UUID`,category:`system`,volatility:`v`,kind:`f`,permission:`read`,minVersion:13},{name:`generate_series`,signatures:[{args:`bigint, bigint`,returnType:`SETOF bigint`},{args:`integer, integer`,returnType:`SETOF integer`},{args:`numeric, numeric`,returnType:`SETOF numeric`},{args:`bigint, bigint, bigint`,returnType:`SETOF bigint`},{args:`integer, integer, integer`,returnType:`SETOF integer`},{args:`numeric, numeric, numeric`,returnType:`SETOF numeric`},{args:`timestamp with time zone, timestamp with time zone, interval`,returnType:`SETOF timestamp with time zone`},{args:`timestamp without time zone, timestamp without time zone, interval`,returnType:`SETOF timestamp without time zone`},{args:`timestamp with time zone, timestamp with time zone, interval, text`,returnType:`SETOF timestamp with time zone`}],description:`non-persistent series generator`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`greatest`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return largest argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`height`,signatures:[{args:`box`,returnType:`double precision`}],description:`box height`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`host`,signatures:[{args:`inet`,returnType:`text`}],description:`show address octets only`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`hostmask`,signatures:[{args:`inet`,returnType:`inet`}],description:`hostmask of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_client_addr`,signatures:[{args:``,returnType:`inet`}],description:`inet address of the client`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_client_port`,signatures:[{args:``,returnType:`integer`}],description:`client's port number for this connection`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_merge`,signatures:[{args:`inet, inet`,returnType:`cidr`}],description:`the smallest network which includes both of the given networks`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_same_family`,signatures:[{args:`inet, inet`,returnType:`boolean`}],description:`are the addresses from the same family?`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_server_addr`,signatures:[{args:``,returnType:`inet`}],description:`inet address of the server`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_server_port`,signatures:[{args:``,returnType:`integer`}],description:`server's port number for this connection`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`initcap`,signatures:[{args:`text`,returnType:`text`}],description:`capitalize each word`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`int4range`,signatures:[{args:`integer, integer`,returnType:`int4range`},{args:`integer, integer, text`,returnType:`int4range`}],description:`int4range constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`int8range`,signatures:[{args:`bigint, bigint`,returnType:`int8range`},{args:`bigint, bigint, text`,returnType:`int8range`}],description:`int8range constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`is_normalized`,signatures:[{args:`text, text`,returnType:`boolean`}],description:`check Unicode normalization`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`isclosed`,signatures:[{args:`path`,returnType:`boolean`}],description:`path closed?`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`isempty`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range empty?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`isfinite`,signatures:[{args:`date`,returnType:`boolean`},{args:`interval`,returnType:`boolean`},{args:`timestamp with time zone`,returnType:`boolean`},{args:`timestamp without time zone`,returnType:`boolean`}],description:`finite date?`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`isopen`,signatures:[{args:`path`,returnType:`boolean`}],description:`path open?`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_agg`,signatures:[{args:`anyelement`,returnType:`json`}],description:`aggregate input into json`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_agg_strict`,signatures:[{args:`anyelement`,returnType:`json`}],description:`aggregate input into json`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_array_element`,signatures:[{args:`from_json json, element_index integer`,returnType:`json`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_element_text`,signatures:[{args:`from_json json, element_index integer`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_elements`,signatures:[{args:`from_json json, OUT value json`,returnType:`SETOF json`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_elements_text`,signatures:[{args:`from_json json, OUT value text`,returnType:`SETOF text`}],description:`elements of json array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_length`,signatures:[{args:`json`,returnType:`integer`}],description:`length of json array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_build_array`,signatures:[{args:``,returnType:`json`},{args:`VARIADIC "any"`,returnType:`json`}],description:`build a json array from any inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_build_object`,signatures:[{args:``,returnType:`json`},{args:`VARIADIC "any"`,returnType:`json`}],description:`build a json object from pairwise key/value inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_each`,signatures:[{args:`from_json json, OUT key text, OUT value json`,returnType:`SETOF record`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_each_text`,signatures:[{args:`from_json json, OUT key text, OUT value text`,returnType:`SETOF record`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_extract_path`,signatures:[{args:`from_json json, VARIADIC path_elems text[]`,returnType:`json`}],description:`get value from json with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_extract_path_text`,signatures:[{args:`from_json json, VARIADIC path_elems text[]`,returnType:`text`}],description:`get value from json as text with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object`,signatures:[{args:`text[]`,returnType:`json`},{args:`text[], text[]`,returnType:`json`}],description:`map text array of key value pairs to json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_agg`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate input into a json object`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_strict`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate non-NULL input into a json object`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_unique`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate input into a json object with unique keys`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_unique_strict`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate non-NULL input into a json object with unique keys`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_field`,signatures:[{args:`from_json json, field_name text`,returnType:`json`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_field_text`,signatures:[{args:`from_json json, field_name text`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_keys`,signatures:[{args:`json`,returnType:`SETOF text`}],description:`get json object keys`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_populate_record`,signatures:[{args:`base anyelement, from_json json, use_json_as_text boolean`,returnType:`anyelement`}],description:`get record fields from a json object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_populate_recordset`,signatures:[{args:`base anyelement, from_json json, use_json_as_text boolean`,returnType:`SETOF anyelement`}],description:`get set of records with fields from a json array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_strip_nulls`,signatures:[{args:`json`,returnType:`json`}],description:`remove object fields with null values from json`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_to_record`,signatures:[{args:`json`,returnType:`record`}],description:`get record fields from a json object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_to_recordset`,signatures:[{args:`json`,returnType:`SETOF record`}],description:`get set of records with fields from a json array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_to_tsvector`,signatures:[{args:`json, jsonb`,returnType:`tsvector`},{args:`regconfig, json, jsonb`,returnType:`tsvector`}],description:`transform specified values from json to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_typeof`,signatures:[{args:`json`,returnType:`text`}],description:`get the type of a json value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_agg`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`aggregate input into jsonb`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`jsonb_agg_strict`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`aggregate input into jsonb skipping nulls`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`jsonb_array_element`,signatures:[{args:`from_json jsonb, element_index integer`,returnType:`jsonb`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_element_text`,signatures:[{args:`from_json jsonb, element_index integer`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_elements`,signatures:[{args:`from_json jsonb, OUT value jsonb`,returnType:`SETOF jsonb`}],description:`elements of a jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_elements_text`,signatures:[{args:`from_json jsonb, OUT value text`,returnType:`SETOF text`}],description:`elements of jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_length`,signatures:[{args:`jsonb`,returnType:`integer`}],description:`length of jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_build_array`,signatures:[{args:``,returnType:`jsonb`},{args:`VARIADIC "any"`,returnType:`jsonb`}],description:`build a jsonb array from any inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_build_object`,signatures:[{args:``,returnType:`jsonb`},{args:`VARIADIC "any"`,returnType:`jsonb`}],description:`build a jsonb object from pairwise key/value inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_cmp`,signatures:[{args:`jsonb, jsonb`,returnType:`integer`}],description:`less-equal-greater`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_concat`,signatures:[{args:`jsonb, jsonb`,returnType:`jsonb`}],description:`implementation of || operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_contained`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <@ operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_contains`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of @> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_delete`,signatures:[{args:`jsonb, text`,returnType:`jsonb`},{args:`jsonb, integer`,returnType:`jsonb`},{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`jsonb`}],description:`implementation of - operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_delete_path`,signatures:[{args:`jsonb, text[]`,returnType:`jsonb`}],description:`implementation of #- operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_each`,signatures:[{args:`from_json jsonb, OUT key text, OUT value jsonb`,returnType:`SETOF record`}],description:`key value pairs of a jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_each_text`,signatures:[{args:`from_json jsonb, OUT key text, OUT value text`,returnType:`SETOF record`}],description:`key value pairs of a jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_eq`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of = operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists`,signatures:[{args:`jsonb, text`,returnType:`boolean`}],description:`implementation of ? operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists_all`,signatures:[{args:`jsonb, text[]`,returnType:`boolean`}],description:`implementation of ?& operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists_any`,signatures:[{args:`jsonb, text[]`,returnType:`boolean`}],description:`implementation of ?| operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_extract_path`,signatures:[{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`jsonb`}],description:`get value from jsonb with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_extract_path_text`,signatures:[{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`text`}],description:`get value from jsonb as text with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_ge`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of >= operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_gt`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of > operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_hash`,signatures:[{args:`jsonb`,returnType:`integer`}],description:`hash`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_hash_extended`,signatures:[{args:`jsonb, bigint`,returnType:`bigint`}],description:`hash`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_insert`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, insert_after boolean`,returnType:`jsonb`}],description:`Insert value into a jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_le`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <= operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_lt`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of < operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_ne`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object`,signatures:[{args:`text[]`,returnType:`jsonb`},{args:`text[], text[]`,returnType:`jsonb`}],description:`map text array of key value pairs to jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_agg`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate inputs into jsonb object`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_strict`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate non-NULL inputs into jsonb object`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_unique`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate inputs into jsonb object checking key uniqueness`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_unique_strict`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate non-NULL inputs into jsonb object checking key uniqueness`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_field`,signatures:[{args:`from_json jsonb, field_name text`,returnType:`jsonb`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_field_text`,signatures:[{args:`from_json jsonb, field_name text`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_keys`,signatures:[{args:`jsonb`,returnType:`SETOF text`}],description:`get jsonb object keys`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_path_exists`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath exists test`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_exists_opr`,signatures:[{args:`jsonb, jsonpath`,returnType:`boolean`}],description:`implementation of @? operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_exists_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath exists test with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath match`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match_opr`,signatures:[{args:`jsonb, jsonpath`,returnType:`boolean`}],description:`implementation of @@ operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath match with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`SETOF jsonb`}],description:`jsonpath query`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_array`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query wrapped into array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_array_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query wrapped into array with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_first`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query first item`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_first_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query first item with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`SETOF jsonb`}],description:`jsonpath query with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_populate_record`,signatures:[{args:`anyelement, jsonb`,returnType:`anyelement`}],description:`get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_populate_record_valid`,signatures:[{args:`anyelement, jsonb`,returnType:`boolean`}],description:`test get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_populate_recordset`,signatures:[{args:`anyelement, jsonb`,returnType:`SETOF anyelement`}],description:`get set of records with fields from a jsonb array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_pretty`,signatures:[{args:`jsonb`,returnType:`text`}],description:`Indented text from jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_set`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, create_if_missing boolean`,returnType:`jsonb`}],description:`Set part of a jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_set_lax`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, create_if_missing boolean, null_value_treatment text`,returnType:`jsonb`}],description:`Set part of a jsonb, handle NULL value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_strip_nulls`,signatures:[{args:`jsonb`,returnType:`jsonb`}],description:`remove object fields with null values from jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_subscript_handler`,signatures:[{args:`internal`,returnType:`internal`}],description:`jsonb subscripting logic`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_to_record`,signatures:[{args:`jsonb`,returnType:`record`}],description:`get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_to_recordset`,signatures:[{args:`jsonb`,returnType:`SETOF record`}],description:`get set of records with fields from a jsonb array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_to_tsvector`,signatures:[{args:`jsonb, jsonb`,returnType:`tsvector`},{args:`regconfig, jsonb, jsonb`,returnType:`tsvector`}],description:`transform specified values from jsonb to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_typeof`,signatures:[{args:`jsonb`,returnType:`text`}],description:`get the type of a jsonb value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_days`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 30 days to numbers of months`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_hours`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 24 hours to numbers of days`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_interval`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`lag`,signatures:[{args:`anyelement`,returnType:`anyelement`},{args:`anyelement, integer`,returnType:`anyelement`},{args:`anycompatible, integer, anycompatible`,returnType:`anycompatible`}],description:`fetch the preceding row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`last_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`fetch the last row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`lcm`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`}],description:`least common multiple`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`lead`,signatures:[{args:`anyelement`,returnType:`anyelement`},{args:`anyelement, integer`,returnType:`anyelement`},{args:`anycompatible, integer, anycompatible`,returnType:`anycompatible`}],description:`fetch the following row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`least`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return smallest argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`left`,signatures:[{args:`text, integer`,returnType:`text`}],description:`extract the first n characters`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`length`,signatures:[{args:`bit`,returnType:`integer`},{args:`lseg`,returnType:`double precision`},{args:`path`,returnType:`double precision`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`},{args:`tsvector`,returnType:`integer`},{args:`character`,returnType:`integer`},{args:`bytea, name`,returnType:`integer`}],description:`length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`line`,signatures:[{args:`point, point`,returnType:`line`}],description:`construct line from points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`ln`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`natural logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`log`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`},{args:`numeric, numeric`,returnType:`numeric`}],description:`base 10 logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`log10`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`base 10 logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower`,signatures:[{args:`text`,returnType:`text`},{args:`anyrange`,returnType:`anyelement`},{args:`anymultirange`,returnType:`anyelement`}],description:`lowercase`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower_inc`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's lower bound inclusive?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower_inf`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's lower bound infinite?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`lpad`,signatures:[{args:`text, integer`,returnType:`text`},{args:`text, integer, text`,returnType:`text`}],description:`left-pad string to length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`lseg`,signatures:[{args:`box`,returnType:`lseg`},{args:`point, point`,returnType:`lseg`}],description:`convert points to line segment`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`ltrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from left end of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_date`,signatures:[{args:`year integer, month integer, day integer`,returnType:`date`}],description:`construct date`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_interval`,signatures:[{args:`years integer, months integer, weeks integer, days integer, hours integer, mins integer, secs double precision`,returnType:`interval`}],description:`construct interval`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_time`,signatures:[{args:`hour integer, min integer, sec double precision`,returnType:`time without time zone`}],description:`construct time`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_timestamp`,signatures:[{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision`,returnType:`timestamp without time zone`}],description:`construct timestamp`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_timestamptz`,signatures:[{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision`,returnType:`timestamp with time zone`},{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision, timezone text`,returnType:`timestamp with time zone`}],description:`construct timestamp with time zone`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`masklen`,signatures:[{args:`inet`,returnType:`integer`}],description:`netmask length`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`max`,signatures:[{args:`oid`,returnType:`oid`},{args:`tid`,returnType:`tid`},{args:`date`,returnType:`date`},{args:`inet`,returnType:`inet`},{args:`real`,returnType:`real`},{args:`text`,returnType:`text`},{args:`xid8`,returnType:`xid8`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`bigint`},{args:`pg_lsn`,returnType:`pg_lsn`},{args:`anyenum`,returnType:`anyenum`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`anyarray`,returnType:`anyarray`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`smallint`},{args:`character`,returnType:`character`},{args:`double precision`,returnType:`double precision`},{args:`time with time zone`,returnType:`time with time zone`},{args:`time without time zone`,returnType:`time without time zone`},{args:`timestamp with time zone`,returnType:`timestamp with time zone`},{args:`timestamp without time zone`,returnType:`timestamp without time zone`}],description:`maximum value of all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`md5`,signatures:[{args:`text`,returnType:`text`},{args:`bytea`,returnType:`text`}],description:`MD5 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`min`,signatures:[{args:`oid`,returnType:`oid`},{args:`tid`,returnType:`tid`},{args:`date`,returnType:`date`},{args:`inet`,returnType:`inet`},{args:`real`,returnType:`real`},{args:`text`,returnType:`text`},{args:`xid8`,returnType:`xid8`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`bigint`},{args:`pg_lsn`,returnType:`pg_lsn`},{args:`anyenum`,returnType:`anyenum`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`anyarray`,returnType:`anyarray`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`smallint`},{args:`character`,returnType:`character`},{args:`double precision`,returnType:`double precision`},{args:`time with time zone`,returnType:`time with time zone`},{args:`time without time zone`,returnType:`time without time zone`},{args:`timestamp with time zone`,returnType:`timestamp with time zone`},{args:`timestamp without time zone`,returnType:`timestamp without time zone`}],description:`minimum value of all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`min_scale`,signatures:[{args:`numeric`,returnType:`integer`}],description:`minimum scale needed to represent the value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`,minVersion:13},{name:`mod`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`},{args:`smallint, smallint`,returnType:`smallint`}],description:`modulus`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`mode`,signatures:[{args:`ORDER BY anyelement`,returnType:`anyelement`}],description:`most common value`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`netmask`,signatures:[{args:`inet`,returnType:`inet`}],description:`netmask of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`network`,signatures:[{args:`inet`,returnType:`cidr`}],description:`network part of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`normalize`,signatures:[{args:`text, text`,returnType:`text`}],description:`Unicode normalization`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`now`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current transaction time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`npoints`,signatures:[{args:`path`,returnType:`integer`},{args:`polygon`,returnType:`integer`}],description:`number of points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`nth_value`,signatures:[{args:`anyelement, integer`,returnType:`anyelement`}],description:`fetch the Nth row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`ntile`,signatures:[{args:`integer`,returnType:`integer`}],description:`split rows into N groups`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`nullif`,signatures:[{args:`anyelement, anyelement`,returnType:`anyelement`}],description:`return null if arguments are equal`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`num_nonnulls`,signatures:[{args:`VARIADIC "any"`,returnType:`integer`}],description:`count the number of non-NULL arguments`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`num_nulls`,signatures:[{args:`VARIADIC "any"`,returnType:`integer`}],description:`count the number of NULL arguments`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`numrange`,signatures:[{args:`numeric, numeric`,returnType:`numrange`},{args:`numeric, numeric, text`,returnType:`numrange`}],description:`numrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`octet_length`,signatures:[{args:`bit`,returnType:`integer`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`octet length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`overlay`,signatures:[{args:`bit, bit, integer`,returnType:`bit`},{args:`text, text, integer`,returnType:`text`},{args:`bytea, bytea, integer`,returnType:`bytea`},{args:`bit, bit, integer, integer`,returnType:`bit`},{args:`text, text, integer, integer`,returnType:`text`},{args:`bytea, bytea, integer, integer`,returnType:`bytea`}],description:`substitute portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`path`,signatures:[{args:`polygon`,returnType:`path`}],description:`convert polygon to path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`pclose`,signatures:[{args:`path`,returnType:`path`}],description:`close path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`percent_rank`,signatures:[{args:``,returnType:`double precision`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`double precision`}],description:`fractional rank within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`percentile_cont`,signatures:[{args:`double precision ORDER BY interval`,returnType:`interval`},{args:`double precision[] ORDER BY interval`,returnType:`interval[]`},{args:`double precision ORDER BY double precision`,returnType:`double precision`},{args:`double precision[] ORDER BY double precision`,returnType:`double precision[]`}],description:`continuous distribution percentile`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`percentile_disc`,signatures:[{args:`double precision ORDER BY anyelement`,returnType:`anyelement`},{args:`double precision[] ORDER BY anyelement`,returnType:`anyarray`}],description:`discrete percentile`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`pg_backend_pid`,signatures:[{args:``,returnType:`integer`}],description:`statistics: current backend PID`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_blocking_pids`,signatures:[{args:`integer`,returnType:`integer[]`}],description:`get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_cancel_backend`,signatures:[{args:`integer`,returnType:`boolean`}],description:`cancel a server process' current query`,category:`system`,volatility:`v`,kind:`f`,permission:`admin`},{name:`pg_column_size`,signatures:[{args:`"any"`,returnType:`integer`}],description:`bytes required to store the value, perhaps with compression`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_conf_load_time`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`configuration load time`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_database_size`,signatures:[{args:`oid`,returnType:`bigint`},{args:`name`,returnType:`bigint`}],description:`total disk space usage for the specified database`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_get_constraintdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`constraint description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_functiondef`,signatures:[{args:`oid`,returnType:`text`}],description:`definition of a function`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_indexdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, integer, boolean`,returnType:`text`}],description:`index description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_ruledef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`source text of a rule`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_serial_sequence`,signatures:[{args:`text, text`,returnType:`text`}],description:`name of sequence for a serial column`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_triggerdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`trigger description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_userbyid`,signatures:[{args:`oid`,returnType:`name`}],description:`role name by OID (with fallback)`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_viewdef`,signatures:[{args:`oid`,returnType:`text`},{args:`text`,returnType:`text`},{args:`oid, boolean`,returnType:`text`},{args:`oid, integer`,returnType:`text`},{args:`text, boolean`,returnType:`text`}],description:`select statement of a view`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_indexes_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`disk space usage for all indexes attached to the specified table`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_is_in_recovery`,signatures:[{args:``,returnType:`boolean`}],description:`true if server is in recovery`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_last_xact_replay_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`timestamp of last replay xact`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_postmaster_start_time`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`postmaster start time`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_relation_size`,signatures:[{args:`regclass`,returnType:`bigint`},{args:`regclass, text`,returnType:`bigint`}],description:`disk space usage for the specified fork of a table or index`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_size_bytes`,signatures:[{args:`text`,returnType:`bigint`}],description:`convert a size in human-readable format with size units into bytes`,category:`system`,volatility:`i`,kind:`f`,permission:`read`},{name:`pg_size_pretty`,signatures:[{args:`bigint`,returnType:`text`},{args:`numeric`,returnType:`text`}],description:`convert a long int to a human readable text using size units`,category:`system`,volatility:`i`,kind:`f`,permission:`read`},{name:`pg_sleep`,signatures:[{args:`double precision`,returnType:`void`}],description:`sleep for the specified time in seconds`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_sleep_for`,signatures:[{args:`interval`,returnType:`void`}],description:`sleep for the specified interval`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_sleep_until`,signatures:[{args:`timestamp with time zone`,returnType:`void`}],description:`sleep until the specified time`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_table_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`disk space usage for the specified table, including TOAST, free space and visibility map`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_tablespace_size`,signatures:[{args:`oid`,returnType:`bigint`},{args:`name`,returnType:`bigint`}],description:`total disk space usage for the specified tablespace`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_terminate_backend`,signatures:[{args:`pid integer, timeout bigint`,returnType:`boolean`}],description:`terminate a server process`,category:`system`,volatility:`v`,kind:`f`,permission:`admin`},{name:`pg_total_relation_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`total disk space usage for the specified table and associated indexes`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_typeof`,signatures:[{args:`"any"`,returnType:`regtype`}],description:`type of the argument`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`phraseto_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`pi`,signatures:[{args:``,returnType:`double precision`}],description:`PI`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`plainto_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`point`,signatures:[{args:`box`,returnType:`point`},{args:`lseg`,returnType:`point`},{args:`circle`,returnType:`point`},{args:`polygon`,returnType:`point`},{args:`double precision, double precision`,returnType:`point`}],description:`center of`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`polygon`,signatures:[{args:`box`,returnType:`polygon`},{args:`path`,returnType:`polygon`},{args:`circle`,returnType:`polygon`},{args:`integer, circle`,returnType:`polygon`}],description:`convert box to polygon`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`popen`,signatures:[{args:`path`,returnType:`path`}],description:`open path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`position`,signatures:[{args:`bit, bit`,returnType:`integer`},{args:`text, text`,returnType:`integer`},{args:`bytea, bytea`,returnType:`integer`}],description:`position of substring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`power`,signatures:[{args:`numeric, numeric`,returnType:`numeric`},{args:`double precision, double precision`,returnType:`double precision`}],description:`exponentiation`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_ident`,signatures:[{args:`text`,returnType:`text`}],description:`quote an identifier for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_literal`,signatures:[{args:`text`,returnType:`text`},{args:`anyelement`,returnType:`text`}],description:`quote a literal for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_nullable`,signatures:[{args:`text`,returnType:`text`},{args:`anyelement`,returnType:`text`}],description:`quote a possibly-null literal for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`radians`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`degrees to radians`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`radius`,signatures:[{args:`circle`,returnType:`double precision`}],description:`radius of circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`random`,signatures:[{args:``,returnType:`double precision`},{args:`min bigint, max bigint`,returnType:`bigint`},{args:`min integer, max integer`,returnType:`integer`},{args:`min numeric, max numeric`,returnType:`numeric`}],description:`random value`,category:`math`,volatility:`v`,kind:`f`,permission:`read`},{name:`random_normal`,signatures:[{args:`mean double precision, stddev double precision`,returnType:`double precision`}],description:`random value from normal distribution`,category:`math`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`range_agg`,signatures:[{args:`anyrange`,returnType:`anymultirange`},{args:`anymultirange`,returnType:`anymultirange`}],description:`combine aggregate input into a multirange`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`range_intersect_agg`,signatures:[{args:`anyrange`,returnType:`anyrange`},{args:`anymultirange`,returnType:`anymultirange`}],description:`range aggregate by intersecting`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`range_merge`,signatures:[{args:`anymultirange`,returnType:`anyrange`},{args:`anyrange, anyrange`,returnType:`anyrange`}],description:`the smallest range which includes both of the given ranges`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`rank`,signatures:[{args:``,returnType:`bigint`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`bigint`}],description:`integer rank with gaps`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`regexp_count`,signatures:[{args:`text, text`,returnType:`integer`},{args:`text, text, integer`,returnType:`integer`},{args:`text, text, integer, text`,returnType:`integer`}],description:`count regexp matches`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_instr`,signatures:[{args:`text, text`,returnType:`integer`},{args:`text, text, integer`,returnType:`integer`},{args:`text, text, integer, integer`,returnType:`integer`},{args:`text, text, integer, integer, integer`,returnType:`integer`},{args:`text, text, integer, integer, integer, text`,returnType:`integer`},{args:`text, text, integer, integer, integer, text, integer`,returnType:`integer`}],description:`position of regexp match`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_like`,signatures:[{args:`text, text`,returnType:`boolean`},{args:`text, text, text`,returnType:`boolean`}],description:`test for regexp match`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_match`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`find first match for regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_matches`,signatures:[{args:`text, text`,returnType:`SETOF text[]`},{args:`text, text, text`,returnType:`SETOF text[]`}],description:`find match(es) for regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_replace`,signatures:[{args:`text, text, text`,returnType:`text`},{args:`text, text, text, text`,returnType:`text`},{args:`text, text, text, integer`,returnType:`text`},{args:`text, text, text, integer, integer`,returnType:`text`},{args:`text, text, text, integer, integer, text`,returnType:`text`}],description:`replace text using regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_split_to_array`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`split string by pattern`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_split_to_table`,signatures:[{args:`text, text`,returnType:`SETOF text`},{args:`text, text, text`,returnType:`SETOF text`}],description:`split string by pattern`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_substr`,signatures:[{args:`text, text`,returnType:`text`},{args:`text, text, integer`,returnType:`text`},{args:`text, text, integer, integer`,returnType:`text`},{args:`text, text, integer, integer, text`,returnType:`text`},{args:`text, text, integer, integer, text, integer`,returnType:`text`}],description:`extract substring that matches regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regr_avgx`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`average of the independent variable (sum(X)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_avgy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`average of the dependent variable (sum(Y)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_count`,signatures:[{args:`double precision, double precision`,returnType:`bigint`}],description:`number of input rows in which both expressions are not null`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_intercept`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_r2`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`square of the correlation coefficient`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_slope`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`slope of the least-squares-fit linear equation determined by the (X, Y) pairs`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_sxx`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_sxy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_syy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`repeat`,signatures:[{args:`text, integer`,returnType:`text`}],description:`replicate string n times`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`replace`,signatures:[{args:`text, text, text`,returnType:`text`}],description:`replace all occurrences in string of old_substr with new_substr`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`reverse`,signatures:[{args:`text`,returnType:`text`}],description:`reverse text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`right`,signatures:[{args:`text, integer`,returnType:`text`}],description:`extract the last n characters`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`round`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`},{args:`numeric, integer`,returnType:`numeric`}],description:`round to nearest integer`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`row_number`,signatures:[{args:``,returnType:`bigint`}],description:`row number within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`row_to_json`,signatures:[{args:`record`,returnType:`json`},{args:`record, boolean`,returnType:`json`}],description:`map row to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`rpad`,signatures:[{args:`text, integer`,returnType:`text`},{args:`text, integer, text`,returnType:`text`}],description:`right-pad string to length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`rtrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from right end of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`scale`,signatures:[{args:`numeric`,returnType:`integer`}],description:`number of decimal digits in the fractional part`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`session_user`,signatures:[{args:``,returnType:`name`}],description:`session user name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`set_masklen`,signatures:[{args:`cidr, integer`,returnType:`cidr`},{args:`inet, integer`,returnType:`inet`}],description:`change netmask of inet`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`setseed`,signatures:[{args:`double precision`,returnType:`void`}],description:`set random seed`,category:`math`,volatility:`v`,kind:`f`,permission:`read`},{name:`setweight`,signatures:[{args:`tsvector, "char"`,returnType:`tsvector`},{args:`tsvector, "char", text[]`,returnType:`tsvector`}],description:`set given weight for whole tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha256`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-256 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha384`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-384 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha512`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-512 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sign`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sign of value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`slope`,signatures:[{args:`point, point`,returnType:`double precision`}],description:`slope between points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`split_part`,signatures:[{args:`text, text, integer`,returnType:`text`}],description:`split string by field_sep and return field_num`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sqrt`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`square root`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`starts_with`,signatures:[{args:`text, text`,returnType:`boolean`}],description:`implementation of ^@ operator`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`statement_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current statement time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`stddev`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`historical alias for stddev_samp`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`stddev_pop`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`population standard deviation of bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`stddev_samp`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sample standard deviation of bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`string_agg`,signatures:[{args:`value text, delimiter text`,returnType:`text`},{args:`value bytea, delimiter bytea`,returnType:`bytea`}],description:`concatenate aggregate input into a string`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`string_to_array`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`split delimited text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`strip`,signatures:[{args:`tsvector`,returnType:`tsvector`}],description:`strip position information`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`strpos`,signatures:[{args:`text, text`,returnType:`integer`}],description:`position of substring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`substr`,signatures:[{args:`text, integer`,returnType:`text`},{args:`bytea, integer`,returnType:`bytea`},{args:`text, integer, integer`,returnType:`text`},{args:`bytea, integer, integer`,returnType:`bytea`}],description:`extract portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`substring`,signatures:[{args:`text, text`,returnType:`text`},{args:`bit, integer`,returnType:`bit`},{args:`text, integer`,returnType:`text`},{args:`bytea, integer`,returnType:`bytea`},{args:`text, text, text`,returnType:`text`},{args:`bit, integer, integer`,returnType:`bit`},{args:`text, integer, integer`,returnType:`text`},{args:`bytea, integer, integer`,returnType:`bytea`}],description:`extract portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sum`,signatures:[{args:`real`,returnType:`real`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`bigint`},{args:`numeric`,returnType:`numeric`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`bigint`},{args:`double precision`,returnType:`double precision`}],description:`sum as numeric across all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`timeofday`,signatures:[{args:``,returnType:`text`}],description:`current date and time - increments during transactions`,category:`datetime`,volatility:`v`,kind:`f`,permission:`read`},{name:`timezone`,signatures:[{args:`time with time zone`,returnType:`time with time zone`},{args:`timestamp with time zone`,returnType:`timestamp without time zone`},{args:`text, time with time zone`,returnType:`time with time zone`},{args:`timestamp without time zone`,returnType:`timestamp with time zone`},{args:`interval, time with time zone`,returnType:`time with time zone`},{args:`text, timestamp with time zone`,returnType:`timestamp without time zone`},{args:`text, timestamp without time zone`,returnType:`timestamp with time zone`},{args:`interval, timestamp with time zone`,returnType:`timestamp without time zone`},{args:`interval, timestamp without time zone`,returnType:`timestamp with time zone`}],description:`adjust timestamp to new time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_ascii`,signatures:[{args:`text`,returnType:`text`},{args:`text, name`,returnType:`text`},{args:`text, integer`,returnType:`text`}],description:`encode text from DB encoding to ASCII text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_char`,signatures:[{args:`real, text`,returnType:`text`},{args:`bigint, text`,returnType:`text`},{args:`integer, text`,returnType:`text`},{args:`numeric, text`,returnType:`text`},{args:`interval, text`,returnType:`text`},{args:`double precision, text`,returnType:`text`},{args:`timestamp with time zone, text`,returnType:`text`},{args:`timestamp without time zone, text`,returnType:`text`}],description:`format timestamp with time zone to text`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_date`,signatures:[{args:`text, text`,returnType:`date`}],description:`convert text to date`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_hex`,signatures:[{args:`bigint`,returnType:`text`},{args:`integer`,returnType:`text`}],description:`convert int4 number to hex`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_json`,signatures:[{args:`anyelement`,returnType:`json`}],description:`map input to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_jsonb`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`map input to jsonb`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_number`,signatures:[{args:`text, text`,returnType:`numeric`}],description:`convert text to numeric`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_timestamp`,signatures:[{args:`text, text`,returnType:`timestamp with time zone`},{args:`double precision`,returnType:`timestamp with time zone`}],description:`convert UNIX epoch to timestamptz`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`make tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_tsvector`,signatures:[{args:`json`,returnType:`tsvector`},{args:`text`,returnType:`tsvector`},{args:`jsonb`,returnType:`tsvector`},{args:`regconfig, json`,returnType:`tsvector`},{args:`regconfig, text`,returnType:`tsvector`},{args:`regconfig, jsonb`,returnType:`tsvector`}],description:`transform to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`transaction_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current transaction time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`translate`,signatures:[{args:`text, text, text`,returnType:`text`}],description:`map a set of characters appearing in string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`trim`,signatures:[{args:`text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim whitespace from string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`trim_scale`,signatures:[{args:`numeric`,returnType:`numeric`}],description:`numeric with minimum scale needed to represent the value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`,minVersion:13},{name:`trunc`,signatures:[{args:`macaddr`,returnType:`macaddr`},{args:`numeric`,returnType:`numeric`},{args:`macaddr8`,returnType:`macaddr8`},{args:`double precision`,returnType:`double precision`},{args:`numeric, integer`,returnType:`numeric`}],description:`truncate to integer`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_headline`,signatures:[{args:`json, tsquery`,returnType:`json`},{args:`text, tsquery`,returnType:`text`},{args:`jsonb, tsquery`,returnType:`jsonb`},{args:`json, tsquery, text`,returnType:`json`},{args:`text, tsquery, text`,returnType:`text`},{args:`jsonb, tsquery, text`,returnType:`jsonb`},{args:`regconfig, json, tsquery`,returnType:`json`},{args:`regconfig, text, tsquery`,returnType:`text`},{args:`regconfig, jsonb, tsquery`,returnType:`jsonb`},{args:`regconfig, json, tsquery, text`,returnType:`json`},{args:`regconfig, text, tsquery, text`,returnType:`text`},{args:`regconfig, jsonb, tsquery, text`,returnType:`jsonb`}],description:`generate headline`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_rank`,signatures:[{args:`tsvector, tsquery`,returnType:`real`},{args:`real[], tsvector, tsquery`,returnType:`real`},{args:`tsvector, tsquery, integer`,returnType:`real`},{args:`real[], tsvector, tsquery, integer`,returnType:`real`}],description:`relevance`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_rank_cd`,signatures:[{args:`tsvector, tsquery`,returnType:`real`},{args:`real[], tsvector, tsquery`,returnType:`real`},{args:`tsvector, tsquery, integer`,returnType:`real`},{args:`real[], tsvector, tsquery, integer`,returnType:`real`}],description:`relevance`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`tsrange`,signatures:[{args:`timestamp without time zone, timestamp without time zone`,returnType:`tsrange`},{args:`timestamp without time zone, timestamp without time zone, text`,returnType:`tsrange`}],description:`tsrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`tstzrange`,signatures:[{args:`timestamp with time zone, timestamp with time zone`,returnType:`tstzrange`},{args:`timestamp with time zone, timestamp with time zone, text`,returnType:`tstzrange`}],description:`tstzrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`tsvector_to_array`,signatures:[{args:`tsvector`,returnType:`text[]`}],description:`convert tsvector to array of lexemes`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`unnest`,signatures:[{args:`anyarray`,returnType:`SETOF anyelement`},{args:`anymultirange`,returnType:`SETOF anyrange`},{args:`tsvector tsvector, OUT lexeme text, OUT positions smallint[], OUT weights text[]`,returnType:`SETOF record`}],description:`expand array to set of rows`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper`,signatures:[{args:`text`,returnType:`text`},{args:`anyrange`,returnType:`anyelement`},{args:`anymultirange`,returnType:`anyelement`}],description:`uppercase`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper_inc`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's upper bound inclusive?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper_inf`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's upper bound infinite?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`var_pop`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`population variance of bigint input values (square of the population standard deviation)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`var_samp`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sample variance of bigint input values (square of the sample standard deviation)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`variance`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`historical alias for var_samp`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`version`,signatures:[{args:``,returnType:`text`}],description:`PostgreSQL version string`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`websearch_to_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`width`,signatures:[{args:`box`,returnType:`double precision`}],description:`box width`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`width_bucket`,signatures:[{args:`anycompatible, anycompatiblearray`,returnType:`integer`},{args:`numeric, numeric, numeric, integer`,returnType:`integer`},{args:`double precision, double precision, double precision, integer`,returnType:`integer`}],description:`bucket number of operand in equal-width histogram`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`xmlagg`,signatures:[{args:`xml`,returnType:`xml`}],description:`concatenate XML values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`}];var PAREN_KEYWORDS=new Set([`ROLLUP`,`CUBE`,`GROUPING SETS`,`CAST`,`EXTRACT`,`SUBSTRING`,`TRIM`,`POSITION`,`OVERLAY`,`COALESCE`,`NULLIF`,`GREATEST`,`LEAST`,`XMLELEMENT`,`XMLFOREST`,`XMLROOT`,`XMLPARSE`,`XMLSERIALIZE`]),NO_SPACE_KEYWORDS=new Set([`END`,`TRUE`,`FALSE`,`NULL`]),NO_SPACE_KEYWORD_SECTIONS=new Set([`CREATE_TABLE_COLUMN_TYPE`]),COLUMN_SPACE_SECTIONS=new Set([`WHERE_CONDITION`,`JOIN_CONDITION`,`HAVING`]),TABLE_QUALIFIER_SECTIONS=new Set([`SELECT_COLUMNS`,`WHERE_CONDITION`,`JOIN_CONDITION`,`HAVING`,`GROUP_BY`,`ORDER_BY`]);function getInsertText(type,value,section){switch(type){case`function`:return value+`(`;case`keyword`:return PAREN_KEYWORDS.has(value.toUpperCase())?value+`(`:NO_SPACE_KEYWORDS.has(value.toUpperCase())||section&&NO_SPACE_KEYWORD_SECTIONS.has(section)?void 0:value+` `;case`table`:case`view`:case`cte`:return section&&TABLE_QUALIFIER_SECTIONS.has(section)?value+`.`:value+` `;case`column`:return section&&COLUMN_SPACE_SECTIONS.has(section)?value+` `:void 0;case`alias`:case`schema`:case`operator`:return}}function createCandidate(type,value,source,detail,section){return{type,value,displayText:value,detail,insertText:getInsertText(type,value,section),source}}function generateCandidates(context,scope,schema){let{section,tablePrefix}=context;if(tablePrefix)return generateColumnCandidatesForTable(tablePrefix,scope,schema);switch(section){case`ORDER_BY_INCOMPLETE`:case`GROUP_BY_INCOMPLETE`:return[createCandidate(`keyword`,`BY`,`keyword`)];case`IS_INCOMPLETE`:return[createCandidate(`keyword`,`NULL`,`keyword`),createCandidate(`keyword`,`NOT NULL`,`keyword`),createCandidate(`keyword`,`TRUE`,`keyword`),createCandidate(`keyword`,`NOT TRUE`,`keyword`),createCandidate(`keyword`,`FALSE`,`keyword`),createCandidate(`keyword`,`NOT FALSE`,`keyword`),createCandidate(`keyword`,`UNKNOWN`,`keyword`),createCandidate(`keyword`,`NOT UNKNOWN`,`keyword`),createCandidate(`keyword`,`DISTINCT FROM`,`keyword`),createCandidate(`keyword`,`NOT DISTINCT FROM`,`keyword`)];case`IS_NOT_INCOMPLETE`:return[createCandidate(`keyword`,`NULL`,`keyword`),createCandidate(`keyword`,`TRUE`,`keyword`),createCandidate(`keyword`,`FALSE`,`keyword`),createCandidate(`keyword`,`UNKNOWN`,`keyword`),createCandidate(`keyword`,`DISTINCT FROM`,`keyword`)];case`NULLS_INCOMPLETE`:return[createCandidate(`keyword`,`FIRST`,`keyword`),createCandidate(`keyword`,`LAST`,`keyword`)];case`INSERT_VALUES`:return[createCandidate(`keyword`,`VALUES`,`keyword`),createCandidate(`keyword`,`SELECT`,`keyword`),createCandidate(`keyword`,`OVERRIDING USER VALUE`,`keyword`),createCandidate(`keyword`,`OVERRIDING SYSTEM VALUE`,`keyword`)]}if(context.isAfterNot)return generateNotFollowKeywords();switch(section){case`STATEMENT_START`:return generateStatementStartCandidates();case`SELECT_COLUMNS`:return generateSelectColumnCandidates(context,scope,schema);case`FROM_TABLE`:return generateFromTableCandidates(scope,schema,context);case`JOIN_TABLE`:case`INSERT_TABLE`:return generateTableCandidates(scope,schema);case`DELETE_TABLE`:return generateDeleteTableCandidates(context,scope,schema);case`UPDATE_TABLE`:return generateUpdateTableCandidates(context,scope,schema);case`CALL_PROCEDURE`:return generateProcedureCandidates(schema);case`WHERE_CONDITION`:case`JOIN_CONDITION`:case`HAVING`:return generateExpressionCandidates(context,scope,schema);case`GROUP_BY`:return generateGroupByCandidates(context,scope,schema);case`ORDER_BY`:return generateOrderByCandidates(context,scope,schema);case`UPDATE_SET`:return generateUpdateSetCandidates(context,scope,schema);case`RETURNING`:return generateReturningCandidates(scope,schema);case`CREATE_OBJECT`:return generateCreateObjectCandidates();case`CREATE_TABLE_NAME`:return[];case`CREATE_TABLE_COLUMNS`:return generateCreateTableColumnsCandidates();case`CREATE_TABLE_COLUMN_TYPE`:return generateColumnTypeCandidates(section);case`CREATE_TABLE_COLUMN_CONSTRAINT`:return generateColumnConstraintCandidates();case`CREATE_TABLE_OPTIONS`:return generateCreateTableOptionsCandidates();case`WITH_CTE_NAME`:return[];case`LIMIT`:case`OFFSET`:return[];case`UNKNOWN`:return[];default:return generateDefaultCandidates(scope,schema)}}function generateStatementStartCandidates(){return getStatementKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateSelectColumnCandidates(context,scope,schema){let candidates=[];return context.isAfterCompletedIdentifier?generateSelectClauseTransitionCandidates():(candidates.push(...generateColumnCandidates(scope,schema)),schema.selectedTable&&candidates.push(...generateSelectedTableColumnCandidates(schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateSelectKeywordCandidates()),candidates.push(...generateSelectClauseTransitionCandidates()),candidates.push(...generateTableCandidates(scope,schema,`SELECT_COLUMNS`)),candidates)}function generateSelectedTableColumnCandidates(schema){if(!schema.selectedTable)return[];let selectedTable=schema.tables.find(t$1=>t$1.schema===schema.selectedTable.schema&&t$1.name===schema.selectedTable.name);return selectedTable?selectedTable.columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:`${schema.selectedTable.name}.${col.type}`,source:`schema`})):[]}function generateColumnCandidates(scope,_schema,section){let candidates=[],seenColumns=new Set;for(let col of scope.availableColumns){let key$1=`${col.table||``}.${col.name}`.toLowerCase();seenColumns.has(key$1)||(seenColumns.add(key$1),candidates.push({type:`column`,value:col.name,displayText:col.name,detail:col.table?`${col.table}.${col.type||`unknown`}`:col.type||void 0,insertText:getInsertText(`column`,col.name,section),source:`context`}))}return candidates}function generateColumnCandidatesForTable(tablePrefix,scope,schema){let columns=getColumnsForTable(scope,tablePrefix);if(columns.length>0)return columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:col.type?`${col.type}${col.nullable===!1?` NOT NULL`:``}`:void 0,source:`context`}));let schemaTable=findTableInSchema(tablePrefix,schema);return schemaTable?schemaTable.columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:`${col.type}${col.nullable?``:` NOT NULL`}`,source:`schema`})):[]}function generateFromTableCandidates(scope,schema,_context){let candidates=[];return candidates.push(...generateTableCandidates(scope,schema)),candidates.push(...generateFromClauseTransitionCandidates()),candidates}function generateFromClauseTransitionCandidates(){return[`WHERE`,`JOIN`,`LEFT JOIN`,`RIGHT JOIN`,`INNER JOIN`,`FULL JOIN`,`CROSS JOIN`,`ON`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateTableCandidates(scope,schema,section){let candidates=[],seenTables=new Set;for(let cte of scope.ctes){let key$1=cte.name.toLowerCase();seenTables.has(key$1)||(seenTables.add(key$1),candidates.push({type:`cte`,value:cte.name,displayText:cte.name,detail:`CTE`,insertText:getInsertText(`cte`,cte.name,section),source:`context`}))}for(let table$1 of schema.tables){let isDefault=table$1.schema===schema.defaultSchema,qualifiedName=`${table$1.schema}.${table$1.name}`,displayName=isDefault?table$1.name:qualifiedName,key$1=qualifiedName.toLowerCase();if(seenTables.has(key$1))continue;seenTables.add(key$1);let type=table$1.type===`view`?`view`:`table`;candidates.push({type,value:displayName,displayText:displayName,detail:isDefault?void 0:table$1.schema,insertText:getInsertText(type,displayName,section),source:`schema`})}return candidates}function generateExpressionCandidates(context,scope,schema){let candidates=[];return context.isTypingOperator&&context.partialOperator?generateOperatorCompletions(context.partialOperator):context.isAfterNot?generateNotFollowKeywords():context.isAfterCompletedExpression?(candidates.push(...generateLogicalConnectorCandidates()),candidates.push(...generateWhereClauseTransitionCandidates()),(context.statementType===`UPDATE`||context.statementType===`DELETE`)&&candidates.push(createCandidate(`keyword`,`RETURNING`,`keyword`)),candidates):context.isAfterCompletedIdentifier?(candidates.push(...generateComparisonOperatorCandidates()),candidates.push(...generateExpressionKeywordCandidates()),candidates.push(...generateWhereClauseTransitionCandidates()),(context.statementType===`UPDATE`||context.statementType===`DELETE`)&&candidates.push(createCandidate(`keyword`,`RETURNING`,`keyword`)),candidates):(candidates.push(...generateColumnCandidates(scope,schema,context.section)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateExpressionKeywordCandidates()),candidates.push(...generateTableCandidates(scope,schema,context.section)),candidates)}function generateNotFollowKeywords(){return[`IN`,`LIKE`,`ILIKE`,`BETWEEN`,`SIMILAR TO`,`EXISTS`,`NULL`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateComparisonOperatorCandidates(){return[`=`,`<>`,`!=`,`<`,`>`,`<=`,`>=`].map(op=>({type:`operator`,value:op,displayText:op,insertText:op+` `,source:`keyword`}))}function generateOperatorCompletions(partial){return({"<":[`<=`,`<>`,`<`],">":[`>=`,`>`],"!":[`!=`]}[partial]||[partial]).map(op=>({type:`operator`,value:op,displayText:op,insertText:op.slice(partial.length)+` `,source:`keyword`}))}function generateWhereClauseTransitionCandidates(){return[`ORDER BY`,`GROUP BY`,`HAVING`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateLogicalConnectorCandidates(){return[`AND`,`OR`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateUpdateTableCandidates(context,scope,schema){return context.isAfterCompletedIdentifier||context.isAfterCompletedExpression?[createCandidate(`keyword`,`SET`,`keyword`)]:generateTableCandidates(scope,schema)}function generateDeleteTableCandidates(context,scope,schema){return context.isAfterCompletedIdentifier||context.isAfterCompletedExpression?[`USING`,`WHERE`,`RETURNING`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):generateTableCandidates(scope,schema)}function generateUpdateSetCandidates(context,scope,schema){return context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?[`WHERE`,`FROM`,`RETURNING`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):[...generateColumnCandidates(scope,schema),...generateFunctionCandidates(schema),...generateSystemFunctionCandidates(schema.pgVersion)]}function generateReturningCandidates(scope,schema){return[...generateColumnCandidates(scope,schema),...generateFunctionCandidates(schema),...generateSystemFunctionCandidates(schema.pgVersion),...generateTableCandidates(scope,schema)]}function generateOrderByCandidates(context,scope,schema){let candidates=[];return context.isAfterOrderByModifier?(candidates.push(createCandidate(`keyword`,`NULLS FIRST`,`keyword`)),candidates.push(createCandidate(`keyword`,`NULLS LAST`,`keyword`)),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates):context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?(candidates.push(...generateOrderByModifierCandidates()),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates):(candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateOrderByModifierCandidates()),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates)}function generateGroupByCandidates(context,scope,schema){let candidates=[];return context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?[`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`WINDOW`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):(candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateGroupByKeywordCandidates()),candidates.push(...[`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`WINDOW`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates)}function generateSelectKeywordCandidates(){return[`DISTINCT`,`ALL`,`AS`,`CASE`,`WHEN`,`THEN`,`ELSE`,`END`,`CAST`,`NULL`,`TRUE`,`FALSE`,`AND`,`OR`,`NOT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateSelectClauseTransitionCandidates(){return[`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`,`WINDOW`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateExpressionKeywordCandidates(){return getExpressionKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateOrderByModifierCandidates(){return getOrderByModifiers().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateGroupByKeywordCandidates(){return getGroupByKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateFunctionCandidates(schema){return schema.functions.filter(fn=>fn.kind===void 0||fn.kind===`function`).map(fn=>{let detail=fn.signature?`(${fn.signature})`:`()`;return createCandidate(`function`,fn.name,`schema`,detail)})}function generateProcedureCandidates(schema){return schema.functions.filter(fn=>fn.kind===`procedure`).map(fn=>{let detail=fn.signature?`(${fn.signature})`:`()`;return createCandidate(`procedure`,fn.name,`schema`,detail)})}function generateSystemFunctionCandidates(pgVersion=14){return PG_SYSTEM_FUNCTIONS.filter(fn=>!(fn.minVersion&&pgVersion<fn.minVersion)).map(fn=>{let sig=fn.signatures[0],detail=sig?`(${sig.args||``}) → ${sig.returnType}`:`()`;return createCandidate(`function`,fn.name,`system`,detail)})}function generateCreateObjectCandidates(){return`TABLE.TEMP TABLE.UNLOGGED TABLE.TABLE IF NOT EXISTS.INDEX.UNIQUE INDEX.INDEX CONCURRENTLY.VIEW.OR REPLACE VIEW.MATERIALIZED VIEW.FUNCTION.OR REPLACE FUNCTION.PROCEDURE.OR REPLACE PROCEDURE.TRIGGER.SCHEMA.DATABASE.SEQUENCE.TYPE.DOMAIN.EXTENSION.EXTENSION IF NOT EXISTS.ROLE.USER.POLICY.PUBLICATION.SUBSCRIPTION`.split(`.`).map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateCreateTableColumnsCandidates(){return[`CONSTRAINT`,`PRIMARY KEY`,`UNIQUE`,`FOREIGN KEY`,`CHECK`,`EXCLUDE`,`LIKE`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateColumnTypeCandidates(section){return`INTEGER.INT.BIGINT.SMALLINT.SERIAL.BIGSERIAL.VARCHAR.TEXT.CHAR.BOOLEAN.BOOL.TIMESTAMP.TIMESTAMPTZ.DATE.TIME.INTERVAL.NUMERIC.DECIMAL.REAL.DOUBLE PRECISION.UUID.JSON.JSONB.BYTEA.MONEY.XML.INET.CIDR.MACADDR.POINT.LINE.BOX.CIRCLE.POLYGON.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.TSTZRANGE.DATERANGE.TSVECTOR.TSQUERY`.split(`.`).map(name$2=>createCandidate(`keyword`,name$2,`keyword`,void 0,section))}function generateColumnConstraintCandidates(){return[`NOT NULL`,`NULL`,`DEFAULT`,`PRIMARY KEY`,`UNIQUE`,`REFERENCES`,`CHECK`,`CONSTRAINT`,`COLLATE`,`GENERATED ALWAYS AS`,`GENERATED BY DEFAULT AS IDENTITY`,`GENERATED ALWAYS AS IDENTITY`,`DEFERRABLE`,`NOT DEFERRABLE`,`INITIALLY DEFERRED`,`INITIALLY IMMEDIATE`].map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateCreateTableOptionsCandidates(){return[`INHERITS`,`PARTITION BY`,`PARTITION BY RANGE`,`PARTITION BY LIST`,`PARTITION BY HASH`,`USING`,`WITH`,`WITHOUT OIDS`,`TABLESPACE`,`ON COMMIT DELETE ROWS`,`ON COMMIT PRESERVE ROWS`,`ON COMMIT DROP`].map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateDefaultCandidates(scope,schema){let candidates=[];return candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...getAllKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates.push(...generateTableCandidates(scope,schema)),candidates}var MATCH_TIER={exact:4e4,prefix:3e4,contains:2e4,fuzzy:1e4,none:0},DEFAULT_TYPE_PRIORITY=[`column`,`cte`,`table`,`view`,`function`,`keyword`,`alias`,`schema`,`operator`],STATEMENT_KEYWORD_PRIORITY={SELECT:100,WITH:90,INSERT:80,UPDATE:70,DELETE:60,CREATE:50,ALTER:40,DROP:30,TRUNCATE:20},CREATE_OBJECT_PRIORITY={TABLE:100,"TABLE IF NOT EXISTS":95,"TEMP TABLE":90,"UNLOGGED TABLE":85,INDEX:80,"UNIQUE INDEX":78,"INDEX CONCURRENTLY":76,VIEW:70,"OR REPLACE VIEW":68,"MATERIALIZED VIEW":66,FUNCTION:60,"OR REPLACE FUNCTION":58,PROCEDURE:55,"OR REPLACE PROCEDURE":53,TRIGGER:50,SCHEMA:45,DATABASE:43,SEQUENCE:40,TYPE:35,DOMAIN:33,EXTENSION:30,"EXTENSION IF NOT EXISTS":28,ROLE:25,USER:23,POLICY:20,PUBLICATION:15,SUBSCRIPTION:10},CONTEXT_WEIGHTS={typeBonus:50,selectedTableBonus:200,defaultSchemaBonus:100},SOURCE_PRIORITY={context:100,schema:80,system:60,function:40,keyword:20},COMMON_FUNCTION_BOOST={coalesce:200,nullif:150,greatest:120,least:120,count:200,sum:200,avg:180,min:180,max:180,array_agg:150,string_agg:150,json_agg:140,jsonb_agg:140,concat:180,lower:170,upper:170,trim:160,length:160,substring:150,replace:150,split_part:140,left:130,right:130,regexp_replace:120,now:200,current_timestamp:180,current_date:170,date_trunc:160,extract:160,age:140,to_char:150,to_date:140,to_timestamp:140,row_number:170,rank:160,dense_rank:150,lag:150,lead:150,first_value:130,last_value:130,jsonb_build_object:160,json_build_object:150,to_jsonb:140,to_json:130,jsonb_extract_path_text:130,cast:180,generate_series:160,pg_sleep:120,exists:150},SECTION_BONUSES={SELECT_COLUMNS:{column:300,function:250},FROM_TABLE:{cte:350,table:300,view:300},JOIN_TABLE:{cte:350,table:300,view:300},INSERT_TABLE:{cte:350,table:300,view:300},UPDATE_TABLE:{cte:350,table:300,view:300},DELETE_TABLE:{cte:350,table:300,view:300},WHERE_CONDITION:{column:300,function:200,keyword:100},JOIN_CONDITION:{column:300,function:200,keyword:100},HAVING:{column:300,function:250,keyword:100},GROUP_BY:{column:300,function:150},ORDER_BY:{column:300,function:150},UPDATE_SET:{column:300}},CONTEXT_BOOSTED_KEYWORDS={ORDER_BY:new Set([`ASC`,`DESC`,`NULLS FIRST`,`NULLS LAST`,`LIMIT`]),GROUP_BY:new Set([`ROLLUP`,`CUBE`,`GROUPING SETS`,`HAVING`]),SELECT_COLUMNS:new Set([`DISTINCT`,`ALL`,`AS`,`CASE`]),WHERE_CONDITION:new Set([`AND`,`OR`,`NOT`,`IN`,`EXISTS`,`BETWEEN`,`LIKE`,`IS NULL`,`IS NOT NULL`]),JOIN_CONDITION:new Set([`AND`,`OR`])},CLAUSE_TRANSITION_KEYWORDS=new Set([`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`,`WINDOW`,`FOR UPDATE`,`FOR SHARE`]);function rankCandidates(candidates,context,partialMatch,schema,config$1){let effectiveConfig={recencyBoost:config$1?.recencyBoost??!1,typePreference:config$1?.typePreference??DEFAULT_TYPE_PRIORITY,boostSelectedTable:config$1?.boostSelectedTable??!0},rankedCandidates=candidates.map(candidate=>{let matchType=computeMatchType(candidate.value,partialMatch),score$1=computeScore(candidate,matchType,partialMatch,context,schema,effectiveConfig);return{...candidate,score:score$1,matchType}});return(partialMatch?rankedCandidates.filter(c=>c.matchType!==`none`):rankedCandidates).sort((a$1,b$2)=>b$2.score===a$1.score?a$1.value.localeCompare(b$2.value):b$2.score-a$1.score)}function computeMatchType(value,partial){if(!partial)return`none`;let valueLower=value.toLowerCase(),partialLower=partial.toLowerCase();return valueLower===partialLower?`exact`:valueLower.startsWith(partialLower)?`prefix`:valueLower.includes(partialLower)?`contains`:fuzzyMatch(valueLower,partialLower)?`fuzzy`:`none`}function fuzzyMatch(value,pattern){let patternIdx=0;for(let i$3=0;i$3<value.length&&patternIdx<pattern.length;i$3++)value[i$3]===pattern[patternIdx]&&patternIdx++;return patternIdx===pattern.length}function isMatch(value,partial){return computeMatchType(value,partial)!==`none`}function computeScore(candidate,matchType,_partialMatch,context,schema,config$1){return MATCH_TIER[matchType]+computeContextScore(candidate,context,schema,config$1)}function computeContextScore(candidate,context,schema,config$1){let score$1=0,typeIndex=config$1.typePreference.indexOf(candidate.type);if(typeIndex!==-1&&(score$1+=(config$1.typePreference.length-typeIndex)*CONTEXT_WEIGHTS.typeBonus),config$1.boostSelectedTable&&candidate.type===`column`&&schema.selectedTable){let detail=candidate.detail||``,selectedTableName=schema.selectedTable.name.toLowerCase();detail.toLowerCase().startsWith(selectedTableName+`.`)&&(score$1+=CONTEXT_WEIGHTS.selectedTableBonus)}(candidate.type===`table`||candidate.type===`view`)&&schema.defaultSchema&&(candidate.value.includes(`.`)||(score$1+=CONTEXT_WEIGHTS.defaultSchemaBonus));let sourcePriority=SOURCE_PRIORITY[candidate.source]||0;if(score$1+=sourcePriority,candidate.source===`system`&&candidate.type===`function`){let commonBoost=COMMON_FUNCTION_BOOST[candidate.value.toLowerCase()]||0;score$1+=commonBoost}return score$1+=getSectionBonus(candidate,context),score$1}function getSectionBonus(candidate,context){let{section,isAfterCompletedIdentifier}=context;if(section===`STATEMENT_START`)return candidate.type===`keyword`?300+(STATEMENT_KEYWORD_PRIORITY[candidate.value.toUpperCase()]||0):0;if(section===`CREATE_OBJECT`)return candidate.type===`keyword`?300+(CREATE_OBJECT_PRIORITY[candidate.value.toUpperCase()]||0):0;if(candidate.type===`operator`&&isAfterCompletedIdentifier&&(section===`WHERE_CONDITION`||section===`JOIN_CONDITION`||section===`HAVING`))return 600;if(candidate.type===`keyword`)return getKeywordBonus(candidate.value,context);let sectionBonuses=SECTION_BONUSES[section];if(sectionBonuses){let bonus=sectionBonuses[candidate.type]??0;return isAfterCompletedIdentifier&&(candidate.type===`column`||candidate.type===`table`||candidate.type===`view`||candidate.type===`cte`)&&(bonus=Math.min(bonus,100)),bonus}return 0}var EXPRESSION_OPERATOR_KEYWORDS=new Set([`IN`,`NOT IN`,`EXISTS`,`NOT EXISTS`,`BETWEEN`,`NOT BETWEEN`,`BETWEEN SYMMETRIC`,`LIKE`,`NOT LIKE`,`ILIKE`,`NOT ILIKE`,`SIMILAR TO`,`NOT SIMILAR TO`,`IS NULL`,`IS NOT NULL`,`IS TRUE`,`IS NOT TRUE`,`IS FALSE`,`IS NOT FALSE`,`IS UNKNOWN`,`IS NOT UNKNOWN`,`IS DISTINCT FROM`,`IS NOT DISTINCT FROM`]),LOGICAL_CONNECTOR_KEYWORDS=new Set([`AND`,`OR`]);function getKeywordBonus(keyword$1,context){let keywordUpper=keyword$1.toUpperCase(),{section,isAfterCompletedIdentifier,isAfterCompletedExpression}=context;if(section===`WHERE_CONDITION`||section===`JOIN_CONDITION`||section===`HAVING`){if(isAfterCompletedExpression)return LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper)?500:CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper)?400:100;if(isAfterCompletedIdentifier){if(EXPRESSION_OPERATOR_KEYWORDS.has(keywordUpper))return 450;if(LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper))return 350;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper))return 250}if(EXPRESSION_OPERATOR_KEYWORDS.has(keywordUpper))return 400;if(LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper))return 300;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper))return 100}if(CONTEXT_BOOSTED_KEYWORDS[section]?.has(keywordUpper))return 200;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper)){if(isAfterCompletedIdentifier)switch(section){case`SELECT_COLUMNS`:return keywordUpper===`FROM`?400:keywordUpper===`WHERE`?350:300;case`FROM_TABLE`:return keywordUpper===`WHERE`?400:keywordUpper===`ORDER BY`||keywordUpper===`GROUP BY`?350:300;default:return 300}switch(section){case`SELECT_COLUMNS`:return 50;case`ORDER_BY`:return keywordUpper===`LIMIT`||keywordUpper===`OFFSET`?150:30;case`GROUP_BY`:return keywordUpper===`HAVING`?180:30;case`WHERE_CONDITION`:case`HAVING`:return[`ORDER BY`,`GROUP BY`,`LIMIT`].includes(keywordUpper)?100:30;default:return 50}}return 80}function deduplicateCandidates(candidates){let seen$1=new Map;for(let candidate of candidates){let key$1=candidate.value.toLowerCase(),existing=seen$1.get(key$1);(!existing||candidate.score>existing.score)&&seen$1.set(key$1,candidate)}return Array.from(seen$1.values())}var DEFAULT_OPTIONS={rankingConfig:{},measureTiming:!1};function runAutocompletePipeline(input,options$1){let opts={...DEFAULT_OPTIONS,...options$1},timing=opts.measureTiming?{tokenize:0,parse:0,detectSection:0,analyzeScope:0,generateCandidates:0,rank:0,total:0}:void 0,totalStart=opts.measureTiming?performance.now():0,tokenizeStart=opts.measureTiming?performance.now():0,tokenized=tokenize$2(input.sql,input.cursorPosition,{parser:opts.parser});if(timing&&(timing.tokenize=performance.now()-tokenizeStart),isInsideStringOrComment(tokenized,input.cursorPosition,input.sql))return{suggestions:[],context:{section:`UNKNOWN`,statementType:`UNKNOWN`,isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedIdentifier:!1,isAfterCompletedExpression:!1,isTypingOperator:!1,partialOperator:null,isAfterNot:!1,isAfterOrderByModifier:!1,partialToken:null,tablePrefix:null,depth:0,parentContext:null,containingNode:null},timing};let parseStart=opts.measureTiming?performance.now():0,tree=parseFromTokens(tokenized,input.sql);timing&&(timing.parse=performance.now()-parseStart);let detectStart=opts.measureTiming?performance.now():0,context=detectSection(tokenized,tree,input.cursorPosition,input.sql);timing&&(timing.detectSection=performance.now()-detectStart);let scopeStart=opts.measureTiming?performance.now():0,scope=analyzeScope(context,tokenized,tree,input.sql,input.schema,{parser:opts.parser});timing&&(timing.analyzeScope=performance.now()-scopeStart);let generateStart=opts.measureTiming?performance.now():0,candidates=generateCandidates(context,scope,input.schema),partial=getPartialToken(tokenized)||context.partialToken;partial&&(candidates=candidates.filter(c=>isMatch(c.value,partial))),timing&&(timing.generateCandidates=performance.now()-generateStart);let rankStart=opts.measureTiming?performance.now():0,ranked=rankCandidates(candidates,context,partial,input.schema,opts.rankingConfig);return ranked=deduplicateCandidates(ranked),timing&&(timing.rank=performance.now()-rankStart),timing&&(timing.total=performance.now()-totalStart),{suggestions:ranked,context,timing}}function autocomplete(sql,cursorPosition,schema){return runAutocompletePipeline({sql,cursorPosition,schema})}var DDL_KINDS=new Set([`create_table`,`alter_table`,`drop`,`create_view`,`create_index`,`create_function`,`truncate`]);function isDDLStatement(kind){return DDL_KINDS.has(kind)}var decorationCache=new Map;function getDecoration(className){let decoration=decorationCache.get(className);return decoration||(decoration=Decoration.mark({class:className}),decorationCache.set(className,decoration)),decoration}function buildDecorations(view){if(!isModuleLoaded())return Decoration.none;let tokens=tokenize(view.state.doc.toString());if(tokens.length===0)return Decoration.none;let builder=new RangeSetBuilder;for(let token$1 of tokens)token$1.from<token$1.to&&builder.add(token$1.from,token$1.to,getDecoration(token$1.class));return builder.finish()}var pgHighlightPlugin=ViewPlugin.fromClass(class{constructor(view){this.needsRebuild=!1,this.decorations=buildDecorations(view),isModuleLoaded()||ensureModuleLoaded().then(()=>{this.needsRebuild=!0,view.dispatch({})})}update(update$1){(update$1.docChanged||this.needsRebuild)&&(this.decorations=buildDecorations(update$1.view),this.needsRebuild=!1)}},{decorations:v$1=>v$1.decorations});function pgHighlight(){return pgHighlightPlugin}var DefaultBufferLength=1024,nextPropID=0,Range=class{constructor(from,to){this.from=from,this.to=to}},NodeProp=class{constructor(config$1={}){this.id=nextPropID++,this.perNode=!!config$1.perNode,this.deserialize=config$1.deserialize||(()=>{throw Error(`This node type doesn't define a deserialize function`)}),this.combine=config$1.combine||null}add(match){if(this.perNode)throw RangeError(`Can't add per-node props to node types`);return typeof match!=`function`&&(match=NodeType.match(match)),type=>{let result=match(type);return result===void 0?null:[this,result]}}};NodeProp.closedBy=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.openedBy=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.group=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.isolate=new NodeProp({deserialize:value=>{if(value&&value!=`rtl`&&value!=`ltr`&&value!=`auto`)throw RangeError(`Invalid value for isolate: `+value);return value||`auto`}}),NodeProp.contextHash=new NodeProp({perNode:!0}),NodeProp.lookAhead=new NodeProp({perNode:!0}),NodeProp.mounted=new NodeProp({perNode:!0});var MountedTree=class{constructor(tree,overlay,parser$1,bracketed=!1){this.tree=tree,this.overlay=overlay,this.parser=parser$1,this.bracketed=bracketed}static get(tree){return tree&&tree.props&&tree.props[NodeProp.mounted.id]}},noProps=Object.create(null),NodeType=class NodeType{constructor(name$2,props,id,flags=0){this.name=name$2,this.props=props,this.id=id,this.flags=flags}static define(spec){let props=spec.props&&spec.props.length?Object.create(null):noProps,flags=(spec.top?1:0)|(spec.skipped?2:0)|(spec.error?4:0)|(spec.name==null?8:0),type=new NodeType(spec.name||``,props,spec.id,flags);if(spec.props){for(let src of spec.props)if(Array.isArray(src)||(src=src(type)),src){if(src[0].perNode)throw RangeError(`Can't store a per-node prop on a node type`);props[src[0].id]=src[1]}}return type}prop(prop){return this.props[prop.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(name$2){if(typeof name$2==`string`){if(this.name==name$2)return!0;let group=this.prop(NodeProp.group);return group?group.indexOf(name$2)>-1:!1}return this.id==name$2}static match(map){let direct=Object.create(null);for(let prop in map)for(let name$2 of prop.split(` `))direct[name$2]=map[prop];return node$1=>{for(let groups=node$1.prop(NodeProp.group),i$3=-1;i$3<(groups?groups.length:0);i$3++){let found=direct[i$3<0?node$1.name:groups[i$3]];if(found)return found}}}};NodeType.none=new NodeType(``,Object.create(null),0,8);var NodeSet=class NodeSet{constructor(types$1){this.types=types$1;for(let i$3=0;i$3<types$1.length;i$3++)if(types$1[i$3].id!=i$3)throw RangeError(`Node type ids should correspond to array positions when creating a node set`)}extend(...props){let newTypes=[];for(let type of this.types){let newProps=null;for(let source of props){let add$1=source(type);if(add$1){newProps||=Object.assign({},type.props);let value=add$1[1],prop=add$1[0];prop.combine&&prop.id in newProps&&(value=prop.combine(newProps[prop.id],value)),newProps[prop.id]=value}}newTypes.push(newProps?new NodeType(type.name,newProps,type.id,type.flags):type)}return new NodeSet(newTypes)}},CachedNode=new WeakMap,CachedInnerNode=new WeakMap,IterMode;(function(IterMode$1){IterMode$1[IterMode$1.ExcludeBuffers=1]=`ExcludeBuffers`,IterMode$1[IterMode$1.IncludeAnonymous=2]=`IncludeAnonymous`,IterMode$1[IterMode$1.IgnoreMounts=4]=`IgnoreMounts`,IterMode$1[IterMode$1.IgnoreOverlays=8]=`IgnoreOverlays`,IterMode$1[IterMode$1.EnterBracketed=16]=`EnterBracketed`})(IterMode||={});var Tree=class Tree{constructor(type,children,positions,length,props){if(this.type=type,this.children=children,this.positions=positions,this.length=length,this.props=null,props&&props.length){this.props=Object.create(null);for(let[prop,value]of props)this.props[typeof prop==`number`?prop:prop.id]=value}}toString(){let mounted=MountedTree.get(this);if(mounted&&!mounted.overlay)return mounted.tree.toString();let children=``;for(let ch of this.children){let str=ch.toString();str&&(children&&(children+=`,`),children+=str)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(children.length?`(`+children+`)`:``):children}cursor(mode=0){return new TreeCursor(this.topNode,mode)}cursorAt(pos,side=0,mode=0){let cursor=new TreeCursor(CachedNode.get(this)||this.topNode);return cursor.moveTo(pos,side),CachedNode.set(this,cursor._tree),cursor}get topNode(){return new TreeNode(this,0,0,null)}resolve(pos,side=0){let node$1=resolveNode(CachedNode.get(this)||this.topNode,pos,side,!1);return CachedNode.set(this,node$1),node$1}resolveInner(pos,side=0){let node$1=resolveNode(CachedInnerNode.get(this)||this.topNode,pos,side,!0);return CachedInnerNode.set(this,node$1),node$1}resolveStack(pos,side=0){return stackIterator(this,pos,side)}iterate(spec){let{enter,leave,from=0,to=this.length}=spec,mode=spec.mode||0,anon=(mode&IterMode.IncludeAnonymous)>0;for(let c=this.cursor(mode|IterMode.IncludeAnonymous);;){let entered=!1;if(c.from<=to&&c.to>=from&&(!anon&&c.type.isAnonymous||enter(c)!==!1)){if(c.firstChild())continue;entered=!0}for(;entered&&leave&&(anon||!c.type.isAnonymous)&&leave(c),!c.nextSibling();){if(!c.parent())return;entered=!0}}}prop(prop){return prop.perNode?this.props?this.props[prop.id]:void 0:this.type.prop(prop)}get propValues(){let result=[];if(this.props)for(let id in this.props)result.push([+id,this.props[id]]);return result}balance(config$1={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(children,positions,length)=>new Tree(this.type,children,positions,length,this.propValues),config$1.makeTree||((children,positions,length)=>new Tree(NodeType.none,children,positions,length)))}static build(data){return buildTree(data)}};Tree.empty=new Tree(NodeType.none,[],[],0);var FlatBufferCursor=class FlatBufferCursor{constructor(buffer,index$4){this.buffer=buffer,this.index=index$4}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}},TreeBuffer=class TreeBuffer{constructor(buffer,length,set){this.buffer=buffer,this.length=length,this.set=set}get type(){return NodeType.none}toString(){let result=[];for(let index$4=0;index$4<this.buffer.length;)result.push(this.childString(index$4)),index$4=this.buffer[index$4+3];return result.join(`,`)}childString(index$4){let id=this.buffer[index$4],endIndex=this.buffer[index$4+3],type=this.set.types[id],result=type.name;if(/\W/.test(result)&&!type.isError&&(result=JSON.stringify(result)),index$4+=4,endIndex==index$4)return result;let children=[];for(;index$4<endIndex;)children.push(this.childString(index$4)),index$4=this.buffer[index$4+3];return result+`(`+children.join(`,`)+`)`}findChild(startIndex,endIndex,dir,pos,side){let{buffer}=this,pick=-1;for(let i$3=startIndex;i$3!=endIndex&&!(checkSide(side,pos,buffer[i$3+1],buffer[i$3+2])&&(pick=i$3,dir>0));i$3=buffer[i$3+3]);return pick}slice(startI,endI,from){let b$2=this.buffer,copy=new Uint16Array(endI-startI),len=0;for(let i$3=startI,j$1=0;i$3<endI;){copy[j$1++]=b$2[i$3++],copy[j$1++]=b$2[i$3++]-from;let to=copy[j$1++]=b$2[i$3++]-from;copy[j$1++]=b$2[i$3++]-startI,len=Math.max(len,to)}return new TreeBuffer(copy,len,this.set)}};function checkSide(side,pos,from,to){switch(side){case-2:return from<pos;case-1:return to>=pos&&from<pos;case 0:return from<pos&&to>pos;case 1:return from<=pos&&to>pos;case 2:return to>pos;case 4:return!0}}function resolveNode(node$1,pos,side,overlays){for(var _a$1;node$1.from==node$1.to||(side<1?node$1.from>=pos:node$1.from>pos)||(side>-1?node$1.to<=pos:node$1.to<pos);){let parent=!overlays&&node$1 instanceof TreeNode&&node$1.index<0?null:node$1.parent;if(!parent)return node$1;node$1=parent}let mode=overlays?0:IterMode.IgnoreOverlays;if(overlays)for(let scan$1=node$1,parent=scan$1.parent;parent;scan$1=parent,parent=scan$1.parent)scan$1 instanceof TreeNode&&scan$1.index<0&&parent.enter(pos,side,mode)?.from!=scan$1.from&&(node$1=parent);for(;;){let inner=node$1.enter(pos,side,mode);if(!inner)return node$1;node$1=inner}}var BaseNode=class{cursor(mode=0){return new TreeCursor(this,mode)}getChild(type,before=null,after=null){let r$4=getChildren(this,type,before,after);return r$4.length?r$4[0]:null}getChildren(type,before=null,after=null){return getChildren(this,type,before,after)}resolve(pos,side=0){return resolveNode(this,pos,side,!1)}resolveInner(pos,side=0){return resolveNode(this,pos,side,!0)}matchContext(context){return matchNodeContext(this.parent,context)}enterUnfinishedNodesBefore(pos){let scan$1=this.childBefore(pos),node$1=this;for(;scan$1;){let last=scan$1.lastChild;if(!last||last.to!=scan$1.to)break;last.type.isError&&last.from==last.to?(node$1=scan$1,scan$1=last.prevSibling):scan$1=last}return node$1}get node(){return this}get next(){return this.parent}},TreeNode=class TreeNode extends BaseNode{constructor(_tree,from,index$4,_parent){super(),this._tree=_tree,this.from=from,this.index=index$4,this._parent=_parent}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(i$3,dir,pos,side,mode=0){for(let parent=this;;){for(let{children,positions}=parent._tree,e=dir>0?children.length:-1;i$3!=e;i$3+=dir){let next=children[i$3],start=positions[i$3]+parent.from,mounted;if(!(!(mode&IterMode.EnterBracketed&&next instanceof Tree&&(mounted=MountedTree.get(next))&&!mounted.overlay&&mounted.bracketed&&pos>=start&&pos<=start+next.length)&&!checkSide(side,pos,start,start+next.length))){if(next instanceof TreeBuffer){if(mode&IterMode.ExcludeBuffers)continue;let index$4=next.findChild(0,next.buffer.length,dir,pos-start,side);if(index$4>-1)return new BufferNode(new BufferContext(parent,next,i$3,start),null,index$4)}else if(mode&IterMode.IncludeAnonymous||!next.type.isAnonymous||hasChild(next)){let mounted$1;if(!(mode&IterMode.IgnoreMounts)&&(mounted$1=MountedTree.get(next))&&!mounted$1.overlay)return new TreeNode(mounted$1.tree,start,i$3,parent);let inner=new TreeNode(next,start,i$3,parent);return mode&IterMode.IncludeAnonymous||!inner.type.isAnonymous?inner:inner.nextChild(dir<0?next.children.length-1:0,dir,pos,side,mode)}}}if(mode&IterMode.IncludeAnonymous||!parent.type.isAnonymous||(i$3=parent.index>=0?parent.index+dir:dir<0?-1:parent._parent._tree.children.length,parent=parent._parent,!parent))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(pos){return this.nextChild(0,1,pos,2)}childBefore(pos){return this.nextChild(this._tree.children.length-1,-1,pos,-2)}prop(prop){return this._tree.prop(prop)}enter(pos,side,mode=0){let mounted;if(!(mode&IterMode.IgnoreOverlays)&&(mounted=MountedTree.get(this._tree))&&mounted.overlay){let rPos=pos-this.from,enterBracketed=mode&IterMode.EnterBracketed&&mounted.bracketed;for(let{from,to}of mounted.overlay)if((side>0||enterBracketed?from<=rPos:from<rPos)&&(side<0||enterBracketed?to>=rPos:to>rPos))return new TreeNode(mounted.tree,mounted.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,pos,side,mode)}nextSignificantParent(){let val=this;for(;val.type.isAnonymous&&val._parent;)val=val._parent;return val}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function getChildren(node$1,type,before,after){let cur$1=node$1.cursor(),result=[];if(!cur$1.firstChild())return result;if(before!=null){for(let found=!1;!found;)if(found=cur$1.type.is(before),!cur$1.nextSibling())return result}for(;;){if(after!=null&&cur$1.type.is(after))return result;if(cur$1.type.is(type)&&result.push(cur$1.node),!cur$1.nextSibling())return after==null?result:[]}}function matchNodeContext(node$1,context,i$3=context.length-1){for(let p$1=node$1;i$3>=0;p$1=p$1.parent){if(!p$1)return!1;if(!p$1.type.isAnonymous){if(context[i$3]&&context[i$3]!=p$1.name)return!1;i$3--}}return!0}var BufferContext=class{constructor(parent,buffer,index$4,start){this.parent=parent,this.buffer=buffer,this.index=index$4,this.start=start}},BufferNode=class BufferNode extends BaseNode{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(context,_parent,index$4){super(),this.context=context,this._parent=_parent,this.index=index$4,this.type=context.buffer.set.types[context.buffer.buffer[index$4]]}child(dir,pos,side){let{buffer}=this.context,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.context.start,side);return index$4<0?null:new BufferNode(this.context,this,index$4)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(pos){return this.child(1,pos,2)}childBefore(pos){return this.child(-1,pos,-2)}prop(prop){return this.type.prop(prop)}enter(pos,side,mode=0){if(mode&IterMode.ExcludeBuffers)return null;let{buffer}=this.context,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],side>0?1:-1,pos-this.context.start,side);return index$4<0?null:new BufferNode(this.context,this,index$4)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(dir){return this._parent?null:this.context.parent.nextChild(this.context.index+dir,dir,0,4)}get nextSibling(){let{buffer}=this.context,after=buffer.buffer[this.index+3];return after<(this._parent?buffer.buffer[this._parent.index+3]:buffer.buffer.length)?new BufferNode(this.context,this._parent,after):this.externalSibling(1)}get prevSibling(){let{buffer}=this.context,parentStart=this._parent?this._parent.index+4:0;return this.index==parentStart?this.externalSibling(-1):new BufferNode(this.context,this._parent,buffer.findChild(parentStart,this.index,-1,0,4))}get tree(){return null}toTree(){let children=[],positions=[],{buffer}=this.context,startI=this.index+4,endI=buffer.buffer[this.index+3];if(endI>startI){let from=buffer.buffer[this.index+1];children.push(buffer.slice(startI,endI,from)),positions.push(0)}return new Tree(this.type,children,positions,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function iterStack(heads){if(!heads.length)return null;let pick=0,picked=heads[0];for(let i$3=1;i$3<heads.length;i$3++){let node$1=heads[i$3];(node$1.from>picked.from||node$1.to<picked.to)&&(picked=node$1,pick=i$3)}let next=picked instanceof TreeNode&&picked.index<0?null:picked.parent,newHeads=heads.slice();return next?newHeads[pick]=next:newHeads.splice(pick,1),new StackIterator(newHeads,picked)}var StackIterator=class{constructor(heads,node$1){this.heads=heads,this.node=node$1}get next(){return iterStack(this.heads)}};function stackIterator(tree,pos,side){let inner=tree.resolveInner(pos,side),layers=null;for(let scan$1=inner instanceof TreeNode?inner:inner.context.parent;scan$1;scan$1=scan$1.parent)if(scan$1.index<0){let parent=scan$1.parent;(layers||=[inner]).push(parent.resolve(pos,side)),scan$1=parent}else{let mount=MountedTree.get(scan$1.tree);if(mount&&mount.overlay&&mount.overlay[0].from<=pos&&mount.overlay[mount.overlay.length-1].to>=pos){let root$4=new TreeNode(mount.tree,mount.overlay[0].from+scan$1.from,-1,scan$1);(layers||=[inner]).push(resolveNode(root$4,pos,side,!1))}}return layers?iterStack(layers):inner}var TreeCursor=class{get name(){return this.type.name}constructor(node$1,mode=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=mode&~IterMode.EnterBracketed,node$1 instanceof TreeNode)this.yieldNode(node$1);else{this._tree=node$1.context.parent,this.buffer=node$1.context;for(let n=node$1._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=node$1,this.yieldBuf(node$1.index)}}yieldNode(node$1){return node$1?(this._tree=node$1,this.type=node$1.type,this.from=node$1.from,this.to=node$1.to,!0):!1}yieldBuf(index$4,type){this.index=index$4;let{start,buffer}=this.buffer;return this.type=type||buffer.set.types[buffer.buffer[index$4]],this.from=start+buffer.buffer[index$4+1],this.to=start+buffer.buffer[index$4+2],!0}yield(node$1){return node$1?node$1 instanceof TreeNode?(this.buffer=null,this.yieldNode(node$1)):(this.buffer=node$1.context,this.yieldBuf(node$1.index,node$1.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(dir,pos,side){if(!this.buffer)return this.yield(this._tree.nextChild(dir<0?this._tree._tree.children.length-1:0,dir,pos,side,this.mode));let{buffer}=this.buffer,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.buffer.start,side);return index$4<0?!1:(this.stack.push(this.index),this.yieldBuf(index$4))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(pos){return this.enterChild(1,pos,2)}childBefore(pos){return this.enterChild(-1,pos,-2)}enter(pos,side,mode=this.mode){return this.buffer?mode&IterMode.ExcludeBuffers?!1:this.enterChild(1,pos,side):this.yield(this._tree.enter(pos,side,mode))}parent(){if(!this.buffer)return this.yieldNode(this.mode&IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let parent=this.mode&IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(parent)}sibling(dir){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+dir,dir,0,4,this.mode)):!1;let{buffer}=this.buffer,d$1=this.stack.length-1;if(dir<0){let parentStart=d$1<0?0:this.stack[d$1]+4;if(this.index!=parentStart)return this.yieldBuf(buffer.findChild(parentStart,this.index,-1,0,4))}else{let after=buffer.buffer[this.index+3];if(after<(d$1<0?buffer.buffer.length:buffer.buffer[this.stack[d$1]+3]))return this.yieldBuf(after)}return d$1<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+dir,dir,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(dir){let index$4,parent,{buffer}=this;if(buffer){if(dir>0){if(this.index<buffer.buffer.buffer.length)return!1}else for(let i$3=0;i$3<this.index;i$3++)if(buffer.buffer.buffer[i$3+3]<this.index)return!1;({index:index$4,parent}=buffer)}else ({index:index$4,_parent:parent}=this._tree);for(;parent;{index:index$4,_parent:parent}=parent)if(index$4>-1)for(let i$3=index$4+dir,e=dir<0?-1:parent._tree.children.length;i$3!=e;i$3+=dir){let child=parent._tree.children[i$3];if(this.mode&IterMode.IncludeAnonymous||child instanceof TreeBuffer||!child.type.isAnonymous||hasChild(child))return!1}return!0}move(dir,enter){if(enter&&this.enterChild(dir,0,4))return!0;for(;;){if(this.sibling(dir))return!0;if(this.atLastNode(dir)||!this.parent())return!1}}next(enter=!0){return this.move(1,enter)}prev(enter=!0){return this.move(-1,enter)}moveTo(pos,side=0){for(;(this.from==this.to||(side<1?this.from>=pos:this.from>pos)||(side>-1?this.to<=pos:this.to<pos))&&this.parent(););for(;this.enterChild(1,pos,side););return this}get node(){if(!this.buffer)return this._tree;let cache=this.bufferNode,result=null,depth=0;if(cache&&cache.context==this.buffer)scan:for(let index$4=this.index,d$1=this.stack.length;d$1>=0;){for(let c=cache;c;c=c._parent)if(c.index==index$4){if(index$4==this.index)return c;result=c,depth=d$1+1;break scan}index$4=this.stack[--d$1]}for(let i$3=depth;i$3<this.stack.length;i$3++)result=new BufferNode(this.buffer,result,this.stack[i$3]);return this.bufferNode=new BufferNode(this.buffer,result,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(enter,leave){for(let depth=0;;){let mustLeave=!1;if(this.type.isAnonymous||enter(this)!==!1){if(this.firstChild()){depth++;continue}this.type.isAnonymous||(mustLeave=!0)}for(;;){if(mustLeave&&leave&&leave(this),mustLeave=this.type.isAnonymous,!depth)return;if(this.nextSibling())break;this.parent(),depth--,mustLeave=!0}}}matchContext(context){if(!this.buffer)return matchNodeContext(this.node.parent,context);let{buffer}=this.buffer,{types:types$1}=buffer.set;for(let i$3=context.length-1,d$1=this.stack.length-1;i$3>=0;d$1--){if(d$1<0)return matchNodeContext(this._tree,context,i$3);let type=types$1[buffer.buffer[this.stack[d$1]]];if(!type.isAnonymous){if(context[i$3]&&context[i$3]!=type.name)return!1;i$3--}}return!0}};function hasChild(tree){return tree.children.some(ch=>ch instanceof TreeBuffer||!ch.type.isAnonymous||hasChild(ch))}function buildTree(data){var _a$1;let{buffer,nodeSet,maxBufferLength=DefaultBufferLength,reused=[],minRepeatType=nodeSet.types.length}=data,cursor=Array.isArray(buffer)?new FlatBufferCursor(buffer,buffer.length):buffer,types$1=nodeSet.types,contextHash=0,lookAhead=0;function takeNode(parentStart,minPos,children$1,positions$1,inRepeat,depth){let{id,start,end,size:size$3}=cursor,lookAheadAtStart=lookAhead,contextAtStart=contextHash;if(size$3<0)if(cursor.next(),size$3==-1){let node$2=reused[id];children$1.push(node$2),positions$1.push(start-parentStart);return}else if(size$3==-3){contextHash=id;return}else if(size$3==-4){lookAhead=id;return}else throw RangeError(`Unrecognized record size: ${size$3}`);let type=types$1[id],node$1,buffer$1,startPos=start-parentStart;if(end-start<=maxBufferLength&&(buffer$1=findBufferSize(cursor.pos-minPos,inRepeat))){let data$1=new Uint16Array(buffer$1.size-buffer$1.skip),endPos=cursor.pos-buffer$1.size,index$4=data$1.length;for(;cursor.pos>endPos;)index$4=copyToBuffer(buffer$1.start,data$1,index$4);node$1=new TreeBuffer(data$1,end-buffer$1.start,nodeSet),startPos=buffer$1.start-parentStart}else{let endPos=cursor.pos-size$3;cursor.next();let localChildren=[],localPositions=[],localInRepeat=id>=minRepeatType?id:-1,lastGroup=0,lastEnd=end;for(;cursor.pos>endPos;)localInRepeat>=0&&cursor.id==localInRepeat&&cursor.size>=0?(cursor.end<=lastEnd-maxBufferLength&&(makeRepeatLeaf(localChildren,localPositions,start,lastGroup,cursor.end,lastEnd,localInRepeat,lookAheadAtStart,contextAtStart),lastGroup=localChildren.length,lastEnd=cursor.end),cursor.next()):depth>2500?takeFlatNode(start,endPos,localChildren,localPositions):takeNode(start,endPos,localChildren,localPositions,localInRepeat,depth+1);if(localInRepeat>=0&&lastGroup>0&&lastGroup<localChildren.length&&makeRepeatLeaf(localChildren,localPositions,start,lastGroup,start,lastEnd,localInRepeat,lookAheadAtStart,contextAtStart),localChildren.reverse(),localPositions.reverse(),localInRepeat>-1&&lastGroup>0){let make=makeBalanced(type,contextAtStart);node$1=balanceRange(type,localChildren,localPositions,0,localChildren.length,0,end-start,make,make)}else node$1=makeTree(type,localChildren,localPositions,end-start,lookAheadAtStart-end,contextAtStart)}children$1.push(node$1),positions$1.push(startPos)}function takeFlatNode(parentStart,minPos,children$1,positions$1){let nodes=[],nodeCount=0,stopAt=-1;for(;cursor.pos>minPos;){let{id,start,end,size:size$3}=cursor;if(size$3>4)cursor.next();else if(stopAt>-1&&start<stopAt)break;else stopAt<0&&(stopAt=end-maxBufferLength),nodes.push(id,start,end),nodeCount++,cursor.next()}if(nodeCount){let buffer$1=new Uint16Array(nodeCount*4),start=nodes[nodes.length-2];for(let i$3=nodes.length-3,j$1=0;i$3>=0;i$3-=3)buffer$1[j$1++]=nodes[i$3],buffer$1[j$1++]=nodes[i$3+1]-start,buffer$1[j$1++]=nodes[i$3+2]-start,buffer$1[j$1++]=j$1;children$1.push(new TreeBuffer(buffer$1,nodes[2]-start,nodeSet)),positions$1.push(start-parentStart)}}function makeBalanced(type,contextHash$1){return(children$1,positions$1,length$1)=>{let lookAhead$1=0,lastI=children$1.length-1,last,lookAheadProp;if(lastI>=0&&(last=children$1[lastI])instanceof Tree){if(!lastI&&last.type==type&&last.length==length$1)return last;(lookAheadProp=last.prop(NodeProp.lookAhead))&&(lookAhead$1=positions$1[lastI]+last.length+lookAheadProp)}return makeTree(type,children$1,positions$1,length$1,lookAhead$1,contextHash$1)}}function makeRepeatLeaf(children$1,positions$1,base$1,i$3,from,to,type,lookAhead$1,contextHash$1){let localChildren=[],localPositions=[];for(;children$1.length>i$3;)localChildren.push(children$1.pop()),localPositions.push(positions$1.pop()+base$1-from);children$1.push(makeTree(nodeSet.types[type],localChildren,localPositions,to-from,lookAhead$1-to,contextHash$1)),positions$1.push(from-base$1)}function makeTree(type,children$1,positions$1,length$1,lookAhead$1,contextHash$1,props){if(contextHash$1){let pair$1=[NodeProp.contextHash,contextHash$1];props=props?[pair$1].concat(props):[pair$1]}if(lookAhead$1>25){let pair$1=[NodeProp.lookAhead,lookAhead$1];props=props?[pair$1].concat(props):[pair$1]}return new Tree(type,children$1,positions$1,length$1,props)}function findBufferSize(maxSize,inRepeat){let fork=cursor.fork(),size$3=0,start=0,skip=0,minStart=fork.end-maxBufferLength,result={size:0,start:0,skip:0};scan:for(let minPos=fork.pos-maxSize;fork.pos>minPos;){let nodeSize$1=fork.size;if(fork.id==inRepeat&&nodeSize$1>=0){result.size=size$3,result.start=start,result.skip=skip,skip+=4,size$3+=4,fork.next();continue}let startPos=fork.pos-nodeSize$1;if(nodeSize$1<0||startPos<minPos||fork.start<minStart)break;let localSkipped=fork.id>=minRepeatType?4:0,nodeStart$1=fork.start;for(fork.next();fork.pos>startPos;){if(fork.size<0)if(fork.size==-3||fork.size==-4)localSkipped+=4;else break scan;else fork.id>=minRepeatType&&(localSkipped+=4);fork.next()}start=nodeStart$1,size$3+=nodeSize$1,skip+=localSkipped}return(inRepeat<0||size$3==maxSize)&&(result.size=size$3,result.start=start,result.skip=skip),result.size>4?result:void 0}function copyToBuffer(bufferStart,buffer$1,index$4){let{id,start,end,size:size$3}=cursor;if(cursor.next(),size$3>=0&&id<minRepeatType){let startIndex=index$4;if(size$3>4){let endPos=cursor.pos-(size$3-4);for(;cursor.pos>endPos;)index$4=copyToBuffer(bufferStart,buffer$1,index$4)}buffer$1[--index$4]=startIndex,buffer$1[--index$4]=end-bufferStart,buffer$1[--index$4]=start-bufferStart,buffer$1[--index$4]=id}else size$3==-3?contextHash=id:size$3==-4&&(lookAhead=id);return index$4}let children=[],positions=[];for(;cursor.pos>0;)takeNode(data.start||0,data.bufferStart||0,children,positions,-1,0);let length=data.length??(children.length?positions[0]+children[0].length:0);return new Tree(types$1[data.topID],children.reverse(),positions.reverse(),length)}var nodeSizeCache=new WeakMap;function nodeSize(balanceType,node$1){if(!balanceType.isAnonymous||node$1 instanceof TreeBuffer||node$1.type!=balanceType)return 1;let size$3=nodeSizeCache.get(node$1);if(size$3==null){size$3=1;for(let child of node$1.children){if(child.type!=balanceType||!(child instanceof Tree)){size$3=1;break}size$3+=nodeSize(balanceType,child)}nodeSizeCache.set(node$1,size$3)}return size$3}function balanceRange(balanceType,children,positions,from,to,start,length,mkTop,mkTree){let total=0;for(let i$3=from;i$3<to;i$3++)total+=nodeSize(balanceType,children[i$3]);let maxChild=Math.ceil(total*1.5/8),localChildren=[],localPositions=[];function divide(children$1,positions$1,from$1,to$1,offset$3){for(let i$3=from$1;i$3<to$1;){let groupFrom=i$3,groupStart=positions$1[i$3],groupSize=nodeSize(balanceType,children$1[i$3]);for(i$3++;i$3<to$1;i$3++){let nextSize=nodeSize(balanceType,children$1[i$3]);if(groupSize+nextSize>=maxChild)break;groupSize+=nextSize}if(i$3==groupFrom+1){if(groupSize>maxChild){let only=children$1[groupFrom];divide(only.children,only.positions,0,only.children.length,positions$1[groupFrom]+offset$3);continue}localChildren.push(children$1[groupFrom])}else{let length$1=positions$1[i$3-1]+children$1[i$3-1].length-groupStart;localChildren.push(balanceRange(balanceType,children$1,positions$1,groupFrom,i$3,groupStart,length$1,null,mkTree))}localPositions.push(groupStart+offset$3-start)}}return divide(children,positions,from,to,0),(mkTop||mkTree)(localChildren,localPositions,length)}var TreeFragment=class TreeFragment{constructor(from,to,tree,offset$3,openStart=!1,openEnd=!1){this.from=from,this.to=to,this.tree=tree,this.offset=offset$3,this.open=(openStart?1:0)|(openEnd?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(tree,fragments=[],partial=!1){let result=[new TreeFragment(0,tree.length,tree,0,!1,partial)];for(let f$2 of fragments)f$2.to>tree.length&&result.push(f$2);return result}static applyChanges(fragments,changes,minGap=128){if(!changes.length)return fragments;let result=[],fI=1,nextF=fragments.length?fragments[0]:null;for(let cI=0,pos=0,off=0;;cI++){let nextC=cI<changes.length?changes[cI]:null,nextPos=nextC?nextC.fromA:1e9;if(nextPos-pos>=minGap)for(;nextF&&nextF.from<nextPos;){let cut=nextF;if(pos>=cut.from||nextPos<=cut.to||off){let fFrom=Math.max(cut.from,pos)-off,fTo=Math.min(cut.to,nextPos)-off;cut=fFrom>=fTo?null:new TreeFragment(fFrom,fTo,cut.tree,cut.offset+off,cI>0,!!nextC)}if(cut&&result.push(cut),nextF.to>nextPos)break;nextF=fI<fragments.length?fragments[fI++]:null}if(!nextC)break;pos=nextC.toA,off=nextC.toA-nextC.toB}return result}},Parser=class{startParse(input,fragments,ranges){return typeof input==`string`&&(input=new StringInput(input)),ranges=ranges?ranges.length?ranges.map(r$4=>new Range(r$4.from,r$4.to)):[new Range(0,0)]:[new Range(0,input.length)],this.createParse(input,fragments||[],ranges)}parse(input,fragments,ranges){let parse$2=this.startParse(input,fragments,ranges);for(;;){let done=parse$2.advance();if(done)return done}}},StringInput=class{constructor(string$3){this.string=string$3}get length(){return this.string.length}chunk(from){return this.string.slice(from)}get lineChunks(){return!1}read(from,to){return this.string.slice(from,to)}},stoppedInner=new NodeProp({perNode:!0}),nextTagID=0,Tag=class Tag{constructor(name$2,set,base$1,modified){this.name=name$2,this.set=set,this.base=base$1,this.modified=modified,this.id=nextTagID++}toString(){let{name:name$2}=this;for(let mod of this.modified)mod.name&&(name$2=`${mod.name}(${name$2})`);return name$2}static define(nameOrParent,parent){let name$2=typeof nameOrParent==`string`?nameOrParent:`?`;if(nameOrParent instanceof Tag&&(parent=nameOrParent),parent?.base)throw Error(`Can not derive from a modified tag`);let tag=new Tag(name$2,[],null,[]);if(tag.set.push(tag),parent)for(let t$1 of parent.set)tag.set.push(t$1);return tag}static defineModifier(name$2){let mod=new Modifier(name$2);return tag=>tag.modified.indexOf(mod)>-1?tag:Modifier.get(tag.base||tag,tag.modified.concat(mod).sort((a$1,b$2)=>a$1.id-b$2.id))}},nextModifierID=0,Modifier=class Modifier{constructor(name$2){this.name=name$2,this.instances=[],this.id=nextModifierID++}static get(base$1,mods){if(!mods.length)return base$1;let exists=mods[0].instances.find(t$1=>t$1.base==base$1&&sameArray(mods,t$1.modified));if(exists)return exists;let set=[],tag=new Tag(base$1.name,set,base$1,mods);for(let m$2 of mods)m$2.instances.push(tag);let configs=powerSet(mods);for(let parent of base$1.set)if(!parent.modified.length)for(let config$1 of configs)set.push(Modifier.get(parent,config$1));return tag}};function sameArray(a$1,b$2){return a$1.length==b$2.length&&a$1.every((x$1,i$3)=>x$1==b$2[i$3])}function powerSet(array){let sets=[[]];for(let i$3=0;i$3<array.length;i$3++)for(let j$1=0,e=sets.length;j$1<e;j$1++)sets.push(sets[j$1].concat(array[i$3]));return sets.sort((a$1,b$2)=>b$2.length-a$1.length)}function styleTags(spec){let byName=Object.create(null);for(let prop in spec){let tags$1=spec[prop];Array.isArray(tags$1)||(tags$1=[tags$1]);for(let part of prop.split(` `))if(part){let pieces=[],mode=2,rest=part;for(let pos=0;;){if(rest==`...`&&pos>0&&pos+3==part.length){mode=1;break}let m$2=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(rest);if(!m$2)throw RangeError(`Invalid path: `+part);if(pieces.push(m$2[0]==`*`?``:m$2[0][0]==`"`?JSON.parse(m$2[0]):m$2[0]),pos+=m$2[0].length,pos==part.length)break;let next=part[pos++];if(pos==part.length&&next==`!`){mode=0;break}if(next!=`/`)throw RangeError(`Invalid path: `+part);rest=part.slice(pos)}let last=pieces.length-1,inner=pieces[last];if(!inner)throw RangeError(`Invalid path: `+part);byName[inner]=new Rule$1(tags$1,mode,last>0?pieces.slice(0,last):null).sort(byName[inner])}}return ruleNodeProp.add(byName)}var ruleNodeProp=new NodeProp({combine(a$1,b$2){let cur$1,root$4,take;for(;a$1||b$2;){if(!a$1||b$2&&a$1.depth>=b$2.depth?(take=b$2,b$2=b$2.next):(take=a$1,a$1=a$1.next),cur$1&&cur$1.mode==take.mode&&!take.context&&!cur$1.context)continue;let copy=new Rule$1(take.tags,take.mode,take.context);cur$1?cur$1.next=copy:root$4=copy,cur$1=copy}return root$4}}),Rule$1=class{constructor(tags$1,mode,context,next){this.tags=tags$1,this.mode=mode,this.context=context,this.next=next}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(other){return!other||other.depth<this.depth?(this.next=other,this):(other.next=this.sort(other.next),other)}get depth(){return this.context?this.context.length:0}};Rule$1.empty=new Rule$1([],2,null);function tagHighlighter(tags$1,options$1){let map=Object.create(null);for(let style$1 of tags$1)if(!Array.isArray(style$1.tag))map[style$1.tag.id]=style$1.class;else for(let tag of style$1.tag)map[tag.id]=style$1.class;let{scope,all:all$2=null}=options$1||{};return{style:tags$2=>{let cls=all$2;for(let tag of tags$2)for(let sub of tag.set){let tagClass=map[sub.id];if(tagClass){cls=cls?cls+` `+tagClass:tagClass;break}}return cls},scope}}function highlightTags(highlighters,tags$1){let result=null;for(let highlighter$1 of highlighters){let value=highlighter$1.style(tags$1);value&&(result=result?result+` `+value:value)}return result}function highlightTree(tree,highlighter$1,putStyle,from=0,to=tree.length){let builder=new HighlightBuilder(from,Array.isArray(highlighter$1)?highlighter$1:[highlighter$1],putStyle);builder.highlightRange(tree.cursor(),from,to,``,builder.highlighters),builder.flush(to)}var HighlightBuilder=class{constructor(at,highlighters,span){this.at=at,this.highlighters=highlighters,this.span=span,this.class=``}startSpan(at,cls){cls!=this.class&&(this.flush(at),at>this.at&&(this.at=at),this.class=cls)}flush(to){to>this.at&&this.class&&this.span(this.at,to,this.class)}highlightRange(cursor,from,to,inheritedClass,highlighters){let{type,from:start,to:end}=cursor;if(start>=to||end<=from)return;type.isTop&&(highlighters=this.highlighters.filter(h$1=>!h$1.scope||h$1.scope(type)));let cls=inheritedClass,rule=getStyleTags(cursor)||Rule$1.empty,tagCls=highlightTags(highlighters,rule.tags);if(tagCls&&(cls&&(cls+=` `),cls+=tagCls,rule.mode==1&&(inheritedClass+=(inheritedClass?` `:``)+tagCls)),this.startSpan(Math.max(from,start),cls),rule.opaque)return;let mounted=cursor.tree&&cursor.tree.prop(NodeProp.mounted);if(mounted&&mounted.overlay){let inner=cursor.node.enter(mounted.overlay[0].from+start,1),innerHighlighters=this.highlighters.filter(h$1=>!h$1.scope||h$1.scope(mounted.tree.type)),hasChild$1=cursor.firstChild();for(let i$3=0,pos=start;;i$3++){let next=i$3<mounted.overlay.length?mounted.overlay[i$3]:null,nextPos=next?next.from+start:end,rangeFrom$1=Math.max(from,pos),rangeTo$1=Math.min(to,nextPos);if(rangeFrom$1<rangeTo$1&&hasChild$1)for(;cursor.from<rangeTo$1&&(this.highlightRange(cursor,rangeFrom$1,rangeTo$1,inheritedClass,highlighters),this.startSpan(Math.min(rangeTo$1,cursor.to),cls),!(cursor.to>=nextPos||!cursor.nextSibling())););if(!next||nextPos>to)break;pos=next.to+start,pos>from&&(this.highlightRange(inner.cursor(),Math.max(from,next.from+start),Math.min(to,pos),``,innerHighlighters),this.startSpan(Math.min(to,pos),cls))}hasChild$1&&cursor.parent()}else if(cursor.firstChild()){mounted&&(inheritedClass=``);do{if(cursor.to<=from)continue;if(cursor.from>=to)break;this.highlightRange(cursor,from,to,inheritedClass,highlighters),this.startSpan(Math.min(to,cursor.to),cls)}while(cursor.nextSibling());cursor.parent()}}};function getStyleTags(node$1){let rule=node$1.type.prop(ruleNodeProp);for(;rule&&rule.context&&!node$1.matchContext(rule.context);)rule=rule.next;return rule||null}var t=Tag.define,comment$1=t(),name$1=t(),typeName=t(name$1),propertyName=t(name$1),literal=t(),string$2=t(literal),number$1=t(literal),content$2=t(),heading$1=t(content$2),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment:comment$1,lineComment:t(comment$1),blockComment:t(comment$1),docComment:t(comment$1),name:name$1,variableName:t(name$1),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name$1),labelName:t(name$1),namespace:t(name$1),macroName:t(name$1),literal,string:string$2,docString:t(string$2),character:t(string$2),attributeValue:t(string$2),number:number$1,integer:t(number$1),float:t(number$1),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content:content$2,heading:heading$1,heading1:t(heading$1),heading2:t(heading$1),heading3:t(heading$1),heading4:t(heading$1),heading5:t(heading$1),heading6:t(heading$1),contentSeparator:t(content$2),list:t(content$2),quote:t(content$2),emphasis:t(content$2),strong:t(content$2),link:t(content$2),monospace:t(content$2),strikethrough:t(content$2),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(`definition`),constant:Tag.defineModifier(`constant`),function:Tag.defineModifier(`function`),standard:Tag.defineModifier(`standard`),local:Tag.defineModifier(`local`),special:Tag.defineModifier(`special`)};for(let name$2 in tags){let val=tags[name$2];val instanceof Tag&&(val.name=name$2)}var classHighlighter=tagHighlighter([{tag:tags.link,class:`tok-link`},{tag:tags.heading,class:`tok-heading`},{tag:tags.emphasis,class:`tok-emphasis`},{tag:tags.strong,class:`tok-strong`},{tag:tags.keyword,class:`tok-keyword`},{tag:tags.atom,class:`tok-atom`},{tag:tags.bool,class:`tok-bool`},{tag:tags.url,class:`tok-url`},{tag:tags.labelName,class:`tok-labelName`},{tag:tags.inserted,class:`tok-inserted`},{tag:tags.deleted,class:`tok-deleted`},{tag:tags.literal,class:`tok-literal`},{tag:tags.string,class:`tok-string`},{tag:tags.number,class:`tok-number`},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],class:`tok-string2`},{tag:tags.variableName,class:`tok-variableName`},{tag:tags.local(tags.variableName),class:`tok-variableName tok-local`},{tag:tags.definition(tags.variableName),class:`tok-variableName tok-definition`},{tag:tags.special(tags.variableName),class:`tok-variableName2`},{tag:tags.definition(tags.propertyName),class:`tok-propertyName tok-definition`},{tag:tags.typeName,class:`tok-typeName`},{tag:tags.namespace,class:`tok-namespace`},{tag:tags.className,class:`tok-className`},{tag:tags.macroName,class:`tok-macroName`},{tag:tags.propertyName,class:`tok-propertyName`},{tag:tags.operator,class:`tok-operator`},{tag:tags.comment,class:`tok-comment`},{tag:tags.meta,class:`tok-meta`},{tag:tags.invalid,class:`tok-invalid`},{tag:tags.punctuation,class:`tok-punctuation`}]),_a,languageDataProp=new NodeProp;function defineLanguageFacet(baseData){return Facet.define({combine:baseData?values=>values.concat(baseData):void 0})}var sublanguageProp=new NodeProp,Language=class{constructor(data,parser$1,extraExtensions=[],name$2=``){this.data=data,this.name=name$2,EditorState.prototype.hasOwnProperty(`tree`)||Object.defineProperty(EditorState.prototype,`tree`,{get(){return syntaxTree(this)}}),this.parser=parser$1,this.extension=[language.of(this),EditorState.languageData.of((state$1,pos,side)=>{let top$1=topNodeAt(state$1,pos,side),data$1=top$1.type.prop(languageDataProp);if(!data$1)return[];let base$1=state$1.facet(data$1),sub=top$1.type.prop(sublanguageProp);if(sub){let innerNode=top$1.resolve(pos-top$1.from,side);for(let sublang of sub)if(sublang.test(innerNode,state$1)){let data$2=state$1.facet(sublang.facet);return sublang.type==`replace`?data$2:data$2.concat(base$1)}}return base$1})].concat(extraExtensions)}isActiveAt(state$1,pos,side=-1){return topNodeAt(state$1,pos,side).type.prop(languageDataProp)==this.data}findRegions(state$1){let lang=state$1.facet(language);if(lang?.data==this.data)return[{from:0,to:state$1.doc.length}];if(!lang||!lang.allowsNesting)return[];let result=[],explore=(tree,from)=>{if(tree.prop(languageDataProp)==this.data){result.push({from,to:from+tree.length});return}let mount=tree.prop(NodeProp.mounted);if(mount){if(mount.tree.prop(languageDataProp)==this.data){if(mount.overlay)for(let r$4 of mount.overlay)result.push({from:r$4.from+from,to:r$4.to+from});else result.push({from,to:from+tree.length});return}else if(mount.overlay){let size$3=result.length;if(explore(mount.tree,mount.overlay[0].from+from),result.length>size$3)return}}for(let i$3=0;i$3<tree.children.length;i$3++){let ch=tree.children[i$3];ch instanceof Tree&&explore(ch,tree.positions[i$3]+from)}};return explore(syntaxTree(state$1),0),result}get allowsNesting(){return!0}};Language.setState=StateEffect.define();function topNodeAt(state$1,pos,side){let topLang=state$1.facet(language),tree=syntaxTree(state$1).topNode;if(!topLang||topLang.allowsNesting)for(let node$1=tree;node$1;node$1=node$1.enter(pos,side,IterMode.ExcludeBuffers|IterMode.EnterBracketed))node$1.type.isTop&&(tree=node$1);return tree}var LRLanguage=class LRLanguage extends Language{constructor(data,parser$1,name$2){super(data,parser$1,[],name$2),this.parser=parser$1}static define(spec){let data=defineLanguageFacet(spec.languageData);return new LRLanguage(data,spec.parser.configure({props:[languageDataProp.add(type=>type.isTop?data:void 0)]}),spec.name)}configure(options$1,name$2){return new LRLanguage(this.data,this.parser.configure(options$1),name$2||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function syntaxTree(state$1){let field=state$1.field(Language.state,!1);return field?field.tree:Tree.empty}var DocInput=class{constructor(doc$1){this.doc=doc$1,this.cursorPos=0,this.string=``,this.cursor=doc$1.iter()}get length(){return this.doc.length}syncTo(pos){return this.string=this.cursor.next(pos-this.cursorPos).value,this.cursorPos=pos+this.string.length,this.cursorPos-this.string.length}chunk(pos){return this.syncTo(pos),this.string}get lineChunks(){return!0}read(from,to){let stringStart=this.cursorPos-this.string.length;return from<stringStart||to>=this.cursorPos?this.doc.sliceString(from,to):this.string.slice(from-stringStart,to-stringStart)}},currentContext=null,ParseContext=class ParseContext{constructor(parser$1,state$1,fragments=[],tree,treeLen,viewport,skipped,scheduleOn){this.parser=parser$1,this.state=state$1,this.fragments=fragments,this.tree=tree,this.treeLen=treeLen,this.viewport=viewport,this.skipped=skipped,this.scheduleOn=scheduleOn,this.parse=null,this.tempSkipped=[]}static create(parser$1,state$1,viewport){return new ParseContext(parser$1,state$1,[],Tree.empty,0,viewport,[],null)}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(until,upto){return upto!=null&&upto>=this.state.doc.length&&(upto=void 0),this.tree!=Tree.empty&&this.isDone(upto??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var _a$1;if(typeof until==`number`){let endTime=Date.now()+until;until=()=>Date.now()>endTime}for(this.parse||=this.startParse(),upto!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>upto)&&upto<this.state.doc.length&&this.parse.stopAt(upto);;){let done=this.parse.advance();if(done)if(this.fragments=this.withoutTempSkipped(TreeFragment.addTree(done,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=this.parse.stoppedAt??this.state.doc.length,this.tree=done,this.parse=null,this.treeLen<(upto??this.state.doc.length))this.parse=this.startParse();else return!0;if(until())return!1}})}takeTree(){let pos,tree;this.parse&&(pos=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>pos)&&this.parse.stopAt(pos),this.withContext(()=>{for(;!(tree=this.parse.advance()););}),this.treeLen=pos,this.tree=tree,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(f$2){let prev=currentContext;currentContext=this;try{return f$2()}finally{currentContext=prev}}withoutTempSkipped(fragments){for(let r$4;r$4=this.tempSkipped.pop();)fragments=cutFragments(fragments,r$4.from,r$4.to);return fragments}changes(changes,newState){let{fragments,tree,treeLen,viewport,skipped}=this;if(this.takeTree(),!changes.empty){let ranges=[];if(changes.iterChangedRanges((fromA,toA,fromB,toB)=>ranges.push({fromA,toA,fromB,toB})),fragments=TreeFragment.applyChanges(fragments,ranges),tree=Tree.empty,treeLen=0,viewport={from:changes.mapPos(viewport.from,-1),to:changes.mapPos(viewport.to,1)},this.skipped.length){skipped=[];for(let r$4 of this.skipped){let from=changes.mapPos(r$4.from,1),to=changes.mapPos(r$4.to,-1);from<to&&skipped.push({from,to})}}}return new ParseContext(this.parser,newState,fragments,tree,treeLen,viewport,skipped,this.scheduleOn)}updateViewport(viewport){if(this.viewport.from==viewport.from&&this.viewport.to==viewport.to)return!1;this.viewport=viewport;let startLen=this.skipped.length;for(let i$3=0;i$3<this.skipped.length;i$3++){let{from,to}=this.skipped[i$3];from<viewport.to&&to>viewport.from&&(this.fragments=cutFragments(this.fragments,from,to),this.skipped.splice(i$3--,1))}return this.skipped.length>=startLen?!1:(this.reset(),!0)}reset(){this.parse&&=(this.takeTree(),null)}skipUntilInView(from,to){this.skipped.push({from,to})}static getSkippingParser(until){return new class extends Parser{createParse(input,fragments,ranges){let from=ranges[0].from,to=ranges[ranges.length-1].to;return{parsedPos:from,advance(){let cx$1=currentContext;if(cx$1){for(let r$4 of ranges)cx$1.tempSkipped.push(r$4);until&&(cx$1.scheduleOn=cx$1.scheduleOn?Promise.all([cx$1.scheduleOn,until]):until)}return this.parsedPos=to,new Tree(NodeType.none,[],[],to-from)},stoppedAt:null,stopAt(){}}}}}isDone(upto){upto=Math.min(upto,this.state.doc.length);let frags=this.fragments;return this.treeLen>=upto&&frags.length&&frags[0].from==0&&frags[0].to>=upto}static get(){return currentContext}};function cutFragments(fragments,from,to){return TreeFragment.applyChanges(fragments,[{fromA:from,toA:to,fromB:from,toB:to}])}var LanguageState=class LanguageState{constructor(context){this.context=context,this.tree=context.tree}apply(tr$1){if(!tr$1.docChanged&&this.tree==this.context.tree)return this;let newCx=this.context.changes(tr$1.changes,tr$1.state),upto=this.context.treeLen==tr$1.startState.doc.length?void 0:Math.max(tr$1.changes.mapPos(this.context.treeLen),newCx.viewport.to);return newCx.work(20,upto)||newCx.takeTree(),new LanguageState(newCx)}static init(state$1){let vpTo=Math.min(3e3,state$1.doc.length),parseState=ParseContext.create(state$1.facet(language).parser,state$1,{from:0,to:vpTo});return parseState.work(20,vpTo)||parseState.takeTree(),new LanguageState(parseState)}};Language.state=StateField.define({create:LanguageState.init,update(value,tr$1){for(let e of tr$1.effects)if(e.is(Language.setState))return e.value;return tr$1.startState.facet(language)==tr$1.state.facet(language)?value.apply(tr$1):LanguageState.init(tr$1.state)}});var requestIdle=callback=>{let timeout=setTimeout(()=>callback(),500);return()=>clearTimeout(timeout)};typeof requestIdleCallback<`u`&&(requestIdle=callback=>{let idle=-1,timeout=setTimeout(()=>{idle=requestIdleCallback(callback,{timeout:400})},100);return()=>idle<0?clearTimeout(timeout):cancelIdleCallback(idle)});var isInputPending=typeof navigator<`u`&&(_a=navigator.scheduling)?.isInputPending?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(update$1){let cx$1=this.view.state.field(Language.state).context;(cx$1.updateViewport(update$1.view.viewport)||this.view.viewport.to>cx$1.treeLen)&&this.scheduleWork(),(update$1.docChanged||update$1.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(cx$1)}scheduleWork(){if(this.working)return;let{state:state$1}=this.view,field=state$1.field(Language.state);(field.tree!=field.context.tree||!field.context.isDone(state$1.doc.length))&&(this.working=requestIdle(this.work))}work(deadline){this.working=null;let now$1=Date.now();if(this.chunkEnd<now$1&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=now$1+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:state$1,viewport:{to:vpTo}}=this.view,field=state$1.field(Language.state);if(field.tree==field.context.tree&&field.context.isDone(vpTo+1e5))return;let endTime=Date.now()+Math.min(this.chunkBudget,100,deadline&&!isInputPending?Math.max(25,deadline.timeRemaining()-5):1e9),viewportFirst=field.context.treeLen<vpTo&&state$1.doc.length>vpTo+1e3,done=field.context.work(()=>isInputPending&&isInputPending()||Date.now()>endTime,vpTo+(viewportFirst?0:1e5));this.chunkBudget-=Date.now()-now$1,(done||this.chunkBudget<=0)&&(field.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(field.context))})),this.chunkBudget>0&&!(done&&!viewportFirst)&&this.scheduleWork(),this.checkAsyncSchedule(field.context)}checkAsyncSchedule(cx$1){cx$1.scheduleOn&&=(this.workScheduled++,cx$1.scheduleOn.then(()=>this.scheduleWork()).catch(err=>logException(this.view.state,err)).then(()=>this.workScheduled--),null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(languages){return languages.length?languages[0]:null},enables:language$1=>[Language.state,parseWorker,EditorView.contentAttributes.compute([language$1],state$1=>{let lang=state$1.facet(language$1);return lang&&lang.name?{"data-language":lang.name}:{}})]}),LanguageSupport=class{constructor(language$1,support=[]){this.language=language$1,this.support=support,this.extension=[language$1,support]}},indentService=Facet.define(),indentUnit=Facet.define({combine:values=>{if(!values.length)return` `;let unit=values[0];if(!unit||/\S/.test(unit)||Array.from(unit).some(e=>e!=unit[0]))throw Error(`Invalid indent unit: `+JSON.stringify(values[0]));return unit}});function getIndentUnit(state$1){let unit=state$1.facet(indentUnit);return unit.charCodeAt(0)==9?state$1.tabSize*unit.length:unit.length}function indentString(state$1,cols){let result=``,ts=state$1.tabSize,ch=state$1.facet(indentUnit)[0];if(ch==` `){for(;cols>=ts;)result+=` `,cols-=ts;ch=` `}for(let i$3=0;i$3<cols;i$3++)result+=ch;return result}function getIndentation(context,pos){context instanceof EditorState&&(context=new IndentContext(context));for(let service of context.state.facet(indentService)){let result=service(context,pos);if(result!==void 0)return result}let tree=syntaxTree(context.state);return tree.length>=pos?syntaxIndentation(context,tree,pos):null}var IndentContext=class{constructor(state$1,options$1={}){this.state=state$1,this.options=options$1,this.unit=getIndentUnit(state$1)}lineAt(pos,bias=1){let line=this.state.doc.lineAt(pos),{simulateBreak,simulateDoubleBreak}=this.options;return simulateBreak!=null&&simulateBreak>=line.from&&simulateBreak<=line.to?simulateDoubleBreak&&simulateBreak==pos?{text:``,from:pos}:(bias<0?simulateBreak<pos:simulateBreak<=pos)?{text:line.text.slice(simulateBreak-line.from),from:simulateBreak}:{text:line.text.slice(0,simulateBreak-line.from),from:line.from}:line}textAfterPos(pos,bias=1){if(this.options.simulateDoubleBreak&&pos==this.options.simulateBreak)return``;let{text:text$5,from}=this.lineAt(pos,bias);return text$5.slice(pos-from,Math.min(text$5.length,pos+100-from))}column(pos,bias=1){let{text:text$5,from}=this.lineAt(pos,bias),result=this.countColumn(text$5,pos-from),override=this.options.overrideIndentation?this.options.overrideIndentation(from):-1;return override>-1&&(result+=override-this.countColumn(text$5,text$5.search(/\S|$/))),result}countColumn(line,pos=line.length){return countColumn(line,this.state.tabSize,pos)}lineIndent(pos,bias=1){let{text:text$5,from}=this.lineAt(pos,bias),override=this.options.overrideIndentation;if(override){let overriden=override(from);if(overriden>-1)return overriden}return this.countColumn(text$5,text$5.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},indentNodeProp=new NodeProp;function syntaxIndentation(cx$1,ast,pos){let stack=ast.resolveStack(pos),inner=ast.resolveInner(pos,-1).resolve(pos,0).enterUnfinishedNodesBefore(pos);if(inner!=stack.node){let add$1=[];for(let cur$1=inner;cur$1&&!(cur$1.from<stack.node.from||cur$1.to>stack.node.to||cur$1.from==stack.node.from&&cur$1.type==stack.node.type);cur$1=cur$1.parent)add$1.push(cur$1);for(let i$3=add$1.length-1;i$3>=0;i$3--)stack={node:add$1[i$3],next:stack}}return indentFor(stack,cx$1,pos)}function indentFor(stack,cx$1,pos){for(let cur$1=stack;cur$1;cur$1=cur$1.next){let strategy=indentStrategy(cur$1.node);if(strategy)return strategy(TreeIndentContext.create(cx$1,pos,cur$1))}return 0}function ignoreClosed(cx$1){return cx$1.pos==cx$1.options.simulateBreak&&cx$1.options.simulateDoubleBreak}function indentStrategy(tree){let strategy=tree.type.prop(indentNodeProp);if(strategy)return strategy;let first=tree.firstChild,close;if(first&&(close=first.type.prop(NodeProp.closedBy))){let last=tree.lastChild,closed=last&&close.indexOf(last.name)>-1;return cx$1=>delimitedStrategy(cx$1,!0,1,void 0,closed&&!ignoreClosed(cx$1)?last.from:void 0)}return tree.parent==null?topIndent:null}function topIndent(){return 0}var TreeIndentContext=class TreeIndentContext extends IndentContext{constructor(base$1,pos,context){super(base$1.state,base$1.options),this.base=base$1,this.pos=pos,this.context=context}get node(){return this.context.node}static create(base$1,pos,context){return new TreeIndentContext(base$1,pos,context)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(node$1){let line=this.state.doc.lineAt(node$1.from);for(;;){let atBreak=node$1.resolve(line.from);for(;atBreak.parent&&atBreak.parent.from==atBreak.from;)atBreak=atBreak.parent;if(isParent(atBreak,node$1))break;line=this.state.doc.lineAt(atBreak.from)}return this.lineIndent(line.from)}continue(){return indentFor(this.context.next,this.base,this.pos)}};function isParent(parent,of){for(let cur$1=of;cur$1;cur$1=cur$1.parent)if(parent==cur$1)return!0;return!1}function bracketedAligned(context){let tree=context.node,openToken=tree.childAfter(tree.from),last=tree.lastChild;if(!openToken)return null;let sim=context.options.simulateBreak,openLine=context.state.doc.lineAt(openToken.from),lineEnd=sim==null||sim<=openLine.from?openLine.to:Math.min(openLine.to,sim);for(let pos=openToken.to;;){let next=tree.childAfter(pos);if(!next||next==last)return null;if(!next.type.isSkipped){if(next.from>=lineEnd)return null;let space$1=/^ */.exec(openLine.text.slice(openToken.to-openLine.from))[0].length;return{from:openToken.from,to:openToken.to+space$1}}pos=next.to}}function delimitedStrategy(context,align,units,closing$2,closedAt){let after=context.textAfter,space$1=after.match(/^\s*/)[0].length,closed=closing$2&&after.slice(space$1,space$1+closing$2.length)==closing$2||closedAt==context.pos+space$1,aligned=align?bracketedAligned(context):null;return aligned?closed?context.column(aligned.from):context.column(aligned.to):context.baseIndent+(closed?0:context.unit*units)}function continuedIndent({except,units=1}={}){return context=>{let matchExcept=except&&except.test(context.textAfter);return context.baseIndent+(matchExcept?0:units*context.unit)}}var foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside(node$1){let first=node$1.firstChild,last=node$1.lastChild;return first&&first.to<last.from?{from:first.to,to:last.type.isError?node$1.to:last.from}:null}function syntaxFolding(state$1,start,end){let tree=syntaxTree(state$1);if(tree.length<end)return null;let stack=tree.resolveStack(end,1),found=null;for(let iter=stack;iter;iter=iter.next){let cur$1=iter.node;if(cur$1.to<=end||cur$1.from>end)continue;if(found&&cur$1.from<start)break;let prop=cur$1.type.prop(foldNodeProp);if(prop&&(cur$1.to<tree.length-50||tree.length==state$1.doc.length||!isUnfinished(cur$1))){let value=prop(cur$1,state$1);value&&value.from<=end&&value.from>=start&&value.to>end&&(found=value)}}return found}function isUnfinished(node$1){let ch=node$1.lastChild;return ch&&ch.to==node$1.to&&ch.type.isError}function foldable(state$1,lineStart,lineEnd){for(let service of state$1.facet(foldService)){let result=service(state$1,lineStart,lineEnd);if(result)return result}return syntaxFolding(state$1,lineStart,lineEnd)}function mapRange(range$1,mapping){let from=mapping.mapPos(range$1.from,1),to=mapping.mapPos(range$1.to,-1);return from>=to?void 0:{from,to}}var foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(view){let lines=[];for(let{head:head$1}of view.state.selection.ranges)lines.some(l$2=>l$2.from<=head$1&&l$2.to>=head$1)||lines.push(view.lineBlockAt(head$1));return lines}var foldState=StateField.define({create(){return Decoration.none},update(folded,tr$1){tr$1.isUserEvent(`delete`)&&tr$1.changes.iterChangedRanges((fromA,toA)=>folded=clearTouchedFolds(folded,fromA,toA)),folded=folded.map(tr$1.changes);for(let e of tr$1.effects)if(e.is(foldEffect)&&!foldExists(folded,e.value.from,e.value.to)){let{preparePlaceholder}=tr$1.state.facet(foldConfig),widget=preparePlaceholder?Decoration.replace({widget:new PreparedFoldWidget(preparePlaceholder(tr$1.state,e.value))}):foldWidget;folded=folded.update({add:[widget.range(e.value.from,e.value.to)]})}else e.is(unfoldEffect)&&(folded=folded.update({filter:(from,to)=>e.value.from!=from||e.value.to!=to,filterFrom:e.value.from,filterTo:e.value.to}));return tr$1.selection&&(folded=clearTouchedFolds(folded,tr$1.selection.main.head)),folded},provide:f$2=>EditorView.decorations.from(f$2),toJSON(folded,state$1){let ranges=[];return folded.between(0,state$1.doc.length,(from,to)=>{ranges.push(from,to)}),ranges},fromJSON(value){if(!Array.isArray(value)||value.length%2)throw RangeError(`Invalid JSON for fold state`);let ranges=[];for(let i$3=0;i$3<value.length;){let from=value[i$3++],to=value[i$3++];if(typeof from!=`number`||typeof to!=`number`)throw RangeError(`Invalid JSON for fold state`);ranges.push(foldWidget.range(from,to))}return Decoration.set(ranges,!0)}});function clearTouchedFolds(folded,from,to=from){let touched=!1;return folded.between(from,to,(a$1,b$2)=>{a$1<to&&b$2>from&&(touched=!0)}),touched?folded.update({filterFrom:from,filterTo:to,filter:(a$1,b$2)=>a$1>=to||b$2<=from}):folded}function foldedRanges(state$1){return state$1.field(foldState,!1)||RangeSet.empty}function findFold(state$1,from,to){var _a$1;let found=null;return(_a$1=state$1.field(foldState,!1))==null||_a$1.between(from,to,(from$1,to$1)=>{(!found||found.from>from$1)&&(found={from:from$1,to:to$1})}),found}function foldExists(folded,from,to){let found=!1;return folded.between(from,from,(a$1,b$2)=>{a$1==from&&b$2==to&&(found=!0)}),found}function maybeEnable(state$1,other){return state$1.field(foldState,!1)?other:other.concat(StateEffect.appendConfig.of(codeFolding()))}var foldCode=view=>{for(let line of selectedLines(view)){let range$1=foldable(view.state,line.from,line.to);if(range$1)return view.dispatch({effects:maybeEnable(view.state,[foldEffect.of(range$1),announceFold(view,range$1)])}),!0}return!1},unfoldCode=view=>{if(!view.state.field(foldState,!1))return!1;let effects=[];for(let line of selectedLines(view)){let folded=findFold(view.state,line.from,line.to);folded&&effects.push(unfoldEffect.of(folded),announceFold(view,folded,!1))}return effects.length&&view.dispatch({effects}),effects.length>0};function announceFold(view,range$1,fold=!0){let lineFrom=view.state.doc.lineAt(range$1.from).number,lineTo=view.state.doc.lineAt(range$1.to).number;return EditorView.announce.of(`${view.state.phrase(fold?`Folded lines`:`Unfolded lines`)} ${lineFrom} ${view.state.phrase(`to`)} ${lineTo}.`)}var foldAll=view=>{let{state:state$1}=view,effects=[];for(let pos=0;pos<state$1.doc.length;){let line=view.lineBlockAt(pos),range$1=foldable(state$1,line.from,line.to);range$1&&effects.push(foldEffect.of(range$1)),pos=(range$1?view.lineBlockAt(range$1.to):line).to+1}return effects.length&&view.dispatch({effects:maybeEnable(view.state,effects)}),!!effects.length},unfoldAll=view=>{let field=view.state.field(foldState,!1);if(!field||!field.size)return!1;let effects=[];return field.between(0,view.state.doc.length,(from,to)=>{effects.push(unfoldEffect.of({from,to}))}),view.dispatch({effects}),!0},foldKeymap=[{key:`Ctrl-Shift-[`,mac:`Cmd-Alt-[`,run:foldCode},{key:`Ctrl-Shift-]`,mac:`Cmd-Alt-]`,run:unfoldCode},{key:`Ctrl-Alt-[`,run:foldAll},{key:`Ctrl-Alt-]`,run:unfoldAll}],defaultConfig={placeholderDOM:null,preparePlaceholder:null,placeholderText:`…`},foldConfig=Facet.define({combine(values){return combineConfig(values,defaultConfig)}});function codeFolding(config$1){let result=[foldState,baseTheme$1$1];return config$1&&result.push(foldConfig.of(config$1)),result}function widgetToDOM(view,prepared){let{state:state$1}=view,conf=state$1.facet(foldConfig),onclick=event=>{let line=view.lineBlockAt(view.posAtDOM(event.target)),folded=findFold(view.state,line.from,line.to);folded&&view.dispatch({effects:unfoldEffect.of(folded)}),event.preventDefault()};if(conf.placeholderDOM)return conf.placeholderDOM(view,onclick,prepared);let element$3=document.createElement(`span`);return element$3.textContent=conf.placeholderText,element$3.setAttribute(`aria-label`,state$1.phrase(`folded code`)),element$3.title=state$1.phrase(`unfold`),element$3.className=`cm-foldPlaceholder`,element$3.onclick=onclick,element$3}var foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(view){return widgetToDOM(view,null)}}}),PreparedFoldWidget=class extends WidgetType{constructor(value){super(),this.value=value}eq(other){return this.value==other.value}toDOM(view){return widgetToDOM(view,this.value)}},baseTheme$1$1=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:`#eee`,border:`1px solid #ddd`,color:`#888`,borderRadius:`.2em`,margin:`0 1px`,padding:`0 1px`,cursor:`pointer`},".cm-foldGutter span":{padding:`0 1px`,cursor:`pointer`}}),HighlightStyle=class HighlightStyle{constructor(specs,options$1){this.specs=specs;let modSpec;function def(spec){let cls=StyleModule.newName();return(modSpec||=Object.create(null))[`.`+cls]=spec,cls}let all$2=typeof options$1.all==`string`?options$1.all:options$1.all?def(options$1.all):void 0,scopeOpt=options$1.scope;this.scope=scopeOpt instanceof Language?type=>type.prop(languageDataProp)==scopeOpt.data:scopeOpt?type=>type==scopeOpt:void 0,this.style=tagHighlighter(specs.map(style$1=>({tag:style$1.tag,class:style$1.class||def(Object.assign({},style$1,{tag:null}))})),{all:all$2}).style,this.module=modSpec?new StyleModule(modSpec):null,this.themeType=options$1.themeType}static define(specs,options$1){return new HighlightStyle(specs,options$1||{})}},highlighterFacet=Facet.define(),fallbackHighlighter=Facet.define({combine(values){return values.length?[values[0]]:null}});function getHighlighters(state$1){let main$1=state$1.facet(highlighterFacet);return main$1.length?main$1:state$1.facet(fallbackHighlighter)}function syntaxHighlighting(highlighter$1,options$1){let ext=[treeHighlighter],themeType;return highlighter$1 instanceof HighlightStyle&&(highlighter$1.module&&ext.push(EditorView.styleModule.of(highlighter$1.module)),themeType=highlighter$1.themeType),options$1?.fallback?ext.push(fallbackHighlighter.of(highlighter$1)):themeType?ext.push(highlighterFacet.computeN([EditorView.darkTheme],state$1=>state$1.facet(EditorView.darkTheme)==(themeType==`dark`)?[highlighter$1]:[])):ext.push(highlighterFacet.of(highlighter$1)),ext}var TreeHighlighter=class{constructor(view){this.markCache=Object.create(null),this.tree=syntaxTree(view.state),this.decorations=this.buildDeco(view,getHighlighters(view.state)),this.decoratedTo=view.viewport.to}update(update$1){let tree=syntaxTree(update$1.state),highlighters=getHighlighters(update$1.state),styleChange=highlighters!=getHighlighters(update$1.startState),{viewport}=update$1.view,decoratedToMapped=update$1.changes.mapPos(this.decoratedTo,1);tree.length<viewport.to&&!styleChange&&tree.type==this.tree.type&&decoratedToMapped>=viewport.to?(this.decorations=this.decorations.map(update$1.changes),this.decoratedTo=decoratedToMapped):(tree!=this.tree||update$1.viewportChanged||styleChange)&&(this.tree=tree,this.decorations=this.buildDeco(update$1.view,highlighters),this.decoratedTo=viewport.to)}buildDeco(view,highlighters){if(!highlighters||!this.tree.length)return Decoration.none;let builder=new RangeSetBuilder;for(let{from,to}of view.visibleRanges)highlightTree(this.tree,highlighters,(from$1,to$1,style$1)=>{builder.add(from$1,to$1,this.markCache[style$1]||(this.markCache[style$1]=Decoration.mark({class:style$1})))},from,to);return builder.finish()}},treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:v$1=>v$1.decorations})),defaultHighlightStyle=HighlightStyle.define([{tag:tags.meta,color:`#404740`},{tag:tags.link,textDecoration:`underline`},{tag:tags.heading,textDecoration:`underline`,fontWeight:`bold`},{tag:tags.emphasis,fontStyle:`italic`},{tag:tags.strong,fontWeight:`bold`},{tag:tags.strikethrough,textDecoration:`line-through`},{tag:tags.keyword,color:`#708`},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:`#219`},{tag:[tags.literal,tags.inserted],color:`#164`},{tag:[tags.string,tags.deleted],color:`#a11`},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:`#e40`},{tag:tags.definition(tags.variableName),color:`#00f`},{tag:tags.local(tags.variableName),color:`#30a`},{tag:[tags.typeName,tags.namespace],color:`#085`},{tag:tags.className,color:`#167`},{tag:[tags.special(tags.variableName),tags.macroName],color:`#256`},{tag:tags.definition(tags.propertyName),color:`#00c`},{tag:tags.comment,color:`#940`},{tag:tags.invalid,color:`#f00`}]),baseTheme$3=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:`#328c8252`},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bb555544`}}),DefaultScanDist=1e4,DefaultBrackets=`()[]{}`,bracketMatchingConfig=Facet.define({combine(configs){return combineConfig(configs,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist,renderMatch:defaultRenderMatch})}}),matchingMark=Decoration.mark({class:`cm-matchingBracket`}),nonmatchingMark=Decoration.mark({class:`cm-nonmatchingBracket`});function defaultRenderMatch(match){let decorations$2=[],mark$1=match.matched?matchingMark:nonmatchingMark;return decorations$2.push(mark$1.range(match.start.from,match.start.to)),match.end&&decorations$2.push(mark$1.range(match.end.from,match.end.to)),decorations$2}var bracketMatchingUnique=[StateField.define({create(){return Decoration.none},update(deco,tr$1){if(!tr$1.docChanged&&!tr$1.selection)return deco;let decorations$2=[],config$1=tr$1.state.facet(bracketMatchingConfig);for(let range$1 of tr$1.state.selection.ranges){if(!range$1.empty)continue;let match=matchBrackets(tr$1.state,range$1.head,-1,config$1)||range$1.head>0&&matchBrackets(tr$1.state,range$1.head-1,1,config$1)||config$1.afterCursor&&(matchBrackets(tr$1.state,range$1.head,1,config$1)||range$1.head<tr$1.state.doc.length&&matchBrackets(tr$1.state,range$1.head+1,-1,config$1));match&&(decorations$2=decorations$2.concat(config$1.renderMatch(match,tr$1.state)))}return Decoration.set(decorations$2,!0)},provide:f$2=>EditorView.decorations.from(f$2)}),baseTheme$3];function bracketMatching(config$1={}){return[bracketMatchingConfig.of(config$1),bracketMatchingUnique]}var bracketMatchingHandle=new NodeProp;function matchingNodes(node$1,dir,brackets){let byProp=node$1.prop(dir<0?NodeProp.openedBy:NodeProp.closedBy);if(byProp)return byProp;if(node$1.name.length==1){let index$4=brackets.indexOf(node$1.name);if(index$4>-1&&index$4%2==(dir<0?1:0))return[brackets[index$4+dir]]}return null}function findHandle(node$1){let hasHandle=node$1.type.prop(bracketMatchingHandle);return hasHandle?hasHandle(node$1.node):node$1}function matchBrackets(state$1,pos,dir,config$1={}){let maxScanDistance=config$1.maxScanDistance||DefaultScanDist,brackets=config$1.brackets||DefaultBrackets,tree=syntaxTree(state$1),node$1=tree.resolveInner(pos,dir);for(let cur$1=node$1;cur$1;cur$1=cur$1.parent){let matches$2=matchingNodes(cur$1.type,dir,brackets);if(matches$2&&cur$1.from<cur$1.to){let handle$1=findHandle(cur$1);if(handle$1&&(dir>0?pos>=handle$1.from&&pos<handle$1.to:pos>handle$1.from&&pos<=handle$1.to))return matchMarkedBrackets(state$1,pos,dir,cur$1,handle$1,matches$2,brackets)}}return matchPlainBrackets(state$1,pos,dir,tree,node$1.type,maxScanDistance,brackets)}function matchMarkedBrackets(_state,_pos,dir,token$1,handle$1,matching,brackets){let parent=token$1.parent,firstToken={from:handle$1.from,to:handle$1.to},depth=0,cursor=parent?.cursor();if(cursor&&(dir<0?cursor.childBefore(token$1.from):cursor.childAfter(token$1.to)))do if(dir<0?cursor.to<=token$1.from:cursor.from>=token$1.to){if(depth==0&&matching.indexOf(cursor.type.name)>-1&&cursor.from<cursor.to){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle?{from:endHandle.from,to:endHandle.to}:void 0,matched:!0}}else if(matchingNodes(cursor.type,dir,brackets))depth++;else if(matchingNodes(cursor.type,-dir,brackets)){if(depth==0){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle&&endHandle.from<endHandle.to?{from:endHandle.from,to:endHandle.to}:void 0,matched:!1}}depth--}}while(dir<0?cursor.prevSibling():cursor.nextSibling());return{start:firstToken,matched:!1}}function matchPlainBrackets(state$1,pos,dir,tree,tokenType,maxScanDistance,brackets){let startCh=dir<0?state$1.sliceDoc(pos-1,pos):state$1.sliceDoc(pos,pos+1),bracket$1=brackets.indexOf(startCh);if(bracket$1<0||bracket$1%2==0!=dir>0)return null;let startToken={from:dir<0?pos-1:pos,to:dir>0?pos+1:pos},iter=state$1.doc.iterRange(pos,dir>0?state$1.doc.length:0),depth=0;for(let distance=0;!iter.next().done&&distance<=maxScanDistance;){let text$5=iter.value;dir<0&&(distance+=text$5.length);let basePos=pos+distance*dir;for(let pos$1=dir>0?0:text$5.length-1,end=dir>0?text$5.length:-1;pos$1!=end;pos$1+=dir){let found=brackets.indexOf(text$5[pos$1]);if(!(found<0||tree.resolveInner(basePos+pos$1,1).type!=tokenType))if(found%2==0==dir>0)depth++;else if(depth==1)return{start:startToken,end:{from:basePos+pos$1,to:basePos+pos$1+1},matched:found>>1==bracket$1>>1};else depth--}dir>0&&(distance+=text$5.length)}return iter.done?{start:startToken,matched:!1}:null}var noTokens=Object.create(null),typeArray=[NodeType.none],warned=[],byTag=Object.create(null),defaultTable=Object.create(null);for(let[legacyName,name$2]of[[`variable`,`variableName`],[`variable-2`,`variableName.special`],[`string-2`,`string.special`],[`def`,`variableName.definition`],[`tag`,`tagName`],[`attribute`,`attributeName`],[`type`,`typeName`],[`builtin`,`variableName.standard`],[`qualifier`,`modifier`],[`error`,`invalid`],[`header`,`heading`],[`property`,`propertyName`]])defaultTable[legacyName]=createTokenType(noTokens,name$2);function warnForPart(part,msg){warned.indexOf(part)>-1||(warned.push(part),console.warn(msg))}function createTokenType(extra,tagStr){let tags$1=[];for(let name$3 of tagStr.split(` `)){let found=[];for(let part of name$3.split(`.`)){let value=extra[part]||tags[part];value?typeof value==`function`?found.length?found=found.map(value):warnForPart(part,`Modifier ${part} used at start of tag`):found.length?warnForPart(part,`Tag ${part} used as modifier`):found=Array.isArray(value)?value:[value]:warnForPart(part,`Unknown highlighting tag ${part}`)}for(let tag of found)tags$1.push(tag)}if(!tags$1.length)return 0;let name$2=tagStr.replace(/ /g,`_`),key$1=name$2+` `+tags$1.map(t$1=>t$1.id),known=byTag[key$1];if(known)return known.id;let type=byTag[key$1]=NodeType.define({id:typeArray.length,name:name$2,props:[styleTags({[name$2]:tags$1})]});return typeArray.push(type),type.id}var marks={rtl:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`rtl`},bidiIsolate:Direction.RTL}),ltr:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`ltr`},bidiIsolate:Direction.LTR}),auto:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`auto`},bidiIsolate:null})},CompletionContext=class{constructor(state$1,pos,explicit,view){this.state=state$1,this.pos=pos,this.explicit=explicit,this.view=view,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(types$1){let token$1=syntaxTree(this.state).resolveInner(this.pos,-1);for(;token$1&&types$1.indexOf(token$1.name)<0;)token$1=token$1.parent;return token$1?{from:token$1.from,to:this.pos,text:this.state.sliceDoc(token$1.from,this.pos),type:token$1.type}:null}matchBefore(expr){let line=this.state.doc.lineAt(this.pos),start=Math.max(line.from,this.pos-250),str=line.text.slice(start-line.from,this.pos-line.from),found=str.search(ensureAnchor(expr,!1));return found<0?null:{from:start+found,to:this.pos,text:str.slice(found)}}get aborted(){return this.abortListeners==null}addEventListener(type,listener,options$1){type==`abort`&&this.abortListeners&&(this.abortListeners.push(listener),options$1&&options$1.onDocChange&&(this.abortOnDocChange=!0))}};function toSet(chars){let flat=Object.keys(chars).join(``),words=/\w/.test(flat);return words&&(flat=flat.replace(/\w/g,``)),`[${words?`\\w`:``}${flat.replace(/[^\w\s]/g,`\\$&`)}]`}function prefixMatch(options$1){let first=Object.create(null),rest=Object.create(null);for(let{label}of options$1){first[label[0]]=!0;for(let i$3=1;i$3<label.length;i$3++)rest[label[i$3]]=!0}let source=toSet(first)+toSet(rest)+`*$`;return[RegExp(`^`+source),new RegExp(source)]}function completeFromList(list$2){let options$1=list$2.map(o$2=>typeof o$2==`string`?{label:o$2}:o$2),[validFor,match]=options$1.every(o$2=>/^\w+$/.test(o$2.label))?[/\w*$/,/\w+$/]:prefixMatch(options$1);return context=>{let token$1=context.matchBefore(match);return token$1||context.explicit?{from:token$1?token$1.from:context.pos,options:options$1,validFor}:null}}var Option=class{constructor(completion,source,match,score$1){this.completion=completion,this.source=source,this.match=match,this.score=score$1}};function cur(state$1){return state$1.selection.main.from}function ensureAnchor(expr,start){var _a$1;let{source}=expr,addStart=start&&source[0]!=`^`,addEnd=source[source.length-1]!=`$`;return!addStart&&!addEnd?expr:RegExp(`${addStart?`^`:``}(?:${source})${addEnd?`$`:``}`,expr.flags??(expr.ignoreCase?`i`:``))}var pickedCompletion=Annotation.define();function insertCompletionText(state$1,text$5,from,to){let{main:main$1}=state$1.selection,fromOff=from-main$1.from,toOff=to-main$1.from;return{...state$1.changeByRange(range$1=>{if(range$1!=main$1&&from!=to&&state$1.sliceDoc(range$1.from+fromOff,range$1.from+toOff)!=state$1.sliceDoc(from,to))return{range:range$1};let lines=state$1.toText(text$5);return{changes:{from:range$1.from+fromOff,to:to==main$1.from?range$1.to:range$1.from+toOff,insert:lines},range:EditorSelection.cursor(range$1.from+fromOff+lines.length)}}),scrollIntoView:!0,userEvent:`input.complete`}}var SourceCache=new WeakMap;function asSource(source){if(!Array.isArray(source))return source;let known=SourceCache.get(source);return known||SourceCache.set(source,known=completeFromList(source)),known}var startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),FuzzyMatcher=class{constructor(pattern){this.pattern=pattern,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let p$1=0;p$1<pattern.length;){let char=codePointAt(pattern,p$1),size$3=codePointSize(char);this.chars.push(char);let part=pattern.slice(p$1,p$1+size$3),upper=part.toUpperCase();this.folded.push(codePointAt(upper==part?part.toLowerCase():upper,0)),p$1+=size$3}this.astral=pattern.length!=this.chars.length}ret(score$1,matched){return this.score=score$1,this.matched=matched,this}match(word){if(this.pattern.length==0)return this.ret(-100,[]);if(word.length<this.pattern.length)return null;let{chars,folded,any,precise,byWord}=this;if(chars.length==1){let first=codePointAt(word,0),firstSize=codePointSize(first),score$1=firstSize==word.length?0:-100;if(first!=chars[0])if(first==folded[0])score$1+=-200;else return null;return this.ret(score$1,[0,firstSize])}let direct=word.indexOf(this.pattern);if(direct==0)return this.ret(word.length==this.pattern.length?0:-100,[0,this.pattern.length]);let len=chars.length,anyTo=0;if(direct<0){for(let i$3=0,e=Math.min(word.length,200);i$3<e&&anyTo<len;){let next=codePointAt(word,i$3);(next==chars[anyTo]||next==folded[anyTo])&&(any[anyTo++]=i$3),i$3+=codePointSize(next)}if(anyTo<len)return null}let preciseTo=0,byWordTo=0,byWordFolded=!1,adjacentTo=0,adjacentStart=-1,adjacentEnd=-1,hasLower=/[a-z]/.test(word),wordAdjacent=!0;for(let i$3=0,e=Math.min(word.length,200),prevType=0;i$3<e&&byWordTo<len;){let next=codePointAt(word,i$3);direct<0&&(preciseTo<len&&next==chars[preciseTo]&&(precise[preciseTo++]=i$3),adjacentTo<len&&(next==chars[adjacentTo]||next==folded[adjacentTo]?(adjacentTo==0&&(adjacentStart=i$3),adjacentEnd=i$3+1,adjacentTo++):adjacentTo=0));let ch,type=next<255?next>=48&&next<=57||next>=97&&next<=122?2:next>=65&&next<=90?1:0:(ch=fromCodePoint(next))==ch.toLowerCase()?ch==ch.toUpperCase()?0:2:1;(!i$3||type==1&&hasLower||prevType==0&&type!=0)&&(chars[byWordTo]==next||folded[byWordTo]==next&&(byWordFolded=!0)?byWord[byWordTo++]=i$3:byWord.length&&(wordAdjacent=!1)),prevType=type,i$3+=codePointSize(next)}return byWordTo==len&&byWord[0]==0&&wordAdjacent?this.result(-100+(byWordFolded?-200:0),byWord,word):adjacentTo==len&&adjacentStart==0?this.ret(-200-word.length+(adjacentEnd==word.length?0:-100),[0,adjacentEnd]):direct>-1?this.ret(-700-word.length,[direct,direct+this.pattern.length]):adjacentTo==len?this.ret(-900-word.length,[adjacentStart,adjacentEnd]):byWordTo==len?this.result(-100+(byWordFolded?-200:0)+-700+(wordAdjacent?0:-1100),byWord,word):chars.length==2?null:this.result((any[0]?-700:0)+-200+-1100,any,word)}result(score$1,positions,word){let result=[],i$3=0;for(let pos of positions){let to=pos+(this.astral?codePointSize(codePointAt(word,pos)):1);i$3&&result[i$3-1]==pos?result[i$3-1]=to:(result[i$3++]=pos,result[i$3++]=to)}return this.ret(score$1-word.length,result)}},StrictMatcher=class{constructor(pattern){this.pattern=pattern,this.matched=[],this.score=0,this.folded=pattern.toLowerCase()}match(word){if(word.length<this.pattern.length)return null;let start=word.slice(0,this.pattern.length),match=start==this.pattern?0:start.toLowerCase()==this.folded?-200:null;return match==null?null:(this.matched=[0,start.length],this.score=match+(word.length==this.pattern.length?0:-100),this)}},completionConfig=Facet.define({combine(configs){return combineConfig(configs,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>``,optionClass:()=>``,aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:defaultPositionInfo,filterStrict:!1,compareCompletions:(a$1,b$2)=>(a$1.sortText||a$1.label).localeCompare(b$2.sortText||b$2.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(a$1,b$2)=>a$1&&b$2,closeOnBlur:(a$1,b$2)=>a$1&&b$2,icons:(a$1,b$2)=>a$1&&b$2,tooltipClass:(a$1,b$2)=>c=>joinClass(a$1(c),b$2(c)),optionClass:(a$1,b$2)=>c=>joinClass(a$1(c),b$2(c)),addToOptions:(a$1,b$2)=>a$1.concat(b$2),filterStrict:(a$1,b$2)=>a$1||b$2})}});function joinClass(a$1,b$2){return a$1?b$2?a$1+` `+b$2:a$1:b$2}function defaultPositionInfo(view,list$2,option$1,info,space$1,tooltip){let rtl=view.textDirection==Direction.RTL,left=rtl,narrow=!1,side=`top`,offset$3,maxWidth,spaceLeft=list$2.left-space$1.left,spaceRight=space$1.right-list$2.right,infoWidth=info.right-info.left,infoHeight=info.bottom-info.top;if(left&&spaceLeft<Math.min(infoWidth,spaceRight)?left=!1:!left&&spaceRight<Math.min(infoWidth,spaceLeft)&&(left=!0),infoWidth<=(left?spaceLeft:spaceRight))offset$3=Math.max(space$1.top,Math.min(option$1.top,space$1.bottom-infoHeight))-list$2.top,maxWidth=Math.min(400,left?spaceLeft:spaceRight);else{narrow=!0,maxWidth=Math.min(400,(rtl?list$2.right:space$1.right-list$2.left)-30);let spaceBelow=space$1.bottom-list$2.bottom;spaceBelow>=infoHeight||spaceBelow>list$2.top?offset$3=option$1.bottom-list$2.top:(side=`bottom`,offset$3=list$2.bottom-option$1.top)}let scaleY=(list$2.bottom-list$2.top)/tooltip.offsetHeight,scaleX=(list$2.right-list$2.left)/tooltip.offsetWidth;return{style:`${side}: ${offset$3/scaleY}px; max-width: ${maxWidth/scaleX}px`,class:`cm-completionInfo-`+(narrow?rtl?`left-narrow`:`right-narrow`:left?`left`:`right`)}}function optionContent(config$1){let content$3=config$1.addToOptions.slice();return config$1.icons&&content$3.push({render(completion){let icon=document.createElement(`div`);return icon.classList.add(`cm-completionIcon`),completion.type&&icon.classList.add(...completion.type.split(/\s+/g).map(cls=>`cm-completionIcon-`+cls)),icon.setAttribute(`aria-hidden`,`true`),icon},position:20}),content$3.push({render(completion,_s,_v,match){let labelElt=document.createElement(`span`);labelElt.className=`cm-completionLabel`;let label=completion.displayLabel||completion.label,off=0;for(let j$1=0;j$1<match.length;){let from=match[j$1++],to=match[j$1++];from>off&&labelElt.appendChild(document.createTextNode(label.slice(off,from)));let span=labelElt.appendChild(document.createElement(`span`));span.appendChild(document.createTextNode(label.slice(from,to))),span.className=`cm-completionMatchedText`,off=to}return off<label.length&&labelElt.appendChild(document.createTextNode(label.slice(off))),labelElt},position:50},{render(completion){if(!completion.detail)return null;let detailElt=document.createElement(`span`);return detailElt.className=`cm-completionDetail`,detailElt.textContent=completion.detail,detailElt},position:80}),content$3.sort((a$1,b$2)=>a$1.position-b$2.position).map(a$1=>a$1.render)}function rangeAroundSelected(total,selected,max$1){if(total<=max$1)return{from:0,to:total};if(selected<0&&(selected=0),selected<=total>>1){let off$1=Math.floor(selected/max$1);return{from:off$1*max$1,to:(off$1+1)*max$1}}let off=Math.floor((total-selected)/max$1);return{from:total-(off+1)*max$1,to:total-off*max$1}}var CompletionTooltip=class{constructor(view,stateField,applyCompletion$1){this.view=view,this.stateField=stateField,this.applyCompletion=applyCompletion$1,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:pos=>this.placeInfo(pos),key:this},this.space=null,this.currentClass=``;let cState=view.state.field(stateField),{options:options$1,selected}=cState.open,config$1=view.state.facet(completionConfig);this.optionContent=optionContent(config$1),this.optionClass=config$1.optionClass,this.tooltipClass=config$1.tooltipClass,this.range=rangeAroundSelected(options$1.length,selected,config$1.maxRenderedOptions),this.dom=document.createElement(`div`),this.dom.className=`cm-tooltip-autocomplete`,this.updateTooltipClass(view.state),this.dom.addEventListener(`mousedown`,e=>{let{options:options$2}=view.state.field(stateField).open;for(let dom=e.target,match;dom&&dom!=this.dom;dom=dom.parentNode)if(dom.nodeName==`LI`&&(match=/-(\d+)$/.exec(dom.id))&&+match[1]<options$2.length){this.applyCompletion(view,options$2[+match[1]]),e.preventDefault();return}}),this.dom.addEventListener(`focusout`,e=>{let state$1=view.state.field(this.stateField,!1);state$1&&state$1.tooltip&&view.state.facet(completionConfig).closeOnBlur&&e.relatedTarget!=view.contentDOM&&view.dispatch({effects:closeCompletionEffect.of(null)})}),this.showOptions(options$1,cState.id)}mount(){this.updateSel()}showOptions(options$1,id){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(options$1,id,this.range)),this.list.addEventListener(`scroll`,()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(update$1){var _a$1;let cState=update$1.state.field(this.stateField),prevState=update$1.startState.field(this.stateField);if(this.updateTooltipClass(update$1.state),cState!=prevState){let{options:options$1,selected,disabled:disabled$1}=cState.open;(!prevState.open||prevState.open.options!=options$1)&&(this.range=rangeAroundSelected(options$1.length,selected,update$1.state.facet(completionConfig).maxRenderedOptions),this.showOptions(options$1,cState.id)),this.updateSel(),disabled$1!=prevState.open?.disabled&&this.dom.classList.toggle(`cm-tooltip-autocomplete-disabled`,!!disabled$1)}}updateTooltipClass(state$1){let cls=this.tooltipClass(state$1);if(cls!=this.currentClass){for(let c of this.currentClass.split(` `))c&&this.dom.classList.remove(c);for(let c of cls.split(` `))c&&this.dom.classList.add(c);this.currentClass=cls}}positioned(space$1){this.space=space$1,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let cState=this.view.state.field(this.stateField),open=cState.open;(open.selected>-1&&open.selected<this.range.from||open.selected>=this.range.to)&&(this.range=rangeAroundSelected(open.options.length,open.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.showOptions(open.options,cState.id));let newSel=this.updateSelectedOption(open.selected);if(newSel){this.destroyInfo();let{completion}=open.options[open.selected],{info}=completion;if(!info)return;let infoResult=typeof info==`string`?document.createTextNode(info):info(completion);if(!infoResult)return;`then`in infoResult?infoResult.then(obj=>{obj&&this.view.state.field(this.stateField,!1)==cState&&this.addInfoPane(obj,completion)}).catch(e=>logException(this.view.state,e,`completion info`)):(this.addInfoPane(infoResult,completion),newSel.setAttribute(`aria-describedby`,this.info.id))}}addInfoPane(content$3,completion){this.destroyInfo();let wrap$2=this.info=document.createElement(`div`);if(wrap$2.className=`cm-tooltip cm-completionInfo`,wrap$2.id=`cm-completionInfo-`+Math.floor(Math.random()*65535).toString(16),content$3.nodeType!=null)wrap$2.appendChild(content$3),this.infoDestroy=null;else{let{dom,destroy}=content$3;wrap$2.appendChild(dom),this.infoDestroy=destroy||null}this.dom.appendChild(wrap$2),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(selected){let set=null;for(let opt=this.list.firstChild,i$3=this.range.from;opt;opt=opt.nextSibling,i$3++)opt.nodeName!=`LI`||!opt.id?i$3--:i$3==selected?opt.hasAttribute(`aria-selected`)||(opt.setAttribute(`aria-selected`,`true`),set=opt):opt.hasAttribute(`aria-selected`)&&(opt.removeAttribute(`aria-selected`),opt.removeAttribute(`aria-describedby`));return set&&scrollIntoView(this.list,set),set}measureInfo(){let sel=this.dom.querySelector(`[aria-selected]`);if(!sel||!this.info)return null;let listRect=this.dom.getBoundingClientRect(),infoRect=this.info.getBoundingClientRect(),selRect=sel.getBoundingClientRect(),space$1=this.space;if(!space$1){let docElt=this.dom.ownerDocument.documentElement;space$1={left:0,top:0,right:docElt.clientWidth,bottom:docElt.clientHeight}}return selRect.top>Math.min(space$1.bottom,listRect.bottom)-10||selRect.bottom<Math.max(space$1.top,listRect.top)+10?null:this.view.state.facet(completionConfig).positionInfo(this.view,listRect,selRect,infoRect,space$1,this.dom)}placeInfo(pos){this.info&&(pos?(pos.style&&(this.info.style.cssText=pos.style),this.info.className=`cm-tooltip cm-completionInfo `+(pos.class||``)):this.info.style.cssText=`top: -1e6px`)}createListBox(options$1,id,range$1){let ul=document.createElement(`ul`);ul.id=id,ul.setAttribute(`role`,`listbox`),ul.setAttribute(`aria-expanded`,`true`),ul.setAttribute(`aria-label`,this.view.state.phrase(`Completions`)),ul.addEventListener(`mousedown`,e=>{e.target==ul&&e.preventDefault()});let curSection=null;for(let i$3=range$1.from;i$3<range$1.to;i$3++){let{completion,match}=options$1[i$3],{section}=completion;if(section){let name$2=typeof section==`string`?section:section.name;if(name$2!=curSection&&(i$3>range$1.from||range$1.from==0))if(curSection=name$2,typeof section!=`string`&&section.header)ul.appendChild(section.header(section));else{let header=ul.appendChild(document.createElement(`completion-section`));header.textContent=name$2}}let li$1=ul.appendChild(document.createElement(`li`));li$1.id=id+`-`+i$3,li$1.setAttribute(`role`,`option`);let cls=this.optionClass(completion);cls&&(li$1.className=cls);for(let source of this.optionContent){let node$1=source(completion,this.view.state,this.view,match);node$1&&li$1.appendChild(node$1)}}return range$1.from&&ul.classList.add(`cm-completionListIncompleteTop`),range$1.to<options$1.length&&ul.classList.add(`cm-completionListIncompleteBottom`),ul}destroyInfo(){this.info&&=(this.infoDestroy&&this.infoDestroy(),this.info.remove(),null)}destroy(){this.destroyInfo()}};function completionTooltip(stateField,applyCompletion$1){return view=>new CompletionTooltip(view,stateField,applyCompletion$1)}function scrollIntoView(container,element$3){let parent=container.getBoundingClientRect(),self$1=element$3.getBoundingClientRect(),scaleY=parent.height/container.offsetHeight;self$1.top<parent.top?container.scrollTop-=(parent.top-self$1.top)/scaleY:self$1.bottom>parent.bottom&&(container.scrollTop+=(self$1.bottom-parent.bottom)/scaleY)}function score(option$1){return(option$1.boost||0)*100+(option$1.apply?10:0)+(option$1.info?5:0)+(option$1.type?1:0)}function sortOptions(active,state$1){let options$1=[],sections=null,dynamicSectionScore=null,addOption=option$1=>{options$1.push(option$1);let{section}=option$1.completion;if(section){sections||=[];let name$2=typeof section==`string`?section:section.name;sections.some(s$1=>s$1.name==name$2)||sections.push(typeof section==`string`?{name:name$2}:section)}},conf=state$1.facet(completionConfig);for(let a$1 of active)if(a$1.hasResult()){let getMatch=a$1.result.getMatch;if(a$1.result.filter===!1)for(let option$1 of a$1.result.options)addOption(new Option(option$1,a$1.source,getMatch?getMatch(option$1):[],1e9-options$1.length));else{let pattern=state$1.sliceDoc(a$1.from,a$1.to),match,matcher=conf.filterStrict?new StrictMatcher(pattern):new FuzzyMatcher(pattern);for(let option$1 of a$1.result.options)if(match=matcher.match(option$1.label)){let matched=option$1.displayLabel?getMatch?getMatch(option$1,match.matched):[]:match.matched,score$1=match.score+(option$1.boost||0);if(addOption(new Option(option$1,a$1.source,matched,score$1)),typeof option$1.section==`object`&&option$1.section.rank===`dynamic`){let{name:name$2}=option$1.section;dynamicSectionScore||=Object.create(null),dynamicSectionScore[name$2]=Math.max(score$1,dynamicSectionScore[name$2]||-1e9)}}}}if(sections){let sectionOrder=Object.create(null),pos=0,cmp=(a$1,b$2)=>(a$1.rank===`dynamic`&&b$2.rank===`dynamic`?dynamicSectionScore[b$2.name]-dynamicSectionScore[a$1.name]:0)||(typeof a$1.rank==`number`?a$1.rank:1e9)-(typeof b$2.rank==`number`?b$2.rank:1e9)||(a$1.name<b$2.name?-1:1);for(let s$1 of sections.sort(cmp))pos-=1e5,sectionOrder[s$1.name]=pos;for(let option$1 of options$1){let{section}=option$1.completion;section&&(option$1.score+=sectionOrder[typeof section==`string`?section:section.name])}}let result=[],prev=null,compare$2=conf.compareCompletions;for(let opt of options$1.sort((a$1,b$2)=>b$2.score-a$1.score||compare$2(a$1.completion,b$2.completion))){let cur$1=opt.completion;!prev||prev.label!=cur$1.label||prev.detail!=cur$1.detail||prev.type!=null&&cur$1.type!=null&&prev.type!=cur$1.type||prev.apply!=cur$1.apply||prev.boost!=cur$1.boost?result.push(opt):score(opt.completion)>score(prev)&&(result[result.length-1]=opt),prev=opt.completion}return result}var CompletionDialog=class CompletionDialog{constructor(options$1,attrs,tooltip,timestamp,selected,disabled$1){this.options=options$1,this.attrs=attrs,this.tooltip=tooltip,this.timestamp=timestamp,this.selected=selected,this.disabled=disabled$1}setSelected(selected,id){return selected==this.selected||selected>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(id,selected),this.tooltip,this.timestamp,selected,this.disabled)}static build(active,state$1,id,prev,conf,didSetActive){if(prev&&!didSetActive&&active.some(s$1=>s$1.isPending))return prev.setDisabled();let options$1=sortOptions(active,state$1);if(!options$1.length)return prev&&active.some(a$1=>a$1.isPending)?prev.setDisabled():null;let selected=state$1.facet(completionConfig).selectOnOpen?0:-1;if(prev&&prev.selected!=selected&&prev.selected!=-1){let selectedValue=prev.options[prev.selected].completion;for(let i$3=0;i$3<options$1.length;i$3++)if(options$1[i$3].completion==selectedValue){selected=i$3;break}}return new CompletionDialog(options$1,makeAttrs(id,selected),{pos:active.reduce((a$1,b$2)=>b$2.hasResult()?Math.min(a$1,b$2.from):a$1,1e8),create:createTooltip,above:conf.aboveCursor},prev?prev.timestamp:Date.now(),selected,!1)}map(changes){return new CompletionDialog(this.options,this.attrs,{...this.tooltip,pos:changes.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new CompletionDialog(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}},CompletionState=class CompletionState{constructor(active,id,open){this.active=active,this.id=id,this.open=open}static start(){return new CompletionState(none$1,`cm-ac-`+Math.floor(Math.random()*2e6).toString(36),null)}update(tr$1){let{state:state$1}=tr$1,conf=state$1.facet(completionConfig),active=(conf.override||state$1.languageDataAt(`autocomplete`,cur(state$1)).map(asSource)).map(source=>(this.active.find(s$1=>s$1.source==source)||new ActiveSource(source,this.active.some(a$1=>a$1.state!=0)?1:0)).update(tr$1,conf));active.length==this.active.length&&active.every((a$1,i$3)=>a$1==this.active[i$3])&&(active=this.active);let open=this.open,didSet=tr$1.effects.some(e=>e.is(setActiveEffect));open&&tr$1.docChanged&&(open=open.map(tr$1.changes)),tr$1.selection||active.some(a$1=>a$1.hasResult()&&tr$1.changes.touchesRange(a$1.from,a$1.to))||!sameResults(active,this.active)||didSet?open=CompletionDialog.build(active,state$1,this.id,open,conf,didSet):open&&open.disabled&&!active.some(a$1=>a$1.isPending)&&(open=null),!open&&active.every(a$1=>!a$1.isPending)&&active.some(a$1=>a$1.hasResult())&&(active=active.map(a$1=>a$1.hasResult()?new ActiveSource(a$1.source,0):a$1));for(let effect of tr$1.effects)effect.is(setSelectedEffect)&&(open&&=open.setSelected(effect.value,this.id));return active==this.active&&open==this.open?this:new CompletionState(active,this.id,open)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?baseAttrs:noAttrs}};function sameResults(a$1,b$2){if(a$1==b$2)return!0;for(let iA=0,iB=0;;){for(;iA<a$1.length&&!a$1[iA].hasResult();)iA++;for(;iB<b$2.length&&!b$2[iB].hasResult();)iB++;let endA=iA==a$1.length,endB=iB==b$2.length;if(endA||endB)return endA==endB;if(a$1[iA++].result!=b$2[iB++].result)return!1}}var baseAttrs={"aria-autocomplete":`list`},noAttrs={};function makeAttrs(id,selected){let result={"aria-autocomplete":`list`,"aria-haspopup":`listbox`,"aria-controls":id};return selected>-1&&(result[`aria-activedescendant`]=id+`-`+selected),result}var none$1=[];function getUpdateType(tr$1,conf){if(tr$1.isUserEvent(`input.complete`)){let completion=tr$1.annotation(pickedCompletion);if(completion&&conf.activateOnCompletion(completion))return 12}let typing=tr$1.isUserEvent(`input.type`);return typing&&conf.activateOnTyping?5:typing?1:tr$1.isUserEvent(`delete.backward`)?2:tr$1.selection?8:tr$1.docChanged?16:0}var ActiveSource=class ActiveSource{constructor(source,state$1,explicit=!1){this.source=source,this.state=state$1,this.explicit=explicit}hasResult(){return!1}get isPending(){return this.state==1}update(tr$1,conf){let type=getUpdateType(tr$1,conf),value=this;(type&8||type&16&&this.touches(tr$1))&&(value=new ActiveSource(value.source,0)),type&4&&value.state==0&&(value=new ActiveSource(this.source,1)),value=value.updateFor(tr$1,type);for(let effect of tr$1.effects)if(effect.is(startCompletionEffect))value=new ActiveSource(value.source,1,effect.value);else if(effect.is(closeCompletionEffect))value=new ActiveSource(value.source,0);else if(effect.is(setActiveEffect))for(let active of effect.value)active.source==value.source&&(value=active);return value}updateFor(tr$1,type){return this.map(tr$1.changes)}map(changes){return this}touches(tr$1){return tr$1.changes.touchesRange(cur(tr$1.state))}},ActiveResult=class ActiveResult extends ActiveSource{constructor(source,explicit,limit,result,from,to){super(source,3,explicit),this.limit=limit,this.result=result,this.from=from,this.to=to}hasResult(){return!0}updateFor(tr$1,type){var _a$1;if(!(type&3))return this.map(tr$1.changes);let result=this.result;result.map&&!tr$1.changes.empty&&(result=result.map(result,tr$1.changes));let from=tr$1.changes.mapPos(this.from),to=tr$1.changes.mapPos(this.to,1),pos=cur(tr$1.state);if(pos>to||!result||type&2&&(cur(tr$1.startState)==this.from||pos<this.limit))return new ActiveSource(this.source,type&4?1:0);let limit=tr$1.changes.mapPos(this.limit);return checkValid(result.validFor,tr$1.state,from,to)?new ActiveResult(this.source,this.explicit,limit,result,from,to):result.update&&(result=result.update(result,from,to,new CompletionContext(tr$1.state,pos,!1)))?new ActiveResult(this.source,this.explicit,limit,result,result.from,result.to??cur(tr$1.state)):new ActiveSource(this.source,1,this.explicit)}map(mapping){return mapping.empty?this:(this.result.map?this.result.map(this.result,mapping):this.result)?new ActiveResult(this.source,this.explicit,mapping.mapPos(this.limit),this.result,mapping.mapPos(this.from),mapping.mapPos(this.to,1)):new ActiveSource(this.source,0)}touches(tr$1){return tr$1.changes.touchesRange(this.from,this.to)}};function checkValid(validFor,state$1,from,to){if(!validFor)return!1;let text$5=state$1.sliceDoc(from,to);return typeof validFor==`function`?validFor(text$5,from,to,state$1):ensureAnchor(validFor,!0).test(text$5)}var setActiveEffect=StateEffect.define({map(sources,mapping){return sources.map(s$1=>s$1.map(mapping))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(value,tr$1){return value.update(tr$1)},provide:f$2=>[showTooltip.from(f$2,val=>val.tooltip),EditorView.contentAttributes.from(f$2,state$1=>state$1.attrs)]});function applyCompletion(view,option$1){let apply=option$1.completion.apply||option$1.completion.label,result=view.state.field(completionState).active.find(a$1=>a$1.source==option$1.source);return result instanceof ActiveResult?(typeof apply==`string`?view.dispatch({...insertCompletionText(view.state,apply,result.from,result.to),annotations:pickedCompletion.of(option$1.completion)}):apply(view,option$1.completion,result.from,result.to),!0):!1}var createTooltip=completionTooltip(completionState,applyCompletion);function moveCompletionSelection(forward,by=`option`){return view=>{let cState=view.state.field(completionState,!1);if(!cState||!cState.open||cState.open.disabled||Date.now()-cState.open.timestamp<view.state.facet(completionConfig).interactionDelay)return!1;let step=1,tooltip;by==`page`&&(tooltip=getTooltip(view,cState.open.tooltip))&&(step=Math.max(2,Math.floor(tooltip.dom.offsetHeight/tooltip.dom.querySelector(`li`).offsetHeight)-1));let{length}=cState.open.options,selected=cState.open.selected>-1?cState.open.selected+step*(forward?1:-1):forward?0:length-1;return selected<0?selected=by==`page`?0:length-1:selected>=length&&(selected=by==`page`?length-1:0),view.dispatch({effects:setSelectedEffect.of(selected)}),!0}}var acceptCompletion=view=>{let cState=view.state.field(completionState,!1);return view.state.readOnly||!cState||!cState.open||cState.open.selected<0||cState.open.disabled||Date.now()-cState.open.timestamp<view.state.facet(completionConfig).interactionDelay?!1:applyCompletion(view,cState.open.options[cState.open.selected])},startCompletion=view=>view.state.field(completionState,!1)?(view.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=view=>{let cState=view.state.field(completionState,!1);return!cState||!cState.active.some(a$1=>a$1.state!=0)?!1:(view.dispatch({effects:closeCompletionEffect.of(null)}),!0)},RunningQuery=class{constructor(active,context){this.active=active,this.context=context,this.time=Date.now(),this.updates=[],this.done=void 0}},MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let active of view.state.field(completionState).active)active.isPending&&this.startQuery(active)}update(update$1){let cState=update$1.state.field(completionState),conf=update$1.state.facet(completionConfig);if(!update$1.selectionSet&&!update$1.docChanged&&update$1.startState.field(completionState)==cState)return;let doesReset=update$1.transactions.some(tr$1=>{let type=getUpdateType(tr$1,conf);return type&8||(tr$1.selection||tr$1.docChanged)&&!(type&3)});for(let i$3=0;i$3<this.running.length;i$3++){let query=this.running[i$3];if(doesReset||query.context.abortOnDocChange&&update$1.docChanged||query.updates.length+update$1.transactions.length>MaxUpdateCount&&Date.now()-query.time>MinAbortTime){for(let handler of query.context.abortListeners)try{handler()}catch(e){logException(this.view.state,e)}query.context.abortListeners=null,this.running.splice(i$3--,1)}else query.updates.push(...update$1.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),update$1.transactions.some(tr$1=>tr$1.effects.some(e=>e.is(startCompletionEffect)))&&(this.pendingStart=!0);let delay=this.pendingStart?50:conf.activateOnTypingDelay;if(this.debounceUpdate=cState.active.some(a$1=>a$1.isPending&&!this.running.some(q$1=>q$1.active.source==a$1.source))?setTimeout(()=>this.startUpdate(),delay):-1,this.composing!=0)for(let tr$1 of update$1.transactions)tr$1.isUserEvent(`input.type`)?this.composing=2:this.composing==2&&tr$1.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:state$1}=this.view,cState=state$1.field(completionState);for(let active of cState.active)active.isPending&&!this.running.some(r$4=>r$4.active.source==active.source)&&this.startQuery(active);this.running.length&&cState.open&&cState.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime))}startQuery(active){let{state:state$1}=this.view,context=new CompletionContext(state$1,cur(state$1),active.explicit,this.view),pending=new RunningQuery(active,context);this.running.push(pending),Promise.resolve(active.source(context)).then(result=>{pending.context.aborted||(pending.done=result||null,this.scheduleAccept())},err=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,err)})}scheduleAccept(){this.running.every(q$1=>q$1.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime))}accept(){var _a$1;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let updated=[],conf=this.view.state.facet(completionConfig),cState=this.view.state.field(completionState);for(let i$3=0;i$3<this.running.length;i$3++){let query=this.running[i$3];if(query.done===void 0)continue;if(this.running.splice(i$3--,1),query.done){let pos=cur(query.updates.length?query.updates[0].startState:this.view.state),limit=Math.min(pos,query.done.from+(query.active.explicit?0:1)),active=new ActiveResult(query.active.source,query.active.explicit,limit,query.done,query.done.from,query.done.to??pos);for(let tr$1 of query.updates)active=active.update(tr$1,conf);if(active.hasResult()){updated.push(active);continue}}let current=cState.active.find(a$1=>a$1.source==query.active.source);if(current&&current.isPending)if(query.done==null){let active=new ActiveSource(query.active.source,0);for(let tr$1 of query.updates)active=active.update(tr$1,conf);active.isPending||updated.push(active)}else this.startQuery(current)}(updated.length||cState.open&&cState.open.disabled)&&this.view.dispatch({effects:setActiveEffect.of(updated)})}},{eventHandlers:{blur(event){let state$1=this.view.state.field(completionState,!1);if(state$1&&state$1.tooltip&&this.view.state.facet(completionConfig).closeOnBlur){let dialog=state$1.open&&getTooltip(this.view,state$1.open.tooltip);(!dialog||!dialog.dom.contains(event.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:closeCompletionEffect.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),windows=typeof navigator==`object`&&/Win/.test(navigator.platform),commitCharacters=Prec.highest(EditorView.domEventHandlers({keydown(event,view){let field=view.state.field(completionState,!1);if(!field||!field.open||field.open.disabled||field.open.selected<0||event.key.length>1||event.ctrlKey&&!(windows&&event.altKey)||event.metaKey)return!1;let option$1=field.open.options[field.open.selected],result=field.active.find(a$1=>a$1.source==option$1.source),commitChars=option$1.completion.commitCharacters||result.result.commitCharacters;return commitChars&&commitChars.indexOf(event.key)>-1&&applyCompletion(view,option$1),!1}})),baseTheme$2=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:`monospace`,whiteSpace:`nowrap`,overflow:`hidden auto`,maxWidth_fallback:`700px`,maxWidth:`min(700px, 95vw)`,minWidth:`250px`,maxHeight:`10em`,height:`100%`,listStyle:`none`,margin:0,padding:0,"& > li, & > completion-section":{padding:`1px 3px`,lineHeight:1.2},"& > li":{overflowX:`hidden`,textOverflow:`ellipsis`,cursor:`pointer`},"& > completion-section":{display:`list-item`,borderBottom:`1px solid silver`,paddingLeft:`0.5em`,opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#17c`,color:`white`},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#777`},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#347`,color:`white`},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#444`},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:`"···"`,opacity:.5,display:`block`,textAlign:`center`},".cm-tooltip.cm-completionInfo":{position:`absolute`,padding:`3px 9px`,width:`max-content`,maxWidth:`400px`,boxSizing:`border-box`,whiteSpace:`pre-line`},".cm-completionInfo.cm-completionInfo-left":{right:`100%`},".cm-completionInfo.cm-completionInfo-right":{left:`100%`},".cm-completionInfo.cm-completionInfo-left-narrow":{right:`30px`},".cm-completionInfo.cm-completionInfo-right-narrow":{left:`30px`},"&light .cm-snippetField":{backgroundColor:`#00000022`},"&dark .cm-snippetField":{backgroundColor:`#ffffff22`},".cm-snippetFieldPosition":{verticalAlign:`text-top`,width:0,height:`1.15em`,display:`inline-block`,margin:`0 -0.7px -.7em`,borderLeft:`1.4px dotted #888`},".cm-completionMatchedText":{textDecoration:`underline`},".cm-completionDetail":{marginLeft:`0.5em`,fontStyle:`italic`},".cm-completionIcon":{fontSize:`90%`,width:`.8em`,display:`inline-block`,textAlign:`center`,paddingRight:`.6em`,opacity:`0.6`,boxSizing:`content-box`},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:`'ƒ'`}},".cm-completionIcon-class":{"&:after":{content:`'○'`}},".cm-completionIcon-interface":{"&:after":{content:`'◌'`}},".cm-completionIcon-variable":{"&:after":{content:`'𝑥'`}},".cm-completionIcon-constant":{"&:after":{content:`'𝐶'`}},".cm-completionIcon-type":{"&:after":{content:`'𝑡'`}},".cm-completionIcon-enum":{"&:after":{content:`'∪'`}},".cm-completionIcon-property":{"&:after":{content:`'□'`}},".cm-completionIcon-keyword":{"&:after":{content:`'🔑︎'`}},".cm-completionIcon-namespace":{"&:after":{content:`'▢'`}},".cm-completionIcon-text":{"&:after":{content:`'abc'`,fontSize:`50%`,verticalAlign:`middle`}}}),defaults={brackets:[`(`,`[`,`{`,`'`,`"`],before:`)]}:;>`,stringPrefixes:[]},closeBracketEffect=StateEffect.define({map(value,mapping){return mapping.mapPos(value,-1,MapMode.TrackAfter)??void 0}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1,closedBracket.endSide=-1;var bracketState=StateField.define({create(){return RangeSet.empty},update(value,tr$1){if(value=value.map(tr$1.changes),tr$1.selection){let line=tr$1.state.doc.lineAt(tr$1.selection.main.head);value=value.update({filter:from=>from>=line.from&&from<=line.to})}for(let effect of tr$1.effects)effect.is(closeBracketEffect)&&(value=value.update({add:[closedBracket.range(effect.value,effect.value+1)]}));return value}});function closeBrackets(){return[inputHandler,bracketState]}var definedClosing=`()[]{}<>«»»«[]{}`;function closing$1(ch){for(let i$3=0;i$3<16;i$3+=2)if(definedClosing.charCodeAt(i$3)==ch)return definedClosing.charAt(i$3+1);return fromCodePoint(ch<128?ch:ch+1)}function config(state$1,pos){return state$1.languageDataAt(`closeBrackets`,pos)[0]||defaults}var android=typeof navigator==`object`&&/Android\b/.test(navigator.userAgent),inputHandler=EditorView.inputHandler.of((view,from,to,insert$1)=>{if((android?view.composing:view.compositionStarted)||view.state.readOnly)return!1;let sel=view.state.selection.main;if(insert$1.length>2||insert$1.length==2&&codePointSize(codePointAt(insert$1,0))==1||from!=sel.from||to!=sel.to)return!1;let tr$1=insertBracket(view.state,insert$1);return tr$1?(view.dispatch(tr$1),!0):!1});function insertBracket(state$1,bracket$1){let conf=config(state$1,state$1.selection.main.head),tokens=conf.brackets||defaults.brackets;for(let tok of tokens){let closed=closing$1(codePointAt(tok,0));if(bracket$1==tok)return closed==tok?handleSame(state$1,tok,tokens.indexOf(tok+tok+tok)>-1,conf):handleOpen(state$1,tok,closed,conf.before||defaults.before);if(bracket$1==closed&&closedBracketAt(state$1,state$1.selection.main.from))return handleClose(state$1,tok,closed)}return null}function closedBracketAt(state$1,pos){let found=!1;return state$1.field(bracketState).between(0,state$1.doc.length,from=>{from==pos&&(found=!0)}),found}function nextChar(doc$1,pos){let next=doc$1.sliceString(pos,pos+2);return next.slice(0,codePointSize(codePointAt(next,0)))}function handleOpen(state$1,open,close,closeBefore){let dont=null,changes=state$1.changeByRange(range$1=>{if(!range$1.empty)return{changes:[{insert:open,from:range$1.from},{insert:close,from:range$1.to}],effects:closeBracketEffect.of(range$1.to+open.length),range:EditorSelection.range(range$1.anchor+open.length,range$1.head+open.length)};let next=nextChar(state$1.doc,range$1.head);return!next||/\s/.test(next)||closeBefore.indexOf(next)>-1?{changes:{insert:open+close,from:range$1.head},effects:closeBracketEffect.of(range$1.head+open.length),range:EditorSelection.cursor(range$1.head+open.length)}:{range:dont=range$1}});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function handleClose(state$1,_open,close){let dont=null,changes=state$1.changeByRange(range$1=>range$1.empty&&nextChar(state$1.doc,range$1.head)==close?{changes:{from:range$1.head,to:range$1.head+close.length,insert:close},range:EditorSelection.cursor(range$1.head+close.length)}:dont={range:range$1});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function handleSame(state$1,token$1,allowTriple,config$1){let stringPrefixes=config$1.stringPrefixes||defaults.stringPrefixes,dont=null,changes=state$1.changeByRange(range$1=>{if(!range$1.empty)return{changes:[{insert:token$1,from:range$1.from},{insert:token$1,from:range$1.to}],effects:closeBracketEffect.of(range$1.to+token$1.length),range:EditorSelection.range(range$1.anchor+token$1.length,range$1.head+token$1.length)};let pos=range$1.head,next=nextChar(state$1.doc,pos),start;if(next==token$1){if(nodeStart(state$1,pos))return{changes:{insert:token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};if(closedBracketAt(state$1,pos)){let content$3=allowTriple&&state$1.sliceDoc(pos,pos+token$1.length*3)==token$1+token$1+token$1?token$1+token$1+token$1:token$1;return{changes:{from:pos,to:pos+content$3.length,insert:content$3},range:EditorSelection.cursor(pos+content$3.length)}}}else if(allowTriple&&state$1.sliceDoc(pos-2*token$1.length,pos)==token$1+token$1&&(start=canStartStringAt(state$1,pos-2*token$1.length,stringPrefixes))>-1&&nodeStart(state$1,start))return{changes:{insert:token$1+token$1+token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};else if(state$1.charCategorizer(pos)(next)!=CharCategory.Word&&canStartStringAt(state$1,pos,stringPrefixes)>-1&&!probablyInString(state$1,pos,token$1,stringPrefixes))return{changes:{insert:token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};return{range:dont=range$1}});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function nodeStart(state$1,pos){let tree=syntaxTree(state$1).resolveInner(pos+1);return tree.parent&&tree.from==pos}function probablyInString(state$1,pos,quoteToken,prefixes){let node$1=syntaxTree(state$1).resolveInner(pos,-1),maxPrefix=prefixes.reduce((m$2,p$1)=>Math.max(m$2,p$1.length),0);for(let i$3=0;i$3<5;i$3++){let start=state$1.sliceDoc(node$1.from,Math.min(node$1.to,node$1.from+quoteToken.length+maxPrefix)),quotePos=start.indexOf(quoteToken);if(!quotePos||quotePos>-1&&prefixes.indexOf(start.slice(0,quotePos))>-1){let first=node$1.firstChild;for(;first&&first.from==node$1.from&&first.to-first.from>quoteToken.length+quotePos;){if(state$1.sliceDoc(first.to-quoteToken.length,first.to)==quoteToken)return!1;first=first.firstChild}return!0}let parent=node$1.to==pos&&node$1.parent;if(!parent)break;node$1=parent}return!1}function canStartStringAt(state$1,pos,prefixes){let charCat=state$1.charCategorizer(pos);if(charCat(state$1.sliceDoc(pos-1,pos))!=CharCategory.Word)return pos;for(let prefix$1 of prefixes){let start=pos-prefix$1.length;if(state$1.sliceDoc(start,pos)==prefix$1&&charCat(state$1.sliceDoc(start-1,start))!=CharCategory.Word)return start}return-1}function autocompletion(config$1={}){return[commitCharacters,completionState,completionConfig.of(config$1),completionPlugin,completionKeymapExt,baseTheme$2]}var completionKeymap=[{key:`Ctrl-Space`,run:startCompletion},{mac:"Alt-`",run:startCompletion},{mac:`Alt-i`,run:startCompletion},{key:`Escape`,run:closeCompletion},{key:`ArrowDown`,run:moveCompletionSelection(!0)},{key:`ArrowUp`,run:moveCompletionSelection(!1)},{key:`PageDown`,run:moveCompletionSelection(!0,`page`)},{key:`PageUp`,run:moveCompletionSelection(!1,`page`)},{key:`Enter`,run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],state$1=>state$1.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),state={connectionId:null,selectedSchema:null,selectedTable:null,schemas:new Map,columns:new Map,isLoaded:!1};const schemaStore={setConnection(connectionId){state.connectionId!==connectionId&&(state.connectionId=connectionId,state.schemas.clear(),state.columns.clear(),state.isLoaded=!1)},setSelectedSchema(schema){state.selectedSchema=schema},setSelectedTable(table$1){state.selectedTable=table$1},setSchemas(schemaNames){for(let name$2 of schemaNames)state.schemas.has(name$2)||state.schemas.set(name$2,{tables:[],functions:[]})},setTables(schema,tables){let schemaData=state.schemas.get(schema)||{tables:[],functions:[]};schemaData.tables=tables.map(t$1=>({name:t$1.name,schema,type:t$1.type})),state.schemas.set(schema,schemaData)},setFunctions(schema,functions,kind){let schemaData=state.schemas.get(schema)||{tables:[],functions:[]},newFunctions=functions.map(f$2=>({name:f$2.name,schema,arguments:f$2.arguments,returnType:f$2.returnType,kind}));schemaData.functions=[...schemaData.functions.filter(f$2=>f$2.kind!==kind),...newFunctions],state.schemas.set(schema,schemaData)},setColumns(schema,table$1,columns){state.columns.set(`${schema}.${table$1}`,columns)},setLoaded(loaded){state.isLoaded=loaded},getConnectionId(){return state.connectionId},getSelectedSchema(){return state.selectedSchema},getSelectedTable(){return state.selectedTable},getSchemas(){return Array.from(state.schemas.keys())},getTables(schema){if(schema)return state.schemas.get(schema)?.tables||[];let allTables=[];for(let schemaData of state.schemas.values())allTables.push(...schemaData.tables);return allTables},getFunctions(schema){if(schema)return state.schemas.get(schema)?.functions||[];let allFunctions=[];for(let schemaData of state.schemas.values())allFunctions.push(...schemaData.functions);return allFunctions},getTableByName(name$2){if(state.selectedSchema){let table$1=state.schemas.get(state.selectedSchema)?.tables.find(t$1=>t$1.name===name$2);if(table$1)return table$1}for(let schemaData of state.schemas.values()){let table$1=schemaData.tables.find(t$1=>t$1.name===name$2);if(table$1)return table$1}return null},getColumns(schema,table$1){return state.columns.get(`${schema}.${table$1}`)||null},isDefaultSchema(schema){return schema===state.selectedSchema},isLoaded(){return state.isLoaded}};var ICON_ELEMENTS={table:[{tag:`rect`,attrs:{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}},{tag:`path`,attrs:{d:`M3 9h18`}},{tag:`path`,attrs:{d:`M3 15h18`}},{tag:`path`,attrs:{d:`M9 3v18`}},{tag:`path`,attrs:{d:`M15 3v18`}}],view:[{tag:`path`,attrs:{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`}},{tag:`circle`,attrs:{cx:`12`,cy:`12`,r:`3`}}],column:[{tag:`path`,attrs:{d:`M21 8a2 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.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}},{tag:`path`,attrs:{d:`m3.3 7 8.7 5 8.7-5`}},{tag:`path`,attrs:{d:`M12 22V12`}}],function:[{tag:`rect`,attrs:{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`}},{tag:`path`,attrs:{d:`M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3`}},{tag:`path`,attrs:{d:`M9 11.2h5.7`}}],procedure:[{tag:`path`,attrs:{d:`m16 18 6-6-6-6`}},{tag:`path`,attrs:{d:`m8 6-6 6 6 6`}}],keyword:[{tag:`line`,attrs:{x1:`4`,x2:`20`,y1:`9`,y2:`9`}},{tag:`line`,attrs:{x1:`4`,x2:`20`,y1:`15`,y2:`15`}},{tag:`line`,attrs:{x1:`10`,x2:`8`,y1:`3`,y2:`21`}},{tag:`line`,attrs:{x1:`16`,x2:`14`,y1:`3`,y2:`21`}}]},ICON_COLORS={table:`#c4a000`,view:`#4a90d9`,column:`#6b7280`,function:`#a855f7`,procedure:`#14b8a6`,keyword:`#6b7280`};function createIconElement$1(type){let span=document.createElement(`span`);span.style.display=`inline-flex`,span.style.alignItems=`center`,span.style.marginRight=`6px`,span.style.verticalAlign=`middle`;let svg$3=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);svg$3.setAttribute(`width`,`14`),svg$3.setAttribute(`height`,`14`),svg$3.setAttribute(`viewBox`,`0 0 24 24`),svg$3.setAttribute(`fill`,`none`),svg$3.setAttribute(`stroke`,ICON_COLORS[type]||`#6b7280`),svg$3.setAttribute(`stroke-width`,`2`),svg$3.setAttribute(`stroke-linecap`,`round`),svg$3.setAttribute(`stroke-linejoin`,`round`),svg$3.style.display=`block`;let elements=ICON_ELEMENTS[type]||ICON_ELEMENTS.keyword;for(let el of elements){let node$1=document.createElementNS(`http://www.w3.org/2000/svg`,el.tag);for(let[key$1,value]of Object.entries(el.attrs))node$1.setAttribute(key$1,value);svg$3.appendChild(node$1)}return span.appendChild(svg$3),span}var ICON_TYPE_MAP={table:`table`,view:`view`,column:`column`,function:`function`,procedure:`procedure`,keyword:`keyword`,cte:`table`,alias:`column`,schema:`table`,operator:`keyword`},CODEMIRROR_TYPE_MAP={table:`variable`,view:`class`,column:`property`,function:`function`,procedure:`method`,keyword:`keyword`,cte:`variable`,alias:`property`,schema:`namespace`,operator:`keyword`},currentMatchText=``;function getHighlightIndices(label,matchText){if(!matchText)return[];let labelLower=label.toLowerCase(),matchLower=matchText.toLowerCase();if(labelLower.startsWith(matchLower))return Array.from({length:matchText.length},(_$2,i$3)=>i$3);let containsIndex=labelLower.indexOf(matchLower);if(containsIndex!==-1)return Array.from({length:matchText.length},(_$2,i$3)=>containsIndex+i$3);let indices=[],matchIdx=0;for(let i$3=0;i$3<label.length&&matchIdx<matchText.length;i$3++)labelLower[i$3]===matchLower[matchIdx]&&(indices.push(i$3),matchIdx++);return indices}function createHighlightedLabel(label,matchText){let span=document.createElement(`span`);span.className=`cm-completionLabel-highlighted`;let highlightIndices=new Set(getHighlightIndices(label,matchText));if(highlightIndices.size===0)return span.textContent=label,span;let i$3=0;for(;i$3<label.length;)if(highlightIndices.has(i$3)){let highlightSpan=document.createElement(`span`);highlightSpan.className=`cm-completionMatchedText`;let highlightText=``;for(;i$3<label.length&&highlightIndices.has(i$3);)highlightText+=label[i$3],i$3++;highlightSpan.textContent=highlightText,span.appendChild(highlightSpan)}else{let normalText=``;for(;i$3<label.length&&!highlightIndices.has(i$3);)normalText+=label[i$3],i$3++;span.appendChild(document.createTextNode(normalText))}return span}function extractAliasMap(sql){let aliases$1=new Map,asPattern=/\b(\w+)\s+AS\s+(\w+)\b/gi,match;for(;(match=asPattern.exec(sql))!==null;)aliases$1.set(match[2].toLowerCase(),match[1]);let tableAliasPattern=/\b(?:FROM|JOIN)\s+(\w+)\s+(\w+)(?!\s*(?:ON|WHERE|LEFT|RIGHT|INNER|OUTER|FULL|CROSS|JOIN|AS|,|\())|\b(?:FROM|JOIN)\s+(\w+)\.(\w+)\s+(\w+)(?!\s*(?:ON|WHERE|LEFT|RIGHT|INNER|OUTER|FULL|CROSS|JOIN|AS|,|\())/gi;for(;(match=tableAliasPattern.exec(sql))!==null;)if(match[1]&&match[2]){let maybeAlias=match[2].toUpperCase();[`WHERE`,`ON`,`AND`,`OR`,`ORDER`,`GROUP`,`HAVING`,`LIMIT`,`OFFSET`,`LEFT`,`RIGHT`,`INNER`,`FULL`,`CROSS`,`JOIN`,`SET`,`VALUES`].includes(maybeAlias)||aliases$1.set(match[2].toLowerCase(),match[1])}else if(match[3]&&match[4]&&match[5]){let maybeAlias=match[5].toUpperCase();[`WHERE`,`ON`,`AND`,`OR`,`ORDER`,`GROUP`,`HAVING`,`LIMIT`,`OFFSET`,`LEFT`,`RIGHT`,`INNER`,`FULL`,`CROSS`,`JOIN`,`SET`,`VALUES`].includes(maybeAlias)||aliases$1.set(match[5].toLowerCase(),match[4])}return aliases$1}function resolveTableAlias(sql,alias){return extractAliasMap(sql).get(alias.toLowerCase())||null}async function ensureColumns(schema,table$1){let connectionId=schemaStore.getConnectionId();if(connectionId&&!schemaStore.getColumns(schema,table$1))try{let response=await queryClient$1.getColumns({connectionId,schema,table:table$1});schemaStore.setColumns(schema,table$1,response.columns)}catch{}}function buildSchema(){let tables=schemaStore.getTables(),functions=schemaStore.getFunctions(),selectedTable=schemaStore.getSelectedTable();return{defaultSchema:schemaStore.getSelectedSchema()||`public`,tables:tables.map(t$1=>({schema:t$1.schema,name:t$1.name,type:t$1.type,columns:(schemaStore.getColumns(t$1.schema,t$1.name)||[]).map(c=>({name:c.name,type:c.type,nullable:c.nullable,isPrimaryKey:!1,isForeignKey:!1}))})),functions:functions.map(f$2=>({schema:f$2.schema,name:f$2.name,signature:f$2.arguments,returnType:f$2.returnType||``,kind:f$2.kind})),selectedTable:selectedTable?{schema:selectedTable.schema,name:selectedTable.name}:void 0}}function createFunctionInfoElement(name$2,source){let container=document.createElement(`div`);container.className=`cm-function-info`;let argsString=``,returnType=``,description=``;if(source===`system`){let fn=PG_SYSTEM_FUNCTIONS.find(f$2=>f$2.name===name$2);fn?.signatures[0]&&(argsString=fn.signatures[0].args,returnType=fn.signatures[0].returnType),description=fn?.description||``}else{let fn=schemaStore.getFunctions().find(f$2=>f$2.name.toLowerCase()===name$2.toLowerCase());argsString=fn?.arguments||``,returnType=fn?.returnType||``}let sigLine=document.createElement(`div`);sigLine.className=`cm-function-info-signature`;let nameSpan=document.createElement(`span`);nameSpan.className=`cm-function-info-name`,nameSpan.textContent=name$2,sigLine.appendChild(nameSpan);let argsSpan=document.createElement(`span`);if(argsSpan.className=`cm-function-info-args-inline`,argsSpan.textContent=`(${argsString})`,sigLine.appendChild(argsSpan),returnType){let returnSpan=document.createElement(`span`);returnSpan.className=`cm-function-info-return`,returnSpan.textContent=` → ${returnType}`,sigLine.appendChild(returnSpan)}if(container.appendChild(sigLine),description){let descDiv=document.createElement(`div`);descDiv.className=`cm-function-info-description`,descDiv.textContent=description,container.appendChild(descDiv)}return container}function toCompletion(suggestion){let completion={label:suggestion.value,type:CODEMIRROR_TYPE_MAP[suggestion.type]??`keyword`,detail:suggestion.detail,boost:suggestion.score};if(suggestion.type===`function`||suggestion.insertText&&suggestion.insertText.endsWith(`(`)?completion.apply=(view,_completion,from,to)=>{let insertText=suggestion.value+`()`;view.dispatch({changes:{from,to,insert:insertText},selection:{anchor:from+suggestion.value.length+1}})}:suggestion.insertText&&(completion.apply=suggestion.insertText),suggestion.type===`function`){let source=suggestion.source===`system`?`system`:`schema`;completion.info=()=>createFunctionInfoElement(suggestion.value,source)}return completion}var TABLE_RETRIGGER_SECTIONS=new Set([`FROM_TABLE`,`JOIN_TABLE`]);function wrapWithRetrigger(completion){let originalApply=completion.apply,text$5=typeof originalApply==`string`?originalApply:completion.label+` `;return{...completion,apply:(view,_completion,from,to)=>{view.dispatch({changes:{from,to,insert:text$5},selection:{anchor:from+text$5.length}}),setTimeout(()=>startCompletion(view),10)}}}function hasQualifierDot(completion){let apply=completion.apply;return typeof apply==`string`?apply.endsWith(`.`):!1}function wrapCompletionsForRetrigger(completions,section){let shouldRetriggerTables=TABLE_RETRIGGER_SECTIONS.has(section);return completions.map(c=>c.type===`keyword`&&RETRIGGER_KEYWORDS.has(c.label)||shouldRetriggerTables&&(c.type===`variable`||c.type===`class`)||(c.type===`variable`||c.type===`class`)&&hasQualifierDot(c)?wrapWithRetrigger(c):c)}var COLUMN_FETCH_SECTIONS=new Set([`SELECT_COLUMNS`,`WHERE_CONDITION`,`JOIN_CONDITION`,`GROUP_BY`,`ORDER_BY`,`HAVING`,`UPDATE_SET`]);async function pgCompletionSource(ctx){let fullSql=ctx.state.doc.toString(),cursor=ctx.pos,{statementSql,statementCursor}=extractCurrentStatement(tokenize$2(fullSql,cursor),fullSql,cursor),word=ctx.matchBefore(/[\w.]*/);if(!word&&!ctx.explicit)return null;let{context}=autocomplete(statementSql,statementCursor,buildSchema()),tables=schemaStore.getTables(),defaultSchema=schemaStore.getSelectedSchema();if(context.tablePrefix){let tableName=context.tablePrefix,resolved=resolveTableAlias(statementSql,tableName);resolved&&(tableName=resolved);let table$1=tables.find(t$1=>t$1.name.toLowerCase()===tableName.toLowerCase());table$1&&await ensureColumns(table$1.schema,table$1.name)}else if(COLUMN_FETCH_SECTIONS.has(context.section)){let selectedTable=schemaStore.getSelectedTable(),fetchPromises=[];selectedTable&&!schemaStore.getColumns(selectedTable.schema,selectedTable.name)&&await ensureColumns(selectedTable.schema,selectedTable.name);let defaultSchemaTables=tables.filter(t$1=>t$1.schema===defaultSchema);for(let table$1 of defaultSchemaTables.slice(0,15))schemaStore.getColumns(table$1.schema,table$1.name)||fetchPromises.push(ensureColumns(table$1.schema,table$1.name));let otherSchemaTables=tables.filter(t$1=>t$1.schema!==defaultSchema);for(let table$1 of otherSchemaTables.slice(0,10))schemaStore.getColumns(table$1.schema,table$1.name)||fetchPromises.push(ensureColumns(table$1.schema,table$1.name));fetchPromises.length>0&&await Promise.race([Promise.all(fetchPromises),new Promise(resolve=>setTimeout(resolve,1e3))])}let updatedResult=autocomplete(statementSql,statementCursor,buildSchema());if(updatedResult.context.section===`STATEMENT_START`&&!updatedResult.context.partialToken&&!ctx.explicit||updatedResult.suggestions.length===0)return null;let typedText=word?.text||``,dotIndex=typedText.lastIndexOf(`.`),matchText=context.tablePrefix?(dotIndex>=0?typedText.slice(dotIndex+1):typedText).toLowerCase():typedText.toLowerCase();currentMatchText=matchText;let filteredSuggestions=updatedResult.suggestions;matchText&&(filteredSuggestions=filteredSuggestions.filter(s$1=>isMatch(s$1.value,matchText)).sort((a$1,b$2)=>b$2.score-a$1.score));let completions=filteredSuggestions.map(toCompletion);completions=wrapCompletionsForRetrigger(completions,updatedResult.context.section);let from=word?.from??cursor;if(context.tablePrefix&&word){let dotIndex$1=typedText.lastIndexOf(`.`);dotIndex$1>=0&&(from=word.from+dotIndex$1+1)}return{from,options:completions,filter:!1}}function isInSelectColumnList(sql,cursor){let{statementSql,statementCursor}=extractCurrentStatement(tokenize$2(sql,cursor),sql,cursor);if(autocomplete(statementSql,statementCursor,buildSchema()).context.section===`SELECT_COLUMNS`)return!0;let sqlBefore=statementSql.slice(0,statementCursor).toUpperCase(),selectPos=sqlBefore.lastIndexOf(`SELECT`),fromPos=sqlBefore.lastIndexOf(`FROM`);return selectPos!==-1&&(fromPos===-1||selectPos>fromPos)}var commaHandler=EditorView.inputHandler.of((view,from,to,text$5)=>text$5===`,`&&isInSelectColumnList(view.state.doc.toString(),from)?(view.dispatch({changes:{from,to,insert:`, `},selection:{anchor:from+2}}),setTimeout(()=>startCompletion(view),10),!0):!1);function pgAutocomplete(){return[autocompletion({override:[pgCompletionSource],activateOnTyping:!0,maxRenderedOptions:50,icons:!1,addToOptions:[{render:completion=>{let cmType=completion.type??`keyword`,iconType=Object.entries(CODEMIRROR_TYPE_MAP).find(([,v$1])=>v$1===cmType)?.[0];return createIconElement$1(ICON_TYPE_MAP[iconType??`keyword`]??`keyword`)},position:20},{render:completion=>createHighlightedLabel(completion.label,currentMatchText),position:49}]}),commaHandler]}var NON_FUNCTION_KEYWORDS=new Set([`IF`,`IN`,`CASE`,`WHEN`,`THEN`,`ELSE`,`END`,`AND`,`OR`,`NOT`]);function getFunctionContext(doc$1,cursor){let parenDepth=0,argIndex=0,openParenPos=-1,inString=null;for(let i$3=cursor-1;i$3>=0;i$3--){let char=doc$1[i$3],prevChar=i$3>0?doc$1[i$3-1]:``;if((char===`'`||char===`"`)&&prevChar!==`\\`){inString===char?inString=null:inString||=char;continue}if(!inString){if(char===`)`)parenDepth++;else if(char===`(`){if(parenDepth===0){openParenPos=i$3;break}parenDepth--}else if(char===`,`&&parenDepth===0)argIndex++;else if(char===`;`)break}}if(openParenPos===-1)return null;let nameEnd=openParenPos,nameStart=nameEnd;for(;nameStart>0&&/\s/.test(doc$1[nameStart-1]);)nameStart--,nameEnd=nameStart;for(;nameStart>0&&/[\w_]/.test(doc$1[nameStart-1]);)nameStart--;if(nameStart===nameEnd)return null;let name$2=doc$1.slice(nameStart,nameEnd);return!/^[a-zA-Z_]\w*$/.test(name$2)||NON_FUNCTION_KEYWORDS.has(name$2.toUpperCase())?null:{name:name$2,startPos:openParenPos,argIndex}}function getFunctionSignature(name$2){return schemaStore.getFunctions().find(f$2=>f$2.name.toLowerCase()===name$2.toLowerCase())?.arguments}function parseSignatureArgs(signature){if(!signature)return[];let args=[],current=``,parenDepth=0;for(let char of signature)char===`(`?(parenDepth++,current+=char):char===`)`?(parenDepth--,current+=char):char===`,`&&parenDepth===0?(current.trim()&&args.push(current.trim()),current=``):current+=char;return current.trim()&&args.push(current.trim()),args}function createSignatureTooltip(context){let container=document.createElement(`div`);container.className=`cm-signature-help`;let signature=getFunctionSignature(context.name);if(!signature)return container;let sigLine=document.createElement(`div`);sigLine.className=`cm-signature-help-signature`;let nameSpan=document.createElement(`span`);return nameSpan.className=`cm-signature-help-name`,nameSpan.textContent=context.name,sigLine.appendChild(nameSpan),sigLine.appendChild(document.createTextNode(`(`)),parseSignatureArgs(signature).forEach((arg,i$3)=>{i$3>0&&sigLine.appendChild(document.createTextNode(`, `));let argSpan=document.createElement(`span`);argSpan.className=i$3===context.argIndex?`cm-signature-help-arg cm-signature-help-arg-active`:`cm-signature-help-arg`,argSpan.textContent=arg,sigLine.appendChild(argSpan)}),sigLine.appendChild(document.createTextNode(`)`)),container.appendChild(sigLine),container}var signatureHelpState=StateField.define({create:()=>null,update(value,tr$1){return tr$1.docChanged||tr$1.selection?getFunctionContext(tr$1.state.doc.toString(),tr$1.state.selection.main.head):value}}),signatureHelpTooltip=StateField.define({create:()=>[],update(_$2,tr$1){let context=tr$1.state.field(signatureHelpState);return!context||!getFunctionSignature(context.name)?[]:[{pos:context.startPos+1,above:!0,strictSide:!0,arrow:!1,create:()=>({dom:createSignatureTooltip(context)})}]},provide:f$2=>showTooltip.computeN([f$2],state$1=>state$1.field(f$2))});function pgSignatureHelp(){return[signatureHelpState,signatureHelpTooltip]}var SelectedDiagnostic=class{constructor(from,to,diagnostic){this.from=from,this.to=to,this.diagnostic=diagnostic}},LintState=class LintState{constructor(diagnostics,panel,selected){this.diagnostics=diagnostics,this.panel=panel,this.selected=selected}static init(diagnostics,panel,state$1){let diagnosticFilter=state$1.facet(lintConfig).markerFilter;diagnosticFilter&&(diagnostics=diagnosticFilter(diagnostics,state$1));let sorted=diagnostics.slice().sort((a$1,b$2)=>a$1.from-b$2.from||a$1.to-b$2.to),deco=new RangeSetBuilder,active=[],pos=0,scan$1=state$1.doc.iter(),scanPos=0,docLen=state$1.doc.length;for(let i$3=0;;){let next=i$3==sorted.length?null:sorted[i$3];if(!next&&!active.length)break;let from,to;if(active.length)from=pos,to=active.reduce((p$1,d$1)=>Math.min(p$1,d$1.to),next&&next.from>from?next.from:1e8);else{if(from=next.from,from>docLen)break;to=next.to,active.push(next),i$3++}for(;i$3<sorted.length;){let next$1=sorted[i$3];if(next$1.from==from&&(next$1.to>next$1.from||next$1.to==from))active.push(next$1),i$3++,to=Math.min(next$1.to,to);else{to=Math.min(next$1.from,to);break}}to=Math.min(to,docLen);let widget=!1;if(active.some(d$1=>d$1.from==from&&(d$1.to==to||to==docLen))&&(widget=from==to,!widget&&to-from<10)){let behind=from-(scanPos+scan$1.value.length);behind>0&&(scan$1.next(behind),scanPos=from);for(let check=from;;){if(check>=to){widget=!0;break}if(!scan$1.lineBreak&&scanPos+scan$1.value.length>check)break;check=scanPos+scan$1.value.length,scanPos+=scan$1.value.length,scan$1.next()}}let sev=maxSeverity(active);if(widget)deco.add(from,from,Decoration.widget({widget:new DiagnosticWidget(sev),diagnostics:active.slice()}));else{let markClass=active.reduce((c,d$1)=>d$1.markClass?c+` `+d$1.markClass:c,``);deco.add(from,to,Decoration.mark({class:`cm-lintRange cm-lintRange-`+sev+markClass,diagnostics:active.slice(),inclusiveEnd:active.some(a$1=>a$1.to>to)}))}if(pos=to,pos==docLen)break;for(let i$4=0;i$4<active.length;i$4++)active[i$4].to<=pos&&active.splice(i$4--,1)}let set=deco.finish();return new LintState(set,panel,findDiagnostic(set))}};function findDiagnostic(diagnostics,diagnostic=null,after=0){let found=null;return diagnostics.between(after,1e9,(from,to,{spec})=>{if(!(diagnostic&&spec.diagnostics.indexOf(diagnostic)<0))if(!found)found=new SelectedDiagnostic(from,to,diagnostic||spec.diagnostics[0]);else if(spec.diagnostics.indexOf(found.diagnostic)<0)return!1;else found=new SelectedDiagnostic(found.from,to,found.diagnostic)}),found}function hideTooltip(tr$1,tooltip){let from=tooltip.pos,to=tooltip.end||from,result=tr$1.state.facet(lintConfig).hideOn(tr$1,from,to);if(result!=null)return result;let line=tr$1.startState.doc.lineAt(tooltip.pos);return!!(tr$1.effects.some(e=>e.is(setDiagnosticsEffect))||tr$1.changes.touchesRange(line.from,Math.max(line.to,to)))}function maybeEnableLint(state$1,effects){return state$1.field(lintState,!1)?effects:effects.concat(StateEffect.appendConfig.of(lintExtensions))}function setDiagnostics(state$1,diagnostics){return{effects:maybeEnableLint(state$1,[setDiagnosticsEffect.of(diagnostics)])}}var setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(value,tr$1){if(tr$1.docChanged&&value.diagnostics.size){let mapped=value.diagnostics.map(tr$1.changes),selected=null,panel=value.panel;if(value.selected){let selPos=tr$1.changes.mapPos(value.selected.from,1);selected=findDiagnostic(mapped,value.selected.diagnostic,selPos)||findDiagnostic(mapped,null,selPos)}!mapped.size&&panel&&tr$1.state.facet(lintConfig).autoPanel&&(panel=null),value=new LintState(mapped,panel,selected)}for(let effect of tr$1.effects)if(effect.is(setDiagnosticsEffect)){let panel=tr$1.state.facet(lintConfig).autoPanel?effect.value.length?LintPanel.open:null:value.panel;value=LintState.init(effect.value,panel,tr$1.state)}else effect.is(togglePanel)?value=new LintState(value.diagnostics,effect.value?LintPanel.open:null,value.selected):effect.is(movePanelSelection)&&(value=new LintState(value.diagnostics,value.panel,effect.value));return value},provide:f$2=>[showPanel.from(f$2,val=>val.panel),EditorView.decorations.from(f$2,s$1=>s$1.diagnostics)]}),activeMark=Decoration.mark({class:`cm-lintRange cm-lintRange-active`});function lintTooltip(view,pos,side){let{diagnostics}=view.state.field(lintState),found,start=-1,end=-1;diagnostics.between(pos-(side<0?1:0),pos+(side>0?1:0),(from,to,{spec})=>{if(pos>=from&&pos<=to&&(from==to||(pos>from||side>0)&&(pos<to||side<0)))return found=spec.diagnostics,start=from,end=to,!1});let diagnosticFilter=view.state.facet(lintConfig).tooltipFilter;return found&&diagnosticFilter&&(found=diagnosticFilter(found,view.state)),found?{pos:start,end,above:view.state.doc.lineAt(start).to<end,create(){return{dom:diagnosticsTooltip(view,found)}}}:null}function diagnosticsTooltip(view,diagnostics){return crelt(`ul`,{class:`cm-tooltip-lint`},diagnostics.map(d$1=>renderDiagnostic(view,d$1,!1)))}var closeLintPanel=view=>{let field=view.state.field(lintState,!1);return!field||!field.panel?!1:(view.dispatch({effects:togglePanel.of(!1)}),!0)},lintPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.timeout=-1,this.set=!0;let{delay}=view.state.facet(lintConfig);this.lintTime=Date.now()+delay,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,delay)}run(){clearTimeout(this.timeout);let now$1=Date.now();if(now$1<this.lintTime-10)this.timeout=setTimeout(this.run,this.lintTime-now$1);else{this.set=!1;let{state:state$1}=this.view,{sources}=state$1.facet(lintConfig);sources.length&&batchResults(sources.map(s$1=>Promise.resolve(s$1(this.view))),annotations=>{this.view.state.doc==state$1.doc&&this.view.dispatch(setDiagnostics(this.view.state,annotations.reduce((a$1,b$2)=>a$1.concat(b$2))))},error=>{logException(this.view.state,error)})}}update(update$1){let config$1=update$1.state.facet(lintConfig);(update$1.docChanged||config$1!=update$1.startState.facet(lintConfig)||config$1.needsRefresh&&config$1.needsRefresh(update$1))&&(this.lintTime=Date.now()+config$1.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,config$1.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}});function batchResults(promises,sink,error){let collected=[],timeout=-1;for(let p$1 of promises)p$1.then(value=>{collected.push(value),clearTimeout(timeout),collected.length==promises.length?sink(collected):timeout=setTimeout(()=>sink(collected),200)},error)}var lintConfig=Facet.define({combine(input){return{sources:input.map(i$3=>i$3.source).filter(x$1=>x$1!=null),...combineConfig(input.map(i$3=>i$3.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:combineFilter,tooltipFilter:combineFilter,needsRefresh:(a$1,b$2)=>a$1?b$2?u$1=>a$1(u$1)||b$2(u$1):a$1:b$2,hideOn:(a$1,b$2)=>a$1?b$2?(t$1,x$1,y$2)=>a$1(t$1,x$1,y$2)||b$2(t$1,x$1,y$2):a$1:b$2,autoPanel:(a$1,b$2)=>a$1||b$2})}}});function combineFilter(a$1,b$2){return a$1?b$2?(d$1,s$1)=>b$2(a$1(d$1,s$1),s$1):a$1:b$2}function linter(source,config$1={}){return[lintConfig.of({source,config:config$1}),lintPlugin,lintExtensions]}function assignKeys(actions){let assigned=[];if(actions)actions:for(let{name:name$2}of actions){for(let i$3=0;i$3<name$2.length;i$3++){let ch=name$2[i$3];if(/[a-zA-Z]/.test(ch)&&!assigned.some(c=>c.toLowerCase()==ch.toLowerCase())){assigned.push(ch);continue actions}}assigned.push(``)}return assigned}function renderDiagnostic(view,diagnostic,inPanel){var _a$1;let keys$1=inPanel?assignKeys(diagnostic.actions):[];return crelt(`li`,{class:`cm-diagnostic cm-diagnostic-`+diagnostic.severity},crelt(`span`,{class:`cm-diagnosticText`},diagnostic.renderMessage?diagnostic.renderMessage(view):diagnostic.message),diagnostic.actions?.map((action,i$3)=>{let fired=!1,click=e=>{if(e.preventDefault(),fired)return;fired=!0;let found=findDiagnostic(view.state.field(lintState).diagnostics,diagnostic);found&&action.apply(view,found.from,found.to)},{name:name$2}=action,keyIndex=keys$1[i$3]?name$2.indexOf(keys$1[i$3]):-1,nameElt=keyIndex<0?name$2:[name$2.slice(0,keyIndex),crelt(`u`,name$2.slice(keyIndex,keyIndex+1)),name$2.slice(keyIndex+1)];return crelt(`button`,{type:`button`,class:`cm-diagnosticAction`+(action.markClass?` `+action.markClass:``),onclick:click,onmousedown:click,"aria-label":` Action: ${name$2}${keyIndex<0?``:` (access key "${keys$1[i$3]})"`}.`},nameElt)}),diagnostic.source&&crelt(`div`,{class:`cm-diagnosticSource`},diagnostic.source))}var DiagnosticWidget=class extends WidgetType{constructor(sev){super(),this.sev=sev}eq(other){return other.sev==this.sev}toDOM(){return crelt(`span`,{class:`cm-lintPoint cm-lintPoint-`+this.sev})}},PanelItem=class{constructor(view,diagnostic){this.diagnostic=diagnostic,this.id=`item_`+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(view,diagnostic,!0),this.dom.id=this.id,this.dom.setAttribute(`role`,`option`)}},LintPanel=class LintPanel{constructor(view){this.view=view,this.items=[];let onkeydown=event=>{if(!(event.ctrlKey||event.altKey||event.metaKey)){if(event.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(event.keyCode==38||event.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(event.keyCode==40||event.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(event.keyCode==36)this.moveSelection(0);else if(event.keyCode==35)this.moveSelection(this.items.length-1);else if(event.keyCode==13)this.view.focus();else if(event.keyCode>=65&&event.keyCode<=90&&this.selectedIndex>=0){let{diagnostic}=this.items[this.selectedIndex],keys$1=assignKeys(diagnostic.actions);for(let i$3=0;i$3<keys$1.length;i$3++)if(keys$1[i$3].toUpperCase().charCodeAt(0)==event.keyCode){let found=findDiagnostic(this.view.state.field(lintState).diagnostics,diagnostic);found&&diagnostic.actions[i$3].apply(view,found.from,found.to)}}else return;event.preventDefault()}},onclick=event=>{for(let i$3=0;i$3<this.items.length;i$3++)this.items[i$3].dom.contains(event.target)&&this.moveSelection(i$3)};this.list=crelt(`ul`,{tabIndex:0,role:`listbox`,"aria-label":this.view.state.phrase(`Diagnostics`),onkeydown,onclick}),this.dom=crelt(`div`,{class:`cm-panel-lint`},this.list,crelt(`button`,{type:`button`,name:`close`,"aria-label":this.view.state.phrase(`close`),onclick:()=>closeLintPanel(this.view)},`×`)),this.update()}get selectedIndex(){let selected=this.view.state.field(lintState).selected;if(!selected)return-1;for(let i$3=0;i$3<this.items.length;i$3++)if(this.items[i$3].diagnostic==selected.diagnostic)return i$3;return-1}update(){let{diagnostics,selected}=this.view.state.field(lintState),i$3=0,needsSync=!1,newSelectedItem=null,seen$1=new Set;for(diagnostics.between(0,this.view.state.doc.length,(_start,_end,{spec})=>{for(let diagnostic of spec.diagnostics){if(seen$1.has(diagnostic))continue;seen$1.add(diagnostic);let found=-1,item;for(let j$1=i$3;j$1<this.items.length;j$1++)if(this.items[j$1].diagnostic==diagnostic){found=j$1;break}found<0?(item=new PanelItem(this.view,diagnostic),this.items.splice(i$3,0,item),needsSync=!0):(item=this.items[found],found>i$3&&(this.items.splice(i$3,found-i$3),needsSync=!0)),selected&&item.diagnostic==selected.diagnostic?item.dom.hasAttribute(`aria-selected`)||(item.dom.setAttribute(`aria-selected`,`true`),newSelectedItem=item):item.dom.hasAttribute(`aria-selected`)&&item.dom.removeAttribute(`aria-selected`),i$3++}});i$3<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)needsSync=!0,this.items.pop();this.items.length==0&&(this.items.push(new PanelItem(this.view,{from:-1,to:-1,severity:`info`,message:this.view.state.phrase(`No diagnostics`)})),needsSync=!0),newSelectedItem?(this.list.setAttribute(`aria-activedescendant`,newSelectedItem.id),this.view.requestMeasure({key:this,read:()=>({sel:newSelectedItem.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel,panel})=>{let scaleY=panel.height/this.list.offsetHeight;sel.top<panel.top?this.list.scrollTop-=(panel.top-sel.top)/scaleY:sel.bottom>panel.bottom&&(this.list.scrollTop+=(sel.bottom-panel.bottom)/scaleY)}})):this.selectedIndex<0&&this.list.removeAttribute(`aria-activedescendant`),needsSync&&this.sync()}sync(){let domPos=this.list.firstChild;function rm$2(){let prev=domPos;domPos=prev.nextSibling,prev.remove()}for(let item of this.items)if(item.dom.parentNode==this.list){for(;domPos!=item.dom;)rm$2();domPos=item.dom.nextSibling}else this.list.insertBefore(item.dom,domPos);for(;domPos;)rm$2()}moveSelection(selectedIndex){if(this.selectedIndex<0)return;let selection=findDiagnostic(this.view.state.field(lintState).diagnostics,this.items[selectedIndex].diagnostic);selection&&this.view.dispatch({selection:{anchor:selection.from,head:selection.to},scrollIntoView:!0,effects:movePanelSelection.of(selection)})}static open(view){return new LintPanel(view)}};function svg$2(content$3,attrs=`viewBox="0 0 40 40"`){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${attrs}>${encodeURIComponent(content$3)}</svg>')`}function underline(color$1){return svg$2(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${color$1}" fill="none" stroke-width=".7"/>`,`width="6" height="3"`)}var baseTheme$1=EditorView.baseTheme({".cm-diagnostic":{padding:`3px 6px 3px 8px`,marginLeft:`-1px`,display:`block`,whiteSpace:`pre-wrap`},".cm-diagnostic-error":{borderLeft:`5px solid #d11`},".cm-diagnostic-warning":{borderLeft:`5px solid orange`},".cm-diagnostic-info":{borderLeft:`5px solid #999`},".cm-diagnostic-hint":{borderLeft:`5px solid #66d`},".cm-diagnosticAction":{font:`inherit`,border:`none`,padding:`2px 4px`,backgroundColor:`#444`,color:`white`,borderRadius:`3px`,marginLeft:`8px`,cursor:`pointer`},".cm-diagnosticSource":{fontSize:`70%`,opacity:.7},".cm-lintRange":{backgroundPosition:`left bottom`,backgroundRepeat:`repeat-x`,paddingBottom:`0.7px`},".cm-lintRange-error":{backgroundImage:underline(`#d11`)},".cm-lintRange-warning":{backgroundImage:underline(`orange`)},".cm-lintRange-info":{backgroundImage:underline(`#999`)},".cm-lintRange-hint":{backgroundImage:underline(`#66d`)},".cm-lintRange-active":{backgroundColor:`#ffdd9980`},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:`relative`,"&:after":{content:`""`,position:`absolute`,bottom:0,left:`-2px`,borderLeft:`3px solid transparent`,borderRight:`3px solid transparent`,borderBottom:`4px solid #d11`}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:`orange`}},".cm-lintPoint-info":{"&:after":{borderBottomColor:`#999`}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:`#66d`}},".cm-panel.cm-panel-lint":{position:`relative`,"& ul":{maxHeight:`100px`,overflowY:`auto`,"& [aria-selected]":{backgroundColor:`#ddd`,"& u":{textDecoration:`underline`}},"&:focus [aria-selected]":{background_fallback:`#bdf`,backgroundColor:`Highlight`,color_fallback:`white`,color:`HighlightText`},"& u":{textDecoration:`none`},padding:0,margin:0},"& [name=close]":{position:`absolute`,top:`0`,right:`2px`,background:`inherit`,border:`none`,font:`inherit`,padding:0,margin:0}}});function severityWeight(sev){return sev==`error`?4:sev==`warning`?3:sev==`info`?2:1}function maxSeverity(diagnostics){let sev=`hint`,weight=1;for(let d$1 of diagnostics){let w$2=severityWeight(d$1.severity);w$2>weight&&(weight=w$2,sev=d$1.severity)}return sev}var lintExtensions=[lintState,EditorView.decorations.compute([lintState],state$1=>{let{selected,panel}=state$1.field(lintState);return!selected||!panel||selected.from==selected.to?Decoration.none:Decoration.set([activeMark.range(selected.from,selected.to)])}),hoverTooltip(lintTooltip,{hideOn:hideTooltip}),baseTheme$1];function byteToCharOffset(text$5,byteOffset){let encoder=new TextEncoder,bytes=0;for(let i$3=0;i$3<text$5.length;i$3++)if(bytes+=encoder.encode(text$5[i$3]).length,bytes>=byteOffset)return i$3;return text$5.length}function expandToWord(text$5,pos){let from=pos,to=pos;for(;from>0&&/\w/.test(text$5[from-1]);)from--;for(;to<text$5.length&&/\w/.test(text$5[to]);)to++;return[from,Math.max(to,from+1)]}var TRAILING_KEYWORDS=[`SELECT`,`FROM`,`WHERE`,`AND`,`OR`,`JOIN`,`ON`,`SET`,`ORDER BY`,`GROUP BY`,`HAVING`,`LIMIT`,`OFFSET`,`VALUES`,`INTO`];function findTrailingKeyword(sql){let trimmed=sql.trimEnd(),upper=trimmed.toUpperCase();for(let kw of TRAILING_KEYWORDS)if(upper.endsWith(kw)){let pos=trimmed.length-kw.length;if(pos===0||/\s/.test(trimmed[pos-1]))return pos}return-1}function splitStatements(sql){let results=[],i$3=0,stmtStart=0;for(;i$3<sql.length;){let ch=sql[i$3];if(ch===`'`||ch===`"`){let quote=ch;for(i$3++;i$3<sql.length&&!(sql[i$3]===quote&&sql[i$3+1]!==quote);)sql[i$3]===quote&&i$3++,i$3++;i$3++;continue}if(ch===`$`){let match=sql.slice(i$3).match(/^\$[a-zA-Z_]?[a-zA-Z0-9_]*\$/);if(match){let tag=match[0],endIdx=sql.indexOf(tag,i$3+tag.length);i$3=endIdx===-1?sql.length:endIdx+tag.length;continue}}if(ch===`-`&&sql[i$3+1]===`-`){let newline=sql.indexOf(`
64
+ `)))}function extractSelectFoldRegions(sql,stmt,stmtStart,stmtEnd,regions){let clauses=[];if(stmt.columns.length>0){let selectIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`SELECT`);selectIdx!==-1&&clauses.push({keyword:`SELECT`,location:selectIdx})}if(stmt.from){let fromIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`FROM`);fromIdx!==-1&&clauses.push({keyword:`FROM`,location:fromIdx})}if(stmt.where){let whereIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`WHERE`);whereIdx!==-1&&clauses.push({keyword:`WHERE`,location:whereIdx})}if(stmt.groupBy){let groupIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`GROUP`);groupIdx!==-1&&clauses.push({keyword:`GROUP BY`,location:groupIdx})}if(stmt.having){let havingIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`HAVING`);havingIdx!==-1&&clauses.push({keyword:`HAVING`,location:havingIdx})}if(stmt.orderBy){let orderIdx=findKeywordAfter(sql,stmtStart,stmtEnd,`ORDER`);orderIdx!==-1&&clauses.push({keyword:`ORDER BY`,location:orderIdx})}clauses.sort((a$1,b$2)=>a$1.location-b$2.location);for(let i$3=0;i$3<clauses.length;i$3++){let clause=clauses[i$3],nextClause=clauses[i$3+1],end=nextClause?nextClause.location:findStatementEnd(sql,clause.location,stmtEnd);regions.push({from:clause.location,to:end,keyword:clause.keyword})}stmt.setOp&&(extractSelectFoldRegions(sql,stmt.setOp.left,stmtStart,stmtEnd,regions),extractSelectFoldRegions(sql,stmt.setOp.right,stmtStart,stmtEnd,regions))}function findKeywordAfter(sql,start,end,keyword$1){let searchArea=sql.slice(start,end).toUpperCase(),idx=0;for(;idx<searchArea.length;){let found=searchArea.indexOf(keyword$1,idx);if(found===-1)return-1;let absoluteIdx=start+found,before=absoluteIdx>0?sql[absoluteIdx-1]:` `,after=sql[absoluteIdx+keyword$1.length]||` `;if(/[\s(]/.test(before)&&/[\s(]/.test(after))return absoluteIdx;idx=found+1}return-1}function findStatementEnd(sql,from,maxEnd){let semiIdx=sql.indexOf(`;`,from);return semiIdx!==-1&&semiIdx<maxEnd?semiIdx:maxEnd}var CONTROL_CHAR_REGEX=/[\x00-\x1F\x7F]/g,PG_TYPE_NAMES=new Set(`SERIAL.SERIAL4.SERIAL8.BIGSERIAL.SMALLSERIAL.INT2.INT4.INT8.FLOAT4.FLOAT8.BOOL.TEXT.BYTEA.UUID.JSON.JSONB.XML.MONEY.INET.CIDR.MACADDR.MACADDR8.POINT.LINE.LSEG.BOX.PATH.POLYGON.CIRCLE.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.TSTZRANGE.DATERANGE.INT4MULTIRANGE.INT8MULTIRANGE.NUMMULTIRANGE.TSMULTIRANGE.TSTZMULTIRANGE.DATEMULTIRANGE.TSVECTOR.TSQUERY.OID.REGCLASS.REGTYPE.REGPROC.REGPROCEDURE.REGOPER.REGOPERATOR.REGCONFIG.REGDICTIONARY.REGNAMESPACE.REGROLE.VOID.RECORD.TRIGGER.EVENT_TRIGGER.PG_LSN.PG_SNAPSHOT`.split(`.`));function mapTokenToClass(token$1,sql){switch(token$1.tokenName){case`SQL_COMMENT`:case`C_COMMENT`:return`pg-comment`;case`SCONST`:case`USCONST`:case`XCONST`:case`BCONST`:return`pg-string`;case`ICONST`:case`FCONST`:return`pg-number`;case`PARAM`:return`pg-param`;case`IDENT`:return PG_TYPE_NAMES.has(sql.slice(token$1.start,token$1.end).toUpperCase())?`pg-type`:null}switch(token$1.keywordKind){case 4:case 2:return`pg-keyword`;case 3:return`pg-type`;case 1:return`pg-keyword-unreserved`}return null}function tokensToRanges(tokens,sql){let ranges=[];for(let token$1 of tokens){let tokenClass=mapTokenToClass(token$1,sql);tokenClass&&ranges.push({from:token$1.start,to:token$1.end,class:tokenClass})}return ranges}function tokenize(sql){if(!isModuleLoaded()||!sql.trim())return[];try{return tokensToRanges(scanSync(sql).tokens,sql)}catch(err){if(err instanceof SyntaxError&&err.message.includes(`control character`))try{return tokensToRanges(scanSync(sql.replace(CONTROL_CHAR_REGEX,` `)).tokens,sql)}catch{return[]}return console.warn(`SQL tokenizer error:`,err),[]}}const SQL_KEYWORDS={statements:[`SELECT`,`INSERT INTO`,`UPDATE`,`DELETE FROM`,`WITH`,`CALL`,`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`EXPLAIN`,`ANALYZE`,`BEGIN`,`COMMIT`,`ROLLBACK`,`GRANT`,`REVOKE`],clauses:`FROM.WHERE.JOIN.LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL JOIN.CROSS JOIN.NATURAL JOIN.ON.USING.AND.OR.NOT.ORDER BY.GROUP BY.HAVING.LIMIT.OFFSET.FETCH.UNION.UNION ALL.INTERSECT.EXCEPT.AS.DISTINCT.ALL.INTO.VALUES.SET.RETURNING.WITH.LATERAL.WINDOW.FOR UPDATE.FOR SHARE`.split(`.`),orderByModifiers:[`ASC`,`DESC`,`NULLS FIRST`,`NULLS LAST`],groupByKeywords:[`ROLLUP`,`CUBE`,`GROUPING SETS`],operators:`IN.NOT IN.EXISTS.NOT EXISTS.BETWEEN.NOT BETWEEN.BETWEEN SYMMETRIC.LIKE.NOT LIKE.ILIKE.NOT ILIKE.SIMILAR TO.NOT SIMILAR TO.IS NULL.IS NOT NULL.IS TRUE.IS NOT TRUE.IS FALSE.IS NOT FALSE.IS UNKNOWN.IS NOT UNKNOWN.IS DISTINCT FROM.IS NOT DISTINCT FROM.CASE.WHEN.THEN.ELSE.END.CAST.ANY.SOME.TRUE.FALSE.NULL`.split(`.`)};function getAllKeywords(){return[...SQL_KEYWORDS.statements,...SQL_KEYWORDS.clauses,...SQL_KEYWORDS.orderByModifiers,...SQL_KEYWORDS.groupByKeywords,...SQL_KEYWORDS.operators]}function getOrderByModifiers(){return SQL_KEYWORDS.orderByModifiers}function getGroupByKeywords(){return SQL_KEYWORDS.groupByKeywords}function getExpressionKeywords(){return[...SQL_KEYWORDS.operators,`AND`,`OR`,`NOT`]}function getStatementKeywords(){return SQL_KEYWORDS.statements}const RETRIGGER_KEYWORDS=new Set(`SELECT.INSERT INTO.UPDATE.DELETE FROM.CALL.CREATE.CREATE TABLE.CREATE TEMP TABLE.CREATE TEMPORARY TABLE.CREATE UNLOGGED TABLE.CREATE OR REPLACE.CREATE TEMP.CREATE TEMPORARY.CREATE UNLOGGED.CREATE INDEX.CREATE UNIQUE INDEX.FROM.JOIN.LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL JOIN.CROSS JOIN.NATURAL JOIN.LATERAL.INTO.WHERE.AND.OR.ON.SET.ORDER BY.GROUP BY.HAVING.RETURNING.USING.ASC.DESC.WHEN.THEN.ELSE.PRIMARY KEY.FOREIGN KEY.REFERENCES.DEFAULT.CHECK.UNIQUE.NOT NULL.INHERITS.PARTITION BY.PARTITION BY RANGE.PARTITION BY LIST.PARTITION BY HASH`.split(`.`));var defaultParser$1={scanSync,isLoaded:isModuleLoaded};function mapTokenType(token$1,text$5){return token$1.tokenName===`SQL_COMMENT`||token$1.tokenName===`C_COMMENT`?`comment`:token$1.tokenName===`SCONST`||token$1.tokenName===`USCONST`||token$1.tokenName===`XCONST`||token$1.tokenName===`BCONST`||token$1.tokenName===`ICONST`||token$1.tokenName===`FCONST`?`literal`:token$1.tokenName===`Op`||text$5.length<=2&&[`=`,`<`,`>`,`!`,`+`,`-`,`*`,`/`,`%`,`^`,`|`,`&`,`~`,`@`,`#`].some(op=>text$5.includes(op))?`operator`:token$1.keywordKind>0?`keyword`:token$1.tokenName===`IDENT`?`identifier`:[`(`,`)`,`,`,`.`,`;`,`[`,`]`,`{`,`}`,`:`].includes(text$5)?`punctuation`:/^\s+$/.test(text$5)?`whitespace`:`identifier`}function tokenize$2(sql,cursorPosition,options$1){let parser$1=options$1?.parser??defaultParser$1;if(!parser$1.isLoaded()||!sql.trim())return{tokens:[],cursorTokenIndex:-1,cursorPositionInToken:0,rawCursorPosition:cursorPosition};try{let result=parser$1.scanSync(sql),tokens=[];for(let scanToken of result.tokens){let text$5=sql.slice(scanToken.start,scanToken.end);tokens.push({type:mapTokenType(scanToken,text$5),value:text$5,start:scanToken.start,end:scanToken.end,keywordKind:scanToken.keywordKind>0?scanToken.keywordKind:void 0})}let{cursorTokenIndex,cursorPositionInToken}=findCursorPosition(tokens,cursorPosition);return{tokens,cursorTokenIndex,cursorPositionInToken,rawCursorPosition:cursorPosition}}catch{return{tokens:[],cursorTokenIndex:-1,cursorPositionInToken:0,rawCursorPosition:cursorPosition}}}function findCursorPosition(tokens,cursorPosition){if(tokens.length===0)return{cursorTokenIndex:-1,cursorPositionInToken:0};for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(cursorPosition>=token$1.start&&cursorPosition<token$1.end)return{cursorTokenIndex:i$3,cursorPositionInToken:cursorPosition-token$1.start};if(cursorPosition===token$1.end)return i$3+1<tokens.length&&tokens[i$3+1].start===cursorPosition?{cursorTokenIndex:i$3+1,cursorPositionInToken:0}:{cursorTokenIndex:i$3,cursorPositionInToken:token$1.value.length};if(i$3+1<tokens.length&&cursorPosition<tokens[i$3+1].start)return{cursorTokenIndex:i$3,cursorPositionInToken:token$1.value.length}}return{cursorTokenIndex:tokens.length-1,cursorPositionInToken:tokens[tokens.length-1].value.length}}function getTokensUpToCursor(tokenized,includeCursorToken=!0){if(tokenized.cursorTokenIndex<0)return[];let endIndex=includeCursorToken?tokenized.cursorTokenIndex+1:tokenized.cursorTokenIndex;return tokenized.tokens.slice(0,endIndex)}function getPartialToken(tokenized){if(tokenized.cursorTokenIndex<0)return null;let token$1=tokenized.tokens[tokenized.cursorTokenIndex];return token$1?tokenized.cursorPositionInToken===token$1.value.length?tokenized.rawCursorPosition>token$1.end?null:token$1.type===`identifier`?token$1.value:null:tokenized.cursorPositionInToken>0?token$1.value.slice(0,tokenized.cursorPositionInToken):null:null}function isInsideStringOrComment(tokenized,cursorPosition,sql){if(tokenized.tokens.length===0&&sql&&sql.trim()){let sqlUpToCursor=sql.slice(0,cursorPosition),singleQuotes=(sqlUpToCursor.match(/'/g)||[]).length,doubleQuotes=(sqlUpToCursor.match(/"/g)||[]).length;if(singleQuotes%2==1||doubleQuotes%2==1||sqlUpToCursor.lastIndexOf(`/*`)>sqlUpToCursor.lastIndexOf(`*/`))return!0}if(tokenized.cursorTokenIndex<0)return!1;let token$1=tokenized.tokens[tokenized.cursorTokenIndex];return token$1?(token$1.type===`literal`||token$1.type===`comment`)&&cursorPosition<token$1.end||token$1.type===`comment`&&cursorPosition>=token$1.start&&cursorPosition<=token$1.end:!1}function createNode(type,start,end,text$5,children=[],isError=!1){return{type,start,end,text:text$5,children,isError,isMissing:!1,parent:null,namedChildren:children.filter(c=>!c.type.startsWith(`_`)),fieldName:null}}function parseFromTokens(tokenized,sql){let{tokens}=tokenized,errors=[],children=[];if(tokens.length===0)return{root:createNode(`source_file`,0,sql.length,sql,[]),errors:[],hasErrors:!1};let statementStart=0,currentTokens=[];for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(currentTokens.push(token$1),token$1.value===`;`||i$3===tokens.length-1){if(currentTokens.length>0){let statementNode=parseStatement(currentTokens,sql,statementStart);children.push(statementNode),statementNode.isError&&errors.push(statementNode),collectErrors(statementNode,errors)}statementStart=token$1.end,currentTokens=[]}}let root$4=createNode(`source_file`,0,sql.length,sql,children);return setParentReferences(root$4),{root:root$4,errors,hasErrors:errors.length>0}}function parseStatement(tokens,sql,baseOffset){if(tokens.length===0)return createNode(`empty_statement`,baseOffset,baseOffset,``,[],!1);let firstToken=tokens[0],lastToken=tokens[tokens.length-1],statementText=sql.slice(firstToken.start,lastToken.end);switch(firstToken.value.toUpperCase()){case`SELECT`:return parseSelectStatement(tokens,sql,firstToken.start,lastToken.end);case`WITH`:return parseWithStatement(tokens,sql,firstToken.start,lastToken.end);case`INSERT`:return parseInsertStatement(tokens,sql,firstToken.start,lastToken.end);case`UPDATE`:return parseUpdateStatement(tokens,sql,firstToken.start,lastToken.end);case`DELETE`:return parseDeleteStatement(tokens,sql,firstToken.start,lastToken.end);case`CALL`:return parseCallStatement(tokens,sql,firstToken.start,lastToken.end);default:return createNode(`unknown_statement`,firstToken.start,lastToken.end,statementText,[])}}function parseSelectStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`SELECT`,`FROM`,`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`OFFSET`,`FOR`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,clauseText=sql.slice(clauseStart,clauseEnd),nodeType;switch(clauseType){case`SELECT`:nodeType=`select_clause`;break;case`FROM`:nodeType=`from_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`GROUP`:nodeType=`group_by_clause`;break;case`HAVING`:nodeType=`having_clause`;break;case`ORDER`:nodeType=`order_by_clause`;break;case`LIMIT`:nodeType=`limit_clause`;break;case`OFFSET`:nodeType=`offset_clause`;break;case`FOR`:nodeType=`for_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,clauseText,[]))}return createNode(`select_statement`,start,end,sql.slice(start,end),children)}function parseWithStatement(tokens,sql,start,end){let children=[],mainQueryIndex=-1,parenDepth=0;for(let i$3=1;i$3<tokens.length;i$3++){let token$1=tokens[i$3];if(token$1.value===`(`&&parenDepth++,token$1.value===`)`&&parenDepth--,parenDepth===0&&[`SELECT`,`INSERT`,`UPDATE`,`DELETE`].includes(token$1.value.toUpperCase())){mainQueryIndex=i$3;break}}if(mainQueryIndex>0){let withTokens=tokens.slice(0,mainQueryIndex);if(withTokens.length>0){let withClause=createNode(`with_clause`,withTokens[0].start,withTokens[withTokens.length-1].end,sql.slice(withTokens[0].start,withTokens[withTokens.length-1].end),[]);children.push(withClause)}let mainQueryTokens=tokens.slice(mainQueryIndex),mainStmt=parseStatement(mainQueryTokens,sql,mainQueryTokens[0].start);children.push(mainStmt)}return createNode(`with_statement`,start,end,sql.slice(start,end),children)}function parseInsertStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`INSERT`,`VALUES`,`SELECT`,`RETURNING`,`ON`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`INSERT`:nodeType=`insert_clause`;break;case`VALUES`:nodeType=`values_clause`;break;case`SELECT`:nodeType=`select_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;case`ON`:nodeType=`on_conflict_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`insert_statement`,start,end,sql.slice(start,end),children)}function parseUpdateStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`UPDATE`,`SET`,`FROM`,`WHERE`,`RETURNING`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`UPDATE`:nodeType=`update_clause`;break;case`SET`:nodeType=`set_clause`;break;case`FROM`:nodeType=`from_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`update_statement`,start,end,sql.slice(start,end),children)}function parseDeleteStatement(tokens,sql,start,end){let children=[],clauses=splitIntoClauses(tokens,[`DELETE`,`FROM`,`USING`,`WHERE`,`RETURNING`]);for(let clause of clauses){if(clause.tokens.length===0)continue;let clauseType=clause.tokens[0].value.toUpperCase(),clauseStart=clause.tokens[0].start,clauseEnd=clause.tokens[clause.tokens.length-1].end,nodeType;switch(clauseType){case`DELETE`:nodeType=`delete_keyword`;break;case`FROM`:nodeType=`from_clause`;break;case`USING`:nodeType=`using_clause`;break;case`WHERE`:nodeType=`where_clause`;break;case`RETURNING`:nodeType=`returning_clause`;break;default:nodeType=`unknown_clause`}children.push(createNode(nodeType,clauseStart,clauseEnd,sql.slice(clauseStart,clauseEnd),[]))}return createNode(`delete_statement`,start,end,sql.slice(start,end),children)}function parseCallStatement(tokens,sql,start,end){let children=[];if(tokens.length>0){let callToken=tokens[0];children.push(createNode(`call_keyword`,callToken.start,callToken.end,callToken.value,[]))}if(tokens.length>1){let restStart=tokens[1].start,restEnd=tokens[tokens.length-1].end;children.push(createNode(`procedure_call`,restStart,restEnd,sql.slice(restStart,restEnd),[]))}return createNode(`call_statement`,start,end,sql.slice(start,end),children)}function splitIntoClauses(tokens,keywords){let clauses=[],currentClause=[],currentKeyword=``,parenDepth=0;for(let token$1 of tokens){token$1.value===`(`&&parenDepth++,token$1.value===`)`&&parenDepth--;let upperValue=token$1.value.toUpperCase();parenDepth===0&&keywords.includes(upperValue)?((currentClause.length>0||currentKeyword)&&clauses.push({keyword:currentKeyword,tokens:currentClause}),currentKeyword=upperValue,currentClause=[token$1]):currentClause.push(token$1)}return(currentClause.length>0||currentKeyword)&&clauses.push({keyword:currentKeyword,tokens:currentClause}),clauses}function setParentReferences(node$1,parent=null){node$1.parent=parent;for(let child of node$1.children)setParentReferences(child,node$1)}function collectErrors(node$1,errors){node$1.isError&&!errors.includes(node$1)&&errors.push(node$1);for(let child of node$1.children)collectErrors(child,errors)}function findClauseAtPosition(tree,position$2){function findInNode(node$1){if(position$2<node$1.start||position$2>node$1.end)return null;for(let child of node$1.children){let found=findInNode(child);if(found)return found}return node$1.type.endsWith(`_clause`)||node$1.type.endsWith(`_statement`)?node$1:null}return findInNode(tree.root)}function findStatementAtPosition(tree,position$2){for(let child of tree.root.children)if(position$2>=child.start&&position$2<=child.end)return child;return tree.root.children[tree.root.children.length-1]||null}function extractCurrentStatement(tokenized,sql,cursorPosition){let{tokens}=tokenized,semicolons=[];for(let token$1 of tokens)token$1.value===`;`&&semicolons.push(token$1.end);let statementStart=0,statementEnd=sql.length;for(let semiEnd of semicolons)if(semiEnd<=cursorPosition)statementStart=semiEnd;else{statementEnd=semiEnd;break}let statementSql=sql.slice(statementStart,statementEnd),statementCursor=cursorPosition-statementStart;return{statementSql,statementCursor:Math.max(0,statementCursor),statementStart}}var TABLE_PRECEDING_KEYWORDS=[`FROM`,`JOIN`,`INTO`,`UPDATE`,`TABLE`],PG_DATA_TYPES=new Set(`SMALLINT.INTEGER.INT.BIGINT.DECIMAL.NUMERIC.REAL.DOUBLE.SERIAL.BIGSERIAL.CHAR.VARCHAR.TEXT.BYTEA.BOOLEAN.BOOL.TIMESTAMP.TIMESTAMPTZ.DATE.TIME.INTERVAL.UUID.JSON.JSONB.XML.MONEY.INET.CIDR.MACADDR.POINT.BOX.CIRCLE.POLYGON.TSVECTOR.TSQUERY.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.DATERANGE`.split(`.`)),JOIN_KEYWORDS=[`JOIN`,`INNER`,`LEFT`,`RIGHT`,`FULL`,`CROSS`,`NATURAL`],STATEMENT_KEYWORDS=[`SELECT`,`INSERT INTO`,`UPDATE`,`DELETE FROM`,`WITH`,`CALL`,`CREATE`,`ALTER`,`DROP`,`TRUNCATE`,`EXPLAIN`,`ANALYZE`,`BEGIN`,`COMMIT`,`ROLLBACK`,`GRANT`,`REVOKE`],EXPRESSION_KEYWORDS=[`SELECT`,`WHERE`,`AND`,`OR`,`NOT`,`ON`,`HAVING`,`WHEN`,`THEN`,`ELSE`,`SET`,`CASE`];function detectSection(tokenized,tree,cursorPosition,sql){if(isInsideStringOrComment(tokenized,cursorPosition))return createContext$1(`UNKNOWN`,`UNKNOWN`,{containingNode:null,partialToken:null});let tokensUpToCursor=getTokensUpToCursor(tokenized,!0),partialToken=getPartialToken(tokenized);if(tokensUpToCursor.length===0&&sql.slice(0,cursorPosition).trim().length===0)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!0,partialToken});if(tokensUpToCursor.length===1&&tokensUpToCursor[0].type===`identifier`)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!1,partialToken});if(tokensUpToCursor.length===1&&tokensUpToCursor[0].type===`keyword`){let keywordValue=tokensUpToCursor[0].value.toUpperCase();if(STATEMENT_KEYWORDS.some(stmt=>stmt.toUpperCase().startsWith(keywordValue))&&cursorPosition===tokensUpToCursor[0].end)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!1,partialToken:keywordValue})}let currentToken=tokensUpToCursor[tokensUpToCursor.length-1],isTypingKeywordAsIdentifier=currentToken?.type===`keyword`&&cursorPosition===currentToken.end;if(tokensUpToCursor.length>0&&!partialToken&&!isTypingKeywordAsIdentifier){let lastToken$1=tokensUpToCursor[tokensUpToCursor.length-1],hasWordBreak=cursorPosition>lastToken$1.end,isDotCompletion=lastToken$1.value===`.`,isOpenParenCompletion=lastToken$1.value===`(`;if(!hasWordBreak&&!isDotCompletion&&!isOpenParenCompletion)return createContext$1(`UNKNOWN`,`UNKNOWN`,{containingNode:null,partialToken:null})}if(isTypingKeywordAsIdentifier&&tokensUpToCursor.length>1){let tokensWithoutLast=tokensUpToCursor.slice(0,-1),effectivePartialToken=currentToken.value,prevKeyword=findLastKeyword(tokensWithoutLast),clauseNode$1=findClauseAtPosition(tree,cursorPosition),statementType$1=detectStatementType(findStatementAtPosition(tree,cursorPosition)),section$1=determineSectionFromContext(clauseNode$1,prevKeyword,!1,!1,tokensWithoutLast,sql),contextToken$1=tokensWithoutLast[tokensWithoutLast.length-1],isContextTokenValue$1=contextToken$1?.type===`identifier`||contextToken$1?.type===`literal`,isAfterCompletedExpr=isContextTokenValue$1&&hasComparisonBeforeLastToken(tokensWithoutLast);return createContext$1(section$1,statementType$1,{isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedExpression:isAfterCompletedExpr,isAfterCompletedIdentifier:isContextTokenValue$1&&!isAfterCompletedExpr&&contextToken$1?.type===`identifier`,partialToken:effectivePartialToken,tablePrefix:null,depth:calculateSubqueryDepth(tokensUpToCursor),containingNode:clauseNode$1})}let clauseNode=findClauseAtPosition(tree,cursorPosition),statementType=detectStatementType(findStatementAtPosition(tree,cursorPosition)),lastTokens=tokensUpToCursor.slice(-5),lastToken=lastTokens[lastTokens.length-1],prevToken=lastTokens.length>1?lastTokens[lastTokens.length-2]:null;if(lastToken?.value===`.`){let identToken=prevToken;if(identToken?.type===`identifier`)return createContext$1(detectSectionFromClause(clauseNode),statementType,{tablePrefix:identToken.value,containingNode:clauseNode,partialToken:null})}if(lastToken?.value===`;`)return createContext$1(`STATEMENT_START`,`UNKNOWN`,{isAtKeywordBoundary:!0,containingNode:clauseNode,partialToken});if(statementType===`INSERT`&&isAfterInsertColumns(tokensUpToCursor))return createContext$1(`INSERT_VALUES`,statementType,{isAtKeywordBoundary:!0,containingNode:clauseNode,partialToken});let lastKeyword=findLastKeyword(tokensUpToCursor),isAfterKeyword=lastToken?.type===`keyword`,isAfterComma=lastToken?.value===`,`,isTypingOperator=lastToken?.type===`operator`&&[`<`,`>`,`!`].includes(lastToken.value)&&cursorPosition===lastToken.end,partialOperator=isTypingOperator?lastToken.value:null,isAfterOperator=!isTypingOperator&&(lastToken?.type===`operator`||[`=`,`<`,`>`,`!`,`+`,`-`].some(op=>lastToken?.value?.includes(op))),section=determineSectionFromContext(clauseNode,lastKeyword,isAfterKeyword,isAfterComma,tokensUpToCursor,sql,partialToken),depth=calculateSubqueryDepth(tokensUpToCursor),contextToken=partialToken&&tokensUpToCursor.length>=2?tokensUpToCursor[tokensUpToCursor.length-2]:lastToken,contextTokens=partialToken&&tokensUpToCursor.length>=2?tokensUpToCursor.slice(0,-1):tokensUpToCursor,isContextTokenValue=contextToken?.type===`identifier`||contextToken?.type===`literal`,isAfterCompletedValue=partialToken?isContextTokenValue:!isAfterComma&&!isAfterKeyword&&!isAfterOperator&&!isTypingOperator&&(lastToken?.type===`identifier`||lastToken?.type===`literal`),isAfterCompletedExpression=isAfterCompletedValue&&hasComparisonBeforeLastToken(contextTokens),isAfterCompletedIdentifier=isAfterCompletedValue&&!isAfterCompletedExpression&&(partialToken?contextToken?.type===`identifier`:lastToken?.type===`identifier`),isAfterNot=isAfterKeyword&&lastToken?.value?.toUpperCase()===`NOT`,ORDER_BY_MODIFIERS_SET=new Set([`ASC`,`DESC`,`FIRST`,`LAST`]),isAfterOrderByModifier=isAfterKeyword&&lastToken?.value!==void 0&&ORDER_BY_MODIFIERS_SET.has(lastToken.value.toUpperCase());return createContext$1(section,statementType,{isAtKeywordBoundary:isAfterKeyword,isAfterComma,isAfterOperator,isAfterCompletedIdentifier:isAfterCompletedIdentifier&&!isAfterCompletedExpression,isAfterCompletedExpression,isTypingOperator,partialOperator,isAfterNot,isAfterOrderByModifier,partialToken,tablePrefix:null,depth,containingNode:clauseNode})}function hasComparisonBeforeLastToken(tokens){if(tokens.length<3)return!1;let comparisonOps=[`=`,`<>`,`!=`,`<`,`>`,`<=`,`>=`,`LIKE`,`ILIKE`,`IN`,`BETWEEN`];for(let i$3=tokens.length-2;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.type!==`whitespace`){if(token$1.type===`operator`||token$1.type===`keyword`&&comparisonOps.includes(token$1.value.toUpperCase()))return!0;break}}return!1}function createContext$1(section,statementType,overrides$1={}){return{section,statementType,isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedIdentifier:!1,isAfterCompletedExpression:!1,isTypingOperator:!1,partialOperator:null,isAfterNot:!1,isAfterOrderByModifier:!1,partialToken:null,tablePrefix:null,depth:0,parentContext:null,containingNode:null,...overrides$1}}function detectStatementType(node$1){if(!node$1)return`UNKNOWN`;let type=node$1.type.toLowerCase();return type.includes(`select`)?`SELECT`:type.includes(`insert`)?`INSERT`:type.includes(`update`)?`UPDATE`:type.includes(`delete`)?`DELETE`:type.includes(`with`)?`WITH`:type.includes(`call`)?`CALL`:type.includes(`create`)?`CREATE`:`UNKNOWN`}function detectSectionFromClause(node$1){if(!node$1)return`UNKNOWN`;let type=node$1.type.toLowerCase();return type.includes(`select_clause`)?`SELECT_COLUMNS`:type.includes(`from_clause`)?`FROM_TABLE`:type.includes(`where_clause`)?`WHERE_CONDITION`:type.includes(`group_by`)?`GROUP_BY`:type.includes(`having`)?`HAVING`:type.includes(`order_by`)?`ORDER_BY`:type.includes(`limit`)?`LIMIT`:type.includes(`offset`)?`OFFSET`:type.includes(`with_clause`)?`WITH_CTE_NAME`:type.includes(`insert`)?`INSERT_TABLE`:type.includes(`update`)?`UPDATE_TABLE`:type.includes(`set_clause`)?`UPDATE_SET`:type.includes(`delete`)?`DELETE_TABLE`:type.includes(`call`)?`CALL_PROCEDURE`:`UNKNOWN`}function determineSectionFromContext(clauseNode,lastKeyword,_isAfterKeyword,isAfterComma,tokens,_sql,partialToken){let lastKeywordValue=lastKeyword?.value?.toUpperCase(),tokensForCreateTable=partialToken&&tokens.length>0?tokens.slice(0,-1):tokens;if(lastKeywordValue&&JOIN_KEYWORDS.includes(lastKeywordValue))return`JOIN_TABLE`;if(lastKeywordValue===`BY`){let prevKeyword=findKeywordBefore(tokens,lastKeyword);if(prevKeyword?.value?.toUpperCase()===`ORDER`)return`ORDER_BY`;if(prevKeyword?.value?.toUpperCase()===`GROUP`)return`GROUP_BY`}if(lastKeywordValue===`ORDER`)return`ORDER_BY_INCOMPLETE`;if(lastKeywordValue===`GROUP`)return`GROUP_BY_INCOMPLETE`;if(lastKeywordValue===`IS`)return`IS_INCOMPLETE`;if(lastKeywordValue===`NOT`&&findKeywordBefore(tokens,lastKeyword)?.value?.toUpperCase()===`IS`)return`IS_NOT_INCOMPLETE`;if(lastKeywordValue===`NULLS`)return`NULLS_INCOMPLETE`;if(lastKeywordValue&&[`ASC`,`DESC`,`FIRST`,`LAST`].includes(lastKeywordValue))return`ORDER_BY`;if(lastKeywordValue===`ON`&&isInJoinContext(tokens))return`JOIN_CONDITION`;if(lastKeywordValue===`CALL`)return`CALL_PROCEDURE`;if(lastKeywordValue===`RETURNING`)return`RETURNING`;if(lastKeywordValue===`CREATE`)return`CREATE_OBJECT`;if(lastKeywordValue===`TEMP`||lastKeywordValue===`TEMPORARY`||lastKeywordValue===`UNLOGGED`){for(let i$3=tokens.length-1;i$3>=0&&tokens[i$3].value!==`;`;i$3--)if(tokens[i$3].value?.toUpperCase()===`CREATE`)return`CREATE_OBJECT`}let createCtx=getCreateTableContext(tokensForCreateTable);if(createCtx.isInCreateTable){if(createCtx.isAfterColumnList)return`CREATE_TABLE_OPTIONS`;if(createCtx.isInsideColumnList)switch(createCtx.lastColumnElement){case`none`:case`comma`:return`CREATE_TABLE_COLUMNS`;case`name`:return`CREATE_TABLE_COLUMN_TYPE`;case`type`:case`constraint`:return`CREATE_TABLE_COLUMN_CONSTRAINT`}if(!createCtx.isAfterTableName||createCtx.isAfterTableName&&!createCtx.isInsideColumnList&&!createCtx.isAfterColumnList)return`CREATE_TABLE_NAME`}return lastKeywordValue===`USING`&&isInDeleteContext(tokens)?`FROM_TABLE`:lastKeywordValue&&TABLE_PRECEDING_KEYWORDS.includes(lastKeywordValue)?lastKeywordValue===`FROM`?isInDeleteContext(tokens)?`DELETE_TABLE`:`FROM_TABLE`:lastKeywordValue===`INTO`?`INSERT_TABLE`:lastKeywordValue===`UPDATE`?`UPDATE_TABLE`:`FROM_TABLE`:lastKeywordValue&&EXPRESSION_KEYWORDS.includes(lastKeywordValue)?lastKeywordValue===`SELECT`?`SELECT_COLUMNS`:lastKeywordValue===`WHERE`?`WHERE_CONDITION`:lastKeywordValue===`HAVING`?`HAVING`:lastKeywordValue===`SET`?`UPDATE_SET`:`WHERE_CONDITION`:isAfterComma?determineSectionAfterComma(tokens,clauseNode):clauseNode?detectSectionFromClause(clauseNode):lastKeyword?`UNKNOWN`:`STATEMENT_START`}var CLAUSE_KEYWORDS=new Set(`SELECT.INSERT.UPDATE.DELETE.MERGE.CREATE.ALTER.DROP.TRUNCATE.FROM.WHERE.SET.INTO.VALUES.RETURNING.JOIN.LEFT.RIGHT.INNER.OUTER.FULL.CROSS.NATURAL.ON.USING.AND.OR.NOT.GROUP.ORDER.BY.HAVING.LIMIT.OFFSET.FETCH.UNION.INTERSECT.EXCEPT.ALL.DISTINCT.WITH.AS.RECURSIVE.CASE.WHEN.THEN.ELSE.END.CALL.IS.IN.BETWEEN.LIKE.ILIKE.SIMILAR.ASC.DESC.NULLS.FIRST.LAST.FOR.TABLE.ONLY.WINDOW.PARTITION.OVER.LATERAL.ROWS.RANGE.GROUPS.PRECEDING.FOLLOWING.CURRENT.ROW.UNBOUNDED.INHERITS.TABLESPACE.TEMP.TEMPORARY.UNLOGGED.IF.PRIMARY.KEY.UNIQUE.CHECK.REFERENCES.FOREIGN.DEFAULT.CONSTRAINT.NULL.COLLATE.GENERATED.IDENTITY.DEFERRABLE.INITIALLY.DEFERRED.IMMEDIATE`.split(`.`));function findLastKeyword(tokens){for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`;`)return null;if(token$1.type===`keyword`&&CLAUSE_KEYWORDS.has(token$1.value.toUpperCase()))return token$1}return null}function findKeywordBefore(tokens,targetToken){if(!targetToken)return null;let foundTarget=!1;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.start===targetToken.start&&token$1.end===targetToken.end){foundTarget=!0;continue}if(foundTarget&&token$1.type===`keyword`)return token$1}return null}function isInJoinContext(tokens){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(JOIN_KEYWORDS.includes(upper))return!0;if(upper===`FROM`||upper===`WHERE`||upper===`SELECT`)return!1}}return!1}function isInDeleteContext(tokens){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,token$1.value===`;`)return!1;if(parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`DELETE`)return!0;if(upper===`SELECT`||upper===`INSERT`||upper===`UPDATE`)return!1}}return!1}function getCreateTableContext(tokens){let result={isInCreateTable:!1,isAfterTableName:!1,isInsideColumnList:!1,isAfterColumnList:!1,lastColumnElement:`none`},parenDepth=0,foundCreateTable=!1,tableNameSeen=!1,columnListStart=-1;for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3],upper=token$1.value?.toUpperCase();if(token$1.value===`;`){foundCreateTable=!1,tableNameSeen=!1,parenDepth=0,columnListStart=-1;continue}if(upper===`CREATE`)for(let j$1=i$3+1;j$1<tokens.length;j$1++){let nextUpper=tokens[j$1].value?.toUpperCase();if(nextUpper===`TABLE`){foundCreateTable=!0;break}if(![`TEMP`,`TEMPORARY`,`UNLOGGED`,`IF`,`NOT`,`EXISTS`].includes(nextUpper||``))break}foundCreateTable&&!tableNameSeen&&token$1.type===`identifier`&&(tableNameSeen=!0),token$1.value===`(`&&(foundCreateTable&&tableNameSeen&&columnListStart===-1&&(columnListStart=i$3),parenDepth++),token$1.value===`)`&&parenDepth--}if(result.isInCreateTable=foundCreateTable,result.isAfterTableName=tableNameSeen,result.isInsideColumnList=columnListStart!==-1&&parenDepth>0,result.isAfterColumnList=columnListStart!==-1&&parenDepth===0,result.isInsideColumnList){let depth=0,last=`none`,CONSTRAINT_KW=new Set([`NOT`,`NULL`,`DEFAULT`,`PRIMARY`,`KEY`,`UNIQUE`,`REFERENCES`,`CHECK`,`CONSTRAINT`,`COLLATE`,`GENERATED`,`DEFERRABLE`,`INITIALLY`]);for(let i$3=columnListStart+1;i$3<tokens.length;i$3++){let t$1=tokens[i$3],u$1=t$1.value?.toUpperCase();if(t$1.value===`(`&&depth++,t$1.value===`)`){if(depth===0)break;depth--}depth>0||(t$1.value===`,`?last=`comma`:t$1.type===`identifier`&&(last===`comma`||last===`none`)?last=`name`:t$1.type===`keyword`&&PG_DATA_TYPES.has(u$1||``)||t$1.type===`identifier`&&last===`name`?last=`type`:t$1.type===`keyword`&&last===`type`&&CONSTRAINT_KW.has(u$1||``)&&(last=`constraint`))}result.lastColumnElement=last}return result}function determineSectionAfterComma(tokens,clauseNode){let parenDepth=0;for(let i$3=tokens.length-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`SELECT`)return`SELECT_COLUMNS`;if(upper===`FROM`)return`FROM_TABLE`;if(upper===`BY`){let prevKeyword=findKeywordBefore(tokens.slice(0,i$3+1),token$1);if(prevKeyword?.value?.toUpperCase()===`ORDER`)return`ORDER_BY`;if(prevKeyword?.value?.toUpperCase()===`GROUP`)return`GROUP_BY`}if(upper===`WHERE`||upper===`AND`||upper===`OR`)return`WHERE_CONDITION`;if(upper===`SET`)return`UPDATE_SET`}}return clauseNode?detectSectionFromClause(clauseNode):`SELECT_COLUMNS`}function isAfterInsertColumns(tokens){let closeIdx=tokens.length-1;if(tokens[closeIdx]?.value!==`)`&&(closeIdx--,tokens[closeIdx]?.value!==`)`))return!1;let depth=0;for(let i$3=closeIdx;i$3>=0;i$3--){let val=tokens[i$3].value;if(val===`)`&&depth++,val===`(`&&depth--,depth===0&&tokens[i$3].type===`keyword`){let upper=val.toUpperCase();if(upper===`VALUES`)return!1;if(upper===`INTO`)return!0}}return!1}function calculateSubqueryDepth(tokens){let depth=0,maxDepth=0;for(let token$1 of tokens)token$1.value===`(`&&(depth++,maxDepth=Math.max(maxDepth,depth)),token$1.value===`)`&&depth--;return depth}var defaultParser={parseSync,isLoaded:isModuleLoaded};function analyzeScope(_context,tokenized,_tree,sql,schema,options$1){let parser$1=options$1?.parser??defaultParser,scopeInfo={availableTables:[],availableColumns:[],ctes:[],resolvedColumns:new Map,isPgQueryValid:!1};scopeInfo.availableTables=extractTablesFromTokens(tokenized,sql);let ctesFromTokens=extractCTEsFromTokens(tokenized,sql);scopeInfo.ctes=ctesFromTokens;for(let cte of ctesFromTokens)scopeInfo.availableTables.push({name:cte.name,alias:null,schema:null,source:`cte`});let pgQueryResult=tryPgQueryParse(sql,parser$1);return pgQueryResult.valid&&(scopeInfo.isPgQueryValid=!0,mergePgQueryResults(scopeInfo,pgQueryResult,schema)),resolveColumnsForTables(scopeInfo,schema),scopeInfo}function extractTablesFromTokens(tokenized,_sql){let tables=[],tokens=tokenized.tokens;for(let i$3=0;i$3<tokens.length;i$3++){let token$1=tokens[i$3],prevToken=i$3>0?tokens[i$3-1]:null,nextToken=i$3<tokens.length-1?tokens[i$3+1]:null,nextNextToken=i$3<tokens.length-2?tokens[i$3+2]:null,prevUpper=prevToken?.value?.toUpperCase();if((prevUpper===`FROM`||prevUpper===`JOIN`||prevUpper===`UPDATE`)&&token$1.type===`identifier`)if(nextToken?.value===`.`&&nextNextToken?.type===`identifier`){let schemaName=token$1.value,tableName=nextNextToken.value,aliasInfo=extractAlias(tokens,i$3+2);tables.push({name:tableName,alias:aliasInfo.alias,schema:schemaName,source:prevUpper===`JOIN`?`join`:`from`}),i$3=aliasInfo.endIndex-1}else{let aliasInfo=extractAlias(tokens,i$3);tables.push({name:token$1.value,alias:aliasInfo.alias,schema:null,source:prevUpper===`JOIN`?`join`:`from`}),i$3=aliasInfo.endIndex-1}if(prevUpper===`INTO`&&token$1.type===`identifier`){let aliasInfo=extractAlias(tokens,i$3);tables.push({name:token$1.value,alias:aliasInfo.alias,schema:null,source:`from`}),i$3=aliasInfo.endIndex-1}if(token$1.value===`,`&&isInFromClause(tokens,i$3)&&nextToken?.type===`identifier`){let aliasInfo=extractAlias(tokens,i$3+1);tables.push({name:nextToken.value,alias:aliasInfo.alias,schema:null,source:`from`}),i$3=aliasInfo.endIndex-1}}return tables}function extractAlias(tokens,tableIndex){let nextIndex=tableIndex+1,nextToken=tokens[nextIndex],nextNextToken=tokens[nextIndex+1];if(!nextToken)return{alias:null,endIndex:tableIndex+1};if(nextToken.value?.toUpperCase()===`AS`&&nextNextToken?.type===`identifier`)return{alias:nextNextToken.value,endIndex:nextIndex+2};if(nextToken.type===`identifier`){let upper=nextToken.value.toUpperCase();if(![`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`OFFSET`,`ON`,`JOIN`,`LEFT`,`RIGHT`,`INNER`,`OUTER`,`FULL`,`CROSS`,`NATURAL`,`SET`,`VALUES`].includes(upper))return{alias:nextToken.value,endIndex:nextIndex+1}}return{alias:null,endIndex:tableIndex+1}}function isInFromClause(tokens,index$4){let parenDepth=0;for(let i$3=index$4-1;i$3>=0;i$3--){let token$1=tokens[i$3];if(token$1.value===`)`&&parenDepth++,token$1.value===`(`&&parenDepth--,parenDepth===0&&token$1.type===`keyword`){let upper=token$1.value.toUpperCase();if(upper===`FROM`)return!0;if([`WHERE`,`GROUP`,`HAVING`,`ORDER`,`LIMIT`,`SELECT`].includes(upper))return!1}}return!1}function extractCTEsFromTokens(tokenized,_sql){let ctes=[],tokens=tokenized.tokens;if(tokens.length===0||tokens[0].value.toUpperCase()!==`WITH`)return ctes;let i$3=1;for(tokens[i$3]?.value?.toUpperCase()===`RECURSIVE`&&i$3++;i$3<tokens.length;){let token$1=tokens[i$3];if(token$1.type===`identifier`){let cteName=token$1.value,columns=[];if(i$3++,tokens[i$3]?.value===`(`){for(i$3++;i$3<tokens.length&&tokens[i$3].value!==`)`;)tokens[i$3].type===`identifier`&&columns.push(tokens[i$3].value),i$3++;i$3++}for(;i$3<tokens.length&&tokens[i$3].value?.toUpperCase()!==`AS`;)i$3++;if(i$3++,tokens[i$3]?.value===`(`){let parenDepth=1;for(i$3++;i$3<tokens.length&&parenDepth>0;)tokens[i$3].value===`(`&&parenDepth++,tokens[i$3].value===`)`&&parenDepth--,i$3++}if(ctes.push({name:cteName,columns}),tokens[i$3]?.value===`,`){i$3++;continue}break}i$3++}return ctes}function tryPgQueryParse(sql,parser$1){if(!parser$1.isLoaded())return{valid:!1,tables:[],columns:[]};try{let result=parser$1.parseSync(sql),tables=[],columns=[];return extractFromPgQueryAST(result,tables,columns),{valid:!0,tables,columns}}catch{return{valid:!1,tables:[],columns:[]}}}function extractFromPgQueryAST(node$1,tables,columns){if(!node$1||typeof node$1!=`object`)return;let obj=node$1;if(`RangeVar`in obj){let rv=obj.RangeVar,alias=rv.alias;tables.push({schema:rv.schemaname||null,name:rv.relname,alias:alias?.aliasname||null})}if(`ColumnRef`in obj){let fields=obj.ColumnRef.fields;if(fields){let parts=fields.map(f$2=>{let field=f$2;return`String`in field?field.String.sval:`A_Star`in field?`*`:``});parts.length===1?columns.push({table:null,column:parts[0]}):parts.length===2&&columns.push({table:parts[0],column:parts[1]})}}for(let key$1 of Object.keys(obj)){let value=obj[key$1];if(Array.isArray(value))for(let item of value)extractFromPgQueryAST(item,tables,columns);else typeof value==`object`&&value&&extractFromPgQueryAST(value,tables,columns)}}function mergePgQueryResults(scopeInfo,pgQueryResult,_schema){for(let pgTable of pgQueryResult.tables)scopeInfo.availableTables.some(t$1=>t$1.name.toLowerCase()===pgTable.name.toLowerCase()&&(t$1.alias?.toLowerCase()===pgTable.alias?.toLowerCase()||!t$1.alias&&!pgTable.alias))||scopeInfo.availableTables.push({name:pgTable.name,alias:pgTable.alias,schema:pgTable.schema,source:`from`})}function resolveColumnsForTables(scopeInfo,schema){for(let tableRef of scopeInfo.availableTables){let schemaTable=findTableInSchema(tableRef,schema);if(schemaTable){let columns=schemaTable.columns.map(col=>({name:col.name,table:tableRef.alias||tableRef.name,type:col.type,nullable:col.nullable}));scopeInfo.resolvedColumns.set(tableRef.alias||tableRef.name,columns),scopeInfo.availableColumns.push(...columns)}let cte=scopeInfo.ctes.find(c=>c.name.toLowerCase()===tableRef.name.toLowerCase());if(cte&&cte.columns.length>0){let columns=cte.columns.map(colName=>({name:colName,table:tableRef.alias||tableRef.name,type:null,nullable:!0}));scopeInfo.resolvedColumns.set(tableRef.alias||tableRef.name,columns),scopeInfo.availableColumns.push(...columns)}}}function findTableInSchema(nameOrRef,schema){let tableName,schemaName;if(typeof nameOrRef==`string`)if(nameOrRef.includes(`.`)){let[schemaPart,tablePart]=nameOrRef.split(`.`);schemaName=schemaPart,tableName=tablePart}else schemaName=null,tableName=nameOrRef;else schemaName=nameOrRef.schema,tableName=nameOrRef.name;let nameLower=tableName.toLowerCase(),schemaLower=schemaName?.toLowerCase();return schemaLower?schema.tables.find(t$1=>t$1.schema.toLowerCase()===schemaLower&&t$1.name.toLowerCase()===nameLower):schema.tables.find(t$1=>t$1.schema===schema.defaultSchema&&t$1.name.toLowerCase()===nameLower)||schema.tables.find(t$1=>t$1.name.toLowerCase()===nameLower)}function resolveAlias(scopeInfo,alias){let aliasLower=alias.toLowerCase();for(let tableRef of scopeInfo.availableTables)if(tableRef.alias?.toLowerCase()===aliasLower)return tableRef.name;return null}function getColumnsForTable(scopeInfo,tableOrAlias){let key$1=tableOrAlias.toLowerCase();for(let[name$2,columns]of scopeInfo.resolvedColumns)if(name$2.toLowerCase()===key$1)return columns;let tableName=resolveAlias(scopeInfo,tableOrAlias);if(tableName){for(let[name$2,columns]of scopeInfo.resolvedColumns)if(name$2.toLowerCase()===tableName.toLowerCase())return columns}return[]}const PG_SYSTEM_FUNCTIONS=[{name:`abbrev`,signatures:[{args:`cidr`,returnType:`text`},{args:`inet`,returnType:`text`}],description:`abbreviated display of inet value`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`abs`,signatures:[{args:`real`,returnType:`real`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`smallint`},{args:`double precision`,returnType:`double precision`}],description:`absolute value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`age`,signatures:[{args:`xid`,returnType:`integer`},{args:`timestamp with time zone`,returnType:`interval`},{args:`timestamp without time zone`,returnType:`interval`},{args:`timestamp with time zone, timestamp with time zone`,returnType:`interval`},{args:`timestamp without time zone, timestamp without time zone`,returnType:`interval`}],description:`age of a transaction ID, in transactions before current transaction`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`any_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`arbitrary value from among input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`area`,signatures:[{args:`box`,returnType:`double precision`},{args:`path`,returnType:`double precision`},{args:`circle`,returnType:`double precision`}],description:`box area`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_agg`,signatures:[{args:`anyarray`,returnType:`anyarray`},{args:`anynonarray`,returnType:`anyarray`}],description:`concatenate aggregate input into an array`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`array_append`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`anycompatiblearray`}],description:`append element onto end of array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_cat`,signatures:[{args:`anycompatiblearray, anycompatiblearray`,returnType:`anycompatiblearray`}],description:`implementation of || operator`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_dims`,signatures:[{args:`anyarray`,returnType:`text`}],description:`array dimensions`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_fill`,signatures:[{args:`anyelement, integer[]`,returnType:`anyarray`},{args:`anyelement, integer[], integer[]`,returnType:`anyarray`}],description:`array constructor with value`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_length`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array length`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_lower`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array lower dimension`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_ndims`,signatures:[{args:`anyarray`,returnType:`integer`}],description:`number of array dimensions`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_position`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`integer`},{args:`anycompatiblearray, anycompatible, integer`,returnType:`integer`}],description:`returns an offset of value in array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_positions`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`integer[]`}],description:`returns an array of offsets of some value in array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_prepend`,signatures:[{args:`anycompatible, anycompatiblearray`,returnType:`anycompatiblearray`}],description:`prepend element onto front of array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_remove`,signatures:[{args:`anycompatiblearray, anycompatible`,returnType:`anycompatiblearray`}],description:`remove any occurrences of an element from an array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_replace`,signatures:[{args:`anycompatiblearray, anycompatible, anycompatible`,returnType:`anycompatiblearray`}],description:`replace any occurrences of an element in an array`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`array_sample`,signatures:[{args:`anyarray, integer`,returnType:`anyarray`}],description:`take samples from array`,category:`array`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`array_shuffle`,signatures:[{args:`anyarray`,returnType:`anyarray`}],description:`shuffle array`,category:`array`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`array_to_json`,signatures:[{args:`anyarray`,returnType:`json`},{args:`anyarray, boolean`,returnType:`json`}],description:`map array to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`array_to_string`,signatures:[{args:`anyarray, text`,returnType:`text`},{args:`anyarray, text, text`,returnType:`text`}],description:`concatenate array elements, using delimiter, into text`,category:`array`,volatility:`s`,kind:`f`,permission:`read`},{name:`array_upper`,signatures:[{args:`anyarray, integer`,returnType:`integer`}],description:`array upper dimension`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`ascii`,signatures:[{args:`text`,returnType:`integer`}],description:`convert first char to int4`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`avg`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`the average (arithmetic mean) as numeric of all bigint values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_and`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-and smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_length`,signatures:[{args:`bit`,returnType:`integer`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`}],description:`length in bits`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`bit_or`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-or smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bit_xor`,signatures:[{args:`bit`,returnType:`bit`},{args:`bigint`,returnType:`bigint`},{args:`integer`,returnType:`integer`},{args:`smallint`,returnType:`smallint`}],description:`bitwise-xor smallint aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bool_and`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-and aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`bool_or`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-or aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`box`,signatures:[{args:`point`,returnType:`box`},{args:`circle`,returnType:`box`},{args:`polygon`,returnType:`box`},{args:`point, point`,returnType:`box`}],description:`convert points to box`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`broadcast`,signatures:[{args:`inet`,returnType:`inet`}],description:`broadcast address of network`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`btrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from both ends of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`cardinality`,signatures:[{args:`anyarray`,returnType:`integer`}],description:`array cardinality`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`cbrt`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`cube root`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ceil`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer >= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ceiling`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer >= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`center`,signatures:[{args:`box`,returnType:`point`},{args:`circle`,returnType:`point`}],description:`center of`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`char_length`,signatures:[{args:`text`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`character length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`character_length`,signatures:[{args:`text`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`character length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`chr`,signatures:[{args:`integer`,returnType:`text`}],description:`convert int4 to char`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`circle`,signatures:[{args:`box`,returnType:`circle`},{args:`polygon`,returnType:`circle`},{args:`point, double precision`,returnType:`circle`}],description:`convert point and radius to circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`clock_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current clock time`,category:`datetime`,volatility:`v`,kind:`f`,permission:`read`},{name:`coalesce`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return first non-null argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`concat`,signatures:[{args:`VARIADIC "any"`,returnType:`text`}],description:`concatenate values`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`concat_ws`,signatures:[{args:`text, VARIADIC "any"`,returnType:`text`}],description:`concatenate values with separators`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`corr`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`correlation coefficient`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`count`,signatures:[{args:``,returnType:`bigint`},{args:`"any"`,returnType:`bigint`}],description:`number of input rows for which the input expression is not null`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`covar_pop`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`population covariance`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`covar_samp`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sample covariance`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`cume_dist`,signatures:[{args:``,returnType:`double precision`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`double precision`}],description:`fractional row number within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`current_database`,signatures:[{args:``,returnType:`name`}],description:`name of the current database`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_schema`,signatures:[{args:``,returnType:`name`}],description:`current schema name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_schemas`,signatures:[{args:`boolean`,returnType:`name[]`}],description:`current schema search list`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`current_user`,signatures:[{args:``,returnType:`name`}],description:`current user name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`date_add`,signatures:[{args:`timestamp with time zone, interval`,returnType:`timestamp with time zone`},{args:`timestamp with time zone, interval, text`,returnType:`timestamp with time zone`}],description:`add interval to timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_bin`,signatures:[{args:`interval, timestamp with time zone, timestamp with time zone`,returnType:`timestamp with time zone`},{args:`interval, timestamp without time zone, timestamp without time zone`,returnType:`timestamp without time zone`}],description:`bin timestamp into specified interval`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`,minVersion:14},{name:`date_part`,signatures:[{args:`text, date`,returnType:`double precision`},{args:`text, interval`,returnType:`double precision`},{args:`text, time with time zone`,returnType:`double precision`},{args:`text, time without time zone`,returnType:`double precision`},{args:`text, timestamp with time zone`,returnType:`double precision`},{args:`text, timestamp without time zone`,returnType:`double precision`}],description:`extract field from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_subtract`,signatures:[{args:`timestamp with time zone, interval`,returnType:`timestamp with time zone`},{args:`timestamp with time zone, interval, text`,returnType:`timestamp with time zone`}],description:`subtract interval from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`date_trunc`,signatures:[{args:`text, interval`,returnType:`interval`},{args:`text, timestamp with time zone`,returnType:`timestamp with time zone`},{args:`text, timestamp without time zone`,returnType:`timestamp without time zone`},{args:`text, timestamp with time zone, text`,returnType:`timestamp with time zone`}],description:`truncate timestamp with time zone to specified units`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`daterange`,signatures:[{args:`date, date`,returnType:`daterange`},{args:`date, date, text`,returnType:`daterange`}],description:`daterange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`decode`,signatures:[{args:`text, text`,returnType:`bytea`}],description:`convert ascii-encoded text string into bytea value`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`degrees`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`radians to degrees`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`dense_rank`,signatures:[{args:``,returnType:`bigint`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`bigint`}],description:`integer rank without gaps`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`diameter`,signatures:[{args:`circle`,returnType:`double precision`}],description:`diameter of circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`div`,signatures:[{args:`numeric, numeric`,returnType:`numeric`}],description:`trunc(x/y)`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`encode`,signatures:[{args:`bytea, text`,returnType:`text`}],description:`convert bytea value into some ascii-only text string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`every`,signatures:[{args:`boolean`,returnType:`boolean`}],description:`boolean-and aggregate`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`exp`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`natural exponential (e^x)`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`extract`,signatures:[{args:`text, date`,returnType:`numeric`},{args:`text, interval`,returnType:`numeric`},{args:`text, time with time zone`,returnType:`numeric`},{args:`text, time without time zone`,returnType:`numeric`},{args:`text, timestamp with time zone`,returnType:`numeric`},{args:`text, timestamp without time zone`,returnType:`numeric`}],description:`extract field from timestamp with time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`factorial`,signatures:[{args:`bigint`,returnType:`numeric`}],description:`factorial`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`family`,signatures:[{args:`inet`,returnType:`integer`}],description:`address family (4 for IPv4, 6 for IPv6)`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`first_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`fetch the first row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`floor`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`nearest integer <= value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`format`,signatures:[{args:`text`,returnType:`text`},{args:`text, VARIADIC "any"`,returnType:`text`}],description:`format text message`,category:`string`,volatility:`s`,kind:`f`,permission:`read`},{name:`gcd`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`}],description:`greatest common divisor`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`gen_random_uuid`,signatures:[{args:``,returnType:`uuid`}],description:`generate random UUID`,category:`system`,volatility:`v`,kind:`f`,permission:`read`,minVersion:13},{name:`generate_series`,signatures:[{args:`bigint, bigint`,returnType:`SETOF bigint`},{args:`integer, integer`,returnType:`SETOF integer`},{args:`numeric, numeric`,returnType:`SETOF numeric`},{args:`bigint, bigint, bigint`,returnType:`SETOF bigint`},{args:`integer, integer, integer`,returnType:`SETOF integer`},{args:`numeric, numeric, numeric`,returnType:`SETOF numeric`},{args:`timestamp with time zone, timestamp with time zone, interval`,returnType:`SETOF timestamp with time zone`},{args:`timestamp without time zone, timestamp without time zone, interval`,returnType:`SETOF timestamp without time zone`},{args:`timestamp with time zone, timestamp with time zone, interval, text`,returnType:`SETOF timestamp with time zone`}],description:`non-persistent series generator`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`greatest`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return largest argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`height`,signatures:[{args:`box`,returnType:`double precision`}],description:`box height`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`host`,signatures:[{args:`inet`,returnType:`text`}],description:`show address octets only`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`hostmask`,signatures:[{args:`inet`,returnType:`inet`}],description:`hostmask of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_client_addr`,signatures:[{args:``,returnType:`inet`}],description:`inet address of the client`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_client_port`,signatures:[{args:``,returnType:`integer`}],description:`client's port number for this connection`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_merge`,signatures:[{args:`inet, inet`,returnType:`cidr`}],description:`the smallest network which includes both of the given networks`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_same_family`,signatures:[{args:`inet, inet`,returnType:`boolean`}],description:`are the addresses from the same family?`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`inet_server_addr`,signatures:[{args:``,returnType:`inet`}],description:`inet address of the server`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`inet_server_port`,signatures:[{args:``,returnType:`integer`}],description:`server's port number for this connection`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`initcap`,signatures:[{args:`text`,returnType:`text`}],description:`capitalize each word`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`int4range`,signatures:[{args:`integer, integer`,returnType:`int4range`},{args:`integer, integer, text`,returnType:`int4range`}],description:`int4range constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`int8range`,signatures:[{args:`bigint, bigint`,returnType:`int8range`},{args:`bigint, bigint, text`,returnType:`int8range`}],description:`int8range constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`is_normalized`,signatures:[{args:`text, text`,returnType:`boolean`}],description:`check Unicode normalization`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`isclosed`,signatures:[{args:`path`,returnType:`boolean`}],description:`path closed?`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`isempty`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range empty?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`isfinite`,signatures:[{args:`date`,returnType:`boolean`},{args:`interval`,returnType:`boolean`},{args:`timestamp with time zone`,returnType:`boolean`},{args:`timestamp without time zone`,returnType:`boolean`}],description:`finite date?`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`isopen`,signatures:[{args:`path`,returnType:`boolean`}],description:`path open?`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_agg`,signatures:[{args:`anyelement`,returnType:`json`}],description:`aggregate input into json`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_agg_strict`,signatures:[{args:`anyelement`,returnType:`json`}],description:`aggregate input into json`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_array_element`,signatures:[{args:`from_json json, element_index integer`,returnType:`json`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_element_text`,signatures:[{args:`from_json json, element_index integer`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_elements`,signatures:[{args:`from_json json, OUT value json`,returnType:`SETOF json`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_elements_text`,signatures:[{args:`from_json json, OUT value text`,returnType:`SETOF text`}],description:`elements of json array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_array_length`,signatures:[{args:`json`,returnType:`integer`}],description:`length of json array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_build_array`,signatures:[{args:``,returnType:`json`},{args:`VARIADIC "any"`,returnType:`json`}],description:`build a json array from any inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_build_object`,signatures:[{args:``,returnType:`json`},{args:`VARIADIC "any"`,returnType:`json`}],description:`build a json object from pairwise key/value inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_each`,signatures:[{args:`from_json json, OUT key text, OUT value json`,returnType:`SETOF record`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_each_text`,signatures:[{args:`from_json json, OUT key text, OUT value text`,returnType:`SETOF record`}],description:`key value pairs of a json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_extract_path`,signatures:[{args:`from_json json, VARIADIC path_elems text[]`,returnType:`json`}],description:`get value from json with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_extract_path_text`,signatures:[{args:`from_json json, VARIADIC path_elems text[]`,returnType:`text`}],description:`get value from json as text with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object`,signatures:[{args:`text[]`,returnType:`json`},{args:`text[], text[]`,returnType:`json`}],description:`map text array of key value pairs to json object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_agg`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate input into a json object`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_strict`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate non-NULL input into a json object`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_unique`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate input into a json object with unique keys`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_agg_unique_strict`,signatures:[{args:`key "any", value "any"`,returnType:`json`}],description:`aggregate non-NULL input into a json object with unique keys`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`json_object_field`,signatures:[{args:`from_json json, field_name text`,returnType:`json`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_field_text`,signatures:[{args:`from_json json, field_name text`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_object_keys`,signatures:[{args:`json`,returnType:`SETOF text`}],description:`get json object keys`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_populate_record`,signatures:[{args:`base anyelement, from_json json, use_json_as_text boolean`,returnType:`anyelement`}],description:`get record fields from a json object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_populate_recordset`,signatures:[{args:`base anyelement, from_json json, use_json_as_text boolean`,returnType:`SETOF anyelement`}],description:`get set of records with fields from a json array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_strip_nulls`,signatures:[{args:`json`,returnType:`json`}],description:`remove object fields with null values from json`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_to_record`,signatures:[{args:`json`,returnType:`record`}],description:`get record fields from a json object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_to_recordset`,signatures:[{args:`json`,returnType:`SETOF record`}],description:`get set of records with fields from a json array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`json_to_tsvector`,signatures:[{args:`json, jsonb`,returnType:`tsvector`},{args:`regconfig, json, jsonb`,returnType:`tsvector`}],description:`transform specified values from json to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`json_typeof`,signatures:[{args:`json`,returnType:`text`}],description:`get the type of a json value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_agg`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`aggregate input into jsonb`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`jsonb_agg_strict`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`aggregate input into jsonb skipping nulls`,category:`aggregate`,volatility:`s`,kind:`a`,permission:`read`},{name:`jsonb_array_element`,signatures:[{args:`from_json jsonb, element_index integer`,returnType:`jsonb`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_element_text`,signatures:[{args:`from_json jsonb, element_index integer`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_elements`,signatures:[{args:`from_json jsonb, OUT value jsonb`,returnType:`SETOF jsonb`}],description:`elements of a jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_elements_text`,signatures:[{args:`from_json jsonb, OUT value text`,returnType:`SETOF text`}],description:`elements of jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_array_length`,signatures:[{args:`jsonb`,returnType:`integer`}],description:`length of jsonb array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_build_array`,signatures:[{args:``,returnType:`jsonb`},{args:`VARIADIC "any"`,returnType:`jsonb`}],description:`build a jsonb array from any inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_build_object`,signatures:[{args:``,returnType:`jsonb`},{args:`VARIADIC "any"`,returnType:`jsonb`}],description:`build a jsonb object from pairwise key/value inputs`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_cmp`,signatures:[{args:`jsonb, jsonb`,returnType:`integer`}],description:`less-equal-greater`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_concat`,signatures:[{args:`jsonb, jsonb`,returnType:`jsonb`}],description:`implementation of || operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_contained`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <@ operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_contains`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of @> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_delete`,signatures:[{args:`jsonb, text`,returnType:`jsonb`},{args:`jsonb, integer`,returnType:`jsonb`},{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`jsonb`}],description:`implementation of - operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_delete_path`,signatures:[{args:`jsonb, text[]`,returnType:`jsonb`}],description:`implementation of #- operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_each`,signatures:[{args:`from_json jsonb, OUT key text, OUT value jsonb`,returnType:`SETOF record`}],description:`key value pairs of a jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_each_text`,signatures:[{args:`from_json jsonb, OUT key text, OUT value text`,returnType:`SETOF record`}],description:`key value pairs of a jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_eq`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of = operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists`,signatures:[{args:`jsonb, text`,returnType:`boolean`}],description:`implementation of ? operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists_all`,signatures:[{args:`jsonb, text[]`,returnType:`boolean`}],description:`implementation of ?& operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_exists_any`,signatures:[{args:`jsonb, text[]`,returnType:`boolean`}],description:`implementation of ?| operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_extract_path`,signatures:[{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`jsonb`}],description:`get value from jsonb with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_extract_path_text`,signatures:[{args:`from_json jsonb, VARIADIC path_elems text[]`,returnType:`text`}],description:`get value from jsonb as text with path elements`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_ge`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of >= operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_gt`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of > operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_hash`,signatures:[{args:`jsonb`,returnType:`integer`}],description:`hash`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_hash_extended`,signatures:[{args:`jsonb, bigint`,returnType:`bigint`}],description:`hash`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_insert`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, insert_after boolean`,returnType:`jsonb`}],description:`Insert value into a jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_le`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <= operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_lt`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of < operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_ne`,signatures:[{args:`jsonb, jsonb`,returnType:`boolean`}],description:`implementation of <> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object`,signatures:[{args:`text[]`,returnType:`jsonb`},{args:`text[], text[]`,returnType:`jsonb`}],description:`map text array of key value pairs to jsonb object`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_agg`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate inputs into jsonb object`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_strict`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate non-NULL inputs into jsonb object`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_unique`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate inputs into jsonb object checking key uniqueness`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_agg_unique_strict`,signatures:[{args:`key "any", value "any"`,returnType:`jsonb`}],description:`aggregate non-NULL inputs into jsonb object checking key uniqueness`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`jsonb_object_field`,signatures:[{args:`from_json jsonb, field_name text`,returnType:`jsonb`}],description:`implementation of -> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_field_text`,signatures:[{args:`from_json jsonb, field_name text`,returnType:`text`}],description:`implementation of ->> operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_object_keys`,signatures:[{args:`jsonb`,returnType:`SETOF text`}],description:`get jsonb object keys`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_path_exists`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath exists test`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_exists_opr`,signatures:[{args:`jsonb, jsonpath`,returnType:`boolean`}],description:`implementation of @? operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_exists_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath exists test with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath match`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match_opr`,signatures:[{args:`jsonb, jsonpath`,returnType:`boolean`}],description:`implementation of @@ operator`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_match_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`boolean`}],description:`jsonpath match with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`SETOF jsonb`}],description:`jsonpath query`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_array`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query wrapped into array`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_array_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query wrapped into array with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_first`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query first item`,category:`json`,volatility:`i`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_first_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`jsonb`}],description:`jsonpath query first item with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_path_query_tz`,signatures:[{args:`target jsonb, path jsonpath, vars jsonb, silent boolean`,returnType:`SETOF jsonb`}],description:`jsonpath query with timezone`,category:`json`,volatility:`s`,kind:`f`,permission:`read`,minVersion:12},{name:`jsonb_populate_record`,signatures:[{args:`anyelement, jsonb`,returnType:`anyelement`}],description:`get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_populate_record_valid`,signatures:[{args:`anyelement, jsonb`,returnType:`boolean`}],description:`test get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_populate_recordset`,signatures:[{args:`anyelement, jsonb`,returnType:`SETOF anyelement`}],description:`get set of records with fields from a jsonb array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_pretty`,signatures:[{args:`jsonb`,returnType:`text`}],description:`Indented text from jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_set`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, create_if_missing boolean`,returnType:`jsonb`}],description:`Set part of a jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_set_lax`,signatures:[{args:`jsonb_in jsonb, path text[], replacement jsonb, create_if_missing boolean, null_value_treatment text`,returnType:`jsonb`}],description:`Set part of a jsonb, handle NULL value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_strip_nulls`,signatures:[{args:`jsonb`,returnType:`jsonb`}],description:`remove object fields with null values from jsonb`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_subscript_handler`,signatures:[{args:`internal`,returnType:`internal`}],description:`jsonb subscripting logic`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_to_record`,signatures:[{args:`jsonb`,returnType:`record`}],description:`get record fields from a jsonb object`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_to_recordset`,signatures:[{args:`jsonb`,returnType:`SETOF record`}],description:`get set of records with fields from a jsonb array of objects`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`jsonb_to_tsvector`,signatures:[{args:`jsonb, jsonb`,returnType:`tsvector`},{args:`regconfig, jsonb, jsonb`,returnType:`tsvector`}],description:`transform specified values from jsonb to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`jsonb_typeof`,signatures:[{args:`jsonb`,returnType:`text`}],description:`get the type of a jsonb value`,category:`json`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_days`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 30 days to numbers of months`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_hours`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 24 hours to numbers of days`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`justify_interval`,signatures:[{args:`interval`,returnType:`interval`}],description:`promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`lag`,signatures:[{args:`anyelement`,returnType:`anyelement`},{args:`anyelement, integer`,returnType:`anyelement`},{args:`anycompatible, integer, anycompatible`,returnType:`anycompatible`}],description:`fetch the preceding row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`last_value`,signatures:[{args:`anyelement`,returnType:`anyelement`}],description:`fetch the last row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`lcm`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`}],description:`least common multiple`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`lead`,signatures:[{args:`anyelement`,returnType:`anyelement`},{args:`anyelement, integer`,returnType:`anyelement`},{args:`anycompatible, integer, anycompatible`,returnType:`anycompatible`}],description:`fetch the following row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`least`,signatures:[{args:`VARIADIC "any"`,returnType:`anyelement`}],description:`return smallest argument`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`left`,signatures:[{args:`text, integer`,returnType:`text`}],description:`extract the first n characters`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`length`,signatures:[{args:`bit`,returnType:`integer`},{args:`lseg`,returnType:`double precision`},{args:`path`,returnType:`double precision`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`},{args:`tsvector`,returnType:`integer`},{args:`character`,returnType:`integer`},{args:`bytea, name`,returnType:`integer`}],description:`length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`line`,signatures:[{args:`point, point`,returnType:`line`}],description:`construct line from points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`ln`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`natural logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`log`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`},{args:`numeric, numeric`,returnType:`numeric`}],description:`base 10 logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`log10`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`base 10 logarithm`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower`,signatures:[{args:`text`,returnType:`text`},{args:`anyrange`,returnType:`anyelement`},{args:`anymultirange`,returnType:`anyelement`}],description:`lowercase`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower_inc`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's lower bound inclusive?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`lower_inf`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's lower bound infinite?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`lpad`,signatures:[{args:`text, integer`,returnType:`text`},{args:`text, integer, text`,returnType:`text`}],description:`left-pad string to length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`lseg`,signatures:[{args:`box`,returnType:`lseg`},{args:`point, point`,returnType:`lseg`}],description:`convert points to line segment`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`ltrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from left end of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_date`,signatures:[{args:`year integer, month integer, day integer`,returnType:`date`}],description:`construct date`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_interval`,signatures:[{args:`years integer, months integer, weeks integer, days integer, hours integer, mins integer, secs double precision`,returnType:`interval`}],description:`construct interval`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_time`,signatures:[{args:`hour integer, min integer, sec double precision`,returnType:`time without time zone`}],description:`construct time`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_timestamp`,signatures:[{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision`,returnType:`timestamp without time zone`}],description:`construct timestamp`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`make_timestamptz`,signatures:[{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision`,returnType:`timestamp with time zone`},{args:`year integer, month integer, mday integer, hour integer, min integer, sec double precision, timezone text`,returnType:`timestamp with time zone`}],description:`construct timestamp with time zone`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`masklen`,signatures:[{args:`inet`,returnType:`integer`}],description:`netmask length`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`max`,signatures:[{args:`oid`,returnType:`oid`},{args:`tid`,returnType:`tid`},{args:`date`,returnType:`date`},{args:`inet`,returnType:`inet`},{args:`real`,returnType:`real`},{args:`text`,returnType:`text`},{args:`xid8`,returnType:`xid8`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`bigint`},{args:`pg_lsn`,returnType:`pg_lsn`},{args:`anyenum`,returnType:`anyenum`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`anyarray`,returnType:`anyarray`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`smallint`},{args:`character`,returnType:`character`},{args:`double precision`,returnType:`double precision`},{args:`time with time zone`,returnType:`time with time zone`},{args:`time without time zone`,returnType:`time without time zone`},{args:`timestamp with time zone`,returnType:`timestamp with time zone`},{args:`timestamp without time zone`,returnType:`timestamp without time zone`}],description:`maximum value of all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`md5`,signatures:[{args:`text`,returnType:`text`},{args:`bytea`,returnType:`text`}],description:`MD5 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`min`,signatures:[{args:`oid`,returnType:`oid`},{args:`tid`,returnType:`tid`},{args:`date`,returnType:`date`},{args:`inet`,returnType:`inet`},{args:`real`,returnType:`real`},{args:`text`,returnType:`text`},{args:`xid8`,returnType:`xid8`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`bigint`},{args:`pg_lsn`,returnType:`pg_lsn`},{args:`anyenum`,returnType:`anyenum`},{args:`integer`,returnType:`integer`},{args:`numeric`,returnType:`numeric`},{args:`anyarray`,returnType:`anyarray`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`smallint`},{args:`character`,returnType:`character`},{args:`double precision`,returnType:`double precision`},{args:`time with time zone`,returnType:`time with time zone`},{args:`time without time zone`,returnType:`time without time zone`},{args:`timestamp with time zone`,returnType:`timestamp with time zone`},{args:`timestamp without time zone`,returnType:`timestamp without time zone`}],description:`minimum value of all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`min_scale`,signatures:[{args:`numeric`,returnType:`integer`}],description:`minimum scale needed to represent the value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`,minVersion:13},{name:`mod`,signatures:[{args:`bigint, bigint`,returnType:`bigint`},{args:`integer, integer`,returnType:`integer`},{args:`numeric, numeric`,returnType:`numeric`},{args:`smallint, smallint`,returnType:`smallint`}],description:`modulus`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`mode`,signatures:[{args:`ORDER BY anyelement`,returnType:`anyelement`}],description:`most common value`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`netmask`,signatures:[{args:`inet`,returnType:`inet`}],description:`netmask of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`network`,signatures:[{args:`inet`,returnType:`cidr`}],description:`network part of address`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`normalize`,signatures:[{args:`text, text`,returnType:`text`}],description:`Unicode normalization`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`now`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current transaction time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`npoints`,signatures:[{args:`path`,returnType:`integer`},{args:`polygon`,returnType:`integer`}],description:`number of points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`nth_value`,signatures:[{args:`anyelement, integer`,returnType:`anyelement`}],description:`fetch the Nth row value`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`ntile`,signatures:[{args:`integer`,returnType:`integer`}],description:`split rows into N groups`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`nullif`,signatures:[{args:`anyelement, anyelement`,returnType:`anyelement`}],description:`return null if arguments are equal`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`num_nonnulls`,signatures:[{args:`VARIADIC "any"`,returnType:`integer`}],description:`count the number of non-NULL arguments`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`num_nulls`,signatures:[{args:`VARIADIC "any"`,returnType:`integer`}],description:`count the number of NULL arguments`,category:`conditional`,volatility:`i`,kind:`f`,permission:`read`},{name:`numrange`,signatures:[{args:`numeric, numeric`,returnType:`numrange`},{args:`numeric, numeric, text`,returnType:`numrange`}],description:`numrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`octet_length`,signatures:[{args:`bit`,returnType:`integer`},{args:`text`,returnType:`integer`},{args:`bytea`,returnType:`integer`},{args:`character`,returnType:`integer`}],description:`octet length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`overlay`,signatures:[{args:`bit, bit, integer`,returnType:`bit`},{args:`text, text, integer`,returnType:`text`},{args:`bytea, bytea, integer`,returnType:`bytea`},{args:`bit, bit, integer, integer`,returnType:`bit`},{args:`text, text, integer, integer`,returnType:`text`},{args:`bytea, bytea, integer, integer`,returnType:`bytea`}],description:`substitute portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`path`,signatures:[{args:`polygon`,returnType:`path`}],description:`convert polygon to path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`pclose`,signatures:[{args:`path`,returnType:`path`}],description:`close path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`percent_rank`,signatures:[{args:``,returnType:`double precision`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`double precision`}],description:`fractional rank within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`percentile_cont`,signatures:[{args:`double precision ORDER BY interval`,returnType:`interval`},{args:`double precision[] ORDER BY interval`,returnType:`interval[]`},{args:`double precision ORDER BY double precision`,returnType:`double precision`},{args:`double precision[] ORDER BY double precision`,returnType:`double precision[]`}],description:`continuous distribution percentile`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`percentile_disc`,signatures:[{args:`double precision ORDER BY anyelement`,returnType:`anyelement`},{args:`double precision[] ORDER BY anyelement`,returnType:`anyarray`}],description:`discrete percentile`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`pg_backend_pid`,signatures:[{args:``,returnType:`integer`}],description:`statistics: current backend PID`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_blocking_pids`,signatures:[{args:`integer`,returnType:`integer[]`}],description:`get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_cancel_backend`,signatures:[{args:`integer`,returnType:`boolean`}],description:`cancel a server process' current query`,category:`system`,volatility:`v`,kind:`f`,permission:`admin`},{name:`pg_column_size`,signatures:[{args:`"any"`,returnType:`integer`}],description:`bytes required to store the value, perhaps with compression`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_conf_load_time`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`configuration load time`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_database_size`,signatures:[{args:`oid`,returnType:`bigint`},{args:`name`,returnType:`bigint`}],description:`total disk space usage for the specified database`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_get_constraintdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`constraint description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_functiondef`,signatures:[{args:`oid`,returnType:`text`}],description:`definition of a function`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_indexdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, integer, boolean`,returnType:`text`}],description:`index description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_ruledef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`source text of a rule`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_serial_sequence`,signatures:[{args:`text, text`,returnType:`text`}],description:`name of sequence for a serial column`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_triggerdef`,signatures:[{args:`oid`,returnType:`text`},{args:`oid, boolean`,returnType:`text`}],description:`trigger description`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_userbyid`,signatures:[{args:`oid`,returnType:`name`}],description:`role name by OID (with fallback)`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_get_viewdef`,signatures:[{args:`oid`,returnType:`text`},{args:`text`,returnType:`text`},{args:`oid, boolean`,returnType:`text`},{args:`oid, integer`,returnType:`text`},{args:`text, boolean`,returnType:`text`}],description:`select statement of a view`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_indexes_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`disk space usage for all indexes attached to the specified table`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_is_in_recovery`,signatures:[{args:``,returnType:`boolean`}],description:`true if server is in recovery`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_last_xact_replay_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`timestamp of last replay xact`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_postmaster_start_time`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`postmaster start time`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`pg_relation_size`,signatures:[{args:`regclass`,returnType:`bigint`},{args:`regclass, text`,returnType:`bigint`}],description:`disk space usage for the specified fork of a table or index`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_size_bytes`,signatures:[{args:`text`,returnType:`bigint`}],description:`convert a size in human-readable format with size units into bytes`,category:`system`,volatility:`i`,kind:`f`,permission:`read`},{name:`pg_size_pretty`,signatures:[{args:`bigint`,returnType:`text`},{args:`numeric`,returnType:`text`}],description:`convert a long int to a human readable text using size units`,category:`system`,volatility:`i`,kind:`f`,permission:`read`},{name:`pg_sleep`,signatures:[{args:`double precision`,returnType:`void`}],description:`sleep for the specified time in seconds`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_sleep_for`,signatures:[{args:`interval`,returnType:`void`}],description:`sleep for the specified interval`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_sleep_until`,signatures:[{args:`timestamp with time zone`,returnType:`void`}],description:`sleep until the specified time`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_table_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`disk space usage for the specified table, including TOAST, free space and visibility map`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_tablespace_size`,signatures:[{args:`oid`,returnType:`bigint`},{args:`name`,returnType:`bigint`}],description:`total disk space usage for the specified tablespace`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_terminate_backend`,signatures:[{args:`pid integer, timeout bigint`,returnType:`boolean`}],description:`terminate a server process`,category:`system`,volatility:`v`,kind:`f`,permission:`admin`},{name:`pg_total_relation_size`,signatures:[{args:`regclass`,returnType:`bigint`}],description:`total disk space usage for the specified table and associated indexes`,category:`system`,volatility:`v`,kind:`f`,permission:`read`},{name:`pg_typeof`,signatures:[{args:`"any"`,returnType:`regtype`}],description:`type of the argument`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`phraseto_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`pi`,signatures:[{args:``,returnType:`double precision`}],description:`PI`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`plainto_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`point`,signatures:[{args:`box`,returnType:`point`},{args:`lseg`,returnType:`point`},{args:`circle`,returnType:`point`},{args:`polygon`,returnType:`point`},{args:`double precision, double precision`,returnType:`point`}],description:`center of`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`polygon`,signatures:[{args:`box`,returnType:`polygon`},{args:`path`,returnType:`polygon`},{args:`circle`,returnType:`polygon`},{args:`integer, circle`,returnType:`polygon`}],description:`convert box to polygon`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`popen`,signatures:[{args:`path`,returnType:`path`}],description:`open path`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`position`,signatures:[{args:`bit, bit`,returnType:`integer`},{args:`text, text`,returnType:`integer`},{args:`bytea, bytea`,returnType:`integer`}],description:`position of substring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`power`,signatures:[{args:`numeric, numeric`,returnType:`numeric`},{args:`double precision, double precision`,returnType:`double precision`}],description:`exponentiation`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_ident`,signatures:[{args:`text`,returnType:`text`}],description:`quote an identifier for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_literal`,signatures:[{args:`text`,returnType:`text`},{args:`anyelement`,returnType:`text`}],description:`quote a literal for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`quote_nullable`,signatures:[{args:`text`,returnType:`text`},{args:`anyelement`,returnType:`text`}],description:`quote a possibly-null literal for usage in a querystring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`radians`,signatures:[{args:`double precision`,returnType:`double precision`}],description:`degrees to radians`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`radius`,signatures:[{args:`circle`,returnType:`double precision`}],description:`radius of circle`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`random`,signatures:[{args:``,returnType:`double precision`},{args:`min bigint, max bigint`,returnType:`bigint`},{args:`min integer, max integer`,returnType:`integer`},{args:`min numeric, max numeric`,returnType:`numeric`}],description:`random value`,category:`math`,volatility:`v`,kind:`f`,permission:`read`},{name:`random_normal`,signatures:[{args:`mean double precision, stddev double precision`,returnType:`double precision`}],description:`random value from normal distribution`,category:`math`,volatility:`v`,kind:`f`,permission:`read`,minVersion:16},{name:`range_agg`,signatures:[{args:`anyrange`,returnType:`anymultirange`},{args:`anymultirange`,returnType:`anymultirange`}],description:`combine aggregate input into a multirange`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`range_intersect_agg`,signatures:[{args:`anyrange`,returnType:`anyrange`},{args:`anymultirange`,returnType:`anymultirange`}],description:`range aggregate by intersecting`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`range_merge`,signatures:[{args:`anymultirange`,returnType:`anyrange`},{args:`anyrange, anyrange`,returnType:`anyrange`}],description:`the smallest range which includes both of the given ranges`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`rank`,signatures:[{args:``,returnType:`bigint`},{args:`VARIADIC "any" ORDER BY VARIADIC "any"`,returnType:`bigint`}],description:`integer rank with gaps`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`regexp_count`,signatures:[{args:`text, text`,returnType:`integer`},{args:`text, text, integer`,returnType:`integer`},{args:`text, text, integer, text`,returnType:`integer`}],description:`count regexp matches`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_instr`,signatures:[{args:`text, text`,returnType:`integer`},{args:`text, text, integer`,returnType:`integer`},{args:`text, text, integer, integer`,returnType:`integer`},{args:`text, text, integer, integer, integer`,returnType:`integer`},{args:`text, text, integer, integer, integer, text`,returnType:`integer`},{args:`text, text, integer, integer, integer, text, integer`,returnType:`integer`}],description:`position of regexp match`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_like`,signatures:[{args:`text, text`,returnType:`boolean`},{args:`text, text, text`,returnType:`boolean`}],description:`test for regexp match`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_match`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`find first match for regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_matches`,signatures:[{args:`text, text`,returnType:`SETOF text[]`},{args:`text, text, text`,returnType:`SETOF text[]`}],description:`find match(es) for regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_replace`,signatures:[{args:`text, text, text`,returnType:`text`},{args:`text, text, text, text`,returnType:`text`},{args:`text, text, text, integer`,returnType:`text`},{args:`text, text, text, integer, integer`,returnType:`text`},{args:`text, text, text, integer, integer, text`,returnType:`text`}],description:`replace text using regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_split_to_array`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`split string by pattern`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_split_to_table`,signatures:[{args:`text, text`,returnType:`SETOF text`},{args:`text, text, text`,returnType:`SETOF text`}],description:`split string by pattern`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regexp_substr`,signatures:[{args:`text, text`,returnType:`text`},{args:`text, text, integer`,returnType:`text`},{args:`text, text, integer, integer`,returnType:`text`},{args:`text, text, integer, integer, text`,returnType:`text`},{args:`text, text, integer, integer, text, integer`,returnType:`text`}],description:`extract substring that matches regexp`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`regr_avgx`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`average of the independent variable (sum(X)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_avgy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`average of the dependent variable (sum(Y)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_count`,signatures:[{args:`double precision, double precision`,returnType:`bigint`}],description:`number of input rows in which both expressions are not null`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_intercept`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_r2`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`square of the correlation coefficient`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_slope`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`slope of the least-squares-fit linear equation determined by the (X, Y) pairs`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_sxx`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_sxy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`regr_syy`,signatures:[{args:`double precision, double precision`,returnType:`double precision`}],description:`sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`repeat`,signatures:[{args:`text, integer`,returnType:`text`}],description:`replicate string n times`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`replace`,signatures:[{args:`text, text, text`,returnType:`text`}],description:`replace all occurrences in string of old_substr with new_substr`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`reverse`,signatures:[{args:`text`,returnType:`text`}],description:`reverse text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`right`,signatures:[{args:`text, integer`,returnType:`text`}],description:`extract the last n characters`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`round`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`},{args:`numeric, integer`,returnType:`numeric`}],description:`round to nearest integer`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`row_number`,signatures:[{args:``,returnType:`bigint`}],description:`row number within partition`,category:`window`,volatility:`i`,kind:`w`,permission:`read`},{name:`row_to_json`,signatures:[{args:`record`,returnType:`json`},{args:`record, boolean`,returnType:`json`}],description:`map row to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`rpad`,signatures:[{args:`text, integer`,returnType:`text`},{args:`text, integer, text`,returnType:`text`}],description:`right-pad string to length`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`rtrim`,signatures:[{args:`text`,returnType:`text`},{args:`text, text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim selected characters from right end of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`scale`,signatures:[{args:`numeric`,returnType:`integer`}],description:`number of decimal digits in the fractional part`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`session_user`,signatures:[{args:``,returnType:`name`}],description:`session user name`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`set_masklen`,signatures:[{args:`cidr, integer`,returnType:`cidr`},{args:`inet, integer`,returnType:`inet`}],description:`change netmask of inet`,category:`network`,volatility:`i`,kind:`f`,permission:`read`},{name:`setseed`,signatures:[{args:`double precision`,returnType:`void`}],description:`set random seed`,category:`math`,volatility:`v`,kind:`f`,permission:`read`},{name:`setweight`,signatures:[{args:`tsvector, "char"`,returnType:`tsvector`},{args:`tsvector, "char", text[]`,returnType:`tsvector`}],description:`set given weight for whole tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha256`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-256 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha384`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-384 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sha512`,signatures:[{args:`bytea`,returnType:`bytea`}],description:`SHA-512 hash`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sign`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sign of value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`slope`,signatures:[{args:`point, point`,returnType:`double precision`}],description:`slope between points`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`split_part`,signatures:[{args:`text, text, integer`,returnType:`text`}],description:`split string by field_sep and return field_num`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sqrt`,signatures:[{args:`numeric`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`square root`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`starts_with`,signatures:[{args:`text, text`,returnType:`boolean`}],description:`implementation of ^@ operator`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`statement_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current statement time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`stddev`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`historical alias for stddev_samp`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`stddev_pop`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`population standard deviation of bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`stddev_samp`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sample standard deviation of bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`string_agg`,signatures:[{args:`value text, delimiter text`,returnType:`text`},{args:`value bytea, delimiter bytea`,returnType:`bytea`}],description:`concatenate aggregate input into a string`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`string_to_array`,signatures:[{args:`text, text`,returnType:`text[]`},{args:`text, text, text`,returnType:`text[]`}],description:`split delimited text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`strip`,signatures:[{args:`tsvector`,returnType:`tsvector`}],description:`strip position information`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`strpos`,signatures:[{args:`text, text`,returnType:`integer`}],description:`position of substring`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`substr`,signatures:[{args:`text, integer`,returnType:`text`},{args:`bytea, integer`,returnType:`bytea`},{args:`text, integer, integer`,returnType:`text`},{args:`bytea, integer, integer`,returnType:`bytea`}],description:`extract portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`substring`,signatures:[{args:`text, text`,returnType:`text`},{args:`bit, integer`,returnType:`bit`},{args:`text, integer`,returnType:`text`},{args:`bytea, integer`,returnType:`bytea`},{args:`text, text, text`,returnType:`text`},{args:`bit, integer, integer`,returnType:`bit`},{args:`text, integer, integer`,returnType:`text`},{args:`bytea, integer, integer`,returnType:`bytea`}],description:`extract portion of string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`sum`,signatures:[{args:`real`,returnType:`real`},{args:`money`,returnType:`money`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`bigint`},{args:`numeric`,returnType:`numeric`},{args:`interval`,returnType:`interval`},{args:`smallint`,returnType:`bigint`},{args:`double precision`,returnType:`double precision`}],description:`sum as numeric across all bigint input values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`timeofday`,signatures:[{args:``,returnType:`text`}],description:`current date and time - increments during transactions`,category:`datetime`,volatility:`v`,kind:`f`,permission:`read`},{name:`timezone`,signatures:[{args:`time with time zone`,returnType:`time with time zone`},{args:`timestamp with time zone`,returnType:`timestamp without time zone`},{args:`text, time with time zone`,returnType:`time with time zone`},{args:`timestamp without time zone`,returnType:`timestamp with time zone`},{args:`interval, time with time zone`,returnType:`time with time zone`},{args:`text, timestamp with time zone`,returnType:`timestamp without time zone`},{args:`text, timestamp without time zone`,returnType:`timestamp with time zone`},{args:`interval, timestamp with time zone`,returnType:`timestamp without time zone`},{args:`interval, timestamp without time zone`,returnType:`timestamp with time zone`}],description:`adjust timestamp to new time zone`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_ascii`,signatures:[{args:`text`,returnType:`text`},{args:`text, name`,returnType:`text`},{args:`text, integer`,returnType:`text`}],description:`encode text from DB encoding to ASCII text`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_char`,signatures:[{args:`real, text`,returnType:`text`},{args:`bigint, text`,returnType:`text`},{args:`integer, text`,returnType:`text`},{args:`numeric, text`,returnType:`text`},{args:`interval, text`,returnType:`text`},{args:`double precision, text`,returnType:`text`},{args:`timestamp with time zone, text`,returnType:`text`},{args:`timestamp without time zone, text`,returnType:`text`}],description:`format timestamp with time zone to text`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_date`,signatures:[{args:`text, text`,returnType:`date`}],description:`convert text to date`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_hex`,signatures:[{args:`bigint`,returnType:`text`},{args:`integer`,returnType:`text`}],description:`convert int4 number to hex`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_json`,signatures:[{args:`anyelement`,returnType:`json`}],description:`map input to json`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_jsonb`,signatures:[{args:`anyelement`,returnType:`jsonb`}],description:`map input to jsonb`,category:`json`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_number`,signatures:[{args:`text, text`,returnType:`numeric`}],description:`convert text to numeric`,category:`typecast`,volatility:`s`,kind:`f`,permission:`read`},{name:`to_timestamp`,signatures:[{args:`text, text`,returnType:`timestamp with time zone`},{args:`double precision`,returnType:`timestamp with time zone`}],description:`convert UNIX epoch to timestamptz`,category:`datetime`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`make tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`to_tsvector`,signatures:[{args:`json`,returnType:`tsvector`},{args:`text`,returnType:`tsvector`},{args:`jsonb`,returnType:`tsvector`},{args:`regconfig, json`,returnType:`tsvector`},{args:`regconfig, text`,returnType:`tsvector`},{args:`regconfig, jsonb`,returnType:`tsvector`}],description:`transform to tsvector`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`transaction_timestamp`,signatures:[{args:``,returnType:`timestamp with time zone`}],description:`current transaction time`,category:`datetime`,volatility:`s`,kind:`f`,permission:`read`},{name:`translate`,signatures:[{args:`text, text, text`,returnType:`text`}],description:`map a set of characters appearing in string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`trim`,signatures:[{args:`text`,returnType:`text`},{args:`bytea, bytea`,returnType:`bytea`}],description:`trim whitespace from string`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`trim_scale`,signatures:[{args:`numeric`,returnType:`numeric`}],description:`numeric with minimum scale needed to represent the value`,category:`math`,volatility:`i`,kind:`f`,permission:`read`,minVersion:13},{name:`trunc`,signatures:[{args:`macaddr`,returnType:`macaddr`},{args:`numeric`,returnType:`numeric`},{args:`macaddr8`,returnType:`macaddr8`},{args:`double precision`,returnType:`double precision`},{args:`numeric, integer`,returnType:`numeric`}],description:`truncate to integer`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_headline`,signatures:[{args:`json, tsquery`,returnType:`json`},{args:`text, tsquery`,returnType:`text`},{args:`jsonb, tsquery`,returnType:`jsonb`},{args:`json, tsquery, text`,returnType:`json`},{args:`text, tsquery, text`,returnType:`text`},{args:`jsonb, tsquery, text`,returnType:`jsonb`},{args:`regconfig, json, tsquery`,returnType:`json`},{args:`regconfig, text, tsquery`,returnType:`text`},{args:`regconfig, jsonb, tsquery`,returnType:`jsonb`},{args:`regconfig, json, tsquery, text`,returnType:`json`},{args:`regconfig, text, tsquery, text`,returnType:`text`},{args:`regconfig, jsonb, tsquery, text`,returnType:`jsonb`}],description:`generate headline`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_rank`,signatures:[{args:`tsvector, tsquery`,returnType:`real`},{args:`real[], tsvector, tsquery`,returnType:`real`},{args:`tsvector, tsquery, integer`,returnType:`real`},{args:`real[], tsvector, tsquery, integer`,returnType:`real`}],description:`relevance`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`ts_rank_cd`,signatures:[{args:`tsvector, tsquery`,returnType:`real`},{args:`real[], tsvector, tsquery`,returnType:`real`},{args:`tsvector, tsquery, integer`,returnType:`real`},{args:`real[], tsvector, tsquery, integer`,returnType:`real`}],description:`relevance`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`tsrange`,signatures:[{args:`timestamp without time zone, timestamp without time zone`,returnType:`tsrange`},{args:`timestamp without time zone, timestamp without time zone, text`,returnType:`tsrange`}],description:`tsrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`tstzrange`,signatures:[{args:`timestamp with time zone, timestamp with time zone`,returnType:`tstzrange`},{args:`timestamp with time zone, timestamp with time zone, text`,returnType:`tstzrange`}],description:`tstzrange constructor`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`tsvector_to_array`,signatures:[{args:`tsvector`,returnType:`text[]`}],description:`convert tsvector to array of lexemes`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`unnest`,signatures:[{args:`anyarray`,returnType:`SETOF anyelement`},{args:`anymultirange`,returnType:`SETOF anyrange`},{args:`tsvector tsvector, OUT lexeme text, OUT positions smallint[], OUT weights text[]`,returnType:`SETOF record`}],description:`expand array to set of rows`,category:`array`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper`,signatures:[{args:`text`,returnType:`text`},{args:`anyrange`,returnType:`anyelement`},{args:`anymultirange`,returnType:`anyelement`}],description:`uppercase`,category:`string`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper_inc`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's upper bound inclusive?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`upper_inf`,signatures:[{args:`anyrange`,returnType:`boolean`},{args:`anymultirange`,returnType:`boolean`}],description:`is the range's upper bound infinite?`,category:`range`,volatility:`i`,kind:`f`,permission:`read`},{name:`var_pop`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`population variance of bigint input values (square of the population standard deviation)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`var_samp`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`sample variance of bigint input values (square of the sample standard deviation)`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`variance`,signatures:[{args:`real`,returnType:`double precision`},{args:`bigint`,returnType:`numeric`},{args:`integer`,returnType:`numeric`},{args:`numeric`,returnType:`numeric`},{args:`smallint`,returnType:`numeric`},{args:`double precision`,returnType:`double precision`}],description:`historical alias for var_samp`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`},{name:`version`,signatures:[{args:``,returnType:`text`}],description:`PostgreSQL version string`,category:`system`,volatility:`s`,kind:`f`,permission:`read`},{name:`websearch_to_tsquery`,signatures:[{args:`text`,returnType:`tsquery`},{args:`regconfig, text`,returnType:`tsquery`}],description:`transform to tsquery`,category:`text_search`,volatility:`i`,kind:`f`,permission:`read`},{name:`width`,signatures:[{args:`box`,returnType:`double precision`}],description:`box width`,category:`geometric`,volatility:`i`,kind:`f`,permission:`read`},{name:`width_bucket`,signatures:[{args:`anycompatible, anycompatiblearray`,returnType:`integer`},{args:`numeric, numeric, numeric, integer`,returnType:`integer`},{args:`double precision, double precision, double precision, integer`,returnType:`integer`}],description:`bucket number of operand in equal-width histogram`,category:`math`,volatility:`i`,kind:`f`,permission:`read`},{name:`xmlagg`,signatures:[{args:`xml`,returnType:`xml`}],description:`concatenate XML values`,category:`aggregate`,volatility:`i`,kind:`a`,permission:`read`}];var PAREN_KEYWORDS=new Set([`ROLLUP`,`CUBE`,`GROUPING SETS`,`CAST`,`EXTRACT`,`SUBSTRING`,`TRIM`,`POSITION`,`OVERLAY`,`COALESCE`,`NULLIF`,`GREATEST`,`LEAST`,`XMLELEMENT`,`XMLFOREST`,`XMLROOT`,`XMLPARSE`,`XMLSERIALIZE`]),NO_SPACE_KEYWORDS=new Set([`END`,`TRUE`,`FALSE`,`NULL`]),NO_SPACE_KEYWORD_SECTIONS=new Set([`CREATE_TABLE_COLUMN_TYPE`]),TABLE_QUALIFIER_SECTIONS=new Set([`SELECT_COLUMNS`,`WHERE_CONDITION`,`JOIN_CONDITION`,`HAVING`,`GROUP_BY`,`ORDER_BY`]);function getInsertText(type,value,section){switch(type){case`function`:return value+`(`;case`keyword`:return PAREN_KEYWORDS.has(value.toUpperCase())?value+`(`:NO_SPACE_KEYWORDS.has(value.toUpperCase())||section&&NO_SPACE_KEYWORD_SECTIONS.has(section)?void 0:value+` `;case`table`:case`view`:case`cte`:return section&&TABLE_QUALIFIER_SECTIONS.has(section)?value+`.`:void 0;case`column`:return;case`alias`:case`schema`:case`operator`:return}}function createCandidate(type,value,source,detail,section){return{type,value,displayText:value,detail,insertText:getInsertText(type,value,section),source}}function generateCandidates(context,scope,schema){let{section,tablePrefix}=context;if(tablePrefix)return generateColumnCandidatesForTable(tablePrefix,scope,schema);switch(section){case`ORDER_BY_INCOMPLETE`:case`GROUP_BY_INCOMPLETE`:return[createCandidate(`keyword`,`BY`,`keyword`)];case`IS_INCOMPLETE`:return[createCandidate(`keyword`,`NULL`,`keyword`),createCandidate(`keyword`,`NOT NULL`,`keyword`),createCandidate(`keyword`,`TRUE`,`keyword`),createCandidate(`keyword`,`NOT TRUE`,`keyword`),createCandidate(`keyword`,`FALSE`,`keyword`),createCandidate(`keyword`,`NOT FALSE`,`keyword`),createCandidate(`keyword`,`UNKNOWN`,`keyword`),createCandidate(`keyword`,`NOT UNKNOWN`,`keyword`),createCandidate(`keyword`,`DISTINCT FROM`,`keyword`),createCandidate(`keyword`,`NOT DISTINCT FROM`,`keyword`)];case`IS_NOT_INCOMPLETE`:return[createCandidate(`keyword`,`NULL`,`keyword`),createCandidate(`keyword`,`TRUE`,`keyword`),createCandidate(`keyword`,`FALSE`,`keyword`),createCandidate(`keyword`,`UNKNOWN`,`keyword`),createCandidate(`keyword`,`DISTINCT FROM`,`keyword`)];case`NULLS_INCOMPLETE`:return[createCandidate(`keyword`,`FIRST`,`keyword`),createCandidate(`keyword`,`LAST`,`keyword`)];case`INSERT_VALUES`:return[createCandidate(`keyword`,`VALUES`,`keyword`),createCandidate(`keyword`,`SELECT`,`keyword`),createCandidate(`keyword`,`OVERRIDING USER VALUE`,`keyword`),createCandidate(`keyword`,`OVERRIDING SYSTEM VALUE`,`keyword`)]}if(context.isAfterNot)return generateNotFollowKeywords();switch(section){case`STATEMENT_START`:return generateStatementStartCandidates();case`SELECT_COLUMNS`:return generateSelectColumnCandidates(context,scope,schema);case`FROM_TABLE`:return generateFromTableCandidates(scope,schema,context);case`JOIN_TABLE`:case`INSERT_TABLE`:return generateTableCandidates(scope,schema);case`DELETE_TABLE`:return generateDeleteTableCandidates(context,scope,schema);case`UPDATE_TABLE`:return generateUpdateTableCandidates(context,scope,schema);case`CALL_PROCEDURE`:return generateProcedureCandidates(schema);case`WHERE_CONDITION`:case`JOIN_CONDITION`:case`HAVING`:return generateExpressionCandidates(context,scope,schema);case`GROUP_BY`:return generateGroupByCandidates(context,scope,schema);case`ORDER_BY`:return generateOrderByCandidates(context,scope,schema);case`UPDATE_SET`:return generateUpdateSetCandidates(context,scope,schema);case`RETURNING`:return generateReturningCandidates(scope,schema);case`CREATE_OBJECT`:return generateCreateObjectCandidates();case`CREATE_TABLE_NAME`:return[];case`CREATE_TABLE_COLUMNS`:return generateCreateTableColumnsCandidates();case`CREATE_TABLE_COLUMN_TYPE`:return generateColumnTypeCandidates(section);case`CREATE_TABLE_COLUMN_CONSTRAINT`:return generateColumnConstraintCandidates();case`CREATE_TABLE_OPTIONS`:return generateCreateTableOptionsCandidates();case`WITH_CTE_NAME`:return[];case`LIMIT`:case`OFFSET`:return[];case`UNKNOWN`:return[];default:return generateDefaultCandidates(scope,schema)}}function generateStatementStartCandidates(){return getStatementKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateSelectColumnCandidates(context,scope,schema){let candidates=[];return context.isAfterCompletedIdentifier?generateSelectClauseTransitionCandidates():(candidates.push(...generateColumnCandidates(scope,schema)),schema.selectedTable&&candidates.push(...generateSelectedTableColumnCandidates(schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateSelectKeywordCandidates()),candidates.push(...generateSelectClauseTransitionCandidates()),candidates.push(...generateTableCandidates(scope,schema,`SELECT_COLUMNS`)),candidates)}function generateSelectedTableColumnCandidates(schema){if(!schema.selectedTable)return[];let selectedTable=schema.tables.find(t$1=>t$1.schema===schema.selectedTable.schema&&t$1.name===schema.selectedTable.name);return selectedTable?selectedTable.columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:`${schema.selectedTable.name}.${col.type}`,source:`schema`})):[]}function generateColumnCandidates(scope,_schema,section){let candidates=[],seenColumns=new Set;for(let col of scope.availableColumns){let key$1=`${col.table||``}.${col.name}`.toLowerCase();seenColumns.has(key$1)||(seenColumns.add(key$1),candidates.push({type:`column`,value:col.name,displayText:col.name,detail:col.table?`${col.table}.${col.type||`unknown`}`:col.type||void 0,insertText:getInsertText(`column`,col.name,section),source:`context`}))}return candidates}function generateColumnCandidatesForTable(tablePrefix,scope,schema){let columns=getColumnsForTable(scope,tablePrefix);if(columns.length>0)return columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:col.type?`${col.type}${col.nullable===!1?` NOT NULL`:``}`:void 0,source:`context`}));let schemaTable=findTableInSchema(tablePrefix,schema);return schemaTable?schemaTable.columns.map(col=>({type:`column`,value:col.name,displayText:col.name,detail:`${col.type}${col.nullable?``:` NOT NULL`}`,source:`schema`})):[]}function generateFromTableCandidates(scope,schema,_context){let candidates=[];return candidates.push(...generateTableCandidates(scope,schema)),candidates.push(...generateFromClauseTransitionCandidates()),candidates}function generateFromClauseTransitionCandidates(){return[`WHERE`,`JOIN`,`LEFT JOIN`,`RIGHT JOIN`,`INNER JOIN`,`FULL JOIN`,`CROSS JOIN`,`ON`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateTableCandidates(scope,schema,section){let candidates=[],seenTables=new Set;for(let cte of scope.ctes){let key$1=cte.name.toLowerCase();seenTables.has(key$1)||(seenTables.add(key$1),candidates.push({type:`cte`,value:cte.name,displayText:cte.name,detail:`CTE`,insertText:getInsertText(`cte`,cte.name,section),source:`context`}))}for(let table$1 of schema.tables){let isDefault=table$1.schema===schema.defaultSchema,qualifiedName=`${table$1.schema}.${table$1.name}`,displayName=isDefault?table$1.name:qualifiedName,key$1=qualifiedName.toLowerCase();if(seenTables.has(key$1))continue;seenTables.add(key$1);let type=table$1.type===`view`?`view`:`table`;candidates.push({type,value:displayName,displayText:displayName,detail:isDefault?void 0:table$1.schema,insertText:getInsertText(type,displayName,section),source:`schema`})}return candidates}function generateExpressionCandidates(context,scope,schema){let candidates=[];return context.isTypingOperator&&context.partialOperator?generateOperatorCompletions(context.partialOperator):context.isAfterNot?generateNotFollowKeywords():context.isAfterCompletedExpression?(candidates.push(...generateLogicalConnectorCandidates()),candidates.push(...generateWhereClauseTransitionCandidates()),(context.statementType===`UPDATE`||context.statementType===`DELETE`)&&candidates.push(createCandidate(`keyword`,`RETURNING`,`keyword`)),candidates):context.isAfterCompletedIdentifier?(candidates.push(...generateComparisonOperatorCandidates()),candidates.push(...generateExpressionKeywordCandidates()),candidates.push(...generateWhereClauseTransitionCandidates()),(context.statementType===`UPDATE`||context.statementType===`DELETE`)&&candidates.push(createCandidate(`keyword`,`RETURNING`,`keyword`)),candidates):(candidates.push(...generateColumnCandidates(scope,schema,context.section)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateExpressionKeywordCandidates()),candidates.push(...generateTableCandidates(scope,schema,context.section)),candidates)}function generateNotFollowKeywords(){return[`IN`,`LIKE`,`ILIKE`,`BETWEEN`,`SIMILAR TO`,`EXISTS`,`NULL`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateComparisonOperatorCandidates(){return[`=`,`<>`,`!=`,`<`,`>`,`<=`,`>=`].map(op=>({type:`operator`,value:op,displayText:op,insertText:op+` `,source:`keyword`}))}function generateOperatorCompletions(partial){return({"<":[`<=`,`<>`,`<`],">":[`>=`,`>`],"!":[`!=`]}[partial]||[partial]).map(op=>({type:`operator`,value:op,displayText:op,insertText:op.slice(partial.length)+` `,source:`keyword`}))}function generateWhereClauseTransitionCandidates(){return[`ORDER BY`,`GROUP BY`,`HAVING`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateLogicalConnectorCandidates(){return[`AND`,`OR`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateUpdateTableCandidates(context,scope,schema){return context.isAfterCompletedIdentifier||context.isAfterCompletedExpression?[createCandidate(`keyword`,`SET`,`keyword`)]:generateTableCandidates(scope,schema)}function generateDeleteTableCandidates(context,scope,schema){return context.isAfterCompletedIdentifier||context.isAfterCompletedExpression?[`USING`,`WHERE`,`RETURNING`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):generateTableCandidates(scope,schema)}function generateUpdateSetCandidates(context,scope,schema){return context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?[`WHERE`,`FROM`,`RETURNING`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):[...generateColumnCandidates(scope,schema),...generateFunctionCandidates(schema),...generateSystemFunctionCandidates(schema.pgVersion)]}function generateReturningCandidates(scope,schema){return[...generateColumnCandidates(scope,schema),...generateFunctionCandidates(schema),...generateSystemFunctionCandidates(schema.pgVersion),...generateTableCandidates(scope,schema)]}function generateOrderByCandidates(context,scope,schema){let candidates=[];return context.isAfterOrderByModifier?(candidates.push(createCandidate(`keyword`,`NULLS FIRST`,`keyword`)),candidates.push(createCandidate(`keyword`,`NULLS LAST`,`keyword`)),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates):context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?(candidates.push(...generateOrderByModifierCandidates()),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates):(candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateOrderByModifierCandidates()),candidates.push(...[`LIMIT`,`OFFSET`,`FOR UPDATE`,`FOR SHARE`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates)}function generateGroupByCandidates(context,scope,schema){let candidates=[];return context.isAfterCompletedExpression||context.isAfterCompletedIdentifier?[`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`WINDOW`,`UNION`,`INTERSECT`,`EXCEPT`].map(kw=>createCandidate(`keyword`,kw,`keyword`)):(candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...generateGroupByKeywordCandidates()),candidates.push(...[`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`WINDOW`].map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates)}function generateSelectKeywordCandidates(){return[`DISTINCT`,`ALL`,`AS`,`CASE`,`WHEN`,`THEN`,`ELSE`,`END`,`CAST`,`NULL`,`TRUE`,`FALSE`,`AND`,`OR`,`NOT`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateSelectClauseTransitionCandidates(){return[`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`,`WINDOW`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateExpressionKeywordCandidates(){return getExpressionKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateOrderByModifierCandidates(){return getOrderByModifiers().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateGroupByKeywordCandidates(){return getGroupByKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateFunctionCandidates(schema){return schema.functions.filter(fn=>fn.kind===void 0||fn.kind===`function`).map(fn=>{let detail=fn.signature?`(${fn.signature})`:`()`;return createCandidate(`function`,fn.name,`schema`,detail)})}function generateProcedureCandidates(schema){return schema.functions.filter(fn=>fn.kind===`procedure`).map(fn=>{let detail=fn.signature?`(${fn.signature})`:`()`;return createCandidate(`procedure`,fn.name,`schema`,detail)})}function generateSystemFunctionCandidates(pgVersion=14){return PG_SYSTEM_FUNCTIONS.filter(fn=>!(fn.minVersion&&pgVersion<fn.minVersion)).map(fn=>{let sig=fn.signatures[0],detail=sig?`(${sig.args||``}) → ${sig.returnType}`:`()`;return createCandidate(`function`,fn.name,`system`,detail)})}function generateCreateObjectCandidates(){return`TABLE.TEMP TABLE.UNLOGGED TABLE.TABLE IF NOT EXISTS.INDEX.UNIQUE INDEX.INDEX CONCURRENTLY.VIEW.OR REPLACE VIEW.MATERIALIZED VIEW.FUNCTION.OR REPLACE FUNCTION.PROCEDURE.OR REPLACE PROCEDURE.TRIGGER.SCHEMA.DATABASE.SEQUENCE.TYPE.DOMAIN.EXTENSION.EXTENSION IF NOT EXISTS.ROLE.USER.POLICY.PUBLICATION.SUBSCRIPTION`.split(`.`).map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateCreateTableColumnsCandidates(){return[`CONSTRAINT`,`PRIMARY KEY`,`UNIQUE`,`FOREIGN KEY`,`CHECK`,`EXCLUDE`,`LIKE`].map(kw=>createCandidate(`keyword`,kw,`keyword`))}function generateColumnTypeCandidates(section){return`INTEGER.INT.BIGINT.SMALLINT.SERIAL.BIGSERIAL.VARCHAR.TEXT.CHAR.BOOLEAN.BOOL.TIMESTAMP.TIMESTAMPTZ.DATE.TIME.INTERVAL.NUMERIC.DECIMAL.REAL.DOUBLE PRECISION.UUID.JSON.JSONB.BYTEA.MONEY.XML.INET.CIDR.MACADDR.POINT.LINE.BOX.CIRCLE.POLYGON.INT4RANGE.INT8RANGE.NUMRANGE.TSRANGE.TSTZRANGE.DATERANGE.TSVECTOR.TSQUERY`.split(`.`).map(name$2=>createCandidate(`keyword`,name$2,`keyword`,void 0,section))}function generateColumnConstraintCandidates(){return[`NOT NULL`,`NULL`,`DEFAULT`,`PRIMARY KEY`,`UNIQUE`,`REFERENCES`,`CHECK`,`CONSTRAINT`,`COLLATE`,`GENERATED ALWAYS AS`,`GENERATED BY DEFAULT AS IDENTITY`,`GENERATED ALWAYS AS IDENTITY`,`DEFERRABLE`,`NOT DEFERRABLE`,`INITIALLY DEFERRED`,`INITIALLY IMMEDIATE`].map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateCreateTableOptionsCandidates(){return[`INHERITS`,`PARTITION BY`,`PARTITION BY RANGE`,`PARTITION BY LIST`,`PARTITION BY HASH`,`USING`,`WITH`,`WITHOUT OIDS`,`TABLESPACE`,`ON COMMIT DELETE ROWS`,`ON COMMIT PRESERVE ROWS`,`ON COMMIT DROP`].map(name$2=>createCandidate(`keyword`,name$2,`keyword`))}function generateDefaultCandidates(scope,schema){let candidates=[];return candidates.push(...generateColumnCandidates(scope,schema)),candidates.push(...generateFunctionCandidates(schema)),candidates.push(...generateSystemFunctionCandidates(schema.pgVersion)),candidates.push(...getAllKeywords().map(kw=>createCandidate(`keyword`,kw,`keyword`))),candidates.push(...generateTableCandidates(scope,schema)),candidates}var MATCH_TIER={exact:4e4,prefix:3e4,contains:2e4,fuzzy:1e4,none:0},DEFAULT_TYPE_PRIORITY=[`column`,`cte`,`table`,`view`,`function`,`keyword`,`alias`,`schema`,`operator`],STATEMENT_KEYWORD_PRIORITY={SELECT:100,WITH:90,INSERT:80,UPDATE:70,DELETE:60,CREATE:50,ALTER:40,DROP:30,TRUNCATE:20},CREATE_OBJECT_PRIORITY={TABLE:100,"TABLE IF NOT EXISTS":95,"TEMP TABLE":90,"UNLOGGED TABLE":85,INDEX:80,"UNIQUE INDEX":78,"INDEX CONCURRENTLY":76,VIEW:70,"OR REPLACE VIEW":68,"MATERIALIZED VIEW":66,FUNCTION:60,"OR REPLACE FUNCTION":58,PROCEDURE:55,"OR REPLACE PROCEDURE":53,TRIGGER:50,SCHEMA:45,DATABASE:43,SEQUENCE:40,TYPE:35,DOMAIN:33,EXTENSION:30,"EXTENSION IF NOT EXISTS":28,ROLE:25,USER:23,POLICY:20,PUBLICATION:15,SUBSCRIPTION:10},CONTEXT_WEIGHTS={typeBonus:50,selectedTableBonus:200,defaultSchemaBonus:100},SOURCE_PRIORITY={context:100,schema:80,system:60,function:40,keyword:20},COMMON_FUNCTION_BOOST={coalesce:200,nullif:150,greatest:120,least:120,count:200,sum:200,avg:180,min:180,max:180,array_agg:150,string_agg:150,json_agg:140,jsonb_agg:140,concat:180,lower:170,upper:170,trim:160,length:160,substring:150,replace:150,split_part:140,left:130,right:130,regexp_replace:120,now:200,current_timestamp:180,current_date:170,date_trunc:160,extract:160,age:140,to_char:150,to_date:140,to_timestamp:140,row_number:170,rank:160,dense_rank:150,lag:150,lead:150,first_value:130,last_value:130,jsonb_build_object:160,json_build_object:150,to_jsonb:140,to_json:130,jsonb_extract_path_text:130,cast:180,generate_series:160,pg_sleep:120,exists:150},SECTION_BONUSES={SELECT_COLUMNS:{column:300,function:250},FROM_TABLE:{cte:350,table:300,view:300},JOIN_TABLE:{cte:350,table:300,view:300},INSERT_TABLE:{cte:350,table:300,view:300},UPDATE_TABLE:{cte:350,table:300,view:300},DELETE_TABLE:{cte:350,table:300,view:300},WHERE_CONDITION:{column:300,function:200,keyword:100},JOIN_CONDITION:{column:300,function:200,keyword:100},HAVING:{column:300,function:250,keyword:100},GROUP_BY:{column:300,function:150},ORDER_BY:{column:300,function:150},UPDATE_SET:{column:300}},CONTEXT_BOOSTED_KEYWORDS={ORDER_BY:new Set([`ASC`,`DESC`,`NULLS FIRST`,`NULLS LAST`,`LIMIT`]),GROUP_BY:new Set([`ROLLUP`,`CUBE`,`GROUPING SETS`,`HAVING`]),SELECT_COLUMNS:new Set([`DISTINCT`,`ALL`,`AS`,`CASE`]),WHERE_CONDITION:new Set([`AND`,`OR`,`NOT`,`IN`,`EXISTS`,`BETWEEN`,`LIKE`,`IS NULL`,`IS NOT NULL`]),JOIN_CONDITION:new Set([`AND`,`OR`])},CLAUSE_TRANSITION_KEYWORDS=new Set([`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`ORDER BY`,`LIMIT`,`OFFSET`,`UNION`,`INTERSECT`,`EXCEPT`,`WINDOW`,`FOR UPDATE`,`FOR SHARE`]);function rankCandidates(candidates,context,partialMatch,schema,config$1){let effectiveConfig={recencyBoost:config$1?.recencyBoost??!1,typePreference:config$1?.typePreference??DEFAULT_TYPE_PRIORITY,boostSelectedTable:config$1?.boostSelectedTable??!0},rankedCandidates=candidates.map(candidate=>{let matchType=computeMatchType(candidate.value,partialMatch),score$1=computeScore(candidate,matchType,partialMatch,context,schema,effectiveConfig);return{...candidate,score:score$1,matchType}});return(partialMatch?rankedCandidates.filter(c=>c.matchType!==`none`):rankedCandidates).sort((a$1,b$2)=>b$2.score===a$1.score?a$1.value.localeCompare(b$2.value):b$2.score-a$1.score)}function computeMatchType(value,partial){if(!partial)return`none`;let valueLower=value.toLowerCase(),partialLower=partial.toLowerCase();return valueLower===partialLower?`exact`:valueLower.startsWith(partialLower)?`prefix`:valueLower.includes(partialLower)?`contains`:fuzzyMatch(valueLower,partialLower)?`fuzzy`:`none`}function fuzzyMatch(value,pattern){let patternIdx=0;for(let i$3=0;i$3<value.length&&patternIdx<pattern.length;i$3++)value[i$3]===pattern[patternIdx]&&patternIdx++;return patternIdx===pattern.length}function isMatch(value,partial){return computeMatchType(value,partial)!==`none`}function computeScore(candidate,matchType,_partialMatch,context,schema,config$1){return MATCH_TIER[matchType]+computeContextScore(candidate,context,schema,config$1)}function computeContextScore(candidate,context,schema,config$1){let score$1=0,typeIndex=config$1.typePreference.indexOf(candidate.type);if(typeIndex!==-1&&(score$1+=(config$1.typePreference.length-typeIndex)*CONTEXT_WEIGHTS.typeBonus),config$1.boostSelectedTable&&candidate.type===`column`&&schema.selectedTable){let detail=candidate.detail||``,selectedTableName=schema.selectedTable.name.toLowerCase();detail.toLowerCase().startsWith(selectedTableName+`.`)&&(score$1+=CONTEXT_WEIGHTS.selectedTableBonus)}(candidate.type===`table`||candidate.type===`view`)&&schema.defaultSchema&&(candidate.value.includes(`.`)||(score$1+=CONTEXT_WEIGHTS.defaultSchemaBonus));let sourcePriority=SOURCE_PRIORITY[candidate.source]||0;if(score$1+=sourcePriority,candidate.source===`system`&&candidate.type===`function`){let commonBoost=COMMON_FUNCTION_BOOST[candidate.value.toLowerCase()]||0;score$1+=commonBoost}return score$1+=getSectionBonus(candidate,context),score$1}function getSectionBonus(candidate,context){let{section,isAfterCompletedIdentifier}=context;if(section===`STATEMENT_START`)return candidate.type===`keyword`?300+(STATEMENT_KEYWORD_PRIORITY[candidate.value.toUpperCase()]||0):0;if(section===`CREATE_OBJECT`)return candidate.type===`keyword`?300+(CREATE_OBJECT_PRIORITY[candidate.value.toUpperCase()]||0):0;if(candidate.type===`operator`&&isAfterCompletedIdentifier&&(section===`WHERE_CONDITION`||section===`JOIN_CONDITION`||section===`HAVING`))return 600;if(candidate.type===`keyword`)return getKeywordBonus(candidate.value,context);let sectionBonuses=SECTION_BONUSES[section];if(sectionBonuses){let bonus=sectionBonuses[candidate.type]??0;return isAfterCompletedIdentifier&&(candidate.type===`column`||candidate.type===`table`||candidate.type===`view`||candidate.type===`cte`)&&(bonus=Math.min(bonus,100)),bonus}return 0}var EXPRESSION_OPERATOR_KEYWORDS=new Set([`IN`,`NOT IN`,`EXISTS`,`NOT EXISTS`,`BETWEEN`,`NOT BETWEEN`,`BETWEEN SYMMETRIC`,`LIKE`,`NOT LIKE`,`ILIKE`,`NOT ILIKE`,`SIMILAR TO`,`NOT SIMILAR TO`,`IS NULL`,`IS NOT NULL`,`IS TRUE`,`IS NOT TRUE`,`IS FALSE`,`IS NOT FALSE`,`IS UNKNOWN`,`IS NOT UNKNOWN`,`IS DISTINCT FROM`,`IS NOT DISTINCT FROM`]),LOGICAL_CONNECTOR_KEYWORDS=new Set([`AND`,`OR`]);function getKeywordBonus(keyword$1,context){let keywordUpper=keyword$1.toUpperCase(),{section,isAfterCompletedIdentifier,isAfterCompletedExpression}=context;if(section===`WHERE_CONDITION`||section===`JOIN_CONDITION`||section===`HAVING`){if(isAfterCompletedExpression)return LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper)?500:CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper)?400:100;if(isAfterCompletedIdentifier){if(EXPRESSION_OPERATOR_KEYWORDS.has(keywordUpper))return 450;if(LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper))return 350;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper))return 250}if(EXPRESSION_OPERATOR_KEYWORDS.has(keywordUpper))return 400;if(LOGICAL_CONNECTOR_KEYWORDS.has(keywordUpper))return 300;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper))return 100}if(CONTEXT_BOOSTED_KEYWORDS[section]?.has(keywordUpper))return 200;if(CLAUSE_TRANSITION_KEYWORDS.has(keywordUpper)){if(isAfterCompletedIdentifier)switch(section){case`SELECT_COLUMNS`:return keywordUpper===`FROM`?400:keywordUpper===`WHERE`?350:300;case`FROM_TABLE`:return keywordUpper===`WHERE`?400:keywordUpper===`ORDER BY`||keywordUpper===`GROUP BY`?350:300;default:return 300}switch(section){case`SELECT_COLUMNS`:return 50;case`ORDER_BY`:return keywordUpper===`LIMIT`||keywordUpper===`OFFSET`?150:30;case`GROUP_BY`:return keywordUpper===`HAVING`?180:30;case`WHERE_CONDITION`:case`HAVING`:return[`ORDER BY`,`GROUP BY`,`LIMIT`].includes(keywordUpper)?100:30;default:return 50}}return 80}function deduplicateCandidates(candidates){let seen$1=new Map;for(let candidate of candidates){let key$1=candidate.value.toLowerCase(),existing=seen$1.get(key$1);(!existing||candidate.score>existing.score)&&seen$1.set(key$1,candidate)}return Array.from(seen$1.values())}var DEFAULT_OPTIONS={rankingConfig:{},measureTiming:!1};function runAutocompletePipeline(input,options$1){let opts={...DEFAULT_OPTIONS,...options$1},timing=opts.measureTiming?{tokenize:0,parse:0,detectSection:0,analyzeScope:0,generateCandidates:0,rank:0,total:0}:void 0,totalStart=opts.measureTiming?performance.now():0,tokenizeStart=opts.measureTiming?performance.now():0,tokenized=tokenize$2(input.sql,input.cursorPosition,{parser:opts.parser});if(timing&&(timing.tokenize=performance.now()-tokenizeStart),isInsideStringOrComment(tokenized,input.cursorPosition,input.sql))return{suggestions:[],context:{section:`UNKNOWN`,statementType:`UNKNOWN`,isAtKeywordBoundary:!1,isAfterComma:!1,isAfterOperator:!1,isAfterCompletedIdentifier:!1,isAfterCompletedExpression:!1,isTypingOperator:!1,partialOperator:null,isAfterNot:!1,isAfterOrderByModifier:!1,partialToken:null,tablePrefix:null,depth:0,parentContext:null,containingNode:null},timing};let parseStart=opts.measureTiming?performance.now():0,tree=parseFromTokens(tokenized,input.sql);timing&&(timing.parse=performance.now()-parseStart);let detectStart=opts.measureTiming?performance.now():0,context=detectSection(tokenized,tree,input.cursorPosition,input.sql);timing&&(timing.detectSection=performance.now()-detectStart);let scopeStart=opts.measureTiming?performance.now():0,scope=analyzeScope(context,tokenized,tree,input.sql,input.schema,{parser:opts.parser});timing&&(timing.analyzeScope=performance.now()-scopeStart);let generateStart=opts.measureTiming?performance.now():0,candidates=generateCandidates(context,scope,input.schema),partial=getPartialToken(tokenized)||context.partialToken;partial&&(candidates=candidates.filter(c=>isMatch(c.value,partial))),timing&&(timing.generateCandidates=performance.now()-generateStart);let rankStart=opts.measureTiming?performance.now():0,ranked=rankCandidates(candidates,context,partial,input.schema,opts.rankingConfig);return ranked=deduplicateCandidates(ranked),timing&&(timing.rank=performance.now()-rankStart),timing&&(timing.total=performance.now()-totalStart),{suggestions:ranked,context,timing}}function autocomplete(sql,cursorPosition,schema){return runAutocompletePipeline({sql,cursorPosition,schema})}var DDL_KINDS=new Set([`create_table`,`alter_table`,`drop`,`create_view`,`create_index`,`create_function`,`truncate`]);function isDDLStatement(kind){return DDL_KINDS.has(kind)}var decorationCache=new Map;function getDecoration(className){let decoration=decorationCache.get(className);return decoration||(decoration=Decoration.mark({class:className}),decorationCache.set(className,decoration)),decoration}function buildDecorations(view){if(!isModuleLoaded())return Decoration.none;let tokens=tokenize(view.state.doc.toString());if(tokens.length===0)return Decoration.none;let builder=new RangeSetBuilder;for(let token$1 of tokens)token$1.from<token$1.to&&builder.add(token$1.from,token$1.to,getDecoration(token$1.class));return builder.finish()}var pgHighlightPlugin=ViewPlugin.fromClass(class{constructor(view){this.needsRebuild=!1,this.decorations=buildDecorations(view),isModuleLoaded()||ensureModuleLoaded().then(()=>{this.needsRebuild=!0,view.dispatch({})})}update(update$1){(update$1.docChanged||this.needsRebuild)&&(this.decorations=buildDecorations(update$1.view),this.needsRebuild=!1)}},{decorations:v$1=>v$1.decorations});function pgHighlight(){return pgHighlightPlugin}var DefaultBufferLength=1024,nextPropID=0,Range=class{constructor(from,to){this.from=from,this.to=to}},NodeProp=class{constructor(config$1={}){this.id=nextPropID++,this.perNode=!!config$1.perNode,this.deserialize=config$1.deserialize||(()=>{throw Error(`This node type doesn't define a deserialize function`)}),this.combine=config$1.combine||null}add(match){if(this.perNode)throw RangeError(`Can't add per-node props to node types`);return typeof match!=`function`&&(match=NodeType.match(match)),type=>{let result=match(type);return result===void 0?null:[this,result]}}};NodeProp.closedBy=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.openedBy=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.group=new NodeProp({deserialize:str=>str.split(` `)}),NodeProp.isolate=new NodeProp({deserialize:value=>{if(value&&value!=`rtl`&&value!=`ltr`&&value!=`auto`)throw RangeError(`Invalid value for isolate: `+value);return value||`auto`}}),NodeProp.contextHash=new NodeProp({perNode:!0}),NodeProp.lookAhead=new NodeProp({perNode:!0}),NodeProp.mounted=new NodeProp({perNode:!0});var MountedTree=class{constructor(tree,overlay,parser$1,bracketed=!1){this.tree=tree,this.overlay=overlay,this.parser=parser$1,this.bracketed=bracketed}static get(tree){return tree&&tree.props&&tree.props[NodeProp.mounted.id]}},noProps=Object.create(null),NodeType=class NodeType{constructor(name$2,props,id,flags=0){this.name=name$2,this.props=props,this.id=id,this.flags=flags}static define(spec){let props=spec.props&&spec.props.length?Object.create(null):noProps,flags=(spec.top?1:0)|(spec.skipped?2:0)|(spec.error?4:0)|(spec.name==null?8:0),type=new NodeType(spec.name||``,props,spec.id,flags);if(spec.props){for(let src of spec.props)if(Array.isArray(src)||(src=src(type)),src){if(src[0].perNode)throw RangeError(`Can't store a per-node prop on a node type`);props[src[0].id]=src[1]}}return type}prop(prop){return this.props[prop.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(name$2){if(typeof name$2==`string`){if(this.name==name$2)return!0;let group=this.prop(NodeProp.group);return group?group.indexOf(name$2)>-1:!1}return this.id==name$2}static match(map){let direct=Object.create(null);for(let prop in map)for(let name$2 of prop.split(` `))direct[name$2]=map[prop];return node$1=>{for(let groups=node$1.prop(NodeProp.group),i$3=-1;i$3<(groups?groups.length:0);i$3++){let found=direct[i$3<0?node$1.name:groups[i$3]];if(found)return found}}}};NodeType.none=new NodeType(``,Object.create(null),0,8);var NodeSet=class NodeSet{constructor(types$1){this.types=types$1;for(let i$3=0;i$3<types$1.length;i$3++)if(types$1[i$3].id!=i$3)throw RangeError(`Node type ids should correspond to array positions when creating a node set`)}extend(...props){let newTypes=[];for(let type of this.types){let newProps=null;for(let source of props){let add$1=source(type);if(add$1){newProps||=Object.assign({},type.props);let value=add$1[1],prop=add$1[0];prop.combine&&prop.id in newProps&&(value=prop.combine(newProps[prop.id],value)),newProps[prop.id]=value}}newTypes.push(newProps?new NodeType(type.name,newProps,type.id,type.flags):type)}return new NodeSet(newTypes)}},CachedNode=new WeakMap,CachedInnerNode=new WeakMap,IterMode;(function(IterMode$1){IterMode$1[IterMode$1.ExcludeBuffers=1]=`ExcludeBuffers`,IterMode$1[IterMode$1.IncludeAnonymous=2]=`IncludeAnonymous`,IterMode$1[IterMode$1.IgnoreMounts=4]=`IgnoreMounts`,IterMode$1[IterMode$1.IgnoreOverlays=8]=`IgnoreOverlays`,IterMode$1[IterMode$1.EnterBracketed=16]=`EnterBracketed`})(IterMode||={});var Tree=class Tree{constructor(type,children,positions,length,props){if(this.type=type,this.children=children,this.positions=positions,this.length=length,this.props=null,props&&props.length){this.props=Object.create(null);for(let[prop,value]of props)this.props[typeof prop==`number`?prop:prop.id]=value}}toString(){let mounted=MountedTree.get(this);if(mounted&&!mounted.overlay)return mounted.tree.toString();let children=``;for(let ch of this.children){let str=ch.toString();str&&(children&&(children+=`,`),children+=str)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(children.length?`(`+children+`)`:``):children}cursor(mode=0){return new TreeCursor(this.topNode,mode)}cursorAt(pos,side=0,mode=0){let cursor=new TreeCursor(CachedNode.get(this)||this.topNode);return cursor.moveTo(pos,side),CachedNode.set(this,cursor._tree),cursor}get topNode(){return new TreeNode(this,0,0,null)}resolve(pos,side=0){let node$1=resolveNode(CachedNode.get(this)||this.topNode,pos,side,!1);return CachedNode.set(this,node$1),node$1}resolveInner(pos,side=0){let node$1=resolveNode(CachedInnerNode.get(this)||this.topNode,pos,side,!0);return CachedInnerNode.set(this,node$1),node$1}resolveStack(pos,side=0){return stackIterator(this,pos,side)}iterate(spec){let{enter,leave,from=0,to=this.length}=spec,mode=spec.mode||0,anon=(mode&IterMode.IncludeAnonymous)>0;for(let c=this.cursor(mode|IterMode.IncludeAnonymous);;){let entered=!1;if(c.from<=to&&c.to>=from&&(!anon&&c.type.isAnonymous||enter(c)!==!1)){if(c.firstChild())continue;entered=!0}for(;entered&&leave&&(anon||!c.type.isAnonymous)&&leave(c),!c.nextSibling();){if(!c.parent())return;entered=!0}}}prop(prop){return prop.perNode?this.props?this.props[prop.id]:void 0:this.type.prop(prop)}get propValues(){let result=[];if(this.props)for(let id in this.props)result.push([+id,this.props[id]]);return result}balance(config$1={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(children,positions,length)=>new Tree(this.type,children,positions,length,this.propValues),config$1.makeTree||((children,positions,length)=>new Tree(NodeType.none,children,positions,length)))}static build(data){return buildTree(data)}};Tree.empty=new Tree(NodeType.none,[],[],0);var FlatBufferCursor=class FlatBufferCursor{constructor(buffer,index$4){this.buffer=buffer,this.index=index$4}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}},TreeBuffer=class TreeBuffer{constructor(buffer,length,set){this.buffer=buffer,this.length=length,this.set=set}get type(){return NodeType.none}toString(){let result=[];for(let index$4=0;index$4<this.buffer.length;)result.push(this.childString(index$4)),index$4=this.buffer[index$4+3];return result.join(`,`)}childString(index$4){let id=this.buffer[index$4],endIndex=this.buffer[index$4+3],type=this.set.types[id],result=type.name;if(/\W/.test(result)&&!type.isError&&(result=JSON.stringify(result)),index$4+=4,endIndex==index$4)return result;let children=[];for(;index$4<endIndex;)children.push(this.childString(index$4)),index$4=this.buffer[index$4+3];return result+`(`+children.join(`,`)+`)`}findChild(startIndex,endIndex,dir,pos,side){let{buffer}=this,pick=-1;for(let i$3=startIndex;i$3!=endIndex&&!(checkSide(side,pos,buffer[i$3+1],buffer[i$3+2])&&(pick=i$3,dir>0));i$3=buffer[i$3+3]);return pick}slice(startI,endI,from){let b$2=this.buffer,copy=new Uint16Array(endI-startI),len=0;for(let i$3=startI,j$1=0;i$3<endI;){copy[j$1++]=b$2[i$3++],copy[j$1++]=b$2[i$3++]-from;let to=copy[j$1++]=b$2[i$3++]-from;copy[j$1++]=b$2[i$3++]-startI,len=Math.max(len,to)}return new TreeBuffer(copy,len,this.set)}};function checkSide(side,pos,from,to){switch(side){case-2:return from<pos;case-1:return to>=pos&&from<pos;case 0:return from<pos&&to>pos;case 1:return from<=pos&&to>pos;case 2:return to>pos;case 4:return!0}}function resolveNode(node$1,pos,side,overlays){for(var _a$1;node$1.from==node$1.to||(side<1?node$1.from>=pos:node$1.from>pos)||(side>-1?node$1.to<=pos:node$1.to<pos);){let parent=!overlays&&node$1 instanceof TreeNode&&node$1.index<0?null:node$1.parent;if(!parent)return node$1;node$1=parent}let mode=overlays?0:IterMode.IgnoreOverlays;if(overlays)for(let scan$1=node$1,parent=scan$1.parent;parent;scan$1=parent,parent=scan$1.parent)scan$1 instanceof TreeNode&&scan$1.index<0&&parent.enter(pos,side,mode)?.from!=scan$1.from&&(node$1=parent);for(;;){let inner=node$1.enter(pos,side,mode);if(!inner)return node$1;node$1=inner}}var BaseNode=class{cursor(mode=0){return new TreeCursor(this,mode)}getChild(type,before=null,after=null){let r$4=getChildren(this,type,before,after);return r$4.length?r$4[0]:null}getChildren(type,before=null,after=null){return getChildren(this,type,before,after)}resolve(pos,side=0){return resolveNode(this,pos,side,!1)}resolveInner(pos,side=0){return resolveNode(this,pos,side,!0)}matchContext(context){return matchNodeContext(this.parent,context)}enterUnfinishedNodesBefore(pos){let scan$1=this.childBefore(pos),node$1=this;for(;scan$1;){let last=scan$1.lastChild;if(!last||last.to!=scan$1.to)break;last.type.isError&&last.from==last.to?(node$1=scan$1,scan$1=last.prevSibling):scan$1=last}return node$1}get node(){return this}get next(){return this.parent}},TreeNode=class TreeNode extends BaseNode{constructor(_tree,from,index$4,_parent){super(),this._tree=_tree,this.from=from,this.index=index$4,this._parent=_parent}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(i$3,dir,pos,side,mode=0){for(let parent=this;;){for(let{children,positions}=parent._tree,e=dir>0?children.length:-1;i$3!=e;i$3+=dir){let next=children[i$3],start=positions[i$3]+parent.from,mounted;if(!(!(mode&IterMode.EnterBracketed&&next instanceof Tree&&(mounted=MountedTree.get(next))&&!mounted.overlay&&mounted.bracketed&&pos>=start&&pos<=start+next.length)&&!checkSide(side,pos,start,start+next.length))){if(next instanceof TreeBuffer){if(mode&IterMode.ExcludeBuffers)continue;let index$4=next.findChild(0,next.buffer.length,dir,pos-start,side);if(index$4>-1)return new BufferNode(new BufferContext(parent,next,i$3,start),null,index$4)}else if(mode&IterMode.IncludeAnonymous||!next.type.isAnonymous||hasChild(next)){let mounted$1;if(!(mode&IterMode.IgnoreMounts)&&(mounted$1=MountedTree.get(next))&&!mounted$1.overlay)return new TreeNode(mounted$1.tree,start,i$3,parent);let inner=new TreeNode(next,start,i$3,parent);return mode&IterMode.IncludeAnonymous||!inner.type.isAnonymous?inner:inner.nextChild(dir<0?next.children.length-1:0,dir,pos,side,mode)}}}if(mode&IterMode.IncludeAnonymous||!parent.type.isAnonymous||(i$3=parent.index>=0?parent.index+dir:dir<0?-1:parent._parent._tree.children.length,parent=parent._parent,!parent))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(pos){return this.nextChild(0,1,pos,2)}childBefore(pos){return this.nextChild(this._tree.children.length-1,-1,pos,-2)}prop(prop){return this._tree.prop(prop)}enter(pos,side,mode=0){let mounted;if(!(mode&IterMode.IgnoreOverlays)&&(mounted=MountedTree.get(this._tree))&&mounted.overlay){let rPos=pos-this.from,enterBracketed=mode&IterMode.EnterBracketed&&mounted.bracketed;for(let{from,to}of mounted.overlay)if((side>0||enterBracketed?from<=rPos:from<rPos)&&(side<0||enterBracketed?to>=rPos:to>rPos))return new TreeNode(mounted.tree,mounted.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,pos,side,mode)}nextSignificantParent(){let val=this;for(;val.type.isAnonymous&&val._parent;)val=val._parent;return val}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function getChildren(node$1,type,before,after){let cur$1=node$1.cursor(),result=[];if(!cur$1.firstChild())return result;if(before!=null){for(let found=!1;!found;)if(found=cur$1.type.is(before),!cur$1.nextSibling())return result}for(;;){if(after!=null&&cur$1.type.is(after))return result;if(cur$1.type.is(type)&&result.push(cur$1.node),!cur$1.nextSibling())return after==null?result:[]}}function matchNodeContext(node$1,context,i$3=context.length-1){for(let p$1=node$1;i$3>=0;p$1=p$1.parent){if(!p$1)return!1;if(!p$1.type.isAnonymous){if(context[i$3]&&context[i$3]!=p$1.name)return!1;i$3--}}return!0}var BufferContext=class{constructor(parent,buffer,index$4,start){this.parent=parent,this.buffer=buffer,this.index=index$4,this.start=start}},BufferNode=class BufferNode extends BaseNode{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(context,_parent,index$4){super(),this.context=context,this._parent=_parent,this.index=index$4,this.type=context.buffer.set.types[context.buffer.buffer[index$4]]}child(dir,pos,side){let{buffer}=this.context,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.context.start,side);return index$4<0?null:new BufferNode(this.context,this,index$4)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(pos){return this.child(1,pos,2)}childBefore(pos){return this.child(-1,pos,-2)}prop(prop){return this.type.prop(prop)}enter(pos,side,mode=0){if(mode&IterMode.ExcludeBuffers)return null;let{buffer}=this.context,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],side>0?1:-1,pos-this.context.start,side);return index$4<0?null:new BufferNode(this.context,this,index$4)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(dir){return this._parent?null:this.context.parent.nextChild(this.context.index+dir,dir,0,4)}get nextSibling(){let{buffer}=this.context,after=buffer.buffer[this.index+3];return after<(this._parent?buffer.buffer[this._parent.index+3]:buffer.buffer.length)?new BufferNode(this.context,this._parent,after):this.externalSibling(1)}get prevSibling(){let{buffer}=this.context,parentStart=this._parent?this._parent.index+4:0;return this.index==parentStart?this.externalSibling(-1):new BufferNode(this.context,this._parent,buffer.findChild(parentStart,this.index,-1,0,4))}get tree(){return null}toTree(){let children=[],positions=[],{buffer}=this.context,startI=this.index+4,endI=buffer.buffer[this.index+3];if(endI>startI){let from=buffer.buffer[this.index+1];children.push(buffer.slice(startI,endI,from)),positions.push(0)}return new Tree(this.type,children,positions,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function iterStack(heads){if(!heads.length)return null;let pick=0,picked=heads[0];for(let i$3=1;i$3<heads.length;i$3++){let node$1=heads[i$3];(node$1.from>picked.from||node$1.to<picked.to)&&(picked=node$1,pick=i$3)}let next=picked instanceof TreeNode&&picked.index<0?null:picked.parent,newHeads=heads.slice();return next?newHeads[pick]=next:newHeads.splice(pick,1),new StackIterator(newHeads,picked)}var StackIterator=class{constructor(heads,node$1){this.heads=heads,this.node=node$1}get next(){return iterStack(this.heads)}};function stackIterator(tree,pos,side){let inner=tree.resolveInner(pos,side),layers=null;for(let scan$1=inner instanceof TreeNode?inner:inner.context.parent;scan$1;scan$1=scan$1.parent)if(scan$1.index<0){let parent=scan$1.parent;(layers||=[inner]).push(parent.resolve(pos,side)),scan$1=parent}else{let mount=MountedTree.get(scan$1.tree);if(mount&&mount.overlay&&mount.overlay[0].from<=pos&&mount.overlay[mount.overlay.length-1].to>=pos){let root$4=new TreeNode(mount.tree,mount.overlay[0].from+scan$1.from,-1,scan$1);(layers||=[inner]).push(resolveNode(root$4,pos,side,!1))}}return layers?iterStack(layers):inner}var TreeCursor=class{get name(){return this.type.name}constructor(node$1,mode=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=mode&~IterMode.EnterBracketed,node$1 instanceof TreeNode)this.yieldNode(node$1);else{this._tree=node$1.context.parent,this.buffer=node$1.context;for(let n=node$1._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=node$1,this.yieldBuf(node$1.index)}}yieldNode(node$1){return node$1?(this._tree=node$1,this.type=node$1.type,this.from=node$1.from,this.to=node$1.to,!0):!1}yieldBuf(index$4,type){this.index=index$4;let{start,buffer}=this.buffer;return this.type=type||buffer.set.types[buffer.buffer[index$4]],this.from=start+buffer.buffer[index$4+1],this.to=start+buffer.buffer[index$4+2],!0}yield(node$1){return node$1?node$1 instanceof TreeNode?(this.buffer=null,this.yieldNode(node$1)):(this.buffer=node$1.context,this.yieldBuf(node$1.index,node$1.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(dir,pos,side){if(!this.buffer)return this.yield(this._tree.nextChild(dir<0?this._tree._tree.children.length-1:0,dir,pos,side,this.mode));let{buffer}=this.buffer,index$4=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.buffer.start,side);return index$4<0?!1:(this.stack.push(this.index),this.yieldBuf(index$4))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(pos){return this.enterChild(1,pos,2)}childBefore(pos){return this.enterChild(-1,pos,-2)}enter(pos,side,mode=this.mode){return this.buffer?mode&IterMode.ExcludeBuffers?!1:this.enterChild(1,pos,side):this.yield(this._tree.enter(pos,side,mode))}parent(){if(!this.buffer)return this.yieldNode(this.mode&IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let parent=this.mode&IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(parent)}sibling(dir){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+dir,dir,0,4,this.mode)):!1;let{buffer}=this.buffer,d$1=this.stack.length-1;if(dir<0){let parentStart=d$1<0?0:this.stack[d$1]+4;if(this.index!=parentStart)return this.yieldBuf(buffer.findChild(parentStart,this.index,-1,0,4))}else{let after=buffer.buffer[this.index+3];if(after<(d$1<0?buffer.buffer.length:buffer.buffer[this.stack[d$1]+3]))return this.yieldBuf(after)}return d$1<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+dir,dir,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(dir){let index$4,parent,{buffer}=this;if(buffer){if(dir>0){if(this.index<buffer.buffer.buffer.length)return!1}else for(let i$3=0;i$3<this.index;i$3++)if(buffer.buffer.buffer[i$3+3]<this.index)return!1;({index:index$4,parent}=buffer)}else ({index:index$4,_parent:parent}=this._tree);for(;parent;{index:index$4,_parent:parent}=parent)if(index$4>-1)for(let i$3=index$4+dir,e=dir<0?-1:parent._tree.children.length;i$3!=e;i$3+=dir){let child=parent._tree.children[i$3];if(this.mode&IterMode.IncludeAnonymous||child instanceof TreeBuffer||!child.type.isAnonymous||hasChild(child))return!1}return!0}move(dir,enter){if(enter&&this.enterChild(dir,0,4))return!0;for(;;){if(this.sibling(dir))return!0;if(this.atLastNode(dir)||!this.parent())return!1}}next(enter=!0){return this.move(1,enter)}prev(enter=!0){return this.move(-1,enter)}moveTo(pos,side=0){for(;(this.from==this.to||(side<1?this.from>=pos:this.from>pos)||(side>-1?this.to<=pos:this.to<pos))&&this.parent(););for(;this.enterChild(1,pos,side););return this}get node(){if(!this.buffer)return this._tree;let cache=this.bufferNode,result=null,depth=0;if(cache&&cache.context==this.buffer)scan:for(let index$4=this.index,d$1=this.stack.length;d$1>=0;){for(let c=cache;c;c=c._parent)if(c.index==index$4){if(index$4==this.index)return c;result=c,depth=d$1+1;break scan}index$4=this.stack[--d$1]}for(let i$3=depth;i$3<this.stack.length;i$3++)result=new BufferNode(this.buffer,result,this.stack[i$3]);return this.bufferNode=new BufferNode(this.buffer,result,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(enter,leave){for(let depth=0;;){let mustLeave=!1;if(this.type.isAnonymous||enter(this)!==!1){if(this.firstChild()){depth++;continue}this.type.isAnonymous||(mustLeave=!0)}for(;;){if(mustLeave&&leave&&leave(this),mustLeave=this.type.isAnonymous,!depth)return;if(this.nextSibling())break;this.parent(),depth--,mustLeave=!0}}}matchContext(context){if(!this.buffer)return matchNodeContext(this.node.parent,context);let{buffer}=this.buffer,{types:types$1}=buffer.set;for(let i$3=context.length-1,d$1=this.stack.length-1;i$3>=0;d$1--){if(d$1<0)return matchNodeContext(this._tree,context,i$3);let type=types$1[buffer.buffer[this.stack[d$1]]];if(!type.isAnonymous){if(context[i$3]&&context[i$3]!=type.name)return!1;i$3--}}return!0}};function hasChild(tree){return tree.children.some(ch=>ch instanceof TreeBuffer||!ch.type.isAnonymous||hasChild(ch))}function buildTree(data){var _a$1;let{buffer,nodeSet,maxBufferLength=DefaultBufferLength,reused=[],minRepeatType=nodeSet.types.length}=data,cursor=Array.isArray(buffer)?new FlatBufferCursor(buffer,buffer.length):buffer,types$1=nodeSet.types,contextHash=0,lookAhead=0;function takeNode(parentStart,minPos,children$1,positions$1,inRepeat,depth){let{id,start,end,size:size$3}=cursor,lookAheadAtStart=lookAhead,contextAtStart=contextHash;if(size$3<0)if(cursor.next(),size$3==-1){let node$2=reused[id];children$1.push(node$2),positions$1.push(start-parentStart);return}else if(size$3==-3){contextHash=id;return}else if(size$3==-4){lookAhead=id;return}else throw RangeError(`Unrecognized record size: ${size$3}`);let type=types$1[id],node$1,buffer$1,startPos=start-parentStart;if(end-start<=maxBufferLength&&(buffer$1=findBufferSize(cursor.pos-minPos,inRepeat))){let data$1=new Uint16Array(buffer$1.size-buffer$1.skip),endPos=cursor.pos-buffer$1.size,index$4=data$1.length;for(;cursor.pos>endPos;)index$4=copyToBuffer(buffer$1.start,data$1,index$4);node$1=new TreeBuffer(data$1,end-buffer$1.start,nodeSet),startPos=buffer$1.start-parentStart}else{let endPos=cursor.pos-size$3;cursor.next();let localChildren=[],localPositions=[],localInRepeat=id>=minRepeatType?id:-1,lastGroup=0,lastEnd=end;for(;cursor.pos>endPos;)localInRepeat>=0&&cursor.id==localInRepeat&&cursor.size>=0?(cursor.end<=lastEnd-maxBufferLength&&(makeRepeatLeaf(localChildren,localPositions,start,lastGroup,cursor.end,lastEnd,localInRepeat,lookAheadAtStart,contextAtStart),lastGroup=localChildren.length,lastEnd=cursor.end),cursor.next()):depth>2500?takeFlatNode(start,endPos,localChildren,localPositions):takeNode(start,endPos,localChildren,localPositions,localInRepeat,depth+1);if(localInRepeat>=0&&lastGroup>0&&lastGroup<localChildren.length&&makeRepeatLeaf(localChildren,localPositions,start,lastGroup,start,lastEnd,localInRepeat,lookAheadAtStart,contextAtStart),localChildren.reverse(),localPositions.reverse(),localInRepeat>-1&&lastGroup>0){let make=makeBalanced(type,contextAtStart);node$1=balanceRange(type,localChildren,localPositions,0,localChildren.length,0,end-start,make,make)}else node$1=makeTree(type,localChildren,localPositions,end-start,lookAheadAtStart-end,contextAtStart)}children$1.push(node$1),positions$1.push(startPos)}function takeFlatNode(parentStart,minPos,children$1,positions$1){let nodes=[],nodeCount=0,stopAt=-1;for(;cursor.pos>minPos;){let{id,start,end,size:size$3}=cursor;if(size$3>4)cursor.next();else if(stopAt>-1&&start<stopAt)break;else stopAt<0&&(stopAt=end-maxBufferLength),nodes.push(id,start,end),nodeCount++,cursor.next()}if(nodeCount){let buffer$1=new Uint16Array(nodeCount*4),start=nodes[nodes.length-2];for(let i$3=nodes.length-3,j$1=0;i$3>=0;i$3-=3)buffer$1[j$1++]=nodes[i$3],buffer$1[j$1++]=nodes[i$3+1]-start,buffer$1[j$1++]=nodes[i$3+2]-start,buffer$1[j$1++]=j$1;children$1.push(new TreeBuffer(buffer$1,nodes[2]-start,nodeSet)),positions$1.push(start-parentStart)}}function makeBalanced(type,contextHash$1){return(children$1,positions$1,length$1)=>{let lookAhead$1=0,lastI=children$1.length-1,last,lookAheadProp;if(lastI>=0&&(last=children$1[lastI])instanceof Tree){if(!lastI&&last.type==type&&last.length==length$1)return last;(lookAheadProp=last.prop(NodeProp.lookAhead))&&(lookAhead$1=positions$1[lastI]+last.length+lookAheadProp)}return makeTree(type,children$1,positions$1,length$1,lookAhead$1,contextHash$1)}}function makeRepeatLeaf(children$1,positions$1,base$1,i$3,from,to,type,lookAhead$1,contextHash$1){let localChildren=[],localPositions=[];for(;children$1.length>i$3;)localChildren.push(children$1.pop()),localPositions.push(positions$1.pop()+base$1-from);children$1.push(makeTree(nodeSet.types[type],localChildren,localPositions,to-from,lookAhead$1-to,contextHash$1)),positions$1.push(from-base$1)}function makeTree(type,children$1,positions$1,length$1,lookAhead$1,contextHash$1,props){if(contextHash$1){let pair$1=[NodeProp.contextHash,contextHash$1];props=props?[pair$1].concat(props):[pair$1]}if(lookAhead$1>25){let pair$1=[NodeProp.lookAhead,lookAhead$1];props=props?[pair$1].concat(props):[pair$1]}return new Tree(type,children$1,positions$1,length$1,props)}function findBufferSize(maxSize,inRepeat){let fork=cursor.fork(),size$3=0,start=0,skip=0,minStart=fork.end-maxBufferLength,result={size:0,start:0,skip:0};scan:for(let minPos=fork.pos-maxSize;fork.pos>minPos;){let nodeSize$1=fork.size;if(fork.id==inRepeat&&nodeSize$1>=0){result.size=size$3,result.start=start,result.skip=skip,skip+=4,size$3+=4,fork.next();continue}let startPos=fork.pos-nodeSize$1;if(nodeSize$1<0||startPos<minPos||fork.start<minStart)break;let localSkipped=fork.id>=minRepeatType?4:0,nodeStart$1=fork.start;for(fork.next();fork.pos>startPos;){if(fork.size<0)if(fork.size==-3||fork.size==-4)localSkipped+=4;else break scan;else fork.id>=minRepeatType&&(localSkipped+=4);fork.next()}start=nodeStart$1,size$3+=nodeSize$1,skip+=localSkipped}return(inRepeat<0||size$3==maxSize)&&(result.size=size$3,result.start=start,result.skip=skip),result.size>4?result:void 0}function copyToBuffer(bufferStart,buffer$1,index$4){let{id,start,end,size:size$3}=cursor;if(cursor.next(),size$3>=0&&id<minRepeatType){let startIndex=index$4;if(size$3>4){let endPos=cursor.pos-(size$3-4);for(;cursor.pos>endPos;)index$4=copyToBuffer(bufferStart,buffer$1,index$4)}buffer$1[--index$4]=startIndex,buffer$1[--index$4]=end-bufferStart,buffer$1[--index$4]=start-bufferStart,buffer$1[--index$4]=id}else size$3==-3?contextHash=id:size$3==-4&&(lookAhead=id);return index$4}let children=[],positions=[];for(;cursor.pos>0;)takeNode(data.start||0,data.bufferStart||0,children,positions,-1,0);let length=data.length??(children.length?positions[0]+children[0].length:0);return new Tree(types$1[data.topID],children.reverse(),positions.reverse(),length)}var nodeSizeCache=new WeakMap;function nodeSize(balanceType,node$1){if(!balanceType.isAnonymous||node$1 instanceof TreeBuffer||node$1.type!=balanceType)return 1;let size$3=nodeSizeCache.get(node$1);if(size$3==null){size$3=1;for(let child of node$1.children){if(child.type!=balanceType||!(child instanceof Tree)){size$3=1;break}size$3+=nodeSize(balanceType,child)}nodeSizeCache.set(node$1,size$3)}return size$3}function balanceRange(balanceType,children,positions,from,to,start,length,mkTop,mkTree){let total=0;for(let i$3=from;i$3<to;i$3++)total+=nodeSize(balanceType,children[i$3]);let maxChild=Math.ceil(total*1.5/8),localChildren=[],localPositions=[];function divide(children$1,positions$1,from$1,to$1,offset$3){for(let i$3=from$1;i$3<to$1;){let groupFrom=i$3,groupStart=positions$1[i$3],groupSize=nodeSize(balanceType,children$1[i$3]);for(i$3++;i$3<to$1;i$3++){let nextSize=nodeSize(balanceType,children$1[i$3]);if(groupSize+nextSize>=maxChild)break;groupSize+=nextSize}if(i$3==groupFrom+1){if(groupSize>maxChild){let only=children$1[groupFrom];divide(only.children,only.positions,0,only.children.length,positions$1[groupFrom]+offset$3);continue}localChildren.push(children$1[groupFrom])}else{let length$1=positions$1[i$3-1]+children$1[i$3-1].length-groupStart;localChildren.push(balanceRange(balanceType,children$1,positions$1,groupFrom,i$3,groupStart,length$1,null,mkTree))}localPositions.push(groupStart+offset$3-start)}}return divide(children,positions,from,to,0),(mkTop||mkTree)(localChildren,localPositions,length)}var TreeFragment=class TreeFragment{constructor(from,to,tree,offset$3,openStart=!1,openEnd=!1){this.from=from,this.to=to,this.tree=tree,this.offset=offset$3,this.open=(openStart?1:0)|(openEnd?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(tree,fragments=[],partial=!1){let result=[new TreeFragment(0,tree.length,tree,0,!1,partial)];for(let f$2 of fragments)f$2.to>tree.length&&result.push(f$2);return result}static applyChanges(fragments,changes,minGap=128){if(!changes.length)return fragments;let result=[],fI=1,nextF=fragments.length?fragments[0]:null;for(let cI=0,pos=0,off=0;;cI++){let nextC=cI<changes.length?changes[cI]:null,nextPos=nextC?nextC.fromA:1e9;if(nextPos-pos>=minGap)for(;nextF&&nextF.from<nextPos;){let cut=nextF;if(pos>=cut.from||nextPos<=cut.to||off){let fFrom=Math.max(cut.from,pos)-off,fTo=Math.min(cut.to,nextPos)-off;cut=fFrom>=fTo?null:new TreeFragment(fFrom,fTo,cut.tree,cut.offset+off,cI>0,!!nextC)}if(cut&&result.push(cut),nextF.to>nextPos)break;nextF=fI<fragments.length?fragments[fI++]:null}if(!nextC)break;pos=nextC.toA,off=nextC.toA-nextC.toB}return result}},Parser=class{startParse(input,fragments,ranges){return typeof input==`string`&&(input=new StringInput(input)),ranges=ranges?ranges.length?ranges.map(r$4=>new Range(r$4.from,r$4.to)):[new Range(0,0)]:[new Range(0,input.length)],this.createParse(input,fragments||[],ranges)}parse(input,fragments,ranges){let parse$2=this.startParse(input,fragments,ranges);for(;;){let done=parse$2.advance();if(done)return done}}},StringInput=class{constructor(string$3){this.string=string$3}get length(){return this.string.length}chunk(from){return this.string.slice(from)}get lineChunks(){return!1}read(from,to){return this.string.slice(from,to)}},stoppedInner=new NodeProp({perNode:!0}),nextTagID=0,Tag=class Tag{constructor(name$2,set,base$1,modified){this.name=name$2,this.set=set,this.base=base$1,this.modified=modified,this.id=nextTagID++}toString(){let{name:name$2}=this;for(let mod of this.modified)mod.name&&(name$2=`${mod.name}(${name$2})`);return name$2}static define(nameOrParent,parent){let name$2=typeof nameOrParent==`string`?nameOrParent:`?`;if(nameOrParent instanceof Tag&&(parent=nameOrParent),parent?.base)throw Error(`Can not derive from a modified tag`);let tag=new Tag(name$2,[],null,[]);if(tag.set.push(tag),parent)for(let t$1 of parent.set)tag.set.push(t$1);return tag}static defineModifier(name$2){let mod=new Modifier(name$2);return tag=>tag.modified.indexOf(mod)>-1?tag:Modifier.get(tag.base||tag,tag.modified.concat(mod).sort((a$1,b$2)=>a$1.id-b$2.id))}},nextModifierID=0,Modifier=class Modifier{constructor(name$2){this.name=name$2,this.instances=[],this.id=nextModifierID++}static get(base$1,mods){if(!mods.length)return base$1;let exists=mods[0].instances.find(t$1=>t$1.base==base$1&&sameArray(mods,t$1.modified));if(exists)return exists;let set=[],tag=new Tag(base$1.name,set,base$1,mods);for(let m$2 of mods)m$2.instances.push(tag);let configs=powerSet(mods);for(let parent of base$1.set)if(!parent.modified.length)for(let config$1 of configs)set.push(Modifier.get(parent,config$1));return tag}};function sameArray(a$1,b$2){return a$1.length==b$2.length&&a$1.every((x$1,i$3)=>x$1==b$2[i$3])}function powerSet(array){let sets=[[]];for(let i$3=0;i$3<array.length;i$3++)for(let j$1=0,e=sets.length;j$1<e;j$1++)sets.push(sets[j$1].concat(array[i$3]));return sets.sort((a$1,b$2)=>b$2.length-a$1.length)}function styleTags(spec){let byName=Object.create(null);for(let prop in spec){let tags$1=spec[prop];Array.isArray(tags$1)||(tags$1=[tags$1]);for(let part of prop.split(` `))if(part){let pieces=[],mode=2,rest=part;for(let pos=0;;){if(rest==`...`&&pos>0&&pos+3==part.length){mode=1;break}let m$2=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(rest);if(!m$2)throw RangeError(`Invalid path: `+part);if(pieces.push(m$2[0]==`*`?``:m$2[0][0]==`"`?JSON.parse(m$2[0]):m$2[0]),pos+=m$2[0].length,pos==part.length)break;let next=part[pos++];if(pos==part.length&&next==`!`){mode=0;break}if(next!=`/`)throw RangeError(`Invalid path: `+part);rest=part.slice(pos)}let last=pieces.length-1,inner=pieces[last];if(!inner)throw RangeError(`Invalid path: `+part);byName[inner]=new Rule$1(tags$1,mode,last>0?pieces.slice(0,last):null).sort(byName[inner])}}return ruleNodeProp.add(byName)}var ruleNodeProp=new NodeProp({combine(a$1,b$2){let cur$1,root$4,take;for(;a$1||b$2;){if(!a$1||b$2&&a$1.depth>=b$2.depth?(take=b$2,b$2=b$2.next):(take=a$1,a$1=a$1.next),cur$1&&cur$1.mode==take.mode&&!take.context&&!cur$1.context)continue;let copy=new Rule$1(take.tags,take.mode,take.context);cur$1?cur$1.next=copy:root$4=copy,cur$1=copy}return root$4}}),Rule$1=class{constructor(tags$1,mode,context,next){this.tags=tags$1,this.mode=mode,this.context=context,this.next=next}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(other){return!other||other.depth<this.depth?(this.next=other,this):(other.next=this.sort(other.next),other)}get depth(){return this.context?this.context.length:0}};Rule$1.empty=new Rule$1([],2,null);function tagHighlighter(tags$1,options$1){let map=Object.create(null);for(let style$1 of tags$1)if(!Array.isArray(style$1.tag))map[style$1.tag.id]=style$1.class;else for(let tag of style$1.tag)map[tag.id]=style$1.class;let{scope,all:all$2=null}=options$1||{};return{style:tags$2=>{let cls=all$2;for(let tag of tags$2)for(let sub of tag.set){let tagClass=map[sub.id];if(tagClass){cls=cls?cls+` `+tagClass:tagClass;break}}return cls},scope}}function highlightTags(highlighters,tags$1){let result=null;for(let highlighter$1 of highlighters){let value=highlighter$1.style(tags$1);value&&(result=result?result+` `+value:value)}return result}function highlightTree(tree,highlighter$1,putStyle,from=0,to=tree.length){let builder=new HighlightBuilder(from,Array.isArray(highlighter$1)?highlighter$1:[highlighter$1],putStyle);builder.highlightRange(tree.cursor(),from,to,``,builder.highlighters),builder.flush(to)}var HighlightBuilder=class{constructor(at,highlighters,span){this.at=at,this.highlighters=highlighters,this.span=span,this.class=``}startSpan(at,cls){cls!=this.class&&(this.flush(at),at>this.at&&(this.at=at),this.class=cls)}flush(to){to>this.at&&this.class&&this.span(this.at,to,this.class)}highlightRange(cursor,from,to,inheritedClass,highlighters){let{type,from:start,to:end}=cursor;if(start>=to||end<=from)return;type.isTop&&(highlighters=this.highlighters.filter(h$1=>!h$1.scope||h$1.scope(type)));let cls=inheritedClass,rule=getStyleTags(cursor)||Rule$1.empty,tagCls=highlightTags(highlighters,rule.tags);if(tagCls&&(cls&&(cls+=` `),cls+=tagCls,rule.mode==1&&(inheritedClass+=(inheritedClass?` `:``)+tagCls)),this.startSpan(Math.max(from,start),cls),rule.opaque)return;let mounted=cursor.tree&&cursor.tree.prop(NodeProp.mounted);if(mounted&&mounted.overlay){let inner=cursor.node.enter(mounted.overlay[0].from+start,1),innerHighlighters=this.highlighters.filter(h$1=>!h$1.scope||h$1.scope(mounted.tree.type)),hasChild$1=cursor.firstChild();for(let i$3=0,pos=start;;i$3++){let next=i$3<mounted.overlay.length?mounted.overlay[i$3]:null,nextPos=next?next.from+start:end,rangeFrom$1=Math.max(from,pos),rangeTo$1=Math.min(to,nextPos);if(rangeFrom$1<rangeTo$1&&hasChild$1)for(;cursor.from<rangeTo$1&&(this.highlightRange(cursor,rangeFrom$1,rangeTo$1,inheritedClass,highlighters),this.startSpan(Math.min(rangeTo$1,cursor.to),cls),!(cursor.to>=nextPos||!cursor.nextSibling())););if(!next||nextPos>to)break;pos=next.to+start,pos>from&&(this.highlightRange(inner.cursor(),Math.max(from,next.from+start),Math.min(to,pos),``,innerHighlighters),this.startSpan(Math.min(to,pos),cls))}hasChild$1&&cursor.parent()}else if(cursor.firstChild()){mounted&&(inheritedClass=``);do{if(cursor.to<=from)continue;if(cursor.from>=to)break;this.highlightRange(cursor,from,to,inheritedClass,highlighters),this.startSpan(Math.min(to,cursor.to),cls)}while(cursor.nextSibling());cursor.parent()}}};function getStyleTags(node$1){let rule=node$1.type.prop(ruleNodeProp);for(;rule&&rule.context&&!node$1.matchContext(rule.context);)rule=rule.next;return rule||null}var t=Tag.define,comment$1=t(),name$1=t(),typeName=t(name$1),propertyName=t(name$1),literal=t(),string$2=t(literal),number$1=t(literal),content$2=t(),heading$1=t(content$2),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment:comment$1,lineComment:t(comment$1),blockComment:t(comment$1),docComment:t(comment$1),name:name$1,variableName:t(name$1),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name$1),labelName:t(name$1),namespace:t(name$1),macroName:t(name$1),literal,string:string$2,docString:t(string$2),character:t(string$2),attributeValue:t(string$2),number:number$1,integer:t(number$1),float:t(number$1),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content:content$2,heading:heading$1,heading1:t(heading$1),heading2:t(heading$1),heading3:t(heading$1),heading4:t(heading$1),heading5:t(heading$1),heading6:t(heading$1),contentSeparator:t(content$2),list:t(content$2),quote:t(content$2),emphasis:t(content$2),strong:t(content$2),link:t(content$2),monospace:t(content$2),strikethrough:t(content$2),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(`definition`),constant:Tag.defineModifier(`constant`),function:Tag.defineModifier(`function`),standard:Tag.defineModifier(`standard`),local:Tag.defineModifier(`local`),special:Tag.defineModifier(`special`)};for(let name$2 in tags){let val=tags[name$2];val instanceof Tag&&(val.name=name$2)}var classHighlighter=tagHighlighter([{tag:tags.link,class:`tok-link`},{tag:tags.heading,class:`tok-heading`},{tag:tags.emphasis,class:`tok-emphasis`},{tag:tags.strong,class:`tok-strong`},{tag:tags.keyword,class:`tok-keyword`},{tag:tags.atom,class:`tok-atom`},{tag:tags.bool,class:`tok-bool`},{tag:tags.url,class:`tok-url`},{tag:tags.labelName,class:`tok-labelName`},{tag:tags.inserted,class:`tok-inserted`},{tag:tags.deleted,class:`tok-deleted`},{tag:tags.literal,class:`tok-literal`},{tag:tags.string,class:`tok-string`},{tag:tags.number,class:`tok-number`},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],class:`tok-string2`},{tag:tags.variableName,class:`tok-variableName`},{tag:tags.local(tags.variableName),class:`tok-variableName tok-local`},{tag:tags.definition(tags.variableName),class:`tok-variableName tok-definition`},{tag:tags.special(tags.variableName),class:`tok-variableName2`},{tag:tags.definition(tags.propertyName),class:`tok-propertyName tok-definition`},{tag:tags.typeName,class:`tok-typeName`},{tag:tags.namespace,class:`tok-namespace`},{tag:tags.className,class:`tok-className`},{tag:tags.macroName,class:`tok-macroName`},{tag:tags.propertyName,class:`tok-propertyName`},{tag:tags.operator,class:`tok-operator`},{tag:tags.comment,class:`tok-comment`},{tag:tags.meta,class:`tok-meta`},{tag:tags.invalid,class:`tok-invalid`},{tag:tags.punctuation,class:`tok-punctuation`}]),_a,languageDataProp=new NodeProp;function defineLanguageFacet(baseData){return Facet.define({combine:baseData?values=>values.concat(baseData):void 0})}var sublanguageProp=new NodeProp,Language=class{constructor(data,parser$1,extraExtensions=[],name$2=``){this.data=data,this.name=name$2,EditorState.prototype.hasOwnProperty(`tree`)||Object.defineProperty(EditorState.prototype,`tree`,{get(){return syntaxTree(this)}}),this.parser=parser$1,this.extension=[language.of(this),EditorState.languageData.of((state$1,pos,side)=>{let top$1=topNodeAt(state$1,pos,side),data$1=top$1.type.prop(languageDataProp);if(!data$1)return[];let base$1=state$1.facet(data$1),sub=top$1.type.prop(sublanguageProp);if(sub){let innerNode=top$1.resolve(pos-top$1.from,side);for(let sublang of sub)if(sublang.test(innerNode,state$1)){let data$2=state$1.facet(sublang.facet);return sublang.type==`replace`?data$2:data$2.concat(base$1)}}return base$1})].concat(extraExtensions)}isActiveAt(state$1,pos,side=-1){return topNodeAt(state$1,pos,side).type.prop(languageDataProp)==this.data}findRegions(state$1){let lang=state$1.facet(language);if(lang?.data==this.data)return[{from:0,to:state$1.doc.length}];if(!lang||!lang.allowsNesting)return[];let result=[],explore=(tree,from)=>{if(tree.prop(languageDataProp)==this.data){result.push({from,to:from+tree.length});return}let mount=tree.prop(NodeProp.mounted);if(mount){if(mount.tree.prop(languageDataProp)==this.data){if(mount.overlay)for(let r$4 of mount.overlay)result.push({from:r$4.from+from,to:r$4.to+from});else result.push({from,to:from+tree.length});return}else if(mount.overlay){let size$3=result.length;if(explore(mount.tree,mount.overlay[0].from+from),result.length>size$3)return}}for(let i$3=0;i$3<tree.children.length;i$3++){let ch=tree.children[i$3];ch instanceof Tree&&explore(ch,tree.positions[i$3]+from)}};return explore(syntaxTree(state$1),0),result}get allowsNesting(){return!0}};Language.setState=StateEffect.define();function topNodeAt(state$1,pos,side){let topLang=state$1.facet(language),tree=syntaxTree(state$1).topNode;if(!topLang||topLang.allowsNesting)for(let node$1=tree;node$1;node$1=node$1.enter(pos,side,IterMode.ExcludeBuffers|IterMode.EnterBracketed))node$1.type.isTop&&(tree=node$1);return tree}var LRLanguage=class LRLanguage extends Language{constructor(data,parser$1,name$2){super(data,parser$1,[],name$2),this.parser=parser$1}static define(spec){let data=defineLanguageFacet(spec.languageData);return new LRLanguage(data,spec.parser.configure({props:[languageDataProp.add(type=>type.isTop?data:void 0)]}),spec.name)}configure(options$1,name$2){return new LRLanguage(this.data,this.parser.configure(options$1),name$2||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function syntaxTree(state$1){let field=state$1.field(Language.state,!1);return field?field.tree:Tree.empty}var DocInput=class{constructor(doc$1){this.doc=doc$1,this.cursorPos=0,this.string=``,this.cursor=doc$1.iter()}get length(){return this.doc.length}syncTo(pos){return this.string=this.cursor.next(pos-this.cursorPos).value,this.cursorPos=pos+this.string.length,this.cursorPos-this.string.length}chunk(pos){return this.syncTo(pos),this.string}get lineChunks(){return!0}read(from,to){let stringStart=this.cursorPos-this.string.length;return from<stringStart||to>=this.cursorPos?this.doc.sliceString(from,to):this.string.slice(from-stringStart,to-stringStart)}},currentContext=null,ParseContext=class ParseContext{constructor(parser$1,state$1,fragments=[],tree,treeLen,viewport,skipped,scheduleOn){this.parser=parser$1,this.state=state$1,this.fragments=fragments,this.tree=tree,this.treeLen=treeLen,this.viewport=viewport,this.skipped=skipped,this.scheduleOn=scheduleOn,this.parse=null,this.tempSkipped=[]}static create(parser$1,state$1,viewport){return new ParseContext(parser$1,state$1,[],Tree.empty,0,viewport,[],null)}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(until,upto){return upto!=null&&upto>=this.state.doc.length&&(upto=void 0),this.tree!=Tree.empty&&this.isDone(upto??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var _a$1;if(typeof until==`number`){let endTime=Date.now()+until;until=()=>Date.now()>endTime}for(this.parse||=this.startParse(),upto!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>upto)&&upto<this.state.doc.length&&this.parse.stopAt(upto);;){let done=this.parse.advance();if(done)if(this.fragments=this.withoutTempSkipped(TreeFragment.addTree(done,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=this.parse.stoppedAt??this.state.doc.length,this.tree=done,this.parse=null,this.treeLen<(upto??this.state.doc.length))this.parse=this.startParse();else return!0;if(until())return!1}})}takeTree(){let pos,tree;this.parse&&(pos=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>pos)&&this.parse.stopAt(pos),this.withContext(()=>{for(;!(tree=this.parse.advance()););}),this.treeLen=pos,this.tree=tree,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(f$2){let prev=currentContext;currentContext=this;try{return f$2()}finally{currentContext=prev}}withoutTempSkipped(fragments){for(let r$4;r$4=this.tempSkipped.pop();)fragments=cutFragments(fragments,r$4.from,r$4.to);return fragments}changes(changes,newState){let{fragments,tree,treeLen,viewport,skipped}=this;if(this.takeTree(),!changes.empty){let ranges=[];if(changes.iterChangedRanges((fromA,toA,fromB,toB)=>ranges.push({fromA,toA,fromB,toB})),fragments=TreeFragment.applyChanges(fragments,ranges),tree=Tree.empty,treeLen=0,viewport={from:changes.mapPos(viewport.from,-1),to:changes.mapPos(viewport.to,1)},this.skipped.length){skipped=[];for(let r$4 of this.skipped){let from=changes.mapPos(r$4.from,1),to=changes.mapPos(r$4.to,-1);from<to&&skipped.push({from,to})}}}return new ParseContext(this.parser,newState,fragments,tree,treeLen,viewport,skipped,this.scheduleOn)}updateViewport(viewport){if(this.viewport.from==viewport.from&&this.viewport.to==viewport.to)return!1;this.viewport=viewport;let startLen=this.skipped.length;for(let i$3=0;i$3<this.skipped.length;i$3++){let{from,to}=this.skipped[i$3];from<viewport.to&&to>viewport.from&&(this.fragments=cutFragments(this.fragments,from,to),this.skipped.splice(i$3--,1))}return this.skipped.length>=startLen?!1:(this.reset(),!0)}reset(){this.parse&&=(this.takeTree(),null)}skipUntilInView(from,to){this.skipped.push({from,to})}static getSkippingParser(until){return new class extends Parser{createParse(input,fragments,ranges){let from=ranges[0].from,to=ranges[ranges.length-1].to;return{parsedPos:from,advance(){let cx$1=currentContext;if(cx$1){for(let r$4 of ranges)cx$1.tempSkipped.push(r$4);until&&(cx$1.scheduleOn=cx$1.scheduleOn?Promise.all([cx$1.scheduleOn,until]):until)}return this.parsedPos=to,new Tree(NodeType.none,[],[],to-from)},stoppedAt:null,stopAt(){}}}}}isDone(upto){upto=Math.min(upto,this.state.doc.length);let frags=this.fragments;return this.treeLen>=upto&&frags.length&&frags[0].from==0&&frags[0].to>=upto}static get(){return currentContext}};function cutFragments(fragments,from,to){return TreeFragment.applyChanges(fragments,[{fromA:from,toA:to,fromB:from,toB:to}])}var LanguageState=class LanguageState{constructor(context){this.context=context,this.tree=context.tree}apply(tr$1){if(!tr$1.docChanged&&this.tree==this.context.tree)return this;let newCx=this.context.changes(tr$1.changes,tr$1.state),upto=this.context.treeLen==tr$1.startState.doc.length?void 0:Math.max(tr$1.changes.mapPos(this.context.treeLen),newCx.viewport.to);return newCx.work(20,upto)||newCx.takeTree(),new LanguageState(newCx)}static init(state$1){let vpTo=Math.min(3e3,state$1.doc.length),parseState=ParseContext.create(state$1.facet(language).parser,state$1,{from:0,to:vpTo});return parseState.work(20,vpTo)||parseState.takeTree(),new LanguageState(parseState)}};Language.state=StateField.define({create:LanguageState.init,update(value,tr$1){for(let e of tr$1.effects)if(e.is(Language.setState))return e.value;return tr$1.startState.facet(language)==tr$1.state.facet(language)?value.apply(tr$1):LanguageState.init(tr$1.state)}});var requestIdle=callback=>{let timeout=setTimeout(()=>callback(),500);return()=>clearTimeout(timeout)};typeof requestIdleCallback<`u`&&(requestIdle=callback=>{let idle=-1,timeout=setTimeout(()=>{idle=requestIdleCallback(callback,{timeout:400})},100);return()=>idle<0?clearTimeout(timeout):cancelIdleCallback(idle)});var isInputPending=typeof navigator<`u`&&(_a=navigator.scheduling)?.isInputPending?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(update$1){let cx$1=this.view.state.field(Language.state).context;(cx$1.updateViewport(update$1.view.viewport)||this.view.viewport.to>cx$1.treeLen)&&this.scheduleWork(),(update$1.docChanged||update$1.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(cx$1)}scheduleWork(){if(this.working)return;let{state:state$1}=this.view,field=state$1.field(Language.state);(field.tree!=field.context.tree||!field.context.isDone(state$1.doc.length))&&(this.working=requestIdle(this.work))}work(deadline){this.working=null;let now$1=Date.now();if(this.chunkEnd<now$1&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=now$1+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:state$1,viewport:{to:vpTo}}=this.view,field=state$1.field(Language.state);if(field.tree==field.context.tree&&field.context.isDone(vpTo+1e5))return;let endTime=Date.now()+Math.min(this.chunkBudget,100,deadline&&!isInputPending?Math.max(25,deadline.timeRemaining()-5):1e9),viewportFirst=field.context.treeLen<vpTo&&state$1.doc.length>vpTo+1e3,done=field.context.work(()=>isInputPending&&isInputPending()||Date.now()>endTime,vpTo+(viewportFirst?0:1e5));this.chunkBudget-=Date.now()-now$1,(done||this.chunkBudget<=0)&&(field.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(field.context))})),this.chunkBudget>0&&!(done&&!viewportFirst)&&this.scheduleWork(),this.checkAsyncSchedule(field.context)}checkAsyncSchedule(cx$1){cx$1.scheduleOn&&=(this.workScheduled++,cx$1.scheduleOn.then(()=>this.scheduleWork()).catch(err=>logException(this.view.state,err)).then(()=>this.workScheduled--),null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(languages){return languages.length?languages[0]:null},enables:language$1=>[Language.state,parseWorker,EditorView.contentAttributes.compute([language$1],state$1=>{let lang=state$1.facet(language$1);return lang&&lang.name?{"data-language":lang.name}:{}})]}),LanguageSupport=class{constructor(language$1,support=[]){this.language=language$1,this.support=support,this.extension=[language$1,support]}},indentService=Facet.define(),indentUnit=Facet.define({combine:values=>{if(!values.length)return` `;let unit=values[0];if(!unit||/\S/.test(unit)||Array.from(unit).some(e=>e!=unit[0]))throw Error(`Invalid indent unit: `+JSON.stringify(values[0]));return unit}});function getIndentUnit(state$1){let unit=state$1.facet(indentUnit);return unit.charCodeAt(0)==9?state$1.tabSize*unit.length:unit.length}function indentString(state$1,cols){let result=``,ts=state$1.tabSize,ch=state$1.facet(indentUnit)[0];if(ch==` `){for(;cols>=ts;)result+=` `,cols-=ts;ch=` `}for(let i$3=0;i$3<cols;i$3++)result+=ch;return result}function getIndentation(context,pos){context instanceof EditorState&&(context=new IndentContext(context));for(let service of context.state.facet(indentService)){let result=service(context,pos);if(result!==void 0)return result}let tree=syntaxTree(context.state);return tree.length>=pos?syntaxIndentation(context,tree,pos):null}var IndentContext=class{constructor(state$1,options$1={}){this.state=state$1,this.options=options$1,this.unit=getIndentUnit(state$1)}lineAt(pos,bias=1){let line=this.state.doc.lineAt(pos),{simulateBreak,simulateDoubleBreak}=this.options;return simulateBreak!=null&&simulateBreak>=line.from&&simulateBreak<=line.to?simulateDoubleBreak&&simulateBreak==pos?{text:``,from:pos}:(bias<0?simulateBreak<pos:simulateBreak<=pos)?{text:line.text.slice(simulateBreak-line.from),from:simulateBreak}:{text:line.text.slice(0,simulateBreak-line.from),from:line.from}:line}textAfterPos(pos,bias=1){if(this.options.simulateDoubleBreak&&pos==this.options.simulateBreak)return``;let{text:text$5,from}=this.lineAt(pos,bias);return text$5.slice(pos-from,Math.min(text$5.length,pos+100-from))}column(pos,bias=1){let{text:text$5,from}=this.lineAt(pos,bias),result=this.countColumn(text$5,pos-from),override=this.options.overrideIndentation?this.options.overrideIndentation(from):-1;return override>-1&&(result+=override-this.countColumn(text$5,text$5.search(/\S|$/))),result}countColumn(line,pos=line.length){return countColumn(line,this.state.tabSize,pos)}lineIndent(pos,bias=1){let{text:text$5,from}=this.lineAt(pos,bias),override=this.options.overrideIndentation;if(override){let overriden=override(from);if(overriden>-1)return overriden}return this.countColumn(text$5,text$5.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},indentNodeProp=new NodeProp;function syntaxIndentation(cx$1,ast,pos){let stack=ast.resolveStack(pos),inner=ast.resolveInner(pos,-1).resolve(pos,0).enterUnfinishedNodesBefore(pos);if(inner!=stack.node){let add$1=[];for(let cur$1=inner;cur$1&&!(cur$1.from<stack.node.from||cur$1.to>stack.node.to||cur$1.from==stack.node.from&&cur$1.type==stack.node.type);cur$1=cur$1.parent)add$1.push(cur$1);for(let i$3=add$1.length-1;i$3>=0;i$3--)stack={node:add$1[i$3],next:stack}}return indentFor(stack,cx$1,pos)}function indentFor(stack,cx$1,pos){for(let cur$1=stack;cur$1;cur$1=cur$1.next){let strategy=indentStrategy(cur$1.node);if(strategy)return strategy(TreeIndentContext.create(cx$1,pos,cur$1))}return 0}function ignoreClosed(cx$1){return cx$1.pos==cx$1.options.simulateBreak&&cx$1.options.simulateDoubleBreak}function indentStrategy(tree){let strategy=tree.type.prop(indentNodeProp);if(strategy)return strategy;let first=tree.firstChild,close;if(first&&(close=first.type.prop(NodeProp.closedBy))){let last=tree.lastChild,closed=last&&close.indexOf(last.name)>-1;return cx$1=>delimitedStrategy(cx$1,!0,1,void 0,closed&&!ignoreClosed(cx$1)?last.from:void 0)}return tree.parent==null?topIndent:null}function topIndent(){return 0}var TreeIndentContext=class TreeIndentContext extends IndentContext{constructor(base$1,pos,context){super(base$1.state,base$1.options),this.base=base$1,this.pos=pos,this.context=context}get node(){return this.context.node}static create(base$1,pos,context){return new TreeIndentContext(base$1,pos,context)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(node$1){let line=this.state.doc.lineAt(node$1.from);for(;;){let atBreak=node$1.resolve(line.from);for(;atBreak.parent&&atBreak.parent.from==atBreak.from;)atBreak=atBreak.parent;if(isParent(atBreak,node$1))break;line=this.state.doc.lineAt(atBreak.from)}return this.lineIndent(line.from)}continue(){return indentFor(this.context.next,this.base,this.pos)}};function isParent(parent,of){for(let cur$1=of;cur$1;cur$1=cur$1.parent)if(parent==cur$1)return!0;return!1}function bracketedAligned(context){let tree=context.node,openToken=tree.childAfter(tree.from),last=tree.lastChild;if(!openToken)return null;let sim=context.options.simulateBreak,openLine=context.state.doc.lineAt(openToken.from),lineEnd=sim==null||sim<=openLine.from?openLine.to:Math.min(openLine.to,sim);for(let pos=openToken.to;;){let next=tree.childAfter(pos);if(!next||next==last)return null;if(!next.type.isSkipped){if(next.from>=lineEnd)return null;let space$1=/^ */.exec(openLine.text.slice(openToken.to-openLine.from))[0].length;return{from:openToken.from,to:openToken.to+space$1}}pos=next.to}}function delimitedStrategy(context,align,units,closing$2,closedAt){let after=context.textAfter,space$1=after.match(/^\s*/)[0].length,closed=closing$2&&after.slice(space$1,space$1+closing$2.length)==closing$2||closedAt==context.pos+space$1,aligned=align?bracketedAligned(context):null;return aligned?closed?context.column(aligned.from):context.column(aligned.to):context.baseIndent+(closed?0:context.unit*units)}function continuedIndent({except,units=1}={}){return context=>{let matchExcept=except&&except.test(context.textAfter);return context.baseIndent+(matchExcept?0:units*context.unit)}}var foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside(node$1){let first=node$1.firstChild,last=node$1.lastChild;return first&&first.to<last.from?{from:first.to,to:last.type.isError?node$1.to:last.from}:null}function syntaxFolding(state$1,start,end){let tree=syntaxTree(state$1);if(tree.length<end)return null;let stack=tree.resolveStack(end,1),found=null;for(let iter=stack;iter;iter=iter.next){let cur$1=iter.node;if(cur$1.to<=end||cur$1.from>end)continue;if(found&&cur$1.from<start)break;let prop=cur$1.type.prop(foldNodeProp);if(prop&&(cur$1.to<tree.length-50||tree.length==state$1.doc.length||!isUnfinished(cur$1))){let value=prop(cur$1,state$1);value&&value.from<=end&&value.from>=start&&value.to>end&&(found=value)}}return found}function isUnfinished(node$1){let ch=node$1.lastChild;return ch&&ch.to==node$1.to&&ch.type.isError}function foldable(state$1,lineStart,lineEnd){for(let service of state$1.facet(foldService)){let result=service(state$1,lineStart,lineEnd);if(result)return result}return syntaxFolding(state$1,lineStart,lineEnd)}function mapRange(range$1,mapping){let from=mapping.mapPos(range$1.from,1),to=mapping.mapPos(range$1.to,-1);return from>=to?void 0:{from,to}}var foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(view){let lines=[];for(let{head:head$1}of view.state.selection.ranges)lines.some(l$2=>l$2.from<=head$1&&l$2.to>=head$1)||lines.push(view.lineBlockAt(head$1));return lines}var foldState=StateField.define({create(){return Decoration.none},update(folded,tr$1){tr$1.isUserEvent(`delete`)&&tr$1.changes.iterChangedRanges((fromA,toA)=>folded=clearTouchedFolds(folded,fromA,toA)),folded=folded.map(tr$1.changes);for(let e of tr$1.effects)if(e.is(foldEffect)&&!foldExists(folded,e.value.from,e.value.to)){let{preparePlaceholder}=tr$1.state.facet(foldConfig),widget=preparePlaceholder?Decoration.replace({widget:new PreparedFoldWidget(preparePlaceholder(tr$1.state,e.value))}):foldWidget;folded=folded.update({add:[widget.range(e.value.from,e.value.to)]})}else e.is(unfoldEffect)&&(folded=folded.update({filter:(from,to)=>e.value.from!=from||e.value.to!=to,filterFrom:e.value.from,filterTo:e.value.to}));return tr$1.selection&&(folded=clearTouchedFolds(folded,tr$1.selection.main.head)),folded},provide:f$2=>EditorView.decorations.from(f$2),toJSON(folded,state$1){let ranges=[];return folded.between(0,state$1.doc.length,(from,to)=>{ranges.push(from,to)}),ranges},fromJSON(value){if(!Array.isArray(value)||value.length%2)throw RangeError(`Invalid JSON for fold state`);let ranges=[];for(let i$3=0;i$3<value.length;){let from=value[i$3++],to=value[i$3++];if(typeof from!=`number`||typeof to!=`number`)throw RangeError(`Invalid JSON for fold state`);ranges.push(foldWidget.range(from,to))}return Decoration.set(ranges,!0)}});function clearTouchedFolds(folded,from,to=from){let touched=!1;return folded.between(from,to,(a$1,b$2)=>{a$1<to&&b$2>from&&(touched=!0)}),touched?folded.update({filterFrom:from,filterTo:to,filter:(a$1,b$2)=>a$1>=to||b$2<=from}):folded}function foldedRanges(state$1){return state$1.field(foldState,!1)||RangeSet.empty}function findFold(state$1,from,to){var _a$1;let found=null;return(_a$1=state$1.field(foldState,!1))==null||_a$1.between(from,to,(from$1,to$1)=>{(!found||found.from>from$1)&&(found={from:from$1,to:to$1})}),found}function foldExists(folded,from,to){let found=!1;return folded.between(from,from,(a$1,b$2)=>{a$1==from&&b$2==to&&(found=!0)}),found}function maybeEnable(state$1,other){return state$1.field(foldState,!1)?other:other.concat(StateEffect.appendConfig.of(codeFolding()))}var foldCode=view=>{for(let line of selectedLines(view)){let range$1=foldable(view.state,line.from,line.to);if(range$1)return view.dispatch({effects:maybeEnable(view.state,[foldEffect.of(range$1),announceFold(view,range$1)])}),!0}return!1},unfoldCode=view=>{if(!view.state.field(foldState,!1))return!1;let effects=[];for(let line of selectedLines(view)){let folded=findFold(view.state,line.from,line.to);folded&&effects.push(unfoldEffect.of(folded),announceFold(view,folded,!1))}return effects.length&&view.dispatch({effects}),effects.length>0};function announceFold(view,range$1,fold=!0){let lineFrom=view.state.doc.lineAt(range$1.from).number,lineTo=view.state.doc.lineAt(range$1.to).number;return EditorView.announce.of(`${view.state.phrase(fold?`Folded lines`:`Unfolded lines`)} ${lineFrom} ${view.state.phrase(`to`)} ${lineTo}.`)}var foldAll=view=>{let{state:state$1}=view,effects=[];for(let pos=0;pos<state$1.doc.length;){let line=view.lineBlockAt(pos),range$1=foldable(state$1,line.from,line.to);range$1&&effects.push(foldEffect.of(range$1)),pos=(range$1?view.lineBlockAt(range$1.to):line).to+1}return effects.length&&view.dispatch({effects:maybeEnable(view.state,effects)}),!!effects.length},unfoldAll=view=>{let field=view.state.field(foldState,!1);if(!field||!field.size)return!1;let effects=[];return field.between(0,view.state.doc.length,(from,to)=>{effects.push(unfoldEffect.of({from,to}))}),view.dispatch({effects}),!0},foldKeymap=[{key:`Ctrl-Shift-[`,mac:`Cmd-Alt-[`,run:foldCode},{key:`Ctrl-Shift-]`,mac:`Cmd-Alt-]`,run:unfoldCode},{key:`Ctrl-Alt-[`,run:foldAll},{key:`Ctrl-Alt-]`,run:unfoldAll}],defaultConfig={placeholderDOM:null,preparePlaceholder:null,placeholderText:`…`},foldConfig=Facet.define({combine(values){return combineConfig(values,defaultConfig)}});function codeFolding(config$1){let result=[foldState,baseTheme$1$1];return config$1&&result.push(foldConfig.of(config$1)),result}function widgetToDOM(view,prepared){let{state:state$1}=view,conf=state$1.facet(foldConfig),onclick=event=>{let line=view.lineBlockAt(view.posAtDOM(event.target)),folded=findFold(view.state,line.from,line.to);folded&&view.dispatch({effects:unfoldEffect.of(folded)}),event.preventDefault()};if(conf.placeholderDOM)return conf.placeholderDOM(view,onclick,prepared);let element$3=document.createElement(`span`);return element$3.textContent=conf.placeholderText,element$3.setAttribute(`aria-label`,state$1.phrase(`folded code`)),element$3.title=state$1.phrase(`unfold`),element$3.className=`cm-foldPlaceholder`,element$3.onclick=onclick,element$3}var foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(view){return widgetToDOM(view,null)}}}),PreparedFoldWidget=class extends WidgetType{constructor(value){super(),this.value=value}eq(other){return this.value==other.value}toDOM(view){return widgetToDOM(view,this.value)}},baseTheme$1$1=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:`#eee`,border:`1px solid #ddd`,color:`#888`,borderRadius:`.2em`,margin:`0 1px`,padding:`0 1px`,cursor:`pointer`},".cm-foldGutter span":{padding:`0 1px`,cursor:`pointer`}}),HighlightStyle=class HighlightStyle{constructor(specs,options$1){this.specs=specs;let modSpec;function def(spec){let cls=StyleModule.newName();return(modSpec||=Object.create(null))[`.`+cls]=spec,cls}let all$2=typeof options$1.all==`string`?options$1.all:options$1.all?def(options$1.all):void 0,scopeOpt=options$1.scope;this.scope=scopeOpt instanceof Language?type=>type.prop(languageDataProp)==scopeOpt.data:scopeOpt?type=>type==scopeOpt:void 0,this.style=tagHighlighter(specs.map(style$1=>({tag:style$1.tag,class:style$1.class||def(Object.assign({},style$1,{tag:null}))})),{all:all$2}).style,this.module=modSpec?new StyleModule(modSpec):null,this.themeType=options$1.themeType}static define(specs,options$1){return new HighlightStyle(specs,options$1||{})}},highlighterFacet=Facet.define(),fallbackHighlighter=Facet.define({combine(values){return values.length?[values[0]]:null}});function getHighlighters(state$1){let main$1=state$1.facet(highlighterFacet);return main$1.length?main$1:state$1.facet(fallbackHighlighter)}function syntaxHighlighting(highlighter$1,options$1){let ext=[treeHighlighter],themeType;return highlighter$1 instanceof HighlightStyle&&(highlighter$1.module&&ext.push(EditorView.styleModule.of(highlighter$1.module)),themeType=highlighter$1.themeType),options$1?.fallback?ext.push(fallbackHighlighter.of(highlighter$1)):themeType?ext.push(highlighterFacet.computeN([EditorView.darkTheme],state$1=>state$1.facet(EditorView.darkTheme)==(themeType==`dark`)?[highlighter$1]:[])):ext.push(highlighterFacet.of(highlighter$1)),ext}var TreeHighlighter=class{constructor(view){this.markCache=Object.create(null),this.tree=syntaxTree(view.state),this.decorations=this.buildDeco(view,getHighlighters(view.state)),this.decoratedTo=view.viewport.to}update(update$1){let tree=syntaxTree(update$1.state),highlighters=getHighlighters(update$1.state),styleChange=highlighters!=getHighlighters(update$1.startState),{viewport}=update$1.view,decoratedToMapped=update$1.changes.mapPos(this.decoratedTo,1);tree.length<viewport.to&&!styleChange&&tree.type==this.tree.type&&decoratedToMapped>=viewport.to?(this.decorations=this.decorations.map(update$1.changes),this.decoratedTo=decoratedToMapped):(tree!=this.tree||update$1.viewportChanged||styleChange)&&(this.tree=tree,this.decorations=this.buildDeco(update$1.view,highlighters),this.decoratedTo=viewport.to)}buildDeco(view,highlighters){if(!highlighters||!this.tree.length)return Decoration.none;let builder=new RangeSetBuilder;for(let{from,to}of view.visibleRanges)highlightTree(this.tree,highlighters,(from$1,to$1,style$1)=>{builder.add(from$1,to$1,this.markCache[style$1]||(this.markCache[style$1]=Decoration.mark({class:style$1})))},from,to);return builder.finish()}},treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:v$1=>v$1.decorations})),defaultHighlightStyle=HighlightStyle.define([{tag:tags.meta,color:`#404740`},{tag:tags.link,textDecoration:`underline`},{tag:tags.heading,textDecoration:`underline`,fontWeight:`bold`},{tag:tags.emphasis,fontStyle:`italic`},{tag:tags.strong,fontWeight:`bold`},{tag:tags.strikethrough,textDecoration:`line-through`},{tag:tags.keyword,color:`#708`},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:`#219`},{tag:[tags.literal,tags.inserted],color:`#164`},{tag:[tags.string,tags.deleted],color:`#a11`},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:`#e40`},{tag:tags.definition(tags.variableName),color:`#00f`},{tag:tags.local(tags.variableName),color:`#30a`},{tag:[tags.typeName,tags.namespace],color:`#085`},{tag:tags.className,color:`#167`},{tag:[tags.special(tags.variableName),tags.macroName],color:`#256`},{tag:tags.definition(tags.propertyName),color:`#00c`},{tag:tags.comment,color:`#940`},{tag:tags.invalid,color:`#f00`}]),baseTheme$3=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:`#328c8252`},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bb555544`}}),DefaultScanDist=1e4,DefaultBrackets=`()[]{}`,bracketMatchingConfig=Facet.define({combine(configs){return combineConfig(configs,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist,renderMatch:defaultRenderMatch})}}),matchingMark=Decoration.mark({class:`cm-matchingBracket`}),nonmatchingMark=Decoration.mark({class:`cm-nonmatchingBracket`});function defaultRenderMatch(match){let decorations$2=[],mark$1=match.matched?matchingMark:nonmatchingMark;return decorations$2.push(mark$1.range(match.start.from,match.start.to)),match.end&&decorations$2.push(mark$1.range(match.end.from,match.end.to)),decorations$2}var bracketMatchingUnique=[StateField.define({create(){return Decoration.none},update(deco,tr$1){if(!tr$1.docChanged&&!tr$1.selection)return deco;let decorations$2=[],config$1=tr$1.state.facet(bracketMatchingConfig);for(let range$1 of tr$1.state.selection.ranges){if(!range$1.empty)continue;let match=matchBrackets(tr$1.state,range$1.head,-1,config$1)||range$1.head>0&&matchBrackets(tr$1.state,range$1.head-1,1,config$1)||config$1.afterCursor&&(matchBrackets(tr$1.state,range$1.head,1,config$1)||range$1.head<tr$1.state.doc.length&&matchBrackets(tr$1.state,range$1.head+1,-1,config$1));match&&(decorations$2=decorations$2.concat(config$1.renderMatch(match,tr$1.state)))}return Decoration.set(decorations$2,!0)},provide:f$2=>EditorView.decorations.from(f$2)}),baseTheme$3];function bracketMatching(config$1={}){return[bracketMatchingConfig.of(config$1),bracketMatchingUnique]}var bracketMatchingHandle=new NodeProp;function matchingNodes(node$1,dir,brackets){let byProp=node$1.prop(dir<0?NodeProp.openedBy:NodeProp.closedBy);if(byProp)return byProp;if(node$1.name.length==1){let index$4=brackets.indexOf(node$1.name);if(index$4>-1&&index$4%2==(dir<0?1:0))return[brackets[index$4+dir]]}return null}function findHandle(node$1){let hasHandle=node$1.type.prop(bracketMatchingHandle);return hasHandle?hasHandle(node$1.node):node$1}function matchBrackets(state$1,pos,dir,config$1={}){let maxScanDistance=config$1.maxScanDistance||DefaultScanDist,brackets=config$1.brackets||DefaultBrackets,tree=syntaxTree(state$1),node$1=tree.resolveInner(pos,dir);for(let cur$1=node$1;cur$1;cur$1=cur$1.parent){let matches$2=matchingNodes(cur$1.type,dir,brackets);if(matches$2&&cur$1.from<cur$1.to){let handle$1=findHandle(cur$1);if(handle$1&&(dir>0?pos>=handle$1.from&&pos<handle$1.to:pos>handle$1.from&&pos<=handle$1.to))return matchMarkedBrackets(state$1,pos,dir,cur$1,handle$1,matches$2,brackets)}}return matchPlainBrackets(state$1,pos,dir,tree,node$1.type,maxScanDistance,brackets)}function matchMarkedBrackets(_state,_pos,dir,token$1,handle$1,matching,brackets){let parent=token$1.parent,firstToken={from:handle$1.from,to:handle$1.to},depth=0,cursor=parent?.cursor();if(cursor&&(dir<0?cursor.childBefore(token$1.from):cursor.childAfter(token$1.to)))do if(dir<0?cursor.to<=token$1.from:cursor.from>=token$1.to){if(depth==0&&matching.indexOf(cursor.type.name)>-1&&cursor.from<cursor.to){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle?{from:endHandle.from,to:endHandle.to}:void 0,matched:!0}}else if(matchingNodes(cursor.type,dir,brackets))depth++;else if(matchingNodes(cursor.type,-dir,brackets)){if(depth==0){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle&&endHandle.from<endHandle.to?{from:endHandle.from,to:endHandle.to}:void 0,matched:!1}}depth--}}while(dir<0?cursor.prevSibling():cursor.nextSibling());return{start:firstToken,matched:!1}}function matchPlainBrackets(state$1,pos,dir,tree,tokenType,maxScanDistance,brackets){let startCh=dir<0?state$1.sliceDoc(pos-1,pos):state$1.sliceDoc(pos,pos+1),bracket$1=brackets.indexOf(startCh);if(bracket$1<0||bracket$1%2==0!=dir>0)return null;let startToken={from:dir<0?pos-1:pos,to:dir>0?pos+1:pos},iter=state$1.doc.iterRange(pos,dir>0?state$1.doc.length:0),depth=0;for(let distance=0;!iter.next().done&&distance<=maxScanDistance;){let text$5=iter.value;dir<0&&(distance+=text$5.length);let basePos=pos+distance*dir;for(let pos$1=dir>0?0:text$5.length-1,end=dir>0?text$5.length:-1;pos$1!=end;pos$1+=dir){let found=brackets.indexOf(text$5[pos$1]);if(!(found<0||tree.resolveInner(basePos+pos$1,1).type!=tokenType))if(found%2==0==dir>0)depth++;else if(depth==1)return{start:startToken,end:{from:basePos+pos$1,to:basePos+pos$1+1},matched:found>>1==bracket$1>>1};else depth--}dir>0&&(distance+=text$5.length)}return iter.done?{start:startToken,matched:!1}:null}var noTokens=Object.create(null),typeArray=[NodeType.none],warned=[],byTag=Object.create(null),defaultTable=Object.create(null);for(let[legacyName,name$2]of[[`variable`,`variableName`],[`variable-2`,`variableName.special`],[`string-2`,`string.special`],[`def`,`variableName.definition`],[`tag`,`tagName`],[`attribute`,`attributeName`],[`type`,`typeName`],[`builtin`,`variableName.standard`],[`qualifier`,`modifier`],[`error`,`invalid`],[`header`,`heading`],[`property`,`propertyName`]])defaultTable[legacyName]=createTokenType(noTokens,name$2);function warnForPart(part,msg){warned.indexOf(part)>-1||(warned.push(part),console.warn(msg))}function createTokenType(extra,tagStr){let tags$1=[];for(let name$3 of tagStr.split(` `)){let found=[];for(let part of name$3.split(`.`)){let value=extra[part]||tags[part];value?typeof value==`function`?found.length?found=found.map(value):warnForPart(part,`Modifier ${part} used at start of tag`):found.length?warnForPart(part,`Tag ${part} used as modifier`):found=Array.isArray(value)?value:[value]:warnForPart(part,`Unknown highlighting tag ${part}`)}for(let tag of found)tags$1.push(tag)}if(!tags$1.length)return 0;let name$2=tagStr.replace(/ /g,`_`),key$1=name$2+` `+tags$1.map(t$1=>t$1.id),known=byTag[key$1];if(known)return known.id;let type=byTag[key$1]=NodeType.define({id:typeArray.length,name:name$2,props:[styleTags({[name$2]:tags$1})]});return typeArray.push(type),type.id}var marks={rtl:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`rtl`},bidiIsolate:Direction.RTL}),ltr:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`ltr`},bidiIsolate:Direction.LTR}),auto:Decoration.mark({class:`cm-iso`,inclusive:!0,attributes:{dir:`auto`},bidiIsolate:null})},CompletionContext=class{constructor(state$1,pos,explicit,view){this.state=state$1,this.pos=pos,this.explicit=explicit,this.view=view,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(types$1){let token$1=syntaxTree(this.state).resolveInner(this.pos,-1);for(;token$1&&types$1.indexOf(token$1.name)<0;)token$1=token$1.parent;return token$1?{from:token$1.from,to:this.pos,text:this.state.sliceDoc(token$1.from,this.pos),type:token$1.type}:null}matchBefore(expr){let line=this.state.doc.lineAt(this.pos),start=Math.max(line.from,this.pos-250),str=line.text.slice(start-line.from,this.pos-line.from),found=str.search(ensureAnchor(expr,!1));return found<0?null:{from:start+found,to:this.pos,text:str.slice(found)}}get aborted(){return this.abortListeners==null}addEventListener(type,listener,options$1){type==`abort`&&this.abortListeners&&(this.abortListeners.push(listener),options$1&&options$1.onDocChange&&(this.abortOnDocChange=!0))}};function toSet(chars){let flat=Object.keys(chars).join(``),words=/\w/.test(flat);return words&&(flat=flat.replace(/\w/g,``)),`[${words?`\\w`:``}${flat.replace(/[^\w\s]/g,`\\$&`)}]`}function prefixMatch(options$1){let first=Object.create(null),rest=Object.create(null);for(let{label}of options$1){first[label[0]]=!0;for(let i$3=1;i$3<label.length;i$3++)rest[label[i$3]]=!0}let source=toSet(first)+toSet(rest)+`*$`;return[RegExp(`^`+source),new RegExp(source)]}function completeFromList(list$2){let options$1=list$2.map(o$2=>typeof o$2==`string`?{label:o$2}:o$2),[validFor,match]=options$1.every(o$2=>/^\w+$/.test(o$2.label))?[/\w*$/,/\w+$/]:prefixMatch(options$1);return context=>{let token$1=context.matchBefore(match);return token$1||context.explicit?{from:token$1?token$1.from:context.pos,options:options$1,validFor}:null}}var Option=class{constructor(completion,source,match,score$1){this.completion=completion,this.source=source,this.match=match,this.score=score$1}};function cur(state$1){return state$1.selection.main.from}function ensureAnchor(expr,start){var _a$1;let{source}=expr,addStart=start&&source[0]!=`^`,addEnd=source[source.length-1]!=`$`;return!addStart&&!addEnd?expr:RegExp(`${addStart?`^`:``}(?:${source})${addEnd?`$`:``}`,expr.flags??(expr.ignoreCase?`i`:``))}var pickedCompletion=Annotation.define();function insertCompletionText(state$1,text$5,from,to){let{main:main$1}=state$1.selection,fromOff=from-main$1.from,toOff=to-main$1.from;return{...state$1.changeByRange(range$1=>{if(range$1!=main$1&&from!=to&&state$1.sliceDoc(range$1.from+fromOff,range$1.from+toOff)!=state$1.sliceDoc(from,to))return{range:range$1};let lines=state$1.toText(text$5);return{changes:{from:range$1.from+fromOff,to:to==main$1.from?range$1.to:range$1.from+toOff,insert:lines},range:EditorSelection.cursor(range$1.from+fromOff+lines.length)}}),scrollIntoView:!0,userEvent:`input.complete`}}var SourceCache=new WeakMap;function asSource(source){if(!Array.isArray(source))return source;let known=SourceCache.get(source);return known||SourceCache.set(source,known=completeFromList(source)),known}var startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),FuzzyMatcher=class{constructor(pattern){this.pattern=pattern,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let p$1=0;p$1<pattern.length;){let char=codePointAt(pattern,p$1),size$3=codePointSize(char);this.chars.push(char);let part=pattern.slice(p$1,p$1+size$3),upper=part.toUpperCase();this.folded.push(codePointAt(upper==part?part.toLowerCase():upper,0)),p$1+=size$3}this.astral=pattern.length!=this.chars.length}ret(score$1,matched){return this.score=score$1,this.matched=matched,this}match(word){if(this.pattern.length==0)return this.ret(-100,[]);if(word.length<this.pattern.length)return null;let{chars,folded,any,precise,byWord}=this;if(chars.length==1){let first=codePointAt(word,0),firstSize=codePointSize(first),score$1=firstSize==word.length?0:-100;if(first!=chars[0])if(first==folded[0])score$1+=-200;else return null;return this.ret(score$1,[0,firstSize])}let direct=word.indexOf(this.pattern);if(direct==0)return this.ret(word.length==this.pattern.length?0:-100,[0,this.pattern.length]);let len=chars.length,anyTo=0;if(direct<0){for(let i$3=0,e=Math.min(word.length,200);i$3<e&&anyTo<len;){let next=codePointAt(word,i$3);(next==chars[anyTo]||next==folded[anyTo])&&(any[anyTo++]=i$3),i$3+=codePointSize(next)}if(anyTo<len)return null}let preciseTo=0,byWordTo=0,byWordFolded=!1,adjacentTo=0,adjacentStart=-1,adjacentEnd=-1,hasLower=/[a-z]/.test(word),wordAdjacent=!0;for(let i$3=0,e=Math.min(word.length,200),prevType=0;i$3<e&&byWordTo<len;){let next=codePointAt(word,i$3);direct<0&&(preciseTo<len&&next==chars[preciseTo]&&(precise[preciseTo++]=i$3),adjacentTo<len&&(next==chars[adjacentTo]||next==folded[adjacentTo]?(adjacentTo==0&&(adjacentStart=i$3),adjacentEnd=i$3+1,adjacentTo++):adjacentTo=0));let ch,type=next<255?next>=48&&next<=57||next>=97&&next<=122?2:next>=65&&next<=90?1:0:(ch=fromCodePoint(next))==ch.toLowerCase()?ch==ch.toUpperCase()?0:2:1;(!i$3||type==1&&hasLower||prevType==0&&type!=0)&&(chars[byWordTo]==next||folded[byWordTo]==next&&(byWordFolded=!0)?byWord[byWordTo++]=i$3:byWord.length&&(wordAdjacent=!1)),prevType=type,i$3+=codePointSize(next)}return byWordTo==len&&byWord[0]==0&&wordAdjacent?this.result(-100+(byWordFolded?-200:0),byWord,word):adjacentTo==len&&adjacentStart==0?this.ret(-200-word.length+(adjacentEnd==word.length?0:-100),[0,adjacentEnd]):direct>-1?this.ret(-700-word.length,[direct,direct+this.pattern.length]):adjacentTo==len?this.ret(-900-word.length,[adjacentStart,adjacentEnd]):byWordTo==len?this.result(-100+(byWordFolded?-200:0)+-700+(wordAdjacent?0:-1100),byWord,word):chars.length==2?null:this.result((any[0]?-700:0)+-200+-1100,any,word)}result(score$1,positions,word){let result=[],i$3=0;for(let pos of positions){let to=pos+(this.astral?codePointSize(codePointAt(word,pos)):1);i$3&&result[i$3-1]==pos?result[i$3-1]=to:(result[i$3++]=pos,result[i$3++]=to)}return this.ret(score$1-word.length,result)}},StrictMatcher=class{constructor(pattern){this.pattern=pattern,this.matched=[],this.score=0,this.folded=pattern.toLowerCase()}match(word){if(word.length<this.pattern.length)return null;let start=word.slice(0,this.pattern.length),match=start==this.pattern?0:start.toLowerCase()==this.folded?-200:null;return match==null?null:(this.matched=[0,start.length],this.score=match+(word.length==this.pattern.length?0:-100),this)}},completionConfig=Facet.define({combine(configs){return combineConfig(configs,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>``,optionClass:()=>``,aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:defaultPositionInfo,filterStrict:!1,compareCompletions:(a$1,b$2)=>(a$1.sortText||a$1.label).localeCompare(b$2.sortText||b$2.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(a$1,b$2)=>a$1&&b$2,closeOnBlur:(a$1,b$2)=>a$1&&b$2,icons:(a$1,b$2)=>a$1&&b$2,tooltipClass:(a$1,b$2)=>c=>joinClass(a$1(c),b$2(c)),optionClass:(a$1,b$2)=>c=>joinClass(a$1(c),b$2(c)),addToOptions:(a$1,b$2)=>a$1.concat(b$2),filterStrict:(a$1,b$2)=>a$1||b$2})}});function joinClass(a$1,b$2){return a$1?b$2?a$1+` `+b$2:a$1:b$2}function defaultPositionInfo(view,list$2,option$1,info,space$1,tooltip){let rtl=view.textDirection==Direction.RTL,left=rtl,narrow=!1,side=`top`,offset$3,maxWidth,spaceLeft=list$2.left-space$1.left,spaceRight=space$1.right-list$2.right,infoWidth=info.right-info.left,infoHeight=info.bottom-info.top;if(left&&spaceLeft<Math.min(infoWidth,spaceRight)?left=!1:!left&&spaceRight<Math.min(infoWidth,spaceLeft)&&(left=!0),infoWidth<=(left?spaceLeft:spaceRight))offset$3=Math.max(space$1.top,Math.min(option$1.top,space$1.bottom-infoHeight))-list$2.top,maxWidth=Math.min(400,left?spaceLeft:spaceRight);else{narrow=!0,maxWidth=Math.min(400,(rtl?list$2.right:space$1.right-list$2.left)-30);let spaceBelow=space$1.bottom-list$2.bottom;spaceBelow>=infoHeight||spaceBelow>list$2.top?offset$3=option$1.bottom-list$2.top:(side=`bottom`,offset$3=list$2.bottom-option$1.top)}let scaleY=(list$2.bottom-list$2.top)/tooltip.offsetHeight,scaleX=(list$2.right-list$2.left)/tooltip.offsetWidth;return{style:`${side}: ${offset$3/scaleY}px; max-width: ${maxWidth/scaleX}px`,class:`cm-completionInfo-`+(narrow?rtl?`left-narrow`:`right-narrow`:left?`left`:`right`)}}function optionContent(config$1){let content$3=config$1.addToOptions.slice();return config$1.icons&&content$3.push({render(completion){let icon=document.createElement(`div`);return icon.classList.add(`cm-completionIcon`),completion.type&&icon.classList.add(...completion.type.split(/\s+/g).map(cls=>`cm-completionIcon-`+cls)),icon.setAttribute(`aria-hidden`,`true`),icon},position:20}),content$3.push({render(completion,_s,_v,match){let labelElt=document.createElement(`span`);labelElt.className=`cm-completionLabel`;let label=completion.displayLabel||completion.label,off=0;for(let j$1=0;j$1<match.length;){let from=match[j$1++],to=match[j$1++];from>off&&labelElt.appendChild(document.createTextNode(label.slice(off,from)));let span=labelElt.appendChild(document.createElement(`span`));span.appendChild(document.createTextNode(label.slice(from,to))),span.className=`cm-completionMatchedText`,off=to}return off<label.length&&labelElt.appendChild(document.createTextNode(label.slice(off))),labelElt},position:50},{render(completion){if(!completion.detail)return null;let detailElt=document.createElement(`span`);return detailElt.className=`cm-completionDetail`,detailElt.textContent=completion.detail,detailElt},position:80}),content$3.sort((a$1,b$2)=>a$1.position-b$2.position).map(a$1=>a$1.render)}function rangeAroundSelected(total,selected,max$1){if(total<=max$1)return{from:0,to:total};if(selected<0&&(selected=0),selected<=total>>1){let off$1=Math.floor(selected/max$1);return{from:off$1*max$1,to:(off$1+1)*max$1}}let off=Math.floor((total-selected)/max$1);return{from:total-(off+1)*max$1,to:total-off*max$1}}var CompletionTooltip=class{constructor(view,stateField,applyCompletion$1){this.view=view,this.stateField=stateField,this.applyCompletion=applyCompletion$1,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:pos=>this.placeInfo(pos),key:this},this.space=null,this.currentClass=``;let cState=view.state.field(stateField),{options:options$1,selected}=cState.open,config$1=view.state.facet(completionConfig);this.optionContent=optionContent(config$1),this.optionClass=config$1.optionClass,this.tooltipClass=config$1.tooltipClass,this.range=rangeAroundSelected(options$1.length,selected,config$1.maxRenderedOptions),this.dom=document.createElement(`div`),this.dom.className=`cm-tooltip-autocomplete`,this.updateTooltipClass(view.state),this.dom.addEventListener(`mousedown`,e=>{let{options:options$2}=view.state.field(stateField).open;for(let dom=e.target,match;dom&&dom!=this.dom;dom=dom.parentNode)if(dom.nodeName==`LI`&&(match=/-(\d+)$/.exec(dom.id))&&+match[1]<options$2.length){this.applyCompletion(view,options$2[+match[1]]),e.preventDefault();return}}),this.dom.addEventListener(`focusout`,e=>{let state$1=view.state.field(this.stateField,!1);state$1&&state$1.tooltip&&view.state.facet(completionConfig).closeOnBlur&&e.relatedTarget!=view.contentDOM&&view.dispatch({effects:closeCompletionEffect.of(null)})}),this.showOptions(options$1,cState.id)}mount(){this.updateSel()}showOptions(options$1,id){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(options$1,id,this.range)),this.list.addEventListener(`scroll`,()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(update$1){var _a$1;let cState=update$1.state.field(this.stateField),prevState=update$1.startState.field(this.stateField);if(this.updateTooltipClass(update$1.state),cState!=prevState){let{options:options$1,selected,disabled:disabled$1}=cState.open;(!prevState.open||prevState.open.options!=options$1)&&(this.range=rangeAroundSelected(options$1.length,selected,update$1.state.facet(completionConfig).maxRenderedOptions),this.showOptions(options$1,cState.id)),this.updateSel(),disabled$1!=prevState.open?.disabled&&this.dom.classList.toggle(`cm-tooltip-autocomplete-disabled`,!!disabled$1)}}updateTooltipClass(state$1){let cls=this.tooltipClass(state$1);if(cls!=this.currentClass){for(let c of this.currentClass.split(` `))c&&this.dom.classList.remove(c);for(let c of cls.split(` `))c&&this.dom.classList.add(c);this.currentClass=cls}}positioned(space$1){this.space=space$1,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let cState=this.view.state.field(this.stateField),open=cState.open;(open.selected>-1&&open.selected<this.range.from||open.selected>=this.range.to)&&(this.range=rangeAroundSelected(open.options.length,open.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.showOptions(open.options,cState.id));let newSel=this.updateSelectedOption(open.selected);if(newSel){this.destroyInfo();let{completion}=open.options[open.selected],{info}=completion;if(!info)return;let infoResult=typeof info==`string`?document.createTextNode(info):info(completion);if(!infoResult)return;`then`in infoResult?infoResult.then(obj=>{obj&&this.view.state.field(this.stateField,!1)==cState&&this.addInfoPane(obj,completion)}).catch(e=>logException(this.view.state,e,`completion info`)):(this.addInfoPane(infoResult,completion),newSel.setAttribute(`aria-describedby`,this.info.id))}}addInfoPane(content$3,completion){this.destroyInfo();let wrap$2=this.info=document.createElement(`div`);if(wrap$2.className=`cm-tooltip cm-completionInfo`,wrap$2.id=`cm-completionInfo-`+Math.floor(Math.random()*65535).toString(16),content$3.nodeType!=null)wrap$2.appendChild(content$3),this.infoDestroy=null;else{let{dom,destroy}=content$3;wrap$2.appendChild(dom),this.infoDestroy=destroy||null}this.dom.appendChild(wrap$2),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(selected){let set=null;for(let opt=this.list.firstChild,i$3=this.range.from;opt;opt=opt.nextSibling,i$3++)opt.nodeName!=`LI`||!opt.id?i$3--:i$3==selected?opt.hasAttribute(`aria-selected`)||(opt.setAttribute(`aria-selected`,`true`),set=opt):opt.hasAttribute(`aria-selected`)&&(opt.removeAttribute(`aria-selected`),opt.removeAttribute(`aria-describedby`));return set&&scrollIntoView(this.list,set),set}measureInfo(){let sel=this.dom.querySelector(`[aria-selected]`);if(!sel||!this.info)return null;let listRect=this.dom.getBoundingClientRect(),infoRect=this.info.getBoundingClientRect(),selRect=sel.getBoundingClientRect(),space$1=this.space;if(!space$1){let docElt=this.dom.ownerDocument.documentElement;space$1={left:0,top:0,right:docElt.clientWidth,bottom:docElt.clientHeight}}return selRect.top>Math.min(space$1.bottom,listRect.bottom)-10||selRect.bottom<Math.max(space$1.top,listRect.top)+10?null:this.view.state.facet(completionConfig).positionInfo(this.view,listRect,selRect,infoRect,space$1,this.dom)}placeInfo(pos){this.info&&(pos?(pos.style&&(this.info.style.cssText=pos.style),this.info.className=`cm-tooltip cm-completionInfo `+(pos.class||``)):this.info.style.cssText=`top: -1e6px`)}createListBox(options$1,id,range$1){let ul=document.createElement(`ul`);ul.id=id,ul.setAttribute(`role`,`listbox`),ul.setAttribute(`aria-expanded`,`true`),ul.setAttribute(`aria-label`,this.view.state.phrase(`Completions`)),ul.addEventListener(`mousedown`,e=>{e.target==ul&&e.preventDefault()});let curSection=null;for(let i$3=range$1.from;i$3<range$1.to;i$3++){let{completion,match}=options$1[i$3],{section}=completion;if(section){let name$2=typeof section==`string`?section:section.name;if(name$2!=curSection&&(i$3>range$1.from||range$1.from==0))if(curSection=name$2,typeof section!=`string`&&section.header)ul.appendChild(section.header(section));else{let header=ul.appendChild(document.createElement(`completion-section`));header.textContent=name$2}}let li$1=ul.appendChild(document.createElement(`li`));li$1.id=id+`-`+i$3,li$1.setAttribute(`role`,`option`);let cls=this.optionClass(completion);cls&&(li$1.className=cls);for(let source of this.optionContent){let node$1=source(completion,this.view.state,this.view,match);node$1&&li$1.appendChild(node$1)}}return range$1.from&&ul.classList.add(`cm-completionListIncompleteTop`),range$1.to<options$1.length&&ul.classList.add(`cm-completionListIncompleteBottom`),ul}destroyInfo(){this.info&&=(this.infoDestroy&&this.infoDestroy(),this.info.remove(),null)}destroy(){this.destroyInfo()}};function completionTooltip(stateField,applyCompletion$1){return view=>new CompletionTooltip(view,stateField,applyCompletion$1)}function scrollIntoView(container,element$3){let parent=container.getBoundingClientRect(),self$1=element$3.getBoundingClientRect(),scaleY=parent.height/container.offsetHeight;self$1.top<parent.top?container.scrollTop-=(parent.top-self$1.top)/scaleY:self$1.bottom>parent.bottom&&(container.scrollTop+=(self$1.bottom-parent.bottom)/scaleY)}function score(option$1){return(option$1.boost||0)*100+(option$1.apply?10:0)+(option$1.info?5:0)+(option$1.type?1:0)}function sortOptions(active,state$1){let options$1=[],sections=null,dynamicSectionScore=null,addOption=option$1=>{options$1.push(option$1);let{section}=option$1.completion;if(section){sections||=[];let name$2=typeof section==`string`?section:section.name;sections.some(s$1=>s$1.name==name$2)||sections.push(typeof section==`string`?{name:name$2}:section)}},conf=state$1.facet(completionConfig);for(let a$1 of active)if(a$1.hasResult()){let getMatch=a$1.result.getMatch;if(a$1.result.filter===!1)for(let option$1 of a$1.result.options)addOption(new Option(option$1,a$1.source,getMatch?getMatch(option$1):[],1e9-options$1.length));else{let pattern=state$1.sliceDoc(a$1.from,a$1.to),match,matcher=conf.filterStrict?new StrictMatcher(pattern):new FuzzyMatcher(pattern);for(let option$1 of a$1.result.options)if(match=matcher.match(option$1.label)){let matched=option$1.displayLabel?getMatch?getMatch(option$1,match.matched):[]:match.matched,score$1=match.score+(option$1.boost||0);if(addOption(new Option(option$1,a$1.source,matched,score$1)),typeof option$1.section==`object`&&option$1.section.rank===`dynamic`){let{name:name$2}=option$1.section;dynamicSectionScore||=Object.create(null),dynamicSectionScore[name$2]=Math.max(score$1,dynamicSectionScore[name$2]||-1e9)}}}}if(sections){let sectionOrder=Object.create(null),pos=0,cmp=(a$1,b$2)=>(a$1.rank===`dynamic`&&b$2.rank===`dynamic`?dynamicSectionScore[b$2.name]-dynamicSectionScore[a$1.name]:0)||(typeof a$1.rank==`number`?a$1.rank:1e9)-(typeof b$2.rank==`number`?b$2.rank:1e9)||(a$1.name<b$2.name?-1:1);for(let s$1 of sections.sort(cmp))pos-=1e5,sectionOrder[s$1.name]=pos;for(let option$1 of options$1){let{section}=option$1.completion;section&&(option$1.score+=sectionOrder[typeof section==`string`?section:section.name])}}let result=[],prev=null,compare$2=conf.compareCompletions;for(let opt of options$1.sort((a$1,b$2)=>b$2.score-a$1.score||compare$2(a$1.completion,b$2.completion))){let cur$1=opt.completion;!prev||prev.label!=cur$1.label||prev.detail!=cur$1.detail||prev.type!=null&&cur$1.type!=null&&prev.type!=cur$1.type||prev.apply!=cur$1.apply||prev.boost!=cur$1.boost?result.push(opt):score(opt.completion)>score(prev)&&(result[result.length-1]=opt),prev=opt.completion}return result}var CompletionDialog=class CompletionDialog{constructor(options$1,attrs,tooltip,timestamp,selected,disabled$1){this.options=options$1,this.attrs=attrs,this.tooltip=tooltip,this.timestamp=timestamp,this.selected=selected,this.disabled=disabled$1}setSelected(selected,id){return selected==this.selected||selected>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(id,selected),this.tooltip,this.timestamp,selected,this.disabled)}static build(active,state$1,id,prev,conf,didSetActive){if(prev&&!didSetActive&&active.some(s$1=>s$1.isPending))return prev.setDisabled();let options$1=sortOptions(active,state$1);if(!options$1.length)return prev&&active.some(a$1=>a$1.isPending)?prev.setDisabled():null;let selected=state$1.facet(completionConfig).selectOnOpen?0:-1;if(prev&&prev.selected!=selected&&prev.selected!=-1){let selectedValue=prev.options[prev.selected].completion;for(let i$3=0;i$3<options$1.length;i$3++)if(options$1[i$3].completion==selectedValue){selected=i$3;break}}return new CompletionDialog(options$1,makeAttrs(id,selected),{pos:active.reduce((a$1,b$2)=>b$2.hasResult()?Math.min(a$1,b$2.from):a$1,1e8),create:createTooltip,above:conf.aboveCursor},prev?prev.timestamp:Date.now(),selected,!1)}map(changes){return new CompletionDialog(this.options,this.attrs,{...this.tooltip,pos:changes.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new CompletionDialog(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}},CompletionState=class CompletionState{constructor(active,id,open){this.active=active,this.id=id,this.open=open}static start(){return new CompletionState(none$1,`cm-ac-`+Math.floor(Math.random()*2e6).toString(36),null)}update(tr$1){let{state:state$1}=tr$1,conf=state$1.facet(completionConfig),active=(conf.override||state$1.languageDataAt(`autocomplete`,cur(state$1)).map(asSource)).map(source=>(this.active.find(s$1=>s$1.source==source)||new ActiveSource(source,this.active.some(a$1=>a$1.state!=0)?1:0)).update(tr$1,conf));active.length==this.active.length&&active.every((a$1,i$3)=>a$1==this.active[i$3])&&(active=this.active);let open=this.open,didSet=tr$1.effects.some(e=>e.is(setActiveEffect));open&&tr$1.docChanged&&(open=open.map(tr$1.changes)),tr$1.selection||active.some(a$1=>a$1.hasResult()&&tr$1.changes.touchesRange(a$1.from,a$1.to))||!sameResults(active,this.active)||didSet?open=CompletionDialog.build(active,state$1,this.id,open,conf,didSet):open&&open.disabled&&!active.some(a$1=>a$1.isPending)&&(open=null),!open&&active.every(a$1=>!a$1.isPending)&&active.some(a$1=>a$1.hasResult())&&(active=active.map(a$1=>a$1.hasResult()?new ActiveSource(a$1.source,0):a$1));for(let effect of tr$1.effects)effect.is(setSelectedEffect)&&(open&&=open.setSelected(effect.value,this.id));return active==this.active&&open==this.open?this:new CompletionState(active,this.id,open)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?baseAttrs:noAttrs}};function sameResults(a$1,b$2){if(a$1==b$2)return!0;for(let iA=0,iB=0;;){for(;iA<a$1.length&&!a$1[iA].hasResult();)iA++;for(;iB<b$2.length&&!b$2[iB].hasResult();)iB++;let endA=iA==a$1.length,endB=iB==b$2.length;if(endA||endB)return endA==endB;if(a$1[iA++].result!=b$2[iB++].result)return!1}}var baseAttrs={"aria-autocomplete":`list`},noAttrs={};function makeAttrs(id,selected){let result={"aria-autocomplete":`list`,"aria-haspopup":`listbox`,"aria-controls":id};return selected>-1&&(result[`aria-activedescendant`]=id+`-`+selected),result}var none$1=[];function getUpdateType(tr$1,conf){if(tr$1.isUserEvent(`input.complete`)){let completion=tr$1.annotation(pickedCompletion);if(completion&&conf.activateOnCompletion(completion))return 12}let typing=tr$1.isUserEvent(`input.type`);return typing&&conf.activateOnTyping?5:typing?1:tr$1.isUserEvent(`delete.backward`)?2:tr$1.selection?8:tr$1.docChanged?16:0}var ActiveSource=class ActiveSource{constructor(source,state$1,explicit=!1){this.source=source,this.state=state$1,this.explicit=explicit}hasResult(){return!1}get isPending(){return this.state==1}update(tr$1,conf){let type=getUpdateType(tr$1,conf),value=this;(type&8||type&16&&this.touches(tr$1))&&(value=new ActiveSource(value.source,0)),type&4&&value.state==0&&(value=new ActiveSource(this.source,1)),value=value.updateFor(tr$1,type);for(let effect of tr$1.effects)if(effect.is(startCompletionEffect))value=new ActiveSource(value.source,1,effect.value);else if(effect.is(closeCompletionEffect))value=new ActiveSource(value.source,0);else if(effect.is(setActiveEffect))for(let active of effect.value)active.source==value.source&&(value=active);return value}updateFor(tr$1,type){return this.map(tr$1.changes)}map(changes){return this}touches(tr$1){return tr$1.changes.touchesRange(cur(tr$1.state))}},ActiveResult=class ActiveResult extends ActiveSource{constructor(source,explicit,limit,result,from,to){super(source,3,explicit),this.limit=limit,this.result=result,this.from=from,this.to=to}hasResult(){return!0}updateFor(tr$1,type){var _a$1;if(!(type&3))return this.map(tr$1.changes);let result=this.result;result.map&&!tr$1.changes.empty&&(result=result.map(result,tr$1.changes));let from=tr$1.changes.mapPos(this.from),to=tr$1.changes.mapPos(this.to,1),pos=cur(tr$1.state);if(pos>to||!result||type&2&&(cur(tr$1.startState)==this.from||pos<this.limit))return new ActiveSource(this.source,type&4?1:0);let limit=tr$1.changes.mapPos(this.limit);return checkValid(result.validFor,tr$1.state,from,to)?new ActiveResult(this.source,this.explicit,limit,result,from,to):result.update&&(result=result.update(result,from,to,new CompletionContext(tr$1.state,pos,!1)))?new ActiveResult(this.source,this.explicit,limit,result,result.from,result.to??cur(tr$1.state)):new ActiveSource(this.source,1,this.explicit)}map(mapping){return mapping.empty?this:(this.result.map?this.result.map(this.result,mapping):this.result)?new ActiveResult(this.source,this.explicit,mapping.mapPos(this.limit),this.result,mapping.mapPos(this.from),mapping.mapPos(this.to,1)):new ActiveSource(this.source,0)}touches(tr$1){return tr$1.changes.touchesRange(this.from,this.to)}};function checkValid(validFor,state$1,from,to){if(!validFor)return!1;let text$5=state$1.sliceDoc(from,to);return typeof validFor==`function`?validFor(text$5,from,to,state$1):ensureAnchor(validFor,!0).test(text$5)}var setActiveEffect=StateEffect.define({map(sources,mapping){return sources.map(s$1=>s$1.map(mapping))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(value,tr$1){return value.update(tr$1)},provide:f$2=>[showTooltip.from(f$2,val=>val.tooltip),EditorView.contentAttributes.from(f$2,state$1=>state$1.attrs)]});function applyCompletion(view,option$1){let apply=option$1.completion.apply||option$1.completion.label,result=view.state.field(completionState).active.find(a$1=>a$1.source==option$1.source);return result instanceof ActiveResult?(typeof apply==`string`?view.dispatch({...insertCompletionText(view.state,apply,result.from,result.to),annotations:pickedCompletion.of(option$1.completion)}):apply(view,option$1.completion,result.from,result.to),!0):!1}var createTooltip=completionTooltip(completionState,applyCompletion);function moveCompletionSelection(forward,by=`option`){return view=>{let cState=view.state.field(completionState,!1);if(!cState||!cState.open||cState.open.disabled||Date.now()-cState.open.timestamp<view.state.facet(completionConfig).interactionDelay)return!1;let step=1,tooltip;by==`page`&&(tooltip=getTooltip(view,cState.open.tooltip))&&(step=Math.max(2,Math.floor(tooltip.dom.offsetHeight/tooltip.dom.querySelector(`li`).offsetHeight)-1));let{length}=cState.open.options,selected=cState.open.selected>-1?cState.open.selected+step*(forward?1:-1):forward?0:length-1;return selected<0?selected=by==`page`?0:length-1:selected>=length&&(selected=by==`page`?length-1:0),view.dispatch({effects:setSelectedEffect.of(selected)}),!0}}var acceptCompletion=view=>{let cState=view.state.field(completionState,!1);return view.state.readOnly||!cState||!cState.open||cState.open.selected<0||cState.open.disabled||Date.now()-cState.open.timestamp<view.state.facet(completionConfig).interactionDelay?!1:applyCompletion(view,cState.open.options[cState.open.selected])},startCompletion=view=>view.state.field(completionState,!1)?(view.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=view=>{let cState=view.state.field(completionState,!1);return!cState||!cState.active.some(a$1=>a$1.state!=0)?!1:(view.dispatch({effects:closeCompletionEffect.of(null)}),!0)},RunningQuery=class{constructor(active,context){this.active=active,this.context=context,this.time=Date.now(),this.updates=[],this.done=void 0}},MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let active of view.state.field(completionState).active)active.isPending&&this.startQuery(active)}update(update$1){let cState=update$1.state.field(completionState),conf=update$1.state.facet(completionConfig);if(!update$1.selectionSet&&!update$1.docChanged&&update$1.startState.field(completionState)==cState)return;let doesReset=update$1.transactions.some(tr$1=>{let type=getUpdateType(tr$1,conf);return type&8||(tr$1.selection||tr$1.docChanged)&&!(type&3)});for(let i$3=0;i$3<this.running.length;i$3++){let query=this.running[i$3];if(doesReset||query.context.abortOnDocChange&&update$1.docChanged||query.updates.length+update$1.transactions.length>MaxUpdateCount&&Date.now()-query.time>MinAbortTime){for(let handler of query.context.abortListeners)try{handler()}catch(e){logException(this.view.state,e)}query.context.abortListeners=null,this.running.splice(i$3--,1)}else query.updates.push(...update$1.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),update$1.transactions.some(tr$1=>tr$1.effects.some(e=>e.is(startCompletionEffect)))&&(this.pendingStart=!0);let delay=this.pendingStart?50:conf.activateOnTypingDelay;if(this.debounceUpdate=cState.active.some(a$1=>a$1.isPending&&!this.running.some(q$1=>q$1.active.source==a$1.source))?setTimeout(()=>this.startUpdate(),delay):-1,this.composing!=0)for(let tr$1 of update$1.transactions)tr$1.isUserEvent(`input.type`)?this.composing=2:this.composing==2&&tr$1.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:state$1}=this.view,cState=state$1.field(completionState);for(let active of cState.active)active.isPending&&!this.running.some(r$4=>r$4.active.source==active.source)&&this.startQuery(active);this.running.length&&cState.open&&cState.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime))}startQuery(active){let{state:state$1}=this.view,context=new CompletionContext(state$1,cur(state$1),active.explicit,this.view),pending=new RunningQuery(active,context);this.running.push(pending),Promise.resolve(active.source(context)).then(result=>{pending.context.aborted||(pending.done=result||null,this.scheduleAccept())},err=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,err)})}scheduleAccept(){this.running.every(q$1=>q$1.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime))}accept(){var _a$1;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let updated=[],conf=this.view.state.facet(completionConfig),cState=this.view.state.field(completionState);for(let i$3=0;i$3<this.running.length;i$3++){let query=this.running[i$3];if(query.done===void 0)continue;if(this.running.splice(i$3--,1),query.done){let pos=cur(query.updates.length?query.updates[0].startState:this.view.state),limit=Math.min(pos,query.done.from+(query.active.explicit?0:1)),active=new ActiveResult(query.active.source,query.active.explicit,limit,query.done,query.done.from,query.done.to??pos);for(let tr$1 of query.updates)active=active.update(tr$1,conf);if(active.hasResult()){updated.push(active);continue}}let current=cState.active.find(a$1=>a$1.source==query.active.source);if(current&&current.isPending)if(query.done==null){let active=new ActiveSource(query.active.source,0);for(let tr$1 of query.updates)active=active.update(tr$1,conf);active.isPending||updated.push(active)}else this.startQuery(current)}(updated.length||cState.open&&cState.open.disabled)&&this.view.dispatch({effects:setActiveEffect.of(updated)})}},{eventHandlers:{blur(event){let state$1=this.view.state.field(completionState,!1);if(state$1&&state$1.tooltip&&this.view.state.facet(completionConfig).closeOnBlur){let dialog=state$1.open&&getTooltip(this.view,state$1.open.tooltip);(!dialog||!dialog.dom.contains(event.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:closeCompletionEffect.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),windows=typeof navigator==`object`&&/Win/.test(navigator.platform),commitCharacters=Prec.highest(EditorView.domEventHandlers({keydown(event,view){let field=view.state.field(completionState,!1);if(!field||!field.open||field.open.disabled||field.open.selected<0||event.key.length>1||event.ctrlKey&&!(windows&&event.altKey)||event.metaKey)return!1;let option$1=field.open.options[field.open.selected],result=field.active.find(a$1=>a$1.source==option$1.source),commitChars=option$1.completion.commitCharacters||result.result.commitCharacters;return commitChars&&commitChars.indexOf(event.key)>-1&&applyCompletion(view,option$1),!1}})),baseTheme$2=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:`monospace`,whiteSpace:`nowrap`,overflow:`hidden auto`,maxWidth_fallback:`700px`,maxWidth:`min(700px, 95vw)`,minWidth:`250px`,maxHeight:`10em`,height:`100%`,listStyle:`none`,margin:0,padding:0,"& > li, & > completion-section":{padding:`1px 3px`,lineHeight:1.2},"& > li":{overflowX:`hidden`,textOverflow:`ellipsis`,cursor:`pointer`},"& > completion-section":{display:`list-item`,borderBottom:`1px solid silver`,paddingLeft:`0.5em`,opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#17c`,color:`white`},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#777`},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:`#347`,color:`white`},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:`#444`},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:`"···"`,opacity:.5,display:`block`,textAlign:`center`},".cm-tooltip.cm-completionInfo":{position:`absolute`,padding:`3px 9px`,width:`max-content`,maxWidth:`400px`,boxSizing:`border-box`,whiteSpace:`pre-line`},".cm-completionInfo.cm-completionInfo-left":{right:`100%`},".cm-completionInfo.cm-completionInfo-right":{left:`100%`},".cm-completionInfo.cm-completionInfo-left-narrow":{right:`30px`},".cm-completionInfo.cm-completionInfo-right-narrow":{left:`30px`},"&light .cm-snippetField":{backgroundColor:`#00000022`},"&dark .cm-snippetField":{backgroundColor:`#ffffff22`},".cm-snippetFieldPosition":{verticalAlign:`text-top`,width:0,height:`1.15em`,display:`inline-block`,margin:`0 -0.7px -.7em`,borderLeft:`1.4px dotted #888`},".cm-completionMatchedText":{textDecoration:`underline`},".cm-completionDetail":{marginLeft:`0.5em`,fontStyle:`italic`},".cm-completionIcon":{fontSize:`90%`,width:`.8em`,display:`inline-block`,textAlign:`center`,paddingRight:`.6em`,opacity:`0.6`,boxSizing:`content-box`},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:`'ƒ'`}},".cm-completionIcon-class":{"&:after":{content:`'○'`}},".cm-completionIcon-interface":{"&:after":{content:`'◌'`}},".cm-completionIcon-variable":{"&:after":{content:`'𝑥'`}},".cm-completionIcon-constant":{"&:after":{content:`'𝐶'`}},".cm-completionIcon-type":{"&:after":{content:`'𝑡'`}},".cm-completionIcon-enum":{"&:after":{content:`'∪'`}},".cm-completionIcon-property":{"&:after":{content:`'□'`}},".cm-completionIcon-keyword":{"&:after":{content:`'🔑︎'`}},".cm-completionIcon-namespace":{"&:after":{content:`'▢'`}},".cm-completionIcon-text":{"&:after":{content:`'abc'`,fontSize:`50%`,verticalAlign:`middle`}}}),defaults={brackets:[`(`,`[`,`{`,`'`,`"`],before:`)]}:;>`,stringPrefixes:[]},closeBracketEffect=StateEffect.define({map(value,mapping){return mapping.mapPos(value,-1,MapMode.TrackAfter)??void 0}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1,closedBracket.endSide=-1;var bracketState=StateField.define({create(){return RangeSet.empty},update(value,tr$1){if(value=value.map(tr$1.changes),tr$1.selection){let line=tr$1.state.doc.lineAt(tr$1.selection.main.head);value=value.update({filter:from=>from>=line.from&&from<=line.to})}for(let effect of tr$1.effects)effect.is(closeBracketEffect)&&(value=value.update({add:[closedBracket.range(effect.value,effect.value+1)]}));return value}});function closeBrackets(){return[inputHandler,bracketState]}var definedClosing=`()[]{}<>«»»«[]{}`;function closing$1(ch){for(let i$3=0;i$3<16;i$3+=2)if(definedClosing.charCodeAt(i$3)==ch)return definedClosing.charAt(i$3+1);return fromCodePoint(ch<128?ch:ch+1)}function config(state$1,pos){return state$1.languageDataAt(`closeBrackets`,pos)[0]||defaults}var android=typeof navigator==`object`&&/Android\b/.test(navigator.userAgent),inputHandler=EditorView.inputHandler.of((view,from,to,insert$1)=>{if((android?view.composing:view.compositionStarted)||view.state.readOnly)return!1;let sel=view.state.selection.main;if(insert$1.length>2||insert$1.length==2&&codePointSize(codePointAt(insert$1,0))==1||from!=sel.from||to!=sel.to)return!1;let tr$1=insertBracket(view.state,insert$1);return tr$1?(view.dispatch(tr$1),!0):!1});function insertBracket(state$1,bracket$1){let conf=config(state$1,state$1.selection.main.head),tokens=conf.brackets||defaults.brackets;for(let tok of tokens){let closed=closing$1(codePointAt(tok,0));if(bracket$1==tok)return closed==tok?handleSame(state$1,tok,tokens.indexOf(tok+tok+tok)>-1,conf):handleOpen(state$1,tok,closed,conf.before||defaults.before);if(bracket$1==closed&&closedBracketAt(state$1,state$1.selection.main.from))return handleClose(state$1,tok,closed)}return null}function closedBracketAt(state$1,pos){let found=!1;return state$1.field(bracketState).between(0,state$1.doc.length,from=>{from==pos&&(found=!0)}),found}function nextChar(doc$1,pos){let next=doc$1.sliceString(pos,pos+2);return next.slice(0,codePointSize(codePointAt(next,0)))}function handleOpen(state$1,open,close,closeBefore){let dont=null,changes=state$1.changeByRange(range$1=>{if(!range$1.empty)return{changes:[{insert:open,from:range$1.from},{insert:close,from:range$1.to}],effects:closeBracketEffect.of(range$1.to+open.length),range:EditorSelection.range(range$1.anchor+open.length,range$1.head+open.length)};let next=nextChar(state$1.doc,range$1.head);return!next||/\s/.test(next)||closeBefore.indexOf(next)>-1?{changes:{insert:open+close,from:range$1.head},effects:closeBracketEffect.of(range$1.head+open.length),range:EditorSelection.cursor(range$1.head+open.length)}:{range:dont=range$1}});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function handleClose(state$1,_open,close){let dont=null,changes=state$1.changeByRange(range$1=>range$1.empty&&nextChar(state$1.doc,range$1.head)==close?{changes:{from:range$1.head,to:range$1.head+close.length,insert:close},range:EditorSelection.cursor(range$1.head+close.length)}:dont={range:range$1});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function handleSame(state$1,token$1,allowTriple,config$1){let stringPrefixes=config$1.stringPrefixes||defaults.stringPrefixes,dont=null,changes=state$1.changeByRange(range$1=>{if(!range$1.empty)return{changes:[{insert:token$1,from:range$1.from},{insert:token$1,from:range$1.to}],effects:closeBracketEffect.of(range$1.to+token$1.length),range:EditorSelection.range(range$1.anchor+token$1.length,range$1.head+token$1.length)};let pos=range$1.head,next=nextChar(state$1.doc,pos),start;if(next==token$1){if(nodeStart(state$1,pos))return{changes:{insert:token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};if(closedBracketAt(state$1,pos)){let content$3=allowTriple&&state$1.sliceDoc(pos,pos+token$1.length*3)==token$1+token$1+token$1?token$1+token$1+token$1:token$1;return{changes:{from:pos,to:pos+content$3.length,insert:content$3},range:EditorSelection.cursor(pos+content$3.length)}}}else if(allowTriple&&state$1.sliceDoc(pos-2*token$1.length,pos)==token$1+token$1&&(start=canStartStringAt(state$1,pos-2*token$1.length,stringPrefixes))>-1&&nodeStart(state$1,start))return{changes:{insert:token$1+token$1+token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};else if(state$1.charCategorizer(pos)(next)!=CharCategory.Word&&canStartStringAt(state$1,pos,stringPrefixes)>-1&&!probablyInString(state$1,pos,token$1,stringPrefixes))return{changes:{insert:token$1+token$1,from:pos},effects:closeBracketEffect.of(pos+token$1.length),range:EditorSelection.cursor(pos+token$1.length)};return{range:dont=range$1}});return dont?null:state$1.update(changes,{scrollIntoView:!0,userEvent:`input.type`})}function nodeStart(state$1,pos){let tree=syntaxTree(state$1).resolveInner(pos+1);return tree.parent&&tree.from==pos}function probablyInString(state$1,pos,quoteToken,prefixes){let node$1=syntaxTree(state$1).resolveInner(pos,-1),maxPrefix=prefixes.reduce((m$2,p$1)=>Math.max(m$2,p$1.length),0);for(let i$3=0;i$3<5;i$3++){let start=state$1.sliceDoc(node$1.from,Math.min(node$1.to,node$1.from+quoteToken.length+maxPrefix)),quotePos=start.indexOf(quoteToken);if(!quotePos||quotePos>-1&&prefixes.indexOf(start.slice(0,quotePos))>-1){let first=node$1.firstChild;for(;first&&first.from==node$1.from&&first.to-first.from>quoteToken.length+quotePos;){if(state$1.sliceDoc(first.to-quoteToken.length,first.to)==quoteToken)return!1;first=first.firstChild}return!0}let parent=node$1.to==pos&&node$1.parent;if(!parent)break;node$1=parent}return!1}function canStartStringAt(state$1,pos,prefixes){let charCat=state$1.charCategorizer(pos);if(charCat(state$1.sliceDoc(pos-1,pos))!=CharCategory.Word)return pos;for(let prefix$1 of prefixes){let start=pos-prefix$1.length;if(state$1.sliceDoc(start,pos)==prefix$1&&charCat(state$1.sliceDoc(start-1,start))!=CharCategory.Word)return start}return-1}function autocompletion(config$1={}){return[commitCharacters,completionState,completionConfig.of(config$1),completionPlugin,completionKeymapExt,baseTheme$2]}var completionKeymap=[{key:`Ctrl-Space`,run:startCompletion},{mac:"Alt-`",run:startCompletion},{mac:`Alt-i`,run:startCompletion},{key:`Escape`,run:closeCompletion},{key:`ArrowDown`,run:moveCompletionSelection(!0)},{key:`ArrowUp`,run:moveCompletionSelection(!1)},{key:`PageDown`,run:moveCompletionSelection(!0,`page`)},{key:`PageUp`,run:moveCompletionSelection(!1,`page`)},{key:`Enter`,run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],state$1=>state$1.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),state={connectionId:null,selectedSchema:null,selectedTable:null,schemas:new Map,columns:new Map,isLoaded:!1};const schemaStore={setConnection(connectionId){state.connectionId!==connectionId&&(state.connectionId=connectionId,state.schemas.clear(),state.columns.clear(),state.isLoaded=!1)},setSelectedSchema(schema){state.selectedSchema=schema},setSelectedTable(table$1){state.selectedTable=table$1},setSchemas(schemaNames){for(let name$2 of schemaNames)state.schemas.has(name$2)||state.schemas.set(name$2,{tables:[],functions:[]})},setTables(schema,tables){let schemaData=state.schemas.get(schema)||{tables:[],functions:[]};schemaData.tables=tables.map(t$1=>({name:t$1.name,schema,type:t$1.type})),state.schemas.set(schema,schemaData)},setFunctions(schema,functions,kind){let schemaData=state.schemas.get(schema)||{tables:[],functions:[]},newFunctions=functions.map(f$2=>({name:f$2.name,schema,arguments:f$2.arguments,returnType:f$2.returnType,kind}));schemaData.functions=[...schemaData.functions.filter(f$2=>f$2.kind!==kind),...newFunctions],state.schemas.set(schema,schemaData)},setColumns(schema,table$1,columns){state.columns.set(`${schema}.${table$1}`,columns)},setLoaded(loaded){state.isLoaded=loaded},getConnectionId(){return state.connectionId},getSelectedSchema(){return state.selectedSchema},getSelectedTable(){return state.selectedTable},getSchemas(){return Array.from(state.schemas.keys())},getTables(schema){if(schema)return state.schemas.get(schema)?.tables||[];let allTables=[];for(let schemaData of state.schemas.values())allTables.push(...schemaData.tables);return allTables},getFunctions(schema){if(schema)return state.schemas.get(schema)?.functions||[];let allFunctions=[];for(let schemaData of state.schemas.values())allFunctions.push(...schemaData.functions);return allFunctions},getTableByName(name$2){if(state.selectedSchema){let table$1=state.schemas.get(state.selectedSchema)?.tables.find(t$1=>t$1.name===name$2);if(table$1)return table$1}for(let schemaData of state.schemas.values()){let table$1=schemaData.tables.find(t$1=>t$1.name===name$2);if(table$1)return table$1}return null},getColumns(schema,table$1){return state.columns.get(`${schema}.${table$1}`)||null},isDefaultSchema(schema){return schema===state.selectedSchema},isLoaded(){return state.isLoaded}};var ICON_ELEMENTS={table:[{tag:`rect`,attrs:{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}},{tag:`path`,attrs:{d:`M3 9h18`}},{tag:`path`,attrs:{d:`M3 15h18`}},{tag:`path`,attrs:{d:`M9 3v18`}},{tag:`path`,attrs:{d:`M15 3v18`}}],view:[{tag:`path`,attrs:{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`}},{tag:`circle`,attrs:{cx:`12`,cy:`12`,r:`3`}}],column:[{tag:`path`,attrs:{d:`M21 8a2 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.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}},{tag:`path`,attrs:{d:`m3.3 7 8.7 5 8.7-5`}},{tag:`path`,attrs:{d:`M12 22V12`}}],function:[{tag:`rect`,attrs:{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`}},{tag:`path`,attrs:{d:`M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3`}},{tag:`path`,attrs:{d:`M9 11.2h5.7`}}],procedure:[{tag:`path`,attrs:{d:`m16 18 6-6-6-6`}},{tag:`path`,attrs:{d:`m8 6-6 6 6 6`}}],keyword:[{tag:`line`,attrs:{x1:`4`,x2:`20`,y1:`9`,y2:`9`}},{tag:`line`,attrs:{x1:`4`,x2:`20`,y1:`15`,y2:`15`}},{tag:`line`,attrs:{x1:`10`,x2:`8`,y1:`3`,y2:`21`}},{tag:`line`,attrs:{x1:`16`,x2:`14`,y1:`3`,y2:`21`}}]},ICON_COLORS={table:`#c4a000`,view:`#4a90d9`,column:`#6b7280`,function:`#a855f7`,procedure:`#14b8a6`,keyword:`#6b7280`};function createIconElement$1(type){let span=document.createElement(`span`);span.style.display=`inline-flex`,span.style.alignItems=`center`,span.style.marginRight=`6px`,span.style.verticalAlign=`middle`;let svg$3=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);svg$3.setAttribute(`width`,`14`),svg$3.setAttribute(`height`,`14`),svg$3.setAttribute(`viewBox`,`0 0 24 24`),svg$3.setAttribute(`fill`,`none`),svg$3.setAttribute(`stroke`,ICON_COLORS[type]||`#6b7280`),svg$3.setAttribute(`stroke-width`,`2`),svg$3.setAttribute(`stroke-linecap`,`round`),svg$3.setAttribute(`stroke-linejoin`,`round`),svg$3.style.display=`block`;let elements=ICON_ELEMENTS[type]||ICON_ELEMENTS.keyword;for(let el of elements){let node$1=document.createElementNS(`http://www.w3.org/2000/svg`,el.tag);for(let[key$1,value]of Object.entries(el.attrs))node$1.setAttribute(key$1,value);svg$3.appendChild(node$1)}return span.appendChild(svg$3),span}var ICON_TYPE_MAP={table:`table`,view:`view`,column:`column`,function:`function`,procedure:`procedure`,keyword:`keyword`,cte:`table`,alias:`column`,schema:`table`,operator:`keyword`},CODEMIRROR_TYPE_MAP={table:`variable`,view:`class`,column:`property`,function:`function`,procedure:`method`,keyword:`keyword`,cte:`variable`,alias:`property`,schema:`namespace`,operator:`keyword`},currentMatchText=``;function getHighlightIndices(label,matchText){if(!matchText)return[];let labelLower=label.toLowerCase(),matchLower=matchText.toLowerCase();if(labelLower.startsWith(matchLower))return Array.from({length:matchText.length},(_$2,i$3)=>i$3);let containsIndex=labelLower.indexOf(matchLower);if(containsIndex!==-1)return Array.from({length:matchText.length},(_$2,i$3)=>containsIndex+i$3);let indices=[],matchIdx=0;for(let i$3=0;i$3<label.length&&matchIdx<matchText.length;i$3++)labelLower[i$3]===matchLower[matchIdx]&&(indices.push(i$3),matchIdx++);return indices}function createHighlightedLabel(label,matchText){let span=document.createElement(`span`);span.className=`cm-completionLabel-highlighted`;let highlightIndices=new Set(getHighlightIndices(label,matchText));if(highlightIndices.size===0)return span.textContent=label,span;let i$3=0;for(;i$3<label.length;)if(highlightIndices.has(i$3)){let highlightSpan=document.createElement(`span`);highlightSpan.className=`cm-completionMatchedText`;let highlightText=``;for(;i$3<label.length&&highlightIndices.has(i$3);)highlightText+=label[i$3],i$3++;highlightSpan.textContent=highlightText,span.appendChild(highlightSpan)}else{let normalText=``;for(;i$3<label.length&&!highlightIndices.has(i$3);)normalText+=label[i$3],i$3++;span.appendChild(document.createTextNode(normalText))}return span}function extractAliasMap(sql){let aliases$1=new Map,asPattern=/\b(\w+)\s+AS\s+(\w+)\b/gi,match;for(;(match=asPattern.exec(sql))!==null;)aliases$1.set(match[2].toLowerCase(),match[1]);let tableAliasPattern=/\b(?:FROM|JOIN)\s+(\w+)\s+(\w+)(?!\s*(?:ON|WHERE|LEFT|RIGHT|INNER|OUTER|FULL|CROSS|JOIN|AS|,|\())|\b(?:FROM|JOIN)\s+(\w+)\.(\w+)\s+(\w+)(?!\s*(?:ON|WHERE|LEFT|RIGHT|INNER|OUTER|FULL|CROSS|JOIN|AS|,|\())/gi;for(;(match=tableAliasPattern.exec(sql))!==null;)if(match[1]&&match[2]){let maybeAlias=match[2].toUpperCase();[`WHERE`,`ON`,`AND`,`OR`,`ORDER`,`GROUP`,`HAVING`,`LIMIT`,`OFFSET`,`LEFT`,`RIGHT`,`INNER`,`FULL`,`CROSS`,`JOIN`,`SET`,`VALUES`].includes(maybeAlias)||aliases$1.set(match[2].toLowerCase(),match[1])}else if(match[3]&&match[4]&&match[5]){let maybeAlias=match[5].toUpperCase();[`WHERE`,`ON`,`AND`,`OR`,`ORDER`,`GROUP`,`HAVING`,`LIMIT`,`OFFSET`,`LEFT`,`RIGHT`,`INNER`,`FULL`,`CROSS`,`JOIN`,`SET`,`VALUES`].includes(maybeAlias)||aliases$1.set(match[5].toLowerCase(),match[4])}return aliases$1}function resolveTableAlias(sql,alias){return extractAliasMap(sql).get(alias.toLowerCase())||null}async function ensureColumns(schema,table$1){let connectionId=schemaStore.getConnectionId();if(connectionId&&!schemaStore.getColumns(schema,table$1))try{let response=await queryClient$1.getColumns({connectionId,schema,table:table$1});schemaStore.setColumns(schema,table$1,response.columns)}catch{}}function buildSchema(){let tables=schemaStore.getTables(),functions=schemaStore.getFunctions(),selectedTable=schemaStore.getSelectedTable();return{defaultSchema:schemaStore.getSelectedSchema()||`public`,tables:tables.map(t$1=>({schema:t$1.schema,name:t$1.name,type:t$1.type,columns:(schemaStore.getColumns(t$1.schema,t$1.name)||[]).map(c=>({name:c.name,type:c.type,nullable:c.nullable,isPrimaryKey:!1,isForeignKey:!1}))})),functions:functions.map(f$2=>({schema:f$2.schema,name:f$2.name,signature:f$2.arguments,returnType:f$2.returnType||``,kind:f$2.kind})),selectedTable:selectedTable?{schema:selectedTable.schema,name:selectedTable.name}:void 0}}function createFunctionInfoElement(name$2,source){let container=document.createElement(`div`);container.className=`cm-function-info`;let argsString=``,returnType=``,description=``;if(source===`system`){let fn=PG_SYSTEM_FUNCTIONS.find(f$2=>f$2.name===name$2);fn?.signatures[0]&&(argsString=fn.signatures[0].args,returnType=fn.signatures[0].returnType),description=fn?.description||``}else{let fn=schemaStore.getFunctions().find(f$2=>f$2.name.toLowerCase()===name$2.toLowerCase());argsString=fn?.arguments||``,returnType=fn?.returnType||``}let sigLine=document.createElement(`div`);sigLine.className=`cm-function-info-signature`;let nameSpan=document.createElement(`span`);nameSpan.className=`cm-function-info-name`,nameSpan.textContent=name$2,sigLine.appendChild(nameSpan);let argsSpan=document.createElement(`span`);if(argsSpan.className=`cm-function-info-args-inline`,argsSpan.textContent=`(${argsString})`,sigLine.appendChild(argsSpan),returnType){let returnSpan=document.createElement(`span`);returnSpan.className=`cm-function-info-return`,returnSpan.textContent=` → ${returnType}`,sigLine.appendChild(returnSpan)}if(container.appendChild(sigLine),description){let descDiv=document.createElement(`div`);descDiv.className=`cm-function-info-description`,descDiv.textContent=description,container.appendChild(descDiv)}return container}function toCompletion(suggestion){let completion={label:suggestion.value,type:CODEMIRROR_TYPE_MAP[suggestion.type]??`keyword`,detail:suggestion.detail,boost:suggestion.score};if(suggestion.type===`function`||suggestion.insertText&&suggestion.insertText.endsWith(`(`)?completion.apply=(view,_completion,from,to)=>{let insertText=suggestion.value+`()`;view.dispatch({changes:{from,to,insert:insertText},selection:{anchor:from+suggestion.value.length+1}})}:suggestion.insertText&&(completion.apply=suggestion.insertText),suggestion.type===`function`){let source=suggestion.source===`system`?`system`:`schema`;completion.info=()=>createFunctionInfoElement(suggestion.value,source)}return completion}function wrapWithRetrigger(completion){let originalApply=completion.apply;return{...completion,apply:(view,comp,from,to)=>{if(typeof originalApply==`function`)originalApply(view,comp,from,to);else{let text$5=originalApply??completion.label;view.dispatch({changes:{from,to,insert:text$5},selection:{anchor:from+text$5.length}})}setTimeout(()=>startCompletion(view),10)}}}function hasQualifierDot(completion){let apply=completion.apply;return typeof apply==`string`?apply.endsWith(`.`):!1}function wrapCompletionsForRetrigger(completions,_section){return completions.map(c=>c.type===`keyword`&&RETRIGGER_KEYWORDS.has(c.label)||(c.type===`variable`||c.type===`class`)&&hasQualifierDot(c)?wrapWithRetrigger(c):c)}var COLUMN_FETCH_SECTIONS=new Set([`SELECT_COLUMNS`,`WHERE_CONDITION`,`JOIN_CONDITION`,`GROUP_BY`,`ORDER_BY`,`HAVING`,`UPDATE_SET`]);async function pgCompletionSource(ctx){let fullSql=ctx.state.doc.toString(),cursor=ctx.pos,{statementSql,statementCursor}=extractCurrentStatement(tokenize$2(fullSql,cursor),fullSql,cursor),word=ctx.matchBefore(/[\w.]*/);if(!word&&!ctx.explicit)return null;let{context}=autocomplete(statementSql,statementCursor,buildSchema()),tables=schemaStore.getTables(),defaultSchema=schemaStore.getSelectedSchema();if(context.tablePrefix){let tableName=context.tablePrefix,resolved=resolveTableAlias(statementSql,tableName);resolved&&(tableName=resolved);let table$1=tables.find(t$1=>t$1.name.toLowerCase()===tableName.toLowerCase());table$1&&await ensureColumns(table$1.schema,table$1.name)}else if(COLUMN_FETCH_SECTIONS.has(context.section)){let selectedTable=schemaStore.getSelectedTable(),fetchPromises=[];selectedTable&&!schemaStore.getColumns(selectedTable.schema,selectedTable.name)&&await ensureColumns(selectedTable.schema,selectedTable.name);let defaultSchemaTables=tables.filter(t$1=>t$1.schema===defaultSchema);for(let table$1 of defaultSchemaTables.slice(0,15))schemaStore.getColumns(table$1.schema,table$1.name)||fetchPromises.push(ensureColumns(table$1.schema,table$1.name));let otherSchemaTables=tables.filter(t$1=>t$1.schema!==defaultSchema);for(let table$1 of otherSchemaTables.slice(0,10))schemaStore.getColumns(table$1.schema,table$1.name)||fetchPromises.push(ensureColumns(table$1.schema,table$1.name));fetchPromises.length>0&&await Promise.race([Promise.all(fetchPromises),new Promise(resolve=>setTimeout(resolve,1e3))])}let updatedResult=autocomplete(statementSql,statementCursor,buildSchema());if(updatedResult.context.section===`STATEMENT_START`&&!updatedResult.context.partialToken&&!ctx.explicit||updatedResult.suggestions.length===0)return null;let typedText=word?.text||``,dotIndex=typedText.lastIndexOf(`.`),matchText=context.tablePrefix?(dotIndex>=0?typedText.slice(dotIndex+1):typedText).toLowerCase():typedText.toLowerCase();currentMatchText=matchText;let filteredSuggestions=updatedResult.suggestions;matchText&&(filteredSuggestions=filteredSuggestions.filter(s$1=>isMatch(s$1.value,matchText)).sort((a$1,b$2)=>b$2.score-a$1.score));let completions=filteredSuggestions.map(toCompletion);completions=wrapCompletionsForRetrigger(completions,updatedResult.context.section);let from=word?.from??cursor;if(context.tablePrefix&&word){let dotIndex$1=typedText.lastIndexOf(`.`);dotIndex$1>=0&&(from=word.from+dotIndex$1+1)}return{from,options:completions,filter:!1}}function pgAutocomplete(){return[autocompletion({override:[pgCompletionSource],activateOnTyping:!0,maxRenderedOptions:50,icons:!1,addToOptions:[{render:completion=>{let cmType=completion.type??`keyword`,iconType=Object.entries(CODEMIRROR_TYPE_MAP).find(([,v$1])=>v$1===cmType)?.[0];return createIconElement$1(ICON_TYPE_MAP[iconType??`keyword`]??`keyword`)},position:20},{render:completion=>createHighlightedLabel(completion.label,currentMatchText),position:49}]})]}var NON_FUNCTION_KEYWORDS=new Set([`IF`,`IN`,`CASE`,`WHEN`,`THEN`,`ELSE`,`END`,`AND`,`OR`,`NOT`]);function getFunctionContext(doc$1,cursor){let parenDepth=0,argIndex=0,openParenPos=-1,inString=null;for(let i$3=cursor-1;i$3>=0;i$3--){let char=doc$1[i$3],prevChar=i$3>0?doc$1[i$3-1]:``;if((char===`'`||char===`"`)&&prevChar!==`\\`){inString===char?inString=null:inString||=char;continue}if(!inString){if(char===`)`)parenDepth++;else if(char===`(`){if(parenDepth===0){openParenPos=i$3;break}parenDepth--}else if(char===`,`&&parenDepth===0)argIndex++;else if(char===`;`)break}}if(openParenPos===-1)return null;let nameEnd=openParenPos,nameStart=nameEnd;for(;nameStart>0&&/\s/.test(doc$1[nameStart-1]);)nameStart--,nameEnd=nameStart;for(;nameStart>0&&/[\w_]/.test(doc$1[nameStart-1]);)nameStart--;if(nameStart===nameEnd)return null;let name$2=doc$1.slice(nameStart,nameEnd);return!/^[a-zA-Z_]\w*$/.test(name$2)||NON_FUNCTION_KEYWORDS.has(name$2.toUpperCase())?null:{name:name$2,startPos:openParenPos,argIndex}}function getFunctionSignature(name$2){return schemaStore.getFunctions().find(f$2=>f$2.name.toLowerCase()===name$2.toLowerCase())?.arguments}function parseSignatureArgs(signature){if(!signature)return[];let args=[],current=``,parenDepth=0;for(let char of signature)char===`(`?(parenDepth++,current+=char):char===`)`?(parenDepth--,current+=char):char===`,`&&parenDepth===0?(current.trim()&&args.push(current.trim()),current=``):current+=char;return current.trim()&&args.push(current.trim()),args}function createSignatureTooltip(context){let container=document.createElement(`div`);container.className=`cm-signature-help`;let signature=getFunctionSignature(context.name);if(!signature)return container;let sigLine=document.createElement(`div`);sigLine.className=`cm-signature-help-signature`;let nameSpan=document.createElement(`span`);return nameSpan.className=`cm-signature-help-name`,nameSpan.textContent=context.name,sigLine.appendChild(nameSpan),sigLine.appendChild(document.createTextNode(`(`)),parseSignatureArgs(signature).forEach((arg,i$3)=>{i$3>0&&sigLine.appendChild(document.createTextNode(`, `));let argSpan=document.createElement(`span`);argSpan.className=i$3===context.argIndex?`cm-signature-help-arg cm-signature-help-arg-active`:`cm-signature-help-arg`,argSpan.textContent=arg,sigLine.appendChild(argSpan)}),sigLine.appendChild(document.createTextNode(`)`)),container.appendChild(sigLine),container}var signatureHelpState=StateField.define({create:()=>null,update(value,tr$1){return tr$1.docChanged||tr$1.selection?getFunctionContext(tr$1.state.doc.toString(),tr$1.state.selection.main.head):value}}),signatureHelpTooltip=StateField.define({create:()=>[],update(_$2,tr$1){let context=tr$1.state.field(signatureHelpState);return!context||!getFunctionSignature(context.name)?[]:[{pos:context.startPos+1,above:!0,strictSide:!0,arrow:!1,create:()=>({dom:createSignatureTooltip(context)})}]},provide:f$2=>showTooltip.computeN([f$2],state$1=>state$1.field(f$2))});function pgSignatureHelp(){return[signatureHelpState,signatureHelpTooltip]}var SelectedDiagnostic=class{constructor(from,to,diagnostic){this.from=from,this.to=to,this.diagnostic=diagnostic}},LintState=class LintState{constructor(diagnostics,panel,selected){this.diagnostics=diagnostics,this.panel=panel,this.selected=selected}static init(diagnostics,panel,state$1){let diagnosticFilter=state$1.facet(lintConfig).markerFilter;diagnosticFilter&&(diagnostics=diagnosticFilter(diagnostics,state$1));let sorted=diagnostics.slice().sort((a$1,b$2)=>a$1.from-b$2.from||a$1.to-b$2.to),deco=new RangeSetBuilder,active=[],pos=0,scan$1=state$1.doc.iter(),scanPos=0,docLen=state$1.doc.length;for(let i$3=0;;){let next=i$3==sorted.length?null:sorted[i$3];if(!next&&!active.length)break;let from,to;if(active.length)from=pos,to=active.reduce((p$1,d$1)=>Math.min(p$1,d$1.to),next&&next.from>from?next.from:1e8);else{if(from=next.from,from>docLen)break;to=next.to,active.push(next),i$3++}for(;i$3<sorted.length;){let next$1=sorted[i$3];if(next$1.from==from&&(next$1.to>next$1.from||next$1.to==from))active.push(next$1),i$3++,to=Math.min(next$1.to,to);else{to=Math.min(next$1.from,to);break}}to=Math.min(to,docLen);let widget=!1;if(active.some(d$1=>d$1.from==from&&(d$1.to==to||to==docLen))&&(widget=from==to,!widget&&to-from<10)){let behind=from-(scanPos+scan$1.value.length);behind>0&&(scan$1.next(behind),scanPos=from);for(let check=from;;){if(check>=to){widget=!0;break}if(!scan$1.lineBreak&&scanPos+scan$1.value.length>check)break;check=scanPos+scan$1.value.length,scanPos+=scan$1.value.length,scan$1.next()}}let sev=maxSeverity(active);if(widget)deco.add(from,from,Decoration.widget({widget:new DiagnosticWidget(sev),diagnostics:active.slice()}));else{let markClass=active.reduce((c,d$1)=>d$1.markClass?c+` `+d$1.markClass:c,``);deco.add(from,to,Decoration.mark({class:`cm-lintRange cm-lintRange-`+sev+markClass,diagnostics:active.slice(),inclusiveEnd:active.some(a$1=>a$1.to>to)}))}if(pos=to,pos==docLen)break;for(let i$4=0;i$4<active.length;i$4++)active[i$4].to<=pos&&active.splice(i$4--,1)}let set=deco.finish();return new LintState(set,panel,findDiagnostic(set))}};function findDiagnostic(diagnostics,diagnostic=null,after=0){let found=null;return diagnostics.between(after,1e9,(from,to,{spec})=>{if(!(diagnostic&&spec.diagnostics.indexOf(diagnostic)<0))if(!found)found=new SelectedDiagnostic(from,to,diagnostic||spec.diagnostics[0]);else if(spec.diagnostics.indexOf(found.diagnostic)<0)return!1;else found=new SelectedDiagnostic(found.from,to,found.diagnostic)}),found}function hideTooltip(tr$1,tooltip){let from=tooltip.pos,to=tooltip.end||from,result=tr$1.state.facet(lintConfig).hideOn(tr$1,from,to);if(result!=null)return result;let line=tr$1.startState.doc.lineAt(tooltip.pos);return!!(tr$1.effects.some(e=>e.is(setDiagnosticsEffect))||tr$1.changes.touchesRange(line.from,Math.max(line.to,to)))}function maybeEnableLint(state$1,effects){return state$1.field(lintState,!1)?effects:effects.concat(StateEffect.appendConfig.of(lintExtensions))}function setDiagnostics(state$1,diagnostics){return{effects:maybeEnableLint(state$1,[setDiagnosticsEffect.of(diagnostics)])}}var setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(value,tr$1){if(tr$1.docChanged&&value.diagnostics.size){let mapped=value.diagnostics.map(tr$1.changes),selected=null,panel=value.panel;if(value.selected){let selPos=tr$1.changes.mapPos(value.selected.from,1);selected=findDiagnostic(mapped,value.selected.diagnostic,selPos)||findDiagnostic(mapped,null,selPos)}!mapped.size&&panel&&tr$1.state.facet(lintConfig).autoPanel&&(panel=null),value=new LintState(mapped,panel,selected)}for(let effect of tr$1.effects)if(effect.is(setDiagnosticsEffect)){let panel=tr$1.state.facet(lintConfig).autoPanel?effect.value.length?LintPanel.open:null:value.panel;value=LintState.init(effect.value,panel,tr$1.state)}else effect.is(togglePanel)?value=new LintState(value.diagnostics,effect.value?LintPanel.open:null,value.selected):effect.is(movePanelSelection)&&(value=new LintState(value.diagnostics,value.panel,effect.value));return value},provide:f$2=>[showPanel.from(f$2,val=>val.panel),EditorView.decorations.from(f$2,s$1=>s$1.diagnostics)]}),activeMark=Decoration.mark({class:`cm-lintRange cm-lintRange-active`});function lintTooltip(view,pos,side){let{diagnostics}=view.state.field(lintState),found,start=-1,end=-1;diagnostics.between(pos-(side<0?1:0),pos+(side>0?1:0),(from,to,{spec})=>{if(pos>=from&&pos<=to&&(from==to||(pos>from||side>0)&&(pos<to||side<0)))return found=spec.diagnostics,start=from,end=to,!1});let diagnosticFilter=view.state.facet(lintConfig).tooltipFilter;return found&&diagnosticFilter&&(found=diagnosticFilter(found,view.state)),found?{pos:start,end,above:view.state.doc.lineAt(start).to<end,create(){return{dom:diagnosticsTooltip(view,found)}}}:null}function diagnosticsTooltip(view,diagnostics){return crelt(`ul`,{class:`cm-tooltip-lint`},diagnostics.map(d$1=>renderDiagnostic(view,d$1,!1)))}var closeLintPanel=view=>{let field=view.state.field(lintState,!1);return!field||!field.panel?!1:(view.dispatch({effects:togglePanel.of(!1)}),!0)},lintPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.timeout=-1,this.set=!0;let{delay}=view.state.facet(lintConfig);this.lintTime=Date.now()+delay,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,delay)}run(){clearTimeout(this.timeout);let now$1=Date.now();if(now$1<this.lintTime-10)this.timeout=setTimeout(this.run,this.lintTime-now$1);else{this.set=!1;let{state:state$1}=this.view,{sources}=state$1.facet(lintConfig);sources.length&&batchResults(sources.map(s$1=>Promise.resolve(s$1(this.view))),annotations=>{this.view.state.doc==state$1.doc&&this.view.dispatch(setDiagnostics(this.view.state,annotations.reduce((a$1,b$2)=>a$1.concat(b$2))))},error=>{logException(this.view.state,error)})}}update(update$1){let config$1=update$1.state.facet(lintConfig);(update$1.docChanged||config$1!=update$1.startState.facet(lintConfig)||config$1.needsRefresh&&config$1.needsRefresh(update$1))&&(this.lintTime=Date.now()+config$1.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,config$1.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}});function batchResults(promises,sink,error){let collected=[],timeout=-1;for(let p$1 of promises)p$1.then(value=>{collected.push(value),clearTimeout(timeout),collected.length==promises.length?sink(collected):timeout=setTimeout(()=>sink(collected),200)},error)}var lintConfig=Facet.define({combine(input){return{sources:input.map(i$3=>i$3.source).filter(x$1=>x$1!=null),...combineConfig(input.map(i$3=>i$3.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:combineFilter,tooltipFilter:combineFilter,needsRefresh:(a$1,b$2)=>a$1?b$2?u$1=>a$1(u$1)||b$2(u$1):a$1:b$2,hideOn:(a$1,b$2)=>a$1?b$2?(t$1,x$1,y$2)=>a$1(t$1,x$1,y$2)||b$2(t$1,x$1,y$2):a$1:b$2,autoPanel:(a$1,b$2)=>a$1||b$2})}}});function combineFilter(a$1,b$2){return a$1?b$2?(d$1,s$1)=>b$2(a$1(d$1,s$1),s$1):a$1:b$2}function linter(source,config$1={}){return[lintConfig.of({source,config:config$1}),lintPlugin,lintExtensions]}function assignKeys(actions){let assigned=[];if(actions)actions:for(let{name:name$2}of actions){for(let i$3=0;i$3<name$2.length;i$3++){let ch=name$2[i$3];if(/[a-zA-Z]/.test(ch)&&!assigned.some(c=>c.toLowerCase()==ch.toLowerCase())){assigned.push(ch);continue actions}}assigned.push(``)}return assigned}function renderDiagnostic(view,diagnostic,inPanel){var _a$1;let keys$1=inPanel?assignKeys(diagnostic.actions):[];return crelt(`li`,{class:`cm-diagnostic cm-diagnostic-`+diagnostic.severity},crelt(`span`,{class:`cm-diagnosticText`},diagnostic.renderMessage?diagnostic.renderMessage(view):diagnostic.message),diagnostic.actions?.map((action,i$3)=>{let fired=!1,click=e=>{if(e.preventDefault(),fired)return;fired=!0;let found=findDiagnostic(view.state.field(lintState).diagnostics,diagnostic);found&&action.apply(view,found.from,found.to)},{name:name$2}=action,keyIndex=keys$1[i$3]?name$2.indexOf(keys$1[i$3]):-1,nameElt=keyIndex<0?name$2:[name$2.slice(0,keyIndex),crelt(`u`,name$2.slice(keyIndex,keyIndex+1)),name$2.slice(keyIndex+1)];return crelt(`button`,{type:`button`,class:`cm-diagnosticAction`+(action.markClass?` `+action.markClass:``),onclick:click,onmousedown:click,"aria-label":` Action: ${name$2}${keyIndex<0?``:` (access key "${keys$1[i$3]})"`}.`},nameElt)}),diagnostic.source&&crelt(`div`,{class:`cm-diagnosticSource`},diagnostic.source))}var DiagnosticWidget=class extends WidgetType{constructor(sev){super(),this.sev=sev}eq(other){return other.sev==this.sev}toDOM(){return crelt(`span`,{class:`cm-lintPoint cm-lintPoint-`+this.sev})}},PanelItem=class{constructor(view,diagnostic){this.diagnostic=diagnostic,this.id=`item_`+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(view,diagnostic,!0),this.dom.id=this.id,this.dom.setAttribute(`role`,`option`)}},LintPanel=class LintPanel{constructor(view){this.view=view,this.items=[];let onkeydown=event=>{if(!(event.ctrlKey||event.altKey||event.metaKey)){if(event.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(event.keyCode==38||event.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(event.keyCode==40||event.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(event.keyCode==36)this.moveSelection(0);else if(event.keyCode==35)this.moveSelection(this.items.length-1);else if(event.keyCode==13)this.view.focus();else if(event.keyCode>=65&&event.keyCode<=90&&this.selectedIndex>=0){let{diagnostic}=this.items[this.selectedIndex],keys$1=assignKeys(diagnostic.actions);for(let i$3=0;i$3<keys$1.length;i$3++)if(keys$1[i$3].toUpperCase().charCodeAt(0)==event.keyCode){let found=findDiagnostic(this.view.state.field(lintState).diagnostics,diagnostic);found&&diagnostic.actions[i$3].apply(view,found.from,found.to)}}else return;event.preventDefault()}},onclick=event=>{for(let i$3=0;i$3<this.items.length;i$3++)this.items[i$3].dom.contains(event.target)&&this.moveSelection(i$3)};this.list=crelt(`ul`,{tabIndex:0,role:`listbox`,"aria-label":this.view.state.phrase(`Diagnostics`),onkeydown,onclick}),this.dom=crelt(`div`,{class:`cm-panel-lint`},this.list,crelt(`button`,{type:`button`,name:`close`,"aria-label":this.view.state.phrase(`close`),onclick:()=>closeLintPanel(this.view)},`×`)),this.update()}get selectedIndex(){let selected=this.view.state.field(lintState).selected;if(!selected)return-1;for(let i$3=0;i$3<this.items.length;i$3++)if(this.items[i$3].diagnostic==selected.diagnostic)return i$3;return-1}update(){let{diagnostics,selected}=this.view.state.field(lintState),i$3=0,needsSync=!1,newSelectedItem=null,seen$1=new Set;for(diagnostics.between(0,this.view.state.doc.length,(_start,_end,{spec})=>{for(let diagnostic of spec.diagnostics){if(seen$1.has(diagnostic))continue;seen$1.add(diagnostic);let found=-1,item;for(let j$1=i$3;j$1<this.items.length;j$1++)if(this.items[j$1].diagnostic==diagnostic){found=j$1;break}found<0?(item=new PanelItem(this.view,diagnostic),this.items.splice(i$3,0,item),needsSync=!0):(item=this.items[found],found>i$3&&(this.items.splice(i$3,found-i$3),needsSync=!0)),selected&&item.diagnostic==selected.diagnostic?item.dom.hasAttribute(`aria-selected`)||(item.dom.setAttribute(`aria-selected`,`true`),newSelectedItem=item):item.dom.hasAttribute(`aria-selected`)&&item.dom.removeAttribute(`aria-selected`),i$3++}});i$3<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)needsSync=!0,this.items.pop();this.items.length==0&&(this.items.push(new PanelItem(this.view,{from:-1,to:-1,severity:`info`,message:this.view.state.phrase(`No diagnostics`)})),needsSync=!0),newSelectedItem?(this.list.setAttribute(`aria-activedescendant`,newSelectedItem.id),this.view.requestMeasure({key:this,read:()=>({sel:newSelectedItem.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel,panel})=>{let scaleY=panel.height/this.list.offsetHeight;sel.top<panel.top?this.list.scrollTop-=(panel.top-sel.top)/scaleY:sel.bottom>panel.bottom&&(this.list.scrollTop+=(sel.bottom-panel.bottom)/scaleY)}})):this.selectedIndex<0&&this.list.removeAttribute(`aria-activedescendant`),needsSync&&this.sync()}sync(){let domPos=this.list.firstChild;function rm$2(){let prev=domPos;domPos=prev.nextSibling,prev.remove()}for(let item of this.items)if(item.dom.parentNode==this.list){for(;domPos!=item.dom;)rm$2();domPos=item.dom.nextSibling}else this.list.insertBefore(item.dom,domPos);for(;domPos;)rm$2()}moveSelection(selectedIndex){if(this.selectedIndex<0)return;let selection=findDiagnostic(this.view.state.field(lintState).diagnostics,this.items[selectedIndex].diagnostic);selection&&this.view.dispatch({selection:{anchor:selection.from,head:selection.to},scrollIntoView:!0,effects:movePanelSelection.of(selection)})}static open(view){return new LintPanel(view)}};function svg$2(content$3,attrs=`viewBox="0 0 40 40"`){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${attrs}>${encodeURIComponent(content$3)}</svg>')`}function underline(color$1){return svg$2(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${color$1}" fill="none" stroke-width=".7"/>`,`width="6" height="3"`)}var baseTheme$1=EditorView.baseTheme({".cm-diagnostic":{padding:`3px 6px 3px 8px`,marginLeft:`-1px`,display:`block`,whiteSpace:`pre-wrap`},".cm-diagnostic-error":{borderLeft:`5px solid #d11`},".cm-diagnostic-warning":{borderLeft:`5px solid orange`},".cm-diagnostic-info":{borderLeft:`5px solid #999`},".cm-diagnostic-hint":{borderLeft:`5px solid #66d`},".cm-diagnosticAction":{font:`inherit`,border:`none`,padding:`2px 4px`,backgroundColor:`#444`,color:`white`,borderRadius:`3px`,marginLeft:`8px`,cursor:`pointer`},".cm-diagnosticSource":{fontSize:`70%`,opacity:.7},".cm-lintRange":{backgroundPosition:`left bottom`,backgroundRepeat:`repeat-x`,paddingBottom:`0.7px`},".cm-lintRange-error":{backgroundImage:underline(`#d11`)},".cm-lintRange-warning":{backgroundImage:underline(`orange`)},".cm-lintRange-info":{backgroundImage:underline(`#999`)},".cm-lintRange-hint":{backgroundImage:underline(`#66d`)},".cm-lintRange-active":{backgroundColor:`#ffdd9980`},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:`relative`,"&:after":{content:`""`,position:`absolute`,bottom:0,left:`-2px`,borderLeft:`3px solid transparent`,borderRight:`3px solid transparent`,borderBottom:`4px solid #d11`}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:`orange`}},".cm-lintPoint-info":{"&:after":{borderBottomColor:`#999`}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:`#66d`}},".cm-panel.cm-panel-lint":{position:`relative`,"& ul":{maxHeight:`100px`,overflowY:`auto`,"& [aria-selected]":{backgroundColor:`#ddd`,"& u":{textDecoration:`underline`}},"&:focus [aria-selected]":{background_fallback:`#bdf`,backgroundColor:`Highlight`,color_fallback:`white`,color:`HighlightText`},"& u":{textDecoration:`none`},padding:0,margin:0},"& [name=close]":{position:`absolute`,top:`0`,right:`2px`,background:`inherit`,border:`none`,font:`inherit`,padding:0,margin:0}}});function severityWeight(sev){return sev==`error`?4:sev==`warning`?3:sev==`info`?2:1}function maxSeverity(diagnostics){let sev=`hint`,weight=1;for(let d$1 of diagnostics){let w$2=severityWeight(d$1.severity);w$2>weight&&(weight=w$2,sev=d$1.severity)}return sev}var lintExtensions=[lintState,EditorView.decorations.compute([lintState],state$1=>{let{selected,panel}=state$1.field(lintState);return!selected||!panel||selected.from==selected.to?Decoration.none:Decoration.set([activeMark.range(selected.from,selected.to)])}),hoverTooltip(lintTooltip,{hideOn:hideTooltip}),baseTheme$1];function byteToCharOffset(text$5,byteOffset){let encoder=new TextEncoder,bytes=0;for(let i$3=0;i$3<text$5.length;i$3++)if(bytes+=encoder.encode(text$5[i$3]).length,bytes>=byteOffset)return i$3;return text$5.length}function expandToWord(text$5,pos){let from=pos,to=pos;for(;from>0&&/\w/.test(text$5[from-1]);)from--;for(;to<text$5.length&&/\w/.test(text$5[to]);)to++;return[from,Math.max(to,from+1)]}var TRAILING_KEYWORDS=[`SELECT`,`FROM`,`WHERE`,`AND`,`OR`,`JOIN`,`ON`,`SET`,`ORDER BY`,`GROUP BY`,`HAVING`,`LIMIT`,`OFFSET`,`VALUES`,`INTO`];function findTrailingKeyword(sql){let trimmed=sql.trimEnd(),upper=trimmed.toUpperCase();for(let kw of TRAILING_KEYWORDS)if(upper.endsWith(kw)){let pos=trimmed.length-kw.length;if(pos===0||/\s/.test(trimmed[pos-1]))return pos}return-1}function splitStatements(sql){let results=[],i$3=0,stmtStart=0;for(;i$3<sql.length;){let ch=sql[i$3];if(ch===`'`||ch===`"`){let quote=ch;for(i$3++;i$3<sql.length&&!(sql[i$3]===quote&&sql[i$3+1]!==quote);)sql[i$3]===quote&&i$3++,i$3++;i$3++;continue}if(ch===`$`){let match=sql.slice(i$3).match(/^\$[a-zA-Z_]?[a-zA-Z0-9_]*\$/);if(match){let tag=match[0],endIdx=sql.indexOf(tag,i$3+tag.length);i$3=endIdx===-1?sql.length:endIdx+tag.length;continue}}if(ch===`-`&&sql[i$3+1]===`-`){let newline=sql.indexOf(`
65
65
  `,i$3);i$3=newline===-1?sql.length:newline+1;continue}if(ch===`/`&&sql[i$3+1]===`*`){let end=sql.indexOf(`*/`,i$3+2);i$3=end===-1?sql.length:end+2;continue}if(ch===`;`){let text$6=sql.slice(stmtStart,i$3+1).trim();text$6&&results.push({text:text$6,start:stmtStart}),stmtStart=i$3+1}i$3++}let text$5=sql.slice(stmtStart).trim();return text$5&&results.push({text:text$5,start:stmtStart}),results}function pgLinter(fixHandler){return linter(async view=>{let doc$1=view.state.doc.toString();if(!doc$1.trim())return[];await ensureModuleLoaded();let diagnostics=[];for(let stmt of splitStatements(doc$1))try{parseSync(stmt.text)}catch(err){let{message,cursorPosition}=err,bytePos=cursorPosition?cursorPosition-1:0,charPos=byteToCharOffset(stmt.text,bytePos);if(charPos<=10){let trailingPos=findTrailingKeyword(stmt.text);trailingPos!==-1&&(charPos=trailingPos)}let stmtPos=doc$1.indexOf(stmt.text,stmt.start),[from,to]=expandToWord(doc$1,(stmtPos===-1?stmt.start:stmtPos)+charPos),errorMessage=message||`Syntax error`,errorFrom=Math.max(0,from),errorTo=Math.min(doc$1.length,to),actions=[];fixHandler&&actions.push({name:`Fix with AI`,apply:()=>{fixHandler.onFixWithAI(errorMessage,errorFrom)}}),diagnostics.push({from:errorFrom,to:errorTo,severity:`error`,message:errorMessage,actions:actions.length>0?actions:void 0})}return diagnostics},{delay:400})}var toggleComment=target=>{let{state:state$1}=target,line=state$1.doc.lineAt(state$1.selection.main.from),config$1=getConfig(target.state,line.from);return config$1.line?toggleLineComment(target):config$1.block?toggleBlockCommentByLine(target):!1};function command(f$2,option$1){return({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let tr$1=f$2(option$1,state$1);return tr$1?(dispatch(state$1.update(tr$1)),!0):!1}}var toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((o$2,s$1)=>changeBlockComment(o$2,s$1,selectedLineRanges(s$1)),0);function getConfig(state$1,pos){let data=state$1.languageDataAt(`commentTokens`,pos,1);return data.length?data[0]:{}}var SearchMargin=50;function findBlockComment(state$1,{open,close},from,to){let textBefore=state$1.sliceDoc(from-SearchMargin,from),textAfter=state$1.sliceDoc(to,to+SearchMargin),spaceBefore=/\s*$/.exec(textBefore)[0].length,spaceAfter=/^\s*/.exec(textAfter)[0].length,beforeOff=textBefore.length-spaceBefore;if(textBefore.slice(beforeOff-open.length,beforeOff)==open&&textAfter.slice(spaceAfter,spaceAfter+close.length)==close)return{open:{pos:from-spaceBefore,margin:spaceBefore&&1},close:{pos:to+spaceAfter,margin:spaceAfter&&1}};let startText$1,endText;to-from<=2*SearchMargin?startText$1=endText=state$1.sliceDoc(from,to):(startText$1=state$1.sliceDoc(from,from+SearchMargin),endText=state$1.sliceDoc(to-SearchMargin,to));let startSpace=/^\s*/.exec(startText$1)[0].length,endSpace=/\s*$/.exec(endText)[0].length,endOff=endText.length-endSpace-close.length;return startText$1.slice(startSpace,startSpace+open.length)==open&&endText.slice(endOff,endOff+close.length)==close?{open:{pos:from+startSpace+open.length,margin:/\s/.test(startText$1.charAt(startSpace+open.length))?1:0},close:{pos:to-endSpace-close.length,margin:/\s/.test(endText.charAt(endOff-1))?1:0}}:null}function selectedLineRanges(state$1){let ranges=[];for(let r$4 of state$1.selection.ranges){let fromLine=state$1.doc.lineAt(r$4.from),toLine=r$4.to<=fromLine.to?fromLine:state$1.doc.lineAt(r$4.to);toLine.from>fromLine.from&&toLine.from==r$4.to&&(toLine=r$4.to==fromLine.to+1?fromLine:state$1.doc.lineAt(r$4.to-1));let last=ranges.length-1;last>=0&&ranges[last].to>fromLine.from?ranges[last].to=toLine.to:ranges.push({from:fromLine.from+/^\s*/.exec(fromLine.text)[0].length,to:toLine.to})}return ranges}function changeBlockComment(option$1,state$1,ranges=state$1.selection.ranges){let tokens=ranges.map(r$4=>getConfig(state$1,r$4.from).block);if(!tokens.every(c=>c))return null;let comments=ranges.map((r$4,i$3)=>findBlockComment(state$1,tokens[i$3],r$4.from,r$4.to));if(option$1!=2&&!comments.every(c=>c))return{changes:state$1.changes(ranges.map((range$1,i$3)=>comments[i$3]?[]:[{from:range$1.from,insert:tokens[i$3].open+` `},{from:range$1.to,insert:` `+tokens[i$3].close}]))};if(option$1!=1&&comments.some(c=>c)){let changes=[];for(let i$3=0,comment$2;i$3<comments.length;i$3++)if(comment$2=comments[i$3]){let token$1=tokens[i$3],{open,close}=comment$2;changes.push({from:open.pos-token$1.open.length,to:open.pos+open.margin},{from:close.pos-close.margin,to:close.pos+token$1.close.length})}return{changes}}return null}function changeLineComment(option$1,state$1,ranges=state$1.selection.ranges){let lines=[],prevLine=-1;for(let{from,to}of ranges){let startI=lines.length,minIndent=1e9,token$1=getConfig(state$1,from).line;if(token$1){for(let pos=from;pos<=to;){let line=state$1.doc.lineAt(pos);if(line.from>prevLine&&(from==to||to>line.from)){prevLine=line.from;let indent=/^\s*/.exec(line.text)[0].length,empty$2=indent==line.length,comment$2=line.text.slice(indent,indent+token$1.length)==token$1?indent:-1;indent<line.text.length&&indent<minIndent&&(minIndent=indent),lines.push({line,comment:comment$2,token:token$1,indent,empty:empty$2,single:!1})}pos=line.to+1}if(minIndent<1e9)for(let i$3=startI;i$3<lines.length;i$3++)lines[i$3].indent<lines[i$3].line.text.length&&(lines[i$3].indent=minIndent);lines.length==startI+1&&(lines[startI].single=!0)}}if(option$1!=2&&lines.some(l$2=>l$2.comment<0&&(!l$2.empty||l$2.single))){let changes=[];for(let{line,token:token$1,indent,empty:empty$2,single}of lines)(single||!empty$2)&&changes.push({from:line.from+indent,insert:token$1+` `});let changeSet=state$1.changes(changes);return{changes:changeSet,selection:state$1.selection.map(changeSet,1)}}else if(option$1!=1&&lines.some(l$2=>l$2.comment>=0)){let changes=[];for(let{line,comment:comment$2,token:token$1}of lines)if(comment$2>=0){let from=line.from+comment$2,to=from+token$1.length;line.text[to-line.from]==` `&&to++,changes.push({from,to})}return{changes}}return null}var fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(configs){return combineConfig(configs,{minDepth:100,newGroupDelay:500,joinToEvent:(_t,isAdjacent$1)=>isAdjacent$1},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(a$1,b$2)=>(tr$1,adj)=>a$1(tr$1,adj)||b$2(tr$1,adj)})}}),historyField_=StateField.define({create(){return HistoryState.empty},update(state$1,tr$1){let config$1=tr$1.state.facet(historyConfig),fromHist=tr$1.annotation(fromHistory);if(fromHist){let item=HistEvent.fromTransaction(tr$1,fromHist.selection),from=fromHist.side,other=from==0?state$1.undone:state$1.done;return other=item?updateBranch(other,other.length,config$1.minDepth,item):addSelection(other,tr$1.startState.selection),new HistoryState(from==0?fromHist.rest:other,from==0?other:fromHist.rest)}let isolate=tr$1.annotation(isolateHistory);if((isolate==`full`||isolate==`before`)&&(state$1=state$1.isolate()),tr$1.annotation(Transaction.addToHistory)===!1)return tr$1.changes.empty?state$1:state$1.addMapping(tr$1.changes.desc);let event=HistEvent.fromTransaction(tr$1),time=tr$1.annotation(Transaction.time),userEvent=tr$1.annotation(Transaction.userEvent);return event?state$1=state$1.addChanges(event,time,userEvent,config$1,tr$1):tr$1.selection&&(state$1=state$1.addSelection(tr$1.startState.selection,time,userEvent,config$1.newGroupDelay)),(isolate==`full`||isolate==`after`)&&(state$1=state$1.isolate()),state$1},toJSON(value){return{done:value.done.map(e=>e.toJSON()),undone:value.undone.map(e=>e.toJSON())}},fromJSON(json$1){return new HistoryState(json$1.done.map(HistEvent.fromJSON),json$1.undone.map(HistEvent.fromJSON))}});function history(config$1={}){return[historyField_,historyConfig.of(config$1),EditorView.domEventHandlers({beforeinput(e,view){let command$1=e.inputType==`historyUndo`?undo:e.inputType==`historyRedo`?redo:null;return command$1?(e.preventDefault(),command$1(view)):!1}})]}function cmd(side,selection){return function({state:state$1,dispatch}){if(!selection&&state$1.readOnly)return!1;let historyState=state$1.field(historyField_,!1);if(!historyState)return!1;let tr$1=historyState.pop(side,state$1,selection);return tr$1?(dispatch(tr$1),!0):!1}}var undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0),HistEvent=class HistEvent{constructor(changes,effects,mapped,startSelection,selectionsAfter){this.changes=changes,this.effects=effects,this.mapped=mapped,this.startSelection=startSelection,this.selectionsAfter=selectionsAfter}setSelAfter(after){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,after)}toJSON(){var _a$1,_b,_c;return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(s$1=>s$1.toJSON())}}static fromJSON(json$1){return new HistEvent(json$1.changes&&ChangeSet.fromJSON(json$1.changes),[],json$1.mapped&&ChangeDesc.fromJSON(json$1.mapped),json$1.startSelection&&EditorSelection.fromJSON(json$1.startSelection),json$1.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(tr$1,selection){let effects=none;for(let invert of tr$1.startState.facet(invertedEffects)){let result=invert(tr$1);result.length&&(effects=effects.concat(result))}return!effects.length&&tr$1.changes.empty?null:new HistEvent(tr$1.changes.invert(tr$1.startState.doc),effects,void 0,selection||tr$1.startState.selection,none)}static selection(selections){return new HistEvent(void 0,none,void 0,void 0,selections)}};function updateBranch(branch,to,maxLen,newEvent){let start=to+1>maxLen+20?to-maxLen-1:0,newBranch=branch.slice(start,to);return newBranch.push(newEvent),newBranch}function isAdjacent(a$1,b$2){let ranges=[],isAdjacent$1=!1;return a$1.iterChangedRanges((f$2,t$1)=>ranges.push(f$2,t$1)),b$2.iterChangedRanges((_f,_t,f$2,t$1)=>{for(let i$3=0;i$3<ranges.length;){let from=ranges[i$3++],to=ranges[i$3++];t$1>=from&&f$2<=to&&(isAdjacent$1=!0)}}),isAdjacent$1}function eqSelectionShape(a$1,b$2){return a$1.ranges.length==b$2.ranges.length&&a$1.ranges.filter((r$4,i$3)=>r$4.empty!=b$2.ranges[i$3].empty).length===0}function conc(a$1,b$2){return a$1.length?b$2.length?a$1.concat(b$2):a$1:b$2}var none=[],MaxSelectionsPerEvent=200;function addSelection(branch,selection){if(branch.length){let lastEvent=branch[branch.length-1],sels=lastEvent.selectionsAfter.slice(Math.max(0,lastEvent.selectionsAfter.length-MaxSelectionsPerEvent));return sels.length&&sels[sels.length-1].eq(selection)?branch:(sels.push(selection),updateBranch(branch,branch.length-1,1e9,lastEvent.setSelAfter(sels)))}else return[HistEvent.selection([selection])]}function popSelection(branch){let last=branch[branch.length-1],newBranch=branch.slice();return newBranch[branch.length-1]=last.setSelAfter(last.selectionsAfter.slice(0,last.selectionsAfter.length-1)),newBranch}function addMappingToBranch(branch,mapping){if(!branch.length)return branch;let length=branch.length,selections=none;for(;length;){let event=mapEvent(branch[length-1],mapping,selections);if(event.changes&&!event.changes.empty||event.effects.length){let result=branch.slice(0,length);return result[length-1]=event,result}else mapping=event.mapped,length--,selections=event.selectionsAfter}return selections.length?[HistEvent.selection(selections)]:none}function mapEvent(event,mapping,extraSelections){let selections=conc(event.selectionsAfter.length?event.selectionsAfter.map(s$1=>s$1.map(mapping)):none,extraSelections);if(!event.changes)return HistEvent.selection(selections);let mappedChanges=event.changes.map(mapping),before=mapping.mapDesc(event.changes,!0),fullMapping=event.mapped?event.mapped.composeDesc(before):before;return new HistEvent(mappedChanges,StateEffect.mapEffects(event.effects,mapping),fullMapping,event.startSelection.map(before),selections)}var joinableUserEvent=/^(input\.type|delete)($|\.)/,HistoryState=class HistoryState{constructor(done,undone,prevTime=0,prevUserEvent=void 0){this.done=done,this.undone=undone,this.prevTime=prevTime,this.prevUserEvent=prevUserEvent}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(event,time,userEvent,config$1,tr$1){let done=this.done,lastEvent=done[done.length-1];return done=lastEvent&&lastEvent.changes&&!lastEvent.changes.empty&&event.changes&&(!userEvent||joinableUserEvent.test(userEvent))&&(!lastEvent.selectionsAfter.length&&time-this.prevTime<config$1.newGroupDelay&&config$1.joinToEvent(tr$1,isAdjacent(lastEvent.changes,event.changes))||userEvent==`input.type.compose`)?updateBranch(done,done.length-1,config$1.minDepth,new HistEvent(event.changes.compose(lastEvent.changes),conc(StateEffect.mapEffects(event.effects,lastEvent.changes),lastEvent.effects),lastEvent.mapped,lastEvent.startSelection,none)):updateBranch(done,done.length,config$1.minDepth,event),new HistoryState(done,none,time,userEvent)}addSelection(selection,time,userEvent,newGroupDelay){let last=this.done.length?this.done[this.done.length-1].selectionsAfter:none;return last.length>0&&time-this.prevTime<newGroupDelay&&userEvent==this.prevUserEvent&&userEvent&&/^select($|\.)/.test(userEvent)&&eqSelectionShape(last[last.length-1],selection)?this:new HistoryState(addSelection(this.done,selection),this.undone,time,userEvent)}addMapping(mapping){return new HistoryState(addMappingToBranch(this.done,mapping),addMappingToBranch(this.undone,mapping),this.prevTime,this.prevUserEvent)}pop(side,state$1,onlySelection){let branch=side==0?this.done:this.undone;if(branch.length==0)return null;let event=branch[branch.length-1],selection=event.selectionsAfter[0]||state$1.selection;if(onlySelection&&event.selectionsAfter.length)return state$1.update({selection:event.selectionsAfter[event.selectionsAfter.length-1],annotations:fromHistory.of({side,rest:popSelection(branch),selection}),userEvent:side==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(event.changes){let rest=branch.length==1?none:branch.slice(0,branch.length-1);return event.mapped&&(rest=addMappingToBranch(rest,event.mapped)),state$1.update({changes:event.changes,selection:event.startSelection,effects:event.effects,annotations:fromHistory.of({side,rest,selection}),filter:!1,userEvent:side==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};HistoryState.empty=new HistoryState(none,none);var historyKeymap=[{key:`Mod-z`,run:undo,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:redo,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:redo,preventDefault:!0},{key:`Mod-u`,run:undoSelection,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:redoSelection,preventDefault:!0}];function updateSel(sel,by){return EditorSelection.create(sel.ranges.map(by),sel.mainIndex)}function setSel(state$1,selection){return state$1.update({selection,scrollIntoView:!0,userEvent:`select`})}function moveSel({state:state$1,dispatch},how){let selection=updateSel(state$1.selection,how);return selection.eq(state$1.selection,!0)?!1:(dispatch(setSel(state$1,selection)),!0)}function rangeEnd(range$1,forward){return EditorSelection.cursor(forward?range$1.to:range$1.from)}function cursorByChar(view,forward){return moveSel(view,range$1=>range$1.empty?view.moveByChar(range$1,forward):rangeEnd(range$1,forward))}function ltrAtCursor(view){return view.textDirectionAt(view.state.selection.main.head)==Direction.LTR}var cursorCharLeft=view=>cursorByChar(view,!ltrAtCursor(view)),cursorCharRight=view=>cursorByChar(view,ltrAtCursor(view));function cursorByGroup(view,forward){return moveSel(view,range$1=>range$1.empty?view.moveByGroup(range$1,forward):rangeEnd(range$1,forward))}var cursorGroupLeft=view=>cursorByGroup(view,!ltrAtCursor(view)),cursorGroupRight=view=>cursorByGroup(view,ltrAtCursor(view)),segmenter=typeof Intl<`u`&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:`word`}):null;function interestingNode(state$1,node$1,bracketProp){if(node$1.type.prop(bracketProp))return!0;let len=node$1.to-node$1.from;return len&&(len>2||/[^\s,.;:]/.test(state$1.sliceDoc(node$1.from,node$1.to)))||node$1.firstChild}function moveBySyntax(state$1,start,forward){let pos=syntaxTree(state$1).resolveInner(start.head),bracketProp=forward?NodeProp.closedBy:NodeProp.openedBy;for(let at=start.head;;){let next=forward?pos.childAfter(at):pos.childBefore(at);if(!next)break;interestingNode(state$1,next,bracketProp)?pos=next:at=forward?next.to:next.from}let bracket$1=pos.type.prop(bracketProp),match,newPos;return newPos=bracket$1&&(match=forward?matchBrackets(state$1,pos.from,1):matchBrackets(state$1,pos.to,-1))&&match.matched?forward?match.end.to:match.end.from:forward?pos.to:pos.from,EditorSelection.cursor(newPos,forward?-1:1)}var cursorSyntaxLeft=view=>moveSel(view,range$1=>moveBySyntax(view.state,range$1,!ltrAtCursor(view))),cursorSyntaxRight=view=>moveSel(view,range$1=>moveBySyntax(view.state,range$1,ltrAtCursor(view)));function cursorByLine(view,forward){return moveSel(view,range$1=>{if(!range$1.empty)return rangeEnd(range$1,forward);let moved=view.moveVertically(range$1,forward);return moved.head==range$1.head?view.moveToLineBoundary(range$1,forward):moved})}var cursorLineUp=view=>cursorByLine(view,!1),cursorLineDown=view=>cursorByLine(view,!0);function pageInfo(view){let selfScroll=view.scrollDOM.clientHeight<view.scrollDOM.scrollHeight-2,marginTop=0,marginBottom=0,height;if(selfScroll){for(let source of view.state.facet(EditorView.scrollMargins)){let margins=source(view);margins?.top&&(marginTop=Math.max(margins?.top,marginTop)),margins?.bottom&&(marginBottom=Math.max(margins?.bottom,marginBottom))}height=view.scrollDOM.clientHeight-marginTop-marginBottom}else height=(view.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop,marginBottom,selfScroll,height:Math.max(view.defaultLineHeight,height-5)}}function cursorByPage(view,forward){let page=pageInfo(view),{state:state$1}=view,selection=updateSel(state$1.selection,range$1=>range$1.empty?view.moveVertically(range$1,forward,page.height):rangeEnd(range$1,forward));if(selection.eq(state$1.selection))return!1;let effect;if(page.selfScroll){let startPos=view.coordsAtPos(state$1.selection.main.head),scrollRect=view.scrollDOM.getBoundingClientRect(),scrollTop=scrollRect.top+page.marginTop,scrollBottom=scrollRect.bottom-page.marginBottom;startPos&&startPos.top>scrollTop&&startPos.bottom<scrollBottom&&(effect=EditorView.scrollIntoView(selection.main.head,{y:`start`,yMargin:startPos.top-scrollTop}))}return view.dispatch(setSel(state$1,selection),{effects:effect}),!0}var cursorPageUp=view=>cursorByPage(view,!1),cursorPageDown=view=>cursorByPage(view,!0);function moveByLineBoundary(view,start,forward){let line=view.lineBlockAt(start.head),moved=view.moveToLineBoundary(start,forward);if(moved.head==start.head&&moved.head!=(forward?line.to:line.from)&&(moved=view.moveToLineBoundary(start,forward,!1)),!forward&&moved.head==line.from&&line.length){let space$1=/^\s*/.exec(view.state.sliceDoc(line.from,Math.min(line.from+100,line.to)))[0].length;space$1&&start.head!=line.from+space$1&&(moved=EditorSelection.cursor(line.from+space$1))}return moved}var cursorLineBoundaryForward=view=>moveSel(view,range$1=>moveByLineBoundary(view,range$1,!0)),cursorLineBoundaryBackward=view=>moveSel(view,range$1=>moveByLineBoundary(view,range$1,!1)),cursorLineBoundaryLeft=view=>moveSel(view,range$1=>moveByLineBoundary(view,range$1,!ltrAtCursor(view))),cursorLineBoundaryRight=view=>moveSel(view,range$1=>moveByLineBoundary(view,range$1,ltrAtCursor(view))),cursorLineStart=view=>moveSel(view,range$1=>EditorSelection.cursor(view.lineBlockAt(range$1.head).from,1)),cursorLineEnd=view=>moveSel(view,range$1=>EditorSelection.cursor(view.lineBlockAt(range$1.head).to,-1));function toMatchingBracket(state$1,dispatch,extend$1){let found=!1,selection=updateSel(state$1.selection,range$1=>{let matching=matchBrackets(state$1,range$1.head,-1)||matchBrackets(state$1,range$1.head,1)||range$1.head>0&&matchBrackets(state$1,range$1.head-1,1)||range$1.head<state$1.doc.length&&matchBrackets(state$1,range$1.head+1,-1);if(!matching||!matching.end)return range$1;found=!0;let head$1=matching.start.from==range$1.head?matching.end.to:matching.end.from;return extend$1?EditorSelection.range(range$1.anchor,head$1):EditorSelection.cursor(head$1)});return found?(dispatch(setSel(state$1,selection)),!0):!1}var cursorMatchingBracket=({state:state$1,dispatch})=>toMatchingBracket(state$1,dispatch,!1);function extendSel(target,how){let selection=updateSel(target.state.selection,range$1=>{let head$1=how(range$1);return EditorSelection.range(range$1.anchor,head$1.head,head$1.goalColumn,head$1.bidiLevel||void 0)});return selection.eq(target.state.selection)?!1:(target.dispatch(setSel(target.state,selection)),!0)}function selectByChar(view,forward){return extendSel(view,range$1=>view.moveByChar(range$1,forward))}var selectCharLeft=view=>selectByChar(view,!ltrAtCursor(view)),selectCharRight=view=>selectByChar(view,ltrAtCursor(view));function selectByGroup(view,forward){return extendSel(view,range$1=>view.moveByGroup(range$1,forward))}var selectGroupLeft=view=>selectByGroup(view,!ltrAtCursor(view)),selectGroupRight=view=>selectByGroup(view,ltrAtCursor(view)),selectSyntaxLeft=view=>extendSel(view,range$1=>moveBySyntax(view.state,range$1,!ltrAtCursor(view))),selectSyntaxRight=view=>extendSel(view,range$1=>moveBySyntax(view.state,range$1,ltrAtCursor(view)));function selectByLine(view,forward){return extendSel(view,range$1=>view.moveVertically(range$1,forward))}var selectLineUp=view=>selectByLine(view,!1),selectLineDown=view=>selectByLine(view,!0);function selectByPage(view,forward){return extendSel(view,range$1=>view.moveVertically(range$1,forward,pageInfo(view).height))}var selectPageUp=view=>selectByPage(view,!1),selectPageDown=view=>selectByPage(view,!0),selectLineBoundaryForward=view=>extendSel(view,range$1=>moveByLineBoundary(view,range$1,!0)),selectLineBoundaryBackward=view=>extendSel(view,range$1=>moveByLineBoundary(view,range$1,!1)),selectLineBoundaryLeft=view=>extendSel(view,range$1=>moveByLineBoundary(view,range$1,!ltrAtCursor(view))),selectLineBoundaryRight=view=>extendSel(view,range$1=>moveByLineBoundary(view,range$1,ltrAtCursor(view))),selectLineStart=view=>extendSel(view,range$1=>EditorSelection.cursor(view.lineBlockAt(range$1.head).from)),selectLineEnd=view=>extendSel(view,range$1=>EditorSelection.cursor(view.lineBlockAt(range$1.head).to)),cursorDocStart=({state:state$1,dispatch})=>(dispatch(setSel(state$1,{anchor:0})),!0),cursorDocEnd=({state:state$1,dispatch})=>(dispatch(setSel(state$1,{anchor:state$1.doc.length})),!0),selectDocStart=({state:state$1,dispatch})=>(dispatch(setSel(state$1,{anchor:state$1.selection.main.anchor,head:0})),!0),selectDocEnd=({state:state$1,dispatch})=>(dispatch(setSel(state$1,{anchor:state$1.selection.main.anchor,head:state$1.doc.length})),!0),selectAll=({state:state$1,dispatch})=>(dispatch(state$1.update({selection:{anchor:0,head:state$1.doc.length},userEvent:`select`})),!0),selectLine=({state:state$1,dispatch})=>{let ranges=selectedLineBlocks(state$1).map(({from,to})=>EditorSelection.range(from,Math.min(to+1,state$1.doc.length)));return dispatch(state$1.update({selection:EditorSelection.create(ranges),userEvent:`select`})),!0},selectParentSyntax=({state:state$1,dispatch})=>{let selection=updateSel(state$1.selection,range$1=>{let tree=syntaxTree(state$1),stack=tree.resolveStack(range$1.from,1);if(range$1.empty){let stackBefore=tree.resolveStack(range$1.from,-1);stackBefore.node.from>=stack.node.from&&stackBefore.node.to<=stack.node.to&&(stack=stackBefore)}for(let cur$1=stack;cur$1;cur$1=cur$1.next){let{node:node$1}=cur$1;if((node$1.from<range$1.from&&node$1.to>=range$1.to||node$1.to>range$1.to&&node$1.from<=range$1.from)&&cur$1.next)return EditorSelection.range(node$1.to,node$1.from)}return range$1});return selection.eq(state$1.selection)?!1:(dispatch(setSel(state$1,selection)),!0)};function addCursorVertically(view,forward){let{state:state$1}=view,sel=state$1.selection,ranges=state$1.selection.ranges.slice();for(let range$1 of state$1.selection.ranges){let line=state$1.doc.lineAt(range$1.head);if(forward?line.to<view.state.doc.length:line.from>0)for(let cur$1=range$1;;){let next=view.moveVertically(cur$1,forward);if(next.head<line.from||next.head>line.to){ranges.some(r$4=>r$4.head==next.head)||ranges.push(next);break}else if(next.head==cur$1.head)break;else cur$1=next}}return ranges.length==sel.ranges.length?!1:(view.dispatch(setSel(state$1,EditorSelection.create(ranges,ranges.length-1))),!0)}var addCursorAbove=view=>addCursorVertically(view,!1),addCursorBelow=view=>addCursorVertically(view,!0),simplifySelection=({state:state$1,dispatch})=>{let cur$1=state$1.selection,selection=null;return cur$1.ranges.length>1?selection=EditorSelection.create([cur$1.main]):cur$1.main.empty||(selection=EditorSelection.create([EditorSelection.cursor(cur$1.main.head)])),selection?(dispatch(setSel(state$1,selection)),!0):!1};function deleteBy(target,by){if(target.state.readOnly)return!1;let event=`delete.selection`,{state:state$1}=target,changes=state$1.changeByRange(range$1=>{let{from,to}=range$1;if(from==to){let towards=by(range$1);towards<from?(event=`delete.backward`,towards=skipAtomic(target,towards,!1)):towards>from&&(event=`delete.forward`,towards=skipAtomic(target,towards,!0)),from=Math.min(from,towards),to=Math.max(to,towards)}else from=skipAtomic(target,from,!1),to=skipAtomic(target,to,!0);return from==to?{range:range$1}:{changes:{from,to},range:EditorSelection.cursor(from,from<range$1.head?-1:1)}});return changes.changes.empty?!1:(target.dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:event,effects:event==`delete.selection`?EditorView.announce.of(state$1.phrase(`Selection deleted`)):void 0})),!0)}function skipAtomic(target,pos,forward){if(target instanceof EditorView)for(let ranges of target.state.facet(EditorView.atomicRanges).map(f$2=>f$2(target)))ranges.between(pos,pos,(from,to)=>{from<pos&&to>pos&&(pos=forward?to:from)});return pos}var deleteByChar=(target,forward,byIndentUnit)=>deleteBy(target,range$1=>{let pos=range$1.from,{state:state$1}=target,line=state$1.doc.lineAt(pos),before,targetPos;if(byIndentUnit&&!forward&&pos>line.from&&pos<line.from+200&&!/[^ \t]/.test(before=line.text.slice(0,pos-line.from))){if(before[before.length-1]==` `)return pos-1;let drop=countColumn(before,state$1.tabSize)%getIndentUnit(state$1)||getIndentUnit(state$1);for(let i$3=0;i$3<drop&&before[before.length-1-i$3]==` `;i$3++)pos--;targetPos=pos}else targetPos=findClusterBreak(line.text,pos-line.from,forward,forward)+line.from,targetPos==pos&&line.number!=(forward?state$1.doc.lines:1)?targetPos+=forward?1:-1:!forward&&/[\ufe00-\ufe0f]/.test(line.text.slice(targetPos-line.from,pos-line.from))&&(targetPos=findClusterBreak(line.text,targetPos-line.from,!1,!1)+line.from);return targetPos}),deleteCharBackward=view=>deleteByChar(view,!1,!0),deleteCharForward=view=>deleteByChar(view,!0,!1),deleteByGroup=(target,forward)=>deleteBy(target,range$1=>{let pos=range$1.head,{state:state$1}=target,line=state$1.doc.lineAt(pos),categorize=state$1.charCategorizer(pos);for(let cat=null;;){if(pos==(forward?line.to:line.from)){pos==range$1.head&&line.number!=(forward?state$1.doc.lines:1)&&(pos+=forward?1:-1);break}let next=findClusterBreak(line.text,pos-line.from,forward)+line.from,nextChar$1=line.text.slice(Math.min(pos,next)-line.from,Math.max(pos,next)-line.from),nextCat=categorize(nextChar$1);if(cat!=null&&nextCat!=cat)break;(nextChar$1!=` `||pos!=range$1.head)&&(cat=nextCat),pos=next}return pos}),deleteGroupBackward=target=>deleteByGroup(target,!1),deleteGroupForward=target=>deleteByGroup(target,!0),deleteToLineEnd=view=>deleteBy(view,range$1=>{let lineEnd=view.lineBlockAt(range$1.head).to;return range$1.head<lineEnd?lineEnd:Math.min(view.state.doc.length,range$1.head+1)}),deleteLineBoundaryBackward=view=>deleteBy(view,range$1=>{let lineStart=view.moveToLineBoundary(range$1,!1).head;return range$1.head>lineStart?lineStart:Math.max(0,range$1.head-1)}),deleteLineBoundaryForward=view=>deleteBy(view,range$1=>{let lineStart=view.moveToLineBoundary(range$1,!0).head;return range$1.head<lineStart?lineStart:Math.min(view.state.doc.length,range$1.head+1)}),splitLine=({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range$1=>({changes:{from:range$1.from,to:range$1.to,insert:Text.of([``,``])},range:EditorSelection.cursor(range$1.from)}));return dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:`input`})),!0},transposeChars=({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range$1=>{if(!range$1.empty||range$1.from==0||range$1.from==state$1.doc.length)return{range:range$1};let pos=range$1.from,line=state$1.doc.lineAt(pos),from=pos==line.from?pos-1:findClusterBreak(line.text,pos-line.from,!1)+line.from,to=pos==line.to?pos+1:findClusterBreak(line.text,pos-line.from,!0)+line.from;return{changes:{from,to,insert:state$1.doc.slice(pos,to).append(state$1.doc.slice(from,pos))},range:EditorSelection.cursor(to)}});return changes.changes.empty?!1:(dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function selectedLineBlocks(state$1){let blocks=[],upto=-1;for(let range$1 of state$1.selection.ranges){let startLine=state$1.doc.lineAt(range$1.from),endLine=state$1.doc.lineAt(range$1.to);if(!range$1.empty&&range$1.to==endLine.from&&(endLine=state$1.doc.lineAt(range$1.to-1)),upto>=startLine.number){let prev=blocks[blocks.length-1];prev.to=endLine.to,prev.ranges.push(range$1)}else blocks.push({from:startLine.from,to:endLine.to,ranges:[range$1]});upto=endLine.number+1}return blocks}function moveLine(state$1,dispatch,forward){if(state$1.readOnly)return!1;let changes=[],ranges=[];for(let block of selectedLineBlocks(state$1)){if(forward?block.to==state$1.doc.length:block.from==0)continue;let nextLine=state$1.doc.lineAt(forward?block.to+1:block.from-1),size$3=nextLine.length+1;if(forward){changes.push({from:block.to,to:nextLine.to},{from:block.from,insert:nextLine.text+state$1.lineBreak});for(let r$4 of block.ranges)ranges.push(EditorSelection.range(Math.min(state$1.doc.length,r$4.anchor+size$3),Math.min(state$1.doc.length,r$4.head+size$3)))}else{changes.push({from:nextLine.from,to:block.from},{from:block.to,insert:state$1.lineBreak+nextLine.text});for(let r$4 of block.ranges)ranges.push(EditorSelection.range(r$4.anchor-size$3,r$4.head-size$3))}}return changes.length?(dispatch(state$1.update({changes,scrollIntoView:!0,selection:EditorSelection.create(ranges,state$1.selection.mainIndex),userEvent:`move.line`})),!0):!1}var moveLineUp=({state:state$1,dispatch})=>moveLine(state$1,dispatch,!1),moveLineDown=({state:state$1,dispatch})=>moveLine(state$1,dispatch,!0);function copyLine(state$1,dispatch,forward){if(state$1.readOnly)return!1;let changes=[];for(let block of selectedLineBlocks(state$1))forward?changes.push({from:block.from,insert:state$1.doc.slice(block.from,block.to)+state$1.lineBreak}):changes.push({from:block.to,insert:state$1.lineBreak+state$1.doc.slice(block.from,block.to)});let changeSet=state$1.changes(changes);return dispatch(state$1.update({changes:changeSet,selection:state$1.selection.map(changeSet,forward?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var copyLineUp=({state:state$1,dispatch})=>copyLine(state$1,dispatch,!1),copyLineDown=({state:state$1,dispatch})=>copyLine(state$1,dispatch,!0),deleteLine=view=>{if(view.state.readOnly)return!1;let{state:state$1}=view,changes=state$1.changes(selectedLineBlocks(state$1).map(({from,to})=>(from>0?from--:to<state$1.doc.length&&to++,{from,to}))),selection=updateSel(state$1.selection,range$1=>{let dist$2;if(view.lineWrapping){let block=view.lineBlockAt(range$1.head),pos=view.coordsAtPos(range$1.head,range$1.assoc||1);pos&&(dist$2=block.bottom+view.documentTop-pos.bottom+view.defaultLineHeight/2)}return view.moveVertically(range$1,!0,dist$2)}).map(changes);return view.dispatch({changes,selection,scrollIntoView:!0,userEvent:`delete.line`}),!0};function isBetweenBrackets(state$1,pos){if(/\(\)|\[\]|\{\}/.test(state$1.sliceDoc(pos-1,pos+1)))return{from:pos,to:pos};let context=syntaxTree(state$1).resolveInner(pos),before=context.childBefore(pos),after=context.childAfter(pos),closedBy;return before&&after&&before.to<=pos&&after.from>=pos&&(closedBy=before.type.prop(NodeProp.closedBy))&&closedBy.indexOf(after.name)>-1&&state$1.doc.lineAt(before.to).from==state$1.doc.lineAt(after.from).from&&!/\S/.test(state$1.sliceDoc(before.to,after.from))?{from:before.to,to:after.from}:null}var insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(atEof){return({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let changes=state$1.changeByRange(range$1=>{let{from,to}=range$1,line=state$1.doc.lineAt(from),explode=!atEof&&from==to&&isBetweenBrackets(state$1,from);atEof&&(from=to=(to<=line.to?line:state$1.doc.lineAt(to)).to);let cx$1=new IndentContext(state$1,{simulateBreak:from,simulateDoubleBreak:!!explode}),indent=getIndentation(cx$1,from);for(indent??=countColumn(/^\s*/.exec(state$1.doc.lineAt(from).text)[0],state$1.tabSize);to<line.to&&/\s/.test(line.text[to-line.from]);)to++;explode?{from,to}=explode:from>line.from&&from<line.from+100&&!/\S/.test(line.text.slice(0,from))&&(from=line.from);let insert$1=[``,indentString(state$1,indent)];return explode&&insert$1.push(indentString(state$1,cx$1.lineIndent(line.from,-1))),{changes:{from,to,insert:Text.of(insert$1)},range:EditorSelection.cursor(from+1+insert$1[1].length)}});return dispatch(state$1.update(changes,{scrollIntoView:!0,userEvent:`input`})),!0}}function changeBySelectedLine(state$1,f$2){let atLine=-1;return state$1.changeByRange(range$1=>{let changes=[];for(let pos=range$1.from;pos<=range$1.to;){let line=state$1.doc.lineAt(pos);line.number>atLine&&(range$1.empty||range$1.to>line.from)&&(f$2(line,changes,range$1),atLine=line.number),pos=line.to+1}let changeSet=state$1.changes(changes);return{changes,range:EditorSelection.range(changeSet.mapPos(range$1.anchor,1),changeSet.mapPos(range$1.head,1))}})}var indentSelection=({state:state$1,dispatch})=>{if(state$1.readOnly)return!1;let updated=Object.create(null),context=new IndentContext(state$1,{overrideIndentation:start=>updated[start]??-1}),changes=changeBySelectedLine(state$1,(line,changes$1,range$1)=>{let indent=getIndentation(context,line.from);if(indent==null)return;/\S/.test(line.text)||(indent=0);let cur$1=/^\s*/.exec(line.text)[0],norm=indentString(state$1,indent);(cur$1!=norm||range$1.from<line.from+cur$1.length)&&(updated[line.from]=indent,changes$1.push({from:line.from,to:line.from+cur$1.length,insert:norm}))});return changes.changes.empty||dispatch(state$1.update(changes,{userEvent:`indent`})),!0},indentMore=({state:state$1,dispatch})=>state$1.readOnly?!1:(dispatch(state$1.update(changeBySelectedLine(state$1,(line,changes)=>{changes.push({from:line.from,insert:state$1.facet(indentUnit)})}),{userEvent:`input.indent`})),!0),indentLess=({state:state$1,dispatch})=>state$1.readOnly?!1:(dispatch(state$1.update(changeBySelectedLine(state$1,(line,changes)=>{let space$1=/^\s*/.exec(line.text)[0];if(!space$1)return;let col=countColumn(space$1,state$1.tabSize),keep=0,insert$1=indentString(state$1,Math.max(0,col-getIndentUnit(state$1)));for(;keep<space$1.length&&keep<insert$1.length&&space$1.charCodeAt(keep)==insert$1.charCodeAt(keep);)keep++;changes.push({from:line.from+keep,to:line.from+space$1.length,insert:insert$1.slice(keep)})}),{userEvent:`delete.dedent`})),!0),toggleTabFocusMode=view=>(view.setTabFocusMode(),!0),emacsStyleKeymap=[{key:`Ctrl-b`,run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:`Ctrl-f`,run:cursorCharRight,shift:selectCharRight},{key:`Ctrl-p`,run:cursorLineUp,shift:selectLineUp},{key:`Ctrl-n`,run:cursorLineDown,shift:selectLineDown},{key:`Ctrl-a`,run:cursorLineStart,shift:selectLineStart},{key:`Ctrl-e`,run:cursorLineEnd,shift:selectLineEnd},{key:`Ctrl-d`,run:deleteCharForward},{key:`Ctrl-h`,run:deleteCharBackward},{key:`Ctrl-k`,run:deleteToLineEnd},{key:`Ctrl-Alt-h`,run:deleteGroupBackward},{key:`Ctrl-o`,run:splitLine},{key:`Ctrl-t`,run:transposeChars},{key:`Ctrl-v`,run:cursorPageDown}],standardKeymap=[{key:`ArrowLeft`,run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:cursorGroupLeft,shift:selectGroupLeft,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:cursorLineBoundaryLeft,shift:selectLineBoundaryLeft,preventDefault:!0},{key:`ArrowRight`,run:cursorCharRight,shift:selectCharRight,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:cursorGroupRight,shift:selectGroupRight,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:cursorLineBoundaryRight,shift:selectLineBoundaryRight,preventDefault:!0},{key:`ArrowUp`,run:cursorLineUp,shift:selectLineUp,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:cursorDocStart,shift:selectDocStart},{mac:`Ctrl-ArrowUp`,run:cursorPageUp,shift:selectPageUp},{key:`ArrowDown`,run:cursorLineDown,shift:selectLineDown,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:cursorDocEnd,shift:selectDocEnd},{mac:`Ctrl-ArrowDown`,run:cursorPageDown,shift:selectPageDown},{key:`PageUp`,run:cursorPageUp,shift:selectPageUp},{key:`PageDown`,run:cursorPageDown,shift:selectPageDown},{key:`Home`,run:cursorLineBoundaryBackward,shift:selectLineBoundaryBackward,preventDefault:!0},{key:`Mod-Home`,run:cursorDocStart,shift:selectDocStart},{key:`End`,run:cursorLineBoundaryForward,shift:selectLineBoundaryForward,preventDefault:!0},{key:`Mod-End`,run:cursorDocEnd,shift:selectDocEnd},{key:`Enter`,run:insertNewlineAndIndent,shift:insertNewlineAndIndent},{key:`Mod-a`,run:selectAll},{key:`Backspace`,run:deleteCharBackward,shift:deleteCharBackward,preventDefault:!0},{key:`Delete`,run:deleteCharForward,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:deleteGroupBackward,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:deleteGroupForward,preventDefault:!0},{mac:`Mod-Backspace`,run:deleteLineBoundaryBackward,preventDefault:!0},{mac:`Mod-Delete`,run:deleteLineBoundaryForward,preventDefault:!0}].concat(emacsStyleKeymap.map(b$2=>({mac:b$2.key,run:b$2.run,shift:b$2.shift}))),defaultKeymap=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:cursorSyntaxRight,shift:selectSyntaxRight},{key:`Alt-ArrowUp`,run:moveLineUp},{key:`Shift-Alt-ArrowUp`,run:copyLineUp},{key:`Alt-ArrowDown`,run:moveLineDown},{key:`Shift-Alt-ArrowDown`,run:copyLineDown},{key:`Mod-Alt-ArrowUp`,run:addCursorAbove},{key:`Mod-Alt-ArrowDown`,run:addCursorBelow},{key:`Escape`,run:simplifySelection},{key:`Mod-Enter`,run:insertBlankLine},{key:`Alt-l`,mac:`Ctrl-l`,run:selectLine},{key:`Mod-i`,run:selectParentSyntax,preventDefault:!0},{key:`Mod-[`,run:indentLess},{key:`Mod-]`,run:indentMore},{key:`Mod-Alt-\\`,run:indentSelection},{key:`Shift-Mod-k`,run:deleteLine},{key:`Shift-Mod-\\`,run:cursorMatchingBracket},{key:`Mod-/`,run:toggleComment},{key:`Alt-A`,run:toggleBlockComment},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:toggleTabFocusMode}].concat(standardKeymap);function findStatementAt(ranges,cursor){return ranges.find(r$4=>cursor>=r$4.from&&cursor<=r$4.to)??null}var setStatementRange=StateEffect.define(),setRewritingTooltip=StateEffect.define(),setFoldRegions=StateEffect.define(),setErrorLineEffect=StateEffect.define(),errorLineField=StateField.define({create(){return null},update(line,tr$1){for(let effect of tr$1.effects)if(effect.is(setErrorLineEffect))return effect.value;return tr$1.docChanged?null:line}}),ErrorLineMarker=class extends GutterMarker{toDOM(){let el=document.createElement(`span`);return el.className=`cm-errorMarker`,el.textContent=`●`,el}},errorMarker=new ErrorLineMarker,errorLineGutter=[gutter({class:`cm-errorGutter`,markers:view=>{let line=view.state.field(errorLineField);if(line===null||line<1||line>view.state.doc.lines)return RangeSet.empty;let lineObj=view.state.doc.line(line);return RangeSet.of([errorMarker.range(lineObj.from)])}}),ViewPlugin.define(view=>{let last=view.state.field(errorLineField);return{update(update$1){let cur$1=update$1.state.field(errorLineField);cur$1!==last&&(last=cur$1,update$1.view.requestMeasure())}}})],errorLineDecoration=Decoration.line({class:`cm-error-line`}),errorLineDecorationField=StateField.define({create(){return Decoration.none},update(prev,tr$1){let line=tr$1.state.field(errorLineField);if(line===null||line<1||line>tr$1.state.doc.lines)return prev===Decoration.none?prev:Decoration.none;let lineObj=tr$1.state.doc.line(line);return Decoration.set([errorLineDecoration.range(lineObj.from)])},provide:f$2=>EditorView.decorations.from(f$2)}),statementHighlight=Decoration.mark({class:`cm-active-statement`}),statementHighlightField=StateField.define({create(){return Decoration.none},update(decorations$2,tr$1){for(let effect of tr$1.effects)if(effect.is(setStatementRange)){if(effect.value){let docLength=tr$1.state.doc.length;return effect.value.from<0||effect.value.from>docLength||effect.value.to<0||effect.value.to>docLength?Decoration.none:Decoration.set([statementHighlight.range(effect.value.from,effect.value.to)])}return Decoration.none}return decorations$2},provide:f$2=>EditorView.decorations.from(f$2)}),foldRegionsField=StateField.define({create(){return[]},update(regions,tr$1){for(let effect of tr$1.effects)if(effect.is(setFoldRegions))return effect.value;return regions}}),rewritingTooltipPosField=StateField.define({create(){return null},update(pos,tr$1){for(let effect of tr$1.effects)if(effect.is(setRewritingTooltip))return effect.value?.pos??null;return pos}}),sqlFoldService=foldService.of((state$1,lineStart,lineEnd)=>{let regions=state$1.field(foldRegionsField),docLength=state$1.doc.length;for(let region of regions)if(!(region.from<0||region.from>docLength||region.to<0||region.to>docLength)&&state$1.doc.lineAt(region.from).from===lineStart&&region.to>lineEnd){let firstLineEnd=state$1.doc.lineAt(region.from).to,endLine=state$1.doc.lineAt(region.to),foldTo=region.to;return endLine.from===region.to&&endLine.number>1&&(foldTo=state$1.doc.line(endLine.number-1).to),{from:firstLineEnd,to:foldTo}}return null}),FoldMarker=class extends GutterMarker{constructor(open){super(),this.open=open}toDOM(){let marker=document.createElement(`span`);return marker.className=`cm-foldMarker`,marker.textContent=this.open?`▼`:`▶`,marker}},openMarker=new FoldMarker(!0),closedMarker=new FoldMarker(!1),sqlFoldGutter=[codeFolding(),gutter({class:`cm-foldGutter`,markers:view=>{let builder=[],regions=view.state.field(foldRegionsField),folded=foldedRanges(view.state),docLength=view.state.doc.length;for(let region of regions){if(region.from<0||region.from>docLength||region.to<0||region.to>docLength)continue;let line=view.state.doc.lineAt(region.from),endLine=view.state.doc.lineAt(region.to);if(line.number>=endLine.number)continue;let isFolded=!1,foldRange=foldable(view.state,line.from,line.to);foldRange&&folded.between(foldRange.from,foldRange.to,()=>{isFolded=!0}),builder.push({from:line.from,marker:isFolded?closedMarker:openMarker})}return RangeSet.of(builder.map(b$2=>b$2.marker.range(b$2.from)),!0)},initialSpacer:()=>openMarker,domEventHandlers:{click:(view,line)=>{let folded=foldedRanges(view.state),existingFold=null;if(folded.between(line.from,line.to,(from,to)=>{view.state.doc.lineAt(from).from===line.from&&(existingFold={from,to})}),existingFold)return view.dispatch({effects:unfoldEffect.of(existingFold)}),!0;let foldRange=foldable(view.state,line.from,line.to);return foldRange?(view.dispatch({effects:foldEffect.of({from:foldRange.from,to:foldRange.to})}),!0):!1}}}),ViewPlugin.define(view=>{let lastRegions=view.state.field(foldRegionsField);return{update(update$1){let newRegions=update$1.state.field(foldRegionsField);newRegions!==lastRegions&&(lastRegions=newRegions,view.requestMeasure())}}})];function createRewritingTooltipGlobal(){let container=document.createElement(`div`);return container.className=`cm-rewriting-indicator`,container.innerHTML=`
66
66
  <div class="flex gap-1">
67
67
  <span class="size-2 rounded-full bg-blue-400 animate-bounce"></span>
@@ -83,7 +83,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
83
83
  `,s$2=`"`,a$2=s$2+s$2,i$4=!1,r$5=null,o$3=!1,h$2=((()=>{if(typeof t$1==`object`){if(typeof t$1.delimiter!=`string`||v$1.BAD_DELIMITERS.filter(function(e$1){return t$1.delimiter.indexOf(e$1)!==-1}).length||(m$3=t$1.delimiter),typeof t$1.quotes!=`boolean`&&typeof t$1.quotes!=`function`&&!Array.isArray(t$1.quotes)||(n$1=t$1.quotes),typeof t$1.skipEmptyLines!=`boolean`&&typeof t$1.skipEmptyLines!=`string`||(i$4=t$1.skipEmptyLines),typeof t$1.newline==`string`&&(y$3=t$1.newline),typeof t$1.quoteChar==`string`&&(s$2=t$1.quoteChar),typeof t$1.header==`boolean`&&(_$3=t$1.header),Array.isArray(t$1.columns)){if(t$1.columns.length===0)throw Error(`Option columns is empty`);r$5=t$1.columns}t$1.escapeChar!==void 0&&(a$2=t$1.escapeChar+s$2),t$1.escapeFormulae instanceof RegExp?o$3=t$1.escapeFormulae:typeof t$1.escapeFormulae==`boolean`&&t$1.escapeFormulae&&(o$3=/^[=+\-@\t\r].*$/)}})(),new RegExp(P$2(s$2),`g`));if(typeof e==`string`&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u$2(null,e,i$4);if(typeof e[0]==`object`)return u$2(r$5||Object.keys(e[0]),e,i$4)}else if(typeof e==`object`)return typeof e.data==`string`&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||=e.meta&&e.meta.fields||r$5,e.fields||=Array.isArray(e.data[0])?e.fields:typeof e.data[0]==`object`?Object.keys(e.data[0]):[],Array.isArray(e.data[0])||typeof e.data[0]==`object`||(e.data=[e.data])),u$2(e.fields||[],e.data||[],i$4);throw Error(`Unable to serialize unrecognized input`);function u$2(e$1,t$2,i$5){var r$6=``,n$2=(typeof e$1==`string`&&(e$1=JSON.parse(e$1)),typeof t$2==`string`&&(t$2=JSON.parse(t$2)),Array.isArray(e$1)&&0<e$1.length),s$3=!Array.isArray(t$2[0]);if(n$2&&_$3){for(var a$3=0;a$3<e$1.length;a$3++)0<a$3&&(r$6+=m$3),r$6+=k$2(e$1[a$3],a$3);0<t$2.length&&(r$6+=y$3)}for(var o$4=0;o$4<t$2.length;o$4++){var h$3=(n$2?e$1:t$2[o$4]).length,u$3=!1,d$2=n$2?Object.keys(t$2[o$4]).length===0:t$2[o$4].length===0;if(i$5&&!n$2&&(u$3=i$5===`greedy`?t$2[o$4].join(``).trim()===``:t$2[o$4].length===1&&t$2[o$4][0].length===0),i$5===`greedy`&&n$2){for(var f$3=[],l$3=0;l$3<h$3;l$3++){var c$1=s$3?e$1[l$3]:l$3;f$3.push(t$2[o$4][c$1])}u$3=f$3.join(``).trim()===``}if(!u$3){for(var p$2=0;p$2<h$3;p$2++){0<p$2&&!d$2&&(r$6+=m$3);var g$1=n$2&&s$3?e$1[p$2]:p$2;r$6+=k$2(t$2[o$4][g$1],p$2)}o$4<t$2.length-1&&(!i$5||0<h$3&&!d$2)&&(r$6+=y$3)}}return r$6}function k$2(e$1,t$2){var i$5,r$6;return e$1==null?``:e$1.constructor===Date?JSON.stringify(e$1).slice(1,25):(r$6=!1,o$3&&typeof e$1==`string`&&o$3.test(e$1)&&(e$1=`'`+e$1,r$6=!0),i$5=e$1.toString().replace(h$2,a$2),(r$6=r$6||!0===n$1||typeof n$1==`function`&&n$1(e$1,t$2)||Array.isArray(n$1)&&n$1[t$2]||((e$2,t$3)=>{for(var i$6=0;i$6<t$3.length;i$6++)if(-1<e$2.indexOf(t$3[i$6]))return!0;return!1})(i$5,v$1.BAD_DELIMITERS)||-1<i$5.indexOf(m$3)||i$5.charAt(0)===` `||i$5.charAt(i$5.length-1)===` `)?s$2+i$5+s$2:i$5)}},v$1.RECORD_SEP=``,v$1.UNIT_SEP=``,v$1.BYTE_ORDER_MARK=``,v$1.BAD_DELIMITERS=[`\r`,`
84
84
  `,`"`,v$1.BYTE_ORDER_MARK],v$1.WORKERS_SUPPORTED=!s$1&&!!n.Worker,v$1.NODE_STREAM_INPUT=1,v$1.LocalChunkSize=10485760,v$1.RemoteChunkSize=5242880,v$1.DefaultDelimiter=`,`,v$1.Parser=E$2,v$1.ParserHandle=i$3,v$1.NetworkStreamer=f$2,v$1.FileStreamer=l$2,v$1.StringStreamer=c,v$1.ReadableStreamStreamer=p$1,n.jQuery&&((d$1=n.jQuery).fn.parse=function(o$3){var i$4=o$3.config||{},h$2=[];return this.each(function(e$1){if(!(d$1(this).prop(`tagName`).toUpperCase()===`INPUT`&&d$1(this).attr(`type`).toLowerCase()===`file`&&n.FileReader)||!this.files||this.files.length===0)return!0;for(var t$1=0;t$1<this.files.length;t$1++)h$2.push({file:this.files[t$1],inputElem:this,instanceConfig:d$1.extend({},i$4)})}),e(),this;function e(){if(h$2.length===0)U$2(o$3.complete)&&o$3.complete();else{var e$1,t$1,i$5,r$5,n$1=h$2[0];if(U$2(o$3.before)){var s$2=o$3.before(n$1.file,n$1.inputElem);if(typeof s$2==`object`){if(s$2.action===`abort`)return e$1=`AbortError`,t$1=n$1.file,i$5=n$1.inputElem,r$5=s$2.reason,void(U$2(o$3.error)&&o$3.error({name:e$1},t$1,i$5,r$5));if(s$2.action===`skip`)return void u$2();typeof s$2.config==`object`&&(n$1.instanceConfig=d$1.extend(n$1.instanceConfig,s$2.config))}else if(s$2===`skip`)return void u$2()}var a$2=n$1.instanceConfig.complete;n$1.instanceConfig.complete=function(e$2){U$2(a$2)&&a$2(e$2,n$1.file,n$1.inputElem),u$2()},v$1.parse(n$1.file,n$1.instanceConfig)}}function u$2(){h$2.splice(0,1),e()}}),a$1&&(n.onmessage=function(e){e=e.data,v$1.WORKER_ID===void 0&&e&&(v$1.WORKER_ID=e.workerId),typeof e.input==`string`?n.postMessage({workerId:v$1.WORKER_ID,results:v$1.parse(e.input,e.config),finished:!0}):(n.File&&e.input instanceof File||e.input instanceof Object)&&(e=v$1.parse(e.input,e.config))&&n.postMessage({workerId:v$1.WORKER_ID,results:e,finished:!0})}),(f$2.prototype=Object.create(u$1.prototype)).constructor=f$2,(l$2.prototype=Object.create(u$1.prototype)).constructor=l$2,(c.prototype=Object.create(c.prototype)).constructor=c,(p$1.prototype=Object.create(u$1.prototype)).constructor=p$1,v$1})})),import_papaparse_min=__toESM(require_papaparse_min(),1);function exportToCsv(columns,rows,filename){let columnNames=columns.map(col=>col.name),csv=import_papaparse_min.default.unparse({fields:columnNames,data:rows.map(row=>columnNames.map(name$2=>row[name$2]))}),blob=new Blob([csv],{type:`text/csv;charset=utf-8;`}),url=URL.createObjectURL(blob),link$1=document.createElement(`a`);link$1.href=url,link$1.download=filename,link$1.click(),URL.revokeObjectURL(url)}var Stack=class Stack{constructor(p$1,stack,state$1,reducePos,pos,score$1,buffer,bufferBase,curContext,lookAhead=0,parent){this.p=p$1,this.stack=stack,this.state=state$1,this.reducePos=reducePos,this.pos=pos,this.score=score$1,this.buffer=buffer,this.bufferBase=bufferBase,this.curContext=curContext,this.lookAhead=lookAhead,this.parent=parent}toString(){return`[${this.stack.filter((_$2,i$3)=>i$3%3==0).concat(this.state)}]@${this.pos}${this.score?`!`+this.score:``}`}static start(p$1,state$1,pos=0){let cx$1=p$1.parser.context;return new Stack(p$1,[],state$1,pos,pos,0,[],0,cx$1?new StackContext(cx$1,cx$1.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(state$1,start){this.stack.push(this.state,start,this.bufferBase+this.buffer.length),this.state=state$1}reduce(action){var _a$1;let depth=action>>19,type=action&65535,{parser:parser$1}=this.p,lookaheadRecord=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),dPrec=parser$1.dynamicPrecedence(type);if(dPrec&&(this.score+=dPrec),depth==0){this.pushState(parser$1.getGoto(this.state,type,!0),this.reducePos),type<parser$1.minRepeatTerm&&this.storeNode(type,this.reducePos,this.reducePos,lookaheadRecord?8:4,!0),this.reduceContext(type,this.reducePos);return}let base$1=this.stack.length-(depth-1)*3-(action&262144?6:0),start=base$1?this.stack[base$1-2]:this.p.ranges[0].from,size$3=this.reducePos-start;size$3>=2e3&&!this.p.parser.nodeSet.types[type]?.isAnonymous&&(start==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=size$3):this.p.lastBigReductionSize<size$3&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=start,this.p.lastBigReductionSize=size$3));let bufferBase=base$1?this.stack[base$1-1]:0,count=this.bufferBase+this.buffer.length-bufferBase;if(type<parser$1.minRepeatTerm||action&131072){let pos=parser$1.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(type,start,pos,count+4,!0)}if(action&262144)this.state=this.stack[base$1];else{let baseStateID=this.stack[base$1-3];this.state=parser$1.getGoto(baseStateID,type,!0)}for(;this.stack.length>base$1;)this.stack.pop();this.reduceContext(type,start)}storeNode(term,start,end,size$3=4,mustSink=!1){if(term==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let cur$1=this,top$1=this.buffer.length;if(top$1==0&&cur$1.parent&&(top$1=cur$1.bufferBase-cur$1.parent.bufferBase,cur$1=cur$1.parent),top$1>0&&cur$1.buffer[top$1-4]==0&&cur$1.buffer[top$1-1]>-1){if(start==end)return;if(cur$1.buffer[top$1-2]>=start){cur$1.buffer[top$1-2]=end;return}}}if(!mustSink||this.pos==end)this.buffer.push(term,start,end,size$3);else{let index$4=this.buffer.length;if(index$4>0&&(this.buffer[index$4-4]!=0||this.buffer[index$4-1]<0)){let mustMove=!1;for(let scan$1=index$4;scan$1>0&&this.buffer[scan$1-2]>end;scan$1-=4)if(this.buffer[scan$1-1]>=0){mustMove=!0;break}if(mustMove)for(;index$4>0&&this.buffer[index$4-2]>end;)this.buffer[index$4]=this.buffer[index$4-4],this.buffer[index$4+1]=this.buffer[index$4-3],this.buffer[index$4+2]=this.buffer[index$4-2],this.buffer[index$4+3]=this.buffer[index$4-1],index$4-=4,size$3>4&&(size$3-=4)}this.buffer[index$4]=term,this.buffer[index$4+1]=start,this.buffer[index$4+2]=end,this.buffer[index$4+3]=size$3}}shift(action,type,start,end){if(action&131072)this.pushState(action&65535,this.pos);else if(action&262144)this.pos=end,this.shiftContext(type,start),type<=this.p.parser.maxNode&&this.buffer.push(type,start,end,4);else{let nextState=action,{parser:parser$1}=this.p;this.pos=end;let skipped=parser$1.stateFlag(nextState,1);!skipped&&(end>start||type<=parser$1.maxNode)&&(this.reducePos=end),this.pushState(nextState,skipped?start:Math.min(start,this.reducePos)),this.shiftContext(type,start),type<=parser$1.maxNode&&this.buffer.push(type,start,end,4)}}apply(action,next,nextStart,nextEnd){action&65536?this.reduce(action):this.shift(action,next,nextStart,nextEnd)}useNode(value,next){let index$4=this.p.reused.length-1;(index$4<0||this.p.reused[index$4]!=value)&&(this.p.reused.push(value),index$4++);let start=this.pos;this.reducePos=this.pos=start+value.length,this.pushState(next,start),this.buffer.push(index$4,start,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,value,this,this.p.stream.reset(this.pos-value.length)))}split(){let parent=this,off=parent.buffer.length;for(;off>0&&parent.buffer[off-2]>parent.reducePos;)off-=4;let buffer=parent.buffer.slice(off),base$1=parent.bufferBase+off;for(;parent&&base$1==parent.bufferBase;)parent=parent.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,buffer,base$1,this.curContext,this.lookAhead,parent)}recoverByDelete(next,nextEnd){let isNode$1=next<=this.p.parser.maxNode;isNode$1&&this.storeNode(next,this.pos,nextEnd,4),this.storeNode(0,this.pos,nextEnd,isNode$1?8:4),this.pos=this.reducePos=nextEnd,this.score-=190}canShift(term){for(let sim=new SimulatedStack(this);;){let action=this.p.parser.stateSlot(sim.state,4)||this.p.parser.hasAction(sim.state,term);if(action==0)return!1;if(!(action&65536))return!0;sim.reduce(action)}}recoverByInsert(next){if(this.stack.length>=300)return[];let nextStates=this.p.parser.nextStates(this.state);if(nextStates.length>8||this.stack.length>=120){let best=[];for(let i$3=0,s$1;i$3<nextStates.length;i$3+=2)(s$1=nextStates[i$3+1])!=this.state&&this.p.parser.hasAction(s$1,next)&&best.push(nextStates[i$3],s$1);if(this.stack.length<120)for(let i$3=0;best.length<8&&i$3<nextStates.length;i$3+=2){let s$1=nextStates[i$3+1];best.some((v$1,i$4)=>i$4&1&&v$1==s$1)||best.push(nextStates[i$3],s$1)}nextStates=best}let result=[];for(let i$3=0;i$3<nextStates.length&&result.length<4;i$3+=2){let s$1=nextStates[i$3+1];if(s$1==this.state)continue;let stack=this.split();stack.pushState(s$1,this.pos),stack.storeNode(0,stack.pos,stack.pos,4,!0),stack.shiftContext(nextStates[i$3],this.pos),stack.reducePos=this.pos,stack.score-=200,result.push(stack)}return result}forceReduce(){let{parser:parser$1}=this.p,reduce=parser$1.stateSlot(this.state,5);if(!(reduce&65536))return!1;if(!parser$1.validAction(this.state,reduce)){let depth=reduce>>19,term=reduce&65535,target=this.stack.length-depth*3;if(target<0||parser$1.getGoto(this.stack[target],term,!1)<0){let backup=this.findForcedReduction();if(backup==null)return!1;reduce=backup}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(reduce),!0}findForcedReduction(){let{parser:parser$1}=this.p,seen$1=[],explore=(state$1,depth)=>{if(!seen$1.includes(state$1))return seen$1.push(state$1),parser$1.allActions(state$1,action=>{if(!(action&393216))if(action&65536){let rDepth=(action>>19)-depth;if(rDepth>1){let term=action&65535,target=this.stack.length-rDepth*3;if(target>=0&&parser$1.getGoto(this.stack[target],term,!1)>=0)return rDepth<<19|65536|term}}else{let found=explore(action,depth+1);if(found!=null)return found}})};return explore(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:parser$1}=this.p;return parser$1.data[parser$1.stateSlot(this.state,1)]==65535&&!parser$1.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(other){if(this.state!=other.state||this.stack.length!=other.stack.length)return!1;for(let i$3=0;i$3<this.stack.length;i$3+=3)if(this.stack[i$3]!=other.stack[i$3])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(dialectID){return this.p.parser.dialect.flags[dialectID]}shiftContext(term,start){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,term,this,this.p.stream.reset(start)))}reduceContext(term,start){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,term,this,this.p.stream.reset(start)))}emitContext(){let last=this.buffer.length-1;(last<0||this.buffer[last]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let last=this.buffer.length-1;(last<0||this.buffer[last]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(context){if(context!=this.curContext.context){let newCx=new StackContext(this.curContext.tracker,context);newCx.hash!=this.curContext.hash&&this.emitContext(),this.curContext=newCx}}setLookAhead(lookAhead){return lookAhead<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=lookAhead,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},StackContext=class{constructor(tracker,context){this.tracker=tracker,this.context=context,this.hash=tracker.strict?tracker.hash(context):0}},SimulatedStack=class{constructor(start){this.start=start,this.state=start.state,this.stack=start.stack,this.base=this.stack.length}reduce(action){let term=action&65535,depth=action>>19;depth==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(depth-1)*3,this.state=this.start.p.parser.getGoto(this.stack[this.base-3],term,!0)}},StackBufferCursor=class StackBufferCursor{constructor(stack,pos,index$4){this.stack=stack,this.pos=pos,this.index=index$4,this.buffer=stack.buffer,this.index==0&&this.maybeNext()}static create(stack,pos=stack.bufferBase+stack.buffer.length){return new StackBufferCursor(stack,pos,pos-stack.bufferBase)}maybeNext(){let next=this.stack.parent;next!=null&&(this.index=this.stack.bufferBase-next.bufferBase,this.stack=next,this.buffer=next.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}};function decodeArray(input,Type=Uint16Array){if(typeof input!=`string`)return input;let array=null;for(let pos=0,out=0;pos<input.length;){let value=0;for(;;){let next=input.charCodeAt(pos++),stop=!1;if(next==126){value=65535;break}next>=92&&next--,next>=34&&next--;let digit=next-32;if(digit>=46&&(digit-=46,stop=!0),value+=digit,stop)break;value*=46}array?array[out++]=value:array=new Type(value)}return array}var CachedToken=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},nullToken=new CachedToken,InputStream=class{constructor(input,ranges){this.input=input,this.ranges=ranges,this.chunk=``,this.chunkOff=0,this.chunk2=``,this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=ranges[0].from,this.range=ranges[0],this.end=ranges[ranges.length-1].to,this.readNext()}resolveOffset(offset$3,assoc){let range$1=this.range,index$4=this.rangeIndex,pos=this.pos+offset$3;for(;pos<range$1.from;){if(!index$4)return null;let next=this.ranges[--index$4];pos-=range$1.from-next.to,range$1=next}for(;assoc<0?pos>range$1.to:pos>=range$1.to;){if(index$4==this.ranges.length-1)return null;let next=this.ranges[++index$4];pos+=next.from-range$1.to,range$1=next}return pos}clipPos(pos){if(pos>=this.range.from&&pos<this.range.to)return pos;for(let range$1 of this.ranges)if(range$1.to>pos)return Math.max(pos,range$1.from);return this.end}peek(offset$3){let idx=this.chunkOff+offset$3,pos,result;if(idx>=0&&idx<this.chunk.length)pos=this.pos+offset$3,result=this.chunk.charCodeAt(idx);else{let resolved=this.resolveOffset(offset$3,1);if(resolved==null)return-1;if(pos=resolved,pos>=this.chunk2Pos&&pos<this.chunk2Pos+this.chunk2.length)result=this.chunk2.charCodeAt(pos-this.chunk2Pos);else{let i$3=this.rangeIndex,range$1=this.range;for(;range$1.to<=pos;)range$1=this.ranges[++i$3];this.chunk2=this.input.chunk(this.chunk2Pos=pos),pos+this.chunk2.length>range$1.to&&(this.chunk2=this.chunk2.slice(0,range$1.to-pos)),result=this.chunk2.charCodeAt(0)}}return pos>=this.token.lookAhead&&(this.token.lookAhead=pos+1),result}acceptToken(token$1,endOffset=0){let end=endOffset?this.resolveOffset(endOffset,-1):this.pos;if(end==null||end<this.token.start)throw RangeError(`Token end out of bounds`);this.token.value=token$1,this.token.end=end}acceptTokenTo(token$1,endPos){this.token.value=token$1,this.token.end=endPos}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk,chunkPos}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=chunk,this.chunk2Pos=chunkPos,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let nextChunk=this.input.chunk(this.pos);this.chunk=this.pos+nextChunk.length>this.range.to?nextChunk.slice(0,this.range.to-this.pos):nextChunk,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(n=1){for(this.chunkOff+=n;this.pos+n>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();n-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=n,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk=``,this.next=-1}reset(pos,token$1){if(token$1?(this.token=token$1,token$1.start=pos,token$1.lookAhead=pos+1,token$1.value=token$1.extended=-1):this.token=nullToken,this.pos!=pos){if(this.pos=pos,pos==this.end)return this.setDone(),this;for(;pos<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;pos>=this.range.to;)this.range=this.ranges[++this.rangeIndex];pos>=this.chunkPos&&pos<this.chunkPos+this.chunk.length?this.chunkOff=pos-this.chunkPos:(this.chunk=``,this.chunkOff=0),this.readNext()}return this}read(from,to){if(from>=this.chunkPos&&to<=this.chunkPos+this.chunk.length)return this.chunk.slice(from-this.chunkPos,to-this.chunkPos);if(from>=this.chunk2Pos&&to<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(from-this.chunk2Pos,to-this.chunk2Pos);if(from>=this.range.from&&to<=this.range.to)return this.input.read(from,to);let result=``;for(let r$4 of this.ranges){if(r$4.from>=to)break;r$4.to>from&&(result+=this.input.read(Math.max(r$4.from,from),Math.min(r$4.to,to)))}return result}},TokenGroup=class{constructor(data,id){this.data=data,this.id=id}token(input,stack){let{parser:parser$1}=stack.p;readToken(this.data,input,stack,this.id,parser$1.data,parser$1.tokenPrecTable)}};TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;var LocalTokenGroup=class{constructor(data,precTable,elseToken){this.precTable=precTable,this.elseToken=elseToken,this.data=typeof data==`string`?decodeArray(data):data}token(input,stack){let start=input.pos,skipped=0;for(;;){let atEof=input.next<0,nextPos=input.resolveOffset(1,1);if(readToken(this.data,input,stack,0,this.data,this.precTable),input.token.value>-1)break;if(this.elseToken==null)return;if(atEof||skipped++,nextPos==null)break;input.reset(nextPos,input.token)}skipped&&(input.reset(start,input.token),input.acceptToken(this.elseToken,skipped))}};LocalTokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;function readToken(data,input,stack,group,precTable,precOffset){let state$1=0,groupMask=1<<group,{dialect}=stack.p.parser;scan:for(;(groupMask&data[state$1])!=0;){let accEnd=data[state$1+1];for(let i$3=state$1+3;i$3<accEnd;i$3+=2)if((data[i$3+1]&groupMask)>0){let term=data[i$3];if(dialect.allows(term)&&(input.token.value==-1||input.token.value==term||overrides(term,input.token.value,precTable,precOffset))){input.acceptToken(term);break}}let next=input.next,low=0,high=data[state$1+2];if(input.next<0&&high>low&&data[accEnd+high*3-3]==65535){state$1=data[accEnd+high*3-1];continue scan}for(;low<high;){let mid=low+high>>1,index$4=accEnd+mid+(mid<<1),from=data[index$4],to=data[index$4+1]||65536;if(next<from)high=mid;else if(next>=to)low=mid+1;else{state$1=data[index$4+2],input.advance();continue scan}}break}}function findOffset(data,start,term){for(let i$3=start,next;(next=data[i$3])!=65535;i$3++)if(next==term)return i$3-start;return-1}function overrides(token$1,prev,tableData,tableOffset){let iPrev=findOffset(tableData,tableOffset,prev);return iPrev<0||findOffset(tableData,tableOffset,token$1)<iPrev}var verbose=typeof process<`u`&&/\bparse\b/.test({}.LOG),stackIDs=null;function cutAt(tree,pos,side){let cursor=tree.cursor(IterMode.IncludeAnonymous);for(cursor.moveTo(pos);;)if(!(side<0?cursor.childBefore(pos):cursor.childAfter(pos)))for(;;){if((side<0?cursor.to<pos:cursor.from>pos)&&!cursor.type.isError)return side<0?Math.max(0,Math.min(cursor.to-1,pos-25)):Math.min(tree.length,Math.max(cursor.from+1,pos+25));if(side<0?cursor.prevSibling():cursor.nextSibling())break;if(!cursor.parent())return side<0?0:tree.length}}var FragmentCursor=class{constructor(fragments,nodeSet){this.fragments=fragments,this.nodeSet=nodeSet,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let fr=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(fr){for(this.safeFrom=fr.openStart?cutAt(fr.tree,fr.from+fr.offset,1)-fr.offset:fr.from,this.safeTo=fr.openEnd?cutAt(fr.tree,fr.to+fr.offset,-1)-fr.offset:fr.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(fr.tree),this.start.push(-fr.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(pos){if(pos<this.nextStart)return null;for(;this.fragment&&this.safeTo<=pos;)this.nextFragment();if(!this.fragment)return null;for(;;){let last=this.trees.length-1;if(last<0)return this.nextFragment(),null;let top$1=this.trees[last],index$4=this.index[last];if(index$4==top$1.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let next=top$1.children[index$4],start=this.start[last]+top$1.positions[index$4];if(start>pos)return this.nextStart=start,null;if(next instanceof Tree){if(start==pos){if(start<this.safeFrom)return null;let end=start+next.length;if(end<=this.safeTo){let lookAhead=next.prop(NodeProp.lookAhead);if(!lookAhead||end+lookAhead<this.fragment.to)return next}}this.index[last]++,start+next.length>=Math.max(this.safeFrom,pos)&&(this.trees.push(next),this.start.push(start),this.index.push(0))}else this.index[last]++,this.nextStart=start+next.length}}},TokenCache=class{constructor(parser$1,stream){this.stream=stream,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=parser$1.tokenizers.map(_$2=>new CachedToken)}getActions(stack){let actionIndex=0,main$1=null,{parser:parser$1}=stack.p,{tokenizers}=parser$1,mask=parser$1.stateSlot(stack.state,3),context=stack.curContext?stack.curContext.hash:0,lookAhead=0;for(let i$3=0;i$3<tokenizers.length;i$3++){if(!(1<<i$3&mask))continue;let tokenizer=tokenizers[i$3],token$1=this.tokens[i$3];if(!(main$1&&!tokenizer.fallback)&&((tokenizer.contextual||token$1.start!=stack.pos||token$1.mask!=mask||token$1.context!=context)&&(this.updateCachedToken(token$1,tokenizer,stack),token$1.mask=mask,token$1.context=context),token$1.lookAhead>token$1.end+25&&(lookAhead=Math.max(token$1.lookAhead,lookAhead)),token$1.value!=0)){let startIndex=actionIndex;if(token$1.extended>-1&&(actionIndex=this.addActions(stack,token$1.extended,token$1.end,actionIndex)),actionIndex=this.addActions(stack,token$1.value,token$1.end,actionIndex),!tokenizer.extend&&(main$1=token$1,actionIndex>startIndex))break}}for(;this.actions.length>actionIndex;)this.actions.pop();return lookAhead&&stack.setLookAhead(lookAhead),!main$1&&stack.pos==this.stream.end&&(main$1=new CachedToken,main$1.value=stack.p.parser.eofTerm,main$1.start=main$1.end=stack.pos,actionIndex=this.addActions(stack,main$1.value,main$1.end,actionIndex)),this.mainToken=main$1,this.actions}getMainToken(stack){if(this.mainToken)return this.mainToken;let main$1=new CachedToken,{pos,p:p$1}=stack;return main$1.start=pos,main$1.end=Math.min(pos+1,p$1.stream.end),main$1.value=pos==p$1.stream.end?p$1.parser.eofTerm:0,main$1}updateCachedToken(token$1,tokenizer,stack){let start=this.stream.clipPos(stack.pos);if(tokenizer.token(this.stream.reset(start,token$1),stack),token$1.value>-1){let{parser:parser$1}=stack.p;for(let i$3=0;i$3<parser$1.specialized.length;i$3++)if(parser$1.specialized[i$3]==token$1.value){let result=parser$1.specializers[i$3](this.stream.read(token$1.start,token$1.end),stack);if(result>=0&&stack.p.parser.dialect.allows(result>>1)){result&1?token$1.extended=result>>1:token$1.value=result>>1;break}}}else token$1.value=0,token$1.end=this.stream.clipPos(start+1)}putAction(action,token$1,end,index$4){for(let i$3=0;i$3<index$4;i$3+=3)if(this.actions[i$3]==action)return index$4;return this.actions[index$4++]=action,this.actions[index$4++]=token$1,this.actions[index$4++]=end,index$4}addActions(stack,token$1,end,index$4){let{state:state$1}=stack,{parser:parser$1}=stack.p,{data}=parser$1;for(let set=0;set<2;set++)for(let i$3=parser$1.stateSlot(state$1,set?2:1);;i$3+=3){if(data[i$3]==65535)if(data[i$3+1]==1)i$3=pair(data,i$3+2);else{index$4==0&&data[i$3+1]==2&&(index$4=this.putAction(pair(data,i$3+2),token$1,end,index$4));break}data[i$3]==token$1&&(index$4=this.putAction(pair(data,i$3+1),token$1,end,index$4))}return index$4}},Parse=class{constructor(parser$1,input,fragments,ranges){this.parser=parser$1,this.input=input,this.ranges=ranges,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new InputStream(input,ranges),this.tokens=new TokenCache(parser$1,this.stream),this.topTerm=parser$1.top[1];let{from}=ranges[0];this.stacks=[Stack.start(this,parser$1.top[0],from)],this.fragments=fragments.length&&this.stream.end-from>parser$1.bufferLength*4?new FragmentCursor(fragments,parser$1.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let stacks=this.stacks,pos=this.minStackPos,newStacks=this.stacks=[],stopped,stoppedTokens;if(this.bigReductionCount>300&&stacks.length==1){let[s$1]=stacks;for(;s$1.forceReduce()&&s$1.stack.length&&s$1.stack[s$1.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let i$3=0;i$3<stacks.length;i$3++){let stack=stacks[i$3];for(;;){if(this.tokens.mainToken=null,stack.pos>pos)newStacks.push(stack);else if(this.advanceStack(stack,newStacks,stacks))continue;else{stopped||(stopped=[],stoppedTokens=[]),stopped.push(stack);let tok=this.tokens.getMainToken(stack);stoppedTokens.push(tok.value,tok.end)}break}}if(!newStacks.length){let finished=stopped&&findFinished(stopped);if(finished)return verbose&&console.log(`Finish with `+this.stackID(finished)),this.stackToTree(finished);if(this.parser.strict)throw verbose&&stopped&&console.log(`Stuck with token `+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):`none`)),SyntaxError(`No parse at `+pos);this.recovering||=5}if(this.recovering&&stopped){let finished=this.stoppedAt!=null&&stopped[0].pos>this.stoppedAt?stopped[0]:this.runRecovery(stopped,stoppedTokens,newStacks);if(finished)return verbose&&console.log(`Force-finish `+this.stackID(finished)),this.stackToTree(finished.forceAll())}if(this.recovering){let maxRemaining=this.recovering==1?1:this.recovering*3;if(newStacks.length>maxRemaining)for(newStacks.sort((a$1,b$2)=>b$2.score-a$1.score);newStacks.length>maxRemaining;)newStacks.pop();newStacks.some(s$1=>s$1.reducePos>pos)&&this.recovering--}else if(newStacks.length>1){outer:for(let i$3=0;i$3<newStacks.length-1;i$3++){let stack=newStacks[i$3];for(let j$1=i$3+1;j$1<newStacks.length;j$1++){let other=newStacks[j$1];if(stack.sameState(other)||stack.buffer.length>500&&other.buffer.length>500)if((stack.score-other.score||stack.buffer.length-other.buffer.length)>0)newStacks.splice(j$1--,1);else{newStacks.splice(i$3--,1);continue outer}}}newStacks.length>12&&(newStacks.sort((a$1,b$2)=>b$2.score-a$1.score),newStacks.splice(12,newStacks.length-12))}this.minStackPos=newStacks[0].pos;for(let i$3=1;i$3<newStacks.length;i$3++)newStacks[i$3].pos<this.minStackPos&&(this.minStackPos=newStacks[i$3].pos);return null}stopAt(pos){if(this.stoppedAt!=null&&this.stoppedAt<pos)throw RangeError(`Can't move stoppedAt forward`);this.stoppedAt=pos}advanceStack(stack,stacks,split){let start=stack.pos,{parser:parser$1}=this,base$1=verbose?this.stackID(stack)+` -> `:``;if(this.stoppedAt!=null&&start>this.stoppedAt)return stack.forceReduce()?stack:null;if(this.fragments){let strictCx=stack.curContext&&stack.curContext.tracker.strict,cxHash=strictCx?stack.curContext.hash:0;for(let cached=this.fragments.nodeAt(start);cached;){let match=this.parser.nodeSet.types[cached.type.id]==cached.type?parser$1.getGoto(stack.state,cached.type.id):-1;if(match>-1&&cached.length&&(!strictCx||(cached.prop(NodeProp.contextHash)||0)==cxHash))return stack.useNode(cached,match),verbose&&console.log(base$1+this.stackID(stack)+` (via reuse of ${parser$1.getName(cached.type.id)})`),!0;if(!(cached instanceof Tree)||cached.children.length==0||cached.positions[0]>0)break;let inner=cached.children[0];if(inner instanceof Tree&&cached.positions[0]==0)cached=inner;else break}}let defaultReduce=parser$1.stateSlot(stack.state,4);if(defaultReduce>0)return stack.reduce(defaultReduce),verbose&&console.log(base$1+this.stackID(stack)+` (via always-reduce ${parser$1.getName(defaultReduce&65535)})`),!0;if(stack.stack.length>=8400)for(;stack.stack.length>6e3&&stack.forceReduce(););let actions=this.tokens.getActions(stack);for(let i$3=0;i$3<actions.length;){let action=actions[i$3++],term=actions[i$3++],end=actions[i$3++],last=i$3==actions.length||!split,localStack=last?stack:stack.split(),main$1=this.tokens.mainToken;if(localStack.apply(action,term,main$1?main$1.start:localStack.pos,end),verbose&&console.log(base$1+this.stackID(localStack)+` (via ${action&65536?`reduce of ${parser$1.getName(action&65535)}`:`shift`} for ${parser$1.getName(term)} @ ${start}${localStack==stack?``:`, split`})`),last)return!0;localStack.pos>start?stacks.push(localStack):split.push(localStack)}return!1}advanceFully(stack,newStacks){let pos=stack.pos;for(;;){if(!this.advanceStack(stack,null,null))return!1;if(stack.pos>pos)return pushStackDedup(stack,newStacks),!0}}runRecovery(stacks,tokens,newStacks){let finished=null,restarted=!1;for(let i$3=0;i$3<stacks.length;i$3++){let stack=stacks[i$3],token$1=tokens[i$3<<1],tokenEnd=tokens[(i$3<<1)+1],base$1=verbose?this.stackID(stack)+` -> `:``;if(stack.deadEnd&&(restarted||(restarted=!0,stack.restart(),verbose&&console.log(base$1+this.stackID(stack)+` (restarted)`),this.advanceFully(stack,newStacks))))continue;let force=stack.split(),forceBase=base$1;for(let j$1=0;j$1<10&&force.forceReduce()&&(verbose&&console.log(forceBase+this.stackID(force)+` (via force-reduce)`),!this.advanceFully(force,newStacks));j$1++)verbose&&(forceBase=this.stackID(force)+` -> `);for(let insert$1 of stack.recoverByInsert(token$1))verbose&&console.log(base$1+this.stackID(insert$1)+` (via recover-insert)`),this.advanceFully(insert$1,newStacks);this.stream.end>stack.pos?(tokenEnd==stack.pos&&(tokenEnd++,token$1=0),stack.recoverByDelete(token$1,tokenEnd),verbose&&console.log(base$1+this.stackID(stack)+` (via recover-delete ${this.parser.getName(token$1)})`),pushStackDedup(stack,newStacks)):(!finished||finished.score<force.score)&&(finished=force)}return finished}stackToTree(stack){return stack.close(),Tree.build({buffer:StackBufferCursor.create(stack),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:stack.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(stack){let id=(stackIDs||=new WeakMap).get(stack);return id||stackIDs.set(stack,id=String.fromCodePoint(this.nextStackID++)),id+stack}};function pushStackDedup(stack,newStacks){for(let i$3=0;i$3<newStacks.length;i$3++){let other=newStacks[i$3];if(other.pos==stack.pos&&other.sameState(stack)){newStacks[i$3].score<stack.score&&(newStacks[i$3]=stack);return}}newStacks.push(stack)}var Dialect=class{constructor(source,flags,disabled$1){this.source=source,this.flags=flags,this.disabled=disabled$1}allows(term){return!this.disabled||this.disabled[term]==0}},LRParser=class LRParser extends Parser{constructor(spec){if(super(),this.wrappers=[],spec.version!=14)throw RangeError(`Parser version (${spec.version}) doesn't match runtime version (14)`);let nodeNames=spec.nodeNames.split(` `);this.minRepeatTerm=nodeNames.length;for(let i$3=0;i$3<spec.repeatNodeCount;i$3++)nodeNames.push(``);let topTerms=Object.keys(spec.topRules).map(r$4=>spec.topRules[r$4][1]),nodeProps=[];for(let i$3=0;i$3<nodeNames.length;i$3++)nodeProps.push([]);function setProp$1(nodeID,prop,value){nodeProps[nodeID].push([prop,prop.deserialize(String(value))])}if(spec.nodeProps)for(let propSpec of spec.nodeProps){let prop=propSpec[0];typeof prop==`string`&&(prop=NodeProp[prop]);for(let i$3=1;i$3<propSpec.length;){let next=propSpec[i$3++];if(next>=0)setProp$1(next,prop,propSpec[i$3++]);else{let value=propSpec[i$3+-next];for(let j$1=-next;j$1>0;j$1--)setProp$1(propSpec[i$3++],prop,value);i$3++}}}this.nodeSet=new NodeSet(nodeNames.map((name$2,i$3)=>NodeType.define({name:i$3>=this.minRepeatTerm?void 0:name$2,id:i$3,props:nodeProps[i$3],top:topTerms.indexOf(i$3)>-1,error:i$3==0,skipped:spec.skippedNodes&&spec.skippedNodes.indexOf(i$3)>-1}))),spec.propSources&&(this.nodeSet=this.nodeSet.extend(...spec.propSources)),this.strict=!1,this.bufferLength=DefaultBufferLength;let tokenArray=decodeArray(spec.tokenData);this.context=spec.context,this.specializerSpecs=spec.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let i$3=0;i$3<this.specializerSpecs.length;i$3++)this.specialized[i$3]=this.specializerSpecs[i$3].term;this.specializers=this.specializerSpecs.map(getSpecializer),this.states=decodeArray(spec.states,Uint32Array),this.data=decodeArray(spec.stateData),this.goto=decodeArray(spec.goto),this.maxTerm=spec.maxTerm,this.tokenizers=spec.tokenizers.map(value=>typeof value==`number`?new TokenGroup(tokenArray,value):value),this.topRules=spec.topRules,this.dialects=spec.dialects||{},this.dynamicPrecedences=spec.dynamicPrecedences||null,this.tokenPrecTable=spec.tokenPrec,this.termNames=spec.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(input,fragments,ranges){let parse$2=new Parse(this,input,fragments,ranges);for(let w$2 of this.wrappers)parse$2=w$2(parse$2,input,fragments,ranges);return parse$2}getGoto(state$1,term,loose=!1){let table$1=this.goto;if(term>=table$1[0])return-1;for(let pos=table$1[term+1];;){let groupTag=table$1[pos++],last=groupTag&1,target=table$1[pos++];if(last&&loose)return target;for(let end=pos+(groupTag>>1);pos<end;pos++)if(table$1[pos]==state$1)return target;if(last)return-1}}hasAction(state$1,terminal){let data=this.data;for(let set=0;set<2;set++)for(let i$3=this.stateSlot(state$1,set?2:1),next;;i$3+=3){if((next=data[i$3])==65535)if(data[i$3+1]==1)next=data[i$3=pair(data,i$3+2)];else if(data[i$3+1]==2)return pair(data,i$3+2);else break;if(next==terminal||next==0)return pair(data,i$3+1)}return 0}stateSlot(state$1,slot){return this.states[state$1*6+slot]}stateFlag(state$1,flag){return(this.stateSlot(state$1,0)&flag)>0}validAction(state$1,action){return!!this.allActions(state$1,a$1=>a$1==action?!0:null)}allActions(state$1,action){let deflt=this.stateSlot(state$1,4),result=deflt?action(deflt):void 0;for(let i$3=this.stateSlot(state$1,1);result==null;i$3+=3){if(this.data[i$3]==65535)if(this.data[i$3+1]==1)i$3=pair(this.data,i$3+2);else break;result=action(pair(this.data,i$3+1))}return result}nextStates(state$1){let result=[];for(let i$3=this.stateSlot(state$1,1);;i$3+=3){if(this.data[i$3]==65535)if(this.data[i$3+1]==1)i$3=pair(this.data,i$3+2);else break;if(!(this.data[i$3+2]&1)){let value=this.data[i$3+1];result.some((v$1,i$4)=>i$4&1&&v$1==value)||result.push(this.data[i$3],value)}}return result}configure(config$1){let copy=Object.assign(Object.create(LRParser.prototype),this);if(config$1.props&&(copy.nodeSet=this.nodeSet.extend(...config$1.props)),config$1.top){let info=this.topRules[config$1.top];if(!info)throw RangeError(`Invalid top rule name ${config$1.top}`);copy.top=info}return config$1.tokenizers&&(copy.tokenizers=this.tokenizers.map(t$1=>{let found=config$1.tokenizers.find(r$4=>r$4.from==t$1);return found?found.to:t$1})),config$1.specializers&&(copy.specializers=this.specializers.slice(),copy.specializerSpecs=this.specializerSpecs.map((s$1,i$3)=>{let found=config$1.specializers.find(r$4=>r$4.from==s$1.external);if(!found)return s$1;let spec=Object.assign(Object.assign({},s$1),{external:found.to});return copy.specializers[i$3]=getSpecializer(spec),spec})),config$1.contextTracker&&(copy.context=config$1.contextTracker),config$1.dialect&&(copy.dialect=this.parseDialect(config$1.dialect)),config$1.strict!=null&&(copy.strict=config$1.strict),config$1.wrap&&(copy.wrappers=copy.wrappers.concat(config$1.wrap)),config$1.bufferLength!=null&&(copy.bufferLength=config$1.bufferLength),copy}hasWrappers(){return this.wrappers.length>0}getName(term){return this.termNames?this.termNames[term]:String(term<=this.maxNode&&this.nodeSet.types[term].name||term)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(term){let prec$1=this.dynamicPrecedences;return prec$1==null?0:prec$1[term]||0}parseDialect(dialect){let values=Object.keys(this.dialects),flags=values.map(()=>!1);if(dialect)for(let part of dialect.split(` `)){let id=values.indexOf(part);id>=0&&(flags[id]=!0)}let disabled$1=null;for(let i$3=0;i$3<values.length;i$3++)if(!flags[i$3])for(let j$1=this.dialects[values[i$3]],id;(id=this.data[j$1++])!=65535;)(disabled$1||=new Uint8Array(this.maxTerm+1))[id]=1;return new Dialect(dialect,flags,disabled$1)}static deserialize(spec){return new LRParser(spec)}};function pair(data,off){return data[off]|data[off+1]<<16}function findFinished(stacks){let best=null;for(let stack of stacks){let stopped=stack.p.stoppedAt;(stack.pos==stack.p.stream.end||stopped!=null&&stack.pos>stopped)&&stack.p.parser.stateFlag(stack.state,2)&&(!best||best.score<stack.score)&&(best=stack)}return best}function getSpecializer(spec){if(spec.external){let mask=spec.extend?1:0;return(value,stack)=>spec.external(value,stack)<<1|mask}return spec.get}var jsonHighlighting=styleTags({String:tags.string,Number:tags.number,"True False":tags.bool,PropertyName:tags.propertyName,Null:tags.null,", :":tags.separator,"[ ]":tags.squareBracket,"{ }":tags.brace}),parser=LRParser.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:`#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O`,goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:`⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array`,maxTerm:25,nodeProps:[[`isolate`,-2,6,11,``],[`openedBy`,7,`{`,14,`[`],[`closedBy`,8,`}`,15,`]`]],propSources:[jsonHighlighting],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),jsonLanguage=LRLanguage.define({name:`json`,parser:parser.configure({props:[indentNodeProp.add({Object:continuedIndent({except:/^\s*\}/}),Array:continuedIndent({except:/^\s*\]/})}),foldNodeProp.add({"Object Array":foldInside})]}),languageData:{closeBrackets:{brackets:[`[`,`{`,`"`]},indentOnInput:/^\s*[\}\]]$/}});function json(){return new LanguageSupport(jsonLanguage)}var baseTheme=EditorView.theme({"&":{fontSize:`13px`,backgroundColor:`transparent`},".cm-content":{padding:`0`,fontFamily:`ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace`},".cm-line":{padding:`0`},".cm-gutters":{display:`none`},"&.cm-focused":{outline:`none`},".cm-scroller":{overflow:`auto`}});function JsonViewer({value,className}){let containerRef=(0,import_react.useRef)(null),viewRef=(0,import_react.useRef)(null);return(0,import_react.useEffect)(()=>{if(!containerRef.current)return;let view=new EditorView({state:EditorState.create({doc:value,extensions:[json(),syntaxHighlighting(defaultHighlightStyle),baseTheme,EditorState.readOnly.of(!0),EditorView.editable.of(!1),EditorView.lineWrapping]}),parent:containerRef.current});return viewRef.current=view,()=>{view.destroy(),viewRef.current=null}},[value]),(0,import_jsx_runtime.jsx)(`div`,{ref:containerRef,className})}var import_react_dom$2=require_react_dom();function CopyButton({value}){let[copied,setCopied]=(0,import_react.useState)(!1);return(0,import_jsx_runtime.jsx)(`button`,{onClick:(0,import_react.useCallback)(async()=>{await navigator.clipboard.writeText(value),setCopied(!0),setTimeout(()=>setCopied(!1),1500)},[value]),className:`p-1 rounded hover:bg-accent text-gray-400 hover:text-gray-600 transition-colors`,title:`Copy to clipboard`,children:copied?(0,import_jsx_runtime.jsx)(Check,{className:`w-3.5 h-3.5 text-green-500`}):(0,import_jsx_runtime.jsx)(Copy,{className:`w-3.5 h-3.5`})})}function isJsonType$1(type){return type===`json`||type===`jsonb`}function HighlightedText$1({text:text$5,search:search$1}){if(!search$1)return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:text$5});let lowerText=text$5.toLowerCase(),lowerSearch=search$1.toLowerCase(),parts=[],lastIndex=0,index$4=lowerText.indexOf(lowerSearch);for(;index$4!==-1;)index$4>lastIndex&&parts.push({text:text$5.slice(lastIndex,index$4),highlight:!1}),parts.push({text:text$5.slice(index$4,index$4+search$1.length),highlight:!0}),lastIndex=index$4+search$1.length,index$4=lowerText.indexOf(lowerSearch,lastIndex);return lastIndex<text$5.length&&parts.push({text:text$5.slice(lastIndex),highlight:!1}),(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:parts.map((part,i$3)=>part.highlight?(0,import_jsx_runtime.jsx)(`mark`,{className:`bg-yellow-200 rounded-sm`,children:part.text},i$3):(0,import_jsx_runtime.jsx)(`span`,{children:part.text},i$3))})}function formatValue(value,type){if(value==null)return``;if(isJsonType$1(type))try{let parsed=typeof value==`string`?JSON.parse(value):value;return JSON.stringify(parsed,null,2)}catch{return String(value)}return String(value)}var valueBaseStyles=`w-full px-2 py-1.5 text-xs bg-gray-50 border border-gray-200 rounded`;function ValueRenderer({value,search:search$1,isJson,isStaged:isStaged$1}){let isMultiline=value.includes(`
85
85
  `)||value.length>50,stagedStyles=isStaged$1?`bg-amber-50 border-amber-200`:``;return isJson&&!search$1?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} ${stagedStyles} min-h-[80px] max-h-64 overflow-auto`,children:(0,import_jsx_runtime.jsx)(JsonViewer,{value})}):(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} ${stagedStyles} ${isMultiline?`min-h-[80px] max-h-64 overflow-auto whitespace-pre-wrap break-words`:`min-h-[28px] truncate`}`,children:(0,import_jsx_runtime.jsx)(HighlightedText$1,{text:value,search:search$1})})}function EditableField({value,colType,isNullable,hasDefault,isNewRow,onChange,onSetNull,onSetDefault,autoFocus}){let inputRef=(0,import_react.useRef)(null),isNull=value===null,isDefault=value===void 0,isJson=isJsonType$1(colType),isBool=colType===`boolean`||colType===`bool`;(0,import_react.useEffect)(()=>{autoFocus&&setTimeout(()=>inputRef.current?.focus(),0)},[autoFocus]);let editValue=isNull||isDefault?``:isJson?typeof value==`string`?value:JSON.stringify(value,null,2):String(value),isMultiline=isJson||editValue.includes(`
86
- `)||editValue.length>100,showDefaultCheckbox=isNewRow&&hasDefault;return isBool?(0,import_jsx_runtime.jsx)(`div`,{className:`space-y-1`,children:(0,import_jsx_runtime.jsxs)(`select`,{ref:inputRef,value:isDefault?`default`:isNull?`null`:String(value),onChange:e=>{e.target.value===`null`?onSetNull():e.target.value===`default`?onSetDefault():onChange(e.target.value)},className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500`,children:[showDefaultCheckbox&&(0,import_jsx_runtime.jsx)(`option`,{value:`default`,children:`DEFAULT`}),isNullable&&(0,import_jsx_runtime.jsx)(`option`,{value:`null`,children:`null`}),(0,import_jsx_runtime.jsx)(`option`,{value:`true`,children:`true`}),(0,import_jsx_runtime.jsx)(`option`,{value:`false`,children:`false`})]})}):(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-1`,children:[isDefault?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} bg-gray-100 italic text-gray-500`,children:`DEFAULT`}):isMultiline?(0,import_jsx_runtime.jsx)(`textarea`,{ref:inputRef,value:editValue,onChange:e=>onChange(e.target.value),placeholder:isNull?`null`:``,className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-h-[80px] max-h-64 resize-y font-mono`,rows:4}):(0,import_jsx_runtime.jsx)(`input`,{ref:inputRef,type:`text`,value:editValue,onChange:e=>onChange(e.target.value),placeholder:isNull?`null`:``,className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-4`,children:[showDefaultCheckbox&&(0,import_jsx_runtime.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-gray-500`,children:[(0,import_jsx_runtime.jsx)(`input`,{type:`checkbox`,checked:isDefault,onChange:e=>{e.target.checked?onSetDefault():onChange(``)},className:`rounded border-gray-300`}),`Use DEFAULT`]}),isNullable&&!isDefault&&(0,import_jsx_runtime.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-gray-500`,children:[(0,import_jsx_runtime.jsx)(`input`,{type:`checkbox`,checked:isNull,onChange:e=>{e.target.checked?onSetNull():onChange(``)},className:`rounded border-gray-300`}),`Set to NULL`]})]})]})}function RowDetailPanel({row,columns,open,onClose,onPrevious,onNext,hasPrevious,hasNext,scrollToColumn,currentIndex,totalCount,onExpandJson,onEdit,isEditing,onCancelEdit,onSaveEdit,onDelete,stagedType,stagedOverrides,onDiscardStaged,autoEditColumn,onAutoEditHandled,isNewRow}){let[search$1,setSearch]=(0,import_react.useState)(``),[highlightedColumn,setHighlightedColumn]=(0,import_react.useState)(null),[editedValues,setEditedValues]=(0,import_react.useState)({}),columnRefs=(0,import_react.useRef)(new Map),contentRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{setEditedValues(isEditing?{...row}:{})},[isEditing,row]);let handleFieldChange=(0,import_react.useCallback)((colName,value,colType)=>{setEditedValues(prev=>{if(colType===`integer`||colType===`int4`||colType===`int8`||colType===`bigint`||colType===`smallint`){let num=parseInt(value,10);return{...prev,[colName]:isNaN(num)?value:num}}if(colType===`numeric`||colType===`decimal`||colType===`real`||colType===`float4`||colType===`float8`||colType===`double precision`){let num=parseFloat(value);return{...prev,[colName]:isNaN(num)?value:num}}return colType===`boolean`||colType===`bool`?{...prev,[colName]:value.toLowerCase()===`true`}:{...prev,[colName]:value}})},[]),handleSave=(0,import_react.useCallback)(()=>{onSaveEdit&&onSaveEdit(editedValues)},[editedValues,onSaveEdit]),missingRequiredPK=(0,import_react.useMemo)(()=>isNewRow?columns.some(col=>{if(!col.isPrimaryKey)return!1;let value=editedValues[col.name];return col.hasDefault&&value===void 0?!1:value===``||value==null}):!1,[columns,editedValues,isNewRow]),hasChanges=(0,import_react.useMemo)(()=>isNewRow?!missingRequiredPK:columns.some(col=>editedValues[col.name]!==row[col.name]),[columns,editedValues,row,isNewRow,missingRequiredPK]),filteredColumns=(0,import_react.useMemo)(()=>{if(!search$1)return columns;let lowerSearch=search$1.toLowerCase();return columns.filter(col=>{let colMatch=col.name.toLowerCase().includes(lowerSearch),value=row[col.name],valueMatch=value!=null&&String(value).toLowerCase().includes(lowerSearch);return colMatch||valueMatch})},[columns,row,search$1]);return(0,import_react.useEffect)(()=>{setSearch(``)},[row]),(0,import_react.useEffect)(()=>{open&&scrollToColumn?(requestAnimationFrame(()=>{let element$3=columnRefs.current.get(scrollToColumn);element$3&&contentRef.current&&element$3.scrollIntoView({behavior:`instant`,block:`center`})}),setHighlightedColumn(scrollToColumn)):setHighlightedColumn(null)},[open,scrollToColumn]),(0,import_react.useEffect)(()=>{if(open&&isEditing&&autoEditColumn){let timer=setTimeout(()=>onAutoEditHandled?.(),50);return()=>clearTimeout(timer)}},[open,isEditing,autoEditColumn,onAutoEditHandled]),useKeyboardShortcut(`row-detail-close`,`Escape`,()=>{isEditing&&onCancelEdit?onCancelEdit():onClose()},{when:()=>open}),open?(0,import_react_dom$2.createPortal)((0,import_jsx_runtime.jsxs)(`div`,{className:`fixed top-0 right-0 h-full w-96 bg-white border-l border-gray-200 shadow-lg flex flex-col z-50`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 px-2 py-2 flex flex-col gap-2`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex items-center justify-between`,children:isEditing?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs font-medium text-gray-700`,children:isNewRow?`New row`:`Editing row`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,onClick:onCancelEdit,tabIndex:-1,children:`Cancel`}),(0,import_jsx_runtime.jsx)(Button,{variant:`default`,size:`sm`,onClick:handleSave,disabled:!hasChanges,tabIndex:-1,children:`Save`})]})]}):(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onPrevious,disabled:!hasPrevious,title:`Previous row (k or ↑)`,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(ChevronUp,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onNext,disabled:!hasNext,title:`Next row (j or ↓)`,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(ChevronDown,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-gray-500 ml-1`,children:[currentIndex,`/`,totalCount]})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[onEdit&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded hover:text-blue-600 hover:bg-blue-50 disabled:text-gray-300 disabled:hover:bg-transparent disabled:cursor-not-allowed`,onClick:stagedType?void 0:onEdit,disabled:!!stagedType,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Pencil,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:stagedType?`Cannot edit row staged for ${stagedType}`:`Edit row`})]}),onDelete&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded text-red-500 hover:text-red-600 hover:bg-red-50 disabled:text-gray-300 disabled:hover:bg-transparent disabled:cursor-not-allowed`,onClick:stagedType?void 0:onDelete,disabled:!!stagedType,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Trash2,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:stagedType?`Row already staged for ${stagedType}`:`Stage row for deletion`})]}),stagedType&&onDiscardStaged&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded text-amber-600 hover:text-amber-700 hover:bg-amber-50`,onClick:onDiscardStaged,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Undo2,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:`Discard staged change`})]}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onClose,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]})]})}),!isEditing&&(0,import_jsx_runtime.jsx)(SearchInput,{value:search$1,onChange:e=>setSearch(e.target.value),onClear:()=>setSearch(``),size:`sm`})]}),(0,import_jsx_runtime.jsx)(`div`,{ref:contentRef,className:`flex-1 overflow-auto p-3 space-y-3`,children:filteredColumns.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-400 text-center py-4`,children:`No matching columns`}):filteredColumns.map(col=>{let{name:colName,type:colType}=col,value=isEditing&&colName in editedValues?editedValues[colName]:row[colName],isNull=value===null,isUndefined=value===void 0,formattedValue=formatValue(value,colType),isModified=isEditing&&editedValues[colName]!==row[colName],isStaged$1=!isEditing&&stagedOverrides&&colName in stagedOverrides,showDefault=isUndefined&&stagedType===`insert`&&!isEditing;return(0,import_jsx_runtime.jsxs)(`div`,{ref:el=>{el?columnRefs.current.set(colName,el):columnRefs.current.delete(colName)},children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs font-medium truncate ${isModified||isStaged$1?`text-amber-600`:highlightedColumn===colName?`text-blue-600`:`text-gray-700`}`,children:[isEditing?colName:(0,import_jsx_runtime.jsx)(HighlightedText$1,{text:colName,search:search$1}),col.isPrimaryKey&&isNewRow&&!col.hasDefault&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-red-500`,children:`*`}),col.isPrimaryKey&&(0,import_jsx_runtime.jsxs)(`span`,{className:`ml-1 text-gray-400`,children:[`(PK`,isNewRow&&!col.hasDefault?`, required`:``,`)`]}),col.hasDefault&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-gray-400`,children:`(has default)`}),(isModified||isStaged$1)&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-amber-500`,children:`*`})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400`,children:colType}),!isEditing&&isJsonType$1(colType)&&!isNull&&!isUndefined&&onExpandJson&&(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onExpandJson(value,colName),className:`p-1 rounded hover:bg-accent text-gray-400 hover:text-gray-600 transition-colors`,title:`Expand JSON`,children:(0,import_jsx_runtime.jsx)(Expand,{className:`w-3.5 h-3.5`})}),!isEditing&&!showDefault&&(0,import_jsx_runtime.jsx)(CopyButton,{value:formattedValue})]})]}),isEditing?(0,import_jsx_runtime.jsx)(EditableField,{value,colType,isNullable:col.isNullable,hasDefault:col.hasDefault,isNewRow:isNewRow||!1,onChange:newValue=>handleFieldChange(colName,newValue,colType),onSetNull:()=>setEditedValues(prev=>({...prev,[colName]:null})),onSetDefault:()=>setEditedValues(prev=>({...prev,[colName]:void 0})),autoFocus:autoEditColumn===colName}):showDefault?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} bg-green-50 border-green-200 italic text-gray-500`,children:`DEFAULT`}):isNull?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} ${isStaged$1?`bg-amber-50 border-amber-200`:``} italic text-gray-400`,children:`null`}):(0,import_jsx_runtime.jsx)(ValueRenderer,{value:formattedValue,search:search$1,isJson:isJsonType$1(colType),isStaged:isStaged$1})]},colName)})})]}),document.body):null}const DialogRootContext=import_react.createContext(void 0);function useDialogRootContext(optional){let dialogRootContext=import_react.useContext(DialogRootContext);if(optional===!1&&dialogRootContext===void 0)throw Error(formatErrorMessage(27));return dialogRootContext}var stateAttributesMapping$5={...popupStateMapping,...transitionStatusMapping};const DialogBackdrop$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,forceRender=!1,...elementProps}=componentProps,{store}=useDialogRootContext(),open=store.useState(`open`),nested=store.useState(`nested`),mounted=store.useState(`mounted`),transitionStatus=store.useState(`transitionStatus`);return useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({open,transitionStatus}),[open,transitionStatus]),ref:[store.context.backdropRef,forwardedRef],stateAttributesMapping:stateAttributesMapping$5,props:[{role:`presentation`,hidden:!mounted,style:{userSelect:`none`,WebkitUserSelect:`none`}},elementProps],enabled:forceRender||!nested})}),DialogClose=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1=!1,nativeButton=!0,...elementProps}=componentProps,{store}=useDialogRootContext(),open=store.useState(`open`);function handleClick(event){open&&store.setOpen(!1,createChangeEventDetails(`close-press`,event.nativeEvent))}let{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton});return useRenderElement(`button`,componentProps,{state:import_react.useMemo(()=>({disabled:disabled$1}),[disabled$1]),ref:[forwardedRef,buttonRef],props:[{onClick:handleClick},elementProps,getButtonProps]})}),DialogDescription$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,...elementProps}=componentProps,{store}=useDialogRootContext(),id=useBaseUiId(idProp);return store.useSyncedValueWithCleanup(`descriptionElementId`,id),useRenderElement(`p`,componentProps,{ref:forwardedRef,props:[{id},elementProps]})});let DialogPopupCssVars=function(DialogPopupCssVars$1){return DialogPopupCssVars$1.nestedDialogs=`--nested-dialogs`,DialogPopupCssVars$1}({}),DialogPopupDataAttributes=function(DialogPopupDataAttributes$1){return DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.open=CommonPopupDataAttributes.open]=`open`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.closed=CommonPopupDataAttributes.closed]=`closed`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.startingStyle=CommonPopupDataAttributes.startingStyle]=`startingStyle`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.endingStyle=CommonPopupDataAttributes.endingStyle]=`endingStyle`,DialogPopupDataAttributes$1.nested=`data-nested`,DialogPopupDataAttributes$1.nestedDialogOpen=`data-nested-dialog-open`,DialogPopupDataAttributes$1}({});const DialogPortalContext=import_react.createContext(void 0);function useDialogPortalContext(){let value=import_react.useContext(DialogPortalContext);if(value===void 0)throw Error(formatErrorMessage(26));return value}var stateAttributesMapping$4={...popupStateMapping,...transitionStatusMapping,nestedDialogOpen(value){return value?{[DialogPopupDataAttributes.nestedDialogOpen]:``}:null}};const DialogPopup$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,finalFocus,initialFocus,render,...elementProps}=componentProps,{store}=useDialogRootContext(),descriptionElementId=store.useState(`descriptionElementId`),disablePointerDismissal=store.useState(`disablePointerDismissal`),floatingRootContext=store.useState(`floatingRootContext`),rootPopupProps=store.useState(`popupProps`),modal=store.useState(`modal`),mounted=store.useState(`mounted`),nested=store.useState(`nested`),nestedOpenDialogCount=store.useState(`nestedOpenDialogCount`),open=store.useState(`open`),openMethod=store.useState(`openMethod`),titleElementId=store.useState(`titleElementId`),transitionStatus=store.useState(`transitionStatus`),role=store.useState(`role`);useDialogPortalContext(),useOpenChangeComplete({open,ref:store.context.popupRef,onComplete(){open&&store.context.onOpenChangeComplete?.(!0)}});function defaultInitialFocus(interactionType){return interactionType===`touch`?store.context.popupRef.current:!0}let resolvedInitialFocus=initialFocus===void 0?defaultInitialFocus:initialFocus,nestedDialogOpen=nestedOpenDialogCount>0,element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({open,nested,transitionStatus,nestedDialogOpen}),[open,nested,transitionStatus,nestedDialogOpen]),props:[rootPopupProps,{"aria-labelledby":titleElementId??void 0,"aria-describedby":descriptionElementId??void 0,role,tabIndex:-1,hidden:!mounted,onKeyDown(event){COMPOSITE_KEYS.has(event.key)&&event.stopPropagation()},style:{[DialogPopupCssVars.nestedDialogs]:nestedOpenDialogCount}},elementProps],ref:[forwardedRef,store.context.popupRef,store.useStateSetter(`popupElement`)],stateAttributesMapping:stateAttributesMapping$4});return(0,import_jsx_runtime.jsx)(FloatingFocusManager,{context:floatingRootContext,openInteractionType:openMethod,disabled:!mounted,closeOnFocusOut:!disablePointerDismissal,initialFocus:resolvedInitialFocus,returnFocus:finalFocus,modal:modal!==!1,restoreFocus:`popup`,children:element$3})}),DialogPortal$1=import_react.forwardRef(function(props,forwardedRef){let{keepMounted=!1,...portalProps}=props,{store}=useDialogRootContext(),mounted=store.useState(`mounted`),modal=store.useState(`modal`),open=store.useState(`open`);return mounted||keepMounted?(0,import_jsx_runtime.jsx)(DialogPortalContext.Provider,{value:keepMounted,children:(0,import_jsx_runtime.jsxs)(FloatingPortal,{ref:forwardedRef,...portalProps,children:[mounted&&modal===!0&&(0,import_jsx_runtime.jsx)(InternalBackdrop,{ref:store.context.internalBackdropRef,inert:inertValue(!open)}),props.children]})}):null});function useDialogRoot(params){let{store,parentContext,actionsRef}=params,open=store.useState(`open`),disablePointerDismissal=store.useState(`disablePointerDismissal`),modal=store.useState(`modal`),popupElement=store.useState(`popupElement`),{openMethod,triggerProps,reset:resetOpenInteractionType}=useOpenInteractionType(open);useImplicitActiveTrigger(store);let{forceUnmount}=useOpenStateTransitions(open,store,()=>{resetOpenInteractionType()}),createDialogEventDetails=useStableCallback(reason=>{let details=createChangeEventDetails(reason);return details.preventUnmountOnClose=()=>{store.set(`preventUnmountingOnClose`,!0)},details}),handleImperativeClose=import_react.useCallback(()=>{store.setOpen(!1,createDialogEventDetails(imperativeAction))},[store,createDialogEventDetails]);import_react.useImperativeHandle(actionsRef,()=>({unmount:forceUnmount,close:handleImperativeClose}),[forceUnmount,handleImperativeClose]);let floatingRootContext=useSyncedFloatingRootContext({popupStore:store,onOpenChange:store.setOpen,treatPopupAsFloatingElement:!0,noEmit:!0}),[ownNestedOpenDialogs,setOwnNestedOpenDialogs]=import_react.useState(0),isTopmost=ownNestedOpenDialogs===0,role=useRole(floatingRootContext),dismiss=useDismiss(floatingRootContext,{outsidePressEvent(){return store.context.internalBackdropRef.current||store.context.backdropRef.current?`intentional`:{mouse:modal===`trap-focus`?`sloppy`:`intentional`,touch:`sloppy`}},outsidePress(event){if(`button`in event&&event.button!==0||`touches`in event&&event.touches.length!==1)return!1;let target=getTarget(event);if(isTopmost&&!disablePointerDismissal){let eventTarget=target;return modal&&(store.context.internalBackdropRef.current||store.context.backdropRef.current)?store.context.internalBackdropRef.current===eventTarget||store.context.backdropRef.current===eventTarget||contains(eventTarget,popupElement)&&!eventTarget?.hasAttribute(`data-base-ui-portal`):!0}return!1},escapeKey:isTopmost});useScrollLock(open&&modal===!0,popupElement);let{getReferenceProps,getFloatingProps,getTriggerProps}=useInteractions([role,dismiss]);store.useContextCallback(`onNestedDialogOpen`,ownChildrenCount=>{setOwnNestedOpenDialogs(ownChildrenCount+1)}),store.useContextCallback(`onNestedDialogClose`,()=>{setOwnNestedOpenDialogs(0)}),import_react.useEffect(()=>(parentContext?.onNestedDialogOpen&&open&&parentContext.onNestedDialogOpen(ownNestedOpenDialogs),parentContext?.onNestedDialogClose&&!open&&parentContext.onNestedDialogClose(),()=>{parentContext?.onNestedDialogClose&&open&&parentContext.onNestedDialogClose()}),[open,parentContext,ownNestedOpenDialogs]);let activeTriggerProps=import_react.useMemo(()=>getReferenceProps(triggerProps),[getReferenceProps,triggerProps]),inactiveTriggerProps=import_react.useMemo(()=>getTriggerProps(triggerProps),[getTriggerProps,triggerProps]),popupProps=import_react.useMemo(()=>getFloatingProps(),[getFloatingProps]);store.useSyncedValues({openMethod,activeTriggerProps,inactiveTriggerProps,popupProps,floatingRootContext,nestedOpenDialogCount:ownNestedOpenDialogs})}var selectors={...popupStoreSelectors,modal:createSelector(state$1=>state$1.modal),nested:createSelector(state$1=>state$1.nested),nestedOpenDialogCount:createSelector(state$1=>state$1.nestedOpenDialogCount),disablePointerDismissal:createSelector(state$1=>state$1.disablePointerDismissal),openMethod:createSelector(state$1=>state$1.openMethod),descriptionElementId:createSelector(state$1=>state$1.descriptionElementId),titleElementId:createSelector(state$1=>state$1.titleElementId),viewportElement:createSelector(state$1=>state$1.viewportElement),role:createSelector(state$1=>state$1.role)},DialogStore=class extends ReactStore{constructor(initialState){super(createInitialState(initialState),{popupRef:import_react.createRef(),backdropRef:import_react.createRef(),internalBackdropRef:import_react.createRef(),triggerElements:new PopupTriggerMap,onOpenChange:void 0,onOpenChangeComplete:void 0},selectors)}setOpen=(nextOpen,eventDetails)=>{if(eventDetails.preventUnmountOnClose=()=>{this.set(`preventUnmountingOnClose`,!0)},!nextOpen&&eventDetails.trigger==null&&this.state.activeTriggerId!=null&&(eventDetails.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(nextOpen,eventDetails),eventDetails.isCanceled)return;let details={open:nextOpen,nativeEvent:eventDetails.event,reason:eventDetails.reason,nested:this.state.nested};this.state.floatingRootContext.context.events?.emit(`openchange`,details);let updatedState={open:nextOpen},newTriggerId=eventDetails.trigger?.id??null;(newTriggerId||nextOpen)&&(updatedState.activeTriggerId=newTriggerId,updatedState.activeTriggerElement=eventDetails.trigger??null),this.update(updatedState)}};function createInitialState(initialState={}){return{...createInitialPopupStoreState(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,role:`dialog`,...initialState}}function DialogRoot(props){let{children,open:openProp,defaultOpen=!1,onOpenChange,onOpenChangeComplete,disablePointerDismissal=!1,modal=!0,actionsRef,handle:handle$1,triggerId:triggerIdProp,defaultTriggerId:defaultTriggerIdProp=null}=props,parentDialogRootContext=useDialogRootContext(!0),nested=!!parentDialogRootContext,store=useRefWithInit(()=>handle$1?.store??new DialogStore({open:openProp??defaultOpen,activeTriggerId:triggerIdProp===void 0?defaultTriggerIdProp:triggerIdProp,modal,disablePointerDismissal,nested})).current;store.useControlledProp(`open`,openProp,defaultOpen),store.useControlledProp(`activeTriggerId`,triggerIdProp,defaultTriggerIdProp),store.useSyncedValues({disablePointerDismissal,nested,modal}),store.useContextCallback(`onOpenChange`,onOpenChange),store.useContextCallback(`onOpenChangeComplete`,onOpenChangeComplete);let payload=store.useState(`payload`);useDialogRoot({store,actionsRef,parentContext:parentDialogRootContext?.store.context,onOpenChange,triggerIdProp});let contextValue=import_react.useMemo(()=>({store}),[store]);return(0,import_jsx_runtime.jsx)(DialogRootContext.Provider,{value:contextValue,children:typeof children==`function`?children({payload}):children})}let DialogViewportDataAttributes=function(DialogViewportDataAttributes$1){return DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.open=CommonPopupDataAttributes.open]=`open`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.closed=CommonPopupDataAttributes.closed]=`closed`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.startingStyle=CommonPopupDataAttributes.startingStyle]=`startingStyle`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.endingStyle=CommonPopupDataAttributes.endingStyle]=`endingStyle`,DialogViewportDataAttributes$1.nested=`data-nested`,DialogViewportDataAttributes$1.nestedDialogOpen=`data-nested-dialog-open`,DialogViewportDataAttributes$1}({});var stateAttributesMapping$3={...popupStateMapping,...transitionStatusMapping,nested(value){return value?{[DialogViewportDataAttributes.nested]:``}:null},nestedDialogOpen(value){return value?{[DialogViewportDataAttributes.nestedDialogOpen]:``}:null}};const DialogViewport$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,children,...elementProps}=componentProps,keepMounted=useDialogPortalContext(),{store}=useDialogRootContext(),open=store.useState(`open`),nested=store.useState(`nested`),transitionStatus=store.useState(`transitionStatus`),nestedOpenDialogCount=store.useState(`nestedOpenDialogCount`),mounted=store.useState(`mounted`),nestedDialogOpen=nestedOpenDialogCount>0,state$1=import_react.useMemo(()=>({open,nested,transitionStatus,nestedDialogOpen}),[open,nested,transitionStatus,nestedDialogOpen]);return useRenderElement(`div`,componentProps,{enabled:keepMounted||mounted,state:state$1,ref:[forwardedRef,store.useStateSetter(`viewportElement`)],stateAttributesMapping:stateAttributesMapping$3,props:[{role:`presentation`,hidden:!mounted,children},elementProps]})}),DialogTitle$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,...elementProps}=componentProps,{store}=useDialogRootContext(),id=useBaseUiId(idProp);return store.useSyncedValueWithCleanup(`titleElementId`,id),useRenderElement(`h2`,componentProps,{ref:forwardedRef,props:[{id},elementProps]})}),DialogTrigger=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1=!1,nativeButton=!0,id:idProp,payload,handle:handle$1,...elementProps}=componentProps,dialogRootContext=useDialogRootContext(!0),store=handle$1?.store??dialogRootContext?.store;if(!store)throw Error(formatErrorMessage(79));let thisTriggerId=useBaseUiId(idProp),floatingContext=store.useState(`floatingRootContext`),isOpenedByThisTrigger=store.useState(`isOpenedByTrigger`,thisTriggerId),triggerElementRef=import_react.useRef(null),{registerTrigger,isMountedByThisTrigger}=useTriggerDataForwarding(thisTriggerId,triggerElementRef,store,{payload}),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),localInteractionProps=useInteractions([useClick(floatingContext,{enabled:floatingContext!=null})]),state$1=import_react.useMemo(()=>({disabled:disabled$1,open:isOpenedByThisTrigger}),[disabled$1,isOpenedByThisTrigger]),rootTriggerProps=store.useState(`triggerProps`,isMountedByThisTrigger);return useRenderElement(`button`,componentProps,{state:state$1,ref:[buttonRef,forwardedRef,registerTrigger,triggerElementRef],props:[localInteractionProps.getReferenceProps(),rootTriggerProps,{"data-base-ui-click-trigger":``,id:thisTriggerId},elementProps,getButtonProps],stateAttributesMapping:triggerOpenStateMapping})});var editorTheme$1=EditorView.theme({"&":{fontSize:`13px`,backgroundColor:`transparent`,height:`100%`},".cm-content":{padding:`12px`,fontFamily:`ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace`},".cm-line":{padding:`0`},".cm-gutters":{display:`none`},"&.cm-focused":{outline:`none`},".cm-scroller":{overflow:`auto`}});function JsonExpandModal({open,onClose,value,columnName,onSave}){let[copied,setCopied]=(0,import_react.useState)(!1),[hasChanges,setHasChanges]=(0,import_react.useState)(!1),viewRef=(0,import_react.useRef)(null),initialValue=(0,import_react.useMemo)(()=>{if(value==null)return``;try{let parsed=typeof value==`string`?JSON.parse(value):value;return JSON.stringify(parsed,null,2)}catch{return String(value)}},[value]),initEditor=(0,import_react.useCallback)(container=>{viewRef.current&&=(viewRef.current.destroy(),null),container&&(viewRef.current=new EditorView({state:EditorState.create({doc:initialValue,extensions:[json(),syntaxHighlighting(defaultHighlightStyle),editorTheme$1,EditorView.lineWrapping,history(),keymap.of([...defaultKeymap,...historyKeymap]),EditorView.updateListener.of(update$1=>{update$1.docChanged&&setHasChanges(update$1.state.doc.toString()!==initialValue)})]}),parent:container}),requestAnimationFrame(()=>viewRef.current?.focus()))},[initialValue]),handleCopy=(0,import_react.useCallback)(async()=>{let text$5=viewRef.current?.state.doc.toString()??initialValue;await navigator.clipboard.writeText(text$5),setCopied(!0),setTimeout(()=>setCopied(!1),1500)},[initialValue]),handleSave=(0,import_react.useCallback)(()=>{onSave&&viewRef.current&&(onSave(viewRef.current.state.doc.toString()),onClose())},[onSave,onClose]);return(0,import_jsx_runtime.jsx)(DialogRoot,{open,onOpenChange:open$1=>!open$1&&onClose(),children:(0,import_jsx_runtime.jsxs)(DialogPortal$1,{children:[(0,import_jsx_runtime.jsx)(DialogBackdrop$1,{className:`fixed inset-0 z-50 bg-black/10`}),(0,import_jsx_runtime.jsx)(DialogViewport$1,{className:`fixed inset-0 z-50 grid place-items-center p-4`,children:(0,import_jsx_runtime.jsxs)(DialogPopup$1,{className:`relative w-full max-w-2xl rounded-2xl border bg-white shadow-lg`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between p-4 pb-2`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(DialogTitle$1,{className:`text-base font-medium`,children:columnName}),(0,import_jsx_runtime.jsx)(`button`,{onClick:handleCopy,className:`p-1 rounded hover:bg-gray-100 text-gray-400 hover:text-gray-600 transition-colors`,title:`Copy to clipboard`,children:copied?(0,import_jsx_runtime.jsx)(Check,{className:`w-4 h-4 text-green-500`}):(0,import_jsx_runtime.jsx)(Copy,{className:`w-4 h-4`})})]}),(0,import_jsx_runtime.jsx)(`button`,{onClick:onClose,className:`p-1 rounded hover:bg-gray-100 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`px-4`,children:(0,import_jsx_runtime.jsx)(`div`,{ref:initEditor,className:`bg-gray-50 border border-gray-200 rounded-lg h-[60vh] overflow-auto`})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-end gap-2 p-4 pt-2`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,onClick:onClose,children:`Cancel`}),(0,import_jsx_runtime.jsx)(Button,{variant:`default`,size:`sm`,onClick:handleSave,disabled:!hasChanges,children:`Save`})]})]})})]})})}function useRowSelection({totalRows,onDelete}){let[selectedIndices,setSelectedIndices]=(0,import_react.useState)(new Set),[anchorIndex,setAnchorIndex]=(0,import_react.useState)(null);(0,import_react.useEffect)(()=>{setSelectedIndices(new Set),setAnchorIndex(null)},[totalRows]);let handleRowClick=(0,import_react.useCallback)((index$4,event)=>{let isRangeSelect=event.shiftKey,isToggleSelect=event.metaKey||event.ctrlKey;if(isRangeSelect&&anchorIndex!==null){let start=Math.min(anchorIndex,index$4),end=Math.max(anchorIndex,index$4),newSelection=new Set;for(let i$3=start;i$3<=end;i$3++)newSelection.add(i$3);setSelectedIndices(newSelection)}else isToggleSelect?(setSelectedIndices(prev=>{let newSet=new Set(prev);return newSet.has(index$4)?newSet.delete(index$4):newSet.add(index$4),newSet}),setAnchorIndex(index$4)):(setSelectedIndices(new Set([index$4])),setAnchorIndex(index$4))},[anchorIndex]),clearSelection=(0,import_react.useCallback)(()=>{setSelectedIndices(new Set),setAnchorIndex(null)},[]),handleKeyDown=(0,import_react.useCallback)(event=>{if(event.key===`Escape`){clearSelection();return}(event.key===`Delete`||event.key===`Backspace`)&&selectedIndices.size>0&&(event.preventDefault(),onDelete?.(Array.from(selectedIndices).sort((a$1,b$2)=>a$1-b$2)))},[selectedIndices,onDelete,clearSelection]);return(0,import_react.useEffect)(()=>(document.addEventListener(`keydown`,handleKeyDown),()=>document.removeEventListener(`keydown`,handleKeyDown)),[handleKeyDown]),{selectedIndices,handleRowClick,clearSelection,isSelected:index$4=>selectedIndices.has(index$4),selectionCount:selectedIndices.size}}function useConnectionPermissions(connectionId){let{data:connections}=useConnections(),permissions=connections?.find(c=>c.id===connectionId)?.permissions??[];return{hasRead:permissions.includes(`read`),hasWrite:permissions.includes(`write`),hasDdl:permissions.includes(`ddl`),hasAdmin:permissions.includes(`admin`),hasExplain:permissions.includes(`explain`),hasExecute:permissions.includes(`execute`),hasExport:permissions.includes(`export`),permissions}}var counter=0;function generateId(prefix$1){return counter+=1,`${prefix$1}-${Math.random().toString(36).slice(2,6)}-${counter}`}const ToastContext=import_react.createContext(void 0);function useToastContext(){let context=import_react.useContext(ToastContext);if(!context)throw Error(formatErrorMessage(73));return context}function resolvePromiseOptions(options$1,result){if(typeof options$1==`string`)return{description:options$1};if(typeof options$1==`function`){let resolvedOptions=options$1(result);return typeof resolvedOptions==`string`?{description:resolvedOptions}:resolvedOptions}return options$1}var import_react_dom$1=__toESM(require_react_dom());const ToastProvider$1=function(props){let{children,timeout=5e3,limit=3,toastManager:toastManager$1}=props,[toasts,setToasts]=import_react.useState([]),[hovering,setHovering]=import_react.useState(!1),[focused,setFocused]=import_react.useState(!1),[prevFocusElement,setPrevFocusElement]=import_react.useState(null);toasts.length===0&&(hovering&&setHovering(!1),focused&&setFocused(!1));let expanded=hovering||focused,timersRef=import_react.useRef(new Map),viewportRef=import_react.useRef(null),windowFocusedRef=import_react.useRef(!0),isPausedRef=import_react.useRef(!1);function handleFocusManagement(toastId){let activeEl=activeElement(ownerDocument(viewportRef.current));if(!viewportRef.current||!contains(viewportRef.current,activeEl)||!matchesFocusVisible(activeEl))return;let currentIndex=toasts.findIndex(toast=>toast.id===toastId),nextToast=null,index$4=currentIndex+1;for(;index$4<toasts.length;){if(toasts[index$4].transitionStatus!==`ending`){nextToast=toasts[index$4];break}index$4+=1}if(!nextToast)for(index$4=currentIndex-1;index$4>=0;){if(toasts[index$4].transitionStatus!==`ending`){nextToast=toasts[index$4];break}--index$4}nextToast?nextToast.ref?.current?.focus():prevFocusElement?.focus({preventScroll:!0})}let pauseTimers=useStableCallback(()=>{isPausedRef.current||(isPausedRef.current=!0,timersRef.current.forEach(timer=>{if(timer.timeout){timer.timeout.clear();let elapsed=Date.now()-timer.start,remaining=timer.delay-elapsed;timer.remaining=remaining>0?remaining:0}}))}),resumeTimers=useStableCallback(()=>{isPausedRef.current&&(isPausedRef.current=!1,timersRef.current.forEach((timer,id)=>{timer.remaining=timer.remaining>0?timer.remaining:timer.delay,timer.timeout??=Timeout.create(),timer.timeout.start(timer.remaining,()=>{timersRef.current.delete(id),timer.callback()}),timer.start=Date.now()}))}),close=useStableCallback(toastId=>{setToasts(prevToasts=>{let toastsWithEnding=prevToasts.map(toast=>toast.id===toastId?{...toast,transitionStatus:`ending`,height:0}:toast),activeToasts=toastsWithEnding.filter(t$1=>t$1.transitionStatus!==`ending`);return toastsWithEnding.map(toast=>{if(toast.transitionStatus===`ending`)return toast;let isActiveToastLimited=activeToasts.indexOf(toast)>=limit;return{...toast,limited:isActiveToastLimited}})});let timer=timersRef.current.get(toastId);timer&&timer.timeout&&(timer.timeout.clear(),timersRef.current.delete(toastId)),toasts.find(t$1=>t$1.id===toastId)?.onClose?.(),handleFocusManagement(toastId),toasts.length===1&&(setHovering(!1),setFocused(!1))}),remove$1=useStableCallback(toastId=>{setToasts(prev=>prev.filter(toast=>toast.id!==toastId)),toasts.find(t$1=>t$1.id===toastId)?.onRemove?.()}),scheduleTimer=useStableCallback((id,delay,callback)=>{let start=Date.now(),shouldStartActive=windowFocusedRef.current&&!hovering&&!focused,currentTimeout=shouldStartActive?Timeout.create():void 0;currentTimeout?.start(delay,()=>{timersRef.current.delete(id),callback()}),timersRef.current.set(id,{timeout:currentTimeout,start:shouldStartActive?start:0,delay,remaining:delay,callback})}),add$1=useStableCallback(toast=>{let id=toast.id||generateId(`toast`),toastToAdd={...toast,id,transitionStatus:`starting`};setToasts(prev=>{let updatedToasts=[toastToAdd,...prev],activeToasts=updatedToasts.filter(t$1=>t$1.transitionStatus!==`ending`);if(activeToasts.length>limit){let excessCount=activeToasts.length-limit,oldestActiveToasts=activeToasts.slice(-excessCount);return updatedToasts.map(t$1=>oldestActiveToasts.some(old=>old.id===t$1.id)?{...t$1,limited:!0}:{...t$1,limited:!1})}return updatedToasts.map(t$1=>({...t$1,limited:!1}))});let duration=toastToAdd.timeout??timeout;return toastToAdd.type!==`loading`&&duration>0&&scheduleTimer(id,duration,()=>close(id)),(hovering||focused||!windowFocusedRef.current)&&pauseTimers(),id}),update$1=useStableCallback((id,updates)=>{let prevToast=toasts.find(toast=>toast.id===id)??null,nextToast=prevToast?{...prevToast,...updates}:null;if(import_react_dom$1.flushSync(()=>{setToasts(prev=>prev.map(toast=>toast.id===id?{...toast,...updates}:toast))}),!nextToast)return;let nextTimeout=nextToast.timeout??timeout,prevTimeout=prevToast?.timeout??timeout,timeoutUpdated=Object.hasOwn(updates,`timeout`),shouldHaveTimer=nextToast.transitionStatus!==`ending`&&nextToast.type!==`loading`&&nextTimeout>0,hasTimer=timersRef.current.has(id),timeoutChanged=prevTimeout!==nextTimeout,wasLoading=prevToast?.type===`loading`;if(!shouldHaveTimer&&hasTimer){timersRef.current.get(id)?.timeout?.clear(),timersRef.current.delete(id);return}if(shouldHaveTimer&&(!hasTimer||timeoutChanged||timeoutUpdated||wasLoading)){let timer=timersRef.current.get(id);timer&&(timer.timeout?.clear(),timersRef.current.delete(id)),scheduleTimer(id,nextTimeout,()=>close(id)),(hovering||focused||!windowFocusedRef.current)&&pauseTimers()}}),promise=useStableCallback((promiseValue,options$1)=>{let id=add$1({...resolvePromiseOptions(options$1.loading),type:`loading`}),handledPromise=promiseValue.then(result=>{let successOptions=resolvePromiseOptions(options$1.success,result);return update$1(id,{...successOptions,type:`success`,timeout:successOptions.timeout}),result}).catch(error=>{let errorOptions=resolvePromiseOptions(options$1.error,error);return update$1(id,{...errorOptions,type:`error`,timeout:errorOptions.timeout}),Promise.reject(error)});return{}.hasOwnProperty.call(options$1,`setPromise`)&&options$1.setPromise(handledPromise),handledPromise});import_react.useEffect(function(){if(toastManager$1)return toastManager$1[` subscribe`](({action,options:options$1})=>{let id=options$1.id;action===`promise`&&options$1.promise?promise(options$1.promise,options$1):action===`update`&&id?update$1(id,options$1):action===`close`&&id?close(id):add$1(options$1)})},[add$1,update$1,scheduleTimer,timeout,toastManager$1,promise,close]);let contextValue=import_react.useMemo(()=>({toasts,setToasts,hovering,setHovering,focused,setFocused,expanded,add:add$1,close,remove:remove$1,update:update$1,promise,pauseTimers,resumeTimers,prevFocusElement,setPrevFocusElement,viewportRef,scheduleTimer,windowFocusedRef}),[add$1,close,focused,hovering,expanded,pauseTimers,prevFocusElement,promise,remove$1,resumeTimers,scheduleTimer,toasts,update$1]);return(0,import_jsx_runtime.jsx)(ToastContext.Provider,{value:contextValue,children})},ToastViewportContext=import_react.createContext(void 0);let ToastViewportCssVars=function(ToastViewportCssVars$1){return ToastViewportCssVars$1.frontmostHeight=`--toast-frontmost-height`,ToastViewportCssVars$1}({});const ToastViewport=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,children,...elementProps}=componentProps,{toasts,pauseTimers,resumeTimers,setHovering,setFocused,viewportRef,windowFocusedRef,prevFocusElement,setPrevFocusElement,expanded,focused}=useToastContext(),handlingFocusGuardRef=import_react.useRef(!1),markedReadyForMouseLeaveRef=import_react.useRef(!1),numToasts=toasts.length,frontmostHeight=toasts[0]?.height??0,hasTransitioningToasts=import_react.useMemo(()=>toasts.some(toast=>toast.transitionStatus===`ending`),[toasts]);import_react.useEffect(()=>{if(!viewportRef.current)return;function handleGlobalKeyDown(event){numToasts!==0&&event.key===`F6`&&event.target!==viewportRef.current&&(event.preventDefault(),setPrevFocusElement(activeElement(ownerDocument(viewportRef.current))),viewportRef.current?.focus({preventScroll:!0}),pauseTimers(),setFocused(!0))}let win=getWindow(viewportRef.current);return win.addEventListener(`keydown`,handleGlobalKeyDown),()=>{win.removeEventListener(`keydown`,handleGlobalKeyDown)}},[pauseTimers,setFocused,setPrevFocusElement,numToasts,viewportRef]),import_react.useEffect(()=>{if(!viewportRef.current||!numToasts)return;let win=getWindow(viewportRef.current);function handleWindowBlur(event){event.target===win&&(windowFocusedRef.current=!1,pauseTimers())}function handleWindowFocus(event){if(event.relatedTarget||event.target===win)return;let target=getTarget(event),activeEl=activeElement(ownerDocument(viewportRef.current));(!contains(viewportRef.current,target)||!matchesFocusVisible(activeEl))&&resumeTimers(),setTimeout(()=>{windowFocusedRef.current=!0})}return win.addEventListener(`blur`,handleWindowBlur,!0),win.addEventListener(`focus`,handleWindowFocus,!0),()=>{win.removeEventListener(`blur`,handleWindowBlur,!0),win.removeEventListener(`focus`,handleWindowFocus,!0)}},[pauseTimers,resumeTimers,viewportRef,windowFocusedRef,setFocused,numToasts]),import_react.useEffect(()=>{let viewportNode=viewportRef.current;if(!viewportNode||numToasts===0)return;let doc$1=ownerDocument(viewportNode);function handlePointerDown(event){event.pointerType===`touch`&&(contains(viewportNode,getTarget(event))||(resumeTimers(),setHovering(!1),setFocused(!1)))}return doc$1.addEventListener(`pointerdown`,handlePointerDown,!0),()=>{doc$1.removeEventListener(`pointerdown`,handlePointerDown,!0)}},[numToasts,resumeTimers,setFocused,setHovering,viewportRef]);function handleFocusGuard(event){viewportRef.current&&(handlingFocusGuardRef.current=!0,event.relatedTarget===viewportRef.current?toasts[0]?.ref?.current?.focus():prevFocusElement?.focus({preventScroll:!0}))}function handleKeyDown(event){event.key===`Tab`&&event.shiftKey&&event.target===viewportRef.current&&(event.preventDefault(),prevFocusElement?.focus({preventScroll:!0}),resumeTimers())}import_react.useEffect(()=>{!windowFocusedRef.current||hasTransitioningToasts||!markedReadyForMouseLeaveRef.current||(resumeTimers(),setHovering(!1),markedReadyForMouseLeaveRef.current=!1)},[hasTransitioningToasts,resumeTimers,setHovering,windowFocusedRef]);function handleMouseEnter(){pauseTimers(),setHovering(!0),markedReadyForMouseLeaveRef.current=!1}function handleMouseLeave(){toasts.some(toast=>toast.transitionStatus===`ending`)?markedReadyForMouseLeaveRef.current=!0:(resumeTimers(),setHovering(!1))}function handleFocus(){if(handlingFocusGuardRef.current){handlingFocusGuardRef.current=!1;return}focused||matchesFocusVisible(ownerDocument(viewportRef.current).activeElement)&&(setFocused(!0),pauseTimers())}function handleBlur(event){!focused||contains(viewportRef.current,event.relatedTarget)||(setFocused(!1),resumeTimers())}let defaultProps={tabIndex:-1,role:`region`,"aria-live":`polite`,"aria-atomic":!1,"aria-relevant":`additions text`,"aria-label":`Notifications`,onMouseEnter:handleMouseEnter,onMouseMove:handleMouseEnter,onMouseLeave:handleMouseLeave,onFocus:handleFocus,onBlur:handleBlur,onKeyDown:handleKeyDown,onClick:handleFocus},state$1=import_react.useMemo(()=>({expanded}),[expanded]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,viewportRef],state:state$1,props:[defaultProps,{style:{[ToastViewportCssVars.frontmostHeight]:frontmostHeight?`${frontmostHeight}px`:void 0}},elementProps,{children:(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard}),children,numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard})]})}]}),contextValue=import_react.useMemo(()=>({viewportRef}),[viewportRef]),highPriorityToasts=import_react.useMemo(()=>toasts.filter(toast=>toast.priority===`high`),[toasts]);return(0,import_jsx_runtime.jsxs)(ToastViewportContext.Provider,{value:contextValue,children:[numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard}),element$3,!focused&&highPriorityToasts.length>0&&(0,import_jsx_runtime.jsx)(`div`,{style:visuallyHidden,children:highPriorityToasts.map(toast=>(0,import_jsx_runtime.jsxs)(`div`,{role:`alert`,"aria-atomic":!0,children:[(0,import_jsx_runtime.jsx)(`div`,{children:toast.title}),(0,import_jsx_runtime.jsx)(`div`,{children:toast.description})]},toast.id))})]})}),ToastRootContext=import_react.createContext(void 0);function useToastRootContext(){let context=import_react.useContext(ToastRootContext);if(!context)throw Error(formatErrorMessage(66));return context}let ToastRootCssVars=function(ToastRootCssVars$1){return ToastRootCssVars$1.index=`--toast-index`,ToastRootCssVars$1.offsetY=`--toast-offset-y`,ToastRootCssVars$1.height=`--toast-height`,ToastRootCssVars$1.swipeMovementX=`--toast-swipe-movement-x`,ToastRootCssVars$1.swipeMovementY=`--toast-swipe-movement-y`,ToastRootCssVars$1}({});var import_react_dom=__toESM(require_react_dom()),stateAttributesMapping$2={...transitionStatusMapping,swipeDirection(value){return value?{"data-swipe-direction":value}:null}},SWIPE_THRESHOLD=40,REVERSE_CANCEL_THRESHOLD=10,OPPOSITE_DIRECTION_DAMPING_FACTOR=.5,MIN_DRAG_THRESHOLD=1;function getDisplacement(direction,deltaX,deltaY){switch(direction){case`up`:return-deltaY;case`down`:return deltaY;case`left`:return-deltaX;case`right`:return deltaX;default:return 0}}function getElementTransform(element$3){let transform$1=window.getComputedStyle(element$3).transform,translateX=0,translateY=0,scale=1;if(transform$1&&transform$1!==`none`){let matrix=transform$1.match(/matrix(?:3d)?\(([^)]+)\)/);if(matrix){let values=matrix[1].split(`, `).map(parseFloat);values.length===6?(translateX=values[4],translateY=values[5],scale=Math.sqrt(values[0]*values[0]+values[1]*values[1])):values.length===16&&(translateX=values[12],translateY=values[13],scale=values[0])}}return{x:translateX,y:translateY,scale}}const ToastRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{toast,render,className,swipeDirection=[`down`,`right`],...elementProps}=componentProps,isAnchored=toast.positionerProps?.anchor!==void 0,swipeDirections=[];isAnchored||(swipeDirections=Array.isArray(swipeDirection)?swipeDirection:[swipeDirection]);let swipeEnabled=swipeDirections.length>0,{toasts,focused,close,remove:remove$1,setToasts,pauseTimers,expanded,setHovering}=useToastContext(),[currentSwipeDirection,setCurrentSwipeDirection]=import_react.useState(void 0),[isSwiping,setIsSwiping]=import_react.useState(!1),[isRealSwipe,setIsRealSwipe]=import_react.useState(!1),[dragDismissed,setDragDismissed]=import_react.useState(!1),[dragOffset,setDragOffset]=import_react.useState({x:0,y:0}),[initialTransform,setInitialTransform]=import_react.useState({x:0,y:0,scale:1}),[titleId,setTitleId]=import_react.useState(),[descriptionId,setDescriptionId]=import_react.useState(),[lockedDirection,setLockedDirection]=import_react.useState(null),rootRef=import_react.useRef(null),dragStartPosRef=import_react.useRef({x:0,y:0}),initialTransformRef=import_react.useRef({x:0,y:0,scale:1}),intendedSwipeDirectionRef=import_react.useRef(void 0),maxSwipeDisplacementRef=import_react.useRef(0),cancelledSwipeRef=import_react.useRef(!1),swipeCancelBaselineRef=import_react.useRef({x:0,y:0}),isFirstPointerMoveRef=import_react.useRef(!1),domIndex$1=import_react.useMemo(()=>toasts.indexOf(toast),[toast,toasts]),visibleIndex=import_react.useMemo(()=>toasts.filter(t$1=>t$1.transitionStatus!==`ending`).indexOf(toast),[toast,toasts]),offsetY=import_react.useMemo(()=>toasts.slice(0,toasts.indexOf(toast)).reduce((acc,t$1)=>acc+(t$1.height||0),0),[toasts,toast]);useOpenChangeComplete({open:toast.transitionStatus!==`ending`,ref:rootRef,onComplete(){toast.transitionStatus===`ending`&&remove$1(toast.id)}});let recalculateHeight=useStableCallback((flushSync$1=!1)=>{let element$4=rootRef.current;if(!element$4)return;let previousHeight=element$4.style.height;element$4.style.height=`auto`;let height=element$4.offsetHeight;element$4.style.height=previousHeight;function update$1(){setToasts(prev=>prev.map(t$1=>t$1.id===toast.id?{...t$1,ref:rootRef,height,transitionStatus:void 0}:t$1))}flushSync$1?import_react_dom.flushSync(update$1):update$1()});useIsoLayoutEffect(recalculateHeight,[recalculateHeight]);function applyDirectionalDamping(deltaX,deltaY){let newDeltaX=deltaX,newDeltaY=deltaY;return!swipeDirections.includes(`left`)&&!swipeDirections.includes(`right`)?newDeltaX=deltaX>0?deltaX**OPPOSITE_DIRECTION_DAMPING_FACTOR:-(Math.abs(deltaX)**OPPOSITE_DIRECTION_DAMPING_FACTOR):(!swipeDirections.includes(`right`)&&deltaX>0&&(newDeltaX=deltaX**OPPOSITE_DIRECTION_DAMPING_FACTOR),!swipeDirections.includes(`left`)&&deltaX<0&&(newDeltaX=-(Math.abs(deltaX)**OPPOSITE_DIRECTION_DAMPING_FACTOR))),!swipeDirections.includes(`up`)&&!swipeDirections.includes(`down`)?newDeltaY=deltaY>0?deltaY**OPPOSITE_DIRECTION_DAMPING_FACTOR:-(Math.abs(deltaY)**OPPOSITE_DIRECTION_DAMPING_FACTOR):(!swipeDirections.includes(`down`)&&deltaY>0&&(newDeltaY=deltaY**OPPOSITE_DIRECTION_DAMPING_FACTOR),!swipeDirections.includes(`up`)&&deltaY<0&&(newDeltaY=-(Math.abs(deltaY)**OPPOSITE_DIRECTION_DAMPING_FACTOR))),{x:newDeltaX,y:newDeltaY}}function handlePointerDown(event){if(event.button!==0)return;event.pointerType===`touch`&&pauseTimers();let target=getTarget(event.nativeEvent);if(!(target&&target.closest(`button,a,input,textarea,[role="button"],[data-swipe-ignore]`))){if(cancelledSwipeRef.current=!1,intendedSwipeDirectionRef.current=void 0,maxSwipeDisplacementRef.current=0,dragStartPosRef.current={x:event.clientX,y:event.clientY},swipeCancelBaselineRef.current=dragStartPosRef.current,rootRef.current){let transform$1=getElementTransform(rootRef.current);initialTransformRef.current=transform$1,setInitialTransform(transform$1),setDragOffset({x:transform$1.x,y:transform$1.y})}setHovering(!0),setIsSwiping(!0),setIsRealSwipe(!1),setLockedDirection(null),isFirstPointerMoveRef.current=!0,rootRef.current?.setPointerCapture(event.pointerId)}}function handlePointerMove(event){if(!isSwiping)return;event.preventDefault(),isFirstPointerMoveRef.current&&=(dragStartPosRef.current={x:event.clientX,y:event.clientY},!1);let{clientY,clientX,movementX,movementY}=event;(movementY<0&&clientY>swipeCancelBaselineRef.current.y||movementY>0&&clientY<swipeCancelBaselineRef.current.y)&&(swipeCancelBaselineRef.current={x:swipeCancelBaselineRef.current.x,y:clientY}),(movementX<0&&clientX>swipeCancelBaselineRef.current.x||movementX>0&&clientX<swipeCancelBaselineRef.current.x)&&(swipeCancelBaselineRef.current={x:clientX,y:swipeCancelBaselineRef.current.y});let deltaX=clientX-dragStartPosRef.current.x,deltaY=clientY-dragStartPosRef.current.y,cancelDeltaY=clientY-swipeCancelBaselineRef.current.y,cancelDeltaX=clientX-swipeCancelBaselineRef.current.x;if(!isRealSwipe&&Math.sqrt(deltaX*deltaX+deltaY*deltaY)>=MIN_DRAG_THRESHOLD&&(setIsRealSwipe(!0),lockedDirection===null)){let hasHorizontal=swipeDirections.includes(`left`)||swipeDirections.includes(`right`),hasVertical=swipeDirections.includes(`up`)||swipeDirections.includes(`down`);hasHorizontal&&hasVertical&&setLockedDirection(Math.abs(deltaX)>Math.abs(deltaY)?`horizontal`:`vertical`)}let candidate;if(!intendedSwipeDirectionRef.current)lockedDirection===`vertical`?deltaY>0?candidate=`down`:deltaY<0&&(candidate=`up`):lockedDirection===`horizontal`?deltaX>0?candidate=`right`:deltaX<0&&(candidate=`left`):candidate=Math.abs(deltaX)>=Math.abs(deltaY)?deltaX>0?`right`:`left`:deltaY>0?`down`:`up`,candidate&&swipeDirections.includes(candidate)&&(intendedSwipeDirectionRef.current=candidate,maxSwipeDisplacementRef.current=getDisplacement(candidate,deltaX,deltaY),setCurrentSwipeDirection(candidate));else{let direction=intendedSwipeDirectionRef.current,currentDisplacement=getDisplacement(direction,cancelDeltaX,cancelDeltaY);currentDisplacement>SWIPE_THRESHOLD?(cancelledSwipeRef.current=!1,setCurrentSwipeDirection(direction)):!(swipeDirections.includes(`left`)&&swipeDirections.includes(`right`))&&!(swipeDirections.includes(`up`)&&swipeDirections.includes(`down`))&&maxSwipeDisplacementRef.current-currentDisplacement>=REVERSE_CANCEL_THRESHOLD&&(cancelledSwipeRef.current=!0)}let dampedDelta=applyDirectionalDamping(deltaX,deltaY),newOffsetX=initialTransformRef.current.x,newOffsetY=initialTransformRef.current.y;lockedDirection===`horizontal`?(swipeDirections.includes(`left`)||swipeDirections.includes(`right`))&&(newOffsetX+=dampedDelta.x):(lockedDirection===`vertical`||(swipeDirections.includes(`left`)||swipeDirections.includes(`right`))&&(newOffsetX+=dampedDelta.x),(swipeDirections.includes(`up`)||swipeDirections.includes(`down`))&&(newOffsetY+=dampedDelta.y)),setDragOffset({x:newOffsetX,y:newOffsetY})}function handlePointerUp(event){if(!isSwiping)return;if(setIsSwiping(!1),setIsRealSwipe(!1),setLockedDirection(null),rootRef.current?.releasePointerCapture(event.pointerId),cancelledSwipeRef.current){setDragOffset({x:initialTransform.x,y:initialTransform.y}),setCurrentSwipeDirection(void 0);return}let shouldClose=!1,deltaX=dragOffset.x-initialTransform.x,deltaY=dragOffset.y-initialTransform.y,dismissDirection;for(let direction of swipeDirections){switch(direction){case`right`:deltaX>SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`right`);break;case`left`:deltaX<-SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`left`);break;case`down`:deltaY>SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`down`);break;case`up`:deltaY<-SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`up`);break;default:break}if(shouldClose)break}shouldClose?(setCurrentSwipeDirection(dismissDirection),setDragDismissed(!0),close(toast.id)):(setDragOffset({x:initialTransform.x,y:initialTransform.y}),setCurrentSwipeDirection(void 0))}function handleKeyDown(event){if(event.key===`Escape`){if(!rootRef.current||!contains(rootRef.current,activeElement(ownerDocument(rootRef.current))))return;close(toast.id)}}import_react.useEffect(()=>{if(!swipeEnabled)return;let element$4=rootRef.current;if(!element$4)return;function preventDefaultTouchStart(event){contains(element$4,event.target)&&event.preventDefault()}return element$4.addEventListener(`touchmove`,preventDefaultTouchStart,{passive:!1}),()=>{element$4.removeEventListener(`touchmove`,preventDefaultTouchStart)}},[swipeEnabled]);function getDragStyles(){if(!isSwiping&&dragOffset.x===initialTransform.x&&dragOffset.y===initialTransform.y&&!dragDismissed)return{[ToastRootCssVars.swipeMovementX]:`0px`,[ToastRootCssVars.swipeMovementY]:`0px`};let deltaX=dragOffset.x-initialTransform.x,deltaY=dragOffset.y-initialTransform.y;return{transition:isSwiping?`none`:void 0,transform:isSwiping?`translateX(${dragOffset.x}px) translateY(${dragOffset.y}px) scale(${initialTransform.scale})`:void 0,[ToastRootCssVars.swipeMovementX]:`${deltaX}px`,[ToastRootCssVars.swipeMovementY]:`${deltaY}px`}}let isHighPriority=toast.priority===`high`,defaultProps={role:isHighPriority?`alertdialog`:`dialog`,tabIndex:0,"aria-modal":!1,"aria-labelledby":titleId,"aria-describedby":descriptionId,"aria-hidden":isHighPriority&&!focused?!0:void 0,onPointerDown:swipeEnabled?handlePointerDown:void 0,onPointerMove:swipeEnabled?handlePointerMove:void 0,onPointerUp:swipeEnabled?handlePointerUp:void 0,onKeyDown:handleKeyDown,inert:inertValue(toast.limited),style:{...getDragStyles(),[ToastRootCssVars.index]:toast.transitionStatus===`ending`?domIndex$1:visibleIndex,[ToastRootCssVars.offsetY]:`${offsetY}px`,[ToastRootCssVars.height]:toast.height?`${toast.height}px`:void 0}},toastRoot=import_react.useMemo(()=>({rootRef,toast,titleId,setTitleId,descriptionId,setDescriptionId,swiping:isSwiping,swipeDirection:currentSwipeDirection,recalculateHeight,index:domIndex$1,visibleIndex,expanded}),[toast,titleId,descriptionId,isSwiping,currentSwipeDirection,recalculateHeight,domIndex$1,visibleIndex,expanded]),state$1=import_react.useMemo(()=>({transitionStatus:toast.transitionStatus,expanded,limited:toast.limited||!1,type:toast.type,swiping:toastRoot.swiping,swipeDirection:toastRoot.swipeDirection}),[expanded,toast.transitionStatus,toast.limited,toast.type,toastRoot.swiping,toastRoot.swipeDirection]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,toastRoot.rootRef],state:state$1,stateAttributesMapping:stateAttributesMapping$2,props:[defaultProps,elementProps]});return(0,import_jsx_runtime.jsx)(ToastRootContext.Provider,{value:toastRoot,children:element$3})}),ToastContent=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{visibleIndex,expanded,recalculateHeight}=useToastRootContext(),contentRef=import_react.useRef(null);useIsoLayoutEffect(()=>{let node$1=contentRef.current;if(!node$1||(recalculateHeight(),typeof ResizeObserver!=`function`||typeof MutationObserver!=`function`))return;let resizeObserver=new ResizeObserver(()=>recalculateHeight(!0)),mutationObserver=new MutationObserver(()=>recalculateHeight(!0));return resizeObserver.observe(node$1),mutationObserver.observe(node$1,{childList:!0,subtree:!0,characterData:!0}),()=>{resizeObserver.disconnect(),mutationObserver.disconnect()}},[recalculateHeight]);let behind=visibleIndex>0,state$1=import_react.useMemo(()=>({expanded,behind}),[expanded,behind]);return useRenderElement(`div`,componentProps,{ref:[forwardedRef,contentRef],state:state$1,props:elementProps})}),ToastDescription=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,children:childrenProp,...elementProps}=componentProps,{toast}=useToastRootContext(),children=childrenProp??toast.description,shouldRender=!!children,id=useId(idProp),{setDescriptionId}=useToastRootContext();useIsoLayoutEffect(()=>{if(shouldRender)return setDescriptionId(id),()=>{setDescriptionId(void 0)}},[shouldRender,id,setDescriptionId]);let element$3=useRenderElement(`p`,componentProps,{ref:forwardedRef,state:import_react.useMemo(()=>({type:toast.type}),[toast.type]),props:{...elementProps,id,children}});return shouldRender?element$3:null}),ToastTitle=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,children:childrenProp,...elementProps}=componentProps,{toast}=useToastRootContext(),children=childrenProp??toast.title,shouldRender=!!children,id=useId(idProp),{setTitleId}=useToastRootContext();useIsoLayoutEffect(()=>{if(shouldRender)return setTitleId(id),()=>{setTitleId(void 0)}},[shouldRender,id,setTitleId]);let element$3=useRenderElement(`h2`,componentProps,{ref:forwardedRef,state:import_react.useMemo(()=>({type:toast.type}),[toast.type]),props:{...elementProps,id,children}});return shouldRender?element$3:null}),ToastClose=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1,nativeButton=!0,...elementProps}=componentProps,{close,expanded}=useToastContext(),{toast}=useToastRootContext(),[hasFocus,setHasFocus]=import_react.useState(!1),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),state$1=import_react.useMemo(()=>({type:toast.type}),[toast.type]);return useRenderElement(`button`,componentProps,{ref:[forwardedRef,buttonRef],state:state$1,props:[{"aria-hidden":!expanded&&!hasFocus,onClick(){close(toast.id)},onFocus(){setHasFocus(!0)},onBlur(){setHasFocus(!1)}},elementProps,getButtonProps]})}),ToastAction=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1,nativeButton=!0,...elementProps}=componentProps,{toast}=useToastRootContext(),computedChildren=toast.actionProps?.children??elementProps.children,shouldRender=!!computedChildren,{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),state$1=import_react.useMemo(()=>({type:toast.type}),[toast.type]),element$3=useRenderElement(`button`,componentProps,{ref:[forwardedRef,buttonRef],state:state$1,props:[elementProps,toast.actionProps,getButtonProps,{children:computedChildren}]});return shouldRender?element$3:null}),ToastPortal=FloatingPortalLite;function useToastManager(){let context=import_react.useContext(ToastContext);if(!context)throw Error(formatErrorMessage(73));let{toasts,add:add$1,close,update:update$1,promise}=context;return import_react.useMemo(()=>({toasts,add:add$1,close,update:update$1,promise}),[toasts,add$1,close,update$1,promise])}function createToastManager(){let listeners=[];function emit(data){listeners.forEach(listener=>listener(data))}return{" subscribe":function(listener){return listeners.push(listener),()=>{let index$4=listeners.indexOf(listener);index$4!==-1&&listeners.splice(index$4,1)}},add(options$1){let id=options$1.id||generateId(`toast`);return emit({action:`add`,options:{...options$1,id,transitionStatus:`starting`}}),id},close(id){emit({action:`close`,options:{id}})},update(id,updates){emit({action:`update`,options:{...updates,id}})},promise(promiseValue,options$1){let handledPromise=promiseValue;return emit({action:`promise`,options:{...options$1,promise:promiseValue,setPromise(promise){handledPromise=promise}}}),handledPromise}}}var toastManager=createToastManager(),anchoredToastManager=createToastManager(),TOAST_ICONS={error:CircleAlert,info:Info$1,loading:LoaderCircle,success:CircleCheck,warning:TriangleAlert};function ToastProvider({children,position:position$2=`bottom-right`,...props}){return(0,import_jsx_runtime.jsxs)(ToastProvider$1,{toastManager,...props,children:[children,(0,import_jsx_runtime.jsx)(Toasts,{position:position$2})]})}function Toasts({position:position$2=`bottom-right`}){let{toasts}=useToastManager(),isTop=position$2.startsWith(`top`);return(0,import_jsx_runtime.jsx)(ToastPortal,{"data-slot":`toast-portal`,children:(0,import_jsx_runtime.jsx)(ToastViewport,{className:cn(`fixed z-[100] mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]`,`data-[position*=top]:top-(--toast-inset)`,`data-[position*=bottom]:bottom-(--toast-inset)`,`data-[position*=left]:left-(--toast-inset)`,`data-[position*=right]:right-(--toast-inset)`,`data-[position*=center]:-translate-x-1/2 data-[position*=center]:left-1/2`),"data-position":position$2,"data-slot":`toast-viewport`,children:toasts.map(toast=>{let Icon$1=toast.type?TOAST_ICONS[toast.type]:null;return(0,import_jsx_runtime.jsxs)(ToastRoot,{className:cn(`absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover bg-clip-padding text-popover-foreground shadow-lg [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]`,`data-[position*=right]:right-0 data-[position*=right]:left-auto`,`data-[position*=left]:right-auto data-[position*=left]:left-0`,`data-[position*=center]:right-0 data-[position*=center]:left-0`,`data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-top`,`data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-bottom`,`after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full`,`data-[position*=top]:after:top-full`,`data-[position*=bottom]:after:bottom-full`,`[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]`,`data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]`,`data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]`,`data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]`,`data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]`,`data-limited:opacity-0`,`data-expanded:h-(--toast-height)`,`data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]`,`data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]`,`data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]`,`data-ending-style:opacity-0`,`data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]`,`data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]`,`data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]`,`data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]`,`data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]`),"data-position":position$2,swipeDirection:position$2.includes(`center`)?[isTop?`up`:`down`]:position$2.includes(`left`)?[`left`,isTop?`up`:`down`]:[`right`,isTop?`up`:`down`],toast,children:[(0,import_jsx_runtime.jsx)(ToastClose,{className:`absolute top-2 right-2 rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,"data-slot":`toast-close`,children:(0,import_jsx_runtime.jsx)(X,{className:`h-3.5 w-3.5`})}),(0,import_jsx_runtime.jsxs)(ToastContent,{className:`pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden pl-3.5 pr-8 py-3 text-sm transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex gap-2`,children:[Icon$1&&(0,import_jsx_runtime.jsx)(`div`,{className:`[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,"data-slot":`toast-icon`,children:(0,import_jsx_runtime.jsx)(Icon$1,{className:`in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80`})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,import_jsx_runtime.jsx)(ToastTitle,{className:`font-medium`,"data-slot":`toast-title`}),(0,import_jsx_runtime.jsx)(ToastDescription,{className:`text-muted-foreground`,"data-slot":`toast-description`})]})]}),toast.actionProps&&(0,import_jsx_runtime.jsx)(ToastAction,{className:buttonVariants({size:`xs`}),"data-slot":`toast-action`,children:toast.actionProps.children})]})]},toast.id)})})})}function Table({className,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:`relative w-full overflow-x-auto`,"data-slot":`table-container`,children:(0,import_jsx_runtime.jsx)(`table`,{className:cn(`w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm`,className),"data-slot":`table`,...props})})}function TableHeader({className,...props}){return(0,import_jsx_runtime.jsx)(`thead`,{className:cn(`[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent`,className),"data-slot":`table-header`,...props})}function TableBody({className,...props}){return(0,import_jsx_runtime.jsx)(`tbody`,{className:cn(`relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/50`,className),"data-slot":`table-body`,...props})}function TableRow({className,...props}){return(0,import_jsx_runtime.jsx)(`tr`,{className:cn(`border-b transition-colors hover:bg-muted/50 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/50 in-data-[slot=frame]:data-[state=selected]:bg-transparent`,className),"data-slot":`table-row`,...props})}function TableHead({className,...props}){return(0,import_jsx_runtime.jsx)(`th`,{className:cn(`h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-muted-foreground has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0 *:[[role=checkbox]]:translate-y-0.5`,className),"data-slot":`table-head`,...props})}function TableCell({className,...props}){return(0,import_jsx_runtime.jsx)(`td`,{className:cn(`whitespace-nowrap p-2 align-middle has-[[role=checkbox]]:pe-0 *:[[role=checkbox]]:translate-y-0.5`,className),"data-slot":`table-cell`,...props})}function InfoItem({label,value}){return(0,import_jsx_runtime.jsxs)(`div`,{children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:label}),(0,import_jsx_runtime.jsx)(`div`,{children:value||`-`})]})}function formatBytes(bytes){let n=Number(bytes);if(n===0)return`0 B`;let i$3=Math.floor(Math.log(n)/Math.log(1024));return(n/1024**i$3).toFixed(1)+` `+[`B`,`KB`,`MB`,`GB`,`TB`][i$3]}function formatRowCount(count){let n=Number(count);return n<1e3?n.toString():n<1e6?(n/1e3).toFixed(1)+`K`:n<1e9?(n/1e6).toFixed(1)+`M`:(n/1e9).toFixed(1)+`B`}function getKindLabel(kind){switch(kind){case`table`:return`Table`;case`partitioned_table`:return`Partitioned Table`;case`view`:return`View`;case`materialized_view`:return`Materialized View`;case`function`:return`Function`;case`procedure`:return`Procedure`;default:return`Object`}}function ColumnsTable({columns,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!columns||columns.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No columns`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Nullable`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:columns.map(col=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:col.name}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:col.type}),(0,import_jsx_runtime.jsx)(TableCell,{children:col.nullable?`Yes`:`No`})]},col.name))})]})}function IndexesTable({indexes,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!indexes||indexes.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No indexes`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Columns`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Method`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:indexes.map(idx=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:idx.name}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:idx.columns.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{children:idx.isPrimary?`Primary`:idx.isUnique?`Unique`:`-`}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:idx.method})]},idx.name))})]})}function ConstraintsTable({constraints,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!constraints||constraints.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No constraints`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Columns`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`References`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:constraints.map(con=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:con.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:con.type}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:con.type===`CHECK`?con.definition:con.columns.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:con.refTable?`${con.refTable} (${con.refColumns.join(`, `)})`:`-`})]},con.name))})]})}function TriggersTable({triggers,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!triggers||triggers.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No triggers`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Timing`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Event`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Level`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Function`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:triggers.map(trg=>(0,import_jsx_runtime.jsxs)(TableRow,{className:trg.enabled?``:`opacity-50`,children:[(0,import_jsx_runtime.jsx)(TableCell,{children:trg.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.timing}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.event}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.level}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:trg.function})]},trg.name))})]})}function PoliciesTable({policies,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!policies||policies.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No policies`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Command`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Roles`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Expression`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:policies.map(pol=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:pol.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:pol.command}),(0,import_jsx_runtime.jsx)(TableCell,{children:pol.permissive}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:pol.roles.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600 font-mono text-xs max-w-xs truncate`,title:pol.usingExpr||pol.checkExpr,children:pol.usingExpr||pol.checkExpr||`-`})]},pol.name))})]})}function GrantsTable({grants,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!grants||grants.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No grants`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Grantee`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Privileges`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Grantor`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:grants.map(grant=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:grant.grantee}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:grant.privileges.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:grant.grantor})]},`${grant.grantee}-${grant.grantor}`))})]})}const editorTheme=(isEditing=!1)=>EditorView.theme({"&":{fontSize:`13px`},".cm-content":{padding:`8px 12px`,fontFamily:`ui-monospace, monospace`},".cm-line":{padding:`0`},".cm-scroller":{overflow:`auto`},".cm-gutters":{backgroundColor:isEditing?`#fff`:`#f9fafb`,borderRight:`1px solid #e5e7eb`},".cm-lineNumbers .cm-gutterElement":{padding:`0 8px`,color:`#9ca3af`}});function useSqlModuleReady(){let[moduleReady,setModuleReady]=(0,import_react.useState)(!1);return(0,import_react.useEffect)(()=>{__vitePreload(async()=>{let{ensureModuleLoaded:ensureModuleLoaded$1}=await import(`./sql-C7hburuS.js`);return{ensureModuleLoaded:ensureModuleLoaded$1}},[]).then(({ensureModuleLoaded:ensureModuleLoaded$1})=>{ensureModuleLoaded$1().then(()=>setModuleReady(!0))})},[]),moduleReady}function SQLDefinition({sql}){let containerRef=(0,import_react.useRef)(null),viewRef=(0,import_react.useRef)(null),moduleReady=useSqlModuleReady();return(0,import_react.useEffect)(()=>{if(!(!containerRef.current||!moduleReady))return viewRef.current&&=(viewRef.current.destroy(),null),viewRef.current=new EditorView({state:EditorState.create({doc:sql,extensions:[EditorView.editable.of(!1),EditorState.readOnly.of(!0),lineNumbers(),pgHighlight(),editorTheme()]}),parent:containerRef.current}),()=>{viewRef.current?.destroy(),viewRef.current=null}},[sql,moduleReady]),(0,import_jsx_runtime.jsx)(`div`,{ref:containerRef,className:`bg-gray-50 rounded-md overflow-hidden border border-gray-200`})}function escapeIdentifier(name$2){return`"${name$2.replace(/"/g,`""`)}"`}function escapeValue(value){return value==null?`NULL`:typeof value==`number`?String(value):typeof value==`boolean`?value?`TRUE`:`FALSE`:typeof value==`object`?`'${JSON.stringify(value).replace(/'/g,`''`)}'`:`'${String(value).replace(/'/g,`''`)}'`}function generateDeleteSQL(change){let statements=[];for(let table$1 of change.tables){let qualifiedTable=table$1.schemaName?`${escapeIdentifier(table$1.schemaName)}.${escapeIdentifier(table$1.tableName)}`:escapeIdentifier(table$1.tableName),whereColumns=table$1.primaryKeyColumns.length>0?table$1.primaryKeyColumns:Object.keys(table$1.rows[0]||{});for(let row of table$1.rows){let conditions=whereColumns.map(col=>{let value=row[col];return value==null?`${escapeIdentifier(col)} IS NULL`:`${escapeIdentifier(col)} = ${escapeValue(value)}`}).join(` AND `);statements.push(`DELETE FROM ${qualifiedTable} WHERE ${conditions};`)}}return statements.join(`
86
+ `)||editValue.length>100,showDefaultCheckbox=isNewRow&&hasDefault;return isBool?(0,import_jsx_runtime.jsx)(`div`,{className:`space-y-1`,children:(0,import_jsx_runtime.jsxs)(`select`,{ref:inputRef,value:isDefault?`default`:isNull?`null`:String(value),onChange:e=>{e.target.value===`null`?onSetNull():e.target.value===`default`?onSetDefault():onChange(e.target.value)},className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500`,children:[showDefaultCheckbox&&(0,import_jsx_runtime.jsx)(`option`,{value:`default`,children:`DEFAULT`}),isNullable&&(0,import_jsx_runtime.jsx)(`option`,{value:`null`,children:`null`}),(0,import_jsx_runtime.jsx)(`option`,{value:`true`,children:`true`}),(0,import_jsx_runtime.jsx)(`option`,{value:`false`,children:`false`})]})}):(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-1`,children:[isDefault?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} bg-gray-100 italic text-gray-500`,children:`DEFAULT`}):isMultiline?(0,import_jsx_runtime.jsx)(`textarea`,{ref:inputRef,value:editValue,onChange:e=>onChange(e.target.value),placeholder:isNull?`null`:``,className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-h-[80px] max-h-64 resize-y font-mono`,rows:4}):(0,import_jsx_runtime.jsx)(`input`,{ref:inputRef,type:`text`,value:editValue,onChange:e=>onChange(e.target.value),placeholder:isNull?`null`:``,className:`w-full px-2 py-1.5 text-xs bg-white border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-4`,children:[showDefaultCheckbox&&(0,import_jsx_runtime.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-gray-500`,children:[(0,import_jsx_runtime.jsx)(`input`,{type:`checkbox`,checked:isDefault,onChange:e=>{e.target.checked?onSetDefault():onChange(``)},className:`rounded border-gray-300`}),`Use DEFAULT`]}),isNullable&&!isDefault&&(0,import_jsx_runtime.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-gray-500`,children:[(0,import_jsx_runtime.jsx)(`input`,{type:`checkbox`,checked:isNull,onChange:e=>{e.target.checked?onSetNull():onChange(``)},className:`rounded border-gray-300`}),`Set to NULL`]})]})]})}function RowDetailPanel({row,columns,open,onClose,onPrevious,onNext,hasPrevious,hasNext,scrollToColumn,currentIndex,totalCount,onExpandJson,onEdit,isEditing,onCancelEdit,onSaveEdit,onDelete,stagedType,stagedOverrides,onDiscardStaged,autoEditColumn,onAutoEditHandled,isNewRow}){let[search$1,setSearch]=(0,import_react.useState)(``),[highlightedColumn,setHighlightedColumn]=(0,import_react.useState)(null),[editedValues,setEditedValues]=(0,import_react.useState)({}),columnRefs=(0,import_react.useRef)(new Map),contentRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{setEditedValues(isEditing?{...row}:{})},[isEditing,row]);let handleFieldChange=(0,import_react.useCallback)((colName,value,colType)=>{setEditedValues(prev=>{if(colType===`integer`||colType===`int4`||colType===`int8`||colType===`bigint`||colType===`smallint`){let num=parseInt(value,10);return{...prev,[colName]:isNaN(num)?value:num}}if(colType===`numeric`||colType===`decimal`||colType===`real`||colType===`float4`||colType===`float8`||colType===`double precision`){let num=parseFloat(value);return{...prev,[colName]:isNaN(num)?value:num}}return colType===`boolean`||colType===`bool`?{...prev,[colName]:value.toLowerCase()===`true`}:{...prev,[colName]:value}})},[]),handleSave=(0,import_react.useCallback)(()=>{onSaveEdit&&onSaveEdit(editedValues)},[editedValues,onSaveEdit]),missingRequiredPK=(0,import_react.useMemo)(()=>isNewRow?columns.some(col=>{if(!col.isPrimaryKey)return!1;let value=editedValues[col.name];return col.hasDefault&&value===void 0?!1:value===``||value==null}):!1,[columns,editedValues,isNewRow]),hasChanges=(0,import_react.useMemo)(()=>isNewRow?!missingRequiredPK:columns.some(col=>editedValues[col.name]!==row[col.name]),[columns,editedValues,row,isNewRow,missingRequiredPK]),filteredColumns=(0,import_react.useMemo)(()=>{if(!search$1)return columns;let lowerSearch=search$1.toLowerCase();return columns.filter(col=>{let colMatch=col.name.toLowerCase().includes(lowerSearch),value=row[col.name],valueMatch=value!=null&&String(value).toLowerCase().includes(lowerSearch);return colMatch||valueMatch})},[columns,row,search$1]);return(0,import_react.useEffect)(()=>{setSearch(``)},[row]),(0,import_react.useEffect)(()=>{open&&scrollToColumn?(requestAnimationFrame(()=>{let element$3=columnRefs.current.get(scrollToColumn);element$3&&contentRef.current&&element$3.scrollIntoView({behavior:`instant`,block:`center`})}),setHighlightedColumn(scrollToColumn)):setHighlightedColumn(null)},[open,scrollToColumn]),(0,import_react.useEffect)(()=>{if(open&&isEditing&&autoEditColumn){let timer=setTimeout(()=>onAutoEditHandled?.(),50);return()=>clearTimeout(timer)}},[open,isEditing,autoEditColumn,onAutoEditHandled]),useKeyboardShortcut(`row-detail-close`,`Escape`,()=>{isEditing&&onCancelEdit?onCancelEdit():onClose()},{when:()=>open}),open?(0,import_react_dom$2.createPortal)((0,import_jsx_runtime.jsxs)(`div`,{className:`fixed top-0 right-0 h-full w-96 bg-white border-l border-gray-200 shadow-lg flex flex-col z-50`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 px-2 py-2 flex flex-col gap-2`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex items-center justify-between`,children:isEditing?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs font-medium text-gray-700`,children:isNewRow?`New row`:`Editing row`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,onClick:onCancelEdit,tabIndex:-1,children:`Cancel`}),(0,import_jsx_runtime.jsx)(Button,{variant:`default`,size:`sm`,onClick:handleSave,disabled:!hasChanges,tabIndex:-1,children:`Save`})]})]}):(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onPrevious,disabled:!hasPrevious,title:`Previous row (k or ↑)`,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(ChevronUp,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onNext,disabled:!hasNext,title:`Next row (j or ↓)`,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(ChevronDown,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-gray-500 ml-1`,children:[currentIndex,`/`,totalCount]})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[onEdit&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded hover:text-blue-600 hover:bg-blue-50 disabled:text-gray-300 disabled:hover:bg-transparent disabled:cursor-not-allowed`,onClick:stagedType?void 0:onEdit,disabled:!!stagedType,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Pencil,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:stagedType?`Cannot edit row staged for ${stagedType}`:`Edit row`})]}),onDelete&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded text-red-500 hover:text-red-600 hover:bg-red-50 disabled:text-gray-300 disabled:hover:bg-transparent disabled:cursor-not-allowed`,onClick:stagedType?void 0:onDelete,disabled:!!stagedType,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Trash2,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:stagedType?`Row already staged for ${stagedType}`:`Stage row for deletion`})]}),stagedType&&onDiscardStaged&&(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`p-1 rounded text-amber-600 hover:text-amber-700 hover:bg-amber-50`,onClick:onDiscardStaged,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(Undo2,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:`Discard staged change`})]}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`p-1 h-auto`,onClick:onClose,tabIndex:-1,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]})]})}),!isEditing&&(0,import_jsx_runtime.jsx)(SearchInput,{value:search$1,onChange:e=>setSearch(e.target.value),onClear:()=>setSearch(``),size:`sm`})]}),(0,import_jsx_runtime.jsx)(`div`,{ref:contentRef,className:`flex-1 overflow-auto p-3 space-y-3`,children:filteredColumns.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-xs text-gray-400 text-center py-4`,children:`No matching columns`}):filteredColumns.map(col=>{let{name:colName,type:colType}=col,value=isEditing&&colName in editedValues?editedValues[colName]:row[colName],isNull=value===null,isUndefined=value===void 0,formattedValue=formatValue(value,colType),isModified=isEditing&&editedValues[colName]!==row[colName],isStaged$1=!isEditing&&stagedOverrides&&colName in stagedOverrides,showDefault=isUndefined&&stagedType===`insert`&&!isEditing;return(0,import_jsx_runtime.jsxs)(`div`,{ref:el=>{el?columnRefs.current.set(colName,el):columnRefs.current.delete(colName)},children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs font-medium truncate ${isModified||isStaged$1?`text-amber-600`:highlightedColumn===colName?`text-blue-600`:`text-gray-700`}`,children:[isEditing?colName:(0,import_jsx_runtime.jsx)(HighlightedText$1,{text:colName,search:search$1}),col.isPrimaryKey&&isNewRow&&!col.hasDefault&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-red-500`,children:`*`}),col.isPrimaryKey&&(0,import_jsx_runtime.jsxs)(`span`,{className:`ml-1 text-gray-400`,children:[`(PK`,isNewRow&&!col.hasDefault?`, required`:``,`)`]}),col.hasDefault&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-gray-400`,children:`(has default)`}),(isModified||isStaged$1)&&(0,import_jsx_runtime.jsx)(`span`,{className:`ml-1 text-amber-500`,children:`*`})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400`,children:colType}),!isEditing&&isJsonType$1(colType)&&!isNull&&!isUndefined&&onExpandJson&&(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onExpandJson(value,colName),className:`p-1 rounded hover:bg-accent text-gray-400 hover:text-gray-600 transition-colors`,title:`Expand JSON`,children:(0,import_jsx_runtime.jsx)(Expand,{className:`w-3.5 h-3.5`})}),!isEditing&&!showDefault&&(0,import_jsx_runtime.jsx)(CopyButton,{value:formattedValue})]})]}),isEditing?(0,import_jsx_runtime.jsx)(EditableField,{value,colType,isNullable:col.isNullable,hasDefault:col.hasDefault,isNewRow:isNewRow||!1,onChange:newValue=>handleFieldChange(colName,newValue,colType),onSetNull:()=>setEditedValues(prev=>({...prev,[colName]:null})),onSetDefault:()=>setEditedValues(prev=>({...prev,[colName]:void 0})),autoFocus:autoEditColumn===colName}):showDefault?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} bg-green-50 border-green-200 italic text-gray-500`,children:`DEFAULT`}):isNull?(0,import_jsx_runtime.jsx)(`div`,{className:`${valueBaseStyles} ${isStaged$1?`bg-amber-50 border-amber-200`:``} italic text-gray-400`,children:`null`}):(0,import_jsx_runtime.jsx)(ValueRenderer,{value:formattedValue,search:search$1,isJson:isJsonType$1(colType),isStaged:isStaged$1})]},colName)})})]}),document.body):null}const DialogRootContext=import_react.createContext(void 0);function useDialogRootContext(optional){let dialogRootContext=import_react.useContext(DialogRootContext);if(optional===!1&&dialogRootContext===void 0)throw Error(formatErrorMessage(27));return dialogRootContext}var stateAttributesMapping$5={...popupStateMapping,...transitionStatusMapping};const DialogBackdrop$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,forceRender=!1,...elementProps}=componentProps,{store}=useDialogRootContext(),open=store.useState(`open`),nested=store.useState(`nested`),mounted=store.useState(`mounted`),transitionStatus=store.useState(`transitionStatus`);return useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({open,transitionStatus}),[open,transitionStatus]),ref:[store.context.backdropRef,forwardedRef],stateAttributesMapping:stateAttributesMapping$5,props:[{role:`presentation`,hidden:!mounted,style:{userSelect:`none`,WebkitUserSelect:`none`}},elementProps],enabled:forceRender||!nested})}),DialogClose=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1=!1,nativeButton=!0,...elementProps}=componentProps,{store}=useDialogRootContext(),open=store.useState(`open`);function handleClick(event){open&&store.setOpen(!1,createChangeEventDetails(`close-press`,event.nativeEvent))}let{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton});return useRenderElement(`button`,componentProps,{state:import_react.useMemo(()=>({disabled:disabled$1}),[disabled$1]),ref:[forwardedRef,buttonRef],props:[{onClick:handleClick},elementProps,getButtonProps]})}),DialogDescription$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,...elementProps}=componentProps,{store}=useDialogRootContext(),id=useBaseUiId(idProp);return store.useSyncedValueWithCleanup(`descriptionElementId`,id),useRenderElement(`p`,componentProps,{ref:forwardedRef,props:[{id},elementProps]})});let DialogPopupCssVars=function(DialogPopupCssVars$1){return DialogPopupCssVars$1.nestedDialogs=`--nested-dialogs`,DialogPopupCssVars$1}({}),DialogPopupDataAttributes=function(DialogPopupDataAttributes$1){return DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.open=CommonPopupDataAttributes.open]=`open`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.closed=CommonPopupDataAttributes.closed]=`closed`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.startingStyle=CommonPopupDataAttributes.startingStyle]=`startingStyle`,DialogPopupDataAttributes$1[DialogPopupDataAttributes$1.endingStyle=CommonPopupDataAttributes.endingStyle]=`endingStyle`,DialogPopupDataAttributes$1.nested=`data-nested`,DialogPopupDataAttributes$1.nestedDialogOpen=`data-nested-dialog-open`,DialogPopupDataAttributes$1}({});const DialogPortalContext=import_react.createContext(void 0);function useDialogPortalContext(){let value=import_react.useContext(DialogPortalContext);if(value===void 0)throw Error(formatErrorMessage(26));return value}var stateAttributesMapping$4={...popupStateMapping,...transitionStatusMapping,nestedDialogOpen(value){return value?{[DialogPopupDataAttributes.nestedDialogOpen]:``}:null}};const DialogPopup$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,finalFocus,initialFocus,render,...elementProps}=componentProps,{store}=useDialogRootContext(),descriptionElementId=store.useState(`descriptionElementId`),disablePointerDismissal=store.useState(`disablePointerDismissal`),floatingRootContext=store.useState(`floatingRootContext`),rootPopupProps=store.useState(`popupProps`),modal=store.useState(`modal`),mounted=store.useState(`mounted`),nested=store.useState(`nested`),nestedOpenDialogCount=store.useState(`nestedOpenDialogCount`),open=store.useState(`open`),openMethod=store.useState(`openMethod`),titleElementId=store.useState(`titleElementId`),transitionStatus=store.useState(`transitionStatus`),role=store.useState(`role`);useDialogPortalContext(),useOpenChangeComplete({open,ref:store.context.popupRef,onComplete(){open&&store.context.onOpenChangeComplete?.(!0)}});function defaultInitialFocus(interactionType){return interactionType===`touch`?store.context.popupRef.current:!0}let resolvedInitialFocus=initialFocus===void 0?defaultInitialFocus:initialFocus,nestedDialogOpen=nestedOpenDialogCount>0,element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({open,nested,transitionStatus,nestedDialogOpen}),[open,nested,transitionStatus,nestedDialogOpen]),props:[rootPopupProps,{"aria-labelledby":titleElementId??void 0,"aria-describedby":descriptionElementId??void 0,role,tabIndex:-1,hidden:!mounted,onKeyDown(event){COMPOSITE_KEYS.has(event.key)&&event.stopPropagation()},style:{[DialogPopupCssVars.nestedDialogs]:nestedOpenDialogCount}},elementProps],ref:[forwardedRef,store.context.popupRef,store.useStateSetter(`popupElement`)],stateAttributesMapping:stateAttributesMapping$4});return(0,import_jsx_runtime.jsx)(FloatingFocusManager,{context:floatingRootContext,openInteractionType:openMethod,disabled:!mounted,closeOnFocusOut:!disablePointerDismissal,initialFocus:resolvedInitialFocus,returnFocus:finalFocus,modal:modal!==!1,restoreFocus:`popup`,children:element$3})}),DialogPortal$1=import_react.forwardRef(function(props,forwardedRef){let{keepMounted=!1,...portalProps}=props,{store}=useDialogRootContext(),mounted=store.useState(`mounted`),modal=store.useState(`modal`),open=store.useState(`open`);return mounted||keepMounted?(0,import_jsx_runtime.jsx)(DialogPortalContext.Provider,{value:keepMounted,children:(0,import_jsx_runtime.jsxs)(FloatingPortal,{ref:forwardedRef,...portalProps,children:[mounted&&modal===!0&&(0,import_jsx_runtime.jsx)(InternalBackdrop,{ref:store.context.internalBackdropRef,inert:inertValue(!open)}),props.children]})}):null});function useDialogRoot(params){let{store,parentContext,actionsRef}=params,open=store.useState(`open`),disablePointerDismissal=store.useState(`disablePointerDismissal`),modal=store.useState(`modal`),popupElement=store.useState(`popupElement`),{openMethod,triggerProps,reset:resetOpenInteractionType}=useOpenInteractionType(open);useImplicitActiveTrigger(store);let{forceUnmount}=useOpenStateTransitions(open,store,()=>{resetOpenInteractionType()}),createDialogEventDetails=useStableCallback(reason=>{let details=createChangeEventDetails(reason);return details.preventUnmountOnClose=()=>{store.set(`preventUnmountingOnClose`,!0)},details}),handleImperativeClose=import_react.useCallback(()=>{store.setOpen(!1,createDialogEventDetails(imperativeAction))},[store,createDialogEventDetails]);import_react.useImperativeHandle(actionsRef,()=>({unmount:forceUnmount,close:handleImperativeClose}),[forceUnmount,handleImperativeClose]);let floatingRootContext=useSyncedFloatingRootContext({popupStore:store,onOpenChange:store.setOpen,treatPopupAsFloatingElement:!0,noEmit:!0}),[ownNestedOpenDialogs,setOwnNestedOpenDialogs]=import_react.useState(0),isTopmost=ownNestedOpenDialogs===0,role=useRole(floatingRootContext),dismiss=useDismiss(floatingRootContext,{outsidePressEvent(){return store.context.internalBackdropRef.current||store.context.backdropRef.current?`intentional`:{mouse:modal===`trap-focus`?`sloppy`:`intentional`,touch:`sloppy`}},outsidePress(event){if(`button`in event&&event.button!==0||`touches`in event&&event.touches.length!==1)return!1;let target=getTarget(event);if(isTopmost&&!disablePointerDismissal){let eventTarget=target;return modal&&(store.context.internalBackdropRef.current||store.context.backdropRef.current)?store.context.internalBackdropRef.current===eventTarget||store.context.backdropRef.current===eventTarget||contains(eventTarget,popupElement)&&!eventTarget?.hasAttribute(`data-base-ui-portal`):!0}return!1},escapeKey:isTopmost});useScrollLock(open&&modal===!0,popupElement);let{getReferenceProps,getFloatingProps,getTriggerProps}=useInteractions([role,dismiss]);store.useContextCallback(`onNestedDialogOpen`,ownChildrenCount=>{setOwnNestedOpenDialogs(ownChildrenCount+1)}),store.useContextCallback(`onNestedDialogClose`,()=>{setOwnNestedOpenDialogs(0)}),import_react.useEffect(()=>(parentContext?.onNestedDialogOpen&&open&&parentContext.onNestedDialogOpen(ownNestedOpenDialogs),parentContext?.onNestedDialogClose&&!open&&parentContext.onNestedDialogClose(),()=>{parentContext?.onNestedDialogClose&&open&&parentContext.onNestedDialogClose()}),[open,parentContext,ownNestedOpenDialogs]);let activeTriggerProps=import_react.useMemo(()=>getReferenceProps(triggerProps),[getReferenceProps,triggerProps]),inactiveTriggerProps=import_react.useMemo(()=>getTriggerProps(triggerProps),[getTriggerProps,triggerProps]),popupProps=import_react.useMemo(()=>getFloatingProps(),[getFloatingProps]);store.useSyncedValues({openMethod,activeTriggerProps,inactiveTriggerProps,popupProps,floatingRootContext,nestedOpenDialogCount:ownNestedOpenDialogs})}var selectors={...popupStoreSelectors,modal:createSelector(state$1=>state$1.modal),nested:createSelector(state$1=>state$1.nested),nestedOpenDialogCount:createSelector(state$1=>state$1.nestedOpenDialogCount),disablePointerDismissal:createSelector(state$1=>state$1.disablePointerDismissal),openMethod:createSelector(state$1=>state$1.openMethod),descriptionElementId:createSelector(state$1=>state$1.descriptionElementId),titleElementId:createSelector(state$1=>state$1.titleElementId),viewportElement:createSelector(state$1=>state$1.viewportElement),role:createSelector(state$1=>state$1.role)},DialogStore=class extends ReactStore{constructor(initialState){super(createInitialState(initialState),{popupRef:import_react.createRef(),backdropRef:import_react.createRef(),internalBackdropRef:import_react.createRef(),triggerElements:new PopupTriggerMap,onOpenChange:void 0,onOpenChangeComplete:void 0},selectors)}setOpen=(nextOpen,eventDetails)=>{if(eventDetails.preventUnmountOnClose=()=>{this.set(`preventUnmountingOnClose`,!0)},!nextOpen&&eventDetails.trigger==null&&this.state.activeTriggerId!=null&&(eventDetails.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(nextOpen,eventDetails),eventDetails.isCanceled)return;let details={open:nextOpen,nativeEvent:eventDetails.event,reason:eventDetails.reason,nested:this.state.nested};this.state.floatingRootContext.context.events?.emit(`openchange`,details);let updatedState={open:nextOpen},newTriggerId=eventDetails.trigger?.id??null;(newTriggerId||nextOpen)&&(updatedState.activeTriggerId=newTriggerId,updatedState.activeTriggerElement=eventDetails.trigger??null),this.update(updatedState)}};function createInitialState(initialState={}){return{...createInitialPopupStoreState(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,role:`dialog`,...initialState}}function DialogRoot(props){let{children,open:openProp,defaultOpen=!1,onOpenChange,onOpenChangeComplete,disablePointerDismissal=!1,modal=!0,actionsRef,handle:handle$1,triggerId:triggerIdProp,defaultTriggerId:defaultTriggerIdProp=null}=props,parentDialogRootContext=useDialogRootContext(!0),nested=!!parentDialogRootContext,store=useRefWithInit(()=>handle$1?.store??new DialogStore({open:openProp??defaultOpen,activeTriggerId:triggerIdProp===void 0?defaultTriggerIdProp:triggerIdProp,modal,disablePointerDismissal,nested})).current;store.useControlledProp(`open`,openProp,defaultOpen),store.useControlledProp(`activeTriggerId`,triggerIdProp,defaultTriggerIdProp),store.useSyncedValues({disablePointerDismissal,nested,modal}),store.useContextCallback(`onOpenChange`,onOpenChange),store.useContextCallback(`onOpenChangeComplete`,onOpenChangeComplete);let payload=store.useState(`payload`);useDialogRoot({store,actionsRef,parentContext:parentDialogRootContext?.store.context,onOpenChange,triggerIdProp});let contextValue=import_react.useMemo(()=>({store}),[store]);return(0,import_jsx_runtime.jsx)(DialogRootContext.Provider,{value:contextValue,children:typeof children==`function`?children({payload}):children})}let DialogViewportDataAttributes=function(DialogViewportDataAttributes$1){return DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.open=CommonPopupDataAttributes.open]=`open`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.closed=CommonPopupDataAttributes.closed]=`closed`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.startingStyle=CommonPopupDataAttributes.startingStyle]=`startingStyle`,DialogViewportDataAttributes$1[DialogViewportDataAttributes$1.endingStyle=CommonPopupDataAttributes.endingStyle]=`endingStyle`,DialogViewportDataAttributes$1.nested=`data-nested`,DialogViewportDataAttributes$1.nestedDialogOpen=`data-nested-dialog-open`,DialogViewportDataAttributes$1}({});var stateAttributesMapping$3={...popupStateMapping,...transitionStatusMapping,nested(value){return value?{[DialogViewportDataAttributes.nested]:``}:null},nestedDialogOpen(value){return value?{[DialogViewportDataAttributes.nestedDialogOpen]:``}:null}};const DialogViewport$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,children,...elementProps}=componentProps,keepMounted=useDialogPortalContext(),{store}=useDialogRootContext(),open=store.useState(`open`),nested=store.useState(`nested`),transitionStatus=store.useState(`transitionStatus`),nestedOpenDialogCount=store.useState(`nestedOpenDialogCount`),mounted=store.useState(`mounted`),nestedDialogOpen=nestedOpenDialogCount>0,state$1=import_react.useMemo(()=>({open,nested,transitionStatus,nestedDialogOpen}),[open,nested,transitionStatus,nestedDialogOpen]);return useRenderElement(`div`,componentProps,{enabled:keepMounted||mounted,state:state$1,ref:[forwardedRef,store.useStateSetter(`viewportElement`)],stateAttributesMapping:stateAttributesMapping$3,props:[{role:`presentation`,hidden:!mounted,children},elementProps]})}),DialogTitle$1=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,...elementProps}=componentProps,{store}=useDialogRootContext(),id=useBaseUiId(idProp);return store.useSyncedValueWithCleanup(`titleElementId`,id),useRenderElement(`h2`,componentProps,{ref:forwardedRef,props:[{id},elementProps]})}),DialogTrigger=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1=!1,nativeButton=!0,id:idProp,payload,handle:handle$1,...elementProps}=componentProps,dialogRootContext=useDialogRootContext(!0),store=handle$1?.store??dialogRootContext?.store;if(!store)throw Error(formatErrorMessage(79));let thisTriggerId=useBaseUiId(idProp),floatingContext=store.useState(`floatingRootContext`),isOpenedByThisTrigger=store.useState(`isOpenedByTrigger`,thisTriggerId),triggerElementRef=import_react.useRef(null),{registerTrigger,isMountedByThisTrigger}=useTriggerDataForwarding(thisTriggerId,triggerElementRef,store,{payload}),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),localInteractionProps=useInteractions([useClick(floatingContext,{enabled:floatingContext!=null})]),state$1=import_react.useMemo(()=>({disabled:disabled$1,open:isOpenedByThisTrigger}),[disabled$1,isOpenedByThisTrigger]),rootTriggerProps=store.useState(`triggerProps`,isMountedByThisTrigger);return useRenderElement(`button`,componentProps,{state:state$1,ref:[buttonRef,forwardedRef,registerTrigger,triggerElementRef],props:[localInteractionProps.getReferenceProps(),rootTriggerProps,{"data-base-ui-click-trigger":``,id:thisTriggerId},elementProps,getButtonProps],stateAttributesMapping:triggerOpenStateMapping})});var editorTheme$1=EditorView.theme({"&":{fontSize:`13px`,backgroundColor:`transparent`,height:`100%`},".cm-content":{padding:`12px`,fontFamily:`ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace`},".cm-line":{padding:`0`},".cm-gutters":{display:`none`},"&.cm-focused":{outline:`none`},".cm-scroller":{overflow:`auto`}});function JsonExpandModal({open,onClose,value,columnName,onSave}){let[copied,setCopied]=(0,import_react.useState)(!1),[hasChanges,setHasChanges]=(0,import_react.useState)(!1),viewRef=(0,import_react.useRef)(null),initialValue=(0,import_react.useMemo)(()=>{if(value==null)return``;try{let parsed=typeof value==`string`?JSON.parse(value):value;return JSON.stringify(parsed,null,2)}catch{return String(value)}},[value]),initEditor=(0,import_react.useCallback)(container=>{viewRef.current&&=(viewRef.current.destroy(),null),container&&(viewRef.current=new EditorView({state:EditorState.create({doc:initialValue,extensions:[json(),syntaxHighlighting(defaultHighlightStyle),editorTheme$1,EditorView.lineWrapping,history(),keymap.of([...defaultKeymap,...historyKeymap]),EditorView.updateListener.of(update$1=>{update$1.docChanged&&setHasChanges(update$1.state.doc.toString()!==initialValue)})]}),parent:container}),requestAnimationFrame(()=>viewRef.current?.focus()))},[initialValue]),handleCopy=(0,import_react.useCallback)(async()=>{let text$5=viewRef.current?.state.doc.toString()??initialValue;await navigator.clipboard.writeText(text$5),setCopied(!0),setTimeout(()=>setCopied(!1),1500)},[initialValue]),handleSave=(0,import_react.useCallback)(()=>{onSave&&viewRef.current&&(onSave(viewRef.current.state.doc.toString()),onClose())},[onSave,onClose]);return(0,import_jsx_runtime.jsx)(DialogRoot,{open,onOpenChange:open$1=>!open$1&&onClose(),children:(0,import_jsx_runtime.jsxs)(DialogPortal$1,{children:[(0,import_jsx_runtime.jsx)(DialogBackdrop$1,{className:`fixed inset-0 z-50 bg-black/10`}),(0,import_jsx_runtime.jsx)(DialogViewport$1,{className:`fixed inset-0 z-50 grid place-items-center p-4`,children:(0,import_jsx_runtime.jsxs)(DialogPopup$1,{className:`relative w-full max-w-2xl rounded-2xl border bg-white shadow-lg`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between p-4 pb-2`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(DialogTitle$1,{className:`text-base font-medium`,children:columnName}),(0,import_jsx_runtime.jsx)(`button`,{onClick:handleCopy,className:`p-1 rounded hover:bg-gray-100 text-gray-400 hover:text-gray-600 transition-colors`,title:`Copy to clipboard`,children:copied?(0,import_jsx_runtime.jsx)(Check,{className:`w-4 h-4 text-green-500`}):(0,import_jsx_runtime.jsx)(Copy,{className:`w-4 h-4`})})]}),(0,import_jsx_runtime.jsx)(`button`,{onClick:onClose,className:`p-1 rounded hover:bg-gray-100 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`px-4`,children:(0,import_jsx_runtime.jsx)(`div`,{ref:initEditor,className:`bg-gray-50 border border-gray-200 rounded-lg h-[60vh] overflow-auto`})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-end gap-2 p-4 pt-2`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,onClick:onClose,children:`Cancel`}),(0,import_jsx_runtime.jsx)(Button,{variant:`default`,size:`sm`,onClick:handleSave,disabled:!hasChanges,children:`Save`})]})]})})]})})}function useRowSelection({totalRows,onDelete}){let[selectedIndices,setSelectedIndices]=(0,import_react.useState)(new Set),[anchorIndex,setAnchorIndex]=(0,import_react.useState)(null);(0,import_react.useEffect)(()=>{setSelectedIndices(new Set),setAnchorIndex(null)},[totalRows]);let handleRowClick=(0,import_react.useCallback)((index$4,event)=>{let isRangeSelect=event.shiftKey,isToggleSelect=event.metaKey||event.ctrlKey;if(isRangeSelect&&anchorIndex!==null){let start=Math.min(anchorIndex,index$4),end=Math.max(anchorIndex,index$4),newSelection=new Set;for(let i$3=start;i$3<=end;i$3++)newSelection.add(i$3);setSelectedIndices(newSelection)}else isToggleSelect?(setSelectedIndices(prev=>{let newSet=new Set(prev);return newSet.has(index$4)?newSet.delete(index$4):newSet.add(index$4),newSet}),setAnchorIndex(index$4)):(setSelectedIndices(new Set([index$4])),setAnchorIndex(index$4))},[anchorIndex]),clearSelection=(0,import_react.useCallback)(()=>{setSelectedIndices(new Set),setAnchorIndex(null)},[]),handleKeyDown=(0,import_react.useCallback)(event=>{if(event.key===`Escape`){clearSelection();return}(event.key===`Delete`||event.key===`Backspace`)&&selectedIndices.size>0&&(event.preventDefault(),onDelete?.(Array.from(selectedIndices).sort((a$1,b$2)=>a$1-b$2)))},[selectedIndices,onDelete,clearSelection]);return(0,import_react.useEffect)(()=>(document.addEventListener(`keydown`,handleKeyDown),()=>document.removeEventListener(`keydown`,handleKeyDown)),[handleKeyDown]),{selectedIndices,handleRowClick,clearSelection,isSelected:index$4=>selectedIndices.has(index$4),selectionCount:selectedIndices.size}}function useConnectionPermissions(connectionId){let{data:connections}=useConnections(),permissions=connections?.find(c=>c.id===connectionId)?.permissions??[];return{hasRead:permissions.includes(`read`),hasWrite:permissions.includes(`write`),hasDdl:permissions.includes(`ddl`),hasAdmin:permissions.includes(`admin`),hasExplain:permissions.includes(`explain`),hasExecute:permissions.includes(`execute`),hasExport:permissions.includes(`export`),permissions}}var counter=0;function generateId(prefix$1){return counter+=1,`${prefix$1}-${Math.random().toString(36).slice(2,6)}-${counter}`}const ToastContext=import_react.createContext(void 0);function useToastContext(){let context=import_react.useContext(ToastContext);if(!context)throw Error(formatErrorMessage(73));return context}function resolvePromiseOptions(options$1,result){if(typeof options$1==`string`)return{description:options$1};if(typeof options$1==`function`){let resolvedOptions=options$1(result);return typeof resolvedOptions==`string`?{description:resolvedOptions}:resolvedOptions}return options$1}var import_react_dom$1=__toESM(require_react_dom());const ToastProvider$1=function(props){let{children,timeout=5e3,limit=3,toastManager:toastManager$1}=props,[toasts,setToasts]=import_react.useState([]),[hovering,setHovering]=import_react.useState(!1),[focused,setFocused]=import_react.useState(!1),[prevFocusElement,setPrevFocusElement]=import_react.useState(null);toasts.length===0&&(hovering&&setHovering(!1),focused&&setFocused(!1));let expanded=hovering||focused,timersRef=import_react.useRef(new Map),viewportRef=import_react.useRef(null),windowFocusedRef=import_react.useRef(!0),isPausedRef=import_react.useRef(!1);function handleFocusManagement(toastId){let activeEl=activeElement(ownerDocument(viewportRef.current));if(!viewportRef.current||!contains(viewportRef.current,activeEl)||!matchesFocusVisible(activeEl))return;let currentIndex=toasts.findIndex(toast=>toast.id===toastId),nextToast=null,index$4=currentIndex+1;for(;index$4<toasts.length;){if(toasts[index$4].transitionStatus!==`ending`){nextToast=toasts[index$4];break}index$4+=1}if(!nextToast)for(index$4=currentIndex-1;index$4>=0;){if(toasts[index$4].transitionStatus!==`ending`){nextToast=toasts[index$4];break}--index$4}nextToast?nextToast.ref?.current?.focus():prevFocusElement?.focus({preventScroll:!0})}let pauseTimers=useStableCallback(()=>{isPausedRef.current||(isPausedRef.current=!0,timersRef.current.forEach(timer=>{if(timer.timeout){timer.timeout.clear();let elapsed=Date.now()-timer.start,remaining=timer.delay-elapsed;timer.remaining=remaining>0?remaining:0}}))}),resumeTimers=useStableCallback(()=>{isPausedRef.current&&(isPausedRef.current=!1,timersRef.current.forEach((timer,id)=>{timer.remaining=timer.remaining>0?timer.remaining:timer.delay,timer.timeout??=Timeout.create(),timer.timeout.start(timer.remaining,()=>{timersRef.current.delete(id),timer.callback()}),timer.start=Date.now()}))}),close=useStableCallback(toastId=>{setToasts(prevToasts=>{let toastsWithEnding=prevToasts.map(toast=>toast.id===toastId?{...toast,transitionStatus:`ending`,height:0}:toast),activeToasts=toastsWithEnding.filter(t$1=>t$1.transitionStatus!==`ending`);return toastsWithEnding.map(toast=>{if(toast.transitionStatus===`ending`)return toast;let isActiveToastLimited=activeToasts.indexOf(toast)>=limit;return{...toast,limited:isActiveToastLimited}})});let timer=timersRef.current.get(toastId);timer&&timer.timeout&&(timer.timeout.clear(),timersRef.current.delete(toastId)),toasts.find(t$1=>t$1.id===toastId)?.onClose?.(),handleFocusManagement(toastId),toasts.length===1&&(setHovering(!1),setFocused(!1))}),remove$1=useStableCallback(toastId=>{setToasts(prev=>prev.filter(toast=>toast.id!==toastId)),toasts.find(t$1=>t$1.id===toastId)?.onRemove?.()}),scheduleTimer=useStableCallback((id,delay,callback)=>{let start=Date.now(),shouldStartActive=windowFocusedRef.current&&!hovering&&!focused,currentTimeout=shouldStartActive?Timeout.create():void 0;currentTimeout?.start(delay,()=>{timersRef.current.delete(id),callback()}),timersRef.current.set(id,{timeout:currentTimeout,start:shouldStartActive?start:0,delay,remaining:delay,callback})}),add$1=useStableCallback(toast=>{let id=toast.id||generateId(`toast`),toastToAdd={...toast,id,transitionStatus:`starting`};setToasts(prev=>{let updatedToasts=[toastToAdd,...prev],activeToasts=updatedToasts.filter(t$1=>t$1.transitionStatus!==`ending`);if(activeToasts.length>limit){let excessCount=activeToasts.length-limit,oldestActiveToasts=activeToasts.slice(-excessCount);return updatedToasts.map(t$1=>oldestActiveToasts.some(old=>old.id===t$1.id)?{...t$1,limited:!0}:{...t$1,limited:!1})}return updatedToasts.map(t$1=>({...t$1,limited:!1}))});let duration=toastToAdd.timeout??timeout;return toastToAdd.type!==`loading`&&duration>0&&scheduleTimer(id,duration,()=>close(id)),(hovering||focused||!windowFocusedRef.current)&&pauseTimers(),id}),update$1=useStableCallback((id,updates)=>{let prevToast=toasts.find(toast=>toast.id===id)??null,nextToast=prevToast?{...prevToast,...updates}:null;if(import_react_dom$1.flushSync(()=>{setToasts(prev=>prev.map(toast=>toast.id===id?{...toast,...updates}:toast))}),!nextToast)return;let nextTimeout=nextToast.timeout??timeout,prevTimeout=prevToast?.timeout??timeout,timeoutUpdated=Object.hasOwn(updates,`timeout`),shouldHaveTimer=nextToast.transitionStatus!==`ending`&&nextToast.type!==`loading`&&nextTimeout>0,hasTimer=timersRef.current.has(id),timeoutChanged=prevTimeout!==nextTimeout,wasLoading=prevToast?.type===`loading`;if(!shouldHaveTimer&&hasTimer){timersRef.current.get(id)?.timeout?.clear(),timersRef.current.delete(id);return}if(shouldHaveTimer&&(!hasTimer||timeoutChanged||timeoutUpdated||wasLoading)){let timer=timersRef.current.get(id);timer&&(timer.timeout?.clear(),timersRef.current.delete(id)),scheduleTimer(id,nextTimeout,()=>close(id)),(hovering||focused||!windowFocusedRef.current)&&pauseTimers()}}),promise=useStableCallback((promiseValue,options$1)=>{let id=add$1({...resolvePromiseOptions(options$1.loading),type:`loading`}),handledPromise=promiseValue.then(result=>{let successOptions=resolvePromiseOptions(options$1.success,result);return update$1(id,{...successOptions,type:`success`,timeout:successOptions.timeout}),result}).catch(error=>{let errorOptions=resolvePromiseOptions(options$1.error,error);return update$1(id,{...errorOptions,type:`error`,timeout:errorOptions.timeout}),Promise.reject(error)});return{}.hasOwnProperty.call(options$1,`setPromise`)&&options$1.setPromise(handledPromise),handledPromise});import_react.useEffect(function(){if(toastManager$1)return toastManager$1[` subscribe`](({action,options:options$1})=>{let id=options$1.id;action===`promise`&&options$1.promise?promise(options$1.promise,options$1):action===`update`&&id?update$1(id,options$1):action===`close`&&id?close(id):add$1(options$1)})},[add$1,update$1,scheduleTimer,timeout,toastManager$1,promise,close]);let contextValue=import_react.useMemo(()=>({toasts,setToasts,hovering,setHovering,focused,setFocused,expanded,add:add$1,close,remove:remove$1,update:update$1,promise,pauseTimers,resumeTimers,prevFocusElement,setPrevFocusElement,viewportRef,scheduleTimer,windowFocusedRef}),[add$1,close,focused,hovering,expanded,pauseTimers,prevFocusElement,promise,remove$1,resumeTimers,scheduleTimer,toasts,update$1]);return(0,import_jsx_runtime.jsx)(ToastContext.Provider,{value:contextValue,children})},ToastViewportContext=import_react.createContext(void 0);let ToastViewportCssVars=function(ToastViewportCssVars$1){return ToastViewportCssVars$1.frontmostHeight=`--toast-frontmost-height`,ToastViewportCssVars$1}({});const ToastViewport=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,children,...elementProps}=componentProps,{toasts,pauseTimers,resumeTimers,setHovering,setFocused,viewportRef,windowFocusedRef,prevFocusElement,setPrevFocusElement,expanded,focused}=useToastContext(),handlingFocusGuardRef=import_react.useRef(!1),markedReadyForMouseLeaveRef=import_react.useRef(!1),numToasts=toasts.length,frontmostHeight=toasts[0]?.height??0,hasTransitioningToasts=import_react.useMemo(()=>toasts.some(toast=>toast.transitionStatus===`ending`),[toasts]);import_react.useEffect(()=>{if(!viewportRef.current)return;function handleGlobalKeyDown(event){numToasts!==0&&event.key===`F6`&&event.target!==viewportRef.current&&(event.preventDefault(),setPrevFocusElement(activeElement(ownerDocument(viewportRef.current))),viewportRef.current?.focus({preventScroll:!0}),pauseTimers(),setFocused(!0))}let win=getWindow(viewportRef.current);return win.addEventListener(`keydown`,handleGlobalKeyDown),()=>{win.removeEventListener(`keydown`,handleGlobalKeyDown)}},[pauseTimers,setFocused,setPrevFocusElement,numToasts,viewportRef]),import_react.useEffect(()=>{if(!viewportRef.current||!numToasts)return;let win=getWindow(viewportRef.current);function handleWindowBlur(event){event.target===win&&(windowFocusedRef.current=!1,pauseTimers())}function handleWindowFocus(event){if(event.relatedTarget||event.target===win)return;let target=getTarget(event),activeEl=activeElement(ownerDocument(viewportRef.current));(!contains(viewportRef.current,target)||!matchesFocusVisible(activeEl))&&resumeTimers(),setTimeout(()=>{windowFocusedRef.current=!0})}return win.addEventListener(`blur`,handleWindowBlur,!0),win.addEventListener(`focus`,handleWindowFocus,!0),()=>{win.removeEventListener(`blur`,handleWindowBlur,!0),win.removeEventListener(`focus`,handleWindowFocus,!0)}},[pauseTimers,resumeTimers,viewportRef,windowFocusedRef,setFocused,numToasts]),import_react.useEffect(()=>{let viewportNode=viewportRef.current;if(!viewportNode||numToasts===0)return;let doc$1=ownerDocument(viewportNode);function handlePointerDown(event){event.pointerType===`touch`&&(contains(viewportNode,getTarget(event))||(resumeTimers(),setHovering(!1),setFocused(!1)))}return doc$1.addEventListener(`pointerdown`,handlePointerDown,!0),()=>{doc$1.removeEventListener(`pointerdown`,handlePointerDown,!0)}},[numToasts,resumeTimers,setFocused,setHovering,viewportRef]);function handleFocusGuard(event){viewportRef.current&&(handlingFocusGuardRef.current=!0,event.relatedTarget===viewportRef.current?toasts[0]?.ref?.current?.focus():prevFocusElement?.focus({preventScroll:!0}))}function handleKeyDown(event){event.key===`Tab`&&event.shiftKey&&event.target===viewportRef.current&&(event.preventDefault(),prevFocusElement?.focus({preventScroll:!0}),resumeTimers())}import_react.useEffect(()=>{!windowFocusedRef.current||hasTransitioningToasts||!markedReadyForMouseLeaveRef.current||(resumeTimers(),setHovering(!1),markedReadyForMouseLeaveRef.current=!1)},[hasTransitioningToasts,resumeTimers,setHovering,windowFocusedRef]);function handleMouseEnter(){pauseTimers(),setHovering(!0),markedReadyForMouseLeaveRef.current=!1}function handleMouseLeave(){toasts.some(toast=>toast.transitionStatus===`ending`)?markedReadyForMouseLeaveRef.current=!0:(resumeTimers(),setHovering(!1))}function handleFocus(){if(handlingFocusGuardRef.current){handlingFocusGuardRef.current=!1;return}focused||matchesFocusVisible(ownerDocument(viewportRef.current).activeElement)&&(setFocused(!0),pauseTimers())}function handleBlur(event){!focused||contains(viewportRef.current,event.relatedTarget)||(setFocused(!1),resumeTimers())}let defaultProps={tabIndex:-1,role:`region`,"aria-live":`polite`,"aria-atomic":!1,"aria-relevant":`additions text`,"aria-label":`Notifications`,onMouseEnter:handleMouseEnter,onMouseMove:handleMouseEnter,onMouseLeave:handleMouseLeave,onFocus:handleFocus,onBlur:handleBlur,onKeyDown:handleKeyDown,onClick:handleFocus},state$1=import_react.useMemo(()=>({expanded}),[expanded]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,viewportRef],state:state$1,props:[defaultProps,{style:{[ToastViewportCssVars.frontmostHeight]:frontmostHeight?`${frontmostHeight}px`:void 0}},elementProps,{children:(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard}),children,numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard})]})}]}),contextValue=import_react.useMemo(()=>({viewportRef}),[viewportRef]),highPriorityToasts=import_react.useMemo(()=>toasts.filter(toast=>toast.priority===`high`),[toasts]);return(0,import_jsx_runtime.jsxs)(ToastViewportContext.Provider,{value:contextValue,children:[numToasts>0&&prevFocusElement&&(0,import_jsx_runtime.jsx)(FocusGuard,{onFocus:handleFocusGuard}),element$3,!focused&&highPriorityToasts.length>0&&(0,import_jsx_runtime.jsx)(`div`,{style:visuallyHidden,children:highPriorityToasts.map(toast=>(0,import_jsx_runtime.jsxs)(`div`,{role:`alert`,"aria-atomic":!0,children:[(0,import_jsx_runtime.jsx)(`div`,{children:toast.title}),(0,import_jsx_runtime.jsx)(`div`,{children:toast.description})]},toast.id))})]})}),ToastRootContext=import_react.createContext(void 0);function useToastRootContext(){let context=import_react.useContext(ToastRootContext);if(!context)throw Error(formatErrorMessage(66));return context}let ToastRootCssVars=function(ToastRootCssVars$1){return ToastRootCssVars$1.index=`--toast-index`,ToastRootCssVars$1.offsetY=`--toast-offset-y`,ToastRootCssVars$1.height=`--toast-height`,ToastRootCssVars$1.swipeMovementX=`--toast-swipe-movement-x`,ToastRootCssVars$1.swipeMovementY=`--toast-swipe-movement-y`,ToastRootCssVars$1}({});var import_react_dom=__toESM(require_react_dom()),stateAttributesMapping$2={...transitionStatusMapping,swipeDirection(value){return value?{"data-swipe-direction":value}:null}},SWIPE_THRESHOLD=40,REVERSE_CANCEL_THRESHOLD=10,OPPOSITE_DIRECTION_DAMPING_FACTOR=.5,MIN_DRAG_THRESHOLD=1;function getDisplacement(direction,deltaX,deltaY){switch(direction){case`up`:return-deltaY;case`down`:return deltaY;case`left`:return-deltaX;case`right`:return deltaX;default:return 0}}function getElementTransform(element$3){let transform$1=window.getComputedStyle(element$3).transform,translateX=0,translateY=0,scale=1;if(transform$1&&transform$1!==`none`){let matrix=transform$1.match(/matrix(?:3d)?\(([^)]+)\)/);if(matrix){let values=matrix[1].split(`, `).map(parseFloat);values.length===6?(translateX=values[4],translateY=values[5],scale=Math.sqrt(values[0]*values[0]+values[1]*values[1])):values.length===16&&(translateX=values[12],translateY=values[13],scale=values[0])}}return{x:translateX,y:translateY,scale}}const ToastRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{toast,render,className,swipeDirection=[`down`,`right`],...elementProps}=componentProps,isAnchored=toast.positionerProps?.anchor!==void 0,swipeDirections=[];isAnchored||(swipeDirections=Array.isArray(swipeDirection)?swipeDirection:[swipeDirection]);let swipeEnabled=swipeDirections.length>0,{toasts,focused,close,remove:remove$1,setToasts,pauseTimers,expanded,setHovering}=useToastContext(),[currentSwipeDirection,setCurrentSwipeDirection]=import_react.useState(void 0),[isSwiping,setIsSwiping]=import_react.useState(!1),[isRealSwipe,setIsRealSwipe]=import_react.useState(!1),[dragDismissed,setDragDismissed]=import_react.useState(!1),[dragOffset,setDragOffset]=import_react.useState({x:0,y:0}),[initialTransform,setInitialTransform]=import_react.useState({x:0,y:0,scale:1}),[titleId,setTitleId]=import_react.useState(),[descriptionId,setDescriptionId]=import_react.useState(),[lockedDirection,setLockedDirection]=import_react.useState(null),rootRef=import_react.useRef(null),dragStartPosRef=import_react.useRef({x:0,y:0}),initialTransformRef=import_react.useRef({x:0,y:0,scale:1}),intendedSwipeDirectionRef=import_react.useRef(void 0),maxSwipeDisplacementRef=import_react.useRef(0),cancelledSwipeRef=import_react.useRef(!1),swipeCancelBaselineRef=import_react.useRef({x:0,y:0}),isFirstPointerMoveRef=import_react.useRef(!1),domIndex$1=import_react.useMemo(()=>toasts.indexOf(toast),[toast,toasts]),visibleIndex=import_react.useMemo(()=>toasts.filter(t$1=>t$1.transitionStatus!==`ending`).indexOf(toast),[toast,toasts]),offsetY=import_react.useMemo(()=>toasts.slice(0,toasts.indexOf(toast)).reduce((acc,t$1)=>acc+(t$1.height||0),0),[toasts,toast]);useOpenChangeComplete({open:toast.transitionStatus!==`ending`,ref:rootRef,onComplete(){toast.transitionStatus===`ending`&&remove$1(toast.id)}});let recalculateHeight=useStableCallback((flushSync$1=!1)=>{let element$4=rootRef.current;if(!element$4)return;let previousHeight=element$4.style.height;element$4.style.height=`auto`;let height=element$4.offsetHeight;element$4.style.height=previousHeight;function update$1(){setToasts(prev=>prev.map(t$1=>t$1.id===toast.id?{...t$1,ref:rootRef,height,transitionStatus:void 0}:t$1))}flushSync$1?import_react_dom.flushSync(update$1):update$1()});useIsoLayoutEffect(recalculateHeight,[recalculateHeight]);function applyDirectionalDamping(deltaX,deltaY){let newDeltaX=deltaX,newDeltaY=deltaY;return!swipeDirections.includes(`left`)&&!swipeDirections.includes(`right`)?newDeltaX=deltaX>0?deltaX**OPPOSITE_DIRECTION_DAMPING_FACTOR:-(Math.abs(deltaX)**OPPOSITE_DIRECTION_DAMPING_FACTOR):(!swipeDirections.includes(`right`)&&deltaX>0&&(newDeltaX=deltaX**OPPOSITE_DIRECTION_DAMPING_FACTOR),!swipeDirections.includes(`left`)&&deltaX<0&&(newDeltaX=-(Math.abs(deltaX)**OPPOSITE_DIRECTION_DAMPING_FACTOR))),!swipeDirections.includes(`up`)&&!swipeDirections.includes(`down`)?newDeltaY=deltaY>0?deltaY**OPPOSITE_DIRECTION_DAMPING_FACTOR:-(Math.abs(deltaY)**OPPOSITE_DIRECTION_DAMPING_FACTOR):(!swipeDirections.includes(`down`)&&deltaY>0&&(newDeltaY=deltaY**OPPOSITE_DIRECTION_DAMPING_FACTOR),!swipeDirections.includes(`up`)&&deltaY<0&&(newDeltaY=-(Math.abs(deltaY)**OPPOSITE_DIRECTION_DAMPING_FACTOR))),{x:newDeltaX,y:newDeltaY}}function handlePointerDown(event){if(event.button!==0)return;event.pointerType===`touch`&&pauseTimers();let target=getTarget(event.nativeEvent);if(!(target&&target.closest(`button,a,input,textarea,[role="button"],[data-swipe-ignore]`))){if(cancelledSwipeRef.current=!1,intendedSwipeDirectionRef.current=void 0,maxSwipeDisplacementRef.current=0,dragStartPosRef.current={x:event.clientX,y:event.clientY},swipeCancelBaselineRef.current=dragStartPosRef.current,rootRef.current){let transform$1=getElementTransform(rootRef.current);initialTransformRef.current=transform$1,setInitialTransform(transform$1),setDragOffset({x:transform$1.x,y:transform$1.y})}setHovering(!0),setIsSwiping(!0),setIsRealSwipe(!1),setLockedDirection(null),isFirstPointerMoveRef.current=!0,rootRef.current?.setPointerCapture(event.pointerId)}}function handlePointerMove(event){if(!isSwiping)return;event.preventDefault(),isFirstPointerMoveRef.current&&=(dragStartPosRef.current={x:event.clientX,y:event.clientY},!1);let{clientY,clientX,movementX,movementY}=event;(movementY<0&&clientY>swipeCancelBaselineRef.current.y||movementY>0&&clientY<swipeCancelBaselineRef.current.y)&&(swipeCancelBaselineRef.current={x:swipeCancelBaselineRef.current.x,y:clientY}),(movementX<0&&clientX>swipeCancelBaselineRef.current.x||movementX>0&&clientX<swipeCancelBaselineRef.current.x)&&(swipeCancelBaselineRef.current={x:clientX,y:swipeCancelBaselineRef.current.y});let deltaX=clientX-dragStartPosRef.current.x,deltaY=clientY-dragStartPosRef.current.y,cancelDeltaY=clientY-swipeCancelBaselineRef.current.y,cancelDeltaX=clientX-swipeCancelBaselineRef.current.x;if(!isRealSwipe&&Math.sqrt(deltaX*deltaX+deltaY*deltaY)>=MIN_DRAG_THRESHOLD&&(setIsRealSwipe(!0),lockedDirection===null)){let hasHorizontal=swipeDirections.includes(`left`)||swipeDirections.includes(`right`),hasVertical=swipeDirections.includes(`up`)||swipeDirections.includes(`down`);hasHorizontal&&hasVertical&&setLockedDirection(Math.abs(deltaX)>Math.abs(deltaY)?`horizontal`:`vertical`)}let candidate;if(!intendedSwipeDirectionRef.current)lockedDirection===`vertical`?deltaY>0?candidate=`down`:deltaY<0&&(candidate=`up`):lockedDirection===`horizontal`?deltaX>0?candidate=`right`:deltaX<0&&(candidate=`left`):candidate=Math.abs(deltaX)>=Math.abs(deltaY)?deltaX>0?`right`:`left`:deltaY>0?`down`:`up`,candidate&&swipeDirections.includes(candidate)&&(intendedSwipeDirectionRef.current=candidate,maxSwipeDisplacementRef.current=getDisplacement(candidate,deltaX,deltaY),setCurrentSwipeDirection(candidate));else{let direction=intendedSwipeDirectionRef.current,currentDisplacement=getDisplacement(direction,cancelDeltaX,cancelDeltaY);currentDisplacement>SWIPE_THRESHOLD?(cancelledSwipeRef.current=!1,setCurrentSwipeDirection(direction)):!(swipeDirections.includes(`left`)&&swipeDirections.includes(`right`))&&!(swipeDirections.includes(`up`)&&swipeDirections.includes(`down`))&&maxSwipeDisplacementRef.current-currentDisplacement>=REVERSE_CANCEL_THRESHOLD&&(cancelledSwipeRef.current=!0)}let dampedDelta=applyDirectionalDamping(deltaX,deltaY),newOffsetX=initialTransformRef.current.x,newOffsetY=initialTransformRef.current.y;lockedDirection===`horizontal`?(swipeDirections.includes(`left`)||swipeDirections.includes(`right`))&&(newOffsetX+=dampedDelta.x):(lockedDirection===`vertical`||(swipeDirections.includes(`left`)||swipeDirections.includes(`right`))&&(newOffsetX+=dampedDelta.x),(swipeDirections.includes(`up`)||swipeDirections.includes(`down`))&&(newOffsetY+=dampedDelta.y)),setDragOffset({x:newOffsetX,y:newOffsetY})}function handlePointerUp(event){if(!isSwiping)return;if(setIsSwiping(!1),setIsRealSwipe(!1),setLockedDirection(null),rootRef.current?.releasePointerCapture(event.pointerId),cancelledSwipeRef.current){setDragOffset({x:initialTransform.x,y:initialTransform.y}),setCurrentSwipeDirection(void 0);return}let shouldClose=!1,deltaX=dragOffset.x-initialTransform.x,deltaY=dragOffset.y-initialTransform.y,dismissDirection;for(let direction of swipeDirections){switch(direction){case`right`:deltaX>SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`right`);break;case`left`:deltaX<-SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`left`);break;case`down`:deltaY>SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`down`);break;case`up`:deltaY<-SWIPE_THRESHOLD&&(shouldClose=!0,dismissDirection=`up`);break;default:break}if(shouldClose)break}shouldClose?(setCurrentSwipeDirection(dismissDirection),setDragDismissed(!0),close(toast.id)):(setDragOffset({x:initialTransform.x,y:initialTransform.y}),setCurrentSwipeDirection(void 0))}function handleKeyDown(event){if(event.key===`Escape`){if(!rootRef.current||!contains(rootRef.current,activeElement(ownerDocument(rootRef.current))))return;close(toast.id)}}import_react.useEffect(()=>{if(!swipeEnabled)return;let element$4=rootRef.current;if(!element$4)return;function preventDefaultTouchStart(event){contains(element$4,event.target)&&event.preventDefault()}return element$4.addEventListener(`touchmove`,preventDefaultTouchStart,{passive:!1}),()=>{element$4.removeEventListener(`touchmove`,preventDefaultTouchStart)}},[swipeEnabled]);function getDragStyles(){if(!isSwiping&&dragOffset.x===initialTransform.x&&dragOffset.y===initialTransform.y&&!dragDismissed)return{[ToastRootCssVars.swipeMovementX]:`0px`,[ToastRootCssVars.swipeMovementY]:`0px`};let deltaX=dragOffset.x-initialTransform.x,deltaY=dragOffset.y-initialTransform.y;return{transition:isSwiping?`none`:void 0,transform:isSwiping?`translateX(${dragOffset.x}px) translateY(${dragOffset.y}px) scale(${initialTransform.scale})`:void 0,[ToastRootCssVars.swipeMovementX]:`${deltaX}px`,[ToastRootCssVars.swipeMovementY]:`${deltaY}px`}}let isHighPriority=toast.priority===`high`,defaultProps={role:isHighPriority?`alertdialog`:`dialog`,tabIndex:0,"aria-modal":!1,"aria-labelledby":titleId,"aria-describedby":descriptionId,"aria-hidden":isHighPriority&&!focused?!0:void 0,onPointerDown:swipeEnabled?handlePointerDown:void 0,onPointerMove:swipeEnabled?handlePointerMove:void 0,onPointerUp:swipeEnabled?handlePointerUp:void 0,onKeyDown:handleKeyDown,inert:inertValue(toast.limited),style:{...getDragStyles(),[ToastRootCssVars.index]:toast.transitionStatus===`ending`?domIndex$1:visibleIndex,[ToastRootCssVars.offsetY]:`${offsetY}px`,[ToastRootCssVars.height]:toast.height?`${toast.height}px`:void 0}},toastRoot=import_react.useMemo(()=>({rootRef,toast,titleId,setTitleId,descriptionId,setDescriptionId,swiping:isSwiping,swipeDirection:currentSwipeDirection,recalculateHeight,index:domIndex$1,visibleIndex,expanded}),[toast,titleId,descriptionId,isSwiping,currentSwipeDirection,recalculateHeight,domIndex$1,visibleIndex,expanded]),state$1=import_react.useMemo(()=>({transitionStatus:toast.transitionStatus,expanded,limited:toast.limited||!1,type:toast.type,swiping:toastRoot.swiping,swipeDirection:toastRoot.swipeDirection}),[expanded,toast.transitionStatus,toast.limited,toast.type,toastRoot.swiping,toastRoot.swipeDirection]),element$3=useRenderElement(`div`,componentProps,{ref:[forwardedRef,toastRoot.rootRef],state:state$1,stateAttributesMapping:stateAttributesMapping$2,props:[defaultProps,elementProps]});return(0,import_jsx_runtime.jsx)(ToastRootContext.Provider,{value:toastRoot,children:element$3})}),ToastContent=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,...elementProps}=componentProps,{visibleIndex,expanded,recalculateHeight}=useToastRootContext(),contentRef=import_react.useRef(null);useIsoLayoutEffect(()=>{let node$1=contentRef.current;if(!node$1||(recalculateHeight(),typeof ResizeObserver!=`function`||typeof MutationObserver!=`function`))return;let resizeObserver=new ResizeObserver(()=>recalculateHeight(!0)),mutationObserver=new MutationObserver(()=>recalculateHeight(!0));return resizeObserver.observe(node$1),mutationObserver.observe(node$1,{childList:!0,subtree:!0,characterData:!0}),()=>{resizeObserver.disconnect(),mutationObserver.disconnect()}},[recalculateHeight]);let behind=visibleIndex>0,state$1=import_react.useMemo(()=>({expanded,behind}),[expanded,behind]);return useRenderElement(`div`,componentProps,{ref:[forwardedRef,contentRef],state:state$1,props:elementProps})}),ToastDescription=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,children:childrenProp,...elementProps}=componentProps,{toast}=useToastRootContext(),children=childrenProp??toast.description,shouldRender=!!children,id=useId(idProp),{setDescriptionId}=useToastRootContext();useIsoLayoutEffect(()=>{if(shouldRender)return setDescriptionId(id),()=>{setDescriptionId(void 0)}},[shouldRender,id,setDescriptionId]);let element$3=useRenderElement(`p`,componentProps,{ref:forwardedRef,state:import_react.useMemo(()=>({type:toast.type}),[toast.type]),props:{...elementProps,id,children}});return shouldRender?element$3:null}),ToastTitle=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,id:idProp,children:childrenProp,...elementProps}=componentProps,{toast}=useToastRootContext(),children=childrenProp??toast.title,shouldRender=!!children,id=useId(idProp),{setTitleId}=useToastRootContext();useIsoLayoutEffect(()=>{if(shouldRender)return setTitleId(id),()=>{setTitleId(void 0)}},[shouldRender,id,setTitleId]);let element$3=useRenderElement(`h2`,componentProps,{ref:forwardedRef,state:import_react.useMemo(()=>({type:toast.type}),[toast.type]),props:{...elementProps,id,children}});return shouldRender?element$3:null}),ToastClose=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1,nativeButton=!0,...elementProps}=componentProps,{close,expanded}=useToastContext(),{toast}=useToastRootContext(),[hasFocus,setHasFocus]=import_react.useState(!1),{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),state$1=import_react.useMemo(()=>({type:toast.type}),[toast.type]);return useRenderElement(`button`,componentProps,{ref:[forwardedRef,buttonRef],state:state$1,props:[{"aria-hidden":!expanded&&!hasFocus,onClick(){close(toast.id)},onFocus(){setHasFocus(!0)},onBlur(){setHasFocus(!1)}},elementProps,getButtonProps]})}),ToastAction=import_react.forwardRef(function(componentProps,forwardedRef){let{render,className,disabled:disabled$1,nativeButton=!0,...elementProps}=componentProps,{toast}=useToastRootContext(),computedChildren=toast.actionProps?.children??elementProps.children,shouldRender=!!computedChildren,{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton}),state$1=import_react.useMemo(()=>({type:toast.type}),[toast.type]),element$3=useRenderElement(`button`,componentProps,{ref:[forwardedRef,buttonRef],state:state$1,props:[elementProps,toast.actionProps,getButtonProps,{children:computedChildren}]});return shouldRender?element$3:null}),ToastPortal=FloatingPortalLite;function useToastManager(){let context=import_react.useContext(ToastContext);if(!context)throw Error(formatErrorMessage(73));let{toasts,add:add$1,close,update:update$1,promise}=context;return import_react.useMemo(()=>({toasts,add:add$1,close,update:update$1,promise}),[toasts,add$1,close,update$1,promise])}function createToastManager(){let listeners=[];function emit(data){listeners.forEach(listener=>listener(data))}return{" subscribe":function(listener){return listeners.push(listener),()=>{let index$4=listeners.indexOf(listener);index$4!==-1&&listeners.splice(index$4,1)}},add(options$1){let id=options$1.id||generateId(`toast`);return emit({action:`add`,options:{...options$1,id,transitionStatus:`starting`}}),id},close(id){emit({action:`close`,options:{id}})},update(id,updates){emit({action:`update`,options:{...updates,id}})},promise(promiseValue,options$1){let handledPromise=promiseValue;return emit({action:`promise`,options:{...options$1,promise:promiseValue,setPromise(promise){handledPromise=promise}}}),handledPromise}}}var toastManager=createToastManager(),anchoredToastManager=createToastManager(),TOAST_ICONS={error:CircleAlert,info:Info$1,loading:LoaderCircle,success:CircleCheck,warning:TriangleAlert};function ToastProvider({children,position:position$2=`bottom-right`,...props}){return(0,import_jsx_runtime.jsxs)(ToastProvider$1,{toastManager,...props,children:[children,(0,import_jsx_runtime.jsx)(Toasts,{position:position$2})]})}function Toasts({position:position$2=`bottom-right`}){let{toasts}=useToastManager(),isTop=position$2.startsWith(`top`);return(0,import_jsx_runtime.jsx)(ToastPortal,{"data-slot":`toast-portal`,children:(0,import_jsx_runtime.jsx)(ToastViewport,{className:cn(`fixed z-[100] mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]`,`data-[position*=top]:top-(--toast-inset)`,`data-[position*=bottom]:bottom-(--toast-inset)`,`data-[position*=left]:left-(--toast-inset)`,`data-[position*=right]:right-(--toast-inset)`,`data-[position*=center]:-translate-x-1/2 data-[position*=center]:left-1/2`),"data-position":position$2,"data-slot":`toast-viewport`,children:toasts.map(toast=>{let Icon$1=toast.type?TOAST_ICONS[toast.type]:null;return(0,import_jsx_runtime.jsxs)(ToastRoot,{className:cn(`absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover bg-clip-padding text-popover-foreground shadow-lg [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]`,`data-[position*=right]:right-0 data-[position*=right]:left-auto`,`data-[position*=left]:right-auto data-[position*=left]:left-0`,`data-[position*=center]:right-0 data-[position*=center]:left-0`,`data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-top`,`data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-bottom`,`after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full`,`data-[position*=top]:after:top-full`,`data-[position*=bottom]:after:bottom-full`,`[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]`,`data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]`,`data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]`,`data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]`,`data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]`,`data-limited:opacity-0`,`data-expanded:h-(--toast-height)`,`data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]`,`data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]`,`data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]`,`data-ending-style:opacity-0`,`data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]`,`data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]`,`data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]`,`data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]`,`data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]`),"data-position":position$2,swipeDirection:position$2.includes(`center`)?[isTop?`up`:`down`]:position$2.includes(`left`)?[`left`,isTop?`up`:`down`]:[`right`,isTop?`up`:`down`],toast,children:[(0,import_jsx_runtime.jsx)(ToastClose,{className:`absolute top-2 right-2 rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,"data-slot":`toast-close`,children:(0,import_jsx_runtime.jsx)(X,{className:`h-3.5 w-3.5`})}),(0,import_jsx_runtime.jsxs)(ToastContent,{className:`pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden pl-3.5 pr-8 py-3 text-sm transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex gap-2`,children:[Icon$1&&(0,import_jsx_runtime.jsx)(`div`,{className:`[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,"data-slot":`toast-icon`,children:(0,import_jsx_runtime.jsx)(Icon$1,{className:`in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80`})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,import_jsx_runtime.jsx)(ToastTitle,{className:`font-medium`,"data-slot":`toast-title`}),(0,import_jsx_runtime.jsx)(ToastDescription,{className:`text-muted-foreground`,"data-slot":`toast-description`})]})]}),toast.actionProps&&(0,import_jsx_runtime.jsx)(ToastAction,{className:buttonVariants({size:`xs`}),"data-slot":`toast-action`,children:toast.actionProps.children})]})]},toast.id)})})})}function Table({className,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:`relative w-full overflow-x-auto`,"data-slot":`table-container`,children:(0,import_jsx_runtime.jsx)(`table`,{className:cn(`w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm`,className),"data-slot":`table`,...props})})}function TableHeader({className,...props}){return(0,import_jsx_runtime.jsx)(`thead`,{className:cn(`[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent`,className),"data-slot":`table-header`,...props})}function TableBody({className,...props}){return(0,import_jsx_runtime.jsx)(`tbody`,{className:cn(`relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-background in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-transparent in-data-[slot=frame]:*:[tr]:data-[state=selected]:*:[td]:bg-muted/50`,className),"data-slot":`table-body`,...props})}function TableRow({className,...props}){return(0,import_jsx_runtime.jsx)(`tr`,{className:cn(`border-b transition-colors hover:bg-muted/50 in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted/50 in-data-[slot=frame]:data-[state=selected]:bg-transparent`,className),"data-slot":`table-row`,...props})}function TableHead({className,...props}){return(0,import_jsx_runtime.jsx)(`th`,{className:cn(`h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-muted-foreground has-[[role=checkbox]]:w-px has-[[role=checkbox]]:pe-0 *:[[role=checkbox]]:translate-y-0.5`,className),"data-slot":`table-head`,...props})}function TableCell({className,...props}){return(0,import_jsx_runtime.jsx)(`td`,{className:cn(`whitespace-nowrap p-2 align-middle has-[[role=checkbox]]:pe-0 *:[[role=checkbox]]:translate-y-0.5`,className),"data-slot":`table-cell`,...props})}function InfoItem({label,value}){return(0,import_jsx_runtime.jsxs)(`div`,{children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:label}),(0,import_jsx_runtime.jsx)(`div`,{children:value||`-`})]})}function formatBytes(bytes){let n=Number(bytes);if(n===0)return`0 B`;let i$3=Math.floor(Math.log(n)/Math.log(1024));return(n/1024**i$3).toFixed(1)+` `+[`B`,`KB`,`MB`,`GB`,`TB`][i$3]}function formatRowCount(count){let n=Number(count);return n<1e3?n.toString():n<1e6?(n/1e3).toFixed(1)+`K`:n<1e9?(n/1e6).toFixed(1)+`M`:(n/1e9).toFixed(1)+`B`}function getKindLabel(kind){switch(kind){case`table`:return`Table`;case`partitioned_table`:return`Partitioned Table`;case`view`:return`View`;case`materialized_view`:return`Materialized View`;case`function`:return`Function`;case`procedure`:return`Procedure`;default:return`Object`}}function ColumnsTable({columns,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!columns||columns.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No columns`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Nullable`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:columns.map(col=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:col.name}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:col.type}),(0,import_jsx_runtime.jsx)(TableCell,{children:col.nullable?`Yes`:`No`})]},col.name))})]})}function IndexesTable({indexes,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!indexes||indexes.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No indexes`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Columns`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Method`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:indexes.map(idx=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:idx.name}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:idx.columns.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{children:idx.isPrimary?`Primary`:idx.isUnique?`Unique`:`-`}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:idx.method})]},idx.name))})]})}function ConstraintsTable({constraints,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!constraints||constraints.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No constraints`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Columns`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`References`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:constraints.map(con=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:con.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:con.type}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:con.type===`CHECK`?con.definition:con.columns.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:con.refTable?`${con.refTable} (${con.refColumns.join(`, `)})`:`-`})]},con.name))})]})}function TriggersTable({triggers,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!triggers||triggers.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No triggers`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Timing`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Event`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Level`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Function`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:triggers.map(trg=>(0,import_jsx_runtime.jsxs)(TableRow,{className:trg.enabled?``:`opacity-50`,children:[(0,import_jsx_runtime.jsx)(TableCell,{children:trg.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.timing}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.event}),(0,import_jsx_runtime.jsx)(TableCell,{children:trg.level}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:trg.function})]},trg.name))})]})}function PoliciesTable({policies,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!policies||policies.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No policies`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Name`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Command`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Type`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Roles`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Expression`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:policies.map(pol=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:pol.name}),(0,import_jsx_runtime.jsx)(TableCell,{children:pol.command}),(0,import_jsx_runtime.jsx)(TableCell,{children:pol.permissive}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:pol.roles.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600 font-mono text-xs max-w-xs truncate`,title:pol.usingExpr||pol.checkExpr,children:pol.usingExpr||pol.checkExpr||`-`})]},pol.name))})]})}function GrantsTable({grants,isLoading}){return isLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):!grants||grants.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`No grants`}):(0,import_jsx_runtime.jsxs)(Table,{children:[(0,import_jsx_runtime.jsx)(TableHeader,{children:(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableHead,{children:`Grantee`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Privileges`}),(0,import_jsx_runtime.jsx)(TableHead,{children:`Grantor`})]})}),(0,import_jsx_runtime.jsx)(TableBody,{children:grants.map(grant=>(0,import_jsx_runtime.jsxs)(TableRow,{children:[(0,import_jsx_runtime.jsx)(TableCell,{children:grant.grantee}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:grant.privileges.join(`, `)}),(0,import_jsx_runtime.jsx)(TableCell,{className:`text-gray-600`,children:grant.grantor})]},`${grant.grantee}-${grant.grantor}`))})]})}const editorTheme=(isEditing=!1)=>EditorView.theme({"&":{fontSize:`13px`},".cm-content":{padding:`8px 12px`,fontFamily:`ui-monospace, monospace`},".cm-line":{padding:`0`},".cm-scroller":{overflow:`auto`},".cm-gutters":{backgroundColor:isEditing?`#fff`:`#f9fafb`,borderRight:`1px solid #e5e7eb`},".cm-lineNumbers .cm-gutterElement":{padding:`0 8px`,color:`#9ca3af`}});function useSqlModuleReady(){let[moduleReady,setModuleReady]=(0,import_react.useState)(!1);return(0,import_react.useEffect)(()=>{__vitePreload(async()=>{let{ensureModuleLoaded:ensureModuleLoaded$1}=await import(`./sql-xgZhELo6.js`);return{ensureModuleLoaded:ensureModuleLoaded$1}},[]).then(({ensureModuleLoaded:ensureModuleLoaded$1})=>{ensureModuleLoaded$1().then(()=>setModuleReady(!0))})},[]),moduleReady}function SQLDefinition({sql}){let containerRef=(0,import_react.useRef)(null),viewRef=(0,import_react.useRef)(null),moduleReady=useSqlModuleReady();return(0,import_react.useEffect)(()=>{if(!(!containerRef.current||!moduleReady))return viewRef.current&&=(viewRef.current.destroy(),null),viewRef.current=new EditorView({state:EditorState.create({doc:sql,extensions:[EditorView.editable.of(!1),EditorState.readOnly.of(!0),lineNumbers(),pgHighlight(),editorTheme()]}),parent:containerRef.current}),()=>{viewRef.current?.destroy(),viewRef.current=null}},[sql,moduleReady]),(0,import_jsx_runtime.jsx)(`div`,{ref:containerRef,className:`bg-gray-50 rounded-md overflow-hidden border border-gray-200`})}function escapeIdentifier(name$2){return`"${name$2.replace(/"/g,`""`)}"`}function escapeValue(value){return value==null?`NULL`:typeof value==`number`?String(value):typeof value==`boolean`?value?`TRUE`:`FALSE`:typeof value==`object`?`'${JSON.stringify(value).replace(/'/g,`''`)}'`:`'${String(value).replace(/'/g,`''`)}'`}function generateDeleteSQL(change){let statements=[];for(let table$1 of change.tables){let qualifiedTable=table$1.schemaName?`${escapeIdentifier(table$1.schemaName)}.${escapeIdentifier(table$1.tableName)}`:escapeIdentifier(table$1.tableName),whereColumns=table$1.primaryKeyColumns.length>0?table$1.primaryKeyColumns:Object.keys(table$1.rows[0]||{});for(let row of table$1.rows){let conditions=whereColumns.map(col=>{let value=row[col];return value==null?`${escapeIdentifier(col)} IS NULL`:`${escapeIdentifier(col)} = ${escapeValue(value)}`}).join(` AND `);statements.push(`DELETE FROM ${qualifiedTable} WHERE ${conditions};`)}}return statements.join(`
87
87
  `)}function generateUpdateSQL(change){if(change.type!==`update`||!change.originalRows)return``;let statements=[];for(let table$1 of change.tables){let qualifiedTable=table$1.schemaName?`${escapeIdentifier(table$1.schemaName)}.${escapeIdentifier(table$1.tableName)}`:escapeIdentifier(table$1.tableName),whereColumns=table$1.primaryKeyColumns.length>0?table$1.primaryKeyColumns:Object.keys(table$1.rows[0]||{});for(let i$3=0;i$3<table$1.rows.length;i$3++){let updatedRow=table$1.rows[i$3],originalRow=change.originalRows[i$3],changedColumns=Object.keys(updatedRow).filter(col=>updatedRow[col]!==originalRow[col]);if(changedColumns.length===0)continue;let setClause=changedColumns.map(col=>`${escapeIdentifier(col)} = ${escapeValue(updatedRow[col])}`).join(`, `),conditions=whereColumns.map(col=>{let value=originalRow[col];return value==null?`${escapeIdentifier(col)} IS NULL`:`${escapeIdentifier(col)} = ${escapeValue(value)}`}).join(` AND `);statements.push(`UPDATE ${qualifiedTable} SET ${setClause} WHERE ${conditions};`)}}return statements.join(`
88
88
  `)}function generateInsertSQL(change){if(change.type!==`insert`)return``;let statements=[];for(let table$1 of change.tables){let qualifiedTable=table$1.schemaName?`${escapeIdentifier(table$1.schemaName)}.${escapeIdentifier(table$1.tableName)}`:escapeIdentifier(table$1.tableName);for(let row of table$1.rows){let columnNames=Object.keys(row).filter(col=>row[col]!==void 0),columns=columnNames.map(col=>escapeIdentifier(col)).join(`, `),values=columnNames.map(col=>escapeValue(row[col])).join(`, `);statements.push(`INSERT INTO ${qualifiedTable} (${columns}) VALUES (${values});`)}}return statements.join(`
89
89
  `)}function Spinner({className,...props}){return(0,import_jsx_runtime.jsx)(LoaderCircle,{"aria-label":`Loading`,className:cn(`animate-spin`,className),role:`status`,...props})}var alertVariants=cva(`relative grid w-full items-start gap-x-2 gap-y-0.5 rounded-xl border px-3.5 py-3 text-card-foreground text-sm has-[>svg]:has-data-[slot=alert-action]:grid-cols-[calc(var(--spacing)*4)_1fr_auto] has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-[>svg]:gap-x-2 [&>svg]:h-lh [&>svg]:w-4`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-transparent dark:bg-input/32 [&>svg]:text-muted-foreground`,error:`border-destructive/32 bg-destructive/4 [&>svg]:text-destructive`,info:`border-info/32 bg-info/4 [&>svg]:text-info`,success:`border-success/32 bg-success/4 [&>svg]:text-success`,warning:`border-warning/32 bg-warning/4 [&>svg]:text-warning`}}});function Alert({className,variant,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:cn(alertVariants({variant}),className),"data-slot":`alert`,role:`alert`,...props})}function ok(){}function unreachable(){}function stringify$1(values,options$1){let settings=options$1||{};return(values[values.length-1]===``?[...values,``]:values).join((settings.padRight?` `:``)+`,`+(settings.padLeft===!1?``:` `)).trim()}var nameRe=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,nameReJsx=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,emptyOptions$3={};function name(name$2,options$1){return((options$1||emptyOptions$3).jsx?nameReJsx:nameRe).test(name$2)}var re$1=/[ \t\n\f\r]/g;function whitespace(thing){return typeof thing==`object`?thing.type===`text`?empty$1(thing.value):!1:empty$1(thing)}function empty$1(value){return value.replace(re$1,``)===``}var Schema=class{constructor(property,normal,space$1){this.normal=normal,this.property=property,space$1&&(this.space=space$1)}};Schema.prototype.normal={},Schema.prototype.property={},Schema.prototype.space=void 0;function merge(definitions,space$1){let property={},normal={};for(let definition$1 of definitions)Object.assign(property,definition$1.property),Object.assign(normal,definition$1.normal);return new Schema(property,normal,space$1)}function normalize$1(value){return value.toLowerCase()}var Info=class{constructor(property,attribute){this.attribute=attribute,this.property=property}};Info.prototype.attribute=``,Info.prototype.booleanish=!1,Info.prototype.boolean=!1,Info.prototype.commaOrSpaceSeparated=!1,Info.prototype.commaSeparated=!1,Info.prototype.defined=!1,Info.prototype.mustUseProperty=!1,Info.prototype.number=!1,Info.prototype.overloadedBoolean=!1,Info.prototype.property=``,Info.prototype.spaceSeparated=!1,Info.prototype.space=void 0;var types_exports=__export({boolean:()=>boolean,booleanish:()=>booleanish,commaOrSpaceSeparated:()=>commaOrSpaceSeparated,commaSeparated:()=>commaSeparated,number:()=>number,overloadedBoolean:()=>overloadedBoolean,spaceSeparated:()=>spaceSeparated}),powers=0;const boolean=increment(),booleanish=increment(),overloadedBoolean=increment(),number=increment(),spaceSeparated=increment(),commaSeparated=increment(),commaOrSpaceSeparated=increment();function increment(){return 2**++powers}var checks=Object.keys(types_exports),DefinedInfo=class extends Info{constructor(property,attribute,mask,space$1){let index$4=-1;if(super(property,attribute),mark(this,`space`,space$1),typeof mask==`number`)for(;++index$4<checks.length;){let check=checks[index$4];mark(this,checks[index$4],(mask&types_exports[check])===types_exports[check])}}};DefinedInfo.prototype.defined=!0;function mark(values,key$1,value){value&&(values[key$1]=value)}function create(definition$1){let properties={},normals={};for(let[property,value]of Object.entries(definition$1.properties)){let info=new DefinedInfo(property,definition$1.transform(definition$1.attributes||{},property),value,definition$1.space);definition$1.mustUseProperty&&definition$1.mustUseProperty.includes(property)&&(info.mustUseProperty=!0),properties[property]=info,normals[normalize$1(property)]=property,normals[normalize$1(info.attribute)]=property}return new Schema(properties,normals,definition$1.space)}const aria=create({properties:{ariaActiveDescendant:null,ariaAtomic:booleanish,ariaAutoComplete:null,ariaBusy:booleanish,ariaChecked:booleanish,ariaColCount:number,ariaColIndex:number,ariaColSpan:number,ariaControls:spaceSeparated,ariaCurrent:null,ariaDescribedBy:spaceSeparated,ariaDetails:null,ariaDisabled:booleanish,ariaDropEffect:spaceSeparated,ariaErrorMessage:null,ariaExpanded:booleanish,ariaFlowTo:spaceSeparated,ariaGrabbed:booleanish,ariaHasPopup:null,ariaHidden:booleanish,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:spaceSeparated,ariaLevel:number,ariaLive:null,ariaModal:booleanish,ariaMultiLine:booleanish,ariaMultiSelectable:booleanish,ariaOrientation:null,ariaOwns:spaceSeparated,ariaPlaceholder:null,ariaPosInSet:number,ariaPressed:booleanish,ariaReadOnly:booleanish,ariaRelevant:null,ariaRequired:booleanish,ariaRoleDescription:spaceSeparated,ariaRowCount:number,ariaRowIndex:number,ariaRowSpan:number,ariaSelected:booleanish,ariaSetSize:number,ariaSort:null,ariaValueMax:number,ariaValueMin:number,ariaValueNow:number,ariaValueText:null,role:null},transform(_$2,property){return property===`role`?property:`aria-`+property.slice(4).toLowerCase()}});function caseSensitiveTransform(attributes,attribute){return attribute in attributes?attributes[attribute]:attribute}function caseInsensitiveTransform(attributes,property){return caseSensitiveTransform(attributes,property.toLowerCase())}const html$4=create({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:commaSeparated,acceptCharset:spaceSeparated,accessKey:spaceSeparated,action:null,allow:null,allowFullScreen:boolean,allowPaymentRequest:boolean,allowUserMedia:boolean,alt:null,as:null,async:boolean,autoCapitalize:null,autoComplete:spaceSeparated,autoFocus:boolean,autoPlay:boolean,blocking:spaceSeparated,capture:null,charSet:null,checked:boolean,cite:null,className:spaceSeparated,cols:number,colSpan:null,content:null,contentEditable:booleanish,controls:boolean,controlsList:spaceSeparated,coords:number|commaSeparated,crossOrigin:null,data:null,dateTime:null,decoding:null,default:boolean,defer:boolean,dir:null,dirName:null,disabled:boolean,download:overloadedBoolean,draggable:booleanish,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:boolean,formTarget:null,headers:spaceSeparated,height:number,hidden:overloadedBoolean,high:number,href:null,hrefLang:null,htmlFor:spaceSeparated,httpEquiv:spaceSeparated,id:null,imageSizes:null,imageSrcSet:null,inert:boolean,inputMode:null,integrity:null,is:null,isMap:boolean,itemId:null,itemProp:spaceSeparated,itemRef:spaceSeparated,itemScope:boolean,itemType:spaceSeparated,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:boolean,low:number,manifest:null,max:null,maxLength:number,media:null,method:null,min:null,minLength:number,multiple:boolean,muted:boolean,name:null,nonce:null,noModule:boolean,noValidate:boolean,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:boolean,optimum:number,pattern:null,ping:spaceSeparated,placeholder:null,playsInline:boolean,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:boolean,referrerPolicy:null,rel:spaceSeparated,required:boolean,reversed:boolean,rows:number,rowSpan:number,sandbox:spaceSeparated,scope:null,scoped:boolean,seamless:boolean,selected:boolean,shadowRootClonable:boolean,shadowRootDelegatesFocus:boolean,shadowRootMode:null,shape:null,size:number,sizes:null,slot:null,span:number,spellCheck:booleanish,src:null,srcDoc:null,srcLang:null,srcSet:null,start:number,step:null,style:null,tabIndex:number,target:null,title:null,translate:null,type:null,typeMustMatch:boolean,useMap:null,value:booleanish,width:number,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:spaceSeparated,axis:null,background:null,bgColor:null,border:number,borderColor:null,bottomMargin:number,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:boolean,declare:boolean,event:null,face:null,frame:null,frameBorder:null,hSpace:number,leftMargin:number,link:null,longDesc:null,lowSrc:null,marginHeight:number,marginWidth:number,noResize:boolean,noHref:boolean,noShade:boolean,noWrap:boolean,object:null,profile:null,prompt:null,rev:null,rightMargin:number,rules:null,scheme:null,scrolling:booleanish,standby:null,summary:null,text:null,topMargin:number,valueType:null,version:null,vAlign:null,vLink:null,vSpace:number,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:boolean,disableRemotePlayback:boolean,prefix:null,property:null,results:number,security:null,unselectable:null},space:`html`,transform:caseInsensitiveTransform}),svg$1=create({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:commaOrSpaceSeparated,accentHeight:number,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:number,amplitude:number,arabicForm:null,ascent:number,attributeName:null,attributeType:null,azimuth:number,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:number,by:null,calcMode:null,capHeight:number,className:spaceSeparated,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:number,diffuseConstant:number,direction:null,display:null,dur:null,divisor:number,dominantBaseline:null,download:boolean,dx:null,dy:null,edgeMode:null,editable:null,elevation:number,enableBackground:null,end:null,event:null,exponent:number,externalResourcesRequired:null,fill:null,fillOpacity:number,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:commaSeparated,g2:commaSeparated,glyphName:commaSeparated,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:number,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:number,horizOriginX:number,horizOriginY:number,id:null,ideographic:number,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:number,k:number,k1:number,k2:number,k3:number,k4:number,kernelMatrix:commaOrSpaceSeparated,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:number,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:number,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:number,overlineThickness:number,paintOrder:null,panose1:null,path:null,pathLength:number,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:spaceSeparated,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:number,pointsAtY:number,pointsAtZ:number,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:commaOrSpaceSeparated,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:commaOrSpaceSeparated,rev:commaOrSpaceSeparated,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:commaOrSpaceSeparated,requiredFeatures:commaOrSpaceSeparated,requiredFonts:commaOrSpaceSeparated,requiredFormats:commaOrSpaceSeparated,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:number,specularExponent:number,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:number,strikethroughThickness:number,string:null,stroke:null,strokeDashArray:commaOrSpaceSeparated,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:number,strokeOpacity:number,strokeWidth:null,style:null,surfaceScale:number,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:commaOrSpaceSeparated,tabIndex:number,tableValues:null,target:null,targetX:number,targetY:number,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:commaOrSpaceSeparated,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:number,underlineThickness:number,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:number,values:null,vAlphabetic:number,vMathematical:number,vectorEffect:null,vHanging:number,vIdeographic:number,version:null,vertAdvY:number,vertOriginX:number,vertOriginY:number,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:number,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:caseSensitiveTransform}),xlink=create({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(_$2,property){return`xlink:`+property.slice(5).toLowerCase()}}),xmlns=create({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:caseInsensitiveTransform}),xml=create({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(_$2,property){return`xml:`+property.slice(3).toLowerCase()}}),hastToReact={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`};var cap$1=/[A-Z]/g,dash=/-[a-z]/g,valid=/^data[-\w.:]+$/i;function find(schema,value){let normal=normalize$1(value),property=value,Type=Info;if(normal in schema.normal)return schema.property[schema.normal[normal]];if(normal.length>4&&normal.slice(0,4)===`data`&&valid.test(value)){if(value.charAt(4)===`-`){let rest=value.slice(5).replace(dash,camelcase);property=`data`+rest.charAt(0).toUpperCase()+rest.slice(1)}else{let rest=value.slice(4);if(!dash.test(rest)){let dashes=rest.replace(cap$1,kebab);dashes.charAt(0)!==`-`&&(dashes=`-`+dashes),value=`data`+dashes}}Type=DefinedInfo}return new Type(property,value)}function kebab($0){return`-`+$0.toLowerCase()}function camelcase($0){return $0.charAt(1).toUpperCase()}const html=merge([aria,html$4,xlink,xmlns,xml],`html`),svg=merge([aria,svg$1,xlink,xmlns,xml],`svg`);function stringify$2(values){return values.join(` `).trim()}var require_cjs$2=__commonJSMin(((exports,module)=>{var COMMENT_REGEX=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,NEWLINE_REGEX=/\n/g,WHITESPACE_REGEX=/^\s*/,PROPERTY_REGEX=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,COLON_REGEX=/^:\s*/,VALUE_REGEX=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,SEMICOLON_REGEX=/^[;\s]*/,TRIM_REGEX=/^\s+|\s+$/g,NEWLINE=`